diff --git a/_locales/de/messages.json b/_locales/de/messages.json index dc28e1e26..cc088f205 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -1457,6 +1457,6 @@ "message": "Bitte wählen Sie mindestens zwei Gruppenmitglieder aus." }, "closedGroupMaxSize": { - "message": "Eine geschlossene Gruppe kann maximal zwanzig Mitglieder haben." + "message": "Eine geschlossene Gruppe kann maximal einhundert Mitglieder haben." } } \ No newline at end of file diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 110748d36..f82c6c8eb 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -2209,7 +2209,7 @@ "androidKey": "activity_create_closed_group_not_enough_group_members_error" }, "closedGroupMaxSize": { - "message": "A closed group cannot have more than 20 members", + "message": "A closed group cannot have more than 100 members", "androidKey": "activity_create_closed_group_too_many_group_members_error" }, "noBlockedContacts": { diff --git a/_locales/es/messages.json b/_locales/es/messages.json index 342dbd904..ed3dcafd8 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -1403,6 +1403,6 @@ "message": "Por favor, elige al menos 2 miembros del grupo" }, "closedGroupMaxSize": { - "message": "Un grupo cerrado no puede tener más de 20 miembros" + "message": "Un grupo cerrado no puede tener más de 100 miembros" } } \ No newline at end of file diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index 88a5f74d6..e507f7352 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -1403,7 +1403,7 @@ "message": "Veuillez sélectionner au moins 2 membres" }, "closedGroupMaxSize": { - "message": "Un groupe privé ne peut pas avoir plus de 20 membres" + "message": "Un groupe privé ne peut pas avoir plus de 100 membres" }, "contextMenuNoSuggestions": { "message": "Pas de suggestions", diff --git a/_locales/id/messages.json b/_locales/id/messages.json index e51394097..25c533fad 100644 --- a/_locales/id/messages.json +++ b/_locales/id/messages.json @@ -1397,7 +1397,7 @@ "message": "Pilih setidaknya 2 anggota grup" }, "closedGroupMaxSize": { - "message": "Grup tertutup maksimal berisi 20 anggota" + "message": "Grup tertutup maksimal berisi 100 anggota" }, "noBlockedContacts": { "message": "Tidak ada kontak yang diblokir" diff --git a/_locales/it/messages.json b/_locales/it/messages.json index 38ee2b883..72b14f3cb 100644 --- a/_locales/it/messages.json +++ b/_locales/it/messages.json @@ -1403,6 +1403,6 @@ "message": "Scegli almeno 2 membri del gruppo" }, "closedGroupMaxSize": { - "message": "Un gruppo chiuso non può avere più di 20 membri" + "message": "Un gruppo chiuso non può avere più di 100 membri" } } \ No newline at end of file diff --git a/_locales/ja/messages.json b/_locales/ja/messages.json index 74c19d1e5..34005adbf 100644 --- a/_locales/ja/messages.json +++ b/_locales/ja/messages.json @@ -1403,7 +1403,7 @@ "message": "グループメンバーを少なくとも 2 人選択してください" }, "closedGroupMaxSize": { - "message": "閉じたグループは 20 人を超えるメンバーを抱えることはできません" + "message": "閉じたグループは 100 人を超えるメンバーを抱えることはできません" }, "noBlockedContacts": { "message": "ブロックしている連絡先はありません" diff --git a/_locales/pl/messages.json b/_locales/pl/messages.json index e2ca51fa5..77d2dcc51 100644 --- a/_locales/pl/messages.json +++ b/_locales/pl/messages.json @@ -1400,7 +1400,7 @@ "message": "Wprowadź krótszą nazwę grupy" }, "closedGroupMaxSize": { - "message": "Grupa zamknięta nie może mieć więcej niż 20 członków" + "message": "Grupa zamknięta nie może mieć więcej niż 100 członków" }, "noBlockedContacts": { "message": "Brak zablokowanych kontaktów" diff --git a/_locales/pt_BR/messages.json b/_locales/pt_BR/messages.json index e00f0e6fb..a95e0db4a 100644 --- a/_locales/pt_BR/messages.json +++ b/_locales/pt_BR/messages.json @@ -1403,6 +1403,6 @@ "message": "Escolha pelo menos 2 membros do grupo" }, "closedGroupMaxSize": { - "message": "Um grupo fechado não pode ter mais de 20 membros" + "message": "Um grupo fechado não pode ter mais de 100 membros" } } \ No newline at end of file diff --git a/_locales/ru/messages.json b/_locales/ru/messages.json index e22014637..9870f1a0d 100644 --- a/_locales/ru/messages.json +++ b/_locales/ru/messages.json @@ -1403,7 +1403,7 @@ "message": "Пожалуйста, выберите как минимум 1 участников группы" }, "closedGroupMaxSize": { - "message": "В закрытой группе не может быть больше 20 участников" + "message": "В закрытой группе не может быть больше 100 участников" }, "contextMenuNoSuggestions": { "message": "No Suggestions", diff --git a/_locales/vi/messages.json b/_locales/vi/messages.json index ed5f078e7..d5d754c5c 100644 --- a/_locales/vi/messages.json +++ b/_locales/vi/messages.json @@ -1361,6 +1361,6 @@ "message": "Vui lòng chọn ít nhất 2 thành viên trong nhóm" }, "closedGroupMaxSize": { - "message": "Một nhóm kín không thể có nhiều hơn 20 thành viên" + "message": "Một nhóm kín không thể có nhiều hơn 100 thành viên" } } \ No newline at end of file diff --git a/js/util_worker_tasks.js b/js/util_worker_tasks.js index 90fa017cd..10c50721c 100644 --- a/js/util_worker_tasks.js +++ b/js/util_worker_tasks.js @@ -2,7 +2,6 @@ /* eslint-disable strict */ const functions = { - stringToArrayBufferBase64, arrayBufferToStringBase64, calcPoW, }; @@ -35,9 +34,6 @@ function prepareErrorForPostMessage(error) { return error.message; } -function stringToArrayBufferBase64(string) { - return dcodeIO.ByteBuffer.wrap(string, 'base64').toArrayBuffer(); -} function arrayBufferToStringBase64(arrayBuffer) { return dcodeIO.ByteBuffer.wrap(arrayBuffer).toString('base64'); } diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index f52030485..4721cecc8 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -23,7 +23,7 @@ function MessageReceiver() { // bind events lokiPublicChatAPI.on( 'publicMessage', - window.NewReceiver.handleUnencryptedMessage + window.NewReceiver.handlePublicMessage ); openGroupBound = true; } @@ -36,9 +36,6 @@ MessageReceiver.stringToArrayBuffer = string => Promise.resolve(dcodeIO.ByteBuffer.wrap(string, 'binary').toArrayBuffer()); MessageReceiver.arrayBufferToString = arrayBuffer => Promise.resolve(dcodeIO.ByteBuffer.wrap(arrayBuffer).toString('binary')); - -MessageReceiver.stringToArrayBufferBase64 = string => - callWorker('stringToArrayBufferBase64', string); MessageReceiver.arrayBufferToStringBase64 = arrayBuffer => callWorker('arrayBufferToStringBase64', arrayBuffer); @@ -112,7 +109,5 @@ textsecure.MessageReceiver.stringToArrayBuffer = MessageReceiver.stringToArrayBuffer; textsecure.MessageReceiver.arrayBufferToString = MessageReceiver.arrayBufferToString; -textsecure.MessageReceiver.stringToArrayBufferBase64 = - MessageReceiver.stringToArrayBufferBase64; textsecure.MessageReceiver.arrayBufferToStringBase64 = MessageReceiver.arrayBufferToStringBase64; diff --git a/package.json b/package.json index e672f2387..ed3e34150 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "session-desktop", "productName": "Session", "description": "Private messaging from your desktop", - "version": "1.4.5", + "version": "1.4.7", "license": "GPL-3.0", "author": { "name": "Loki Project", diff --git a/ts/receiver/dataMessage.ts b/ts/receiver/dataMessage.ts index 33f408e76..68485227e 100644 --- a/ts/receiver/dataMessage.ts +++ b/ts/receiver/dataMessage.ts @@ -263,23 +263,31 @@ export async function handleDataMessage( const message = await processDecrypted(envelope, dataMessage); const ourPubKey = window.textsecure.storage.user.getNumber(); + const source = envelope.source; const senderPubKey = envelope.senderIdentity || envelope.source; const isMe = senderPubKey === ourPubKey; - const conversation = ConversationController.getInstance().get(senderPubKey); + const senderConversation = await ConversationController.getInstance().getOrCreateAndWait( + senderPubKey, + 'private' + ); // Check if we need to update any profile names - if (!isMe && conversation && message.profile) { - await updateProfile(conversation, message.profile, message.profileKey); + if (!isMe && senderConversation && message.profile) { + await updateProfile( + senderConversation, + message.profile, + message.profileKey + ); } if (isMessageEmpty(message)) { window.log.warn(`Message ${getEnvelopeId(envelope)} ignored; it was empty`); return removeFromCache(envelope); } - const source = envelope.senderIdentity || senderPubKey; - const ownDevice = await isUs(source); + const ownDevice = await isUs(senderPubKey); - const ownMessage = conversation?.isMediumGroup() && ownDevice; + const sourceConversation = ConversationController.getInstance().get(source); + const ownMessage = sourceConversation?.isMediumGroup() && ownDevice; const ev: any = {}; if (ownMessage) { @@ -299,7 +307,7 @@ export async function handleDataMessage( ev.confirm = () => removeFromCache(envelope); ev.data = { - source, + source: senderPubKey, sourceDevice: 1, timestamp: _.toNumber(envelope.timestamp), receivedAt: envelope.receivedAt, diff --git a/ts/receiver/receiver.ts b/ts/receiver/receiver.ts index 22bd112be..5eff029cb 100644 --- a/ts/receiver/receiver.ts +++ b/ts/receiver/receiver.ts @@ -270,7 +270,7 @@ async function handleDecryptedEnvelope( } } -export async function handleUnencryptedMessage({ message: outerMessage }: any) { +export async function handlePublicMessage({ message: outerMessage }: any) { const { source } = outerMessage; const { group, profile, profileKey } = outerMessage.message; @@ -289,9 +289,15 @@ export async function handleUnencryptedMessage({ message: outerMessage }: any) { const isPublicChatMessage = group && group.id && !!group.id.match(/^publicChat:/); + if (!isPublicChatMessage) { + throw new Error( + 'handlePublicMessage Should only be called with public message groups' + ); + } + const ev = { // Public chat messages from ourselves should be outgoing - type: isPublicChatMessage && isOurDevice ? 'sent' : 'message', + type: isOurDevice ? 'sent' : 'message', data: outerMessage, confirm: () => { /* do nothing */