fluffychat/lib/pangea/analytics/repo/lemma_info_request.dart
wcjord 77c4f711b0
feat(lemma meaning activity): widen distractor range, reduce lemmas w… (#1469)
* feat(lemma meaning activity): widen distractor range, reduce lemmas where meaning activity required

* feat(lemma meaning activities): make distractor lemmas have same pos

* dev(lemma meaning repo): use local storage instead of in-memory cache

* fix(lemma meaning activity): explicitly prevent the same meanings in distractors

* fix: dart formatting, deleted empty files

---------

Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com>
Co-authored-by: ggurdin <ggurdin@gmail.com>
2025-01-16 10:47:31 -05:00

47 lines
1.2 KiB
Dart

import 'package:fluffychat/pangea/analytics/repo/lemma_info_response.dart';
import 'package:fluffychat/pangea/events/models/content_feedback.dart';
class LemmaInfoRequest {
final String lemma;
final String partOfSpeech;
final String lemmaLang;
final String userL1;
ContentFeedback<LemmaInfoResponse>? feedback;
LemmaInfoRequest({
required String partOfSpeech,
required String lemmaLang,
required this.userL1,
required this.lemma,
this.feedback,
}) : partOfSpeech = partOfSpeech.toLowerCase(),
lemmaLang = lemmaLang.toLowerCase();
Map<String, dynamic> toJson() {
return {
'lemma': lemma,
'part_of_speech': partOfSpeech,
'lemma_lang': lemmaLang,
'user_l1': userL1,
'feedback': feedback?.toJson(),
};
}
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is LemmaInfoRequest &&
runtimeType == other.runtimeType &&
lemma == other.lemma &&
partOfSpeech == other.partOfSpeech &&
feedback == other.feedback;
@override
int get hashCode =>
lemma.hashCode ^ partOfSpeech.hashCode ^ feedback.hashCode;
String get storageKey {
return 'l:$lemma,p:$partOfSpeech,lang:$lemmaLang,l1:$userL1';
}
}