Update: 2026-06-10 02:44:54
This commit is contained in:
@@ -2,6 +2,8 @@ import 'package:siro_rider/print.dart';
|
||||
import 'dart:async';
|
||||
import 'package:app_links/app_links.dart';
|
||||
import 'package:get/get.dart';
|
||||
import '../../main.dart';
|
||||
import 'profile/invites_rewards_controller.dart';
|
||||
|
||||
class DeepLinkController extends GetxController {
|
||||
final _appLinks = AppLinks();
|
||||
@@ -21,6 +23,7 @@ class DeepLinkController extends GetxController {
|
||||
_linkSubscription = _appLinks.uriLinkStream.listen((uri) {
|
||||
Log.print('🔗 Received deep link (Stream): $uri');
|
||||
rawDeepLink.value = uri.toString();
|
||||
_processInviteCode(uri);
|
||||
});
|
||||
|
||||
// الاستماع للروابط إذا كان التطبيق مغلقاً تماماً (Cold Start)
|
||||
@@ -29,15 +32,37 @@ class DeepLinkController extends GetxController {
|
||||
if (initialUri != null) {
|
||||
Log.print('🔗 Received initial deep link (Cold Start): $initialUri');
|
||||
rawDeepLink.value = initialUri.toString();
|
||||
_processInviteCode(initialUri);
|
||||
}
|
||||
} catch (e) {
|
||||
Log.print('Error getting initial link: $e');
|
||||
}
|
||||
}
|
||||
|
||||
void _processInviteCode(Uri uri) {
|
||||
if (uri.queryParameters.containsKey('inviteCode')) {
|
||||
String? inviteCode = uri.queryParameters['inviteCode'];
|
||||
if (inviteCode != null && inviteCode.isNotEmpty) {
|
||||
// دائماً نخزن الكود حتى لو لم يكن مسجلاً، ليتم استخدامه بعد التسجيل
|
||||
box.write('inviteCode', inviteCode);
|
||||
|
||||
// إذا كان المستخدم مسجل دخول (يمتلك JWT)، نربط الدعوة فوراً
|
||||
if (box.read('jwt') != null) {
|
||||
try {
|
||||
var rewardsController = Get.find<InvitesRewardsController>();
|
||||
rewardsController.linkInviteCode(inviteCode);
|
||||
} catch (e) {
|
||||
var rewardsController = Get.put(InvitesRewardsController());
|
||||
rewardsController.linkInviteCode(inviteCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
_linkSubscription?.cancel();
|
||||
super.onClose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user