update main model
This commit is contained in:
@@ -84,7 +84,7 @@ class _HomePageState extends State<HomePage> {
|
||||
}
|
||||
|
||||
_loadStaffMode(bool isCustomer) async {
|
||||
bool staffMode = await SharedPref.getStaffMode();
|
||||
bool? staffMode = await SharedPref.getStaffMode();
|
||||
setState(() {
|
||||
if (isCustomer) {
|
||||
isFcs[0] = false;
|
||||
@@ -117,12 +117,12 @@ class _HomePageState extends State<HomePage> {
|
||||
if (mainModel.isLogin()) {
|
||||
timer.cancel();
|
||||
bool isCustomer = mainModel.isCustomer();
|
||||
String receiverID = isCustomer ? mainModel.user.id : notiUserID;
|
||||
String receiverName = isCustomer ? mainModel.user.name : notiUserName;
|
||||
String? receiverID = isCustomer ? mainModel.user?.id : notiUserID;
|
||||
String? receiverName = isCustomer ? mainModel.user?.name : notiUserName;
|
||||
MessageModel messageModel =
|
||||
Provider.of<MessageModel>(context, listen: false);
|
||||
messageModel.initQuery(receiverID);
|
||||
User user = mainModel.user;
|
||||
User user = mainModel.user!;
|
||||
if (!isCustomer) {
|
||||
CustomerModel customerModel =
|
||||
Provider.of<CustomerModel>(context, listen: false);
|
||||
@@ -133,15 +133,15 @@ class _HomePageState extends State<HomePage> {
|
||||
MaterialPageRoute(
|
||||
builder: (context) => MessageDetail(
|
||||
messageModel: messageModel,
|
||||
receiverID: receiverID,
|
||||
receiverName: receiverName,
|
||||
receiverID: receiverID ?? "",
|
||||
receiverName: receiverName ?? "",
|
||||
))).then((value) {
|
||||
if (user.userUnseenCount > 0) {
|
||||
messageModel.seenMessages(user.id, true);
|
||||
messageModel.seenMessages(user.id ?? "", true);
|
||||
}
|
||||
});
|
||||
if (user.userUnseenCount > 0) {
|
||||
messageModel.seenMessages(user.id, true);
|
||||
messageModel.seenMessages(user.id ?? "", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -204,7 +204,7 @@ class _HomePageState extends State<HomePage> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
User user = Provider.of<MainModel>(context).user;
|
||||
User? user = Provider.of<MainModel>(context).user;
|
||||
|
||||
if (user == null) {
|
||||
Future.microtask(
|
||||
@@ -280,11 +280,11 @@ class _HomePageState extends State<HomePage> {
|
||||
))
|
||||
.then((value) {
|
||||
if (user.userUnseenCount > 0) {
|
||||
messageModel.seenMessages(user.id, true);
|
||||
messageModel.seenMessages(user.id ?? "", true);
|
||||
}
|
||||
});
|
||||
if (user.userUnseenCount > 0) {
|
||||
messageModel.seenMessages(user.id, true);
|
||||
messageModel.seenMessages(user.id ?? "", true);
|
||||
}
|
||||
});
|
||||
final notiBtn = badgeCounter(notiBtnOrg, user.userUnseenCount);
|
||||
|
||||
@@ -26,9 +26,9 @@ class _InitialLanguageSelectionPageState
|
||||
languagesList[1]: languageCodesList[1],
|
||||
};
|
||||
|
||||
String selectedLanguage = 'en';
|
||||
String selectedLanguage = 'en';
|
||||
late int selectedIndex;
|
||||
bool _isLoading = false;
|
||||
bool _isLoading = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -101,8 +101,8 @@ class _InitialLanguageSelectionPageState
|
||||
? BoxDecoration()
|
||||
: BoxDecoration(
|
||||
border: Border(
|
||||
bottom:
|
||||
BorderSide(color: Colors.grey.shade300),
|
||||
bottom: BorderSide(
|
||||
color: Colors.grey.shade300),
|
||||
),
|
||||
),
|
||||
child: ListTile(
|
||||
@@ -177,7 +177,7 @@ class _InitialLanguageSelectionPageState
|
||||
setState(() {
|
||||
selectedIndex = index;
|
||||
selectedLanguage = lang;
|
||||
Translation().onLocaleChanged!(Locale(languagesMap[lang]));
|
||||
Translation().onLocaleChanged(Locale(languagesMap[lang]));
|
||||
Provider.of<LanguageModel>(context, listen: false)
|
||||
.saveLanguage(selectedLanguage);
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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];
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user