fix(mobile-app): update share link domain to rwaapi.szaiai.com

Changed invite share URLs from rwa-durian.app to rwaapi.szaiai.com

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-06 21:15:55 -08:00
parent 2e815cec6e
commit 39804aa981
18 changed files with 480 additions and 361 deletions

View File

@ -20,7 +20,9 @@
"Bash(git commit -m \"$(cat <<''EOF''\nrefactor(infra): 统一微服务基础设施为共享模式\n\n- 将 presence-service 添加到主 docker-compose.yml端口 3011Redis DB 10\n- 更新 init-databases.sh 添加 rwa_admin 和 rwa_presence 数据库\n- 重构 admin-service/deploy.sh 使用共享基础设施\n- 重构 presence-service/deploy.sh 使用共享基础设施\n- 添加 authorization-service 开发指南文档\n\n解决多个微服务独立启动重复基础设施PostgreSQL/Redis/Kafka的问题\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")", "Bash(git commit -m \"$(cat <<''EOF''\nrefactor(infra): 统一微服务基础设施为共享模式\n\n- 将 presence-service 添加到主 docker-compose.yml端口 3011Redis DB 10\n- 更新 init-databases.sh 添加 rwa_admin 和 rwa_presence 数据库\n- 重构 admin-service/deploy.sh 使用共享基础设施\n- 重构 presence-service/deploy.sh 使用共享基础设施\n- 添加 authorization-service 开发指南文档\n\n解决多个微服务独立启动重复基础设施PostgreSQL/Redis/Kafka的问题\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git push)", "Bash(git push)",
"Bash(git commit -m \"$(cat <<''EOF''\nfeat(admin-service): 增强移动端版本上传功能\n\n- 添加 APK/IPA 文件解析器自动提取版本信息\n- 支持从安装包自动读取 versionName 和 versionCode\n- 添加 adbkit-apkreader 依赖解析 APK 文件\n- 添加 plist 依赖解析 IPA 文件\n- 优化上传接口支持自动填充版本信息\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")", "Bash(git commit -m \"$(cat <<''EOF''\nfeat(admin-service): 增强移动端版本上传功能\n\n- 添加 APK/IPA 文件解析器自动提取版本信息\n- 支持从安装包自动读取 versionName 和 versionCode\n- 添加 adbkit-apkreader 依赖解析 APK 文件\n- 添加 plist 依赖解析 IPA 文件\n- 优化上传接口支持自动填充版本信息\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git commit:*)" "Bash(git commit:*)",
"Bash(grep:*)",
"Bash(ls:*)"
], ],
"deny": [], "deny": [],
"ask": [] "ask": []

View File

@ -4,7 +4,23 @@
"Bash(cat:*)", "Bash(cat:*)",
"Bash(git add:*)", "Bash(git add:*)",
"Bash(git commit:*)", "Bash(git commit:*)",
"Bash(git push:*)" "Bash(git push:*)",
"Bash(git pull:*)",
"Bash(services/identity-service/src/infrastructure/external/mpc/mpc-client.service.ts )",
"Bash(services/identity-service/src/infrastructure/external/mpc/mpc.module.ts )",
"Bash(services/identity-service/src/infrastructure/kafka/index.ts )",
"Bash(services/identity-service/src/infrastructure/kafka/kafka.module.ts )",
"Bash(services/identity-service/src/infrastructure/kafka/mpc-event-consumer.service.ts )",
"Bash(services/mpc-service/src/application/application.module.ts )",
"Bash(services/mpc-service/src/application/services/index.ts )",
"Bash(services/mpc-service/src/application/services/event-consumer-starter.service.ts )",
"Bash(services/mpc-service/src/application/event-handlers/ )",
"Bash(services/mpc-service/src/infrastructure/infrastructure.module.ts )",
"Bash(services/mpc-service/src/infrastructure/messaging/kafka/index.ts )",
"Bash(services/mpc-service/src/infrastructure/messaging/kafka/event-consumer.service.ts)",
"Bash(npm run build:*)",
"Bash(npx nest build)",
"Bash(npm install)"
], ],
"deny": [], "deny": [],
"ask": [] "ask": []

View File

@ -11,7 +11,9 @@
"Bash(docker compose:*)", "Bash(docker compose:*)",
"Bash(powershell:*)", "Bash(powershell:*)",
"Bash(npm run lint)", "Bash(npm run lint)",
"Bash(git add:*)" "Bash(git add:*)",
"Bash(git commit -m \"$(cat <<''EOF''\nfeat(blockchain-service): implement complete blockchain service with DDD + Hexagonal architecture\n\n- Domain layer: ChainType, EvmAddress, TxHash, TokenAmount, BlockNumber value objects\n- Domain events: DepositDetected, DepositConfirmed, WalletAddressCreated, TransactionBroadcasted\n- Aggregates: DepositTransaction, MonitoredAddress, TransactionRequest\n- Infrastructure: Prisma ORM, Redis cache, Kafka messaging, EVM blockchain adapters\n- Application services: AddressDerivation, DepositDetection, BalanceQuery\n- API: Health, Balance, Internal controllers with Swagger documentation\n- Deployment: Docker, docker-compose, deploy.sh, health-check scripts\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>\nEOF\n)\")",
"Bash(git push)"
], ],
"deny": [], "deny": [],
"ask": [] "ask": []

View File

@ -1,4 +1,12 @@
# Database # =============================================================================
# Identity Service - Environment Variables
# =============================================================================
# Application
APP_PORT=3000
APP_ENV="development"
# Database (PostgreSQL)
DATABASE_URL="postgresql://postgres:password@localhost:5432/rwa_identity?schema=public" DATABASE_URL="postgresql://postgres:password@localhost:5432/rwa_identity?schema=public"
# JWT # JWT
@ -21,20 +29,34 @@ KAFKA_GROUP_ID="identity-service-group"
SMS_API_URL="https://sms-api.example.com" SMS_API_URL="https://sms-api.example.com"
SMS_API_KEY="your-sms-api-key" SMS_API_KEY="your-sms-api-key"
# App # Wallet Encryption
APP_PORT=3000
APP_ENV="development"
# Blockchain Encryption
WALLET_ENCRYPTION_SALT="rwa-wallet-salt-change-in-production" WALLET_ENCRYPTION_SALT="rwa-wallet-salt-change-in-production"
# MPC Service (NestJS 中间层) # =============================================================================
# 调用路径: identity-service → mpc-service (NestJS) → mpc-system (Go) # MPC Service Configuration
MPC_SERVICE_URL="http://localhost:3001" # =============================================================================
MPC_MODE="local" # local 使用本地模拟remote 调用 mpc-service # 调用路径: identity-service -> mpc-service (NestJS) -> mpc-system (Go)
# Backup Service (MPC 备份分片存储) # MPC Service URL (NestJS gateway)
MPC_SERVICE_URL="http://localhost:3001"
# MPC Mode: local (模拟) / remote (调用 mpc-service)
MPC_MODE="local"
# Use event-driven communication for MPC operations
MPC_USE_EVENT_DRIVEN="true"
# =============================================================================
# Backup Service Configuration
# =============================================================================
# 安全要求: 必须部署在与 identity-service 不同的物理服务器上! # 安全要求: 必须部署在与 identity-service 不同的物理服务器上!
BACKUP_SERVICE_URL="http://backup-server:3002" BACKUP_SERVICE_URL="http://backup-server:3002"
BACKUP_SERVICE_ENABLED="true" BACKUP_SERVICE_ENABLED="false"
SERVICE_JWT_SECRET="your-service-jwt-secret-change-in-production" SERVICE_JWT_SECRET="your-service-jwt-secret-change-in-production"
# =============================================================================
# Blockchain RPC URLs (for address verification)
# =============================================================================
KAVA_RPC_URL="https://evm.kava.io"
BSC_RPC_URL="https://bsc-dataseed.binance.org"

View File

@ -4,6 +4,9 @@ services:
ports: ports:
- "3000:3000" - "3000:3000"
environment: environment:
# Application
- APP_PORT=3000
- APP_ENV=production
# Database # Database
- DATABASE_URL=postgresql://postgres:password@postgres:5432/rwa_identity?schema=public - DATABASE_URL=postgresql://postgres:password@postgres:5432/rwa_identity?schema=public
# JWT # JWT
@ -19,18 +22,19 @@ services:
- KAFKA_BROKERS=kafka:29092 - KAFKA_BROKERS=kafka:29092
- KAFKA_CLIENT_ID=identity-service - KAFKA_CLIENT_ID=identity-service
- KAFKA_GROUP_ID=identity-service-group - KAFKA_GROUP_ID=identity-service-group
# App # Wallet Encryption
- APP_PORT=3000
- APP_ENV=production
# Blockchain
- WALLET_ENCRYPTION_SALT=rwa-wallet-salt-change-in-production - WALLET_ENCRYPTION_SALT=rwa-wallet-salt-change-in-production
# MPC Service # MPC Service
- MPC_SERVICE_URL=http://mpc-service:3001 - MPC_SERVICE_URL=http://mpc-service:3001
- MPC_MODE=local - MPC_MODE=remote
- MPC_USE_EVENT_DRIVEN=true
# Backup Service # Backup Service
- BACKUP_SERVICE_URL=http://backup-service:3002 - BACKUP_SERVICE_URL=http://backup-service:3002
- BACKUP_SERVICE_ENABLED=false - BACKUP_SERVICE_ENABLED=false
- SERVICE_JWT_SECRET=your-service-jwt-secret-change-in-production - SERVICE_JWT_SECRET=your-service-jwt-secret-change-in-production
# Blockchain RPC
- KAVA_RPC_URL=https://evm.kava.io
- BSC_RPC_URL=https://bsc-dataseed.binance.org
depends_on: depends_on:
postgres: postgres:
condition: service_healthy condition: service_healthy

View File

@ -0,0 +1,12 @@
-- AlterTable: Add hardware info fields to user_devices
ALTER TABLE "user_devices" ADD COLUMN "platform" VARCHAR(20);
ALTER TABLE "user_devices" ADD COLUMN "device_model" VARCHAR(100);
ALTER TABLE "user_devices" ADD COLUMN "os_version" VARCHAR(50);
ALTER TABLE "user_devices" ADD COLUMN "app_version" VARCHAR(20);
ALTER TABLE "user_devices" ADD COLUMN "screen_width" INTEGER;
ALTER TABLE "user_devices" ADD COLUMN "screen_height" INTEGER;
ALTER TABLE "user_devices" ADD COLUMN "locale" VARCHAR(10);
ALTER TABLE "user_devices" ADD COLUMN "timezone" VARCHAR(50);
-- CreateIndex
CREATE INDEX "idx_platform" ON "user_devices"("platform");

View File

@ -54,6 +54,16 @@ model UserDevice {
deviceId String @map("device_id") @db.VarChar(100) deviceId String @map("device_id") @db.VarChar(100)
deviceName String? @map("device_name") @db.VarChar(100) deviceName String? @map("device_name") @db.VarChar(100)
// Hardware Info - 设备硬件信息
platform String? @db.VarChar(20) // ios, android, web
deviceModel String? @map("device_model") @db.VarChar(100) // iPhone 15 Pro, Pixel 8
osVersion String? @map("os_version") @db.VarChar(50) // iOS 17.2, Android 14
appVersion String? @map("app_version") @db.VarChar(20) // 1.0.0
screenWidth Int? @map("screen_width")
screenHeight Int? @map("screen_height")
locale String? @db.VarChar(10) // zh-CN, en-US
timezone String? @db.VarChar(50) // Asia/Shanghai
addedAt DateTime @default(now()) @map("added_at") addedAt DateTime @default(now()) @map("added_at")
lastActiveAt DateTime @default(now()) @map("last_active_at") lastActiveAt DateTime @default(now()) @map("last_active_at")
@ -63,6 +73,7 @@ model UserDevice {
@@index([deviceId], name: "idx_device") @@index([deviceId], name: "idx_device")
@@index([userId], name: "idx_user") @@index([userId], name: "idx_user")
@@index([lastActiveAt], name: "idx_last_active") @@index([lastActiveAt], name: "idx_last_active")
@@index([platform], name: "idx_platform")
@@map("user_devices") @@map("user_devices")
} }

View File

@ -1,49 +1,73 @@
# ============================================================================= # =============================================================================
# MPC Party Service - Environment Variables # MPC Service - Environment Variables
# =============================================================================
#
# mpc-service 作为 MPC 服务网关:
# 1. 缓存 username + publicKey 的映射关系
# 2. 存储 delegate share
# 3. 转发请求到 mpc-system (Go/TSS实现)
#
# ============================================================================= # =============================================================================
# Application # Application
NODE_ENV=development NODE_ENV="development"
APP_PORT=3006 APP_PORT=3001
API_PREFIX=api/v1 API_PREFIX="api/v1"
# Database (Prisma) # Database (PostgreSQL)
DATABASE_URL="mysql://mpc_user:password@localhost:3306/rwa_mpc_party_db" DATABASE_URL="postgresql://postgres:password@localhost:5432/rwa_mpc?schema=public"
# Redis # Redis
REDIS_HOST=localhost REDIS_HOST="localhost"
REDIS_PORT=6379 REDIS_PORT=6379
REDIS_PASSWORD= REDIS_PASSWORD=""
REDIS_DB=5 REDIS_DB=5
# JWT # JWT
JWT_SECRET=your-jwt-secret-change-in-production JWT_SECRET="your-jwt-secret-change-in-production"
JWT_ACCESS_EXPIRES_IN=2h JWT_ACCESS_EXPIRES_IN="2h"
JWT_REFRESH_EXPIRES_IN=30d JWT_REFRESH_EXPIRES_IN="30d"
# Kafka # Kafka
KAFKA_BROKERS=localhost:9092 KAFKA_BROKERS="localhost:9092"
KAFKA_CLIENT_ID=mpc-party-service KAFKA_CLIENT_ID="mpc-service"
KAFKA_GROUP_ID=mpc-party-group KAFKA_GROUP_ID="mpc-service-group"
# MPC System (deployed on 192.168.1.111) # =============================================================================
# account-service: Creates keygen/signing sessions # MPC System Configuration (Go/TSS Backend)
MPC_ACCOUNT_SERVICE_URL=http://192.168.1.111:4000 # =============================================================================
# session-coordinator: Coordinates TSS sessions (used by MPCCoordinatorClient)
MPC_COORDINATOR_URL=http://192.168.1.111:8081
MPC_SESSION_COORDINATOR_URL=http://192.168.1.111:8081
# message-router: WebSocket for TSS message routing
MPC_MESSAGE_ROUTER_WS_URL=ws://192.168.1.111:8082
# server-party-api: Generates user shares (synchronous)
MPC_SERVER_PARTY_API_URL=http://192.168.1.111:8083
# API key for authenticating with MPC system
MPC_API_KEY=your-mpc-api-key-change-in-production
# MPC System Account Service URL (creates keygen/signing sessions)
MPC_SYSTEM_URL="http://192.168.1.111:4000"
# API Key for authenticating with MPC system
MPC_API_KEY="your-mpc-api-key-change-in-production"
# Session Coordinator URL (coordinates TSS sessions)
MPC_COORDINATOR_URL="http://192.168.1.111:8081"
# Message Router WebSocket URL (TSS message routing)
MPC_MESSAGE_ROUTER_WS_URL="ws://192.168.1.111:8082"
# Coordinator timeout in milliseconds
MPC_COORDINATOR_TIMEOUT=30000
# =============================================================================
# Share Encryption # Share Encryption
# =============================================================================
# IMPORTANT: Generate a secure 32-byte hex key for production # IMPORTANT: Generate a secure 32-byte hex key for production
SHARE_MASTER_KEY=0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef # Example: openssl rand -hex 32
SHARE_MASTER_KEY="0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
# =============================================================================
# MPC Protocol Timeouts (in milliseconds) # MPC Protocol Timeouts (in milliseconds)
MPC_KEYGEN_TIMEOUT=600000 # =============================================================================
MPC_SIGNING_TIMEOUT=300000 MPC_KEYGEN_TIMEOUT=300000
MPC_REFRESH_TIMEOUT=600000 MPC_SIGNING_TIMEOUT=180000
MPC_REFRESH_TIMEOUT=300000
# =============================================================================
# TSS Library (optional, for direct TSS operations)
# =============================================================================
TSS_LIB_PATH="/opt/tss-lib/tss"
TSS_TEMP_DIR="/tmp/tss"

View File

@ -1,64 +1,85 @@
# ============================================================================= # =============================================================================
# MPC Party Service - Docker Compose # MPC Service - Docker Compose
# ============================================================================= # =============================================================================
version: '3.8'
services: services:
# MPC Party Service mpc-service:
mpc-party-service:
build: build:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: rwa-mpc-party container_name: rwa-mpc-service
ports: ports:
- "3006:3006" - "3001:3001"
environment: environment:
NODE_ENV: development # Application
APP_PORT: 3006 NODE_ENV: production
DATABASE_URL: mysql://mpc_user:password@mysql:3306/rwa_mpc_party_db APP_PORT: 3001
API_PREFIX: api/v1
# Database (PostgreSQL)
DATABASE_URL: postgresql://postgres:password@postgres:5432/rwa_mpc?schema=public
# Redis
REDIS_HOST: redis REDIS_HOST: redis
REDIS_PORT: 6379 REDIS_PORT: 6379
REDIS_PASSWORD: ""
REDIS_DB: 5 REDIS_DB: 5
KAFKA_BROKERS: kafka:9092 # JWT
MPC_COORDINATOR_URL: http://mpc-session-coordinator:50051 JWT_SECRET: ${JWT_SECRET:-your-jwt-secret-change-in-production}
MPC_MESSAGE_ROUTER_WS_URL: ws://mpc-message-router:50052 JWT_ACCESS_EXPIRES_IN: 2h
JWT_REFRESH_EXPIRES_IN: 30d
# Kafka
KAFKA_BROKERS: kafka:29092
KAFKA_CLIENT_ID: mpc-service
KAFKA_GROUP_ID: mpc-service-group
# MPC System (Go/TSS Backend)
MPC_SYSTEM_URL: ${MPC_SYSTEM_URL:-http://mpc-system:4000}
MPC_API_KEY: ${MPC_API_KEY:-your-mpc-api-key}
MPC_COORDINATOR_URL: ${MPC_COORDINATOR_URL:-http://mpc-system:8081}
MPC_MESSAGE_ROUTER_WS_URL: ${MPC_MESSAGE_ROUTER_WS_URL:-ws://mpc-system:8082}
MPC_COORDINATOR_TIMEOUT: 30000
# Share Encryption
SHARE_MASTER_KEY: ${SHARE_MASTER_KEY:-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef} SHARE_MASTER_KEY: ${SHARE_MASTER_KEY:-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef}
JWT_SECRET: ${JWT_SECRET:-your-jwt-secret-here} # Timeouts
MPC_KEYGEN_TIMEOUT: 300000
MPC_SIGNING_TIMEOUT: 180000
MPC_REFRESH_TIMEOUT: 300000
depends_on: depends_on:
mysql: postgres:
condition: service_healthy condition: service_healthy
redis: redis:
condition: service_started condition: service_started
kafka:
condition: service_started
networks: networks:
- mpc-network - mpc-network
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- ./logs:/app/logs - ./logs:/app/logs
# MySQL Database
mysql:
image: mysql:8.0
container_name: rwa-mpc-mysql
ports:
- "3307:3306"
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: rwa_mpc_party_db
MYSQL_USER: mpc_user
MYSQL_PASSWORD: password
volumes:
- mysql_data:/var/lib/mysql
- ./database/migrations:/docker-entrypoint-initdb.d
healthcheck: healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] test: ["CMD", "wget", "-q", "--spider", "http://localhost:3001/health"]
interval: 10s interval: 30s
timeout: 10s
retries: 3
start_period: 40s
postgres:
image: postgres:16-alpine
container_name: rwa-mpc-postgres
ports:
- "5433:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: rwa_mpc
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s timeout: 5s
retries: 5 retries: 10
networks: networks:
- mpc-network - mpc-network
# Redis
redis: redis:
image: redis:7-alpine image: redis:7-alpine
container_name: rwa-mpc-redis container_name: rwa-mpc-redis
@ -69,7 +90,6 @@ services:
networks: networks:
- mpc-network - mpc-network
# Kafka (for event publishing)
zookeeper: zookeeper:
image: confluentinc/cp-zookeeper:7.5.0 image: confluentinc/cp-zookeeper:7.5.0
container_name: rwa-mpc-zookeeper container_name: rwa-mpc-zookeeper
@ -87,8 +107,12 @@ services:
environment: environment:
KAFKA_BROKER_ID: 1 KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9093,PLAINTEXT_INTERNAL://kafka:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092,PLAINTEXT_INTERNAL://0.0.0.0:29092
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT_INTERNAL
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true"
depends_on: depends_on:
- zookeeper - zookeeper
networks: networks:
@ -99,5 +123,5 @@ networks:
driver: bridge driver: bridge
volumes: volumes:
mysql_data: postgres_data:
redis_data: redis_data:

View File

@ -59,7 +59,9 @@
"Bash(docker-compose:*)", "Bash(docker-compose:*)",
"Bash(c:/Android/platform-tools/adb.exe shell ping:*)", "Bash(c:/Android/platform-tools/adb.exe shell ping:*)",
"Bash(curl:*)", "Bash(curl:*)",
"Bash(DATABASE_URL=\"postgresql://postgres:password@localhost:5432/rwa_identity?schema=public\" npx prisma migrate:*)" "Bash(DATABASE_URL=\"postgresql://postgres:password@localhost:5432/rwa_identity?schema=public\" npx prisma migrate:*)",
"Bash(del \"c:\\Users\\dong\\Desktop\\rwadurian\\frontend\\mobile-app\\lib\\core\\services\\mpc_share_service.dart\")",
"Bash(dart compile exe:*)"
], ],
"deny": [], "deny": [],
"ask": [] "ask": []

View File

@ -49,8 +49,8 @@ class WalletCreatedPage extends ConsumerWidget {
void _shareToFriends(BuildContext context) { void _shareToFriends(BuildContext context) {
// () // ()
final shareLink = referralCode != null final shareLink = referralCode != null
? 'https://rwa-durian.app/invite?code=$referralCode' ? 'https://rwaapi.szaiai.com/invite?code=$referralCode'
: 'https://rwa-durian.app/invite?seq=$userSerialNum'; : 'https://rwaapi.szaiai.com/invite?seq=$userSerialNum';
context.push( context.push(
RoutePaths.share, RoutePaths.share,