Change if-elseif to case switch for test schools
This commit is contained in:
parent
14bcb62184
commit
a805d8292f
@ -83,108 +83,114 @@ Future loginAPI({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if institute matches one of test things do test login
|
// if institute matches one of test things do test login
|
||||||
if (instituteCode == 'refilc-test-sweden') {
|
switch (instituteCode) {
|
||||||
School school = School(
|
// by using a switch statement we are saving a whopping 0.0000001 seconds
|
||||||
city: "Stockholm",
|
// (actually it just makes it easier to add more test schools later on)
|
||||||
instituteCode: "refilc-test-sweden",
|
case 'refilc-test-sweden':
|
||||||
name: "reFilc Test SE - Leo Ekström High School",
|
School school = School(
|
||||||
);
|
city: "Stockholm",
|
||||||
|
instituteCode: "refilc-test-sweden",
|
||||||
|
name: "reFilc Test SE - Leo Ekström High School",
|
||||||
|
);
|
||||||
|
|
||||||
await testLogin(school);
|
await testLogin(school);
|
||||||
} else if (instituteCode == 'refilc-test-spain') {
|
break;
|
||||||
School school = School(
|
case 'refilc-test-spain':
|
||||||
city: "Madrid",
|
School school = School(
|
||||||
instituteCode: "refilc-test-spain",
|
city: "Madrid",
|
||||||
name: "reFilc Test ES - Emilio Obrero University",
|
instituteCode: "refilc-test-spain",
|
||||||
);
|
name: "reFilc Test ES - Emilio Obrero University",
|
||||||
|
);
|
||||||
|
|
||||||
await testLogin(school);
|
await testLogin(school);
|
||||||
} else {
|
break;
|
||||||
// normal login from here
|
default:
|
||||||
Provider.of<KretaClient>(context, listen: false).userAgent =
|
// normal login from here
|
||||||
Provider.of<SettingsProvider>(context, listen: false).config.userAgent;
|
Provider.of<KretaClient>(context, listen: false).userAgent =
|
||||||
|
Provider.of<SettingsProvider>(context, listen: false).config.userAgent;
|
||||||
|
|
||||||
Map<String, String> headers = {
|
Map<String, String> headers = {
|
||||||
"content-type": "application/x-www-form-urlencoded",
|
"content-type": "application/x-www-form-urlencoded",
|
||||||
};
|
};
|
||||||
|
|
||||||
String nonceStr = await Provider.of<KretaClient>(context, listen: false)
|
String nonceStr = await Provider.of<KretaClient>(context, listen: false)
|
||||||
.getAPI(KretaAPI.nonce, json: false);
|
.getAPI(KretaAPI.nonce, json: false);
|
||||||
|
|
||||||
Nonce nonce = getNonce(nonceStr, username, instituteCode);
|
Nonce nonce = getNonce(nonceStr, username, instituteCode);
|
||||||
headers.addAll(nonce.header());
|
headers.addAll(nonce.header());
|
||||||
|
|
||||||
Map? res = await Provider.of<KretaClient>(context, listen: false)
|
Map? res = await Provider.of<KretaClient>(context, listen: false)
|
||||||
.postAPI(KretaAPI.login,
|
.postAPI(KretaAPI.login,
|
||||||
headers: headers,
|
headers: headers,
|
||||||
body: User.loginBody(
|
body: User.loginBody(
|
||||||
username: username,
|
username: username,
|
||||||
password: password,
|
password: password,
|
||||||
instituteCode: instituteCode,
|
instituteCode: instituteCode,
|
||||||
));
|
));
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
if (res.containsKey("error")) {
|
if (res.containsKey("error")) {
|
||||||
if (res["error"] == "invalid_grant") {
|
if (res["error"] == "invalid_grant") {
|
||||||
return LoginState.invalidGrant;
|
return LoginState.invalidGrant;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (res.containsKey("access_token")) {
|
if (res.containsKey("access_token")) {
|
||||||
try {
|
|
||||||
Provider.of<KretaClient>(context, listen: false).accessToken =
|
|
||||||
res["access_token"];
|
|
||||||
Map? studentJson =
|
|
||||||
await Provider.of<KretaClient>(context, listen: false)
|
|
||||||
.getAPI(KretaAPI.student(instituteCode));
|
|
||||||
Student student = Student.fromJson(studentJson!);
|
|
||||||
var user = User(
|
|
||||||
username: username,
|
|
||||||
password: password,
|
|
||||||
instituteCode: instituteCode,
|
|
||||||
name: student.name,
|
|
||||||
student: student,
|
|
||||||
role: JwtUtils.getRoleFromJWT(res["access_token"])!,
|
|
||||||
);
|
|
||||||
|
|
||||||
if (onLogin != null) onLogin(user);
|
|
||||||
|
|
||||||
// Store User in the database
|
|
||||||
await Provider.of<DatabaseProvider>(context, listen: false)
|
|
||||||
.store
|
|
||||||
.storeUser(user);
|
|
||||||
Provider.of<UserProvider>(context, listen: false).addUser(user);
|
|
||||||
Provider.of<UserProvider>(context, listen: false).setUser(user.id);
|
|
||||||
|
|
||||||
// Get user data
|
|
||||||
try {
|
try {
|
||||||
await Future.wait([
|
Provider.of<KretaClient>(context, listen: false).accessToken =
|
||||||
Provider.of<GradeProvider>(context, listen: false).fetch(),
|
res["access_token"];
|
||||||
Provider.of<TimetableProvider>(context, listen: false)
|
Map? studentJson =
|
||||||
.fetch(week: Week.current()),
|
await Provider.of<KretaClient>(context, listen: false)
|
||||||
Provider.of<ExamProvider>(context, listen: false).fetch(),
|
.getAPI(KretaAPI.student(instituteCode));
|
||||||
Provider.of<HomeworkProvider>(context, listen: false).fetch(),
|
Student student = Student.fromJson(studentJson!);
|
||||||
Provider.of<MessageProvider>(context, listen: false).fetchAll(),
|
var user = User(
|
||||||
Provider.of<MessageProvider>(context, listen: false)
|
username: username,
|
||||||
.fetchAllRecipients(),
|
password: password,
|
||||||
Provider.of<NoteProvider>(context, listen: false).fetch(),
|
instituteCode: instituteCode,
|
||||||
Provider.of<EventProvider>(context, listen: false).fetch(),
|
name: student.name,
|
||||||
Provider.of<AbsenceProvider>(context, listen: false).fetch(),
|
student: student,
|
||||||
]);
|
role: JwtUtils.getRoleFromJWT(res["access_token"])!,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (onLogin != null) onLogin(user);
|
||||||
|
|
||||||
|
// Store User in the database
|
||||||
|
await Provider.of<DatabaseProvider>(context, listen: false)
|
||||||
|
.store
|
||||||
|
.storeUser(user);
|
||||||
|
Provider.of<UserProvider>(context, listen: false).addUser(user);
|
||||||
|
Provider.of<UserProvider>(context, listen: false).setUser(user.id);
|
||||||
|
|
||||||
|
// Get user data
|
||||||
|
try {
|
||||||
|
await Future.wait([
|
||||||
|
Provider.of<GradeProvider>(context, listen: false).fetch(),
|
||||||
|
Provider.of<TimetableProvider>(context, listen: false)
|
||||||
|
.fetch(week: Week.current()),
|
||||||
|
Provider.of<ExamProvider>(context, listen: false).fetch(),
|
||||||
|
Provider.of<HomeworkProvider>(context, listen: false).fetch(),
|
||||||
|
Provider.of<MessageProvider>(context, listen: false).fetchAll(),
|
||||||
|
Provider.of<MessageProvider>(context, listen: false)
|
||||||
|
.fetchAllRecipients(),
|
||||||
|
Provider.of<NoteProvider>(context, listen: false).fetch(),
|
||||||
|
Provider.of<EventProvider>(context, listen: false).fetch(),
|
||||||
|
Provider.of<AbsenceProvider>(context, listen: false).fetch(),
|
||||||
|
]);
|
||||||
|
} catch (error) {
|
||||||
|
print("WARNING: failed to fetch user data: $error");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (onSuccess != null) onSuccess();
|
||||||
|
|
||||||
|
return LoginState.success;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
print("WARNING: failed to fetch user data: $error");
|
print("ERROR: loginAPI: $error");
|
||||||
|
// maybe check debug mode
|
||||||
|
// ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("ERROR: $error")));
|
||||||
|
return LoginState.failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (onSuccess != null) onSuccess();
|
|
||||||
|
|
||||||
return LoginState.success;
|
|
||||||
} catch (error) {
|
|
||||||
print("ERROR: loginAPI: $error");
|
|
||||||
// maybe check debug mode
|
|
||||||
// ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("ERROR: $error")));
|
|
||||||
return LoginState.failed;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return LoginState.failed;
|
return LoginState.failed;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user