[Flutter] Use deviceName instead of hostName for clients
This commit is contained in:
@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||
import 'package:in_app_purchase/in_app_purchase.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:simplecloudnotifier/api/api_client.dart';
|
||||
import 'package:simplecloudnotifier/main_messaging.dart';
|
||||
import 'package:simplecloudnotifier/main_utils.dart';
|
||||
import 'package:simplecloudnotifier/components/layout/nav_layout.dart';
|
||||
@@ -68,13 +69,15 @@ void main() async {
|
||||
print('[INIT] Request Notification permissions...');
|
||||
await FirebaseMessaging.instance.requestPermission(provisional: true);
|
||||
|
||||
FirebaseMessaging.instance.onTokenRefresh.listen((fcmToken) {
|
||||
FirebaseMessaging.instance.onTokenRefresh
|
||||
.listen((fcmToken) {
|
||||
try {
|
||||
setFirebaseToken(fcmToken);
|
||||
} catch (exc, trace) {
|
||||
ApplicationLog.error('Failed to set firebase token: ' + exc.toString(), trace: trace);
|
||||
}
|
||||
}).onError((dynamic err) {
|
||||
})
|
||||
.onError((dynamic err) {
|
||||
ApplicationLog.error('Failed to listen to token refresh events: ' + (err?.toString() ?? ''));
|
||||
});
|
||||
|
||||
@@ -96,6 +99,25 @@ void main() async {
|
||||
|
||||
await appAuth.tryMigrateFromV1();
|
||||
|
||||
if (appAuth.isAuth()) {
|
||||
print('[INIT] Load Client and potentially update...');
|
||||
|
||||
try {
|
||||
var client = await appAuth.loadClient(onlyCached: true);
|
||||
if (client != null) {
|
||||
if (client.agentModel != Globals().deviceModel || client.name != Globals().nameForClient() || client.agentVersion != Globals().version) {
|
||||
print('[INIT] Update Client info...');
|
||||
|
||||
final newClient = await APIClient.updateClient(appAuth, client.clientID, agentModel: Globals().deviceModel, name: Globals().nameForClient(), agentVersion: Globals().version);
|
||||
appAuth.setClientAndClientID(newClient);
|
||||
await appAuth.save();
|
||||
}
|
||||
}
|
||||
} catch (exc, trace) {
|
||||
ApplicationLog.error('Failed to get client (on init): ' + exc.toString(), trace: trace);
|
||||
}
|
||||
}
|
||||
|
||||
print('[INIT] Load Notifications...');
|
||||
|
||||
final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
|
||||
|
||||
@@ -40,11 +40,11 @@ void setFirebaseToken(String fcmToken) async {
|
||||
|
||||
if (client == null) {
|
||||
// should not really happen - perhaps someone externally deleted the client?
|
||||
final newClient = await APIClient.addClient(acc, fcmToken, Globals().deviceModel, Globals().version, Globals().hostname, Globals().clientType);
|
||||
final newClient = await APIClient.addClient(acc, fcmToken, Globals().deviceModel, Globals().version, Globals().nameForClient(), Globals().clientType);
|
||||
acc.setClientAndClientID(newClient);
|
||||
await acc.save();
|
||||
} else {
|
||||
final newClient = await APIClient.updateClient(acc, client.clientID, fcmToken: fcmToken, agentModel: Globals().deviceModel, name: Globals().hostname, agentVersion: Globals().version);
|
||||
final newClient = await APIClient.updateClient(acc, client.clientID, fcmToken: fcmToken, agentModel: Globals().deviceModel, name: Globals().nameForClient(), agentVersion: Globals().version);
|
||||
acc.setClientAndClientID(newClient);
|
||||
await acc.save();
|
||||
}
|
||||
|
||||
@@ -527,7 +527,7 @@ class _AccountRootPageState extends State<AccountRootPage> {
|
||||
|
||||
await Globals().setPrefFCMToken(fcmToken);
|
||||
|
||||
final user = await APIClient.createUserWithClient(null, fcmToken, Globals().platform, Globals().version, Globals().hostname, Globals().clientType);
|
||||
final user = await APIClient.createUserWithClient(null, fcmToken, Globals().platform, Globals().version, Globals().nameForClient(), Globals().clientType);
|
||||
|
||||
acc.set(user.user, user.clients[0], user.adminKey, user.sendKey);
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ class _AccountLoginPageState extends State<AccountLoginPage> {
|
||||
|
||||
final user = await APIClient.getUser(DirectTokenSource(uid, atokv), uid);
|
||||
|
||||
final client = await APIClient.addClient(DirectTokenSource(uid, atokv), fcmToken, Globals().deviceModel, Globals().version, Globals().hostname, Globals().clientType);
|
||||
final client = await APIClient.addClient(DirectTokenSource(uid, atokv), fcmToken, Globals().deviceModel, Globals().version, Globals().nameForClient(), Globals().clientType);
|
||||
|
||||
acc.set(user, client, atokv, stokv);
|
||||
await acc.save();
|
||||
|
||||
@@ -99,7 +99,7 @@ class AppAuth extends ChangeNotifier implements TokenSource {
|
||||
|
||||
final user = await APIClient.getUser(DirectTokenSource(oldUserID, oldUserKey), oldUserID);
|
||||
|
||||
final client = await APIClient.addClient(DirectTokenSource(oldUserID, oldUserKey), fcmToken, Globals().deviceModel, Globals().version, Globals().hostname, Globals().clientType);
|
||||
final client = await APIClient.addClient(DirectTokenSource(oldUserID, oldUserKey), fcmToken, Globals().deviceModel, Globals().version, Globals().nameForClient(), Globals().clientType);
|
||||
|
||||
set(user, client, oldUserKey, newTokenSend.token);
|
||||
|
||||
@@ -232,7 +232,7 @@ class AppAuth extends ChangeNotifier implements TokenSource {
|
||||
return _user?.$1;
|
||||
}
|
||||
|
||||
Future<Client?> loadClient({bool force = false, Duration? forceIfOlder = null}) async {
|
||||
Future<Client?> loadClient({bool force = false, Duration? forceIfOlder = null, bool onlyCached = false}) async {
|
||||
if (forceIfOlder != null && _client != null && _client!.$2.difference(DateTime.now()) > forceIfOlder) {
|
||||
force = true;
|
||||
}
|
||||
@@ -245,6 +245,10 @@ class AppAuth extends ChangeNotifier implements TokenSource {
|
||||
throw Exception('Not authenticated');
|
||||
}
|
||||
|
||||
if (onlyCached) {
|
||||
return null;
|
||||
}
|
||||
|
||||
try {
|
||||
final client = await APIClient.getClient(this, _clientID!);
|
||||
|
||||
|
||||
@@ -92,4 +92,12 @@ class Globals {
|
||||
Future<bool> setPrefFCMToken(String value) {
|
||||
return sharedPrefs.setString("fcm.token", value);
|
||||
}
|
||||
|
||||
String nameForClient() {
|
||||
if (this.deviceName.isNotEmpty) {
|
||||
return this.deviceName;
|
||||
} else {
|
||||
return this.hostname;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user