TDLib 1.7: Sticker IDs, message sender IDs
This commit is contained in:
parent
aafe7c1308
commit
63db26afc8
13 changed files with 64 additions and 30 deletions
|
@ -36,8 +36,8 @@ Row {
|
||||||
|
|
||||||
onInReplyToMessageChanged: {
|
onInReplyToMessageChanged: {
|
||||||
if (inReplyToMessage) {
|
if (inReplyToMessage) {
|
||||||
inReplyToUserText.text = (inReplyToRow.inReplyToMessage.sender_user_id !== inReplyToRow.myUserId) ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(inReplyToRow.inReplyToMessage.sender_user_id)), inReplyToUserText.font.pixelSize) : qsTr("You");
|
inReplyToUserText.text = (inReplyToRow.inReplyToMessage.sender.user_id !== inReplyToRow.myUserId) ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(inReplyToRow.inReplyToMessage.sender.user_id)), inReplyToUserText.font.pixelSize) : qsTr("You");
|
||||||
inReplyToMessageText.text = Emoji.emojify(Functions.getMessageText(inReplyToRow.inReplyToMessage, true, inReplyToRow.inReplyToMessage.sender_user_id === inReplyToRow.myUserId, false), inReplyToMessageText.font.pixelSize);
|
inReplyToMessageText.text = Emoji.emojify(Functions.getMessageText(inReplyToRow.inReplyToMessage, true, inReplyToRow.inReplyToMessage.sender.user_id === inReplyToRow.myUserId, false), inReplyToMessageText.font.pixelSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ ListItem {
|
||||||
property var chatId
|
property var chatId
|
||||||
property var messageId
|
property var messageId
|
||||||
property var myMessage
|
property var myMessage
|
||||||
readonly property var userInformation: tdLibWrapper.getUserInformation(myMessage.sender_user_id)
|
readonly property var userInformation: tdLibWrapper.getUserInformation(myMessage.sender.user_id)
|
||||||
property QtObject precalculatedValues: ListView.view.precalculatedValues
|
property QtObject precalculatedValues: ListView.view.precalculatedValues
|
||||||
readonly property color textColor: isOwnMessage ? Theme.highlightColor : Theme.primaryColor
|
readonly property color textColor: isOwnMessage ? Theme.highlightColor : Theme.primaryColor
|
||||||
readonly property int textAlign: isOwnMessage ? Text.AlignRight : Text.AlignLeft
|
readonly property int textAlign: isOwnMessage ? Text.AlignRight : Text.AlignLeft
|
||||||
|
@ -36,7 +36,7 @@ ListItem {
|
||||||
readonly property bool isSelected: messageListItem.precalculatedValues.pageIsSelecting && page.selectedMessages.some(function(existingMessage) {
|
readonly property bool isSelected: messageListItem.precalculatedValues.pageIsSelecting && page.selectedMessages.some(function(existingMessage) {
|
||||||
return existingMessage.id === messageId
|
return existingMessage.id === messageId
|
||||||
});
|
});
|
||||||
readonly property bool isOwnMessage: page.myUserId === myMessage.sender_user_id
|
readonly property bool isOwnMessage: page.myUserId === myMessage.sender.user_id
|
||||||
property string extraContentComponentName
|
property string extraContentComponentName
|
||||||
|
|
||||||
highlighted: (down || isSelected) && !menuOpen
|
highlighted: (down || isSelected) && !menuOpen
|
||||||
|
@ -336,7 +336,7 @@ ListItem {
|
||||||
forwardedThumbnail.photoData = (typeof otherChatInformation.photo !== "undefined") ? otherChatInformation.photo.small : {};
|
forwardedThumbnail.photoData = (typeof otherChatInformation.photo !== "undefined") ? otherChatInformation.photo.small : {};
|
||||||
forwardedChannelText.text = Emoji.emojify(otherChatInformation.title, Theme.fontSizeExtraSmall);
|
forwardedChannelText.text = Emoji.emojify(otherChatInformation.title, Theme.fontSizeExtraSmall);
|
||||||
} else if (myMessage.forward_info.origin["@type"] === "messageForwardOriginUser") {
|
} else if (myMessage.forward_info.origin["@type"] === "messageForwardOriginUser") {
|
||||||
var otherUserInformation = tdLibWrapper.getUserInformation(myMessage.forward_info.origin.sender_user_id);
|
var otherUserInformation = tdLibWrapper.getUserInformation(myMessage.forward_info.origin.sender.user_id);
|
||||||
forwardedThumbnail.photoData = (typeof otherUserInformation.profile_photo !== "undefined") ? otherUserInformation.profile_photo.small : {};
|
forwardedThumbnail.photoData = (typeof otherUserInformation.profile_photo !== "undefined") ? otherUserInformation.profile_photo.small : {};
|
||||||
forwardedChannelText.text = Emoji.emojify(Functions.getUserName(otherUserInformation), Theme.fontSizeExtraSmall);
|
forwardedChannelText.text = Emoji.emojify(Functions.getUserName(otherUserInformation), Theme.fontSizeExtraSmall);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -24,8 +24,8 @@ import "../js/functions.js" as Functions
|
||||||
Item {
|
Item {
|
||||||
id: messageListItem
|
id: messageListItem
|
||||||
property var myMessage: display
|
property var myMessage: display
|
||||||
property var userInformation: tdLibWrapper.getUserInformation(myMessage.sender_user_id)
|
property var userInformation: tdLibWrapper.getUserInformation(myMessage.sender.user_id)
|
||||||
property bool isOwnMessage: chatPage.myUserId === myMessage.sender_user_id
|
property bool isOwnMessage: chatPage.myUserId === myMessage.sender.user_id
|
||||||
height: backgroundRectangle.height + Theme.paddingMedium
|
height: backgroundRectangle.height + Theme.paddingMedium
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
|
|
@ -31,8 +31,8 @@ Flickable {
|
||||||
|
|
||||||
property var overlayMessage;
|
property var overlayMessage;
|
||||||
property bool showHeader: true
|
property bool showHeader: true
|
||||||
readonly property var userInformation: tdLibWrapper.getUserInformation(overlayMessage.sender_user_id);
|
readonly property var userInformation: tdLibWrapper.getUserInformation(overlayMessage.sender.user_id);
|
||||||
readonly property bool isOwnMessage: tdLibWrapper.getUserInformation().id === overlayMessage.sender_user_id;
|
readonly property bool isOwnMessage: tdLibWrapper.getUserInformation().id === overlayMessage.sender.user_id;
|
||||||
readonly property string extraContentComponentName: (typeof overlayMessage.content !== "undefined" && typeof chatView.contentComponentNames[overlayMessage.content['@type']] !== "undefined" )
|
readonly property string extraContentComponentName: (typeof overlayMessage.content !== "undefined" && typeof chatView.contentComponentNames[overlayMessage.content['@type']] !== "undefined" )
|
||||||
? chatView.contentComponentNames[overlayMessage.content['@type']] : ""
|
? chatView.contentComponentNames[overlayMessage.content['@type']] : ""
|
||||||
signal requestClose;
|
signal requestClose;
|
||||||
|
@ -43,7 +43,7 @@ Flickable {
|
||||||
var otherChatInformation = tdLibWrapper.getChat(forwardInformation.origin.chat_id);
|
var otherChatInformation = tdLibWrapper.getChat(forwardInformation.origin.chat_id);
|
||||||
return Emoji.emojify(otherChatInformation.title, fontSize);
|
return Emoji.emojify(otherChatInformation.title, fontSize);
|
||||||
case "messageForwardOriginUser":
|
case "messageForwardOriginUser":
|
||||||
var otherUserInformation = tdLibWrapper.getUserInformation(forwardInformation.origin.sender_user_id);
|
var otherUserInformation = tdLibWrapper.getUserInformation(forwardInformation.origin.sender.user_id);
|
||||||
return Emoji.emojify(Functions.getUserName(otherUserInformation), fontSize);
|
return Emoji.emojify(Functions.getUserName(otherUserInformation), fontSize);
|
||||||
default:
|
default:
|
||||||
return Emoji.emojify(forwardInformation.origin.sender_name, fontSize);
|
return Emoji.emojify(forwardInformation.origin.sender_name, fontSize);
|
||||||
|
|
|
@ -33,9 +33,9 @@ Item {
|
||||||
onPinnedMessageChanged: {
|
onPinnedMessageChanged: {
|
||||||
if (pinnedMessage) {
|
if (pinnedMessage) {
|
||||||
Debug.log("[ChatPage] Activating pinned message");
|
Debug.log("[ChatPage] Activating pinned message");
|
||||||
var messageUserText = (pinnedMessage.sender_user_id !== chatPage.myUserId) ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(pinnedMessage.sender_user_id)), pinnedMessageUserText.font.pixelSize) : qsTr("You");
|
var messageUserText = (pinnedMessage.sender.user_id !== chatPage.myUserId) ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(pinnedMessage.sender.user_id)), pinnedMessageUserText.font.pixelSize) : qsTr("You");
|
||||||
pinnedMessageUserText.text = (messageUserText === "" ? qsTr("Pinned Message") : messageUserText );
|
pinnedMessageUserText.text = (messageUserText === "" ? qsTr("Pinned Message") : messageUserText );
|
||||||
pinnedMessageText.text = Emoji.emojify(Functions.getMessageText(pinnedMessage, true, pinnedMessage.sender_user_id === chatPage.myUserId, false), pinnedMessageText.font.pixelSize);
|
pinnedMessageText.text = Emoji.emojify(Functions.getMessageText(pinnedMessage, true, pinnedMessage.sender.user_id === chatPage.myUserId, false), pinnedMessageText.font.pixelSize);
|
||||||
pinnedMessageItem.visible = true;
|
pinnedMessageItem.visible = true;
|
||||||
} else {
|
} else {
|
||||||
pinnedMessageItem.visible = false;
|
pinnedMessageItem.visible = false;
|
||||||
|
|
|
@ -91,7 +91,7 @@ Item {
|
||||||
height: recentStickersGridView.cellHeight
|
height: recentStickersGridView.cellHeight
|
||||||
|
|
||||||
Image {
|
Image {
|
||||||
source: modelData.thumbnail.photo.local.path
|
source: modelData.thumbnail.file.local.path
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
onStatusChanged: {
|
onStatusChanged: {
|
||||||
|
@ -144,9 +144,9 @@ Item {
|
||||||
|
|
||||||
Image {
|
Image {
|
||||||
id: singleStickerImage
|
id: singleStickerImage
|
||||||
source: modelData.thumbnail.photo.local.is_downloading_completed ? modelData.thumbnail.photo.local.path : ""
|
source: modelData.thumbnail.file.local.is_downloading_completed ? modelData.thumbnail.file.local.path : ""
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
visible: modelData.thumbnail.photo.local.is_downloading_completed
|
visible: modelData.thumbnail.file.local.is_downloading_completed
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
onStatusChanged: {
|
onStatusChanged: {
|
||||||
if (status === Image.Ready) {
|
if (status === Image.Ready) {
|
||||||
|
@ -160,7 +160,7 @@ Item {
|
||||||
maximumLineCount: 1
|
maximumLineCount: 1
|
||||||
truncationMode: TruncationMode.Fade
|
truncationMode: TruncationMode.Fade
|
||||||
text: Emoji.emojify(modelData.emoji, font.pixelSize)
|
text: Emoji.emojify(modelData.emoji, font.pixelSize)
|
||||||
visible: !modelData.thumbnail.photo.local.is_downloading_completed
|
visible: !modelData.thumbnail.file.local.is_downloading_completed
|
||||||
}
|
}
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
|
|
|
@ -401,7 +401,7 @@ function getMessagesArrayText(messages) {
|
||||||
var lastSenderName = "";
|
var lastSenderName = "";
|
||||||
var lines = [];
|
var lines = [];
|
||||||
for(var i = 0; i < messages.length; i += 1) {
|
for(var i = 0; i < messages.length; i += 1) {
|
||||||
var senderName = getUserName(tdLibWrapper.getUserInformation(messages[i].sender_user_id));
|
var senderName = getUserName(tdLibWrapper.getUserInformation(messages[i].sender.user_id));
|
||||||
if(senderName !== lastSenderName) {
|
if(senderName !== lastSenderName) {
|
||||||
lines.push(senderName);
|
lines.push(senderName);
|
||||||
}
|
}
|
||||||
|
|
|
@ -183,7 +183,7 @@ Page {
|
||||||
messageStatusSuffix += " - " + qsTr("edited");
|
messageStatusSuffix += " - " + qsTr("edited");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chatPage.myUserId === message.sender_user_id) {
|
if (chatPage.myUserId === message.sender.user_id) {
|
||||||
messageStatusSuffix += " "
|
messageStatusSuffix += " "
|
||||||
if (listItemIndex <= lastReadSentIndex) {
|
if (listItemIndex <= lastReadSentIndex) {
|
||||||
// Read by other party
|
// Read by other party
|
||||||
|
@ -472,7 +472,7 @@ Page {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onNewMessageReceived: {
|
onNewMessageReceived: {
|
||||||
if (chatView.manuallyScrolledToBottom || message.sender_user_id === chatPage.myUserId) {
|
if (chatView.manuallyScrolledToBottom || message.sender.user_id === chatPage.myUserId) {
|
||||||
Debug.log("[ChatPage] Own message received or was scrolled to bottom, scrolling down to see it...");
|
Debug.log("[ChatPage] Own message received or was scrolled to bottom, scrolling down to see it...");
|
||||||
chatView.scrollToIndex(chatView.count - 1);
|
chatView.scrollToIndex(chatView.count - 1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ Page {
|
||||||
|
|
||||||
property var pollData: message.content.poll
|
property var pollData: message.content.poll
|
||||||
|
|
||||||
property var userInformation: tdLibWrapper.getUserInformation(message.sender_user_id)
|
property var userInformation: tdLibWrapper.getUserInformation(message.sender.user_id)
|
||||||
|
|
||||||
property bool isQuiz: pollData.type['@type'] === "pollTypeQuiz"
|
property bool isQuiz: pollData.type['@type'] === "pollTypeQuiz"
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,8 @@ namespace {
|
||||||
const QString CHAT_ID("chat_id");
|
const QString CHAT_ID("chat_id");
|
||||||
const QString CONTENT("content");
|
const QString CONTENT("content");
|
||||||
const QString LAST_MESSAGE("last_message");
|
const QString LAST_MESSAGE("last_message");
|
||||||
const QString SENDER_USER_ID("sender_user_id");
|
const QString SENDER("sender");
|
||||||
|
const QString USER_ID("user_id");
|
||||||
const QString BASIC_GROUP_ID("basic_group_id");
|
const QString BASIC_GROUP_ID("basic_group_id");
|
||||||
const QString SUPERGROUP_ID("supergroup_id");
|
const QString SUPERGROUP_ID("supergroup_id");
|
||||||
const QString UNREAD_COUNT("unread_count");
|
const QString UNREAD_COUNT("unread_count");
|
||||||
|
@ -81,6 +82,8 @@ public:
|
||||||
QVariant photoSmall() const;
|
QVariant photoSmall() const;
|
||||||
qlonglong lastReadInboxMessageId() const;
|
qlonglong lastReadInboxMessageId() const;
|
||||||
qlonglong senderUserId() const;
|
qlonglong senderUserId() const;
|
||||||
|
qlonglong senderChatId() const;
|
||||||
|
bool senderIsChat() const;
|
||||||
qlonglong senderMessageDate() const;
|
qlonglong senderMessageDate() const;
|
||||||
QString senderMessageText() const;
|
QString senderMessageText() const;
|
||||||
QString senderMessageStatus() const;
|
QString senderMessageStatus() const;
|
||||||
|
@ -176,7 +179,17 @@ qlonglong ChatListModel::ChatData::lastReadInboxMessageId() const
|
||||||
|
|
||||||
qlonglong ChatListModel::ChatData::senderUserId() const
|
qlonglong ChatListModel::ChatData::senderUserId() const
|
||||||
{
|
{
|
||||||
return lastMessage(SENDER_USER_ID).toLongLong();
|
return lastMessage(SENDER).toMap().value(USER_ID).toLongLong();
|
||||||
|
}
|
||||||
|
|
||||||
|
qlonglong ChatListModel::ChatData::senderChatId() const
|
||||||
|
{
|
||||||
|
return lastMessage(SENDER).toMap().value(CHAT_ID).toLongLong();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ChatListModel::ChatData::senderIsChat() const
|
||||||
|
{
|
||||||
|
return lastMessage(SENDER).toMap().value(_TYPE).toString() == "messageSenderChat";
|
||||||
}
|
}
|
||||||
|
|
||||||
qlonglong ChatListModel::ChatData::senderMessageDate() const
|
qlonglong ChatListModel::ChatData::senderMessageDate() const
|
||||||
|
|
|
@ -35,7 +35,8 @@ namespace {
|
||||||
const QString UNREAD_COUNT("unread_count");
|
const QString UNREAD_COUNT("unread_count");
|
||||||
const QString LAST_READ_INBOX_MESSAGE_ID("last_read_inbox_message_id");
|
const QString LAST_READ_INBOX_MESSAGE_ID("last_read_inbox_message_id");
|
||||||
const QString LAST_READ_OUTBOX_MESSAGE_ID("last_read_outbox_message_id");
|
const QString LAST_READ_OUTBOX_MESSAGE_ID("last_read_outbox_message_id");
|
||||||
const QString SENDER_USER_ID("sender_user_id");
|
const QString SENDER("sender");
|
||||||
|
const QString USER_ID("user_id");
|
||||||
const QString PINNED_MESSAGE_ID("pinned_message_id");
|
const QString PINNED_MESSAGE_ID("pinned_message_id");
|
||||||
const QString _TYPE("@type");
|
const QString _TYPE("@type");
|
||||||
}
|
}
|
||||||
|
@ -54,6 +55,8 @@ public:
|
||||||
static bool lessThan(const MessageData *message1, const MessageData *message2);
|
static bool lessThan(const MessageData *message1, const MessageData *message2);
|
||||||
void setContent(const QVariantMap &content);
|
void setContent(const QVariantMap &content);
|
||||||
int senderUserId() const;
|
int senderUserId() const;
|
||||||
|
qlonglong senderChatId() const;
|
||||||
|
bool senderIsChat() const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
QVariantMap messageData;
|
QVariantMap messageData;
|
||||||
|
@ -70,7 +73,17 @@ ChatModel::MessageData::MessageData(const QVariantMap &data, qlonglong msgid) :
|
||||||
|
|
||||||
int ChatModel::MessageData::senderUserId() const
|
int ChatModel::MessageData::senderUserId() const
|
||||||
{
|
{
|
||||||
return messageData.value(SENDER_USER_ID).toInt();
|
return messageData.value(SENDER).toMap().value(USER_ID).toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
qlonglong ChatModel::MessageData::senderChatId() const
|
||||||
|
{
|
||||||
|
return messageData.value(SENDER).toMap().value(CHAT_ID).toLongLong();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ChatModel::MessageData::senderIsChat() const
|
||||||
|
{
|
||||||
|
return messageData.value(SENDER).toMap().value(_TYPE).toString() == "messageSenderChat";
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChatModel::MessageData::setContent(const QVariantMap &content)
|
void ChatModel::MessageData::setContent(const QVariantMap &content)
|
||||||
|
|
|
@ -43,7 +43,8 @@ namespace {
|
||||||
const QString MESSAGE("message");
|
const QString MESSAGE("message");
|
||||||
const QString FIRST_NAME("first_name");
|
const QString FIRST_NAME("first_name");
|
||||||
const QString LAST_NAME("last_name");
|
const QString LAST_NAME("last_name");
|
||||||
const QString SENDER_USER_ID("sender_user_id");
|
const QString SENDER("sender");
|
||||||
|
const QString USER_ID("user_id");
|
||||||
const QString NOTIFICATIONS("notifications");
|
const QString NOTIFICATIONS("notifications");
|
||||||
const QString NOTIFICATION_GROUP_ID("notification_group_id");
|
const QString NOTIFICATION_GROUP_ID("notification_group_id");
|
||||||
const QString ADDED_NOTIFICATIONS("added_notifications");
|
const QString ADDED_NOTIFICATIONS("added_notifications");
|
||||||
|
@ -336,10 +337,17 @@ void NotificationManager::publishNotification(const NotificationGroup *notificat
|
||||||
if (chatInformation && (chatInformation->type == TDLibWrapper::ChatTypeBasicGroup ||
|
if (chatInformation && (chatInformation->type == TDLibWrapper::ChatTypeBasicGroup ||
|
||||||
(chatInformation->type == TDLibWrapper::ChatTypeSupergroup && !chatInformation->isChannel))) {
|
(chatInformation->type == TDLibWrapper::ChatTypeSupergroup && !chatInformation->isChannel))) {
|
||||||
// Add author
|
// Add author
|
||||||
const QVariantMap authorInformation = tdLibWrapper->getUserInformation(messageMap.value(SENDER_USER_ID).toString());
|
const QVariantMap senderInformation = messageMap.value(SENDER).toMap();
|
||||||
const QString firstName = authorInformation.value(FIRST_NAME).toString();
|
QString fullName;
|
||||||
const QString lastName = authorInformation.value(LAST_NAME).toString();
|
if (senderInformation.value(_TYPE).toString() == "messageSenderChat") {
|
||||||
const QString fullName = firstName + " " + lastName;
|
fullName = tdLibWrapper->getChat(senderInformation.value(CHAT_ID).toString()).value(TITLE).toString();
|
||||||
|
} else {
|
||||||
|
const QVariantMap authorInformation = tdLibWrapper->getUserInformation(senderInformation.value(USER_ID).toString());
|
||||||
|
const QString firstName = authorInformation.value(FIRST_NAME).toString();
|
||||||
|
const QString lastName = authorInformation.value(LAST_NAME).toString();
|
||||||
|
fullName = firstName + " " + lastName;
|
||||||
|
}
|
||||||
|
|
||||||
notificationBody = notificationBody + fullName.trimmed() + ": ";
|
notificationBody = notificationBody + fullName.trimmed() + ": ";
|
||||||
}
|
}
|
||||||
notificationBody += getNotificationText(messageMap.value(CONTENT).toMap());
|
notificationBody += getNotificationText(messageMap.value(CONTENT).toMap());
|
||||||
|
|
|
@ -121,7 +121,7 @@ void StickerManager::handleStickerSetReceived(const QVariantMap &stickerSet)
|
||||||
QListIterator<QVariant> stickerIterator(stickerList);
|
QListIterator<QVariant> stickerIterator(stickerList);
|
||||||
while (stickerIterator.hasNext()) {
|
while (stickerIterator.hasNext()) {
|
||||||
QVariantMap singleSticker = stickerIterator.next().toMap();
|
QVariantMap singleSticker = stickerIterator.next().toMap();
|
||||||
QVariantMap thumbnailFile = singleSticker.value("thumbnail").toMap().value("photo").toMap();
|
QVariantMap thumbnailFile = singleSticker.value("thumbnail").toMap().value("file").toMap();
|
||||||
QVariantMap thumbnailLocalFile = thumbnailFile.value("local").toMap();
|
QVariantMap thumbnailLocalFile = thumbnailFile.value("local").toMap();
|
||||||
if (!thumbnailLocalFile.value("is_downloading_completed").toBool()) {
|
if (!thumbnailLocalFile.value("is_downloading_completed").toBool()) {
|
||||||
tdLibWrapper->downloadFile(thumbnailFile.value("id").toInt());
|
tdLibWrapper->downloadFile(thumbnailFile.value("id").toInt());
|
||||||
|
|
Loading…
Reference in a new issue