add pdf generator

This commit is contained in:
tzw
2024-02-22 17:16:19 +06:30
parent c33d3dda8a
commit cd3a05e064
9 changed files with 139 additions and 27 deletions

View File

@@ -21,7 +21,7 @@ class MainModel extends ChangeNotifier {
set setMessaginToken(token) {
this.messagingToken = token;
uploadMsgToken();
_uploadMsgToken();
}
Setting? setting;
@@ -84,24 +84,50 @@ class MainModel extends ChangeNotifier {
this.isFirstLaunch = await SharedPref.isFirstLaunch() ?? true;
this.packageInfo = await PackageInfo.fromPlatform();
if (userListener != null) userListener!.cancel();
userListener?.cancel();
userListener =
Services.instance.authService.getUserStream().listen((_user) {
// if (_user != null) {
// models.forEach((m) => m.initUser(_user));
// // call diffPrivileges if privilege changed or first time login
// if (this.user == null || _user.diffPrivileges(this.user!)) {
// models.forEach((m) => m.privilegeChanged());
// }
// if (this.user == null) {
// uploadMsgToken();
// }
// } else {
// if (this.user != null) {
// models.forEach((m) => m.logout());
// }
// }
// this.user = _user;
// isLoaded = true;
bool isFirstTime = user == null && _user != null;
bool diffPrivilege =
_user != null && (user == null || user!.diffPrivileges(_user));
bool loggingOut = user != null && _user == null;
user = _user;
if (_user != null) {
models.forEach((m) => m.initUser(_user));
// call diffPrivileges if privilege changed or first time login
if (this.user == null || _user.diffPrivileges(this.user!)) {
models.forEach((m) => m.privilegeChanged());
}
if (this.user == null) {
uploadMsgToken();
}
} else {
if (this.user != null) {
models.forEach((m) => m.logout());
for (final m in models) {
m.initUser(_user);
if (diffPrivilege) {
m.privilegeChanged();
}
}
}
this.user = _user;
if (loggingOut) {
for (final m in models) {
m.logout();
}
}
if (isFirstTime) {
_uploadMsgToken();
}
isLoaded = true;
notifyListeners();
});
@@ -136,20 +162,23 @@ class MainModel extends ChangeNotifier {
return authResult;
}
Future<void>? uploadMsgToken() {
if (messagingToken == null || user == null) return null;
Future<void> _uploadMsgToken() {
log.info("messagingToken:$messagingToken::user:$user");
if (messagingToken == null || user == null) return Future.value();
return Services.instance.userService.uploadMsgToken(messagingToken!);
}
Future<void>? removeMsgToken() {
if (messagingToken == null || user == null) return null;
Future<void> _removeMsgToken() {
if (messagingToken == null || user == null) return Future.value();
return Services.instance.userService.removeMsgToken(messagingToken!);
}
Future<void> signout() async {
try {
await removeMsgToken();
} catch (e) {}
await _removeMsgToken();
} catch (e) {
log.info(e.toString());
}
await Services.instance.authService.signout();
models.forEach((m) => m.logout());
}