From f13d9cfc576f434c4c3b30ad26a8aad4f133c732 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Sun, 12 May 2024 19:48:38 +0300 Subject: DbEvent_GetTextW: fix to extract event's text correctly --- plugins/NewStory/src/history_array.cpp | 3 ++- src/mir_app/src/db_events.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/plugins/NewStory/src/history_array.cpp b/plugins/NewStory/src/history_array.cpp index b2268f81c2..580234ca0d 100644 --- a/plugins/NewStory/src/history_array.cpp +++ b/plugins/NewStory/src/history_array.cpp @@ -370,7 +370,8 @@ void ItemData::load(bool bLoadAlways) switch (dbe.eventType) { case EVENTTYPE_MESSAGE: pOwner->MarkRead(this); - __fallthrough; + wtext = DbEvent_GetTextW(&dbe); + break; case EVENTTYPE_STATUSCHANGE: wtext = mir_utf8decodeW((char *)dbe.pBlob); diff --git a/src/mir_app/src/db_events.cpp b/src/mir_app/src/db_events.cpp index 502c02882f..45cbdc9022 100644 --- a/src/mir_app/src/db_events.cpp +++ b/src/mir_app/src/db_events.cpp @@ -179,6 +179,20 @@ static INT_PTR DbEventGetTextWorker(const DB::EventInfo *dbei, int codepage, int return 0; } + if (dbei->flags & DBEF_JSON) { + JSONNode json = dbei->getJson(); + std::string str = json["b"].as_string(); + switch (datatype) { + case DBVT_WCHAR: + return (INT_PTR)mir_utf8decodeW(str.c_str()); + case DBVT_ASCIIZ: + char *msg = mir_strdup(str.c_str()); + mir_utf8decodecp(msg, codepage, nullptr); + return (INT_PTR)msg; + } + return 0; + } + // by default treat an event's blob as a string if (datatype == DBVT_WCHAR) { char *str = (char*)alloca(dbei->cbBlob + 1); -- cgit v1.2.3