diff --git a/CHANGELOG.md b/CHANGELOG.md index 29a89d242a..9f45100deb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Notifications not received [#92](https://github.com/rokmetro/neom-app/issues/92) - Group UI Fixes [#89](https://github.com/rokmetro/neom-app/issues/89) - Remove the option to add past events to groups [#87](https://github.com/rokmetro/neom-app/issues/87) +- Remove notification topics dependence on device storage [#100](https://github.com/rokmetro/neom-app/issues/100) ### Changed - Allow attachments with messages in conversations [#85](https://github.com/rokmetro/neom-app/issues/85) diff --git a/lib/service/Auth2.dart b/lib/service/Auth2.dart index a0a84987f5..6cfdd1c93f 100644 --- a/lib/service/Auth2.dart +++ b/lib/service/Auth2.dart @@ -6,7 +6,6 @@ import 'package:flutter/material.dart'; import 'package:http/http.dart'; import 'package:illinois/model/Auth2.dart'; import 'package:illinois/service/Config.dart'; -import 'package:illinois/service/FirebaseMessaging.dart'; import 'package:illinois/service/FlexUI.dart'; import 'package:illinois/service/Storage.dart'; import 'package:path/path.dart'; @@ -214,7 +213,7 @@ class Auth2 extends rokwire.Auth2 { profile: Storage().userProfile, includedFoodTypes: Storage().includedFoodTypesPrefs, excludedFoodIngredients: Storage().excludedFoodIngredientsPrefs, - settings: FirebaseMessaging.storedSettings, + // settings: FirebaseMessaging.storedSettings, ); // iCard diff --git a/lib/service/FirebaseMessaging.dart b/lib/service/FirebaseMessaging.dart index 2a51bf3369..cdff04536b 100644 --- a/lib/service/FirebaseMessaging.dart +++ b/lib/service/FirebaseMessaging.dart @@ -18,7 +18,6 @@ import 'dart:async'; import 'dart:math'; import 'dart:ui'; import 'package:flutter/foundation.dart'; -// import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:illinois/service/FlexUI.dart'; import 'package:rokwire_plugin/model/auth2.dart'; import 'package:illinois/model/sport/SportDetails.dart'; @@ -32,7 +31,6 @@ import 'package:rokwire_plugin/service/log.dart'; import 'package:rokwire_plugin/service/notification_service.dart'; import 'package:rokwire_plugin/service/service.dart'; import 'package:illinois/service/Sports.dart'; -import 'package:illinois/service/Storage.dart'; import 'package:rokwire_plugin/utils/utils.dart'; @@ -130,8 +128,8 @@ class FirebaseMessaging extends rokwire.FirebaseMessaging implements Notificatio // Settings entry : topic name static const Map _notifySettingTopics = { - 'event_reminders' : 'event_reminders', - 'dining_specials' : 'dinning_specials', + _eventRemindersUpdatesNotificationSetting : _eventRemindersUpdatesNotificationSetting, + _diningSpecialsUpdatesNotificationSetting : _diningSpecialsUpdatesNotificationSetting, _groupUpdatesPostsNotificationSetting : _groupUpdatesPostsNotificationSetting, _groupUpdatesInvitationsNotificationSetting : _groupUpdatesInvitationsNotificationSetting, _groupUpdatesEventsNotificationSetting : _groupUpdatesEventsNotificationSetting, @@ -140,21 +138,21 @@ class FirebaseMessaging extends rokwire.FirebaseMessaging implements Notificatio }; // Settings entry : setting name (User.prefs.setting name) - static const Map _notifySettingNames = { - _eventRemindersUpdatesNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.event_reminders.enabled', - _diningSpecialsUpdatesNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.dining_specials.enabled', - _groupUpdatesPostsNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.group.posts.enabled', - _groupUpdatesPollsNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.group.polls.enabled', - _groupUpdatesMessagesNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.group.messages.enabled', - _groupUpdatesInvitationsNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.group.invitations.enabled', - _groupUpdatesEventsNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.group.events.enabled', - _athleticsUpdatesStartNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.athletic_updates.start.enabled', - _athleticsUpdatesEndNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.athletic_updates.end.enabled', - _athleticsUpdatesNewsNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.athletic_updates.news.enabled', - _athleticsUpdatesNotificationKey : 'edu.illinois.rokwire.settings.inbox.notification.athletic_updates.main.notifications.enabled', - _groupUpdatesNotificationKey : 'edu.illinois.rokwire.settings.inbox.notification.group.main.notifications.enabled', - _pauseNotificationKey : 'edu.illinois.rokwire.settings.inbox.notification.notifications.enabled', - }; + // static const Map _notifySettingNames = { + // _eventRemindersUpdatesNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.event_reminders.enabled', + // _diningSpecialsUpdatesNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.dining_specials.enabled', + // _groupUpdatesPostsNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.group.posts.enabled', + // _groupUpdatesPollsNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.group.polls.enabled', + // _groupUpdatesMessagesNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.group.messages.enabled', + // _groupUpdatesInvitationsNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.group.invitations.enabled', + // _groupUpdatesEventsNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.group.events.enabled', + // _athleticsUpdatesStartNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.athletic_updates.start.enabled', + // _athleticsUpdatesEndNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.athletic_updates.end.enabled', + // _athleticsUpdatesNewsNotificationSetting : 'edu.illinois.rokwire.settings.inbox.notification.athletic_updates.news.enabled', + // _athleticsUpdatesNotificationKey : 'edu.illinois.rokwire.settings.inbox.notification.athletic_updates.main.notifications.enabled', + // _groupUpdatesNotificationKey : 'edu.illinois.rokwire.settings.inbox.notification.group.main.notifications.enabled', + // _pauseNotificationKey : 'edu.illinois.rokwire.settings.inbox.notification.notifications.enabled', + // }; static const Map _defaultNotificationSettings = { _pauseNotificationKey : false @@ -684,8 +682,8 @@ class FirebaseMessaging extends rokwire.FirebaseMessaging implements Notificatio // Settings topics - bool? get notifyEventReminders { return _getNotifySetting('event_reminders'); } - set notifyEventReminders(bool? value) { _setNotifySetting('event_reminders', value); } + bool? get notifyEventReminders { return _getNotifySetting(_eventRemindersUpdatesNotificationSetting); } + set notifyEventReminders(bool? value) { _setNotifySetting(_eventRemindersUpdatesNotificationSetting, value); } bool? get notifyAthleticsUpdates { return _getNotifySetting(_athleticsUpdatesNotificationKey); } set notifyAthleticsUpdates(bool? value) { _setNotifySetting(_athleticsUpdatesNotificationKey, value); } @@ -717,12 +715,12 @@ class FirebaseMessaging extends rokwire.FirebaseMessaging implements Notificatio bool? get notifyGroupEventsUpdates { return _getNotifySetting(_groupUpdatesEventsNotificationSetting); } set notifyGroupEventsUpdates(bool? value) { _setNotifySetting(_groupUpdatesEventsNotificationSetting, value); } - bool? get notifyDiningSpecials { return _getNotifySetting('dining_specials'); } - set notifyDiningSpecials(bool? value) { _setNotifySetting('dining_specials', value); } + bool? get notifyDiningSpecials { return _getNotifySetting(_diningSpecialsUpdatesNotificationSetting); } + set notifyDiningSpecials(bool? value) { _setNotifySetting(_diningSpecialsUpdatesNotificationSetting, value); } set notificationsPaused(bool? value) {_setNotifySetting(_pauseNotificationKey, value);} - bool? get notificationsPaused {return _getStoredSetting(_pauseNotificationKey,);} + bool? get notificationsPaused => Inbox().userInfo?.notificationsDisabled; bool get _notifySettingsAvailable { return FlexUI().isNotificationsAvailable; @@ -740,7 +738,7 @@ class FirebaseMessaging extends rokwire.FirebaseMessaging implements Notificatio void _setNotifySetting(String name, bool? value) { if (_notifySettingsAvailable && (_getNotifySetting(name) != value)) { - _storeSetting(name, value); + // _storeSetting(name, value); NotificationService().notify(notifySettingUpdated, name); if (name == _athleticsUpdatesNotificationKey) { @@ -894,13 +892,15 @@ class FirebaseMessaging extends rokwire.FirebaseMessaging implements Notificatio bool? _getStoredSetting(String name){ bool defaultValue = _defaultNotificationSettings[name] ?? true; //true by default if(name == _pauseNotificationKey){ // settings depending on userInfo - if(Auth2().isLoggedIn && Inbox().userInfo != null){ + // if(Auth2().isLoggedIn && Inbox().userInfo != null){ return Inbox().userInfo?.notificationsDisabled ?? false; //This is the only setting stored in the userInfo - } + // } } - return Storage().getNotifySetting(_notifySettingNames[name] ?? name) ?? defaultValue; + return Inbox().userInfo?.topics?.contains(name) ?? defaultValue; + // return Storage().getNotifySetting(_notifySettingNames[name] ?? name) ?? defaultValue; } + /* void _storeSetting(String name, bool? value) { Storage().setNotifySetting(_notifySettingNames[name] ?? name, value); } @@ -929,4 +929,7 @@ class FirebaseMessaging extends rokwire.FirebaseMessaging implements Notificatio return subscribedTopics; } + */ + + Set? get currentTopics => Inbox().userInfo?.topics; } diff --git a/lib/service/Storage.dart b/lib/service/Storage.dart index 095203def5..9b1df27a3a 100644 --- a/lib/service/Storage.dart +++ b/lib/service/Storage.dart @@ -66,13 +66,13 @@ class Storage extends rokwire.Storage { // Notifications - bool? getNotifySetting(String name) { - return getBoolWithName(name); - } + // bool? getNotifySetting(String name) { + // return getBoolWithName(name); + // } - void setNotifySetting(String name, bool? value) { - return setBoolWithName(name, value); - } + // void setNotifySetting(String name, bool? value) { + // return setBoolWithName(name, value); + // } // Polls static const String selectedPollTypeKey = 'selected_poll_type'; @@ -211,7 +211,7 @@ class Storage extends rokwire.Storage { // static const String firebaseMessagingSubscriptionTopisKey = 'firebase_subscription_topis'; // Replacing "firebase_subscription_topis" with "firebase_messaging_subscription_topis" key ensures that // all subsciptions will be applied again through Notifications BB APIs - @override String get inboxFirebaseMessagingSubscriptionTopicsKey => 'firebase_messaging_subscription_topis'; +// @override String get inboxFirebaseMessagingSubscriptionTopicsKey => 'firebase_messaging_subscription_topis'; @override String get inboxFirebaseMessagingTokenKey => 'inbox_firebase_messaging_token'; @override String get inboxFirebaseMessagingUserIdKey => 'inbox_firebase_messaging_user_id';