Update: 2026-05-08 02:25:00
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import '../../../core/network/dio_client.dart';
|
||||
import '../../../core/utils/logger.dart';
|
||||
|
||||
class ReferralController extends GetxController {
|
||||
var isLoading = true.obs;
|
||||
var hasError = false.obs;
|
||||
var errorMessage = ''.obs;
|
||||
var referralData = Rxn<Map<String, dynamic>>();
|
||||
|
||||
@override
|
||||
@@ -21,11 +24,18 @@ class ReferralController extends GetxController {
|
||||
Future<void> fetchReferralCode() async {
|
||||
try {
|
||||
isLoading.value = true;
|
||||
hasError.value = false;
|
||||
final res = await DioClient().client.get('referral/my-code');
|
||||
if (res.data['success'] == true) {
|
||||
referralData.value = Map<String, dynamic>.from(res.data['data']);
|
||||
} else {
|
||||
hasError.value = true;
|
||||
errorMessage.value = res.data['message'] ?? 'خطأ غير معروف';
|
||||
debugPrint('Referral API error: ${res.data}');
|
||||
}
|
||||
} catch (e) {
|
||||
hasError.value = true;
|
||||
errorMessage.value = 'تعذّر الاتصال بالخادم';
|
||||
AppLogger.error('Failed to fetch referral code', e);
|
||||
} finally {
|
||||
isLoading.value = false;
|
||||
|
||||
@@ -160,7 +160,7 @@ class ReferralView extends StatelessWidget {
|
||||
}
|
||||
|
||||
void _shareViaWhatsApp(String code, String link) async {
|
||||
final message = Uri.encodeComponent(
|
||||
final rawMessage =
|
||||
'مرحباً 👋\n\n'
|
||||
'أدعوك لتجربة تطبيق *مُصادَق* — أذكى نظام فوترة إلكتروني في الأردن 🇯🇴\n\n'
|
||||
'✅ استخراج الفواتير بالذكاء الاصطناعي\n'
|
||||
@@ -168,23 +168,28 @@ class ReferralView extends StatelessWidget {
|
||||
'✅ تقارير ضريبية جاهزة\n\n'
|
||||
'🎁 استخدم رمز الدعوة: *$code*\n'
|
||||
'واحصل على شهر مجاني!\n\n'
|
||||
'🔗 $link'
|
||||
);
|
||||
'🔗 $link';
|
||||
|
||||
final whatsappUrl = Uri.parse('https://wa.me/?text=$message');
|
||||
final encodedMessage = Uri.encodeComponent(rawMessage);
|
||||
|
||||
try {
|
||||
if (await canLaunchUrl(whatsappUrl)) {
|
||||
await launchUrl(whatsappUrl, mode: LaunchMode.externalApplication);
|
||||
} else {
|
||||
// Fallback — copy to clipboard
|
||||
Clipboard.setData(ClipboardData(text: Uri.decodeComponent(message)));
|
||||
AppSnackbar.showInfo('واتساب غير متوفر', 'تم نسخ الرسالة — ألصقها يدوياً');
|
||||
// Try multiple approaches for WhatsApp
|
||||
final urls = [
|
||||
Uri.parse('whatsapp://send?text=$encodedMessage'),
|
||||
Uri.parse('https://wa.me/?text=$encodedMessage'),
|
||||
];
|
||||
|
||||
for (final url in urls) {
|
||||
try {
|
||||
final launched = await launchUrl(url, mode: LaunchMode.externalApplication);
|
||||
if (launched) return; // Success!
|
||||
} catch (_) {
|
||||
continue; // Try next URL
|
||||
}
|
||||
} catch (e) {
|
||||
Clipboard.setData(ClipboardData(text: Uri.decodeComponent(message)));
|
||||
AppSnackbar.showInfo('واتساب غير متوفر', 'تم نسخ الرسالة — ألصقها يدوياً');
|
||||
}
|
||||
|
||||
// All failed — copy to clipboard
|
||||
Clipboard.setData(ClipboardData(text: rawMessage));
|
||||
AppSnackbar.showSuccess('تم نسخ الرسالة', 'ألصقها في واتساب أو أي تطبيق مراسلة');
|
||||
}
|
||||
|
||||
Widget _buildStatsRow(Map<String, dynamic> stats, bool isDark) {
|
||||
|
||||
Reference in New Issue
Block a user