Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: allow users to edit lemmas #1694

Merged
merged 1 commit into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion assets/l10n/intl_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -4814,5 +4814,6 @@
"appWantsToUseForLoginDescription": "You hereby allow the app and website to share information about you.",
"open": "Open",
"waitingForServer": "Waiting for server...",
"appIntroduction": "FluffyChat lets you chat with your friends across different messengers. Learn more at https://matrix.org or just tap *Continue*."
"appIntroduction": "FluffyChat lets you chat with your friends across different messengers. Learn more at https://matrix.org or just tap *Continue*.",
"whatIsLemma": "What is the lemma?"
}
2 changes: 1 addition & 1 deletion lib/pages/chat/chat.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1772,7 +1772,7 @@ class ChatController extends State<ChatPageWithRoom>
overlayEntry = MessageSelectionOverlay(
chatController: this,
event: event,
pangeaMessageEvent: pangeaMessageEvent,
timeline: timeline!,
initialSelectedToken: selectedToken,
nextEvent: nextEvent,
prevEvent: prevEvent,
Expand Down
58 changes: 36 additions & 22 deletions lib/pangea/analytics_details_popup/morph_analytics_view.dart
Original file line number Diff line number Diff line change
@@ -1,51 +1,68 @@
import 'package:flutter/material.dart';

import 'package:collection/collection.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';

import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pangea/analytics_misc/construct_identifier.dart';
import 'package:fluffychat/pangea/analytics_misc/construct_level_enum.dart';
import 'package:fluffychat/pangea/analytics_misc/construct_type_enum.dart';
import 'package:fluffychat/pangea/analytics_misc/construct_use_model.dart';
import 'package:fluffychat/pangea/morphs/default_morph_mapping.dart';
import 'package:fluffychat/pangea/morphs/get_grammar_copy.dart';
import 'package:fluffychat/pangea/morphs/morph_icon.dart';
import 'package:fluffychat/pangea/morphs/morph_models.dart';
import 'package:fluffychat/pangea/user/client_extension.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';

import '../morphs/morph_repo.dart';

class MorphAnalyticsView extends StatelessWidget {
const MorphAnalyticsView({
super.key,
});

List<MorphFeature> get availableFeatures => MorphsRepo.get().displayFeatures;

@override
Widget build(BuildContext context) => Padding(
padding: const EdgeInsets.symmetric(vertical: 20),
child: ListView.builder(
itemCount: availableFeatures.length,
itemBuilder: (context, index) =>
availableFeatures[index].displayTags.isNotEmpty
? MorphFeatureBox(
morphFeature: availableFeatures[index].feature,
)
: const SizedBox.shrink(),
child: FutureBuilder(
future: MorphsRepo.get(),
builder: (context, snapshot) {
final morphs = snapshot.data ?? defaultMorphMapping;

return snapshot.connectionState == ConnectionState.done
? ListView.builder(
itemCount: morphs.displayFeatures.length,
itemBuilder: (context, index) => morphs
.displayFeatures[index].displayTags.isNotEmpty
? MorphFeatureBox(
morphFeature: morphs.displayFeatures[index].feature,
allTags: snapshot.data
?.getDisplayTags(
morphs.displayFeatures[index].feature,
)
.map((tag) => tag.toLowerCase())
.toSet() ??
{},
)
: const SizedBox.shrink(),
)
: const Center(
child: CircularProgressIndicator(),
);
},
),
);
}

class MorphFeatureBox extends StatelessWidget {
final String morphFeature;
final Set<String> allTags;

const MorphFeatureBox({
super.key,
required this.morphFeature,
required this.allTags,
});

// get constructData => MatrixState.pangeaController.

String _categoryCopy(
String category,
BuildContext context,
Expand All @@ -61,11 +78,6 @@ class MorphFeatureBox extends StatelessWidget {
category;
}

Set<String> get allTags => MorphsRepo.get()
.getDisplayTags(morphFeature)
.map((tag) => tag.toLowerCase())
.toSet();

@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
Expand Down Expand Up @@ -133,7 +145,9 @@ class MorphFeatureBox extends StatelessWidget {
),
),
)
.sortedBy<num>((chip) => chip.constructAnalytics.points)
.sortedBy<num>(
(chip) => chip.constructAnalytics.points,
)
.reversed
.toList(),
),
Expand Down
4 changes: 2 additions & 2 deletions lib/pangea/analytics_misc/constructs_model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import 'package:matrix/matrix.dart';
import 'package:fluffychat/pangea/analytics_misc/construct_identifier.dart';
import 'package:fluffychat/pangea/analytics_misc/construct_use_type_enum.dart';
import 'package:fluffychat/pangea/common/utils/error_handler.dart';
import 'package:fluffychat/pangea/morphs/default_morph_mapping.dart';
import 'package:fluffychat/pangea/morphs/morph_models.dart';
import '../morphs/morph_repo.dart';
import 'construct_type_enum.dart';

class ConstructAnalyticsModel {
Expand Down Expand Up @@ -155,7 +155,7 @@ class OneConstructUse {
return category ?? "Other";
}

final MorphFeatuuresAndTags morphs = MorphsRepo.get();
final MorphFeaturesAndTags morphs = defaultMorphMapping;

if (categoryEntry == null) {
return morphs.guessMorphCategory(json["lemma"]);
Expand Down
1 change: 1 addition & 0 deletions lib/pangea/common/constants/model_keys.dart
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ class ModelKey {
/// something built in to matrix? should talk about this
static const String messageTags = "p.tag";
static const String messageTagMorphEdit = "morph_edit";
static const String messageTagLemmaEdit = "lemma_edit";
static const String messageTagActivityPlan = "activity_plan";

static const String baseDefinition = "base_definition";
Expand Down
2 changes: 1 addition & 1 deletion lib/pangea/lemmas/lemma.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/// Represents a lemma object
class Lemma {
/// [text] ex "ir" - text of the lemma of the word
final String text;
String text;

/// [form] ex "vamos" - conjugated form of the lemma and as it appeared in some original text
final String form;
Expand Down
3 changes: 1 addition & 2 deletions lib/pangea/morphs/default_morph_mapping.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'package:fluffychat/pangea/morphs/morph_models.dart';

final MorphFeatuuresAndTags defaultMorphMapping =
MorphFeatuuresAndTags.fromJson({
final MorphFeaturesAndTags defaultMorphMapping = MorphFeaturesAndTags.fromJson({
"language_code": "default",
"features": [
{
Expand Down
2 changes: 1 addition & 1 deletion lib/pangea/morphs/default_ud_mapping.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:fluffychat/pangea/morphs/morph_models.dart';

final MorphFeatuuresAndTags defaultUDMapping = MorphFeatuuresAndTags.fromJson({
final MorphFeaturesAndTags defaultUDMapping = MorphFeaturesAndTags.fromJson({
"language_code": "default",
"features": [
{
Expand Down
Loading
Loading