2
0
mirror of https://github.com/ars3niy/tdlib-purple synced 2025-08-23 02:17:32 +00:00
tdlib-purple/client-utils.h

74 lines
3.7 KiB
C
Raw Normal View History

2020-05-15 19:46:07 +02:00
#ifndef _CLIENT_UTILS_H
#define _CLIENT_UTILS_H
#include "account-data.h"
2020-05-15 19:46:07 +02:00
#include "transceiver.h"
#include <purple.h>
2020-05-13 19:15:15 +02:00
struct TgMessageInfo {
std::string sender;
time_t timestamp;
bool outgoing;
int64_t repliedMessageId;
std::string forwardedFrom;
2020-05-13 19:15:15 +02:00
};
using FileDownloadCb = void (PurpleTdClient::*)(int64_t chatId, const TgMessageInfo &message,
const std::string &filePath, const char *caption,
td::td_api::object_ptr<td::td_api::file> thumbnail);
2020-05-13 19:15:15 +02:00
// Matching completed downloads to chats they belong to
class DownloadRequest: public PendingRequest {
public:
int64_t chatId;
TgMessageInfo message;
2020-05-13 19:15:15 +02:00
td::td_api::object_ptr<td::td_api::file> thumbnail;
FileDownloadCb callback;
2020-05-13 19:15:15 +02:00
// Could not pass object_ptr through variadic funciton :(
DownloadRequest(uint64_t requestId, int64_t chatId, const TgMessageInfo &message,
td::td_api::file *thumbnail, FileDownloadCb callback)
: PendingRequest(requestId), chatId(chatId), message(message), thumbnail(thumbnail),
callback(callback) {}
2020-05-13 19:15:15 +02:00
};
std::string messageTypeToString(const td::td_api::MessageContent &content);
2020-05-20 18:31:37 +02:00
std::string proxyTypeToString(PurpleProxyType proxyType);
const char * getPurpleStatusId(const td::td_api::UserStatus &tdStatus);
2020-05-16 20:38:58 +02:00
std::string getPurpleBuddyName(const td::td_api::user &user);
void getUsersByPurpleName(const char *username, std::vector<const td::td_api::user*> &users,
TdAccountData &account);
int64_t getPrivateChatIdByPurpleName(const char *buddyName, TdAccountData &account,
const char *action);
PurpleConversation *getImConversation(PurpleAccount *account, const char *username);
PurpleConvChat * getChatConversation(TdAccountData &account, const td::td_api::chat &chat,
int chatPurpleId);
2020-05-20 18:31:37 +02:00
PurpleConvChat * findChatConversation(PurpleAccount *account, const td::td_api::chat &chat);
void updatePrivateChat(TdAccountData &account, const td::td_api::chat &chat, const td::td_api::user &user);
void updateBasicGroupChat(TdAccountData &account, int32_t groupId);
void updateSupergroupChat(TdAccountData &account, int32_t groupId);
void removeGroupChat(PurpleAccount *purpleAccount, const td::td_api::chat &chat);
std::string getSenderPurpleName(const td::td_api::chat &chat, const td::td_api::message &message,
TdAccountData &account);
std::string getForwardSource(const td::td_api::messageForwardInfo &forwardInfo,
TdAccountData &accountData);
2020-05-14 14:42:05 +02:00
void getNamesFromAlias(const char *alias, std::string &firstName, std::string &lastName);
2020-05-12 19:37:59 +02:00
std::vector<PurpleChat *> findChatsByInviteLink(const std::string &inviteLink);
std::vector<PurpleChat *> findChatsByNewGroup(const char *name, int type);
void showMessageText(TdAccountData &account, const td::td_api::chat &chat, const TgMessageInfo &message,
const char *text, const char *notification, uint32_t extraFlags = 0);
void setChatMembers(PurpleConvChat *purpleChat, const td::td_api::basicGroupFullInfo &groupInfo,
const TdAccountData &account);
2020-05-16 00:16:06 +02:00
void transmitMessage(int64_t chatId, const char *message, TdTransceiver &transceiver,
TdAccountData &account, TdTransceiver::ResponseCb response);
2020-05-15 19:46:07 +02:00
void requestRecoveryEmailConfirmation(PurpleConnection *gc, const char *emailInfo);
unsigned getFileSize(const td::td_api::file &file);
unsigned getFileSizeKb(const td::td_api::file &file);
#endif