NullSafety: Migrate PushService

This commit is contained in:
Neeraj Gupta 2022-12-30 13:43:19 +05:30
parent a85db9fef2
commit a845e8cf77
No known key found for this signature in database
GPG key ID: 3C5A1684DC1729E1

View file

@ -1,5 +1,3 @@
// @dart=2.9
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
@ -21,7 +19,7 @@ class PushService {
static final PushService instance = PushService._privateConstructor(); static final PushService instance = PushService._privateConstructor();
static final _logger = Logger("PushService"); static final _logger = Logger("PushService");
SharedPreferences _prefs; late SharedPreferences _prefs;
PushService._privateConstructor(); PushService._privateConstructor();
@ -46,22 +44,24 @@ class PushService {
} }
Future<void> _configurePushToken() async { Future<void> _configurePushToken() async {
final fcmToken = await FirebaseMessaging.instance.getToken(); final String? fcmToken = await FirebaseMessaging.instance.getToken();
final shouldForceRefreshServerToken = final shouldForceRefreshServerToken =
DateTime.now().microsecondsSinceEpoch - DateTime.now().microsecondsSinceEpoch -
(_prefs.getInt(kLastFCMTokenUpdationTime) ?? 0) > (_prefs.getInt(kLastFCMTokenUpdationTime) ?? 0) >
kFCMTokenUpdationIntervalInMicroSeconds; kFCMTokenUpdationIntervalInMicroSeconds;
if (_prefs.getString(kFCMPushToken) != fcmToken || if ((_prefs.getString(kFCMPushToken) != fcmToken ||
shouldForceRefreshServerToken) { shouldForceRefreshServerToken)) {
final apnsToken = await FirebaseMessaging.instance.getAPNSToken(); final String? apnsToken = await FirebaseMessaging.instance.getAPNSToken();
try { try {
_logger.info("Updating token on server"); _logger.info("Updating token on server");
await _setPushTokenOnServer(fcmToken, apnsToken); await _setPushTokenOnServer(fcmToken, apnsToken);
await _prefs.setString(kFCMPushToken, fcmToken); if (fcmToken != null) {
await _prefs.setInt( await _prefs.setString(kFCMPushToken, fcmToken);
kLastFCMTokenUpdationTime, await _prefs.setInt(
DateTime.now().microsecondsSinceEpoch, kLastFCMTokenUpdationTime,
); DateTime.now().microsecondsSinceEpoch,
);
}
_logger.info("Push token updated on server"); _logger.info("Push token updated on server");
} catch (e) { } catch (e) {
_logger.severe("Could not set push token", e, StackTrace.current); _logger.severe("Could not set push token", e, StackTrace.current);
@ -71,7 +71,8 @@ class PushService {
} }
} }
Future<void> _setPushTokenOnServer(String fcmToken, String apnsToken) async { Future<void> _setPushTokenOnServer(
String? fcmToken, String? apnsToken) async {
await Network.instance.enteDio.post( await Network.instance.enteDio.post(
"/push/token", "/push/token",
data: { data: {