Compare commits

...

9 Commits
main ... 5.46.x

Author SHA1 Message Date
Josh Perez 32f8a2a777 v5.46.0 2022-06-16 13:08:59 -04:00
Josh Perez 749a5fd3c6 Updates strings 2022-06-16 13:06:22 -04:00
automated-signal e292e4f498
Order unprocessed envelopes by receivedAtCounter
Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
2022-06-10 12:27:25 -07:00
Fedor Indutnyy aa7cf33c33 v5.46.0-beta.2 2022-06-08 07:44:31 -07:00
Fedor Indutnyy 80591456a1 Update strings 2022-06-08 07:44:21 -07:00
automated-signal 719cd6467f
Erased messages should not stall attachment jobs
Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
2022-06-07 15:38:14 -07:00
automated-signal ab86217a5c
Update to RingRTC v2.20.8
Co-authored-by: Jim Gustafson <jim@signal.org>
2022-06-03 14:08:05 -07:00
automated-signal 55d9bb0635
getUnreadByConversationAndMarkRead: Only query incoming messages
Co-authored-by: Scott Nonnenberg <scott@signal.org>
2022-06-03 09:30:47 -07:00
Scott Nonnenberg a407681d02
On Sender Key distribution message failure, don't update send status 2022-06-03 09:28:21 -07:00
22 changed files with 305 additions and 156 deletions

View File

@ -218,7 +218,7 @@
"description": "Shown as a header for non-pinned conversations in the left pane"
},
"archiveHelperText": {
"message": "Diese Unterhaltungen sind archiviert und erscheinen nur dann im Eingang, wenn neue Nachrichten eingehen.",
"message": "Diese Unterhaltungen sind archiviert und erscheinen nur dann wieder im Eingang, wenn für sie neue Nachrichten eingehen.",
"description": "Shown at the top of the archived conversations list in the left pane"
},
"noArchivedConversations": {
@ -234,7 +234,7 @@
"description": "Shown in menu for conversation, and marks conversation as unread"
},
"moveConversationToInbox": {
"message": "Rückgängig",
"message": "Dearchivieren",
"description": "Undoes Archive Conversation action, and moves archived conversation back to the main conversation list"
},
"pinConversation": {
@ -1078,7 +1078,7 @@
}
},
"cannotUpdateRequireManualDetail": {
"message": "Signal konnte nicht aktualisiert werden. Besuche $url$, um es manuell zu installieren. Kontaktiere danach $support$ hinsichtlich dieses Problems.",
"message": "Signal konnte nicht aktualisiert werden. Rufe $url$ auf, um es manuell zu installieren. Kontaktiere danach $support$ hinsichtlich dieses Problems.",
"description": "Shown if a general error happened while trying to install update package and manual update is required",
"placeholders": {
"url": {
@ -1538,7 +1538,7 @@
"description": "Button tooltip label for turning on the camera"
},
"calling__button--audio__label": {
"message": "Stummschalten",
"message": "Stumm­schalten",
"description": "Label under the audio button"
},
"calling__button--audio-disabled": {
@ -2414,7 +2414,7 @@
"description": "Shown if request to Signal servers to find phone number fails"
},
"startConversation--username-not-found": {
"message": "Nutzername nicht gefunden. $atUsername$ ist kein Signal-Nutzer. Achte darauf, dass du den vollständigen Nutzernamen eingegeben hast.",
"message": "Nutzername nicht gefunden. $atUsername$ ist kein Signal-Nutzer. Überprüfe, ob du den vollständigen Nutzernamen eingegeben hast.",
"description": "Shown in dialog if username is not found. Note that 'username' will be the output of at-username",
"placeholders": {
"atUsername": {
@ -2682,7 +2682,7 @@
"description": "For aria-label within conversation list. Describes if last message is not defined."
},
"BaseConversationListItem__aria-label": {
"message": "Zur Unterhaltung mit $title$ gehen",
"message": "Zur Unterhaltung mit $title$",
"description": "Aria label for the conversation list item button",
"placeholders": {
"title": {
@ -2778,7 +2778,7 @@
"description": "Shown when you've clicked on an outgoing gift badge"
},
"message--giftBadge--preview--unopened": {
"message": "Du hast ein Geschenk empfangen",
"message": "Du hast ein Geschenk erhalten",
"description": "Shown to label the gift badge in notifications and the left pane"
},
"message--giftBadge--preview--redeemed": {
@ -2848,7 +2848,7 @@
"description": "The title of the outgoing gift badge detail dialog"
},
"modal--giftBadge--description": {
"message": "Du hast $name$ ein Abzeichen geschenkt. Wenn die Person es annimmt, wird sie sich aussuchen können, das Abzeichen anzuzeigen oder zu verstecken.",
"message": "Du hast $name$ ein Abzeichen geschenkt. Wenn der Empfänger es annimmt, kann er auswählen, ob er das das Abzeichen anzeigt oder ausblendet.",
"description": "The description of the outgoing gift badge detail dialog",
"placeholders": {
"name": {
@ -3128,7 +3128,7 @@
"description": "Shown in the shortcuts guide"
},
"Keyboard--unarchive-conversation": {
"message": "Unterhaltung in Eingang verschieben",
"message": "Unterhaltung dearchivieren",
"description": "Shown in the shortcuts guide"
},
"Keyboard--search": {
@ -3392,7 +3392,7 @@
"description": "Label for the X button used to remove a staged sticker"
},
"StickerCreator--DropStage--dragDrop": {
"message": "Klicke auf eine Datei oder ziehe diese, um einen Sticker hinzuzufügen.",
"message": "Klicke auf eine Datei oder nutze Ziehen und Ablegen, um einen Sticker hinzuzufügen.",
"description": "Shown on the + section of the file addition stage of sticker pack creation"
},
"StickerCreator--DropStage--help": {
@ -4278,7 +4278,7 @@
"description": "Shown if you click a group link and you have been forbidden from joining via the link"
},
"GroupV2--join--link-forbidden": {
"message": "Du kannst dieser Gruppe nicht über den Gruppen-Link beitreten, da dich ein Gruppen-Admin entfernt hat.",
"message": "Du kannst dieser Gruppe nicht über den Gruppen-Link beitreten, da ein Admin dich entfernt hat.",
"description": "Shown if you click a group link and you have been forbidden from joining via the link"
},
"GroupV2--join--prompt-with-approval": {
@ -5316,7 +5316,7 @@
}
},
"GroupV2--admin-approval-bounce--one": {
"message": "$joinerName$ hat eine Beitrittsanfrage über den Gruppenlink gestellt und zurückgezogen.",
"message": "$joinerName$ hat eine Beitrittsanfrage über den Gruppen-Link gestellt und zurückgezogen.",
"description": "Shown in timeline or conversation preview when v2 group changes",
"placeholders": {
"joinerName": {
@ -5326,7 +5326,7 @@
}
},
"GroupV2--admin-approval-bounce": {
"message": "$joinerName$ hat $numberOfRequests$ Beitrittsanfragen über den Gruppenlink gestellt und zurückgezogen.",
"message": "$joinerName$ hat $numberOfRequests$ Beitrittsanfragen über den Gruppen-Link gestellt und zurückgezogen.",
"description": "Shown in timeline or conversation preview when v2 group changes",
"placeholders": {
"joinerName": {
@ -5630,7 +5630,7 @@
"description": "In the instructions for becoming a sustainer. Second instruction."
},
"BadgeSustainerInstructions__instructions__3": {
"message": "Tippe auf »Unterstützer werden« und wähle einen Geldbetrag aus.",
"message": "Tippe auf »Unterstützer werden« und wähle einen Geldbetrag aus",
"description": "In the instructions for becoming a sustainer. Third instruction."
},
"CompositionArea--expand": {
@ -5718,7 +5718,7 @@
"description": "This is the label for the disappearing messages setting panel"
},
"ConversationDetails--disappearing-messages-info--group": {
"message": "Wenn aktiviert, werden versendete und empfangene Nachrichten dieser Gruppe nach dem Lesen verschwinden.",
"message": "Bei Aktivierung werden versendete und empfangene Nachrichten dieser Gruppe nach dem Lesen verschwinden.",
"description": "This is the info about the disappearing messages setting, in groups"
},
"ConversationDetails--disappearing-messages-info--direct": {
@ -5916,7 +5916,7 @@
}
},
"PendingRequests--deny-for--with-link": {
"message": "Beitrittsanfrage von $name$ ablehnen? Eine erneute Beitrittsanfrage über den Gruppenlink ist dann nicht mehr möglich.",
"message": "Beitrittsanfrage von $name$ ablehnen? Eine erneute Beitrittsanfrage über den Gruppen-Link ist dann nicht mehr möglich.",
"description": "This is the modal content when confirming denying a group request to join",
"placeholders": {
"name": {
@ -6024,7 +6024,7 @@
"description": "Title of dialog to block a user from requesting to join via the link again"
},
"PendingRequests--block--contents": {
"message": "$name$ kann dieser Gruppe dann nicht mehr über den Gruppenlink beitreten oder eine Beitrittsanfrage stellen. Ein manuelles Hinzufügen zur Gruppe bleibt jedoch möglich.",
"message": "$name$ kann dieser Gruppe dann nicht mehr über den Gruppen-Link beitreten oder eine Beitrittsanfrage stellen. Ein manuelles Hinzufügen zur Gruppe bleibt jedoch möglich.",
"description": "Details of dialog to block a user from requesting to join via the link again",
"placeholders": {
"name": {
@ -6330,7 +6330,7 @@
}
},
"RemoveGroupMemberConfirmation__description__with-link": {
"message": "$name$ aus der Gruppe entfernen? Ein Wiederbeitreten über den Gruppenlink ist dann nicht mehr möglich.",
"message": "$name$ aus der Gruppe entfernen? Ein erneutes Beitreten über den Gruppen-Link ist dann nicht mehr möglich.",
"description": "When confirming the removal of a group member, show this text in the dialog",
"placeholders": {
"name": {
@ -6478,7 +6478,7 @@
"description": "Text for an option in Conversation Details Disappearing Messages setting when user previously selected custom time"
},
"DisappearingTimeDialog__label--value": {
"message": "Nummer",
"message": "Zahl",
"description": "aria-label for the number select box"
},
"DisappearingTimeDialog__label--units": {
@ -6660,7 +6660,7 @@
"description": "Shown as aria label for trash icon next to username"
},
"ProfileEditor--username--confirm-delete-body": {
"message": "Dies löscht deinen Nutzernamen, was dazu führt, dass andere Nutzer ihn übernehmen können. Bist du sicher?",
"message": "Dies entfernt deinen Nutzernamen. Danach werden andere Nutzer ihn übernehmen können. Bist du sicher?",
"description": "Shown in dialog body if user has saved an empty string to delete their username"
},
"ProfileEditor--username--confirm-delete-button": {
@ -7138,7 +7138,7 @@
"description": "Button label to go to hidden stories pane"
},
"Stories__list-empty": {
"message": "Im Moment sind keine aktuellen Stories zu sehen",
"message": "Derzeit keine aktuellen Stories",
"description": "Description for when there are no stories to show"
},
"Stories__placeholder--text": {
@ -7176,11 +7176,11 @@
"description": "Button label to reply to a group story"
},
"StoryViewer__mute": {
"message": "Stummschalten",
"message": "Stumm­schalten",
"description": "Aria label for muting stories"
},
"StoryViewer__unmute": {
"message": "Stummschaltung aufheben",
"message": "Stumm­schaltung aufheben",
"description": "Aria label for unmuting stories"
},
"StoryViewsNRepliesModal__no-replies": {
@ -7220,7 +7220,7 @@
"description": "Label for menu item to go to conversation"
},
"StoryListItem__hide-modal--body": {
"message": "Story ausblenden? Aktualisierungen der Story von $name$ erscheinen nicht mehr oben auf der Storyliste.",
"message": "Story ausblenden? Neue Story-Aktualisierungen von $name$ erscheinen nicht mehr oben auf der Storyliste.",
"description": "Body for the confirmation dialog for hiding a story"
},
"StoryListItem__hide-modal--confirm": {
@ -7270,7 +7270,7 @@
"description": "Release notes for releases that only include bug fixes"
},
"WhatsNew__v5.45--1": {
"message": "Dynamische Audioindikatoren in Gruppenanrufen helfen dir dabei festzustellen, ob du gerade flüsterst, schreist oder genau richtig bist.",
"message": "Dynamische Audioindikatoren in Gruppenanrufen helfen dir festzustellen, ob du gerade flüsterst, schreist oder genau richtig bist.",
"description": "Release notes for v5.45"
},
"WhatsNew__v5.45--2": {

View File

@ -806,7 +806,7 @@
"description": "Shown in the search left pane when no results were found and primary device has SMS/MMS handling enabled"
},
"noSearchResultsInConversation": {
"message": "Δεν βρέθηκαν αποτελέσματα για \"$searchTerm$\" στο $conversationName$",
"message": "Δε βρέθηκαν αποτελέσματα για \"$searchTerm$\" στο $conversationName$",
"description": "Shown in the search left pane when no results were found",
"placeholders": {
"searchTerm": {
@ -1092,7 +1092,7 @@
}
},
"readOnlyVolume": {
"message": "Το Signal Desktop μάλλον βρίσκεται σε καραντίνα του macOS, και δεν θα μπορέσει να αναβαθμιστεί αυτόματα. Παρακαλώ προσπάθησε να μετακινήσεις το $app$ στο $folder$ με το Finder.",
"message": "Το Signal Desktop μάλλον βρίσκεται σε καραντίνα του macOS, και δεν θα μπορέσει να αναβαθμιστεί αυτόματα. Παρακαλώ προσπάθησε να μετακινήσεις το $app$ στο $folder$ με το Finder.",
"description": "Shown on MacOS if running on a read-only volume and we cannot update",
"placeholders": {
"app": {
@ -2018,7 +2018,7 @@
}
},
"notificationReaction": {
"message": "Ο/Η $sender$ αντέδρασε με $emoji$ στο μήνυμά σας",
"message": "Ο/Η $sender$ αντέδρασε με $emoji$ στο μήνυμά σας",
"description": "",
"placeholders": {
"sender": {
@ -2032,7 +2032,7 @@
}
},
"notificationReactionMessage": {
"message": "Ο/Η $sender$ αντέδρασε με $emoji$ στο: $message$",
"message": "Ο/Η $sender$ αντέδρασε με $emoji$ στο: $message$",
"description": "",
"placeholders": {
"sender": {
@ -2894,7 +2894,7 @@
"description": "Shown in the sticker pack manager next to sticker packs which are already installed."
},
"stickers--StickerManager--UninstallWarning": {
"message": "Ίσως να μη μπορέσεις να επανεγκαταστήσεις αυτό το πακέτο αυτοκολλήτων αν δεν έχεις πια το αρχικό μήνυμα.",
"message": "Ίσως να μη μπορέσεις να επανεγκαταστήσεις αυτό το πακέτο αυτοκολλήτων αν δεν έχεις πια το αρχικό μήνυμα.",
"description": "Shown in the sticker pack manager next to sticker packs which are already installed."
},
"stickers--StickerManager--Introduction--Image": {
@ -3404,7 +3404,7 @@
"description": "Text for the show margins toggle on the drop stage of the sticker creator"
},
"StickerCreator--DropStage--addMore": {
"message": "Προσθήκη $count$ ή περισσότερων",
"message": "Προσθήκη $count$ ή περισσότερων",
"description": "Text to show user how many more stickers they must add",
"placeholders": {
"hashtag": {
@ -3458,7 +3458,7 @@
"description": "Title for the upload stage of the sticker creator"
},
"StickerCreator--UploadStage-uploaded": {
"message": "Ανέβηκαν τα $count$ από τα $total$",
"message": "Ανέβηκαν τα $count$ από τα $total$",
"description": "Title for the upload stage of the sticker creator",
"placeholders": {
"count": {
@ -3480,7 +3480,7 @@
"description": "Help text for the share stage of the sticker creator"
},
"StickerCreator--ShareStage--callToAction": {
"message": "Χρησιμοποίησε το hashtag $hashtag$ για να βοηθήσεις άλλους χρήστες και χρήστριες να βρούν συνδέσμους πακέτων αυτοκολλήτων που θέλεις να είναι δημοσίως προσβάσιμα.",
"message": "Χρησιμοποίησε το hashtag $hashtag$ για να βοηθήσεις άλλους χρήστες και χρήστριες να βρούν συνδέσμους πακέτων αυτοκολλήτων που θέλεις να είναι δημοσίως προσβάσιμα.",
"description": "Call to action text for the share stage of the sticker creator",
"placeholders": {
"hashtag": {
@ -3544,7 +3544,7 @@
"description": "Text for the toast when an APNG image in the sticker creator is too small"
},
"StickerCreator--Toasts--errorUploading": {
"message": "Σφάλμα κατά το ανέβασμα των αυτοκολλήτων: $message$",
"message": "Σφάλμα κατά το ανέβασμα των αυτοκολλήτων: $message$",
"description": "Text for the toast when a sticker pack cannot be uploaded",
"placeholders": {
"message": {

View File

@ -52,7 +52,7 @@
"description": "The label that is used for the Help menu in the program main menu. The '&' indicates that the following letter will be used as the keyboard 'shortcut letter' for accessing the menu with the Alt-<letter> combination."
},
"mainMenuSettings": {
"message": نظیمات",
"message": رجیحات",
"description": "The label that is used for the Preferences menu in the program main menu. This should be consistent with the standard naming for Preferences on the operating system."
},
"appMenuServices": {
@ -76,11 +76,11 @@
"description": "Application menu command to close the application"
},
"editMenuUndo": {
"message": "لغو",
"message": "واگرد",
"description": "Edit menu command to remove recently-typed text"
},
"editMenuRedo": {
"message": "انجام دوباره",
"message": "بازانجام",
"description": "Edit menu command to restore previously undone typed text"
},
"editMenuCut": {
@ -108,7 +108,7 @@
"description": "Edit menu command to select all of the text in selected text box"
},
"editMenuStartSpeaking": {
"message": "صحبت را آغاز کنید",
"message": "آغاز صحبت",
"description": "Edit menu item under 'speech' to start dictation"
},
"editMenuStopSpeaking": {
@ -929,6 +929,10 @@
"message": "در حال دانلود",
"description": "Shown in the message bubble while a long message attachment is being downloaded"
},
"downloadFullMessage": {
"message": "Download Full Message",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": {
"message": "دانلود ضمیمه",
"description": "Shown in a message's triple-dot menu if there isn't room for a dedicated download button"
@ -7265,22 +7269,16 @@
"message": "این نسخه شامل شماری از بهینه سازی های کوچک و رفع عیب برای تداوم اجرای راحت سیگنال می باشد",
"description": "Release notes for releases that only include bug fixes"
},
"WhatsNew__v5.40--1": {
"message": "Bug fixes including a fix to an issue that would sometimes make it difficult to click on menus. ",
"description": "Release notes for v5.40"
"WhatsNew__v5.45--1": {
"message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"description": "Release notes for v5.45"
},
"WhatsNew__v5.40--2": {
"message": "Thanks to our open source contributors $dsanders11$ and $yusufsahinhamza$ for contributing to these improvements.",
"description": "Release notes for v5.40",
"placeholders": {
"dsanders11": {
"content": "$1",
"example": "dsanders11"
},
"yusufsahinhamza": {
"content": "$2",
"example": "yusufsahinhamza"
}
}
"WhatsNew__v5.45--2": {
"message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"description": "Release notes for v5.45"
},
"WhatsNew__v5.45--3": {
"message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"description": "Release notes for v5.45"
}
}

View File

@ -7172,7 +7172,7 @@
"description": "Button label to reply to a story"
},
"StoryViewer__reply-group": {
"message": "Reply to Group",
"message": "Répondre au groupe",
"description": "Button label to reply to a group story"
},
"StoryViewer__mute": {

View File

@ -930,7 +930,7 @@
"description": "Shown in the message bubble while a long message attachment is being downloaded"
},
"downloadFullMessage": {
"message": "Download Full Message",
"message": "Sækja öll skilaboðin",
"description": "Shown in the message bubble while a long message attachment is not downloaded"
},
"downloadAttachment": {
@ -2762,7 +2762,7 @@
"description": "Shown in a message's bubble when the message has been deleted for everyone."
},
"message--giftBadge--unopened": {
"message": "View this message on mobile to open it",
"message": "Skoðaðu þessi skilaboð á farsíma til að opna þau",
"description": "Shown in a message's bubble when you've received a gift badge from a contact"
},
"message--giftBadge--unopened--label": {
@ -2770,11 +2770,11 @@
"description": "Shown in a message's bubble when you've received a gift badge from a contact"
},
"message--giftBadge--unopened--toast--incoming": {
"message": "Check your phone to open gift",
"message": "Athugaðu farsímann þinn til að opna gjöf",
"description": "Shown when you've clicked on an incoming gift badge you haven't yet redeemed"
},
"message--giftBadge--unopened--toast--outgoing": {
"message": "Check your phone to view your gift",
"message": "Athugaðu farsímann þinn til að skoða gjöfina þína",
"description": "Shown when you've clicked on an outgoing gift badge"
},
"message--giftBadge--preview--unopened": {
@ -3280,11 +3280,11 @@
"description": "Shown in the shortcuts guide"
},
"Keyboard--accept-video-call": {
"message": "Accept call with video",
"message": "Samþykkja símtal með myndmerki",
"description": "Shown in the calling keyboard shortcuts guide"
},
"Keyboard--accept-audio-call": {
"message": "Accept call with audio",
"message": "Samþykkja símtal með hljóði",
"description": "Shown in the calling keyboard shortcuts guide"
},
"Keyboard--start-audio-call": {
@ -7270,11 +7270,11 @@
"description": "Release notes for releases that only include bug fixes"
},
"WhatsNew__v5.45--1": {
"message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"message": "Gagnvirkir vísar í hópsamtölum gera þér kleift að sja hvort þú sért að hvísla, kalla eða tala eðlilega.",
"description": "Release notes for v5.45"
},
"WhatsNew__v5.45--2": {
"message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"message": "Hópar sem þú hefur beðið um inngöngu í á símanum þínum (með boðstengli) virtast núna í borðtölvuforritinu.",
"description": "Release notes for v5.45"
},
"WhatsNew__v5.45--3": {

View File

@ -468,15 +468,15 @@
"description": "Description of what will happen with your debug log"
},
"debugLogError": {
"message": "Er is iets mis gegaan bij het uploaden. Suur alsjeblieft een e-mail naar support@signal.org en voeg aan die e-mail je foutopsporingslog toe als een tekstbestand.",
"message": "Er is iets mis gegaan bij het uploaden. Stuur alsjeblieft een e-mail naar support@signal.org en voeg aan die e-mail je foutopsporingslog toe als een tekstbestand.",
"description": "Error message a recommendations if debug log upload fails"
},
"debugLogSuccess": {
"message": "Foutopsporingslog succesvol geupload",
"message": "Foutopsporingslog succesvol geüpload",
"description": "Title of the success page for submitting a debug log"
},
"debugLogSuccessNextSteps": {
"message": "Neem nu contact op met ondersteuning en kopiëer de URL hieronder om die samen met een omschrijving van je probleem en een omschrijving van de stappen om het probleem te veroorzaken in te dienen.",
"message": "Neem nu contact op met ondersteuning en kopieer de URL hieronder om die samen met een omschrijving van je probleem en een omschrijving van de stappen om het probleem te veroorzaken in te dienen.",
"description": "Explanation of next steps to take when submitting debug log"
},
"debugLogLogIsIncomplete": {
@ -876,7 +876,7 @@
"description": ""
},
"typingAlt": {
"message": "Typ-animatie voor dit gesprek",
"message": "Iemand in dit gesprek is aan het typen",
"description": "Used as the 'title' attribute for the typing animation"
},
"contactInAddressBook": {
@ -1782,11 +1782,11 @@
"description": "Shown in the participants list to describe how many people are in the call"
},
"calling__in-this-call--one": {
"message": "1 persoon in dit gesprek",
"message": "1 persoon in deze oproep",
"description": "Shown in the participants list to describe how many people are in the call"
},
"calling__in-this-call--many": {
"message": "$people$ personen in dit gesprek aanwezig",
"message": "$people$ personen in deze oproep aanwezig",
"description": "Shown in the participants list to describe how many people are in the call",
"placeholders": {
"people": {
@ -1822,7 +1822,7 @@
"description": "Title for the share screen notification"
},
"calling__presenting--notification-body": {
"message": "Klik hier om wanneer je klaar bent met je scherm laten zien terug te gaan naar de oproep.",
"message": "Klik hier wanneer je klaar bent met je scherm laten zien om terug te gaan naar de oproep.",
"description": "Body text for the share screen notification"
},
"calling__presenting--info": {
@ -1904,11 +1904,11 @@
"description": "Header for permissions section of settings"
},
"mediaPermissionsDescription": {
"message": "Ik geef Signal toestemming om mijn microfoon te gebruiken",
"message": "Ik geef de Signal-app toestemming om mijn microfoon te gebruiken",
"description": "Description of the media permission description"
},
"mediaCameraPermissionsDescription": {
"message": "Ik geef Signal toestemming om mijn camera te gebruiken",
"message": "Ik geef de Signal-app toestemming om mijn camera te gebruiken",
"description": "Description of the media permission description"
},
"general": {
@ -1964,11 +1964,11 @@
"description": "Text of the button that deletes all data"
},
"deleteAllDataProgress": {
"message": "Verbinding wordt verbroken en alle gegevens worden gewist",
"message": "Aan het ontkoppelen en alle gegevens aan het wissen",
"description": "Message shown to user when app is disconnected and data deleted"
},
"deleteOldIndexedDBData": {
"message": "Je hebt nog overbodige gegevens op je apparaat van een Signal-desktop installatie van voor oktober 2018. Als je er voor kiest om verder te gaan, dan zullen alle gegevens inclusief al je gesprekjen worden gewist van Signal-desktop en zal je met een schone installatie beginnen.",
"message": "Je hebt nog overbodige gegevens op je apparaat van een Signal-desktop installatie van voor oktober 2018. Als je er voor kiest om verder te gaan, dan zullen alle gegevens inclusief al je gesprekken worden gewist van Signal-desktop en zal je met een schone installatie beginnen.",
"description": "Shown if user last ran Signal Desktop before October 2018"
},
"deleteOldData": {
@ -2370,7 +2370,7 @@
"description": "Name for the conversation with your own phone number"
},
"noteToSelfHero": {
"message": "Je kunt in dit gesprek notities voor jezelf achterlaten. Als je gebruik maakt van gekoppelde apparaten dan zullen notities worden gesynchroniseerd.",
"message": "Je kunt in dit speciale gesprek notities voor jezelf achterlaten. Je kunt notities toevoegen en teruglezen vanaf al je gekoppelde apparaten, want noties die zijn verzonden na het moment van koppelen worden gesynchroniseerd.",
"description": "Description for the Note to Self conversation"
},
"notificationDrawAttention": {
@ -3024,7 +3024,7 @@
"description": "When a message is too long this is the affordance to expand the message"
},
"Message--unsupported-message": {
"message": "Je hebt een bericht ontvangen van $contact$ die niet kan worden verwerkt of niet kan worden weeggegeven omdat het gebruik maakt van een nieuwe functie van Signal.",
"message": "Je hebt een bericht ontvangen van $contact$ die niet kan worden verwerkt of niet kan worden weergegeven omdat het gebruik maakt van een nieuwe functie van Signal.",
"description": "",
"placeholders": {
"contact": {
@ -3034,7 +3034,7 @@
}
},
"Message--unsupported-message-ask-to-resend": {
"message": "Je kunt $contact$ vragen om dit bericht opnieuw te verzenden nudat je een actuele versie van Signal gebruikt.",
"message": "Nu je een actuele versie van Signal gebruikt kun je $contact$ vragen om dit bericht opnieuw te verzenden .",
"description": "",
"placeholders": {
"contact": {
@ -3048,7 +3048,7 @@
"description": ""
},
"Message--from-me-unsupported-message-ask-to-resend": {
"message": "Toekomstige berichten zoals dit bericht zullen worden gesynchroniseerd nudat je een actuele versie van Signal gebruikt.",
"message": "Nu je een actuele versie van Signal gebruikt zullen toekomstige berichten die vergelijkbaar zijn met deze worden gesynchroniseerd.",
"description": ""
},
"Message--update-signal": {
@ -3144,7 +3144,7 @@
"description": "Shown in the shortcuts guide"
},
"Keyboard--open-all-media-view": {
"message": "Alle media uit dit gesprek-scherm weergeven",
"message": "Alle media uit dit gesprek weergeven",
"description": "Shown in the shortcuts guide"
},
"Keyboard--open-emoji-chooser": {
@ -3914,7 +3914,7 @@
"description": "Shown in conversation history when your audio call is missed or declined"
},
"missedOrDeclinedOutgoingVideoCall": {
"message": "Onbeantwoord videogesprek",
"message": "Onbeantwoorde video-oproep",
"description": "Shown in conversation history when your video call is missed or declined"
},
"incomingAudioCall": {
@ -5558,7 +5558,7 @@
"description": "Shown in timeline when a group is upgraded and you were invited instead of added"
},
"GroupV1--Migration--invited--one": {
"message": "$contact$ niet toegevoegd worden aan de nieuwe-stijl groep en je hebt daarom een uitnodiging gekregen om opnieuw lid te worden.",
"message": "$contact$ kon niet toegevoegd worden aan de nieuwe-stijl groep en heeft daarom een uitnodiging gekregen om opnieuw lid te worden.",
"description": "Shown in timeline when a group is upgraded and one person was invited, instead of added",
"placeholders": {
"contact": {
@ -5718,11 +5718,11 @@
"description": "This is the label for the disappearing messages setting panel"
},
"ConversationDetails--disappearing-messages-info--group": {
"message": "Nieuwe berichten in dit gesprek zullen voor iedereen worden gewist nadat de ingestelde tijdspanne is verlopen. De tijdspanne begint voor iedere persoon individueel pas te lopen vanaf het moment dat hij of zij het bericht heeft gezien. — Gebruik dit niet ter beveiliging, want Signal kan niet garanderen dat berichten op het apparaat van een ander ook daadwerkelijk worden gewist.",
"message": "Nieuwe berichten in dit gesprek zullen voor iedereen worden gewist nadat de ingestelde tijdspanne is verlopen. De tijdspanne begint voor iedere persoon individueel pas te lopen vanaf het moment dat hij of zij het bericht heeft gezien. — Gebruik verlopende berichten niet ter beveiliging, want Signal kan niet garanderen dat berichten op het apparaat van een ander ook daadwerkelijk worden gewist.",
"description": "This is the info about the disappearing messages setting, in groups"
},
"ConversationDetails--disappearing-messages-info--direct": {
"message": "Indien ingeschakeld zal elk nieuwe bericht dat in dit gesprek verzonden of ontvangen wordt voor iedere deelnemer aan het gesprek gewist worden nadat de ingestelde tijd verlopen is. De tijd gaat voor iedere deelnemer pas lopen vanaf het moment dat hij of zij het bericht heeft gezien. Gebruik verlopende berichten niet ter beveiliging, want Signal kan niet garanderen dat een bericht op het apparaat van een ander daadwerkelijk wordt gewist.",
"message": "Nieuwe berichten in dit gesprek zullen voor iedereen worden gewist nadat de ingestelde tijdspanne is verlopen. De tijdspanne begint voor iedere persoon individueel pas te lopen vanaf het moment dat hij of zij het bericht heeft gezien. — Gebruik verlopende berichten niet ter beveiliging, want Signal kan niet garanderen dat berichten op het apparaat van een ander ook daadwerkelijk worden gewist.",
"description": "This is the info about the disappearing messages setting, for direct conversations"
},
"ConversationDetails--notifications": {
@ -5762,7 +5762,7 @@
"description": "This is a button to leave a group"
},
"ConversationDetailsActions--block-group": {
"message": "Groep blokkeren en verlaten",
"message": "Groep blokkeren",
"description": "This is a button to block a group"
},
"ConversationDetailsActions--leave-group-must-choose-new-admin": {
@ -6518,7 +6518,7 @@
"description": "Name of the 'weeks' unit select for the custom disappearing message timeout dialog"
},
"settings__DisappearingMessages__footer": {
"message": "Stel in dat berichten in alle nieuwe gesprekken die jij zelf begint een bepaalde tijd nadat ze gezien zijn voor zowel jou als je gesprekspartner vanzelf worden gewist.",
"message": "Hiermee stel je voor alle toekomstige gesprekken die jij zelf begint in dat berichten voor iedereen worden gewist nadat de ingestelde tijdspanne is verlopen. De tijdspanne begint voor iedere persoon individueel pas te lopen vanaf het moment dat hij of zij het bericht heeft gezien. — Gebruik verlopende berichten niet ter beveiliging, want Signal kan niet garanderen dat berichten op het apparaat van een ander ook daadwerkelijk worden gewist.",
"description": "Footer for the Disappearing Messages settings section"
},
"settings__DisappearingMessages__timer__label": {
@ -6616,7 +6616,7 @@
"description": "Shown on the edit username screen"
},
"ProfileEditor--username--check-characters": {
"message": "Gebruikersnamen mogen alleen uit de karakters a-z, 0-9 en _ bestaan.",
"message": "Gebruikersnamen mogen alleen uit de karakters a-Z, 0-9 en _ bestaan.",
"description": "Shown if user has attempted to use forbidden characters"
},
"ProfileEditor--username--check-starting-character": {
@ -6684,7 +6684,7 @@
"description": "ConfirmationDialog text for discarding changes"
},
"ProfileEditor--info": {
"message": "Signal-profielen worden eind-tot-eind-versleuteld uitgewisseld. Je profielinformatie is alleen zichtbaar voor personen die zijn opgeslagen in jouw contactenlijst, personen naar wie je zelf een nieuw gesprek initieert, personen van wie je een gespreksverzoek aanvaard en alle leden van een groep waarvan jij lid bent. $learnMore$",
"message": "In Signal worden profielen, net als berichten en oproepen, eind-tot-eind-versleuteld uitgewisseld. Je profielnaam, -foto en -omschrijving zijn alleen zichtbaar voor personen die zijn opgeslagen in jouw contactenlijst, personen naar wie je zelf een nieuw gesprek initieert, personen van wie je een gespreksverzoek aanvaard en alle leden van groepen waarvan jij lid bent. Niemand anders kan jouw profiel zien, zelfs Signal niet. $learnMore$",
"description": "Information shown at the bottom of the profile editor section",
"placeholders": {
"learnMore": {
@ -6796,7 +6796,7 @@
"description": "Button to switch the settings view"
},
"Preferences--lastSynced": {
"message": "Meest recent geimporteerd op $date$ om $time$",
"message": "Meest recent geïmporteerd op $date$ om $time$",
"description": "Label for date and time of last sync operation",
"placeholders": {
"date": {

View File

@ -2848,7 +2848,7 @@
"description": "The title of the outgoing gift badge detail dialog"
},
"modal--giftBadge--description": {
"message": "Você deu um selo para $name$. Quando será aceito, a pessoa terá a opção de mostrar ou esconder este selo.",
"message": "Você deu um selo para $name$. Quando for aceito, a pessoa terá a opção de mostrar ou esconder este selo.",
"description": "The description of the outgoing gift badge detail dialog",
"placeholders": {
"name": {
@ -6932,7 +6932,7 @@
"description": "Second line of the dialog displayed when Windows installer can't close application automatically and needs user intervention to complete the installation."
},
"NSIS__appRunning": {
"message": "$appName$ está funcionando.\nClique no OK para fechar.\nSe não fechar, tente fechá-lo manualmente.",
"message": "$appName$ está aberto.\nClique em OK para fechá-lo.\nSe não fechar, tente fechá-lo manualmente.",
"description": "The contents of a dialog displayed when Windows installer detect that the application is running and asks user to close it. Note: please keep the line breaks so that the text occupies three separate lines",
"placeholders": {
"appName": {
@ -6942,11 +6942,11 @@
}
},
"NSIS__decompressionFailed": {
"message": "Falha ao descompactar os arquivos. Por favor, tente iniciar o instalador novamente.",
"message": "Falha ao extrair os arquivos de instalação. Por favor, inicie o instalador novamente.",
"description": "Displayed when Windows installer cannot decompress application files"
},
"NSIS__uninstallFailed": {
"message": "Falha ao desinstalar os arquivos do aplicativo antigo. Por favor, tente iniciar o instalador novamente.",
"message": "Falha ao desinstalar os arquivos do aplicativo antigo. Por favor, inicie o instalador novamente.",
"description": "Displayed when Windows installer cannot uninstall the old application"
},
"CrashReportDialog__title": {
@ -7164,7 +7164,7 @@
"description": "Aria label for pausing a story"
},
"StoryViewer__play": {
"message": "Tocar",
"message": "Reproduzir",
"description": "Aria label for playing a story"
},
"StoryViewer__reply": {

View File

@ -7270,15 +7270,15 @@
"description": "Release notes for releases that only include bug fixes"
},
"WhatsNew__v5.45--1": {
"message": "Dynamic audio indicators in group calls help you see if you're whispering, yelling, or just right.",
"message": "Am adăugat indicatori audio în apelurile de grup pentru a te ajuta să vezi dacă vorbești prea încet, prea tare sau perfect.",
"description": "Release notes for v5.45"
},
"WhatsNew__v5.45--2": {
"message": "Groups youve requested to join from your phone (via an invite link) will now show up on Desktop.",
"message": "Grupurile către care ai trimis cerere de înscriere de pe telefon (folosind linkul grupului) vor apărea acum și în Desktop.",
"description": "Release notes for v5.45"
},
"WhatsNew__v5.45--3": {
"message": "Got a spotty Wi-Fi connection? Not a problem, you can now retry downloading attachments.",
"message": "Ai o conexiune Wi-Fi instabilă? Acum nu mai este o problemă, deoarece acum vei putea încerca din nou descărcarea atașamentelor.",
"description": "Release notes for v5.45"
}
}

View File

@ -1012,15 +1012,15 @@
}
},
"audioPermissionNeeded": {
"message": "För att skicka ljudmeddelanden, vänligen ge Signal Desktop åtkomst till din mikrofon.",
"message": "För att skicka ljudmeddelanden, tillåt Signal Desktop att få åtkomst till din mikrofon.",
"description": "Shown if the user attempts to send an audio message without audio permissions turned on"
},
"audioCallingPermissionNeeded": {
"message": "För att ringa måste du låta Signal Desktop få åtkomst till din mikrofon.",
"message": "För att ringa måste du tillåta att Signal Desktop får åtkomst till din mikrofon.",
"description": "Shown if the user attempts access the microphone for calling without audio permissions turned on"
},
"videoCallingPermissionNeeded": {
"message": "För videosamtal måste du låta Signal Desktop få åtkomst till din kamera.",
"message": "För videosamtal måste du tillåta att Signal Desktop får åtkomst till din kamera.",
"description": "Shown if the user attempts access the camera for video calling without video permissions turned on"
},
"allowAccess": {
@ -2572,7 +2572,7 @@
"description": "Shown in update dialog when partial update fails and we have to ask user to download full update"
},
"autoUpdateNewVersionInstructions": {
"message": "Vänligen starta om Signal för att uppdatera",
"message": "Starta om Signal för att uppdatera",
"description": ""
},
"autoUpdateRestartButtonLabel": {

View File

@ -4,7 +4,7 @@
"description": "Private messaging from your desktop",
"desktopName": "signal.desktop",
"repository": "https://github.com/signalapp/Signal-Desktop.git",
"version": "5.46.0-beta.1",
"version": "5.46.0",
"license": "AGPL-3.0-only",
"author": {
"name": "Signal Messenger, LLC",
@ -164,7 +164,7 @@
"redux-ts-utils": "3.2.2",
"reselect": "4.1.2",
"rimraf": "2.6.2",
"ringrtc": "https://github.com/signalapp/signal-ringrtc-node.git#d00319a0153115735eb5ba6e324795d6bb4f525b",
"ringrtc": "https://github.com/signalapp/signal-ringrtc-node.git#ebd88d19b7a520f5887e5bed529db9fa5631d07e",
"rotating-file-stream": "2.1.5",
"sanitize.css": "11.0.0",
"semver": "5.4.1",

View File

@ -286,12 +286,15 @@ async function _runJob(job?: AttachmentDownloadJobType): Promise<void> {
Errors.toLogFormat(error)
);
await _addAttachmentToMessage(
message,
_markAttachmentAsTransientError(attachment),
{ type, index }
);
await _finishJob(message, id);
try {
await _addAttachmentToMessage(
message,
_markAttachmentAsTransientError(attachment),
{ type, index }
);
} finally {
await _finishJob(message, id);
}
return;
}
@ -302,32 +305,35 @@ async function _runJob(job?: AttachmentDownloadJobType): Promise<void> {
Errors.toLogFormat(error)
);
// Remove `pending` flag from the attachment.
await _addAttachmentToMessage(
message,
{
...attachment,
downloadJobId: id,
},
{ type, index }
);
if (message) {
await saveMessage(message.attributes, {
ourUuid: window.textsecure.storage.user.getCheckedUuid().toString(),
});
try {
// Remove `pending` flag from the attachment.
await _addAttachmentToMessage(
message,
{
...attachment,
downloadJobId: id,
},
{ type, index }
);
if (message) {
await saveMessage(message.attributes, {
ourUuid: window.textsecure.storage.user.getCheckedUuid().toString(),
});
}
const failedJob = {
...job,
pending: 0,
attempts: currentAttempt,
timestamp:
Date.now() + (RETRY_BACKOFF[currentAttempt] || RETRY_BACKOFF[3]),
};
await saveAttachmentDownloadJob(failedJob);
} finally {
delete _activeAttachmentDownloadJobs[id];
_maybeStartJob();
}
const failedJob = {
...job,
pending: 0,
attempts: currentAttempt,
timestamp:
Date.now() + (RETRY_BACKOFF[currentAttempt] || RETRY_BACKOFF[3]),
};
await saveAttachmentDownloadJob(failedJob);
delete _activeAttachmentDownloadJobs[id];
_maybeStartJob();
}
}

View File

@ -1401,7 +1401,13 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
...(this.get('sendStateByConversationId') || {}),
};
const sendIsNotFinal =
'sendIsNotFinal' in result.value && result.value.sendIsNotFinal;
const sendIsFinal = !sendIsNotFinal;
// Capture successful sends
const successfulIdentifiers: Array<string> =
sendIsFinal &&
'successfulIdentifiers' in result.value &&
Array.isArray(result.value.successfulIdentifiers)
? result.value.successfulIdentifiers
@ -1435,9 +1441,11 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
}
});
// Integrate sends via sealed sender
const previousUnidentifiedDeliveries =
this.get('unidentifiedDeliveries') || [];
const newUnidentifiedDeliveries =
sendIsFinal &&
'unidentifiedDeliveries' in result.value &&
Array.isArray(result.value.unidentifiedDeliveries)
? result.value.unidentifiedDeliveries
@ -1445,6 +1453,7 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
const promises: Array<Promise<unknown>> = [];
// Process errors
let errors: Array<CustomError>;
if (result.value instanceof SendMessageProtoError && result.value.errors) {
({ errors } = result.value);
@ -1467,7 +1476,7 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
window.ConversationController.get(error.identifier) ||
window.ConversationController.get(error.number);
if (conversation && !saveErrors) {
if (conversation && !saveErrors && sendIsFinal) {
const previousSendState = getOwn(
sendStateByConversationId,
conversation.id

View File

@ -2101,13 +2101,15 @@ async function getUnreadByConversationAndMarkRead({
expirationStartTimestamp = $expirationStartTimestamp,
json = json_patch(json, $jsonPatch)
WHERE
conversationId = $conversationId AND
(${_storyIdPredicate(storyId, isGroup)}) AND
isStory IS 0 AND
type IS 'incoming' AND
(
expirationStartTimestamp IS NULL OR
expirationStartTimestamp > $expirationStartTimestamp
) AND
expireTimer > 0 AND
conversationId = $conversationId AND
(${_storyIdPredicate(storyId, isGroup)}) AND
received_at <= $newestUnreadAt;
`
).run({
@ -3252,7 +3254,7 @@ async function getAllUnprocessedAndIncrementAttempts(): Promise<
`
SELECT *
FROM unprocessed
ORDER BY timestamp ASC;
ORDER BY receivedAtCounter ASC;
`
)
.all();

View File

@ -0,0 +1,28 @@
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { Database } from 'better-sqlite3';
import type { LoggerType } from '../../types/Logging';
export default function updateToSchemaVersion59(
currentVersion: number,
db: Database,
logger: LoggerType
): void {
if (currentVersion >= 59) {
return;
}
db.transaction(() => {
db.exec(
`
CREATE INDEX unprocessed_byReceivedAtCounter ON unprocessed
(receivedAtCounter)
`
);
db.pragma('user_version = 59');
})();
logger.info('updateToSchemaVersion59: success!');
}

View File

@ -0,0 +1,40 @@
// Copyright 2021-2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { Database } from 'better-sqlite3';
import type { LoggerType } from '../../types/Logging';
// TODO: DESKTOP-3694
export default function updateToSchemaVersion60(
currentVersion: number,
db: Database,
logger: LoggerType
): void {
if (currentVersion >= 60) {
return;
}
db.transaction(() => {
db.exec(
`
DROP INDEX expiring_message_by_conversation_and_received_at;
CREATE INDEX expiring_message_by_conversation_and_received_at
ON messages
(
conversationId,
storyId,
expirationStartTimestamp,
expireTimer,
received_at
)
WHERE isStory IS 0 AND type IS 'incoming';
`
);
db.pragma('user_version = 60');
})();
logger.info('updateToSchemaVersion60: success!');
}

View File

@ -34,6 +34,8 @@ import updateToSchemaVersion55 from './55-report-message-aci';
import updateToSchemaVersion56 from './56-add-unseen-to-message';
import updateToSchemaVersion57 from './57-rm-message-history-unsynced';
import updateToSchemaVersion58 from './58-update-unread';
import updateToSchemaVersion59 from './59-unprocessed-received-at-counter-index';
import updateToSchemaVersion60 from './60-update-expiring-index';
function updateToSchemaVersion1(
currentVersion: number,
@ -1931,6 +1933,8 @@ export const SCHEMA_VERSIONS = [
updateToSchemaVersion56,
updateToSchemaVersion57,
updateToSchemaVersion58,
updateToSchemaVersion59,
updateToSchemaVersion60,
];
export function updateSchema(db: Database, logger: LoggerType): void {

View File

@ -1658,7 +1658,7 @@ describe('SignalProtocolStore', () => {
id: '0-dropped',
envelope: 'old envelope',
timestamp: NOW - 2 * durations.MONTH,
receivedAtCounter: 0,
receivedAtCounter: -1,
version: 2,
attempts: 0,
}),
@ -1666,7 +1666,7 @@ describe('SignalProtocolStore', () => {
id: '2-two',
envelope: 'second',
timestamp: NOW + 2,
receivedAtCounter: 0,
receivedAtCounter: 1,
version: 2,
attempts: 0,
}),
@ -1674,7 +1674,7 @@ describe('SignalProtocolStore', () => {
id: '3-three',
envelope: 'third',
timestamp: NOW + 3,
receivedAtCounter: 0,
receivedAtCounter: 2,
version: 2,
attempts: 0,
}),
@ -1691,7 +1691,8 @@ describe('SignalProtocolStore', () => {
const items = await store.getAllUnprocessedAndIncrementAttempts();
assert.strictEqual(items.length, 3);
// they are in the proper order because the collection comparator is 'timestamp'
// they are in the proper order because the collection comparator is
// 'receivedAtCounter'
assert.strictEqual(items[0].envelope, 'first');
assert.strictEqual(items[1].envelope, 'second');
assert.strictEqual(items[2].envelope, 'third');

View File

@ -2286,4 +2286,44 @@ describe('SQL migrations test', () => {
);
});
});
describe('updateToSchemaVersion60', () => {
it('updates index to make query efficient', () => {
updateToVersion(60);
const items = db
.prepare(
`
EXPLAIN QUERY PLAN
UPDATE messages
INDEXED BY expiring_message_by_conversation_and_received_at
SET
expirationStartTimestamp = 342342,
json = json_patch(json, '{ "something": true }')
WHERE
conversationId = 'conversationId' AND
storyId IS NULL AND
isStory IS 0 AND
type IS 'incoming' AND
(
expirationStartTimestamp IS NULL OR
expirationStartTimestamp > 23423423
) AND
expireTimer > 0 AND
received_at <= 234234;
`
)
.all();
const detail = items.map(item => item.detail).join('\n');
assert.notInclude(detail, 'B-TREE');
assert.notInclude(detail, 'SCAN');
assert.include(
detail,
'SEARCH messages USING INDEX ' +
'expiring_message_by_conversation_and_received_at ' +
'(conversationId=? AND storyId=?)'
);
});
});
});

View File

@ -204,6 +204,8 @@ export class SendMessageProtoError extends Error implements CallbackResultType {
public readonly recipients?: Record<string, Array<number>>;
public readonly sendIsNotFinal?: boolean;
constructor({
successfulIdentifiers,
failoverIdentifiers,
@ -214,6 +216,7 @@ export class SendMessageProtoError extends Error implements CallbackResultType {
contentProto,
timestamp,
recipients,
sendIsNotFinal,
}: CallbackResultType) {
super(`SendMessageProtoError: ${SendMessageProtoError.getMessage(errors)}`);
@ -226,6 +229,7 @@ export class SendMessageProtoError extends Error implements CallbackResultType {
this.contentProto = contentProto;
this.timestamp = timestamp;
this.recipients = recipients;
this.sendIsNotFinal = sendIsNotFinal;
}
protected static getMessage(errors: CallbackResultType['errors']): string {

View File

@ -251,6 +251,10 @@ export interface CallbackResultType {
unidentifiedDeliveries?: Array<string>;
dataMessage?: Uint8Array;
// If this send is not the final step in a multi-step send, we shouldn't treat its
// results we would treat a one-step send.
sendIsNotFinal?: boolean;
// Fields necessary for send log save
contentHint?: number;
contentProto?: Uint8Array;

View File

@ -412,18 +412,31 @@ export async function sendToGroupViaSenderKey(options: {
newToMemberUuids.length
} members: ${JSON.stringify(newToMemberUuids)}`
);
await handleMessageSend(
window.textsecure.messaging.sendSenderKeyDistributionMessage(
{
contentHint: ContentHint.RESENDABLE,
distributionId,
groupId,
identifiers: newToMemberUuids,
},
sendOptions ? { ...sendOptions, online: false } : undefined
),
{ messageIds: [], sendType: 'senderKeyDistributionMessage' }
);
try {
await handleMessageSend(
window.textsecure.messaging.sendSenderKeyDistributionMessage(
{
contentHint: ContentHint.RESENDABLE,
distributionId,
groupId,
identifiers: newToMemberUuids,
},
sendOptions ? { ...sendOptions, online: false } : undefined
),
{ messageIds: [], sendType: 'senderKeyDistributionMessage' }
);
} catch (error) {
// If we partially fail to send the sender key distribution message (SKDM), we don't
// want the successful SKDM sends to be considered an overall success.
if (error instanceof SendMessageProtoError) {
throw new SendMessageProtoError({
...error,
sendIsNotFinal: true,
});
}
throw error;
}
// Update memberDevices with new devices
const updatedMemberDevices = [...memberDevices, ...newToMemberDevices];

View File

@ -13432,9 +13432,9 @@ rimraf@^3.0.0, rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
"ringrtc@https://github.com/signalapp/signal-ringrtc-node.git#d00319a0153115735eb5ba6e324795d6bb4f525b":
version "2.20.7"
resolved "https://github.com/signalapp/signal-ringrtc-node.git#d00319a0153115735eb5ba6e324795d6bb4f525b"
"ringrtc@https://github.com/signalapp/signal-ringrtc-node.git#ebd88d19b7a520f5887e5bed529db9fa5631d07e":
version "2.20.8"
resolved "https://github.com/signalapp/signal-ringrtc-node.git#ebd88d19b7a520f5887e5bed529db9fa5631d07e"
ripemd160@^2.0.0, ripemd160@^2.0.1:
version "2.0.1"