From 14bc67e81f5f5b645b28a76f69e7af64a913a2c2 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Fri, 1 Oct 2021 22:41:28 +0200 Subject: [PATCH 01/26] Exclude pgp signtures as attachments Signed-off-by: Daniel Kesselberg --- lib/IMAP/ImapMessageFetcher.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/IMAP/ImapMessageFetcher.php b/lib/IMAP/ImapMessageFetcher.php index 4d38dd2f79..0d476329e8 100644 --- a/lib/IMAP/ImapMessageFetcher.php +++ b/lib/IMAP/ImapMessageFetcher.php @@ -314,8 +314,11 @@ private function getPart(Horde_Mime_Part $p, string $partNo, bool $isFetched): v } } + $isAttachment = ($p->isAttachment() || $p->getType() === 'message/rfc822') && + !in_array($p->getType(), ['application/pgp-signature', 'application/pkcs7-signature', 'application/x-pkcs7-signature']); + // Regular attachments - if ($p->isAttachment() || $p->getType() === 'message/rfc822') { + if ($isAttachment) { $this->attachments[] = [ 'id' => $p->getMimeId(), 'messageId' => $this->uid, From c708a054fd8dcf5615ac75459b55679a1ad2b8b5 Mon Sep 17 00:00:00 2001 From: Richard Steinmetz Date: Mon, 27 Nov 2023 12:28:38 +0100 Subject: [PATCH 02/26] chore: add todos about injecting IAvailabilityCoordinator Signed-off-by: Richard Steinmetz --- lib/Controller/OutOfOfficeController.php | 1 + lib/Controller/PageController.php | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/Controller/OutOfOfficeController.php b/lib/Controller/OutOfOfficeController.php index c6ceb31870..43ac32ff8c 100644 --- a/lib/Controller/OutOfOfficeController.php +++ b/lib/Controller/OutOfOfficeController.php @@ -56,6 +56,7 @@ public function __construct( ) { parent::__construct(Application::APP_ID, $request); + // TODO: inject directly if support for nextcloud < 28 is dropped try { $this->availabilityCoordinator = $container->get(IAvailabilityCoordinator::class); } catch (ContainerExceptionInterface) { diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index 743dd9c03f..27db930c14 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -122,9 +122,10 @@ public function __construct(string $appName, $this->aiIntegrationsService = $aiIntegrationsService; $this->userManager = $userManager; + // TODO: inject directly if support for nextcloud < 28 is dropped try { $this->availabilityCoordinator = $container->get(IAvailabilityCoordinator::class); - } catch (ContainerExceptionInterface $e) { + } catch (ContainerExceptionInterface) { $this->availabilityCoordinator = null; } } From 88ad956d2e8dd059bde23daea9d076c695890b08 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Mon, 27 Nov 2023 17:40:43 +0100 Subject: [PATCH 03/26] fix: only load thread summary for threads with at least 3 messages. Signed-off-by: Daniel Kesselberg --- src/components/Thread.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Thread.vue b/src/components/Thread.vue index 7f1f5a1007..dc0b2afc2f 100644 --- a/src/components/Thread.vue +++ b/src/components/Thread.vue @@ -186,7 +186,7 @@ export default { }, methods: { async updateSummary() { - if (this.thread.length < 2 || !this.enabledThreadSummary) return + if (this.thread.length <= 2 || !this.enabledThreadSummary) return this.summaryLoading = true try { From 87bc499cbeb2de5dfd399eb8394d79d2e8863fd3 Mon Sep 17 00:00:00 2001 From: Nextcloud bot Date: Tue, 28 Nov 2023 01:17:51 +0000 Subject: [PATCH 04/26] Fix(l10n): Update translations from Transifex Signed-off-by: Nextcloud bot --- l10n/cs.js | 2 ++ l10n/cs.json | 2 ++ l10n/is.js | 1 + l10n/is.json | 1 + l10n/ro.js | 93 ++++++++++++++++++++++++++++++++++++++++++++++--- l10n/ro.json | 93 ++++++++++++++++++++++++++++++++++++++++++++++--- l10n/sr.js | 3 ++ l10n/sr.json | 3 ++ l10n/zh_TW.js | 3 ++ l10n/zh_TW.json | 3 ++ 10 files changed, 194 insertions(+), 10 deletions(-) diff --git a/l10n/cs.js b/l10n/cs.js index 2e2312fb2a..4124348a29 100644 --- a/l10n/cs.js +++ b/l10n/cs.js @@ -374,6 +374,8 @@ OC.L10N.register( "Welcome to {cloudName} Mail" : "Vítejte v {cloudName} Poště", "Autoresponder off" : "Automatické odpovědi vypnuty", "Autoresponder on" : "Automatické odpovědi zapnuty", + "Autoresponder follows system settings" : "Automatický odpovídač následuje nastavení systému", + "The autoresponder follows your personal absence period settings." : "Automatický odpovídač následuje vaše osobní nastavení období nepřítomnosti", "Edit absence settings" : "Upravit nastavení nepřítomnosti", "First day" : "První den", "Last day (optional)" : "Poslední den (nepovinné)", diff --git a/l10n/cs.json b/l10n/cs.json index 48671cff76..d6ac2b7bcd 100644 --- a/l10n/cs.json +++ b/l10n/cs.json @@ -372,6 +372,8 @@ "Welcome to {cloudName} Mail" : "Vítejte v {cloudName} Poště", "Autoresponder off" : "Automatické odpovědi vypnuty", "Autoresponder on" : "Automatické odpovědi zapnuty", + "Autoresponder follows system settings" : "Automatický odpovídač následuje nastavení systému", + "The autoresponder follows your personal absence period settings." : "Automatický odpovídač následuje vaše osobní nastavení období nepřítomnosti", "Edit absence settings" : "Upravit nastavení nepřítomnosti", "First day" : "První den", "Last day (optional)" : "Poslední den (nepovinné)", diff --git a/l10n/is.js b/l10n/is.js index 050352442c..13e50d137d 100644 --- a/l10n/is.js +++ b/l10n/is.js @@ -154,6 +154,7 @@ OC.L10N.register( "Retry" : "Reyna aftur", "Uploading attachments …" : "Sendi inn viðhengi…", "Sending …" : "Sendi ...", + "First day" : "Fyrsta dag", "Message" : "Skilaboð", "Delete" : "Eyða", "Copy to clipboard" : "Afrita á klippispjald", diff --git a/l10n/is.json b/l10n/is.json index c0b96cc5ed..dd8082be29 100644 --- a/l10n/is.json +++ b/l10n/is.json @@ -152,6 +152,7 @@ "Retry" : "Reyna aftur", "Uploading attachments …" : "Sendi inn viðhengi…", "Sending …" : "Sendi ...", + "First day" : "Fyrsta dag", "Message" : "Skilaboð", "Delete" : "Eyða", "Copy to clipboard" : "Afrita á klippispjald", diff --git a/l10n/ro.js b/l10n/ro.js index 04867da538..985f5a036a 100644 --- a/l10n/ro.js +++ b/l10n/ro.js @@ -58,6 +58,12 @@ OC.L10N.register( "Account created. Please follow the pop-up instructions to link your Google account" : "Contul a fost creat. Urmați instrucțiunile pop-up pentru a conecta contul Google", "Loading account" : "Se încarcă contul", "Account updated" : "Contul a fost actualizat", + "IMAP server is not reachable" : "Serverul IMAP nu poate fi contactat", + "SMTP server is not reachable" : "Serverul SMTP nu poate fi contactat", + "IMAP username or password is wrong" : "Parola sau numele utilizatorului pentru IMAP sunt eronate", + "SMTP username or password is wrong" : "Parola sau numele utilizatorului pentru SMTP sunt eronate", + "IMAP connection failed" : "Conectarea la IMAP a eșuat", + "SMTP connection failed" : "Conectarea la SMTP a eșuat", "Authorization pop-up closed" : "Dialogul de autorizare s-a închis", "Configuration discovery temporarily not available. Please try again later." : "Descoperirea configurației este temporar indisponibilă. Încercați mai târziu.", "There was an error while setting up your account" : "A apărut o eroare la configurarea contului", @@ -207,11 +213,17 @@ OC.L10N.register( "_Mark {number} as spam_::_Mark {number} as spam_" : ["Marchează {number} ca spam","Marchează {number} ca spam","Marchează {number} ca spam"], "_Mark {number} as not spam_::_Mark {number} as not spam_" : ["Marchează {number} ca nefiind spam","Marchează {number} ca nefiind spam","Marchează {number} ca nefiind spam"], "_Unselect {number}_::_Unselect {number}_" : ["Deselectează {number}","Deselectează {number}","Deselectează {number}"], + "_Edit tags for {number}_::_Edit tags for {number}_" : ["Editează eticheta pentru {number}","Editează etichetele pentru {number}","Editează etichetele pentru {number}"], + "_Move {number} thread_::_Move {number} threads_" : ["Mută {number} conversație","Mută {number} conversații","Mută {number} conversații"], + "_Forward {number} as attachment_::_Forward {number} as attachment_" : ["Redirecționează {number} ca atașament","Redirecționează {number} ca atașament","Redirecționează {number} ca atașament"], + "_Delete {number} thread_::_Delete {number} threads_" : ["Șterge {number} conversație","Șterge {number} conversații","Șterge {number} conversații"], + "Report this bug" : "Raportați acest incident", "All day" : "Toată ziua", "Create" : "Crează", "Event created" : "Evenimentul a fost creat", "Could not create event" : "Evenimentul nu a putut fi creat", "You accepted this invitation" : "Ați acceptat această invitație", + "You tentatively accepted this invitation" : "Intenționați să acceptați această invitație", "You declined this invitation" : "Ați declinat această invitație", "You already reacted to this invitation" : "Ați reacționat deja la această invitație", "You have been invited to an event" : "Ați fost invitat la un eveniment", @@ -225,16 +237,21 @@ OC.L10N.register( "This event is in the past." : "Evenimentul este în trecut", "This event was updated" : "Evenimentul a fost actualizat", "{attendeeName} accepted your invitation" : "{attendeeName} a acceptat invitația", + "{attendeeName} tentatively accepted your invitation" : "{attendeeName} intenționează să accepte invitația", "{attendeeName} declined your invitation" : "{attendeeName} a declinat invitația", "{attendeeName} reacted to your invitation" : "{attendeeName} a reacționat la invitație", "Failed to save your participation status" : "Eroare la salvarea statusului participanților", "Could not open mailbox" : "Cutia poștală nu se poate deschide", "Loading messages …" : "Se încarcă mesajele ...", "Indexing your messages. This can take a bit longer for larger mailboxes." : "Se indexează mesajele. Aceasta poate dura ceva mai mult pentru cutiile poștale mai încărcate.", - "Choose target mailbox" : "Selectați cutia poștală destinație", + "To archive a message please configure an archive mailbox in account settings" : "Pentru arhivarea mesajelor configurați un folder de arhivare în setările contului", + "You are not allowed to move this message to the archive folder and/or delete this message from the current folder" : "Nu aveți permisiunea să mutați mesajul în folderul de arhivare și/sau șterge mesajul din folderul curent", + "Choose target mailbox" : "Selectați folderul destinație", + "No more submailboxes in here" : "Nu mai sunt subfoldere", "Choose" : "Alege", "Important info" : "Informații importante", "Other" : "Altele", + "Messages will automatically be marked as important based on which messages you interacted with or marked as important. In the beginning you might have to manually change the importance to teach the system, but it will improve over time." : "Mesajul va fi marcat automat ca important în funcție de mesajele cu care ați interacționat sau pe care le-ați marcat ca importante. La început ar trebui să setați manual importanța pentru antrenarea sistemului, dar aceasta se va îmbunătăți în timp.", "The sender of this message has asked to be notified when you read this message." : "Expeditorul acestui mesaj a solicitat să fie notificat de citirea mesajului.", "Notify the sender" : "Notifică expeditorul", "You sent a read confirmation to the sender of this message." : "Ați transmis o confirmare de citire expeditorului acestui mesaj.", @@ -245,6 +262,7 @@ OC.L10N.register( "Move message" : "Mută mesajul", "Forward message as attachment" : "Transmite mesajul ca atașament", "View source" : "Sursa mesajului", + "Download thread data for debugging" : "Descarcă datele conversației pentru debug", "Message was snoozed" : "Mesajul a fost amânat", "Could not snooze message" : "Nu s-a putut amâna mesajul", "Message was unsnoozed" : "Mesajul a fost reluat", @@ -275,11 +293,12 @@ OC.L10N.register( "Moving thread" : "Mută conversația", "Moving message" : "Se mută mesajul", "Mail settings" : "Setări Mail", + "Provisioned account is disabled" : "Contul configurat este dezactivat", "Please login using a password to enable this account. The current session is using passwordless authentication, e.g. SSO or WebAuthn." : "Logați-vă cu o parolă pentru a activa acest cont. Sesiunea curentă utilizează autentificarea fără parolă, de ex. SSO sau WebAuthn.", "Quota" : "Procent", "Show only subscribed mailboxes" : "Arată doar căsuțele abonate", "Add mailbox" : "Adaugă mailbox", - "Mailbox name" : "Nume căsuță de mail", + "Mailbox name" : "Nume mailbox", "Saving" : "Se salvează", "Move up" : "Mută înainte", "Move down" : "Mută în jos", @@ -287,16 +306,28 @@ OC.L10N.register( "Loading …" : "Se încarcă…", "Not supported by the server" : "Incompatibil cu serverul", "{usage} of {limit} used" : "{usage} din {limit} utilizat", + "The account for {email} and cached email data will be removed from Nextcloud, but not from your email provider." : "Contul pentru {email} și datele din cache vor fi eliminate din Nextcloud, dar nu și de la providerul de mail.", + "Remove account {email}" : "Șterge contul {email}", "Remove {email}" : "Șterge {email}", "Show all subscribed mailboxes" : "Afișează toate căsuțele abonate", + "Show all mailboxes" : "Afișează toate folderele", + "Collapse mailboxes" : "Restrânge folderele", "Mark all as read" : "Marcaţi tot ca fiind citit", - "Mark all messages of this mailbox as read" : "Marchează toate mesajele din această cutie poștală ca citite", + "Mark all messages of this mailbox as read" : "Marchează toate mesajele din acest folder ca citite", + "Add submailbox" : "Adaugă subfolder", "Edit name" : "Modifică numele", "Move mailbox" : "Mută cutia poștală", "Clear cache" : "Șterge cache", + "Clear locally cached data, in case there are issues with synchronization." : "Ștergeți datele din cache local în cazul problemelor de sincronizare.", "Subscribed" : "Abonat", "Sync in background" : "Sincronizează în fundal", - "All messages in mailbox will be deleted." : "Toate mesajele din cutia poștală vor fi șterse", + "Clear mailbox" : "Golește folderul", + "Delete mailbox" : "Șterge folderul", + "All messages in mailbox will be deleted." : "Vor fi șterse toate mesajele din acest folder", + "Clear mailbox {name}" : "Golește folderul {name}", + "The mailbox and all messages in it will be deleted." : "Se ca șterge folderul și toate mesajele.", + "Delete mailbox {name}" : "Șterge mailbox {name}", + "An error occurred, unable to rename the mailbox." : "Eroare la redenumirea mailbox.", "_{total} message_::_{total} messages_" : ["{total} mesaj","{total} mesaje","{total} mesaje"], "_{unread} unread of {total}_::_{unread} unread of {total}_" : ["{unread} necitit din {total}","{unread} necitite din {total}","{unread} necitite din {total}"], "New message" : "Mesaj nou", @@ -315,14 +346,23 @@ OC.L10N.register( "Failed to save draft" : "Eroare la salvarea schiței", "attachment" : "atașament", "attached" : "atașat", + "No sent mailbox configured. Please pick one in the account settings." : "Nu este configurat un folder pentru mesaje trimise. Selectați unul în setările contului.", + "You are trying to send to many recipients in To and/or Cc. Consider using Bcc to hide recipient addresses." : "Încercați să trimiteți la prea mulți destinatari la Către și/sau Cc. încercați să folosiți Bcc pentru ascunderea adreselor destinatarilor.", + "You mentioned an attachment. Did you forget to add it?" : "Ați menționat un atașament. Ați uitat cumva să-l adăugați?", "Message discarded" : "Mesaj eliminat", "Could not discard message" : "Nu s-a putut elimina mesajul", "Welcome to {cloudName} Mail" : "Bine ați venit la {cloudName} Mail", + "Autoresponder off" : "Autoresponder oprit", + "Autoresponder on" : "Autoresponder activ", + "Autoresponder follows system settings" : "Autoresponder-ul urmează setările sistemului", + "The autoresponder follows your personal absence period settings." : "Autoresponder-ul urmărește setările perioadei de absență.", "Edit absence settings" : "Editați setările pentru absență", "First day" : "Prima zi", "Last day (optional)" : "Ultima zi (opțional)", "${subject} will be replaced with the subject of the message you are responding to" : "${subject} va fi înlocuit cu subiectul mesajului la care răspundeți", "Message" : "Mesaj", + "Save autoresponder" : "Salvează autoresponder", + "Could not open outbox" : "Nu s-a putut deschide Outbox", "Pending or not sent messages will show up here" : "Mesajele în așteptare sau netransmise vor fi afișate aici", "Delete" : "Șterge", "Message could not be sent" : "Mesajul nu s-a putut transmite", @@ -335,7 +375,7 @@ OC.L10N.register( "Add" : "Adaugă", "Copied email address to clipboard" : "Adresa de mail a fost copiată", "Could not copy email address to clipboard" : "Nu s-a putut copia adresa de mail", - "Search in mailbox" : "Caută în cutia poștală", + "Search in mailbox" : "Cautare în folder", "Close" : "Închide", "Search parameters" : "Parametri de căutare", "Search subject" : "Caută subiect", @@ -345,6 +385,8 @@ OC.L10N.register( "Pick an end date" : "Selectați o dată de sfârșit", "Select senders" : "Selectează expeditorii", "Select recipients" : "Selectează recipienții", + "Select CC recipients" : "Selectați destinatarii pentru CC", + "Select BCC recipients" : "Selectați destinatarii pentru BCC", "Tags" : "Etichete", "Select tags" : "Selectează etichete", "Marked as" : "Marcat ca", @@ -355,6 +397,7 @@ OC.L10N.register( "Enable mail body search" : "Activează căutarea în textul mesajelor", "Disabled" : "Dezactivați", "Enabled" : "Activat", + "IMAP Credentials" : "Credențiale pentru IMAP", "Custom" : "Particularizat", "The syntax seems to be incorrect:" : "Sintaxa pare incorectă:", "This weekend – {timeLocale}" : "În acest weekend – {timeLocale}", @@ -384,6 +427,7 @@ OC.L10N.register( "Could not load your message thread" : "Nu poate fi încărcată conversația", "The thread doesn't exist or has been deleted" : "Conversația nu există sau a fost ștearsă", "Unsubscribe" : "Dezabonare", + "Mark as unfavorite" : "Elimină de la favorite", "Mark as favorite" : "Marchează ca favorit", "Mark as unread" : "Marchează ca necitit", "Mark as read" : "Marchează ca citit", @@ -394,30 +438,53 @@ OC.L10N.register( "Unsubscribing will stop all messages from the mailing list {sender}" : "Dezabonare va opri mesajele din lista de distribuție {sender}", "Send unsubscribe email" : "Trimite email de dezabonare", "Unsubscribe via email" : "Dezabonare prin email", + "Encrypted & verified " : "Criptat și verificat", + "Signature verified" : "Semnătură verificată", + "Signature unverified " : "Semnătură neverificată", "Unsubscribe request sent" : "Cerere de dezabonare trimisă", "Could not unsubscribe from mailing list" : "A eșuat dezabonarea de la lista de distribuție", "Go to latest message" : "Salt la ultimul mesaj", "Go to newest message" : "Salt la cele mai recente mesaje", "Thread Summary" : "Rezumat conversație", + "{name} Assistant" : "{name} Asistent", + "Disable trash retention by leaving the field empty or setting it to 0. Only mails deleted after enabling trash retention will be processed." : "Dezactivați păstrarea în coș lăsând câmpul necompletat sau introducând 0. Vor fi procesate doar mailurile șterse după activarea păstrării în coș. ", "Remove" : "Elimină", + "No senders are trusted at the moment." : "Niciun expeditor de încredere în acest moment. ", + "Could not remove trusted sender {sender}" : "Expeditorul de încredere {sender} nu poate fi șters", "domain" : "domeniu", "(organizer)" : "(organizator)", "Untitled event" : "Eveniment fără titlu", "Import into {calendar}" : "Importă în {calendar}", "Event imported into {calendar}" : "Eveniment importat în {calendar}", "Reservation {id}" : "Rezervare {id}", + "Mail app" : "Aplicația Mail", + "The mail app allows users to read mails on their IMAP accounts." : "Aplicația de mail permite utilizatorilor să citească mailurile din conturile lor IMAP.", + "Here you can find instance-wide settings. User specific settings are found in the app itself (bottom-left corner)." : "Aici găsiți setările generale pentru instanță. Setările specifice pentru utilizator se găsesc în aplicație (în colțul din stânga, jos).", + "Account provisioning" : "Alimentare cont", + "Add new config" : "Adaugă o nouă configurație", + "Allow additional mail accounts" : "Permite conturi de mail suplimentare", + "Allow additional Mail accounts from User Settings" : "Permite conturi de mail suplimentare în setările utilizator", "Enable thread summary" : "Activați rezumatul conversației", + "Enable thread summaries" : "Activează rezumatul conversației", + "Anti Spam Service" : "Serviciul anti-spam", + "Successfully updated config for \"{domain}\"" : "S-a actualizat configurația pentru \"{domain}\"", + "Error saving config" : "Eroare la salvarea configurației", + "Saved config for \"{domain}\"" : "A fost salvată configurația pentru \"{domain}\"", + "The original message will be attached as a \"message/rfc822\" attachment." : "Mesajul original va fi atașat ca atașament \"message/rfc822\".", "\"Mark as Spam\" Email Address" : "\"Marchează ca Spam\" adresa de Email", "\"Mark Not Junk\" Email Address" : "\"Marchează ca Not Junk\" adresa de Email ", "Reset" : "Resetare", "Client ID" : "ID client", "Client secret" : "Secret client", + "Unlink" : "Deconectare", "General" : "General", "User" : "Utilizator", "Host" : "Gazdă", "Port" : "Portul", + "Use master password" : "Folosește master password", "LDAP aliases integration" : "Integrare aliasuri LDAP", "Enable LDAP aliases integration" : "Activează integrarea aliasurilor LDAP", + "Save Config" : "Salvează configurația", "S/MIME certificates" : "Certificatele S/MIME", "Certificate name" : "Nume certificat", "E-mail address" : "Adresa de E-mail ", @@ -427,6 +494,8 @@ OC.L10N.register( "Submit" : "Trimite", "Keyboard shortcut" : "Scurtături din tastatură", "Keyboard shortcuts" : "Scurtături din tastatură", + "Speed up your Mail experience with these quick shortcuts." : "Îmbunătățiți experiența în Mail cu aceste scurtături.", + "Compose new message" : "Compuneți mesaje noi", "Newer message" : "Mesaj mai recent", "Older message" : "Mesaj mai vechi", "Toggle star" : "Comută stea", @@ -434,25 +503,39 @@ OC.L10N.register( "Archive" : "Arhivă", "Account connected" : "Cont conectat", "You can close this window" : "Puteți închide fereastra", + "Connect your mail account" : "Conectați-vă contul de mail", + "To add a mail account, please contact your administrator." : "Pentru adăugarea unui cont de mail, contactați administratorul.", "Tomorrow – {timeLocale}" : "Mâine – {timeLocale}", "Later today – {timeLocale}" : "Azi, mai târziu – {timeLocale}", "All" : "Toate ", "Drafts" : "Schițe", "Favorites" : "Favorite", + "All inboxes" : "Toate inbox-urile", + "Junk" : "Nesolicitate", "Sent" : "Trimise", "Trash" : "Șterse", "Error while sharing file" : "Eroare la partajarea fișierului", "{from}\n{subject}" : "{from}\n{subject}", + "_%n new message \nfrom {from}_::_%n new messages \nfrom {from}_" : ["%n mesaj nou \nde la {from}","%n mesaje noi \nde la {from}","%n mesaje noi \nde la {from}"], + "There is already a message in progress. All unsaved changes will be lost if you continue!" : "Un mesaj este în progres. Toate modificările nesalvate se vor pierde dacă continuați!", "Discard changes" : "Anulează modificările", "Discard unsaved changes" : "Anulează modificările nesalvate", "Keep editing message" : "Continuă editarea mesajului", + "Attachments were not copied. Please add them manually." : "Atașamentele nu au fost copiate. Adăugați-le manual.", + "Could not create snooze mailbox" : "Nu s-a putut crea un folder pentru mesaje amânate", "Message sent" : "Mesajul a fost transmis", "Could not send message" : "Mesajul nu s-a putut transmite", + "Could not load {tag}{name}{endtag}" : "Nu s-a putut încărca {tag}{name}{endtag}", + "There was a problem loading {tag}{name}{endtag}" : "Eroare la încărcarea {tag}{name}{endtag}", "Could not load your message" : "Mesajul nu s-a putut încărca", + "Could not load the desired message" : "Nu s-a putut încărca mesajul dorit", "Could not load the message" : "Nu s-a putut încărca mesajul", "Error loading message" : "Eroare la încărcarea mesajelor", "Forwarding to %s" : "Retransmitere la %s", + "Click here if you are not automatically redirected within the next few seconds." : "Faceți click aici dacă nu sunteți redirectat automat în câteva secunde.", "Redirect" : "Deviere", + "The link leads to %s" : "Link-ul duce la %s", + "If you do not want to visit that page, you can return to Mail." : "Dacă nu doriți să vizitați acea pagină, vă puteți întoarce la Mail.", "Continue to %s" : "Continuă către %s" }, "nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));"); diff --git a/l10n/ro.json b/l10n/ro.json index a9f2c8c840..383c08fd92 100644 --- a/l10n/ro.json +++ b/l10n/ro.json @@ -56,6 +56,12 @@ "Account created. Please follow the pop-up instructions to link your Google account" : "Contul a fost creat. Urmați instrucțiunile pop-up pentru a conecta contul Google", "Loading account" : "Se încarcă contul", "Account updated" : "Contul a fost actualizat", + "IMAP server is not reachable" : "Serverul IMAP nu poate fi contactat", + "SMTP server is not reachable" : "Serverul SMTP nu poate fi contactat", + "IMAP username or password is wrong" : "Parola sau numele utilizatorului pentru IMAP sunt eronate", + "SMTP username or password is wrong" : "Parola sau numele utilizatorului pentru SMTP sunt eronate", + "IMAP connection failed" : "Conectarea la IMAP a eșuat", + "SMTP connection failed" : "Conectarea la SMTP a eșuat", "Authorization pop-up closed" : "Dialogul de autorizare s-a închis", "Configuration discovery temporarily not available. Please try again later." : "Descoperirea configurației este temporar indisponibilă. Încercați mai târziu.", "There was an error while setting up your account" : "A apărut o eroare la configurarea contului", @@ -205,11 +211,17 @@ "_Mark {number} as spam_::_Mark {number} as spam_" : ["Marchează {number} ca spam","Marchează {number} ca spam","Marchează {number} ca spam"], "_Mark {number} as not spam_::_Mark {number} as not spam_" : ["Marchează {number} ca nefiind spam","Marchează {number} ca nefiind spam","Marchează {number} ca nefiind spam"], "_Unselect {number}_::_Unselect {number}_" : ["Deselectează {number}","Deselectează {number}","Deselectează {number}"], + "_Edit tags for {number}_::_Edit tags for {number}_" : ["Editează eticheta pentru {number}","Editează etichetele pentru {number}","Editează etichetele pentru {number}"], + "_Move {number} thread_::_Move {number} threads_" : ["Mută {number} conversație","Mută {number} conversații","Mută {number} conversații"], + "_Forward {number} as attachment_::_Forward {number} as attachment_" : ["Redirecționează {number} ca atașament","Redirecționează {number} ca atașament","Redirecționează {number} ca atașament"], + "_Delete {number} thread_::_Delete {number} threads_" : ["Șterge {number} conversație","Șterge {number} conversații","Șterge {number} conversații"], + "Report this bug" : "Raportați acest incident", "All day" : "Toată ziua", "Create" : "Crează", "Event created" : "Evenimentul a fost creat", "Could not create event" : "Evenimentul nu a putut fi creat", "You accepted this invitation" : "Ați acceptat această invitație", + "You tentatively accepted this invitation" : "Intenționați să acceptați această invitație", "You declined this invitation" : "Ați declinat această invitație", "You already reacted to this invitation" : "Ați reacționat deja la această invitație", "You have been invited to an event" : "Ați fost invitat la un eveniment", @@ -223,16 +235,21 @@ "This event is in the past." : "Evenimentul este în trecut", "This event was updated" : "Evenimentul a fost actualizat", "{attendeeName} accepted your invitation" : "{attendeeName} a acceptat invitația", + "{attendeeName} tentatively accepted your invitation" : "{attendeeName} intenționează să accepte invitația", "{attendeeName} declined your invitation" : "{attendeeName} a declinat invitația", "{attendeeName} reacted to your invitation" : "{attendeeName} a reacționat la invitație", "Failed to save your participation status" : "Eroare la salvarea statusului participanților", "Could not open mailbox" : "Cutia poștală nu se poate deschide", "Loading messages …" : "Se încarcă mesajele ...", "Indexing your messages. This can take a bit longer for larger mailboxes." : "Se indexează mesajele. Aceasta poate dura ceva mai mult pentru cutiile poștale mai încărcate.", - "Choose target mailbox" : "Selectați cutia poștală destinație", + "To archive a message please configure an archive mailbox in account settings" : "Pentru arhivarea mesajelor configurați un folder de arhivare în setările contului", + "You are not allowed to move this message to the archive folder and/or delete this message from the current folder" : "Nu aveți permisiunea să mutați mesajul în folderul de arhivare și/sau șterge mesajul din folderul curent", + "Choose target mailbox" : "Selectați folderul destinație", + "No more submailboxes in here" : "Nu mai sunt subfoldere", "Choose" : "Alege", "Important info" : "Informații importante", "Other" : "Altele", + "Messages will automatically be marked as important based on which messages you interacted with or marked as important. In the beginning you might have to manually change the importance to teach the system, but it will improve over time." : "Mesajul va fi marcat automat ca important în funcție de mesajele cu care ați interacționat sau pe care le-ați marcat ca importante. La început ar trebui să setați manual importanța pentru antrenarea sistemului, dar aceasta se va îmbunătăți în timp.", "The sender of this message has asked to be notified when you read this message." : "Expeditorul acestui mesaj a solicitat să fie notificat de citirea mesajului.", "Notify the sender" : "Notifică expeditorul", "You sent a read confirmation to the sender of this message." : "Ați transmis o confirmare de citire expeditorului acestui mesaj.", @@ -243,6 +260,7 @@ "Move message" : "Mută mesajul", "Forward message as attachment" : "Transmite mesajul ca atașament", "View source" : "Sursa mesajului", + "Download thread data for debugging" : "Descarcă datele conversației pentru debug", "Message was snoozed" : "Mesajul a fost amânat", "Could not snooze message" : "Nu s-a putut amâna mesajul", "Message was unsnoozed" : "Mesajul a fost reluat", @@ -273,11 +291,12 @@ "Moving thread" : "Mută conversația", "Moving message" : "Se mută mesajul", "Mail settings" : "Setări Mail", + "Provisioned account is disabled" : "Contul configurat este dezactivat", "Please login using a password to enable this account. The current session is using passwordless authentication, e.g. SSO or WebAuthn." : "Logați-vă cu o parolă pentru a activa acest cont. Sesiunea curentă utilizează autentificarea fără parolă, de ex. SSO sau WebAuthn.", "Quota" : "Procent", "Show only subscribed mailboxes" : "Arată doar căsuțele abonate", "Add mailbox" : "Adaugă mailbox", - "Mailbox name" : "Nume căsuță de mail", + "Mailbox name" : "Nume mailbox", "Saving" : "Se salvează", "Move up" : "Mută înainte", "Move down" : "Mută în jos", @@ -285,16 +304,28 @@ "Loading …" : "Se încarcă…", "Not supported by the server" : "Incompatibil cu serverul", "{usage} of {limit} used" : "{usage} din {limit} utilizat", + "The account for {email} and cached email data will be removed from Nextcloud, but not from your email provider." : "Contul pentru {email} și datele din cache vor fi eliminate din Nextcloud, dar nu și de la providerul de mail.", + "Remove account {email}" : "Șterge contul {email}", "Remove {email}" : "Șterge {email}", "Show all subscribed mailboxes" : "Afișează toate căsuțele abonate", + "Show all mailboxes" : "Afișează toate folderele", + "Collapse mailboxes" : "Restrânge folderele", "Mark all as read" : "Marcaţi tot ca fiind citit", - "Mark all messages of this mailbox as read" : "Marchează toate mesajele din această cutie poștală ca citite", + "Mark all messages of this mailbox as read" : "Marchează toate mesajele din acest folder ca citite", + "Add submailbox" : "Adaugă subfolder", "Edit name" : "Modifică numele", "Move mailbox" : "Mută cutia poștală", "Clear cache" : "Șterge cache", + "Clear locally cached data, in case there are issues with synchronization." : "Ștergeți datele din cache local în cazul problemelor de sincronizare.", "Subscribed" : "Abonat", "Sync in background" : "Sincronizează în fundal", - "All messages in mailbox will be deleted." : "Toate mesajele din cutia poștală vor fi șterse", + "Clear mailbox" : "Golește folderul", + "Delete mailbox" : "Șterge folderul", + "All messages in mailbox will be deleted." : "Vor fi șterse toate mesajele din acest folder", + "Clear mailbox {name}" : "Golește folderul {name}", + "The mailbox and all messages in it will be deleted." : "Se ca șterge folderul și toate mesajele.", + "Delete mailbox {name}" : "Șterge mailbox {name}", + "An error occurred, unable to rename the mailbox." : "Eroare la redenumirea mailbox.", "_{total} message_::_{total} messages_" : ["{total} mesaj","{total} mesaje","{total} mesaje"], "_{unread} unread of {total}_::_{unread} unread of {total}_" : ["{unread} necitit din {total}","{unread} necitite din {total}","{unread} necitite din {total}"], "New message" : "Mesaj nou", @@ -313,14 +344,23 @@ "Failed to save draft" : "Eroare la salvarea schiței", "attachment" : "atașament", "attached" : "atașat", + "No sent mailbox configured. Please pick one in the account settings." : "Nu este configurat un folder pentru mesaje trimise. Selectați unul în setările contului.", + "You are trying to send to many recipients in To and/or Cc. Consider using Bcc to hide recipient addresses." : "Încercați să trimiteți la prea mulți destinatari la Către și/sau Cc. încercați să folosiți Bcc pentru ascunderea adreselor destinatarilor.", + "You mentioned an attachment. Did you forget to add it?" : "Ați menționat un atașament. Ați uitat cumva să-l adăugați?", "Message discarded" : "Mesaj eliminat", "Could not discard message" : "Nu s-a putut elimina mesajul", "Welcome to {cloudName} Mail" : "Bine ați venit la {cloudName} Mail", + "Autoresponder off" : "Autoresponder oprit", + "Autoresponder on" : "Autoresponder activ", + "Autoresponder follows system settings" : "Autoresponder-ul urmează setările sistemului", + "The autoresponder follows your personal absence period settings." : "Autoresponder-ul urmărește setările perioadei de absență.", "Edit absence settings" : "Editați setările pentru absență", "First day" : "Prima zi", "Last day (optional)" : "Ultima zi (opțional)", "${subject} will be replaced with the subject of the message you are responding to" : "${subject} va fi înlocuit cu subiectul mesajului la care răspundeți", "Message" : "Mesaj", + "Save autoresponder" : "Salvează autoresponder", + "Could not open outbox" : "Nu s-a putut deschide Outbox", "Pending or not sent messages will show up here" : "Mesajele în așteptare sau netransmise vor fi afișate aici", "Delete" : "Șterge", "Message could not be sent" : "Mesajul nu s-a putut transmite", @@ -333,7 +373,7 @@ "Add" : "Adaugă", "Copied email address to clipboard" : "Adresa de mail a fost copiată", "Could not copy email address to clipboard" : "Nu s-a putut copia adresa de mail", - "Search in mailbox" : "Caută în cutia poștală", + "Search in mailbox" : "Cautare în folder", "Close" : "Închide", "Search parameters" : "Parametri de căutare", "Search subject" : "Caută subiect", @@ -343,6 +383,8 @@ "Pick an end date" : "Selectați o dată de sfârșit", "Select senders" : "Selectează expeditorii", "Select recipients" : "Selectează recipienții", + "Select CC recipients" : "Selectați destinatarii pentru CC", + "Select BCC recipients" : "Selectați destinatarii pentru BCC", "Tags" : "Etichete", "Select tags" : "Selectează etichete", "Marked as" : "Marcat ca", @@ -353,6 +395,7 @@ "Enable mail body search" : "Activează căutarea în textul mesajelor", "Disabled" : "Dezactivați", "Enabled" : "Activat", + "IMAP Credentials" : "Credențiale pentru IMAP", "Custom" : "Particularizat", "The syntax seems to be incorrect:" : "Sintaxa pare incorectă:", "This weekend – {timeLocale}" : "În acest weekend – {timeLocale}", @@ -382,6 +425,7 @@ "Could not load your message thread" : "Nu poate fi încărcată conversația", "The thread doesn't exist or has been deleted" : "Conversația nu există sau a fost ștearsă", "Unsubscribe" : "Dezabonare", + "Mark as unfavorite" : "Elimină de la favorite", "Mark as favorite" : "Marchează ca favorit", "Mark as unread" : "Marchează ca necitit", "Mark as read" : "Marchează ca citit", @@ -392,30 +436,53 @@ "Unsubscribing will stop all messages from the mailing list {sender}" : "Dezabonare va opri mesajele din lista de distribuție {sender}", "Send unsubscribe email" : "Trimite email de dezabonare", "Unsubscribe via email" : "Dezabonare prin email", + "Encrypted & verified " : "Criptat și verificat", + "Signature verified" : "Semnătură verificată", + "Signature unverified " : "Semnătură neverificată", "Unsubscribe request sent" : "Cerere de dezabonare trimisă", "Could not unsubscribe from mailing list" : "A eșuat dezabonarea de la lista de distribuție", "Go to latest message" : "Salt la ultimul mesaj", "Go to newest message" : "Salt la cele mai recente mesaje", "Thread Summary" : "Rezumat conversație", + "{name} Assistant" : "{name} Asistent", + "Disable trash retention by leaving the field empty or setting it to 0. Only mails deleted after enabling trash retention will be processed." : "Dezactivați păstrarea în coș lăsând câmpul necompletat sau introducând 0. Vor fi procesate doar mailurile șterse după activarea păstrării în coș. ", "Remove" : "Elimină", + "No senders are trusted at the moment." : "Niciun expeditor de încredere în acest moment. ", + "Could not remove trusted sender {sender}" : "Expeditorul de încredere {sender} nu poate fi șters", "domain" : "domeniu", "(organizer)" : "(organizator)", "Untitled event" : "Eveniment fără titlu", "Import into {calendar}" : "Importă în {calendar}", "Event imported into {calendar}" : "Eveniment importat în {calendar}", "Reservation {id}" : "Rezervare {id}", + "Mail app" : "Aplicația Mail", + "The mail app allows users to read mails on their IMAP accounts." : "Aplicația de mail permite utilizatorilor să citească mailurile din conturile lor IMAP.", + "Here you can find instance-wide settings. User specific settings are found in the app itself (bottom-left corner)." : "Aici găsiți setările generale pentru instanță. Setările specifice pentru utilizator se găsesc în aplicație (în colțul din stânga, jos).", + "Account provisioning" : "Alimentare cont", + "Add new config" : "Adaugă o nouă configurație", + "Allow additional mail accounts" : "Permite conturi de mail suplimentare", + "Allow additional Mail accounts from User Settings" : "Permite conturi de mail suplimentare în setările utilizator", "Enable thread summary" : "Activați rezumatul conversației", + "Enable thread summaries" : "Activează rezumatul conversației", + "Anti Spam Service" : "Serviciul anti-spam", + "Successfully updated config for \"{domain}\"" : "S-a actualizat configurația pentru \"{domain}\"", + "Error saving config" : "Eroare la salvarea configurației", + "Saved config for \"{domain}\"" : "A fost salvată configurația pentru \"{domain}\"", + "The original message will be attached as a \"message/rfc822\" attachment." : "Mesajul original va fi atașat ca atașament \"message/rfc822\".", "\"Mark as Spam\" Email Address" : "\"Marchează ca Spam\" adresa de Email", "\"Mark Not Junk\" Email Address" : "\"Marchează ca Not Junk\" adresa de Email ", "Reset" : "Resetare", "Client ID" : "ID client", "Client secret" : "Secret client", + "Unlink" : "Deconectare", "General" : "General", "User" : "Utilizator", "Host" : "Gazdă", "Port" : "Portul", + "Use master password" : "Folosește master password", "LDAP aliases integration" : "Integrare aliasuri LDAP", "Enable LDAP aliases integration" : "Activează integrarea aliasurilor LDAP", + "Save Config" : "Salvează configurația", "S/MIME certificates" : "Certificatele S/MIME", "Certificate name" : "Nume certificat", "E-mail address" : "Adresa de E-mail ", @@ -425,6 +492,8 @@ "Submit" : "Trimite", "Keyboard shortcut" : "Scurtături din tastatură", "Keyboard shortcuts" : "Scurtături din tastatură", + "Speed up your Mail experience with these quick shortcuts." : "Îmbunătățiți experiența în Mail cu aceste scurtături.", + "Compose new message" : "Compuneți mesaje noi", "Newer message" : "Mesaj mai recent", "Older message" : "Mesaj mai vechi", "Toggle star" : "Comută stea", @@ -432,25 +501,39 @@ "Archive" : "Arhivă", "Account connected" : "Cont conectat", "You can close this window" : "Puteți închide fereastra", + "Connect your mail account" : "Conectați-vă contul de mail", + "To add a mail account, please contact your administrator." : "Pentru adăugarea unui cont de mail, contactați administratorul.", "Tomorrow – {timeLocale}" : "Mâine – {timeLocale}", "Later today – {timeLocale}" : "Azi, mai târziu – {timeLocale}", "All" : "Toate ", "Drafts" : "Schițe", "Favorites" : "Favorite", + "All inboxes" : "Toate inbox-urile", + "Junk" : "Nesolicitate", "Sent" : "Trimise", "Trash" : "Șterse", "Error while sharing file" : "Eroare la partajarea fișierului", "{from}\n{subject}" : "{from}\n{subject}", + "_%n new message \nfrom {from}_::_%n new messages \nfrom {from}_" : ["%n mesaj nou \nde la {from}","%n mesaje noi \nde la {from}","%n mesaje noi \nde la {from}"], + "There is already a message in progress. All unsaved changes will be lost if you continue!" : "Un mesaj este în progres. Toate modificările nesalvate se vor pierde dacă continuați!", "Discard changes" : "Anulează modificările", "Discard unsaved changes" : "Anulează modificările nesalvate", "Keep editing message" : "Continuă editarea mesajului", + "Attachments were not copied. Please add them manually." : "Atașamentele nu au fost copiate. Adăugați-le manual.", + "Could not create snooze mailbox" : "Nu s-a putut crea un folder pentru mesaje amânate", "Message sent" : "Mesajul a fost transmis", "Could not send message" : "Mesajul nu s-a putut transmite", + "Could not load {tag}{name}{endtag}" : "Nu s-a putut încărca {tag}{name}{endtag}", + "There was a problem loading {tag}{name}{endtag}" : "Eroare la încărcarea {tag}{name}{endtag}", "Could not load your message" : "Mesajul nu s-a putut încărca", + "Could not load the desired message" : "Nu s-a putut încărca mesajul dorit", "Could not load the message" : "Nu s-a putut încărca mesajul", "Error loading message" : "Eroare la încărcarea mesajelor", "Forwarding to %s" : "Retransmitere la %s", + "Click here if you are not automatically redirected within the next few seconds." : "Faceți click aici dacă nu sunteți redirectat automat în câteva secunde.", "Redirect" : "Deviere", + "The link leads to %s" : "Link-ul duce la %s", + "If you do not want to visit that page, you can return to Mail." : "Dacă nu doriți să vizitați acea pagină, vă puteți întoarce la Mail.", "Continue to %s" : "Continuă către %s" },"pluralForm" :"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));" } \ No newline at end of file diff --git a/l10n/sr.js b/l10n/sr.js index fbf4128298..75deb20387 100644 --- a/l10n/sr.js +++ b/l10n/sr.js @@ -375,6 +375,9 @@ OC.L10N.register( "Welcome to {cloudName} Mail" : "Добродошли у {cloudName} пошту", "Autoresponder off" : "Аутоматско слање одговора искључено", "Autoresponder on" : "Аутоматско слање одговора укључено", + "Autoresponder follows system settings" : "Аутоматско одговарање следи системска подешавања", + "The autoresponder follows your personal absence period settings." : "Аутоматско одговарање следе ваша лична подешавања периода одсутности.", + "Edit absence settings" : "Уреди подешавања одсутности", "First day" : "Први дан", "Last day (optional)" : "Последњи дан (није обавезно)", "${subject} will be replaced with the subject of the message you are responding to" : "${subject} ће се заменити насловом поруке на коју одговарате", diff --git a/l10n/sr.json b/l10n/sr.json index 6d03fb04f1..b7a7f0cbd4 100644 --- a/l10n/sr.json +++ b/l10n/sr.json @@ -373,6 +373,9 @@ "Welcome to {cloudName} Mail" : "Добродошли у {cloudName} пошту", "Autoresponder off" : "Аутоматско слање одговора искључено", "Autoresponder on" : "Аутоматско слање одговора укључено", + "Autoresponder follows system settings" : "Аутоматско одговарање следи системска подешавања", + "The autoresponder follows your personal absence period settings." : "Аутоматско одговарање следе ваша лична подешавања периода одсутности.", + "Edit absence settings" : "Уреди подешавања одсутности", "First day" : "Први дан", "Last day (optional)" : "Последњи дан (није обавезно)", "${subject} will be replaced with the subject of the message you are responding to" : "${subject} ће се заменити насловом поруке на коју одговарате", diff --git a/l10n/zh_TW.js b/l10n/zh_TW.js index acee92ee81..36994d76b4 100644 --- a/l10n/zh_TW.js +++ b/l10n/zh_TW.js @@ -375,6 +375,9 @@ OC.L10N.register( "Welcome to {cloudName} Mail" : "歡迎使用 {cloudName} Mail", "Autoresponder off" : "自動回覆程式停用", "Autoresponder on" : "自動回覆程式啟用", + "Autoresponder follows system settings" : "自動回應程式遵循系統設定", + "The autoresponder follows your personal absence period settings." : "自動回應程式會依照您個人的缺席時段設定做出回應。", + "Edit absence settings" : "編輯缺席設定", "First day" : "第一天", "Last day (optional)" : "最後一天(選擇性)", "${subject} will be replaced with the subject of the message you are responding to" : "${subject} 將替換為您要回應的郵件的主旨", diff --git a/l10n/zh_TW.json b/l10n/zh_TW.json index 7732ce76b0..7b34cd842c 100644 --- a/l10n/zh_TW.json +++ b/l10n/zh_TW.json @@ -373,6 +373,9 @@ "Welcome to {cloudName} Mail" : "歡迎使用 {cloudName} Mail", "Autoresponder off" : "自動回覆程式停用", "Autoresponder on" : "自動回覆程式啟用", + "Autoresponder follows system settings" : "自動回應程式遵循系統設定", + "The autoresponder follows your personal absence period settings." : "自動回應程式會依照您個人的缺席時段設定做出回應。", + "Edit absence settings" : "編輯缺席設定", "First day" : "第一天", "Last day (optional)" : "最後一天(選擇性)", "${subject} will be replaced with the subject of the message you are responding to" : "${subject} 將替換為您要回應的郵件的主旨", From ee639783bab0576eb12814f0c69d418ff83ea49e Mon Sep 17 00:00:00 2001 From: Richard Steinmetz Date: Mon, 27 Nov 2023 17:05:13 +0100 Subject: [PATCH 05/26] fix: listen to more out-of-office events to prevent missed changes Signed-off-by: Richard Steinmetz --- lib/AppInfo/Application.php | 12 +++++++++++- lib/Listener/OutOfOfficeListener.php | 26 +++++++++++++++++++++++--- psalm.xml | 14 +++++++++++--- tests/psalm-baseline.xml | 7 +++---- 4 files changed, 48 insertions(+), 11 deletions(-) diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index d23e95fb6e..9f7bf1c600 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -89,7 +89,10 @@ use OCP\Dashboard\IAPIWidgetV2; use OCP\IServerContainer; use OCP\Search\IFilteringProvider; +use OCP\User\Events\OutOfOfficeChangedEvent; +use OCP\User\Events\OutOfOfficeClearedEvent; use OCP\User\Events\OutOfOfficeEndedEvent; +use OCP\User\Events\OutOfOfficeScheduledEvent; use OCP\User\Events\OutOfOfficeStartedEvent; use OCP\User\Events\UserDeletedEvent; use OCP\Util; @@ -147,9 +150,16 @@ public function register(IRegistrationContext $context): void { // TODO: drop condition if nextcloud < 28 is not supported anymore if (class_exists(OutOfOfficeStartedEvent::class) - && class_exists(OutOfOfficeEndedEvent::class)) { + && class_exists(OutOfOfficeEndedEvent::class) + && class_exists(OutOfOfficeChangedEvent::class) + && class_exists(OutOfOfficeClearedEvent::class) + && class_exists(OutOfOfficeScheduledEvent::class) + ) { $context->registerEventListener(OutOfOfficeStartedEvent::class, OutOfOfficeListener::class); $context->registerEventListener(OutOfOfficeEndedEvent::class, OutOfOfficeListener::class); + $context->registerEventListener(OutOfOfficeChangedEvent::class, OutOfOfficeListener::class); + $context->registerEventListener(OutOfOfficeClearedEvent::class, OutOfOfficeListener::class); + $context->registerEventListener(OutOfOfficeScheduledEvent::class, OutOfOfficeListener::class); } $context->registerMiddleWare(ErrorMiddleware::class); diff --git a/lib/Listener/OutOfOfficeListener.php b/lib/Listener/OutOfOfficeListener.php index b5c62c361b..c306488ed4 100644 --- a/lib/Listener/OutOfOfficeListener.php +++ b/lib/Listener/OutOfOfficeListener.php @@ -31,29 +31,49 @@ use OCA\Mail\Service\AccountService; use OCA\Mail\Service\OutOfOffice\OutOfOfficeState; use OCA\Mail\Service\OutOfOfficeService; +use OCP\AppFramework\Utility\ITimeFactory; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; +use OCP\User\Events\OutOfOfficeChangedEvent; +use OCP\User\Events\OutOfOfficeClearedEvent; use OCP\User\Events\OutOfOfficeEndedEvent; +use OCP\User\Events\OutOfOfficeScheduledEvent; use OCP\User\Events\OutOfOfficeStartedEvent; use Psr\Log\LoggerInterface; /** - * @template-implements IEventListener + * @template-implements IEventListener */ class OutOfOfficeListener implements IEventListener { public function __construct( private AccountService $accountService, private OutOfOfficeService $outOfOfficeService, private LoggerInterface $logger, + private ITimeFactory $timeFactory, ) { } public function handle(Event $event): void { - if (!($event instanceof OutOfOfficeStartedEvent) && !($event instanceof OutOfOfficeEndedEvent)) { + if (!($event instanceof OutOfOfficeStartedEvent) + && !($event instanceof OutOfOfficeEndedEvent) + && !($event instanceof OutOfOfficeScheduledEvent) + && !($event instanceof OutOfOfficeChangedEvent) + && !($event instanceof OutOfOfficeClearedEvent) + ) { return; } $eventData = $event->getData(); + + // We could simply enable the out-of-office responder in any case as it has its own date + // check. However, this way it is only enabled when really necessary and the second date + // check inside the sieve script acts as a redundancy. + $now = $this->timeFactory->getTime(); + $enabled = $now >= $eventData->getStartDate() && $now < $eventData->getEndDate(); + if (($event instanceof OutOfOfficeClearedEvent) || ($event instanceof OutOfOfficeEndedEvent)) { + $enabled = false; + } + $accounts = $this->accountService->findByUserId($event->getData()->getUser()->getUID()); foreach ($accounts as $account) { if (!$account->getMailAccount()->getOutOfOfficeFollowsSystem()) { @@ -61,7 +81,7 @@ public function handle(Event $event): void { } $state = new OutOfOfficeState( - ($event instanceof OutOfOfficeStartedEvent), + $enabled, new DateTimeImmutable('@' . $eventData->getStartDate()), new DateTimeImmutable('@' . $eventData->getEndDate()), $eventData->getShortMessage(), diff --git a/psalm.xml b/psalm.xml index 4286154ec1..9efe1cc4ad 100644 --- a/psalm.xml +++ b/psalm.xml @@ -47,9 +47,12 @@ - - - + + + + + + @@ -61,6 +64,11 @@ + + + + + diff --git a/tests/psalm-baseline.xml b/tests/psalm-baseline.xml index d306724e2c..cfff7a83b7 100644 --- a/tests/psalm-baseline.xml +++ b/tests/psalm-baseline.xml @@ -4,6 +4,9 @@ OutOfOfficeListener::class OutOfOfficeListener::class + OutOfOfficeListener::class + OutOfOfficeListener::class + OutOfOfficeListener::class FilteringProvider @@ -49,9 +52,5 @@ $event - - OutOfOfficeListener - OutOfOfficeListener - From dcb10f4b6e237d19cb96f16dc0e8815986481741 Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Thu, 30 Nov 2023 10:37:19 +0100 Subject: [PATCH 06/26] style: Add trailing commas to src/ Signed-off-by: Christoph Wurst --- src/tests/unit/.eslintrc.js | 12 ++--- .../unit/components/Composer.vue.spec.js | 12 ++--- .../components/ConfirmationModal.vue.spec.js | 2 +- .../unit/components/Envelope.vue.spec.js | 36 ++++++------- src/tests/unit/components/Thread.vue.spec.js | 54 +++++++++---------- .../components/ThreadEnvelope.vue.spec.js | 50 ++++++++--------- src/tests/unit/store/actions.spec.js | 26 ++++----- src/tests/unit/store/getters.spec.js | 10 ++-- src/tests/unit/store/mutations.spec.js | 6 +-- src/tests/unit/util/acl.spec.js | 4 +- 10 files changed, 106 insertions(+), 106 deletions(-) diff --git a/src/tests/unit/.eslintrc.js b/src/tests/unit/.eslintrc.js index 74fe62701f..516f8c77a1 100644 --- a/src/tests/unit/.eslintrc.js +++ b/src/tests/unit/.eslintrc.js @@ -1,8 +1,8 @@ module.exports = { - env: { - mocha: true - }, - rules: { - 'import/no-extraneous-dependencies': 'off' - } + env: { + mocha: true, + }, + rules: { + 'import/no-extraneous-dependencies': 'off', + }, } \ No newline at end of file diff --git a/src/tests/unit/components/Composer.vue.spec.js b/src/tests/unit/components/Composer.vue.spec.js index 5bdcdee3eb..3070fb148a 100644 --- a/src/tests/unit/components/Composer.vue.spec.js +++ b/src/tests/unit/components/Composer.vue.spec.js @@ -39,7 +39,7 @@ describe('Composer', () => { beforeEach(() => { Object.defineProperty(window, "firstDay", { - value: 0 + value: 0, }) actions = {} @@ -151,7 +151,7 @@ describe('Composer', () => { computed: { smimeCertificateForCurrentAlias() { return undefined - } + }, }, store, localVue, @@ -180,7 +180,7 @@ describe('Composer', () => { computed: { smimeCertificateForCurrentAlias() { return { foo: 'bar' } - } + }, }, store, localVue, @@ -209,7 +209,7 @@ describe('Composer', () => { computed: { smimeCertificateForCurrentAlias() { return undefined - } + }, }, store, localVue, @@ -241,7 +241,7 @@ describe('Composer', () => { }, missingSmimeCertificatesForRecipients() { return ['john@foo.bar'] - } + }, }, store, localVue, @@ -273,7 +273,7 @@ describe('Composer', () => { }, missingSmimeCertificatesForRecipients() { return [] - } + }, }, store, localVue, diff --git a/src/tests/unit/components/ConfirmationModal.vue.spec.js b/src/tests/unit/components/ConfirmationModal.vue.spec.js index 3c1ead0ac6..8052f7bba8 100644 --- a/src/tests/unit/components/ConfirmationModal.vue.spec.js +++ b/src/tests/unit/components/ConfirmationModal.vue.spec.js @@ -44,7 +44,7 @@ describe('ConfirmationModal', () => { it('renders with custom button text', () => { const view = shallowMount(ConfirmationModal, { propsData: { - confirmText: 'Subscribe' + confirmText: 'Subscribe', }, localVue, }) diff --git a/src/tests/unit/components/Envelope.vue.spec.js b/src/tests/unit/components/Envelope.vue.spec.js index 6bbeb42fe4..a2353a45c9 100644 --- a/src/tests/unit/components/Envelope.vue.spec.js +++ b/src/tests/unit/components/Envelope.vue.spec.js @@ -29,8 +29,8 @@ import Vuex from 'vuex'; const localVue = createLocalVue() const $route = { params: { - id: 1 - } + id: 1, + }, } localVue.use(Vuex) @@ -67,13 +67,13 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, account: {sentMailboxId:'1'}, mailbox: { myAcls: undefined, databaseId:'3', - specialRole:'' + specialRole:'', }, }, store, @@ -98,7 +98,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, store, @@ -123,7 +123,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, store, @@ -147,7 +147,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, computed: { @@ -177,7 +177,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, computed: { @@ -207,7 +207,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, computed: { @@ -237,7 +237,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, computed: { @@ -267,7 +267,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, store, @@ -293,7 +293,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, @@ -318,7 +318,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, @@ -338,12 +338,12 @@ describe('Envelope', () => { mailbox: { specialRole:'', databaseId:'3', - sentMailboxId:'1' + sentMailboxId:'1', }, data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, store, @@ -367,7 +367,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, store, @@ -391,7 +391,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, store, @@ -415,7 +415,7 @@ describe('Envelope', () => { data: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, }, }, store, diff --git a/src/tests/unit/components/Thread.vue.spec.js b/src/tests/unit/components/Thread.vue.spec.js index 4c5009f7c9..5891b014cb 100644 --- a/src/tests/unit/components/Thread.vue.spec.js +++ b/src/tests/unit/components/Thread.vue.spec.js @@ -39,7 +39,7 @@ describe('Thread', () => { actions = { fetchThread: () => { return [] - } + }, }, getters = { getEnvelope: () => (id) => { @@ -102,7 +102,7 @@ describe('Thread', () => { from: [], to: [], cc: [], - } + }, ] } if (threadRootId === '456-789-123') { @@ -151,7 +151,7 @@ describe('Thread', () => { from: [], to: [], cc: [], - } + }, ] } return [] @@ -198,13 +198,13 @@ describe('Thread', () => { { databaseId: 10, name: 'INBOX', - specialRole: 'inbox' + specialRole: 'inbox', }, { databaseId: 11, name: 'Test', - specialRole: '' - } + specialRole: '', + }, ] } if (accountId === 200) { @@ -212,27 +212,27 @@ describe('Thread', () => { { databaseId: 20, name: 'INBOX', - specialRole: 'inbox' + specialRole: 'inbox', }, { databaseId: 21, name: 'Test', - specialRole: '' + specialRole: '', }, { databaseId: 22, name: 'Trash', - specialRole: 'trash' + specialRole: 'trash', }, { databaseId: 23, name: 'Junk', - specialRole: 'junk' - } + specialRole: 'junk', + }, ] } return [] - } + }, } store = new Vuex.Store({ actions, @@ -245,9 +245,9 @@ describe('Thread', () => { mocks: { $route: { params: { - threadId: 100 - } - } + threadId: 100, + }, + }, }, store, localVue, @@ -261,9 +261,9 @@ describe('Thread', () => { mocks: { $route: { params: { - threadId: 200 - } - } + threadId: 200, + }, + }, }, store, localVue, @@ -277,9 +277,9 @@ describe('Thread', () => { mocks: { $route: { params: { - threadId: 300 - } - } + threadId: 300, + }, + }, }, store, localVue, @@ -293,9 +293,9 @@ describe('Thread', () => { mocks: { $route: { params: { - threadId: 301 - } - } + threadId: 301, + }, + }, }, store, localVue, @@ -311,9 +311,9 @@ describe('Thread', () => { mocks: { $route: { params: { - threadId: 302 - } - } + threadId: 302, + }, + }, }, store, localVue, diff --git a/src/tests/unit/components/ThreadEnvelope.vue.spec.js b/src/tests/unit/components/ThreadEnvelope.vue.spec.js index f0ab8fc3cf..b983c8ac04 100644 --- a/src/tests/unit/components/ThreadEnvelope.vue.spec.js +++ b/src/tests/unit/components/ThreadEnvelope.vue.spec.js @@ -64,11 +64,11 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -92,11 +92,11 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -120,11 +120,11 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -147,11 +147,11 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -178,11 +178,11 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -209,11 +209,11 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -240,11 +240,11 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -271,11 +271,11 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -299,12 +299,12 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -327,11 +327,11 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -354,11 +354,11 @@ describe('ThreadEnvelope', () => { envelope: { accountId: 123, from: [{email:'info@test.com'}], - flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false, }, + flags: { seen:false, flagged:false, $junk:false, answered:false, hasAttachments:false, draft:false }, subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -392,7 +392,7 @@ describe('ThreadEnvelope', () => { subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -427,7 +427,7 @@ describe('ThreadEnvelope', () => { subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { @@ -464,7 +464,7 @@ describe('ThreadEnvelope', () => { subject: '', dateInt: 1692200926180, }, - threadSubject: '' + threadSubject: '', }, computed: { mailbox() { diff --git a/src/tests/unit/store/actions.spec.js b/src/tests/unit/store/actions.spec.js index f80007b7df..73d67f6cc8 100644 --- a/src/tests/unit/store/actions.spec.js +++ b/src/tests/unit/store/actions.spec.js @@ -518,14 +518,14 @@ describe('Vuex store actions', () => { it('should move message to junk, no mailbox configured', async() => { context.getters.getAccount.mockReturnValueOnce({ - junkMailboxId: null + junkMailboxId: null, }) const removeEnvelope = await actions.moveEnvelopeToJunk(context, { flags: { - $junk: false + $junk: false, }, - mailboxId: 1 + mailboxId: 1, }) expect(removeEnvelope).toBeFalsy() @@ -533,17 +533,17 @@ describe('Vuex store actions', () => { it('should move message to inbox', async() => { context.getters.getAccount.mockReturnValueOnce({ - junkMailboxId: 10 + junkMailboxId: 10, }) context.getters.getInbox.mockReturnValueOnce({ - databaseId: 1 + databaseId: 1, }) const removeEnvelope = await actions.moveEnvelopeToJunk(context, { flags: { - $junk: true + $junk: true, }, - mailboxId: 10 + mailboxId: 10, }) expect(removeEnvelope).toBeTruthy() @@ -551,15 +551,15 @@ describe('Vuex store actions', () => { it('should move message to inbox, inbox not found', async() => { context.getters.getAccount.mockReturnValueOnce({ - junkMailboxId: 10 + junkMailboxId: 10, }) context.getters.getInbox.mockReturnValueOnce(undefined) const removeEnvelope = await actions.moveEnvelopeToJunk(context, { flags: { - $junk: true + $junk: true, }, - mailboxId: 10 + mailboxId: 10, }) expect(removeEnvelope).toBeFalsy() @@ -567,14 +567,14 @@ describe('Vuex store actions', () => { it('should not move messages', async() => { context.getters.getAccount.mockReturnValueOnce({ - junkMailboxId: null + junkMailboxId: null, }) const removeEnvelope = await actions.moveEnvelopeToJunk(context, { flags: { - $junk: true + $junk: true, }, - mailboxId: 10 + mailboxId: 10, }) expect(removeEnvelope).toBeFalsy() diff --git a/src/tests/unit/store/getters.spec.js b/src/tests/unit/store/getters.spec.js index 419c44c29a..bbf648cc70 100644 --- a/src/tests/unit/store/getters.spec.js +++ b/src/tests/unit/store/getters.spec.js @@ -214,15 +214,15 @@ describe('Vuex store getters', () => { { name: 'Trash', specialRole: 'trash', - } - ] + }, + ], } const result = getters.findMailboxBySpecialRole(state, mockedGetters)('100', 'inbox') expect(result).toEqual({ name: 'INBOX', - specialRole: 'inbox' + specialRole: 'inbox', }); }) @@ -240,8 +240,8 @@ describe('Vuex store getters', () => { { name: 'Trash', specialRole: 'trash', - } - ] + }, + ], } const result = getters.findMailboxBySpecialRole(state, mockedGetters)('100', 'drafts') diff --git a/src/tests/unit/store/mutations.spec.js b/src/tests/unit/store/mutations.spec.js index ad4aae7215..fbba1bb3d8 100644 --- a/src/tests/unit/store/mutations.spec.js +++ b/src/tests/unit/store/mutations.spec.js @@ -82,7 +82,7 @@ describe('Vuex store mutations', () => { delimiter: '.', }, ], - aliases: [] + aliases: [], }) expect(state).toEqual({ @@ -225,7 +225,7 @@ describe('Vuex store mutations', () => { specialRole: 'archive', }, ], - aliases: [] + aliases: [], }) expect(state).toEqual({ @@ -311,7 +311,7 @@ describe('Vuex store mutations', () => { specialRole: 'archive', }, ], - aliases: [] + aliases: [], }) expect(state).toEqual({ diff --git a/src/tests/unit/util/acl.spec.js b/src/tests/unit/util/acl.spec.js index 724622e68e..4c5451b101 100644 --- a/src/tests/unit/util/acl.spec.js +++ b/src/tests/unit/util/acl.spec.js @@ -35,7 +35,7 @@ describe('acl', () => { it('allow when right included', () => { const mailbox = { - myAcls: 'lrwstipekxa' + myAcls: 'lrwstipekxa', } const actual = mailboxHasRights(mailbox, 'l') @@ -45,7 +45,7 @@ describe('acl', () => { it('deny when right not included', () => { const mailbox = { - myAcls: 'lrw' + myAcls: 'lrw', } const actual = mailboxHasRights(mailbox, 'iw') From eb6c6fcdde0ab2aa2843df6439dd3a39705fb261 Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Thu, 30 Nov 2023 11:37:27 +0100 Subject: [PATCH 07/26] style: Import external library files with their extension Signed-off-by: Christoph Wurst --- src/ReplyBuilder.js | 2 +- src/components/AccountForm.vue | 2 +- src/components/AliasForm.vue | 6 +-- src/components/AliasSettings.vue | 4 +- src/components/AppSettingsMenu.vue | 8 ++-- src/components/Avatar.vue | 2 +- src/components/Composer.vue | 32 ++++++------- src/components/ComposerAttachment.vue | 4 +- src/components/ComposerAttachments.vue | 12 ++--- src/components/Dashboard.vue | 8 ++-- src/components/EmptyMailbox.vue | 4 +- src/components/EmptyMailboxSection.vue | 4 +- src/components/Envelope.vue | 48 +++++++++---------- src/components/EnvelopeList.vue | 16 +++---- src/components/Error.vue | 4 +- src/components/Imip.vue | 4 +- src/components/Itinerary.vue | 2 +- src/components/Mailbox.vue | 2 +- src/components/MailboxPicker.vue | 14 +++--- src/components/MailboxThread.vue | 4 +- src/components/MenuEnvelope.vue | 34 ++++++------- src/components/Message.vue | 2 +- src/components/MessageAttachment.vue | 8 ++-- src/components/MessageAttachments.vue | 8 ++-- src/components/MessageHTMLBody.vue | 6 +-- src/components/Navigation.vue | 2 +- src/components/NavigationAccount.vue | 16 +++---- src/components/NavigationMailbox.vue | 36 +++++++------- src/components/NavigationOutbox.vue | 2 +- src/components/NewMessageButtonHeader.vue | 6 +-- src/components/NoMessageSelected.vue | 2 +- src/components/OutOfOfficeForm.vue | 2 +- src/components/OutboxMessageContent.vue | 4 +- src/components/OutboxMessageListItem.vue | 4 +- src/components/RecipientBubble.vue | 16 +++---- src/components/RecipientListItem.vue | 2 +- src/components/SearchMessages.vue | 22 ++++----- src/components/SieveFilterForm.vue | 2 +- src/components/SignatureSettings.vue | 2 +- src/components/TagItem.vue | 2 +- src/components/TagModal.vue | 4 +- src/components/TextEditor.vue | 4 +- src/components/Thread.vue | 2 +- src/components/ThreadEnvelope.vue | 26 +++++----- src/components/ThreadSummary.vue | 8 ++-- src/components/TrashRetentionSettings.vue | 2 +- src/components/TrustedSenders.vue | 4 +- src/components/imip/EventData.vue | 6 +-- src/components/itinerary/CalendarImport.vue | 2 +- .../itinerary/FlightReservation.vue | 4 +- src/components/itinerary/TrainReservation.vue | 4 +- src/components/settings/AdminSettings.vue | 10 ++-- src/components/settings/AntiSpamSettings.vue | 6 +-- .../settings/ProvisioningSettings.vue | 6 +-- .../smime/SmimeCertificateModal.vue | 2 +- src/dav/client.js | 2 +- src/imap/MailboxSorter.js | 2 +- src/service/AvatarService.js | 2 +- src/service/DAVService.js | 2 +- src/service/NotificationService.js | 2 +- src/store/actions.js | 4 +- src/store/mutations.js | 6 +-- src/tests/unit/store/actions.spec.js | 2 +- src/util/shortRelativeDatetime.js | 2 +- src/util/text.js | 2 +- src/views/Home.vue | 2 +- src/views/OauthDone.vue | 2 +- src/views/Setup.vue | 2 +- 68 files changed, 241 insertions(+), 241 deletions(-) diff --git a/src/ReplyBuilder.js b/src/ReplyBuilder.js index 3c66ae8c7a..25bbff7389 100644 --- a/src/ReplyBuilder.js +++ b/src/ReplyBuilder.js @@ -21,7 +21,7 @@ */ import moment from '@nextcloud/moment' -import negate from 'lodash/fp/negate' +import negate from 'lodash/fp/negate.js' import { html } from './util/text.js' diff --git a/src/components/AccountForm.vue b/src/components/AccountForm.vue index 9ee76ba9a0..53f27886d8 100644 --- a/src/components/AccountForm.vue +++ b/src/components/AccountForm.vue @@ -260,7 +260,7 @@ import { Tab, Tabs } from 'vue-tabs-component' import { mapGetters } from 'vuex' import { NcButton as ButtonVue, NcLoadingIcon as IconLoading } from '@nextcloud/vue' -import IconCheck from 'vue-material-design-icons/Check' +import IconCheck from 'vue-material-design-icons/Check.vue' import { translate as t } from '@nextcloud/l10n' import logger from '../logger.js' diff --git a/src/components/AliasForm.vue b/src/components/AliasForm.vue index 8c3e3b5676..877f1b3514 100644 --- a/src/components/AliasForm.vue +++ b/src/components/AliasForm.vue @@ -83,9 +83,9 @@