From cfc330e291a5e249cd6ee42c9d92cbbbef7ec81a Mon Sep 17 00:00:00 2001 From: Hamza-Ayed Date: Fri, 8 May 2026 13:52:23 +0300 Subject: [PATCH] Update: 2026-05-08 13:52:23 --- .../features/invoices/controllers/invoices_controller.dart | 7 ++++++- musadaq-app/lib/features/settings/views/settings_view.dart | 5 ++++- .../users/controllers/users_management_controller.dart | 7 ++++++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/musadaq-app/lib/features/invoices/controllers/invoices_controller.dart b/musadaq-app/lib/features/invoices/controllers/invoices_controller.dart index a14526c..dc328f6 100644 --- a/musadaq-app/lib/features/invoices/controllers/invoices_controller.dart +++ b/musadaq-app/lib/features/invoices/controllers/invoices_controller.dart @@ -106,7 +106,12 @@ class InvoicesController extends GetxController { isLoading.value = true; final res = await DioClient().client.get('invoices'); if (res.data['success'] == true && res.data['data'] != null) { - invoices.value = List>.from(res.data['data']); + final rawData = res.data['data']; + if (rawData is Map && rawData.containsKey('items')) { + invoices.value = List>.from(rawData['items']); + } else if (rawData is List) { + invoices.value = List>.from(rawData); + } } } catch (e) { AppLogger.error('Failed to load invoices', e); diff --git a/musadaq-app/lib/features/settings/views/settings_view.dart b/musadaq-app/lib/features/settings/views/settings_view.dart index 9b855ae..5805bf5 100644 --- a/musadaq-app/lib/features/settings/views/settings_view.dart +++ b/musadaq-app/lib/features/settings/views/settings_view.dart @@ -5,6 +5,7 @@ import '../../../app/routes/app_pages.dart'; import '../../../core/utils/app_snackbar.dart'; import '../../../core/services/shorebird_update_service.dart'; import '../../../core/services/device_security_service.dart'; +import 'package:url_launcher/url_launcher.dart'; class SettingsView extends GetView { const SettingsView({super.key}); @@ -175,6 +176,7 @@ class SettingsView extends GetView { title: 'الدعم الفني', trailing: 'support@musadaq.jo', isDark: isDark, + onTap: () => launchUrl(Uri.parse('mailto:support@musadaq.jo')), ), const Divider(height: 1), _buildInfoTile( @@ -182,7 +184,7 @@ class SettingsView extends GetView { title: 'سياسة الخصوصية', trailing: '→', isDark: isDark, - onTap: () {}, + onTap: () => launchUrl(Uri.parse('https://musadaq.intaleqapp.com/privacy.php')), ), const Divider(height: 1), _buildInfoTile( @@ -191,6 +193,7 @@ class SettingsView extends GetView { trailing: 'فحص →', isDark: isDark, onTap: () { + AppSnackbar.showInfo('جاري الفحص', 'جاري البحث عن تحديثات جديدة عبر Shorebird...'); final shorebird = Get.find(); shorebird.manualCheckForUpdate(); }, diff --git a/musadaq-app/lib/features/users/controllers/users_management_controller.dart b/musadaq-app/lib/features/users/controllers/users_management_controller.dart index b0379c0..078fa84 100644 --- a/musadaq-app/lib/features/users/controllers/users_management_controller.dart +++ b/musadaq-app/lib/features/users/controllers/users_management_controller.dart @@ -21,7 +21,12 @@ class UsersManagementController extends GetxController { isLoading.value = true; final response = await _dio.get('users'); if (response.data['success'] == true) { - users.value = List>.from(response.data['data']); + final rawData = response.data['data']; + if (rawData is Map && rawData.containsKey('items')) { + users.value = List>.from(rawData['items']); + } else if (rawData is List) { + users.value = List>.from(rawData); + } } } catch (e) { AppLogger.error('Failed to fetch users', e);