update main model

This commit is contained in:
tzw
2021-09-10 15:15:20 +06:30
parent 51a5fe0740
commit 3eacbef117
11 changed files with 68 additions and 70 deletions

View File

@@ -6,9 +6,9 @@ import 'package:fcs/helpers/api_helper.dart';
import 'main_model.dart';
abstract class BaseModel extends ChangeNotifier {
User user;
Setting setting;
MainModel mainModel;
User? user;
Setting? setting;
MainModel? mainModel;
void initUser(User user) async {
this.user = user;
@@ -16,7 +16,7 @@ abstract class BaseModel extends ChangeNotifier {
void privilegeChanged() {}
void initSetting(Setting setting) async {
void initSetting(Setting? setting) async {
this.setting = setting;
}
@@ -32,8 +32,8 @@ abstract class BaseModel extends ChangeNotifier {
String path,
method, {
dynamic payload,
String token,
String url,
required String token,
String? url,
}) async {
return await requestAPI(path, method,
payload: payload, token: token, url: url);

View File

@@ -5,7 +5,7 @@ import 'package:flutter/painting.dart';
import 'base_model.dart';
class LanguageModel extends BaseModel {
String language;
late String language;
bool get isEng => this.language == "English";
List<bool> get currentState => isEng ? [true, false] : [false, true];

View File

@@ -15,16 +15,16 @@ class MainModel extends ChangeNotifier {
final log = Logger('MainModel');
List<BaseModel> models = [];
String messagingToken;
User user;
PackageInfo packageInfo;
String? messagingToken;
User? user;
PackageInfo? packageInfo;
set setMessaginToken(token) {
this.messagingToken = token;
uploadMsgToken();
}
Setting setting;
Setting? setting;
bool isLoaded = false;
bool isOnline = false;
@@ -42,23 +42,23 @@ class MainModel extends ChangeNotifier {
}
bool faqEditable() {
return this.user != null && this.user.hasSupport();
return this.user != null && this.user!.hasSupport();
}
bool rateEditable() {
return this.user != null && this.user.hasSupport();
return this.user != null && this.user!.hasSupport();
}
bool paymentMethodsEditable() {
return this.user != null && this.user.hasSupport();
return this.user != null && this.user!.hasSupport();
}
bool termEditable() {
return this.user != null && this.user.hasSupport();
return this.user != null && this.user!.hasSupport();
}
bool contactEditable() {
return this.user != null && this.user.hasSupport();
return this.user != null && this.user!.hasSupport();
}
bool isLogin() {
@@ -66,32 +66,31 @@ class MainModel extends ChangeNotifier {
}
bool isCustomer() {
return user != null && user.isCustomer();
return user != null && user!.isCustomer();
}
bool isSysAdmin() {
return this.user != null && this.user.hasSysAdmin();
return this.user != null && this.user!.hasSysAdmin();
}
bool isAdmin() {
return this.user != null && this.user.hasAdmin();
return this.user != null && this.user!.hasAdmin();
}
// userListener should never be closed
StreamSubscription<User> userListener;
StreamSubscription<User?>? userListener;
_init() async {
await _listenSetting();
this.isFirstLaunch = await SharedPref.isFirstLaunch();
this.isFirstLaunch = this.isFirstLaunch ?? true;
this.isFirstLaunch = await SharedPref.isFirstLaunch() ?? true;
this.packageInfo = await PackageInfo.fromPlatform();
if (userListener != null) userListener.cancel();
if (userListener != null) 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)) {
if (this.user == null || _user.diffPrivileges(this.user!)) {
models.forEach((m) => m.privilegeChanged());
}
if (this.user == null) {
@@ -124,7 +123,7 @@ class MainModel extends ChangeNotifier {
bool isSupport() {
if (packageInfo == null || setting == null) return false;
return int.parse(packageInfo.buildNumber) >= setting.supportBuildNum;
return int.parse(packageInfo!.buildNumber) >= setting!.supportBuildNum;
}
Future<AuthResult> sendSms(String phoneNumber) {
@@ -137,14 +136,14 @@ class MainModel extends ChangeNotifier {
return authResult;
}
Future<void> uploadMsgToken() {
Future<void>? uploadMsgToken() {
if (messagingToken == null || user == null) return null;
return Services.instance.userService.uploadMsgToken(messagingToken);
return Services.instance.userService.uploadMsgToken(messagingToken!);
}
Future<void> removeMsgToken() {
Future<void>? removeMsgToken() {
if (messagingToken == null || user == null) return null;
return Services.instance.userService.removeMsgToken(messagingToken);
return Services.instance.userService.removeMsgToken(messagingToken!);
}
Future<void> signout() async {