summaryrefslogtreecommitdiff
path: root/protocols/Telegram/src/avatars.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/src/avatars.cpp')
-rw-r--r--protocols/Telegram/src/avatars.cpp29
1 files changed, 23 insertions, 6 deletions
diff --git a/protocols/Telegram/src/avatars.cpp b/protocols/Telegram/src/avatars.cpp
index 07ae3e4e45..a588bfa76f 100644
--- a/protocols/Telegram/src/avatars.cpp
+++ b/protocols/Telegram/src/avatars.cpp
@@ -76,6 +76,7 @@ INT_PTR CTelegramProto::SvcSetMyAvatar(WPARAM, LPARAM)
}
/////////////////////////////////////////////////////////////////////////////////////////
+// Offline file downloader
void CTelegramProto::OnGetFileInfo(td::ClientManager::Response &response, void *pUserInfo)
{
@@ -96,12 +97,6 @@ void CTelegramProto::OnGetFileInfo(td::ClientManager::Response &response, void *
SendQuery(new TD::downloadFile(pFile->id_, 10, 0, 0, true));
}
-INT_PTR __cdecl CTelegramProto::OfflineFile(WPARAM param, LPARAM)
-{
- ForkThread((MyThreadFunc)&CTelegramProto::OfflineFileThread, (void *)param);
- return 0;
-}
-
void __cdecl CTelegramProto::OfflineFileThread(void *pParam)
{
auto *ofd = (OFDTHREAD *)pParam;
@@ -123,6 +118,25 @@ void __cdecl CTelegramProto::OfflineFileThread(void *pParam)
delete ofd;
}
+INT_PTR __cdecl CTelegramProto::OfflineFile(WPARAM param, LPARAM)
+{
+ ForkThread((MyThreadFunc)&CTelegramProto::OfflineFileThread, (void *)param);
+ return 0;
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+// Offline file pre-creator
+
+void CTelegramProto::OnCreateOfflineFile(DB::FILE_BLOB &blob, void *pHandle)
+{
+ if (auto *ft = (TG_FILE_REQUEST *)pHandle) {
+ blob.setUrl(ft->m_uniqueId.GetBuffer());
+ blob.setSize(ft->m_fileSize);
+ }
+}
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
TG_FILE_REQUEST* CTelegramProto::PopFile(const char *pszUniqueId)
{
mir_cslock lck(m_csFiles);
@@ -134,6 +148,9 @@ TG_FILE_REQUEST* CTelegramProto::PopFile(const char *pszUniqueId)
return nullptr;
}
+/////////////////////////////////////////////////////////////////////////////////////////
+// handles file info updates
+
void CTelegramProto::ProcessFile(TD::updateFile *pObj)
{
if (auto *pFile = pObj->file_.get()) {