feat(mobile-app): change share QR code to APK download link with referral code

QR code now contains: https://s3.szaiai.com/rwadurian/app-release.apk?ref={referralCode}
- User scans QR to download APK directly
- Guide page 5 already supports parsing ref parameter from URL

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-08 23:38:32 -08:00
parent 5a5e360e73
commit cb9e520fb4
1 changed files with 15 additions and 9 deletions

View File

@ -38,7 +38,10 @@ class _SharePageState extends ConsumerState<SharePage> {
_loadShareLink(); _loadShareLink();
} }
/// ( API ) /// APK
static const String _apkDownloadUrl = 'https://s3.szaiai.com/rwadurian/app-release.apk';
/// (使 APK + )
Future<void> _loadShareLink() async { Future<void> _loadShareLink() async {
try { try {
setState(() { setState(() {
@ -48,15 +51,14 @@ class _SharePageState extends ConsumerState<SharePage> {
final referralService = ref.read(referralServiceProvider); final referralService = ref.read(referralServiceProvider);
// API // API
final linkResponse = await referralService.generateReferralLink(); final linkResponse = await referralService.generateReferralLink();
if (mounted) { if (mounted) {
setState(() { setState(() {
// 使使 // 使 APK +
_displayLink = linkResponse.shortUrl.isNotEmpty final referralCode = linkResponse.referralCode;
? linkResponse.shortUrl _displayLink = '$_apkDownloadUrl?ref=$referralCode';
: linkResponse.fullUrl;
_isLoading = false; _isLoading = false;
}); });
} }
@ -65,9 +67,13 @@ class _SharePageState extends ConsumerState<SharePage> {
if (mounted) { if (mounted) {
setState(() { setState(() {
_isLoading = false; _isLoading = false;
// 使 // 使
_displayLink = widget.shareLink; if (widget.referralCode != null && widget.referralCode!.isNotEmpty) {
_errorMessage = '加载短链失败,使用默认链接'; _displayLink = '$_apkDownloadUrl?ref=${widget.referralCode}';
} else {
_displayLink = _apkDownloadUrl;
}
_errorMessage = '加载失败,使用默认链接';
}); });
} }
} }