Secret chats begin to work properly...
This commit is contained in:
parent
3b8d284b2b
commit
90f7535fda
17 changed files with 134 additions and 138 deletions
|
@ -13,7 +13,7 @@ PhotoTextsListItem {
|
|||
property int ownUserId
|
||||
|
||||
// chat title
|
||||
primaryText.text: title ? Emoji.emojify(title + ( display.notification_settings.mute_for > 0 ? " 🔇" : "" ), Theme.fontSizeMedium) : qsTr("Unknown")
|
||||
primaryText.text: title ? Emoji.emojify((listItem.isSecret ? "🔒 " : "" ) + title + ( display.notification_settings.mute_for > 0 ? " 🔇" : "" ), Theme.fontSizeMedium) : qsTr("Unknown")
|
||||
// last user
|
||||
prologSecondaryText.text: is_channel ? "" : ( last_message_sender_id ? ( last_message_sender_id !== ownUserId ? Emoji.emojify(Functions.getUserName(tdLibWrapper.getUserInformation(last_message_sender_id)), primaryText.font.pixelSize) : qsTr("You") ) : "" )
|
||||
// last message
|
||||
|
|
|
@ -185,7 +185,7 @@ function getSecretChatStatus(secretChatDetails) {
|
|||
case "secretChatStatePending":
|
||||
return qsTr("Pending acknowledgement");
|
||||
case "secretChatStateReady":
|
||||
return qsTr("Ready to use");
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@ Page {
|
|||
property alias chatPicture: chatPictureThumbnail.photoData
|
||||
property bool isPrivateChat: false;
|
||||
property bool isSecretChat: false;
|
||||
property bool isSecretChatReady: false;
|
||||
property bool isBasicGroup: false;
|
||||
property bool isSuperGroup: false;
|
||||
property bool isChannel: false;
|
||||
|
@ -48,7 +49,7 @@ Page {
|
|||
property int chatOnlineMemberCount: 0;
|
||||
property var emojiProposals;
|
||||
property bool iterativeInitialization: false;
|
||||
readonly property bool userIsMember: (isPrivateChat && chatInformation["@type"]) || // should be optimized
|
||||
readonly property bool userIsMember: ((isPrivateChat || isSecretChat) && chatInformation["@type"]) || // should be optimized
|
||||
(isBasicGroup || isSuperGroup) && (
|
||||
(chatGroupInformation.status["@type"] === "chatMemberStatusMember")
|
||||
|| (chatGroupInformation.status["@type"] === "chatMemberStatusAdministrator")
|
||||
|
@ -111,10 +112,13 @@ Page {
|
|||
}
|
||||
var statusText = Functions.getChatPartnerStatusText(chatPartnerInformation.status['@type'], chatPartnerInformation.status.was_online);
|
||||
if (chatPage.secretChatDetails) {
|
||||
if (statusText) {
|
||||
var secretChatStatus = Functions.getSecretChatStatus(chatPage.secretChatDetails);
|
||||
if (statusText && secretChatStatus) {
|
||||
statusText += " - ";
|
||||
}
|
||||
statusText += Functions.getSecretChatStatus(chatPage.secretChatDetails);
|
||||
if (secretChatStatus) {
|
||||
statusText += secretChatStatus;
|
||||
}
|
||||
}
|
||||
|
||||
if (statusText) {
|
||||
|
@ -147,11 +151,11 @@ Page {
|
|||
chatView.currentIndex = -1;
|
||||
chatView.lastReadSentIndex = 0;
|
||||
var chatType = chatInformation.type['@type'];
|
||||
isPrivateChat = ( chatType === "chatTypePrivate"|| chatType === "chatTypeSecret" );
|
||||
isPrivateChat = chatType === "chatTypePrivate";
|
||||
isSecretChat = chatType === "chatTypeSecret";
|
||||
isBasicGroup = ( chatType === "chatTypeBasicGroup" );
|
||||
isSuperGroup = ( chatType === "chatTypeSupergroup" );
|
||||
if (isPrivateChat) {
|
||||
if (isPrivateChat || isSecretChat) {
|
||||
chatPartnerInformation = tdLibWrapper.getUserInformation(chatInformation.type.user_id);
|
||||
updateChatPartnerStatusText();
|
||||
if (isSecretChat) {
|
||||
|
@ -304,11 +308,12 @@ Page {
|
|||
|| groupStatusType === "chatMemberStatusAdministrator"
|
||||
|| groupStatusType === "chatMemberStatusCreator"
|
||||
|| (groupStatusType === "chatMemberStatusRestricted" && groupStatus.permissions[privilege])
|
||||
|| (chatPage.isSecretChat && chatPage.isSecretChatReady)
|
||||
}
|
||||
function canPinMessages() {
|
||||
Debug.log("Can we pin messages?");
|
||||
if (chatPage.isPrivateChat) {
|
||||
Debug.log("Private Chat: No!");
|
||||
if (chatPage.isPrivateChat || chatPage.isSecretChat) {
|
||||
Debug.log("Private/Secret Chat: No!");
|
||||
return false;
|
||||
}
|
||||
if (chatPage.chatGroupInformation.status["@type"] === "chatMemberStatusCreator") {
|
||||
|
@ -380,7 +385,7 @@ Page {
|
|||
Connections {
|
||||
target: tdLibWrapper
|
||||
onUserUpdated: {
|
||||
if (isPrivateChat && chatPartnerInformation.id.toString() === userId ) {
|
||||
if ((isPrivateChat || isSecretChat) && chatPartnerInformation.id.toString() === userId ) {
|
||||
chatPartnerInformation = userInformation;
|
||||
updateChatPartnerStatusText();
|
||||
}
|
||||
|
@ -428,6 +433,7 @@ Page {
|
|||
Debug.log("[ChatPage] Received detailed information about this secret chat");
|
||||
chatPage.secretChatDetails = secretChat;
|
||||
updateChatPartnerStatusText();
|
||||
chatPage.isSecretChatReady = chatPage.secretChatDetails.state["@type"] === "secretChatStateReady";
|
||||
}
|
||||
}
|
||||
onSecretChatUpdated: {
|
||||
|
@ -435,6 +441,7 @@ Page {
|
|||
Debug.log("[ChatPage] Detailed information about this secret chat was updated");
|
||||
chatPage.secretChatDetails = secretChat;
|
||||
updateChatPartnerStatusText();
|
||||
chatPage.isSecretChatReady = chatPage.secretChatDetails.state["@type"] === "secretChatStateReady";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -534,7 +541,7 @@ Page {
|
|||
Timer {
|
||||
id: chatContactTimeUpdater
|
||||
interval: 60000
|
||||
running: isPrivateChat
|
||||
running: isPrivateChat || isSecretChat
|
||||
repeat: true
|
||||
onTriggered: {
|
||||
updateChatPartnerStatusText();
|
||||
|
@ -686,7 +693,7 @@ Page {
|
|||
id: chatNameText
|
||||
width: Math.min(implicitWidth, parent.width)
|
||||
anchors.right: parent.right
|
||||
text: chatInformation.title !== "" ? Emoji.emojify(chatInformation.title, font.pixelSize) : qsTr("Unknown")
|
||||
text: chatInformation.title !== "" ? Emoji.emojify((chatPage.isSecretChat ? "🔒 " : "" ) + chatInformation.title, font.pixelSize) : qsTr("Unknown")
|
||||
textFormat: Text.StyledText
|
||||
font.pixelSize: chatPage.isPortrait ? Theme.fontSizeLarge : Theme.fontSizeMedium
|
||||
font.family: Theme.fontFamilyHeading
|
||||
|
@ -908,8 +915,9 @@ Page {
|
|||
VerticalScrollDecorator {}
|
||||
|
||||
ViewPlaceholder {
|
||||
id: chatViewPlaceholder
|
||||
enabled: chatView.count === 0
|
||||
text: qsTr("This chat is empty.")
|
||||
text: (chatPage.isSecretChat && !chatPage.isSecretChatReady) ? qsTr("This secret chat is not yet ready. Your chat partner needs to go online first.") : qsTr("This chat is empty.")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1103,7 +1111,7 @@ Page {
|
|||
}
|
||||
}
|
||||
IconButton {
|
||||
visible: !chatPage.isPrivateChat && chatPage.hasSendPrivilege("can_send_polls")
|
||||
visible: !(chatPage.isPrivateChat || chatPage.isSecretChat) && chatPage.hasSendPrivilege("can_send_polls")
|
||||
icon.source: "image://theme/icon-m-question"
|
||||
onClicked: {
|
||||
pageStack.push(Qt.resolvedUrl("../pages/PollCreationPage.qml"), { "chatId" : chatInformation.id, groupName: chatInformation.title});
|
||||
|
@ -1383,7 +1391,7 @@ Page {
|
|||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
visible: selectedMessages.every(function(message){
|
||||
return message.can_be_forwarded
|
||||
return message.can_be_forwarded && !chatPage.isSecretChat
|
||||
})
|
||||
width: visible ? Theme.itemSizeMedium : 0
|
||||
icon.source: "image://theme/icon-m-forward"
|
||||
|
|
|
@ -69,7 +69,7 @@ Page {
|
|||
SearchField {
|
||||
id: contactsSearchField
|
||||
width: parent.width
|
||||
placeholderText: qsTr("Search a contact")
|
||||
placeholderText: qsTr("Search a contact...")
|
||||
active: !newChatPage.isLoading
|
||||
onTextChanged: contactsModel.applyFilter(text);
|
||||
EnterKey.iconSource: "image://theme/icon-m-enter-close"
|
||||
|
|
|
@ -46,6 +46,7 @@ namespace {
|
|||
const QString IS_CHANNEL("is_channel");
|
||||
const QString PINNED_MESSAGE_ID("pinned_message_id");
|
||||
const QString _TYPE("@type");
|
||||
const QString SECRET_CHAT_ID("secret_chat_id");
|
||||
}
|
||||
|
||||
class ChatListModel::ChatData
|
||||
|
@ -518,13 +519,16 @@ void ChatListModel::updateChatVisibility(const TDLibWrapper::Group *group)
|
|||
|
||||
void ChatListModel::updateSecretChatVisibility(const QVariantMap secretChatDetails)
|
||||
{
|
||||
LOG("Updating secret chat visibility" << secretChatDetails.value(ID));
|
||||
// See if any group has been removed from from view
|
||||
LOG("Updating secret chat visibility" << secretChatDetails.value(ID).toString());
|
||||
// See if any secret chat has been closed
|
||||
for (int i = 0; i < chatList.size(); i++) {
|
||||
ChatData *chat = chatList.at(i);
|
||||
if (chat->chatType != TDLibWrapper::ChatTypeSecret) {
|
||||
continue;
|
||||
}
|
||||
if (chat->chatData.value(TYPE).toMap().value(SECRET_CHAT_ID).toString() != secretChatDetails.value(ID).toString()) {
|
||||
continue;
|
||||
}
|
||||
const QVector<int> changedRoles(chat->updateSecretChat(secretChatDetails));
|
||||
if (chat->isHidden() && !showHiddenChats) {
|
||||
LOG("Hiding chat" << chat->chatId << "at" << i);
|
||||
|
@ -543,21 +547,6 @@ void ChatListModel::updateSecretChatVisibility(const QVariantMap secretChatDetai
|
|||
emit dataChanged(modelIndex, modelIndex, changedRoles);
|
||||
}
|
||||
}
|
||||
|
||||
// And see if any group been added to the view
|
||||
const QList<ChatData*> hiddenChatList = hiddenChats.values();
|
||||
const int n = hiddenChatList.size();
|
||||
for (int j = 0; j < n; j++) {
|
||||
ChatData *chat = hiddenChatList.at(j);
|
||||
if (chat->chatType != TDLibWrapper::ChatTypeSecret) {
|
||||
continue;
|
||||
}
|
||||
chat->updateSecretChat(secretChatDetails);
|
||||
if (!chat->isHidden() || showHiddenChats) {
|
||||
hiddenChats.remove(chat->chatId);
|
||||
addVisibleChat(chat);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool ChatListModel::showAllChats() const
|
||||
|
@ -584,7 +573,7 @@ void ChatListModel::handleChatDiscovered(const QString &, const QVariantMap &cha
|
|||
}
|
||||
|
||||
if (chat->chatType == TDLibWrapper::ChatTypeSecret) {
|
||||
QVariantMap secretChatDetails = tdLibWrapper->getSecretChatFromCache(chatToBeAdded.value(TYPE).toMap().value("secret_chat_id").toString());
|
||||
QVariantMap secretChatDetails = tdLibWrapper->getSecretChatFromCache(chatToBeAdded.value(TYPE).toMap().value(SECRET_CHAT_ID).toString());
|
||||
if (!secretChatDetails.isEmpty()) {
|
||||
chat->updateSecretChat(secretChatDetails);
|
||||
}
|
||||
|
|
|
@ -530,8 +530,7 @@ void TDLibReceiver::nop(const QVariantMap &)
|
|||
void TDLibReceiver::processSecretChat(const QVariantMap &receivedInformation)
|
||||
{
|
||||
LOG("Received a secret chat");
|
||||
QVariantMap discoveredSecretChat = receivedInformation.value(SECRET_CHAT).toMap();
|
||||
emit secretChat(discoveredSecretChat.value(ID).toString(), discoveredSecretChat);
|
||||
emit secretChat(receivedInformation.value(ID).toString(), receivedInformation);
|
||||
}
|
||||
|
||||
void TDLibReceiver::processUpdateSecretChat(const QVariantMap &receivedInformation)
|
||||
|
|
|
@ -379,6 +379,10 @@
|
|||
<numerusform>%1 online</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation>Dieser geheime Chat ist noch nicht bereit. Ihr Chatpartner muss erst noch online gehen.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -921,8 +925,8 @@
|
|||
<translation>Ende-zu-Ende-verschlüsselt, nur auf diesem Gerät zugreifbar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation>Suchen Sie einen Kontakt</translation>
|
||||
<source>Search a contact...</source>
|
||||
<translation>Einen Kontakt suchen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
|
@ -1655,9 +1659,5 @@
|
|||
<source>Pending acknowledgement</source>
|
||||
<translation>Ausstehende Bestätigung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation>Einsatzbereit</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -262,7 +262,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>No message in this chat.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>No message in this chat.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -379,6 +379,10 @@
|
|||
<numerusform>%1 online</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation>This secret chat is not yet ready. Your chat partner needs to go online first.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -873,7 +877,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Pin Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pin Message</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -887,46 +891,46 @@
|
|||
<name>MessageOverlayFlickable</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">You</translation>
|
||||
<translation>You</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This message was forwarded. Original author: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>This message was forwarded. Original author: %1</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NewChatPage</name>
|
||||
<message>
|
||||
<source>Your Contacts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Your Contacts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>You don't have any contacts.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>You don't have any contacts.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Private Chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Private Chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Secret Chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Secret Chat</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>End-to-end-encrypted, accessible on this device only</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<source>Search a contact...</source>
|
||||
<translation>Search a contact...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Loading contacts...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Transport-encrypted, uses Telegram Cloud, sharable across devices</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -983,22 +987,22 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>New Chat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>New Chat</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PinnedMessageItem</name>
|
||||
<message>
|
||||
<source>You</source>
|
||||
<translation type="unfinished">You</translation>
|
||||
<translation>You</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pinned Message</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pinned Message</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Message unpinned</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Message unpinned</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1243,7 +1247,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Notification turns on the display</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Notification turns on the display</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
|
@ -1649,15 +1653,11 @@
|
|||
</message>
|
||||
<message>
|
||||
<source>Closed!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Closed!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Pending acknowledgement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Pending acknowledgement</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -369,6 +369,10 @@
|
|||
<numerusform>%1 en línea</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -906,10 +910,6 @@
|
|||
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -918,6 +918,10 @@
|
|||
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
|
@ -1636,9 +1640,5 @@
|
|||
<source>Pending acknowledgement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -379,6 +379,10 @@
|
|||
<numerusform>%1 paikalla</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -917,10 +921,6 @@
|
|||
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -929,6 +929,10 @@
|
|||
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
|
@ -1656,9 +1660,5 @@
|
|||
<source>Pending acknowledgement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -369,6 +369,10 @@
|
|||
<numerusform></numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -906,10 +910,6 @@
|
|||
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -918,6 +918,10 @@
|
|||
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
|
@ -1636,9 +1640,5 @@
|
|||
<source>Pending acknowledgement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -379,6 +379,10 @@
|
|||
<numerusform>%1 online</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -916,10 +920,6 @@
|
|||
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -928,6 +928,10 @@
|
|||
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
|
@ -1655,9 +1659,5 @@
|
|||
<source>Pending acknowledgement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -389,6 +389,10 @@
|
|||
<numerusform>%1 online</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -926,10 +930,6 @@
|
|||
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -938,6 +938,10 @@
|
|||
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
|
@ -1674,9 +1678,5 @@
|
|||
<source>Pending acknowledgement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -389,6 +389,10 @@
|
|||
<numerusform></numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -926,10 +930,6 @@
|
|||
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -938,6 +938,10 @@
|
|||
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
|
@ -1674,9 +1678,5 @@
|
|||
<source>Pending acknowledgement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -379,6 +379,10 @@
|
|||
<numerusform>%1 online</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -916,10 +920,6 @@
|
|||
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -928,6 +928,10 @@
|
|||
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
|
@ -1655,9 +1659,5 @@
|
|||
<source>Pending acknowledgement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -369,6 +369,10 @@
|
|||
<numerusform>%1 位在线</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -906,10 +910,6 @@
|
|||
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -918,6 +918,10 @@
|
|||
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
|
@ -1636,9 +1640,5 @@
|
|||
<source>Pending acknowledgement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
|
@ -379,6 +379,10 @@
|
|||
<numerusform>%1 online</numerusform>
|
||||
</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This secret chat is not yet ready. Your chat partner needs to go online first.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ChatSelectionPage</name>
|
||||
|
@ -916,10 +920,6 @@
|
|||
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Loading contacts...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
@ -928,6 +928,10 @@
|
|||
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Search a contact...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NotificationManager</name>
|
||||
|
@ -1655,9 +1659,5 @@
|
|||
<source>Pending acknowledgement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Ready to use</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
Loading…
Reference in a new issue