updated packages, did things and maybe finally fixed login issue
This commit is contained in:
@@ -68,6 +68,8 @@ Future loginAPI({
|
||||
gradeDelay: 0,
|
||||
),
|
||||
role: Role.parent,
|
||||
accessToken: '',
|
||||
accessTokenExpire: DateTime.now(),
|
||||
refreshToken: '',
|
||||
);
|
||||
|
||||
@@ -154,6 +156,8 @@ Future loginAPI({
|
||||
name: student.name,
|
||||
student: student,
|
||||
role: JwtUtils.getRoleFromJWT(res["access_token"])!,
|
||||
accessToken: res["access_token"],
|
||||
accessTokenExpire: DateTime.now(),
|
||||
refreshToken: '',
|
||||
);
|
||||
|
||||
@@ -235,6 +239,15 @@ Future newLoginAPI({
|
||||
if (res != null) {
|
||||
if (kDebugMode) {
|
||||
print(res);
|
||||
|
||||
// const splitSize = 1000;
|
||||
// RegExp exp = RegExp(r"\w{" "$splitSize" "}");
|
||||
// // String str = "0102031522";
|
||||
// Iterable<Match> matches = exp.allMatches(res.toString());
|
||||
// var list = matches.map((m) => m.group(0));
|
||||
// list.forEach((e) {
|
||||
// print(e);
|
||||
// });
|
||||
}
|
||||
|
||||
if (res.containsKey("error")) {
|
||||
@@ -267,6 +280,9 @@ Future newLoginAPI({
|
||||
name: student.name,
|
||||
student: student,
|
||||
role: role,
|
||||
accessToken: res["access_token"],
|
||||
accessTokenExpire:
|
||||
DateTime.now().add(Duration(seconds: (res["expires_in"] - 30))),
|
||||
refreshToken: res["refresh_token"],
|
||||
);
|
||||
|
||||
|
||||
@@ -40,6 +40,12 @@ Future<void> syncAll(BuildContext context) {
|
||||
StatusProvider statusProvider =
|
||||
Provider.of<StatusProvider>(context, listen: false);
|
||||
|
||||
// check if access token isn't expired
|
||||
// if (user.user?.accessToken == null) {
|
||||
// lock = false;
|
||||
// return Future.value();
|
||||
// }
|
||||
|
||||
List<Future<void>> tasks = [];
|
||||
int taski = 0;
|
||||
|
||||
@@ -50,6 +56,25 @@ Future<void> syncAll(BuildContext context) {
|
||||
}
|
||||
|
||||
tasks = [
|
||||
// refresh login
|
||||
syncStatus(() async {
|
||||
print(user.user?.accessTokenExpire);
|
||||
|
||||
if (user.user == null) return;
|
||||
if (user.user!.accessTokenExpire.isBefore(DateTime.now())) {
|
||||
String authRes = await Provider.of<KretaClient>(context, listen: false)
|
||||
.refreshLogin() ??
|
||||
'';
|
||||
if (authRes != 'success') {
|
||||
print('ERROR: failed to refresh login');
|
||||
lock = false;
|
||||
return Future.value();
|
||||
}
|
||||
} else {
|
||||
print('INFO: access token is not expired');
|
||||
}
|
||||
}()),
|
||||
|
||||
syncStatus(Provider.of<GradeProvider>(context, listen: false).fetch()),
|
||||
syncStatus(Provider.of<TimetableProvider>(context, listen: false)
|
||||
.fetch(week: Week.current())),
|
||||
|
||||
@@ -67,6 +67,7 @@ const usersDB = DatabaseStruct("users", {
|
||||
"institute_code": String, "student": String, "role": int,
|
||||
"nickname": String, "picture": String, // premium only (it's now plus btw)
|
||||
"grade_streak": int,
|
||||
"access_token": String, "access_token_expire": String,
|
||||
"refresh_token": String,
|
||||
});
|
||||
const userDataDB = DatabaseStruct("user_data", {
|
||||
@@ -141,6 +142,8 @@ Future<Database> initDB(DatabaseProvider database) async {
|
||||
"nickname": "",
|
||||
"picture": "",
|
||||
"grade_streak": 0,
|
||||
"access_token": "",
|
||||
"access_token_expire": "",
|
||||
"refresh_token": "",
|
||||
},
|
||||
);
|
||||
|
||||
@@ -18,6 +18,8 @@ class User {
|
||||
String picture;
|
||||
int gradeStreak;
|
||||
// new login method
|
||||
String accessToken;
|
||||
DateTime accessTokenExpire;
|
||||
String refreshToken;
|
||||
|
||||
String get displayName => nickname != '' ? nickname : name;
|
||||
@@ -34,6 +36,8 @@ class User {
|
||||
this.nickname = "",
|
||||
this.picture = "",
|
||||
this.gradeStreak = 0,
|
||||
required this.accessToken,
|
||||
required this.accessTokenExpire,
|
||||
required this.refreshToken,
|
||||
}) {
|
||||
if (id != null) {
|
||||
@@ -65,6 +69,9 @@ class User {
|
||||
nickname: map["nickname"] ?? "",
|
||||
picture: map["picture"] ?? "",
|
||||
gradeStreak: map["grade_streak"] ?? 0,
|
||||
accessToken: map["access_token"] ?? "",
|
||||
accessTokenExpire: DateTime.parse(
|
||||
map["access_token_expire"] ?? DateTime.now().toIso8601String()),
|
||||
refreshToken: map["refresh_token"] ?? "",
|
||||
);
|
||||
}
|
||||
@@ -81,6 +88,8 @@ class User {
|
||||
"nickname": nickname,
|
||||
"picture": picture,
|
||||
"grade_streak": gradeStreak,
|
||||
"access_token": accessToken,
|
||||
"access_token_expire": accessTokenExpire.toIso8601String(),
|
||||
"refresh_token": refreshToken,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ dependencies:
|
||||
# ref: master
|
||||
path_provider: ^2.0.2
|
||||
permission_handler: ^11.0.1
|
||||
share_plus: ^9.0.0
|
||||
share_plus: ^10.0.3
|
||||
connectivity_plus: ^6.0.3
|
||||
flutter_displaymode: ^0.6.0
|
||||
quick_actions: ^1.0.1
|
||||
|
||||
Reference in New Issue
Block a user