if room lastEvent has hidden word activity, hide the hidden tokens in the chat list item subtitle (#1317)
This commit is contained in:
parent
60a3587c8f
commit
129c5a5a7a
1 changed files with 60 additions and 9 deletions
|
|
@ -2,8 +2,9 @@ import 'package:collection/collection.dart';
|
|||
import 'package:fluffychat/pangea/constants/language_constants.dart';
|
||||
import 'package:fluffychat/pangea/constants/model_keys.dart';
|
||||
import 'package:fluffychat/pangea/controllers/pangea_controller.dart';
|
||||
import 'package:fluffychat/pangea/enum/activity_type_enum.dart';
|
||||
import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dart';
|
||||
import 'package:fluffychat/pangea/models/space_model.dart';
|
||||
import 'package:fluffychat/pangea/models/pangea_token_model.dart';
|
||||
import 'package:fluffychat/pangea/utils/error_handler.dart';
|
||||
import 'package:flutter_gen/gen_l10n/l10n.dart';
|
||||
import 'package:matrix/matrix.dart';
|
||||
|
|
@ -24,6 +25,28 @@ class GetChatListItemSubtitle {
|
|||
event.type == EventTypes.SpaceChild ||
|
||||
event.type == EventTypes.SpaceParent;
|
||||
|
||||
String _constructTokens(
|
||||
List<PangeaToken> tokens,
|
||||
List<PangeaToken> hiddenTokens,
|
||||
) {
|
||||
String result = "";
|
||||
int currentPosition = 0;
|
||||
for (final token in tokens) {
|
||||
if (token.text.offset > currentPosition) {
|
||||
result += " " * (token.text.offset - currentPosition);
|
||||
currentPosition = token.text.offset;
|
||||
}
|
||||
|
||||
if (hiddenTokens.contains(token)) {
|
||||
result += "_" * token.text.length;
|
||||
} else {
|
||||
result += token.text.content;
|
||||
}
|
||||
currentPosition += token.text.length;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<String> getSubtitle(
|
||||
L10n l10n,
|
||||
Event? event,
|
||||
|
|
@ -51,9 +74,7 @@ class GetChatListItemSubtitle {
|
|||
if (!pangeaController.languageController.languagesSet ||
|
||||
event.redacted ||
|
||||
event.type != EventTypes.Message ||
|
||||
event.messageType != MessageTypes.Text ||
|
||||
!pangeaController.permissionsController
|
||||
.isToolEnabled(ToolSetting.immersionMode, event.room)) {
|
||||
event.messageType != MessageTypes.Text) {
|
||||
return event.calcLocalizedBody(
|
||||
MatrixLocals(l10n),
|
||||
hideReply: true,
|
||||
|
|
@ -68,18 +89,48 @@ class GetChatListItemSubtitle {
|
|||
final PangeaMessageEvent pangeaMessageEvent = PangeaMessageEvent(
|
||||
event: event,
|
||||
timeline: timeline,
|
||||
ownMessage: false,
|
||||
ownMessage: event.senderId == event.room.client.userID,
|
||||
);
|
||||
|
||||
final l2Code = pangeaController.languageController.activeL2Code();
|
||||
if (l2Code == null || l2Code == LanguageKeys.unknownLanguage) {
|
||||
return event.body;
|
||||
}
|
||||
|
||||
final String? text =
|
||||
(await pangeaMessageEvent.representationByLanguageGlobal(
|
||||
langCode: l2Code,
|
||||
))
|
||||
?.text;
|
||||
pangeaMessageEvent.messageDisplayRepresentation?.text;
|
||||
|
||||
final tokens =
|
||||
await pangeaMessageEvent.messageDisplayRepresentation?.tokensGlobal(
|
||||
event.senderId,
|
||||
event.originServerTs,
|
||||
);
|
||||
|
||||
if (tokens != null) {
|
||||
final analyticsEntry = pangeaController.getAnalytics.perMessage.get(
|
||||
tokens,
|
||||
pangeaMessageEvent,
|
||||
);
|
||||
|
||||
if (analyticsEntry?.nextActivity?.activityType ==
|
||||
ActivityTypeEnum.hiddenWordListening) {
|
||||
try {
|
||||
return _constructTokens(
|
||||
tokens,
|
||||
analyticsEntry!.nextActivity!.tokens,
|
||||
);
|
||||
} catch (err, s) {
|
||||
ErrorHandler.logError(
|
||||
e: err,
|
||||
s: s,
|
||||
data: {
|
||||
"tokens": tokens,
|
||||
"analyticsEntry": analyticsEntry,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final i18n = MatrixLocals(l10n);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue