Update: 2026-05-08 02:25:00

This commit is contained in:
Hamza-Ayed
2026-05-08 02:25:00 +03:00
parent 189382e065
commit 4721ca83da
6 changed files with 89 additions and 64 deletions

View File

@@ -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;

View File

@@ -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) {