fix: restrict when analytics practice session loss popup is shown (#5316)
This commit is contained in:
parent
7458f8f559
commit
1c6c2ee44a
1 changed files with 10 additions and 9 deletions
|
|
@ -58,7 +58,7 @@ class SessionLoader extends AsyncLoader<AnalyticsPracticeSessionModel> {
|
|||
}
|
||||
|
||||
class AnalyticsPractice extends StatefulWidget {
|
||||
static bool bypassExitConfirmation = false;
|
||||
static bool bypassExitConfirmation = true;
|
||||
|
||||
final ConstructTypeEnum type;
|
||||
const AnalyticsPractice({
|
||||
|
|
@ -189,18 +189,18 @@ class AnalyticsPracticeState extends State<AnalyticsPractice>
|
|||
String choiceTargetId(String choiceId) =>
|
||||
'${widget.type.name}-choice-card-${choiceId.replaceAll(' ', '_')}';
|
||||
|
||||
void _resetActivityState() {
|
||||
void _clearState() {
|
||||
activityState.value = const AsyncState.loading();
|
||||
activityTarget.value = null;
|
||||
enableChoicesNotifier.value = true;
|
||||
}
|
||||
|
||||
void _resetSessionState() {
|
||||
progressNotifier.value = 0.0;
|
||||
_queue.clear();
|
||||
_choiceTexts.clear();
|
||||
_choiceEmojis.clear();
|
||||
activityState.value = const AsyncState.idle();
|
||||
|
||||
AnalyticsPractice.bypassExitConfirmation = true;
|
||||
}
|
||||
|
||||
void updateElapsedTime(int seconds) {
|
||||
|
|
@ -227,8 +227,7 @@ class AnalyticsPracticeState extends State<AnalyticsPractice>
|
|||
|
||||
Future<void> _onLanguageUpdate() async {
|
||||
try {
|
||||
_resetActivityState();
|
||||
_resetSessionState();
|
||||
_clearState();
|
||||
await _analyticsService
|
||||
.updateDispatcher.constructUpdateStream.stream.first
|
||||
.timeout(const Duration(seconds: 10));
|
||||
|
|
@ -252,9 +251,7 @@ class AnalyticsPracticeState extends State<AnalyticsPractice>
|
|||
}
|
||||
|
||||
Future<void> reloadSession() async {
|
||||
_resetActivityState();
|
||||
_resetSessionState();
|
||||
|
||||
_clearState();
|
||||
_sessionLoader.reset();
|
||||
await _startSession();
|
||||
}
|
||||
|
|
@ -294,8 +291,10 @@ class AnalyticsPracticeState extends State<AnalyticsPractice>
|
|||
|
||||
final activity = await nextActivityCompleter.completer.future;
|
||||
activityState.value = AsyncState.loaded(activity);
|
||||
AnalyticsPractice.bypassExitConfirmation = false;
|
||||
}
|
||||
} catch (e) {
|
||||
AnalyticsPractice.bypassExitConfirmation = true;
|
||||
activityState.value = AsyncState.error(e);
|
||||
} finally {
|
||||
_continuing = false;
|
||||
|
|
@ -319,7 +318,9 @@ class AnalyticsPracticeState extends State<AnalyticsPractice>
|
|||
if (!mounted) return;
|
||||
|
||||
activityState.value = AsyncState.loaded(res);
|
||||
AnalyticsPractice.bypassExitConfirmation = false;
|
||||
} catch (e) {
|
||||
AnalyticsPractice.bypassExitConfirmation = true;
|
||||
if (!mounted) return;
|
||||
activityState.value = AsyncState.error(e);
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue