Contact us and Notification UAT bug

This commit is contained in:
Kalonkarthik 2025-04-08 15:22:02 +05:30
parent ff79f88853
commit c623b1e1f7
2 changed files with 146 additions and 46 deletions

View File

@ -8,6 +8,7 @@ import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/enquiry_a
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart'; import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart'; import 'package:uae_stat/presentation/routes/drawer_routes/custom_drawer_routes.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:url_launcher/url_launcher.dart';
class Contact extends ConsumerStatefulWidget { class Contact extends ConsumerStatefulWidget {
const Contact({super.key}); const Contact({super.key});
@ -78,7 +79,7 @@ class _ContactState extends ConsumerState<Contact> {
{ {
'icon': EnquiryAssetIconPath.map, 'icon': EnquiryAssetIconPath.map,
'text': 'P.O.Box: 127000 Dubai', 'text': 'P.O.Box: 127000 Dubai',
'textAr': 'ص.ب: : 127000 دبي' 'textAr': 'ص.ب: 127000 دبي'
}, },
{ {
'icon': EnquiryAssetIconPath.at, 'icon': EnquiryAssetIconPath.at,
@ -121,7 +122,7 @@ class _ContactState extends ConsumerState<Contact> {
{ {
'icon': EnquiryAssetIconPath.map, 'icon': EnquiryAssetIconPath.map,
'text': 'P.O.Box: 127000 Dubai', 'text': 'P.O.Box: 127000 Dubai',
'textAr': 'ص.ب: : 127000 دبي' 'textAr': 'ص.ب: 127000 دبي'
}, },
{ {
'icon': EnquiryAssetIconPath.at, 'icon': EnquiryAssetIconPath.at,
@ -164,7 +165,7 @@ class _ContactState extends ConsumerState<Contact> {
{ {
'icon': EnquiryAssetIconPath.map, 'icon': EnquiryAssetIconPath.map,
'text': 'P.O.Box: 127000 Dubai', 'text': 'P.O.Box: 127000 Dubai',
'textAr': 'ص.ب: : 127000 دبي' 'textAr': 'ص.ب: 127000 دبي'
}, },
{ {
'icon': EnquiryAssetIconPath.at, 'icon': EnquiryAssetIconPath.at,
@ -229,6 +230,34 @@ class _ContactState extends ConsumerState<Contact> {
} }
Widget buildTextRow(String iconName, String text) { Widget buildTextRow(String iconName, String text) {
List<String> values = List.filled(2, '');
String cleanText = '';
if (text.toLowerCase().contains('tel:') || text.toLowerCase().contains('الهاتف:')) {
values = text.split(':');
print ('List of values----- :$values');
print ('value 1 ${values[0]}');
cleanText=values[1].replaceAll(' ', '');
} else if(text.toLowerCase().contains('email address:') || text.toLowerCase().contains('البريد الإلكتروني:')){
values = text.split(':');
cleanText = values[1].replaceAll(' ', '');
} else{
cleanText = text;
}
Future<void> sendEmail(String emailAddress) async {
print ('before email : $emailAddress');
final uri = Uri(
scheme: 'mailto',
path: emailAddress,
);
if (await canLaunchUrl(uri)) {
await launchUrl(uri);
} else {
debugPrint('Could not launch $uri');
}
}
return Padding( return Padding(
padding: const EdgeInsets.symmetric(vertical: 5.0), padding: const EdgeInsets.symmetric(vertical: 5.0),
child: Row( child: Row(
@ -240,7 +269,54 @@ class _ContactState extends ConsumerState<Contact> {
height: 20, height: 20,
), ),
const SizedBox(width: 10), const SizedBox(width: 10),
Expanded( iconName == EnquiryAssetIconPath.phone
? InkWell(
onTap: () async{
print('clean test : $cleanText');
final uri = Uri(scheme: 'tel', path: cleanText);
if (await canLaunchUrl(uri)) {
await launchUrl(uri);
} else {
debugPrint('Could not launch $uri');
}
},
child: RichText(
text: TextSpan(
text: values[0],
style: const TextStyle(fontSize: 14, color: Color(0xFF5F5F5F)),
children: <TextSpan>[
TextSpan(text: ':',),
TextSpan(text: values[1],
style: TextStyle(fontSize: 14, color:Color(0xFF985400))
),
],
),
),
// child: Text(
// text,
// style: const TextStyle(
// fontSize: 14,
// color: Color(0xFF5F5F5F),
// ),
// ),
)
: iconName == EnquiryAssetIconPath.at
? InkWell(
onTap: () => sendEmail(cleanText),
child: RichText(
text: TextSpan(
text: values[0],
style: const TextStyle(fontSize: 14, color: Color(0xFF5F5F5F)),
children: <TextSpan>[
TextSpan(text: ':',),
TextSpan(text: values[1],
style: TextStyle(fontSize: 14, color:Color(0xFF985400))
),
],
),
),
)
:Expanded(
child: Text( child: Text(
text, text,
style: const TextStyle( style: const TextStyle(

View File

@ -26,6 +26,7 @@ class _NotificationPageState extends ConsumerState<NotificationPage> {
bool isLoading = true; bool isLoading = true;
List<Map<String, dynamic>> notifications = []; List<Map<String, dynamic>> notifications = [];
List<String> userReadedNotiOrNot = []; List<String> userReadedNotiOrNot = [];
String notificationCount='';
// Current selected tab index // Current selected tab index
int selectedTabIndex = 0; int selectedTabIndex = 0;
@ -48,7 +49,30 @@ class _NotificationPageState extends ConsumerState<NotificationPage> {
super.initState(); super.initState();
locale = ref.read(localeProvider) ?? const Locale('en'); locale = ref.read(localeProvider) ?? const Locale('en');
_userService = UserService(); _userService = UserService();
fetchNotifications(locale?.languageCode ?? 'en'); _initializePage();
}
Future<void> _initializePage() async {
_userService = UserService();
await _fetchUserData();();
await fetchNotifications(locale?.languageCode ?? 'en');
_processNotifications(notifications , userReadedNotiOrNot);
}
void _processNotifications( List<Map<String, dynamic>> notification ,List<String> push ){
print ('inside last function ${notification.length}');
print('inside last function ${push.length}');
int count = 0;
for (var product in notification) {
if (push.contains(product['id'])) {
count++;
}
}
print('count is $count');
if(count>0){
notificationCount='{$count}';}
else{notificationCount='';}
} }
Future<String?> getUserId() async { Future<String?> getUserId() async {
@ -188,8 +212,8 @@ class _NotificationPageState extends ConsumerState<NotificationPage> {
child: BaseScaffold( child: BaseScaffold(
title: Text( title: Text(
context.translate( context.translate(
'Notification', 'Notification $notificationCount',
'إشعار', '$notificationCount إشعار ',
), ),
), ),
body: isLoading body: isLoading