fix logout issue

This commit is contained in:
tzw
2024-02-23 17:05:51 +06:30
parent 421bcf0a11
commit 5496bae681
23 changed files with 144 additions and 84 deletions

View File

@@ -10,7 +10,7 @@ abstract class BaseModel extends ChangeNotifier {
Setting? setting;
MainModel? mainModel;
void initUser(User user) async {
void initUser(User? user) async {
this.user = user;
}

View File

@@ -87,23 +87,6 @@ class MainModel extends ChangeNotifier {
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));
@@ -163,24 +146,28 @@ class MainModel extends ChangeNotifier {
}
Future<void> _uploadMsgToken() {
log.info("messagingToken:$messagingToken::user:$user");
if (messagingToken == null || user == null) return Future.value();
if (messagingToken == null || user == null) return Future.value();
return Services.instance.userService.uploadMsgToken(messagingToken!);
}
Future<void> _removeMsgToken() {
if (messagingToken == null || user == null) return Future.value();
if (messagingToken == null || user == null) return Future.value();
return Services.instance.userService.removeMsgToken(messagingToken!);
}
Future<void> signout() async {
try {
await Services.instance.authService.signoutStart();
await _removeMsgToken();
for (var i = 0; i < models.length; i++) {
models[i].initUser(null);
models[i].logout();
}
await Services.instance.authService.signoutEnd();
} catch (e) {
log.info(e.toString());
log.info("signout:${e.toString()}");
}
await Services.instance.authService.signout();
models.forEach((m) => m.logout());
}
Future<bool> hasInvite() async {