diff options
Diffstat (limited to 'protocols/Telegram/src/server.cpp')
-rw-r--r-- | protocols/Telegram/src/server.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/protocols/Telegram/src/server.cpp b/protocols/Telegram/src/server.cpp index 1905b4ae70..a852c1ac93 100644 --- a/protocols/Telegram/src/server.cpp +++ b/protocols/Telegram/src/server.cpp @@ -165,6 +165,32 @@ void CMTProto::OnUpdateAuth(td::ClientManager::Response &response) /////////////////////////////////////////////////////////////////////////////// +void CMTProto::ProcessGroups(td::td_api::updateChatFilters *pObj) +{ + for (auto &grp : pObj->chat_filters_) { + if (grp->icon_name_ != "Custom") + continue; + + CMStringA szSetting("ChatFilter%d", grp->id_); + CMStringW wszOldValue(getMStringW(szSetting)); + Utf2T wszNewValue(grp->title_.c_str()); + if (wszOldValue.IsEmpty()) { + Clist_GroupCreate(0, wszNewValue); + setWString(szSetting, wszNewValue); + } + else if (wszOldValue != wszNewValue) { + MGROUP oldGroup = Clist_GroupExists(wszNewValue); + if (!oldGroup) + Clist_GroupCreate(0, wszNewValue); + else + Clist_GroupRename(oldGroup, wszNewValue); + setWString(szSetting, wszNewValue); + } + } +} + +/////////////////////////////////////////////////////////////////////////////// + void CMTProto::ProcessResponse(td::ClientManager::Response response) { if (!response.object) @@ -185,6 +211,10 @@ void CMTProto::ProcessResponse(td::ClientManager::Response response) case td::td_api::updateAuthorizationState::ID: ProcessAuth((td::td_api::updateAuthorizationState *)response.object.get()); break; + + case td::td_api::updateChatFilters::ID: + ProcessGroups((td::td_api::updateChatFilters *)response.object.get()); + break; } } |