From 614f83ad29c606e48a29549cf03d0d54a34ffabd Mon Sep 17 00:00:00 2001 From: Gabby Gurdin Date: Thu, 18 Apr 2024 15:18:35 -0400 Subject: [PATCH] cache pangea reps so direct translation is not called multiple times, don't translate names of audio message files --- .../controllers/message_data_controller.dart | 45 ++++++++++++++++++- .../utils/get_chat_list_item_subtitle.dart | 1 + 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/lib/pangea/controllers/message_data_controller.dart b/lib/pangea/controllers/message_data_controller.dart index b0759b108..e22791969 100644 --- a/lib/pangea/controllers/message_data_controller.dart +++ b/lib/pangea/controllers/message_data_controller.dart @@ -18,8 +18,7 @@ class MessageDataController extends BaseController { late PangeaController _pangeaController; final List _cache = []; - - final Map _messageDataToSave = {}; + final List _representationCache = []; MessageDataController(PangeaController pangeaController) { _pangeaController = pangeaController; @@ -31,6 +30,14 @@ class MessageDataController extends BaseController { e.parentId == parentId && e.type == type && e.langCode == langCode, ); + RepresentationCacheItem? getRepresentationCacheItem( + String parentId, + String langCode, + ) => + _representationCache.firstWhereOrNull( + (e) => e.parentId == parentId && e.langCode == langCode, + ); + Future _getTokens( TokensRequestModel req, ) async { @@ -141,6 +148,32 @@ class MessageDataController extends BaseController { required String? source, required String target, required Room room, + }) async { + final RepresentationCacheItem? item = + getRepresentationCacheItem(text, target); + if (item != null) return item.data; + + _representationCache.add( + RepresentationCacheItem( + text, + target, + _getPangeaRepresentation( + text: text, + source: source, + target: target, + room: room, + ), + ), + ); + + return _representationCache.last.data; + } + + Future _getPangeaRepresentation({ + required String text, + required String? source, + required String target, + required Room room, }) async { final req = FullTextTranslationRequestModel( text: text, @@ -235,3 +268,11 @@ class CacheItem { CacheItem(this.parentId, this.type, this.langCode, this.data); } + +class RepresentationCacheItem { + String parentId; + String langCode; + Future data; + + RepresentationCacheItem(this.parentId, this.langCode, this.data); +} diff --git a/lib/pangea/utils/get_chat_list_item_subtitle.dart b/lib/pangea/utils/get_chat_list_item_subtitle.dart index cddf31435..e5b1388a9 100644 --- a/lib/pangea/utils/get_chat_list_item_subtitle.dart +++ b/lib/pangea/utils/get_chat_list_item_subtitle.dart @@ -43,6 +43,7 @@ class GetChatListItemSubtitle { } if (event.type != EventTypes.Message || + event.messageType != MessageTypes.Text || !pangeaController.permissionsController .isToolEnabled(ToolSetting.immersionMode, event.room)) { return event.calcLocalizedBody(