refactored timetable
This commit is contained in:
@@ -14,11 +14,23 @@ class Authenticate extends WebuntisApi {
|
||||
@override
|
||||
Future<AuthenticateResponse> run() async {
|
||||
awaitingResponse = true;
|
||||
var rawAnswer = await query(this);
|
||||
AuthenticateResponse response = finalize(AuthenticateResponse.fromJson(jsonDecode(rawAnswer)['result']));
|
||||
_lastResponse = response;
|
||||
if(!awaitedResponse.isCompleted) awaitedResponse.complete();
|
||||
return response;
|
||||
try {
|
||||
var rawAnswer = await query(this);
|
||||
AuthenticateResponse response = finalize(AuthenticateResponse.fromJson(jsonDecode(rawAnswer)['result']));
|
||||
_lastResponse = response;
|
||||
if(!awaitedResponse.isCompleted) awaitedResponse.complete();
|
||||
return response;
|
||||
} catch (e) {
|
||||
// Surface the error to anyone waiting on the current completer, then
|
||||
// install a fresh one so a future attempt can succeed. Without this,
|
||||
// any later call to getSession() would hang forever on a completer
|
||||
// that is already settled with no listeners (or never settles at all).
|
||||
if(!awaitedResponse.isCompleted) awaitedResponse.completeError(e);
|
||||
awaitedResponse = Completer();
|
||||
rethrow;
|
||||
} finally {
|
||||
awaitingResponse = false;
|
||||
}
|
||||
}
|
||||
|
||||
static bool awaitingResponse = false;
|
||||
|
||||
Reference in New Issue
Block a user