Skip to content

Commit 75a0d1e

Browse files
authored
feat: allow users to edit lemmas (#1694)
1 parent b0149ec commit 75a0d1e

File tree

19 files changed

+381
-399
lines changed

19 files changed

+381
-399
lines changed

assets/l10n/intl_en.arb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4814,5 +4814,6 @@
48144814
"appWantsToUseForLoginDescription": "You hereby allow the app and website to share information about you.",
48154815
"open": "Open",
48164816
"waitingForServer": "Waiting for server...",
4817-
"appIntroduction": "FluffyChat lets you chat with your friends across different messengers. Learn more at https://matrix.org or just tap *Continue*."
4817+
"appIntroduction": "FluffyChat lets you chat with your friends across different messengers. Learn more at https://matrix.org or just tap *Continue*.",
4818+
"whatIsLemma": "What is the lemma?"
48184819
}

lib/pages/chat/chat.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1772,7 +1772,7 @@ class ChatController extends State<ChatPageWithRoom>
17721772
overlayEntry = MessageSelectionOverlay(
17731773
chatController: this,
17741774
event: event,
1775-
pangeaMessageEvent: pangeaMessageEvent,
1775+
timeline: timeline!,
17761776
initialSelectedToken: selectedToken,
17771777
nextEvent: nextEvent,
17781778
prevEvent: prevEvent,

lib/pangea/analytics_details_popup/morph_analytics_view.dart

Lines changed: 36 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,68 @@
1+
import 'package:flutter/material.dart';
2+
13
import 'package:collection/collection.dart';
4+
import 'package:flutter_gen/gen_l10n/l10n.dart';
5+
26
import 'package:fluffychat/config/app_config.dart';
37
import 'package:fluffychat/pangea/analytics_misc/construct_identifier.dart';
48
import 'package:fluffychat/pangea/analytics_misc/construct_level_enum.dart';
59
import 'package:fluffychat/pangea/analytics_misc/construct_type_enum.dart';
610
import 'package:fluffychat/pangea/analytics_misc/construct_use_model.dart';
11+
import 'package:fluffychat/pangea/morphs/default_morph_mapping.dart';
712
import 'package:fluffychat/pangea/morphs/get_grammar_copy.dart';
813
import 'package:fluffychat/pangea/morphs/morph_icon.dart';
9-
import 'package:fluffychat/pangea/morphs/morph_models.dart';
1014
import 'package:fluffychat/pangea/user/client_extension.dart';
1115
import 'package:fluffychat/widgets/matrix.dart';
12-
import 'package:flutter/material.dart';
13-
import 'package:flutter_gen/gen_l10n/l10n.dart';
14-
1516
import '../morphs/morph_repo.dart';
1617

1718
class MorphAnalyticsView extends StatelessWidget {
1819
const MorphAnalyticsView({
1920
super.key,
2021
});
2122

22-
List<MorphFeature> get availableFeatures => MorphsRepo.get().displayFeatures;
23-
2423
@override
2524
Widget build(BuildContext context) => Padding(
2625
padding: const EdgeInsets.symmetric(vertical: 20),
27-
child: ListView.builder(
28-
itemCount: availableFeatures.length,
29-
itemBuilder: (context, index) =>
30-
availableFeatures[index].displayTags.isNotEmpty
31-
? MorphFeatureBox(
32-
morphFeature: availableFeatures[index].feature,
33-
)
34-
: const SizedBox.shrink(),
26+
child: FutureBuilder(
27+
future: MorphsRepo.get(),
28+
builder: (context, snapshot) {
29+
final morphs = snapshot.data ?? defaultMorphMapping;
30+
31+
return snapshot.connectionState == ConnectionState.done
32+
? ListView.builder(
33+
itemCount: morphs.displayFeatures.length,
34+
itemBuilder: (context, index) => morphs
35+
.displayFeatures[index].displayTags.isNotEmpty
36+
? MorphFeatureBox(
37+
morphFeature: morphs.displayFeatures[index].feature,
38+
allTags: snapshot.data
39+
?.getDisplayTags(
40+
morphs.displayFeatures[index].feature,
41+
)
42+
.map((tag) => tag.toLowerCase())
43+
.toSet() ??
44+
{},
45+
)
46+
: const SizedBox.shrink(),
47+
)
48+
: const Center(
49+
child: CircularProgressIndicator(),
50+
);
51+
},
3552
),
3653
);
3754
}
3855

3956
class MorphFeatureBox extends StatelessWidget {
4057
final String morphFeature;
58+
final Set<String> allTags;
4159

4260
const MorphFeatureBox({
4361
super.key,
4462
required this.morphFeature,
63+
required this.allTags,
4564
});
4665

47-
// get constructData => MatrixState.pangeaController.
48-
4966
String _categoryCopy(
5067
String category,
5168
BuildContext context,
@@ -61,11 +78,6 @@ class MorphFeatureBox extends StatelessWidget {
6178
category;
6279
}
6380

64-
Set<String> get allTags => MorphsRepo.get()
65-
.getDisplayTags(morphFeature)
66-
.map((tag) => tag.toLowerCase())
67-
.toSet();
68-
6981
@override
7082
Widget build(BuildContext context) {
7183
final theme = Theme.of(context);
@@ -133,7 +145,9 @@ class MorphFeatureBox extends StatelessWidget {
133145
),
134146
),
135147
)
136-
.sortedBy<num>((chip) => chip.constructAnalytics.points)
148+
.sortedBy<num>(
149+
(chip) => chip.constructAnalytics.points,
150+
)
137151
.reversed
138152
.toList(),
139153
),

lib/pangea/analytics_misc/constructs_model.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import 'package:matrix/matrix.dart';
77
import 'package:fluffychat/pangea/analytics_misc/construct_identifier.dart';
88
import 'package:fluffychat/pangea/analytics_misc/construct_use_type_enum.dart';
99
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
10+
import 'package:fluffychat/pangea/morphs/default_morph_mapping.dart';
1011
import 'package:fluffychat/pangea/morphs/morph_models.dart';
11-
import '../morphs/morph_repo.dart';
1212
import 'construct_type_enum.dart';
1313

1414
class ConstructAnalyticsModel {
@@ -155,7 +155,7 @@ class OneConstructUse {
155155
return category ?? "Other";
156156
}
157157

158-
final MorphFeatuuresAndTags morphs = MorphsRepo.get();
158+
final MorphFeaturesAndTags morphs = defaultMorphMapping;
159159

160160
if (categoryEntry == null) {
161161
return morphs.guessMorphCategory(json["lemma"]);

lib/pangea/common/constants/model_keys.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ class ModelKey {
9292
/// something built in to matrix? should talk about this
9393
static const String messageTags = "p.tag";
9494
static const String messageTagMorphEdit = "morph_edit";
95+
static const String messageTagLemmaEdit = "lemma_edit";
9596
static const String messageTagActivityPlan = "activity_plan";
9697

9798
static const String baseDefinition = "base_definition";

lib/pangea/lemmas/lemma.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/// Represents a lemma object
22
class Lemma {
33
/// [text] ex "ir" - text of the lemma of the word
4-
final String text;
4+
String text;
55

66
/// [form] ex "vamos" - conjugated form of the lemma and as it appeared in some original text
77
final String form;

lib/pangea/morphs/default_morph_mapping.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'package:fluffychat/pangea/morphs/morph_models.dart';
22

3-
final MorphFeatuuresAndTags defaultMorphMapping =
4-
MorphFeatuuresAndTags.fromJson({
3+
final MorphFeaturesAndTags defaultMorphMapping = MorphFeaturesAndTags.fromJson({
54
"language_code": "default",
65
"features": [
76
{

lib/pangea/morphs/default_ud_mapping.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:fluffychat/pangea/morphs/morph_models.dart';
22

3-
final MorphFeatuuresAndTags defaultUDMapping = MorphFeatuuresAndTags.fromJson({
3+
final MorphFeaturesAndTags defaultUDMapping = MorphFeaturesAndTags.fromJson({
44
"language_code": "default",
55
"features": [
66
{

0 commit comments

Comments
 (0)