registering fcm token for users

This commit is contained in:
MohammadTaha Basiri 2022-03-30 21:25:19 +04:30
parent 67c583bc7e
commit d83625521b
3 changed files with 15 additions and 1 deletions

View File

@ -3,6 +3,7 @@ import 'package:didvan/models/enums.dart';
import 'package:didvan/models/user.dart'; import 'package:didvan/models/user.dart';
import 'package:didvan/models/view/alert_data.dart'; import 'package:didvan/models/view/alert_data.dart';
import 'package:didvan/providers/core_provider.dart'; import 'package:didvan/providers/core_provider.dart';
import 'package:didvan/services/app_initalizer.dart';
import 'package:didvan/services/network/request.dart'; import 'package:didvan/services/network/request.dart';
import 'package:didvan/services/network/request_helper.dart'; import 'package:didvan/services/network/request_helper.dart';
import 'package:didvan/services/storage/storage.dart'; import 'package:didvan/services/storage/storage.dart';
@ -35,11 +36,19 @@ class UserProvider extends CoreProvier {
} }
if (service.isSuccess) { if (service.isSuccess) {
user = User.fromJson(service.result['user']); user = User.fromJson(service.result['user']);
await _registerFirebaseToken();
return true; return true;
} }
throw 'Getting user from API failed!'; throw 'Getting user from API failed!';
} }
Future<void> _registerFirebaseToken() async {
final service = RequestService(RequestHelper.firebaseToken, body: {
'firebaseToken': AppInitializer.fcmToken,
});
await service.put();
}
Future<bool> setProfilePhoto(dynamic file) async { Future<bool> setProfilePhoto(dynamic file) async {
appState = AppState.isolatedBusy; appState = AppState.isolatedBusy;
final RequestService service = final RequestService service =

View File

@ -8,6 +8,8 @@ import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
class AppInitializer { class AppInitializer {
static String? fcmToken;
static Future<void> setupServices() async { static Future<void> setupServices() async {
if (!kIsWeb) { if (!kIsWeb) {
StorageService.appDocsDir = StorageService.appDocsDir =
@ -74,7 +76,8 @@ class AppInitializer {
Firebase.app(); Firebase.app();
} }
final FirebaseMessaging fcm = FirebaseMessaging.instance; final FirebaseMessaging fcm = FirebaseMessaging.instance;
fcm.subscribeToTopic('general'); fcmToken = await fcm.getToken();
await fcm.subscribeToTopic('general');
await fcm.requestPermission( await fcm.requestPermission(
alert: true, alert: true,
announcement: false, announcement: false,

View File

@ -15,6 +15,8 @@ class RequestHelper {
static const String login = _baseUserUrl + '/login'; static const String login = _baseUserUrl + '/login';
static const String directs = _baseUserUrl + '/direct'; static const String directs = _baseUserUrl + '/direct';
static const String userInfo = _baseUserUrl + '/info'; static const String userInfo = _baseUserUrl + '/info';
static const String firebaseToken = _baseUserUrl + '/firebaseToken';
static const String silenceInterval = _baseUserUrl + '/silenceInterval';
static const String updateProfilePhoto = _baseUserUrl + '/profile/photo'; static const String updateProfilePhoto = _baseUserUrl + '/profile/photo';
static const String checkUsername = _baseUserUrl + '/CheckUsername'; static const String checkUsername = _baseUserUrl + '/CheckUsername';
static const String updateProfile = _baseUserUrl + '/profile/edit'; static const String updateProfile = _baseUserUrl + '/profile/edit';