mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +00:00
Integrate Firebase
This commit is contained in:
@ -5,16 +5,19 @@
|
||||
// ignore_for_file: lines_longer_than_80_chars
|
||||
|
||||
import 'package:file_picker/src/file_picker_web.dart';
|
||||
import 'package:firebase_core_web/firebase_core_web.dart';
|
||||
import 'package:firebase_messaging_web/firebase_messaging_web.dart';
|
||||
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
|
||||
import 'package:shared_preferences_web/shared_preferences_web.dart';
|
||||
import 'package:url_launcher_web/url_launcher_web.dart';
|
||||
import 'package:video_player_web/video_player_web.dart';
|
||||
import 'package:wakelock_web/wakelock_web.dart';
|
||||
|
||||
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
|
||||
|
||||
// ignore: public_member_api_docs
|
||||
void registerPlugins(Registrar registrar) {
|
||||
FilePickerWeb.registerWith(registrar);
|
||||
FirebaseCoreWeb.registerWith(registrar);
|
||||
FirebaseMessagingWeb.registerWith(registrar);
|
||||
SharedPreferencesPlugin.registerWith(registrar);
|
||||
UrlLauncherPlugin.registerWith(registrar);
|
||||
VideoPlayerPlugin.registerWith(registrar);
|
||||
|
26
lib/helpers/firebase_messaging_helper.dart
Normal file
26
lib/helpers/firebase_messaging_helper.dart
Normal file
@ -0,0 +1,26 @@
|
||||
import 'package:firebase_core/firebase_core.dart';
|
||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||
|
||||
/// Firebase messaging helper
|
||||
///
|
||||
/// @author Pierre Hubert
|
||||
|
||||
bool _isFirebaseReady = false;
|
||||
|
||||
class FirebaseMessagingHelper {
|
||||
/// Pre configure notifications
|
||||
static Future<void> preConfigure() async {
|
||||
if (!_isFirebaseReady) await Firebase.initializeApp();
|
||||
_isFirebaseReady = true;
|
||||
|
||||
final settings = await FirebaseMessaging.instance.requestPermission();
|
||||
|
||||
if (settings.authorizationStatus != AuthorizationStatus.authorized)
|
||||
throw new Exception("The user did not authorize notifications!");
|
||||
}
|
||||
|
||||
/// Get a Firebase access token
|
||||
static Future<String> getToken() async {
|
||||
return await FirebaseMessaging.instance.getToken();
|
||||
}
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
import 'package:comunic/helpers/firebase_messaging_helper.dart';
|
||||
import 'package:comunic/helpers/independent_push_notifications_helper.dart';
|
||||
import 'package:comunic/helpers/push_notifications_helper.dart';
|
||||
import 'package:comunic/helpers/server_config_helper.dart';
|
||||
@ -111,13 +112,15 @@ class _PushNotificationsConfigurationRouteState
|
||||
|
||||
Future<void> _submit() async {
|
||||
try {
|
||||
String firebaseToken = "";
|
||||
|
||||
switch (currStatus) {
|
||||
case PushNotificationsStatus.DISABLED:
|
||||
break;
|
||||
|
||||
case PushNotificationsStatus.FIREBASE:
|
||||
// TODO: Handle this case.
|
||||
throw new Exception("Firebase not supported yet!");
|
||||
await FirebaseMessagingHelper.preConfigure();
|
||||
firebaseToken = await FirebaseMessagingHelper.getToken();
|
||||
break;
|
||||
|
||||
case PushNotificationsStatus.INDEPENDENT:
|
||||
@ -130,7 +133,8 @@ class _PushNotificationsConfigurationRouteState
|
||||
}
|
||||
|
||||
await PushNotificationsHelper.clearLocalStatus();
|
||||
await PushNotificationsHelper.setNewStatus(currStatus);
|
||||
await PushNotificationsHelper.setNewStatus(currStatus,
|
||||
firebaseToken: firebaseToken);
|
||||
await PushNotificationsHelper.refreshLocalStatus();
|
||||
|
||||
Navigator.of(context).pop();
|
||||
|
Reference in New Issue
Block a user