diff --git a/lib/pangea/chat_settings/pages/pangea_chat_details.dart b/lib/pangea/chat_settings/pages/pangea_chat_details.dart index 8559eae19..32ced6fcf 100644 --- a/lib/pangea/chat_settings/pages/pangea_chat_details.dart +++ b/lib/pangea/chat_settings/pages/pangea_chat_details.dart @@ -1,3 +1,4 @@ +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:adaptive_dialog/adaptive_dialog.dart'; @@ -337,7 +338,7 @@ class PangeaChatDetailsView extends StatelessWidget { room: room, controller: controller, ), - if (room.isSpace && room.isRoomAdmin) + if (room.isSpace && room.isRoomAdmin && kIsWeb) DownloadAnalyticsButton(space: room), Divider(color: theme.dividerColor, height: 1), if (isGroupChat) diff --git a/lib/pangea/events/event_wrappers/pangea_message_event.dart b/lib/pangea/events/event_wrappers/pangea_message_event.dart index 5851ef2a5..cf5288cba 100644 --- a/lib/pangea/events/event_wrappers/pangea_message_event.dart +++ b/lib/pangea/events/event_wrappers/pangea_message_event.dart @@ -569,37 +569,22 @@ class PangeaMessageEvent { } final eligibleTokens = messageDisplayRepresentation!.tokens!.where( - (token) => token.shouldDoActivity( + (token) => token.isActivityBasicallyEligible( + ActivityTypeEnum.wordMeaning, + ), + ); + + if (eligibleTokens.isEmpty) return 1; + + final alreadyDid = eligibleTokens.where( + (token) => !token.shouldDoActivity( a: ActivityTypeEnum.wordMeaning, feature: null, tag: null, ), ); - final int total = eligibleTokens.length; - if (total == 0) return 1; - - final didActivity = eligibleTokens.where( - (token) => token.didActivitySuccessfully(ActivityTypeEnum.wordMeaning), - ); - - final double proportion = 1 - ((total - didActivity.length) / total); - - if (proportion < 0) { - debugger(when: kDebugMode); - ErrorHandler.logError( - m: "proportion of activities completed is less than 0", - data: { - "proportion": proportion, - "total": total, - "toDo": didActivity, - "tokens": messageDisplayRepresentation!.tokens, - }, - ); - return 0; - } - - return proportion; + return alreadyDid.length / eligibleTokens.length; } String? get l2Code => diff --git a/lib/pangea/events/models/pangea_token_model.dart b/lib/pangea/events/models/pangea_token_model.dart index b222b6f40..51c434638 100644 --- a/lib/pangea/events/models/pangea_token_model.dart +++ b/lib/pangea/events/models/pangea_token_model.dart @@ -211,7 +211,7 @@ class PangeaToken { ); } - bool _isActivityBasicallyEligible( + bool isActivityBasicallyEligible( ActivityTypeEnum a, [ String? morphFeature, String? morphTag, @@ -421,7 +421,7 @@ class PangeaToken { required String? feature, required String? tag, }) { - return _isActivityBasicallyEligible(a, feature, tag) && + return isActivityBasicallyEligible(a, feature, tag) && _isActivityProbablyLevelAppropriate(a, feature, tag); } diff --git a/lib/pangea/toolbar/widgets/word_zoom/lemma_meaning_widget.dart b/lib/pangea/toolbar/widgets/word_zoom/lemma_meaning_widget.dart index 91ab281a8..756a7d968 100644 --- a/lib/pangea/toolbar/widgets/word_zoom/lemma_meaning_widget.dart +++ b/lib/pangea/toolbar/widgets/word_zoom/lemma_meaning_widget.dart @@ -75,20 +75,8 @@ class LemmaMeaningWidgetState extends State { return FutureBuilder( future: _lemmaMeaning(), builder: (context, snapshot) { - if (snapshot.connectionState != ConnectionState.done) { - return const TextLoadingShimmer(); - } - - if (snapshot.hasError || snapshot.data == null) { - debugger(when: kDebugMode); - return Text( - snapshot.error.toString(), - textAlign: TextAlign.center, - ); - } - if (_editMode) { - _controller.text = snapshot.data!.meaning; + _controller.text = snapshot.data?.meaning ?? ""; return Expanded( child: Column( mainAxisSize: MainAxisSize.min, @@ -105,7 +93,6 @@ class LemmaMeaningWidgetState extends State { minLines: 1, maxLines: 3, controller: _controller, - onSubmitted: editLemmaMeaning, decoration: InputDecoration( hintText: snapshot.data!.meaning, ), @@ -147,6 +134,18 @@ class LemmaMeaningWidgetState extends State { ); } + if (snapshot.connectionState != ConnectionState.done) { + return const TextLoadingShimmer(); + } + + if (snapshot.hasError || snapshot.data == null) { + debugger(when: kDebugMode); + return Text( + snapshot.error.toString(), + textAlign: TextAlign.center, + ); + } + return Flexible( child: GestureDetector( onLongPress: () => _toggleEditMode(true),