diff options
author | George Hazan <george.hazan@gmail.com> | 2025-03-18 17:59:50 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2025-03-18 17:59:50 +0300 |
commit | 6554dbd172d712e6e8111e7b0fd00ff8addf4439 (patch) | |
tree | cce4639ead371932d83a1d07faa7a2d21ed6ad95 /src | |
parent | d8a336bb01bc3e15fc75c8138f72878ab3d287c4 (diff) |
fixes #4918 (Не открываются групчаты, когда протокол в оффлайне)
Diffstat (limited to 'src')
-rw-r--r-- | src/mir_app/src/chat_svc.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/mir_app/src/chat_svc.cpp b/src/mir_app/src/chat_svc.cpp index 4f941372a6..d51b9b6487 100644 --- a/src/mir_app/src/chat_svc.cpp +++ b/src/mir_app/src/chat_svc.cpp @@ -797,12 +797,18 @@ static HGENMENU hJoinMenuItem, hLeaveMenuItem, hMuteRootMenuItem, hMute0MenuItem static INT_PTR JoinChat(WPARAM hContact, LPARAM lParam)
{
if (hContact) {
- char *szProto = Proto_GetBaseAccountName(hContact);
- if (szProto) {
- if (db_get_w(hContact, szProto, "Status", 0) == ID_STATUS_OFFLINE)
- CallProtoService(szProto, PS_JOINCHAT, hContact, lParam);
- else
- RoomDoubleclicked(hContact, 0);
+ if (char *szProto = Proto_GetBaseAccountName(hContact)) {
+ if (Proto_GetStatus(szProto) != ID_STATUS_OFFLINE) {
+ if (db_get_w(hContact, szProto, "Status", 0) == ID_STATUS_OFFLINE)
+ CallProtoService(szProto, PS_JOINCHAT, hContact, lParam);
+ else
+ RoomDoubleclicked(hContact, 0);
+ }
+ else {
+ auto *pMM = MM_FindModule(szProto);
+ if (pMM->bDatabase)
+ CallService(MS_HISTORY_SHOWCONTACTHISTORY, hContact, 0);
+ }
}
}
@@ -904,6 +910,12 @@ static int PrebuildContactMenu(WPARAM hContact, LPARAM) Menu_ModifyItem(hJoinMenuItem, LPGENW("&Open/close chat window"));
}
}
+ else if (auto *pMM = MM_FindModule(szProto))
+ if (pMM->bDatabase) {
+ bEnabledJoin = true;
+ Menu_ModifyItem(hJoinMenuItem, LPGENW("&History"));
+ }
+
bEnabledLeave = ProtoServiceExists(szProto, PS_LEAVECHAT) != 0;
}
}
|