Update .gitignore to exclude Firebase configuration files and refactor notification handling in the app. Removed redundant logging and notification data storage in SharedPreferences. Introduced NotificationCheckService and NotificationStateService for improved notification management. Updated view models and UI components to utilize the new services, enhancing notification state tracking and user experience.

This commit is contained in:
amirrezaghabeli
2025-10-06 11:59:54 +03:30
parent 17634744f7
commit 42f2e93a8e
28 changed files with 1499 additions and 595 deletions
-78
View File
@@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:tm_app/data/repositories/auth_repository.dart';
import 'package:tm_app/data/services/model/company_profile_data/company_profile_data.dart';
import 'package:tm_app/data/services/model/company_profile_response/company_profile_response.dart';
@@ -30,65 +29,12 @@ class ProfileViewModel with ChangeNotifier {
CompanyProfileData? _companyProfileData;
bool _loggedOut = false;
// Notification info saved from FCM message in SharedPreferences
String? _notifData;
String? _notifFrom;
String? _notifType;
String? _notifKeys;
String? _notifTitle;
String? _notifBody;
String? _notifWebLink;
String? _notifAndroidLink;
String? _notifWebImage;
String? _notifAndroidImage;
String? _notifWebClickAction;
bool get isLoading => _isLoading;
bool get loggedOut => _loggedOut;
String? get errorMessage => _errorMessage;
ProfileData? get profileData => _profileData;
CompanyProfileData? get companyProfileData => _companyProfileData;
// Expose notification info
String? get notifData => _notifData;
String? get notifFrom => _notifFrom;
String? get notifType => _notifType;
String? get notifKeys => _notifKeys;
String? get notifTitle => _notifTitle;
String? get notifBody => _notifBody;
String? get notifWebLink => _notifWebLink;
String? get notifAndroidLink => _notifAndroidLink;
String? get notifWebImage => _notifWebImage;
String? get notifAndroidImage => _notifAndroidImage;
String? get notifWebClickAction => _notifWebClickAction;
String get notifSummaryText {
final parts = <String>[];
if (_notifTitle != null && _notifTitle!.isNotEmpty)
parts.add('Title: ${_notifTitle!}');
if (_notifBody != null && _notifBody!.isNotEmpty)
parts.add('Body: ${_notifBody!}');
if (_notifType != null && _notifType!.isNotEmpty)
parts.add('Type: ${_notifType!}');
if (_notifFrom != null && _notifFrom!.isNotEmpty)
parts.add('From: ${_notifFrom!}');
if (_notifKeys != null && _notifKeys!.isNotEmpty)
parts.add('Keys: ${_notifKeys!}');
if (_notifWebLink != null && _notifWebLink!.isNotEmpty)
parts.add('Web: ${_notifWebLink!}');
if (_notifAndroidLink != null && _notifAndroidLink!.isNotEmpty)
parts.add('Android: ${_notifAndroidLink!}');
if (_notifWebImage != null && _notifWebImage!.isNotEmpty)
parts.add('WebImg: ${_notifWebImage!}');
if (_notifAndroidImage != null && _notifAndroidImage!.isNotEmpty)
parts.add('AndroidImg: ${_notifAndroidImage!}');
if (_notifWebClickAction != null && _notifWebClickAction!.isNotEmpty)
parts.add('Click: ${_notifWebClickAction!}');
if (_notifData != null && _notifData!.isNotEmpty)
parts.add('Data: ${_notifData!}');
return parts.isEmpty ? '-' : parts.join(' | ');
}
Future<void> getProfile() async {
_isLoading = true;
_errorMessage = null;
@@ -152,28 +98,4 @@ class ProfileViewModel with ChangeNotifier {
_loggedOut = false;
notifyListeners();
}
Future<void> loadNotificationInfoFromPrefs() async {
// Do not toggle global loading; this is a lightweight local load
try {
final prefs = await SharedPreferences.getInstance();
_notifData = prefs.getString('notif_data');
_notifFrom = prefs.getString('notif_from');
_notifType = prefs.getString('notif_type');
_notifKeys = prefs.getString('notif_keys');
_notifTitle = prefs.getString('notif_title');
_notifBody = prefs.getString('notif_body');
_notifWebLink = prefs.getString('notif_web_link');
_notifAndroidLink = prefs.getString('notif_android_link');
_notifWebImage = prefs.getString('notif_web_image');
_notifAndroidImage = prefs.getString('notif_android_image');
_notifWebClickAction = prefs.getString('notif_web_click_action');
} catch (e) {
// Non-fatal; surface as errorMessage so UI can toast if listening
_errorMessage = e.toString();
}
notifyListeners();
_errorMessage = null;
notifyListeners();
}
}