clear out analytics stream on dispose to prevent carry over across login sessions

This commit is contained in:
ggurdin 2024-08-23 14:19:59 -04:00
parent 3ce03ecc2f
commit 6d4efea322
No known key found for this signature in database
GPG key ID: A01CB41737CBB478
2 changed files with 23 additions and 15 deletions

View file

@ -59,6 +59,8 @@ class GetAnalyticsController {
_analyticsUpdateSubscription?.cancel();
_analyticsUpdateSubscription = null;
_cache.clear();
analyticsStream.add([]);
prevXP = null;
}
Future<void> onAnalyticsUpdate(AnalyticsUpdateType type) async {
@ -77,7 +79,7 @@ class GetAnalyticsController {
}
// set the previous XP to the currentXP
if (analyticsStream.value != null) {
if (analyticsStream.value != null && analyticsStream.value!.isNotEmpty) {
prevXP = calcXP(analyticsStream.value!);
}

View file

@ -7,7 +7,6 @@ import 'package:fluffychat/pangea/enum/construct_type_enum.dart';
import 'package:fluffychat/pangea/enum/progress_indicators_enum.dart';
import 'package:fluffychat/pangea/models/analytics/construct_list_model.dart';
import 'package:fluffychat/pangea/models/analytics/constructs_model.dart';
import 'package:fluffychat/pangea/widgets/animations/gain_points.dart';
import 'package:fluffychat/pangea/widgets/animations/progress_bar/progress_bar.dart';
import 'package:fluffychat/pangea/widgets/animations/progress_bar/progress_bar_details.dart';
import 'package:fluffychat/pangea/widgets/chat_list/analytics_summary/progress_indicator.dart';
@ -50,9 +49,19 @@ class LearningProgressIndicatorsState
bool loading = true;
int get serverXP => _pangeaController.analytics.serverXP;
int get totalXP => _pangeaController.analytics.currentXP;
int get level => _pangeaController.analytics.level;
// Some buggy stuff is happening with this data not being updated at login, so switching
// to stateful variables for now. Will switch this back later when I have more time to
// figure out why it's now working.
// int get serverXP => _pangeaController.analytics.serverXP;
// int get totalXP => _pangeaController.analytics.currentXP;
// int get level => _pangeaController.analytics.level;
List<OneConstructUse> currentConstructs = [];
int get currentXP => _pangeaController.analytics.calcXP(currentConstructs);
int get localXP => _pangeaController.analytics.calcXP(
_pangeaController.analytics.locallyCachedConstructs,
);
int get serverXP => currentXP - localXP;
int get level => currentXP ~/ AnalyticsConstants.xpPerLevel;
@override
void initState() {
@ -60,7 +69,8 @@ class LearningProgressIndicatorsState
updateAnalyticsData(
_pangeaController.analytics.analyticsStream.value ?? [],
);
_pangeaController.analytics.analyticsStream.stream
_analyticsUpdateSubscription = _pangeaController
.analytics.analyticsStream.stream
.listen(updateAnalyticsData);
}
@ -86,6 +96,7 @@ class LearningProgressIndicatorsState
uses: constructs,
);
currentConstructs = constructs;
if (loading) loading = false;
if (mounted) setState(() {});
}
@ -105,11 +116,6 @@ class LearningProgressIndicatorsState
}
double get levelBarWidth => FluffyThemes.columnWidth - (32 * 2) - 25;
double get pointsBarWidth {
final percent = (totalXP % AnalyticsConstants.xpPerLevel) /
AnalyticsConstants.xpPerLevel;
return levelBarWidth * percent;
}
Color levelColor(int level) {
final colors = [
@ -133,7 +139,7 @@ class LearningProgressIndicatorsState
levelBars: [
LevelBarDetails(
fillColor: const Color.fromARGB(255, 0, 190, 83),
currentPoints: totalXP,
currentPoints: currentXP,
),
LevelBarDetails(
fillColor: Theme.of(context).colorScheme.primary,
@ -171,9 +177,9 @@ class LearningProgressIndicatorsState
return Stack(
alignment: Alignment.topCenter,
children: [
const Positioned(
child: PointsGainedAnimation(),
),
// const Positioned(
// child: PointsGainedAnimation(),
// ),
Column(
mainAxisSize: MainAxisSize.min,
children: [