feat: Enhance APNS token retrieval with retries and add cancel functionality to revert changes in notification and privacy settings.

This commit is contained in:
pradeepkumar
2026-03-20 02:48:41 +05:30
parent cbb9034424
commit 744787bae2
4 changed files with 81 additions and 7 deletions

View File

@@ -22,6 +22,10 @@ class _NotificationsTabState extends ConsumerState<NotificationsTab> {
bool _isLoadingNotifications = false;
bool _isSavingNotifications = false;
// Snapshot of original values for cancel/reset
Map<String, Map<String, bool>> _originalPrefs = {};
String _originalFrequency = 'instant';
@override
void initState() {
super.initState();
@@ -55,6 +59,12 @@ class _NotificationsTabState extends ConsumerState<NotificationsTab> {
_digestFrequency = data['digestFrequency'] as String? ?? 'instant';
_isLoadingNotifications = false;
_notificationsLoaded = true;
// Save snapshot for cancel/reset
_originalPrefs = {
for (final e in _notificationPrefs.entries)
e.key: Map<String, bool>.from(e.value),
};
_originalFrequency = _digestFrequency;
});
} catch (_) {
setState(() {
@@ -144,8 +154,12 @@ class _NotificationsTabState extends ConsumerState<NotificationsTab> {
ProfileActionButtons(
onSave: _saveNotificationSettings,
onCancel: () {
_notificationsLoaded = false;
_loadNotificationPreferences();
setState(() {
for (final key in _originalPrefs.keys) {
_notificationPrefs[key] = Map<String, bool>.from(_originalPrefs[key]!);
}
_digestFrequency = _originalFrequency;
});
},
isSaving: _isSavingNotifications,
),

View File

@@ -23,6 +23,14 @@ class _PrivacyTabState extends ConsumerState<PrivacyTab> {
bool _isSavingPrivacy = false;
bool _privacyLoaded = false;
// Snapshot for cancel/reset
String _origProfileVisibility = 'public';
String _origContactInfo = 'connections';
String _origActivityStatus = 'public';
bool _origShareAnalytics = false;
bool _origPersonalizedAds = false;
bool _origThirdPartySharing = false;
@override
void initState() {
super.initState();
@@ -50,6 +58,13 @@ class _PrivacyTabState extends ConsumerState<PrivacyTab> {
dataSettings['thirdPartySharing'] as bool? ?? false;
_isLoadingPrivacy = false;
_privacyLoaded = true;
// Save snapshot for cancel/reset
_origProfileVisibility = _profileVisibility;
_origContactInfo = _contactInfo;
_origActivityStatus = _activityStatus;
_origShareAnalytics = _shareAnalytics;
_origPersonalizedAds = _personalizedAds;
_origThirdPartySharing = _thirdPartySharing;
});
} catch (_) {
setState(() => _isLoadingPrivacy = false);
@@ -150,8 +165,14 @@ class _PrivacyTabState extends ConsumerState<PrivacyTab> {
ProfileActionButtons(
onSave: _savePrivacyPreferences,
onCancel: () {
_privacyLoaded = false;
_loadPrivacyPreferences();
setState(() {
_profileVisibility = _origProfileVisibility;
_contactInfo = _origContactInfo;
_activityStatus = _origActivityStatus;
_shareAnalytics = _origShareAnalytics;
_personalizedAds = _origPersonalizedAds;
_thirdPartySharing = _origThirdPartySharing;
});
},
isSaving: _isSavingPrivacy),
const SizedBox(height: 24),