From b7e4dda6f52c51720fe552451fbc573e3359cc54 Mon Sep 17 00:00:00 2001 From: Leonardo Colman Date: Thu, 4 Jul 2024 00:18:03 +0000 Subject: [PATCH 01/37] Translated using Weblate (Portuguese) Currently translated at 16.6% (3 of 18 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/pt/ --- metadata/pt/full_description.txt | 19 +++++++++++++++++++ metadata/pt/title.txt | 1 + 2 files changed, 20 insertions(+) create mode 100644 metadata/pt/full_description.txt create mode 100644 metadata/pt/title.txt diff --git a/metadata/pt/full_description.txt b/metadata/pt/full_description.txt new file mode 100644 index 000000000..eb052e74a --- /dev/null +++ b/metadata/pt/full_description.txt @@ -0,0 +1,19 @@ +Delta Chat é um aplicativo de mensagens que é completamente compatível com a existente +infraestrutura de e-mails. + +Portanto, com o Delta Chat você tem a facilidade de aplicativos conhecidos de mensagem +ao alcance do e-mail. Além disso, você é independente de outras empresas e serviços -- seus +dados não estão relacionados ao Delta Chat, você não irá ter nenhuma dependência nova por aqui. + +Algumas funcionalidades: + +* Segurança ponta-a-ponta automática, suportando o novo padrão Autocrypt +* Rápido pelo uso de Push-IMAP +* Maior base de usuários -- destinatários que não estão usando o Delta Chat também podem ser alcançados +* Compatível -- não apenas consigo mesmo +* Elegante e com uma interface simples de usar +* Sistema distribuído +* Sem Spam -- apenas mensagens de usuários conhecidos são mostradas por padrão +* Confiável -- seguro para uso profissional +* Seguro - pode ser usado até mesmo para mensagens de negócios +* Completamente Open Source e baseado em Padrões diff --git a/metadata/pt/title.txt b/metadata/pt/title.txt new file mode 100644 index 000000000..97cecc272 --- /dev/null +++ b/metadata/pt/title.txt @@ -0,0 +1 @@ +Delta Chat From d397f7f16e131e41d55caa94393e9d8236639ccd Mon Sep 17 00:00:00 2001 From: Andrea Enzo Lattmann Date: Sun, 14 Jul 2024 06:08:15 +0000 Subject: [PATCH 02/37] Translated using Weblate (Italian) Currently translated at 100.0% (18 of 18 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/it/ --- metadata/it/changelogs/6864.txt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 metadata/it/changelogs/6864.txt diff --git a/metadata/it/changelogs/6864.txt b/metadata/it/changelogs/6864.txt new file mode 100644 index 000000000..ab3bcb224 --- /dev/null +++ b/metadata/it/changelogs/6864.txt @@ -0,0 +1,7 @@ +- nuovo inserimento: puoi creare un nuovo profilo con un tocco su "Crea Nuovo Profilo" - oppure utilizzare un accesso esistente o la configurazione del secondo dispositivo come al solito +i contatti possono essere allegati come "Schede" in "Allega/Contatto"; quando il destinatario tocca le carte, è possibile stabilire la crittografia end-to-end garantita +- aggiungi contatti manualmente in "Nuova Chat / Nuovo Contatto / Aggiungi Contatto Manualmente" + - invia qualsiasi emoji come reazione + - mostrare le reazioni nei riepiloghi + - blocca/archivia/ecc. le chat direttamente dai risultati di ricerca + - Risolti bug e altro ancora From b4bb2e2b5df1ff778cd7562da6979d279f5adeb1 Mon Sep 17 00:00:00 2001 From: Andrea Enzo Lattmann Date: Wed, 17 Jul 2024 19:39:35 +0000 Subject: [PATCH 03/37] Translated using Weblate (Italian) Currently translated at 100.0% (19 of 19 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/it/ --- metadata/it/changelogs/6904.txt | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 metadata/it/changelogs/6904.txt diff --git a/metadata/it/changelogs/6904.txt b/metadata/it/changelogs/6904.txt new file mode 100644 index 000000000..a6cffadc4 --- /dev/null +++ b/metadata/it/changelogs/6904.txt @@ -0,0 +1,4 @@ +- aggiungi un'opzione per contrassegnare tutte le chat selezionate come "Lette" (tocca a lungo una chat per avviare la modalità di selezione) + - i nuovi profili chatmail per dispositivo singolo hanno come impostazione predefinita "Elimina Messaggi Dopo il Download" + - quando si utilizza un profilo chatmail su più dispositivi, la cancellazione viene modificata in "Automatica" (la strategia di cancellazione dipende quindi dal server) + - Risolti bug e altro ancora From c058eb29276e4d692f728c45e02b3ed00d9831d0 Mon Sep 17 00:00:00 2001 From: alex0valk Date: Wed, 24 Jul 2024 16:44:05 +0000 Subject: [PATCH 04/37] Translated using Weblate (Portuguese (Portugal)) Currently translated at 10.5% (2 of 19 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/pt_PT/ --- metadata/pt-PT/title.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 metadata/pt-PT/title.txt diff --git a/metadata/pt-PT/title.txt b/metadata/pt-PT/title.txt new file mode 100644 index 000000000..ec9e666c6 --- /dev/null +++ b/metadata/pt-PT/title.txt @@ -0,0 +1 @@ +Chat Delta From fed96377f5fa34f22c46bf2299c5c87aed901920 Mon Sep 17 00:00:00 2001 From: sushidave Date: Mon, 5 Aug 2024 21:07:07 +0000 Subject: [PATCH 05/37] Translated using Weblate (German) Currently translated at 100.0% (3 of 3 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/de/ --- metadata/de/full_description.txt | 17 +++++++++++++++++ metadata/de/short_description.txt | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 metadata/de/full_description.txt diff --git a/metadata/de/full_description.txt b/metadata/de/full_description.txt new file mode 100644 index 000000000..b9c845ee7 --- /dev/null +++ b/metadata/de/full_description.txt @@ -0,0 +1,17 @@ +Delta Chat ist eine dezentrale, sichere Messenger-App, die mit der bestehenden E-Mail-Infrastruktur vollständig kompatibel ist.. + +Mit Delta Chat erhalten Sie die Einfachheit bekannter Messenger mit der Reichweite von E-Mail. + +Einige Funktionen auf einen Blick: + +💬 Zuverläßiges Instant-Messaging mit der Unterstützung mehrerer Profile und Geräte. + +⚡️ Nutzen Sie sichere und schnelle Chatmail-Server, um sich auf einfache Art anzumelden. Sie benötigen weder Telefonnummer noch private Angaben. + +📧 Alternativ können Sie Ihre bestehende E-Mail-Adresse verwenden, um Ihren Posteingang als Chat-Nachrichten zu lesen. + +🎮 Interaktive Mini-Apps in den Chats fürs Spielen und Zusammenarbeiten. + +🔒 Geprüfte Ende-zu-Ende-Verschlüsselung, die vor Netzwerk- und Server-Attacken schützt. + +🆓 Vollständig freie Open-Source-Software, nach Internet-Standards erstellt. diff --git a/metadata/de/short_description.txt b/metadata/de/short_description.txt index fe3c8c22c..9f9fce4cf 100644 --- a/metadata/de/short_description.txt +++ b/metadata/de/short_description.txt @@ -1 +1 @@ -Sofort über E-Mail kommunizieren +Über E-Mail chatten. Elegant retro, dezentral und offen. Privacy by Design. From 4c58f31dc6b553566e9ca316340041790ca99af1 Mon Sep 17 00:00:00 2001 From: Andrea Enzo Lattmann Date: Fri, 9 Aug 2024 17:08:35 +0000 Subject: [PATCH 06/37] Translated using Weblate (Italian) Currently translated at 100.0% (3 of 3 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/it/ --- metadata/it/full_description.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/metadata/it/full_description.txt b/metadata/it/full_description.txt index 8578fe70d..3d4ea82ec 100644 --- a/metadata/it/full_description.txt +++ b/metadata/it/full_description.txt @@ -1,10 +1,12 @@ Delta Chat è un'app di messaggistica completamente compatibile con l'infrastruttura e-mail esistente. + Quindi, con Delta Chat ottieni la facilità di messaggistica ben nota alla portata di e-mail. Inoltre, sei indipendente da altre società o servizi, come i tuoi dati non sono correlati a Delta Chat, qui non aggiungerai nemmeno nuove dipendenze. + Alcune caratteristiche in breve: * Proteggi con la crittografia end-to-end automatica, che supporta il nuovo standard Autocrypt From f9539c160e2a8879540abd0d93264ec3f71d3712 Mon Sep 17 00:00:00 2001 From: Andrea Enzo Lattmann Date: Sat, 10 Aug 2024 19:29:17 +0000 Subject: [PATCH 07/37] Translated using Weblate (Italian) Currently translated at 100.0% (3 of 3 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/it/ --- metadata/it/full_description.txt | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/metadata/it/full_description.txt b/metadata/it/full_description.txt index 3d4ea82ec..ae96b1ad1 100644 --- a/metadata/it/full_description.txt +++ b/metadata/it/full_description.txt @@ -1,21 +1,19 @@ -Delta Chat è un'app di messaggistica completamente compatibile con -l'infrastruttura e-mail esistente. +Delta Chat è un'app di messaggistica decentralizzata e sicura, completamente +compatibile con l'infrastruttura e-mail esistente. +Quindi, con Delta Chat ottieni la facilità di messaggistica istantanea più nota con la portata dell' +e-mail. -Quindi, con Delta Chat ottieni la facilità di messaggistica ben nota alla portata di -e-mail. Inoltre, sei indipendente da altre società o servizi, come i tuoi -dati non sono correlati a Delta Chat, qui non aggiungerai nemmeno nuove dipendenze. +Alcune funzionalità in sintesi: +💬 Messaggistica istantanea affidabile con supporto multi-profilo e multi-dispositivo. -Alcune caratteristiche in breve: +⚡️ Iscriviti facilmente utilizzando server di chatmail veloci e sicuri. Non hai bisogno di un numero di telefono o di dati privati. -* Proteggi con la crittografia end-to-end automatica, che supporta il nuovo standard Autocrypt -* Veloce grazie all'uso di Push-IMAP -* Base utenti più ampia -- è possibile raggiungere anche i destinatari che non utilizzano Delta Chat -* Compatibile -- non solo con se stesso -* Interfaccia utente elegante e semplice -* Sistema distribuito -* Nessuno Spam -- per impostazione predefinita vengono visualizzati solo i messaggi di utenti conosciuti -* Affidabile -- sicuro per l'uso professionale -* Affidabile -- può essere utilizzato anche per messaggi aziendali -* Completamente OpenSource e basato su Standards +📧 In alternativa, usa il tuo indirizzo e-mail classico esistente per leggere la posta in arrivo come chat. + +🎮 Mini-app interattive nelle chat per giochi e collaborazione. + +🔒 Crittografia end-to-end verificata, sicura contro attacchi di rete e server. + +🆓 Software completamente open source/libero, basato su standard Internet. From bc511d6100d45031ee53848fdeca018a5c0a7dcb Mon Sep 17 00:00:00 2001 From: adbenitez Date: Thu, 29 Aug 2024 20:12:50 +0200 Subject: [PATCH 08/37] fix wrong translations of videochat_instance_example add doc comment --- src/main/res/values-nl/strings.xml | 2 +- src/main/res/values-sk/strings.xml | 2 +- src/main/res/values/strings.xml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index dacf9dc0c..1f24c9d3c 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -331,7 +331,7 @@ Druk om te openen Videogespreksinstantie Mijn videogespreksinstantie - Voorbeeld: https://meet.jit.si/$KAMER + Voorbeeld: https://meet.jit.si/$ROOM Schakel in om een videogesprek te starten vanuit een een-op-eengesprek. Zowel jij als je gesprekspartner hebben hiervoor een compatibele app of webbrowser nodig. Wil je ‘%1$s’, gebruiken om anderen uit te nodigen voor videogesprekken?\n\nNa het instellen kun je een videogesprek starten vanuit elk een-op-eengesprek. Deze instelling vervangt de vorige videogespreksinstelling. Uitnodiging voor videogesprek diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml index 887d1a356..fa3d39024 100644 --- a/src/main/res/values-sk/strings.xml +++ b/src/main/res/values-sk/strings.xml @@ -307,7 +307,7 @@ Otvoríte klepnutím Inštancia videohovoru Vaša inštancia videohovoru - Príklady: https://meet.jit.si/$MIESTNOST alebo basicwebrtc:https://vas-server + Príklady: https://meet.jit.si/$ROOM alebo basicwebrtc:https://vas-server Ak to zapnete, môžete začať video rozhovor z každej konverzácie. Vyžaduje kompatibilnú aplikáciu alebo prehliadač na oboch stranách. Použiť „%1$s“ na odoslanie pozvánky na videohovor?\n\nPo nastavení môžete začať videohovor z každej jednotlivej konverzácie. Toto nahradí predchádzajúce nastavenie pre videohovory, ak existujú. Pozvánka na videohovor diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 17bc0caff..f33dfd62b 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -331,6 +331,7 @@ Tap to Open Video Chat Instance Your Video Chat Instance + Example: https://your-server.org/$ROOM If enabled, you can start a video chat from each chat. Requires a compatible app or a browser on both ends. Use \"%1$s\" to invite others to video chats?\n\nOnce set, you can start a video chat from each chat. This replaces any previous setting for video chats. From b89e094f9f4785fe84ee9d5b3b5cfc9623da49bf Mon Sep 17 00:00:00 2001 From: adbenitez Date: Sat, 31 Aug 2024 00:12:58 +0200 Subject: [PATCH 09/37] improve account deletion dialog --- .../AccountSelectionListFragment.java | 27 ++++++++++++++-- .../layout/contact_selection_list_item.xml | 1 + src/main/res/layout/dialog_delete_profile.xml | 31 +++++++++++++++++++ 3 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 src/main/res/layout/dialog_delete_profile.xml diff --git a/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java index 3c0a31ef9..70c68753e 100644 --- a/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java @@ -4,10 +4,12 @@ import android.app.Activity; import android.app.Dialog; import android.content.Intent; import android.os.Bundle; +import android.text.TextUtils; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; @@ -16,13 +18,16 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.b44t.messenger.DcAccounts; +import com.b44t.messenger.DcContact; import com.b44t.messenger.DcContext; import org.thoughtcrime.securesms.ConnectivityActivity; import org.thoughtcrime.securesms.R; +import org.thoughtcrime.securesms.components.AvatarView; import org.thoughtcrime.securesms.connect.AccountManager; import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.mms.GlideApp; +import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.ViewUtil; @@ -113,9 +118,27 @@ public class AccountSelectionListFragment extends DialogFragment AccountSelectionListFragment.this.dismiss(); if (activity == null) return; DcAccounts accounts = DcHelper.getAccounts(activity); + + View dialogView = View.inflate(activity, R.layout.dialog_delete_profile, null); + AvatarView avatar = dialogView.findViewById(R.id.avatar); + TextView nameView = dialogView.findViewById(R.id.name); + TextView addrView = dialogView.findViewById(R.id.number); + TextView description = dialogView.findViewById(R.id.description); + DcContext dcContext = accounts.getAccount(accountId); + String name = dcContext.getConfig("displayname"); + DcContact contact = dcContext.getContact(DcContact.DC_CONTACT_ID_SELF); + if (TextUtils.isEmpty(name)) { + name = contact.getAddr(); + } + Recipient recipient = new Recipient(getContext(), contact, name); + avatar.setAvatar(GlideApp.with(activity), recipient, false); + nameView.setText(name); + addrView.setText(contact.getAddr()); + description.setText(activity.getString(R.string.delete_account_explain_with_name, name)); + AlertDialog dialog = new AlertDialog.Builder(activity) - .setTitle(accounts.getAccount(accountId).getNameNAddr()) - .setMessage(R.string.forget_login_confirmation_desktop) + .setTitle(R.string.delete_account) + .setView(dialogView) .setNegativeButton(R.string.cancel, (d, which) -> AccountManager.getInstance().showSwitchAccountMenu(activity)) .setPositiveButton(R.string.delete, (d2, which2) -> { boolean selected = accountId == accounts.getSelectedAccount().getAccountId(); diff --git a/src/main/res/layout/contact_selection_list_item.xml b/src/main/res/layout/contact_selection_list_item.xml index bb4aee0bf..4761e95e4 100644 --- a/src/main/res/layout/contact_selection_list_item.xml +++ b/src/main/res/layout/contact_selection_list_item.xml @@ -76,6 +76,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" + android:visibility="gone" android:focusable="false" android:clickable="false" /> diff --git a/src/main/res/layout/dialog_delete_profile.xml b/src/main/res/layout/dialog_delete_profile.xml new file mode 100644 index 000000000..d44a4e241 --- /dev/null +++ b/src/main/res/layout/dialog_delete_profile.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + From 0482889dfa0505df417031194d73bf7b0c35baa4 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Mon, 2 Sep 2024 19:27:07 +0200 Subject: [PATCH 10/37] improve delete-account-dialog layout --- src/main/java/com/b44t/messenger/rpc/Rpc.java | 4 + .../AccountSelectionListFragment.java | 11 ++- .../delete_account_item_background.xml | 7 ++ .../layout/contact_selection_list_item.xml | 1 - src/main/res/layout/dialog_delete_profile.xml | 91 ++++++++++++++++--- src/main/res/values-night/colors.xml | 2 + src/main/res/values/colors.xml | 2 + 7 files changed, 103 insertions(+), 15 deletions(-) create mode 100644 src/main/res/drawable/delete_account_item_background.xml diff --git a/src/main/java/com/b44t/messenger/rpc/Rpc.java b/src/main/java/com/b44t/messenger/rpc/Rpc.java index e7ae1b9e3..4f3f1df57 100644 --- a/src/main/java/com/b44t/messenger/rpc/Rpc.java +++ b/src/main/java/com/b44t/messenger/rpc/Rpc.java @@ -138,6 +138,10 @@ public class Rpc { getResult("leave_webxdc_realtime", accountId, instanceMessageId); } + public int getAccountFileSize(int accountId) throws RpcException { + return getResult("get_account_file_size", accountId).getAsInt(); + } + private static class Request { private final String jsonrpc = "2.0"; public final String method; diff --git a/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java index 70c68753e..82db4f97e 100644 --- a/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java @@ -20,6 +20,8 @@ import androidx.recyclerview.widget.RecyclerView; import com.b44t.messenger.DcAccounts; import com.b44t.messenger.DcContact; import com.b44t.messenger.DcContext; +import com.b44t.messenger.rpc.Rpc; +import com.b44t.messenger.rpc.RpcException; import org.thoughtcrime.securesms.ConnectivityActivity; import org.thoughtcrime.securesms.R; @@ -118,11 +120,13 @@ public class AccountSelectionListFragment extends DialogFragment AccountSelectionListFragment.this.dismiss(); if (activity == null) return; DcAccounts accounts = DcHelper.getAccounts(activity); + Rpc rpc = DcHelper.getRpc(activity); View dialogView = View.inflate(activity, R.layout.dialog_delete_profile, null); AvatarView avatar = dialogView.findViewById(R.id.avatar); TextView nameView = dialogView.findViewById(R.id.name); - TextView addrView = dialogView.findViewById(R.id.number); + TextView addrView = dialogView.findViewById(R.id.address); + TextView sizeView = dialogView.findViewById(R.id.size_label); TextView description = dialogView.findViewById(R.id.description); DcContext dcContext = accounts.getAccount(accountId); String name = dcContext.getConfig("displayname"); @@ -134,6 +138,11 @@ public class AccountSelectionListFragment extends DialogFragment avatar.setAvatar(GlideApp.with(activity), recipient, false); nameView.setText(name); addrView.setText(contact.getAddr()); + try { + sizeView.setText(Util.getPrettyFileSize(rpc.getAccountFileSize(accountId))); + } catch (RpcException e) { + e.printStackTrace(); + } description.setText(activity.getString(R.string.delete_account_explain_with_name, name)); AlertDialog dialog = new AlertDialog.Builder(activity) diff --git a/src/main/res/drawable/delete_account_item_background.xml b/src/main/res/drawable/delete_account_item_background.xml new file mode 100644 index 000000000..583b62b94 --- /dev/null +++ b/src/main/res/drawable/delete_account_item_background.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/src/main/res/layout/contact_selection_list_item.xml b/src/main/res/layout/contact_selection_list_item.xml index 4761e95e4..bb4aee0bf 100644 --- a/src/main/res/layout/contact_selection_list_item.xml +++ b/src/main/res/layout/contact_selection_list_item.xml @@ -76,7 +76,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" - android:visibility="gone" android:focusable="false" android:clickable="false" /> diff --git a/src/main/res/layout/dialog_delete_profile.xml b/src/main/res/layout/dialog_delete_profile.xml index d44a4e241..ed6145d1a 100644 --- a/src/main/res/layout/dialog_delete_profile.xml +++ b/src/main/res/layout/dialog_delete_profile.xml @@ -1,31 +1,96 @@ + android:layout_height="wrap_content"> + + + + + android:background="@drawable/delete_account_item_background"> - + + + + - - + android:ellipsize="marquee" + android:singleLine="true" + android:fontFamily="sans-serif" + android:textSize="16sp" + tools:text="Frieeeeeeedrich Nieeeeeeeeeetzsche" /> + android:id="@+id/address" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textDirection="ltr" + android:singleLine="true" + android:ellipsize="marquee" + + android:textSize="14sp" + android:fontFamily="sans-serif-light" + tools:text="me@example.com" /> + + + + + + + + diff --git a/src/main/res/values-night/colors.xml b/src/main/res/values-night/colors.xml index d7a7b416d..82e4f5ce0 100644 --- a/src/main/res/values-night/colors.xml +++ b/src/main/res/values-night/colors.xml @@ -9,4 +9,6 @@ @color/gray78 #808080 + + #222222 diff --git a/src/main/res/values/colors.xml b/src/main/res/values/colors.xml index f048ae178..e0e4f8753 100644 --- a/src/main/res/values/colors.xml +++ b/src/main/res/values/colors.xml @@ -68,4 +68,6 @@ @color/light_green @color/reaction_pill_border @color/reaction_pill_text_color + + #eeeeee From 00d1803631511dda45f3de0371ddd10b65ebd690 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Mon, 2 Sep 2024 19:36:36 +0200 Subject: [PATCH 11/37] tweak avatar size --- src/main/res/layout/dialog_delete_profile.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/res/layout/dialog_delete_profile.xml b/src/main/res/layout/dialog_delete_profile.xml index ed6145d1a..2d009ea8b 100644 --- a/src/main/res/layout/dialog_delete_profile.xml +++ b/src/main/res/layout/dialog_delete_profile.xml @@ -33,8 +33,8 @@ + android:layout_width="50dp" + android:layout_height="50dp" /> Date: Fri, 6 Sep 2024 20:38:04 +0200 Subject: [PATCH 12/37] update deltachat-core-rust to 'chore(release): prepare for 1.142.12' of 'v1.142.12' --- jni/deltachat-core-rust | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jni/deltachat-core-rust b/jni/deltachat-core-rust index 2dd85afdc..e4ebb9171 160000 --- a/jni/deltachat-core-rust +++ b/jni/deltachat-core-rust @@ -1 +1 @@ -Subproject commit 2dd85afdc2ae8626f1cd824d713ef64ccbf07379 +Subproject commit e4ebb917126a1243c7180358a50e7d0af7742594 From e076691f2ae0f65592e72b339364ccc332f4b241 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 6 Sep 2024 22:36:43 +0200 Subject: [PATCH 13/37] fix on-click in profile switcher button --- .../org/thoughtcrime/securesms/ConversationListActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java index 1f2b166bc..7ba3876cd 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java @@ -182,6 +182,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit TooltipCompat.setTooltipText(searchAction, getText(R.string.search_explain)); TooltipCompat.setTooltipText(selfAvatar, getText(R.string.switch_account)); + selfAvatar.setOnClickListener(v -> AccountManager.getInstance().showSwitchAccountMenu(this)); findViewById(R.id.avatar_and_title).setOnClickListener(v -> { if (!isRelayingMessageContent(this)) { AccountManager.getInstance().showSwitchAccountMenu(this); From 958bdddacf47a7beab1b78948722d4ce75f2439a Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 6 Sep 2024 21:48:59 +0200 Subject: [PATCH 14/37] bump app version number and update changelog --- CHANGELOG.md | 13 +++++++++++++ build.gradle | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f65430184..02fa2b571 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Delta Chat Android Changelog +## v1.46.14 +2024-09 + +* add monochrome/themed launcher icon support +* allow to remove the selected profile in "Switch Profile" dialog +* improve display of selected profile in "Switch Profile" dialog +* improve the hit/tap area to open "Switch Profile" dialog in the main screen's toolbar +* add support for system per-app language and remove in-app language selector +* remove the experimental "encrypt database" checkbox in classic registration screen +* fix various bugs +* update to core 1.142.12 + + ## v1.46.13 2024-08 diff --git a/build.gradle b/build.gradle index aa649f673..acde29457 100644 --- a/build.gradle +++ b/build.gradle @@ -27,8 +27,8 @@ android { useLibrary 'org.apache.http.legacy' defaultConfig { - versionCode 695 - versionName "1.46.13" + versionCode 696 + versionName "1.46.14" applicationId "com.b44t.messenger" multiDexEnabled true From e666bbf610907e19db79cc29592badeb1d04f6d8 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Thu, 5 Sep 2024 21:14:58 +0200 Subject: [PATCH 15/37] allow to set proxy in InstantOnboardingActivity --- src/main/AndroidManifest.xml | 5 + .../securesms/InstantOnboardingActivity.java | 19 ++- .../securesms/ProxySettingsActivity.java | 150 ++++++++++++++++++ .../res/layout/proxy_settings_activity.xml | 128 +++++++++++++++ src/main/res/menu/instant_onboarding_menu.xml | 15 ++ src/main/res/values/strings.xml | 2 + 6 files changed, 318 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/thoughtcrime/securesms/ProxySettingsActivity.java create mode 100644 src/main/res/layout/proxy_settings_activity.xml create mode 100644 src/main/res/menu/instant_onboarding_menu.xml diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 3b2ee429f..ec201402c 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -249,6 +249,11 @@ + + { + proxyGroup.setVisibility(isChecked? View.VISIBLE : View.GONE); + }); + proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_SOCKS5_ENABLED) == 1); + + TextInputEditText proxyHostInput = findViewById(R.id.proxy_host_text); + proxyHostInput.setOnFocusChangeListener((view, focused) -> focusListener(view, focused, VerificationType.SERVER)); + proxyHostInput.setText(DcHelper.get(this, CONFIG_SOCKS5_HOST)); + + TextInputEditText proxyPortInput = findViewById(R.id.proxy_port_text); + proxyPortInput.setOnFocusChangeListener((view, focused) -> focusListener(view, focused, VerificationType.PORT)); + proxyPortInput.setText(DcHelper.get(this, CONFIG_SOCKS5_PORT)); + + TextInputEditText proxyUserInput = findViewById(R.id.proxy_user_text); + proxyUserInput.setText(DcHelper.get(this, CONFIG_SOCKS5_USER)); + + TextInputEditText proxyPasswordInput = findViewById(R.id.proxy_password_text); + proxyPasswordInput.setText(DcHelper.get(this, CONFIG_SOCKS5_PASSWORD)); + } + + @Override + public void onResume() { + super.onResume(); + dynamicTheme.onResume(this); + } + + public boolean onOptionsItemSelected(MenuItem item) { + int id = item.getItemId(); + if (id == android.R.id.home) { + finish(); + return true; + } + return super.onOptionsItemSelected(item); + } + + @Override + public void onDestroy() { + super.onDestroy(); + saveConfig(); + } + + private void focusListener(View view, boolean focused, VerificationType type) { + + if (!focused) { + TextInputEditText inputEditText = (TextInputEditText) view; + switch (type) { + case SERVER: + verifyServer(inputEditText); + break; + case PORT: + verifyPort(inputEditText); + break; + } + } + } + + private void verifyServer(TextInputEditText view) { + String server = view.getText().toString(); + if (!TextUtils.isEmpty(server) && !Patterns.DOMAIN_NAME.matcher(server).matches() + && !Patterns.IP_ADDRESS.matcher(server).matches() + && !Patterns.WEB_URL.matcher(server).matches() + && !"localhost".equals(server)) { + view.setError(getString(R.string.login_error_server)); + } + } + + private void verifyPort(TextInputEditText view) { + String portString = view.getText().toString(); + if (!portString.isEmpty()) { + String error = getString(R.string.login_error_port); + try { + int port = Integer.valueOf(portString); + if (port < 1 || port > 65535) { + view.setError(error); + } + } catch (NumberFormatException exception) { + view.setError(error); + } + } + } + + private void saveConfig() { + DcHelper.getContext(this).setConfigInt(CONFIG_SOCKS5_ENABLED, proxySwitch.isChecked()? 1 : 0); + setConfig(R.id.proxy_host_text, CONFIG_SOCKS5_HOST, true); + setConfig(R.id.proxy_port_text, CONFIG_SOCKS5_PORT, true); + setConfig(R.id.proxy_user_text, CONFIG_SOCKS5_USER, true); + setConfig(R.id.proxy_password_text, CONFIG_SOCKS5_PASSWORD, false); + } + + private void setConfig(@IdRes int viewId, String configTarget, boolean doTrim) { + TextInputEditText view = findViewById(viewId); + String value = view.getText().toString(); + if(doTrim) { + value = value.trim(); + } + DcHelper.getContext(this).setConfig(configTarget, value.isEmpty()? null : value); + } + +} diff --git a/src/main/res/layout/proxy_settings_activity.xml b/src/main/res/layout/proxy_settings_activity.xml new file mode 100644 index 000000000..d3660855e --- /dev/null +++ b/src/main/res/layout/proxy_settings_activity.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/res/menu/instant_onboarding_menu.xml b/src/main/res/menu/instant_onboarding_menu.xml new file mode 100644 index 000000000..c30ec587c --- /dev/null +++ b/src/main/res/menu/instant_onboarding_menu.xml @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 17bc0caff..9ae997edb 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -604,6 +604,8 @@ SMTP Port SMTP Security Authorization Method + Proxy Settings + Use Proxy SOCKS5 Use SOCKS5 From 18974ff0232ea2044480cd82c48894f52069534e Mon Sep 17 00:00:00 2001 From: adbenitez Date: Mon, 9 Sep 2024 19:32:41 +0200 Subject: [PATCH 16/37] use new proxy screen in RegistrationActivity --- .../securesms/ProxySettingsActivity.java | 6 + .../securesms/RegistrationActivity.java | 52 +++----- src/main/res/layout/registration_activity.xml | 121 ++---------------- 3 files changed, 35 insertions(+), 144 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/ProxySettingsActivity.java b/src/main/java/org/thoughtcrime/securesms/ProxySettingsActivity.java index 8471e84cb..0c049172a 100644 --- a/src/main/java/org/thoughtcrime/securesms/ProxySettingsActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ProxySettingsActivity.java @@ -90,6 +90,12 @@ public class ProxySettingsActivity extends BaseActionBarActivity { saveConfig(); } + @Override + public void onPause() { + super.onPause(); + saveConfig(); + } + private void focusListener(View view, boolean focused, VerificationType type) { if (!focused) { diff --git a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java index f41c22896..8a5eb6f9e 100644 --- a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java @@ -96,7 +96,6 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve Spinner certCheck; private SwitchCompat proxySwitch; - private Group proxyGroup; @Override public void onCreate(Bundle bundle) { @@ -127,15 +126,11 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve authMethod = findViewById(R.id.auth_method); certCheck = findViewById(R.id.cert_check); - proxyGroup = findViewById(R.id.socks5_group); - proxySwitch = findViewById(R.id.socks5_switch); - proxySwitch.setOnCheckedChangeListener((buttonView, isChecked) -> { - proxyGroup.setVisibility(isChecked? advancedGroup.getVisibility() : View.GONE); + proxySwitch = findViewById(R.id.proxy_settings); + proxySwitch.setOnClickListener(l -> { + proxySwitch.setChecked(!proxySwitch.isChecked()); // revert toggle + startActivity(new Intent(this, ProxySettingsActivity.class)); }); - TextInputEditText proxyHostInput = findViewById(R.id.socks5_host_text); - TextInputEditText proxyPortInput = findViewById(R.id.socks5_port_text); - proxyHostInput.setOnFocusChangeListener((view, focused) -> focusListener(view, focused, VerificationType.SERVER)); - proxyPortInput.setOnFocusChangeListener((view, focused) -> focusListener(view, focused, VerificationType.PORT)); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { @@ -161,7 +156,16 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve advancedIcon.setOnClickListener(l -> onAdvancedSettings()); advancedIcon.setRotation(45); viewLogText.setOnClickListener((view) -> showLog()); + boolean isConfigured = DcHelper.isConfigured(getApplicationContext()); + boolean expandAdvanced = false; + String strVal; + int intVal; + + intVal = DcHelper.getInt(this, CONFIG_SOCKS5_ENABLED); + proxySwitch.setChecked(intVal == 1); + expandAdvanced = expandAdvanced || intVal == 1; + if (isConfigured) { String email = DcHelper.get(this, CONFIG_ADDRESS); emailInput.setText(email); @@ -170,10 +174,6 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve } passwordInput.setText(DcHelper.get(this, CONFIG_MAIL_PASSWORD)); - boolean expandAdvanced = false; - String strVal; - int intVal; - TextInputEditText imapLoginInput = findViewById(R.id.imap_login_text); strVal = DcHelper.get(this, CONFIG_MAIL_USER); imapLoginInput.setText(strVal); @@ -213,17 +213,6 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve smtpSecurity.setSelection(intVal); expandAdvanced = expandAdvanced || intVal != 0; - intVal = DcHelper.getInt(this, CONFIG_SOCKS5_ENABLED); - proxySwitch.setChecked(intVal == 1); - expandAdvanced = expandAdvanced || intVal == 1; - - proxyHostInput.setText(DcHelper.get(this, CONFIG_SOCKS5_HOST)); - proxyPortInput.setText(DcHelper.get(this, CONFIG_SOCKS5_PORT)); - TextInputEditText proxyUserInput = findViewById(R.id.socks5_user_text); - TextInputEditText proxyPasswordInput = findViewById(R.id.socks5_password_text); - proxyUserInput.setText(DcHelper.get(this, CONFIG_SOCKS5_USER)); - proxyPasswordInput.setText(DcHelper.get(this, CONFIG_SOCKS5_PASSWORD)); - int serverFlags = DcHelper.getInt(this, CONFIG_SERVER_FLAGS); int sel = 0; if((serverFlags&DcContext.DC_LP_AUTH_OAUTH2)!=0) { @@ -242,8 +231,6 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve int certCheckFlags = DcHelper.getInt(this, "imap_certificate_checks"); certCheck.setSelection(certCheckFlags); expandAdvanced = expandAdvanced || certCheckFlags != 0; - - if (expandAdvanced) { onAdvancedSettings(); } } else if (getIntent() != null && getIntent().getBundleExtra(ACCOUNT_DATA) != null) { // Companion app might have sent account data Bundle b = getIntent().getBundleExtra(ACCOUNT_DATA); @@ -261,6 +248,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve } } + if (expandAdvanced) { onAdvancedSettings(); } registerForEvents(); } @@ -272,6 +260,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve public void onResume() { super.onResume(); dynamicTheme.onResume(this); + proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_SOCKS5_ENABLED) == 1); } private void showLog() { @@ -574,12 +563,10 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve private void onAdvancedSettings() { boolean advancedViewVisible = advancedGroup.getVisibility() == View.VISIBLE; if (advancedViewVisible) { - proxyGroup.setVisibility(View.GONE); advancedGroup.setVisibility(View.GONE); advancedIcon.setRotation(45); } else { advancedGroup.setVisibility(View.VISIBLE); - if (proxySwitch.isChecked()) proxyGroup.setVisibility(View.VISIBLE); advancedIcon.setRotation(0); } } @@ -621,15 +608,6 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve setConfig(R.id.smtp_port_text, CONFIG_SEND_PORT, true); setConfig(R.id.smtp_login_text, CONFIG_SEND_USER, false); setConfig(R.id.smtp_password_text, CONFIG_SEND_PASSWORD, false); - if (proxySwitch.isChecked()) { - DcHelper.getContext(this).setConfigInt(CONFIG_SOCKS5_ENABLED, 1); - setConfig(R.id.socks5_host_text, CONFIG_SOCKS5_HOST, true); - setConfig(R.id.socks5_port_text, CONFIG_SOCKS5_PORT, true); - setConfig(R.id.socks5_user_text, CONFIG_SOCKS5_USER, true); - setConfig(R.id.socks5_password_text, CONFIG_SOCKS5_PASSWORD, false); - } else { - DcHelper.getContext(this).setConfigInt(CONFIG_SOCKS5_ENABLED, 0); - } DcHelper.getContext(this).setConfigInt(CONFIG_MAIL_SECURITY, imapSecurity.getSelectedItemPosition()); DcHelper.getContext(this).setConfigInt(CONFIG_SEND_SECURITY, smtpSecurity.getSelectedItemPosition()); diff --git a/src/main/res/layout/registration_activity.xml b/src/main/res/layout/registration_activity.xml index eae1b7be8..0a8007c83 100644 --- a/src/main/res/layout/registration_activity.xml +++ b/src/main/res/layout/registration_activity.xml @@ -123,7 +123,7 @@ android:visibility="gone" tools:visibility="visible" app:constraint_referenced_ids="inbox, imap_login, imap_server, imap_port, imap_security_label, imap_security, outbox_view_spacer_top, - outbox, smtp_login, smtp_password, smtp_server, smtp_port, smtp_security_label, smtp_security, auth_method_label, auth_method, cert_check_label, cert_check, view_log_button, socks5_switch" /> + outbox, smtp_login, smtp_password, smtp_server, smtp_port, smtp_security_label, smtp_security, auth_method_label, auth_method, cert_check_label, cert_check, view_log_button, proxy_settings" /> + + + app:layout_constraintTop_toBottomOf="@id/proxy_settings" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:layout_constraintTop_toBottomOf="@id/cert_check" /> Date: Mon, 9 Sep 2024 19:52:05 +0200 Subject: [PATCH 17/37] add proxy settings outside in advanced settings --- .../securesms/preferences/AdvancedPreferenceFragment.java | 6 ++++++ src/main/res/xml/preferences_advanced.xml | 3 +++ 2 files changed, 9 insertions(+) diff --git a/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java index ed633a70a..fbcf11397 100644 --- a/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java @@ -37,6 +37,7 @@ import com.b44t.messenger.rpc.RpcException; import org.thoughtcrime.securesms.ApplicationPreferencesActivity; import org.thoughtcrime.securesms.ConversationActivity; import org.thoughtcrime.securesms.LogViewActivity; +import org.thoughtcrime.securesms.ProxySettingsActivity; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.RegistrationActivity; import org.thoughtcrime.securesms.connect.DcEventCenter; @@ -208,6 +209,11 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment return true; })); + this.findPreference("proxy_settings_button").setOnPreferenceClickListener((preference) -> { + startActivity(new Intent(getActivity(), ProxySettingsActivity.class)); + return true; + }); + Preference passwordAndAccount = this.findPreference("password_account_settings_button"); passwordAndAccount.setOnPreferenceClickListener(((preference) -> { boolean result = ScreenLockUtil.applyScreenLock(getActivity(), getString(R.string.pref_password_and_account_settings), getString(R.string.enter_system_secret_to_continue), REQUEST_CODE_CONFIRM_CREDENTIALS_ACCOUNT); diff --git a/src/main/res/xml/preferences_advanced.xml b/src/main/res/xml/preferences_advanced.xml index 9098d943d..0c90f637d 100644 --- a/src/main/res/xml/preferences_advanced.xml +++ b/src/main/res/xml/preferences_advanced.xml @@ -90,6 +90,9 @@ + + From ef8838cbe326b986db54c23f30e89b1b872a3d2e Mon Sep 17 00:00:00 2001 From: adbenitez Date: Mon, 9 Sep 2024 20:13:11 +0200 Subject: [PATCH 18/37] add proxy settings to main menu if it is enabled --- .../securesms/ConversationListActivity.java | 14 ++++++-------- src/main/res/menu/text_secure_normal.xml | 5 +++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java index 7ba3876cd..606a57906 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java @@ -20,6 +20,7 @@ import static org.thoughtcrime.securesms.ConversationActivity.CHAT_ID_EXTRA; import static org.thoughtcrime.securesms.ConversationActivity.STARTING_POSITION_EXTRA; import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_ADDRESS; import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SERVER_FLAGS; +import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SOCKS5_ENABLED; import static org.thoughtcrime.securesms.util.RelayUtil.acquireRelayMessageContent; import static org.thoughtcrime.securesms.util.RelayUtil.getDirectSharingChatId; import static org.thoughtcrime.securesms.util.RelayUtil.getSharedTitle; @@ -357,14 +358,8 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit if (!isRelayingMessageContent(this)) { inflater.inflate(R.menu.text_secure_normal, menu); - MenuItem item = menu.findItem(R.id.menu_global_map); - if (Prefs.isLocationStreamingEnabled(this)) { - item.setVisible(true); - } - - if (!Prefs.isLocationStreamingEnabled(this)) { - menu.findItem(R.id.menu_global_map).setVisible(false); - } + menu.findItem(R.id.menu_global_map).setVisible(Prefs.isLocationStreamingEnabled(this)); + menu.findItem(R.id.menu_proxy_settings).setVisible(DcHelper.getInt(this, CONFIG_SOCKS5_ENABLED) == 1); } super.onPrepareOptionsMenu(menu); @@ -430,6 +425,9 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit case R.id.menu_global_map: WebxdcActivity.openMaps(this, 0); return true; + case R.id.menu_proxy_settings: + startActivity(new Intent(this, ProxySettingsActivity.class)); + return true; case android.R.id.home: onBackPressed(); return true; diff --git a/src/main/res/menu/text_secure_normal.xml b/src/main/res/menu/text_secure_normal.xml index 84f738ddc..66d0a9e7f 100644 --- a/src/main/res/menu/text_secure_normal.xml +++ b/src/main/res/menu/text_secure_normal.xml @@ -7,6 +7,11 @@ android:icon="@drawable/baseline_qr_code_24" app:showAsAction="always"/> + + From 295e1b50d296841bfe0029f2c10e4957f94047dc Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 10 Sep 2024 13:22:34 +0200 Subject: [PATCH 19/37] restart IO on proxy changes --- .../org/thoughtcrime/securesms/ProxySettingsActivity.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/thoughtcrime/securesms/ProxySettingsActivity.java b/src/main/java/org/thoughtcrime/securesms/ProxySettingsActivity.java index 0c049172a..d88f66073 100644 --- a/src/main/java/org/thoughtcrime/securesms/ProxySettingsActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ProxySettingsActivity.java @@ -17,6 +17,7 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.widget.SwitchCompat; import androidx.constraintlayout.widget.Group; +import com.b44t.messenger.DcContext; import com.google.android.material.textfield.TextInputEditText; import org.thoughtcrime.securesms.connect.DcHelper; @@ -137,11 +138,14 @@ public class ProxySettingsActivity extends BaseActionBarActivity { } private void saveConfig() { - DcHelper.getContext(this).setConfigInt(CONFIG_SOCKS5_ENABLED, proxySwitch.isChecked()? 1 : 0); + DcContext dcContext = DcHelper.getContext(this); + dcContext.setConfigInt(CONFIG_SOCKS5_ENABLED, proxySwitch.isChecked()? 1 : 0); setConfig(R.id.proxy_host_text, CONFIG_SOCKS5_HOST, true); setConfig(R.id.proxy_port_text, CONFIG_SOCKS5_PORT, true); setConfig(R.id.proxy_user_text, CONFIG_SOCKS5_USER, true); setConfig(R.id.proxy_password_text, CONFIG_SOCKS5_PASSWORD, false); + dcContext.stopIo(); + dcContext.startIo(); } private void setConfig(@IdRes int viewId, String configTarget, boolean doTrim) { From c599fc8e7912c387781da0cebe6f4b20f849f4d1 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 10 Sep 2024 15:46:40 +0200 Subject: [PATCH 20/37] fix typo in NotificationCenter --- .../org/thoughtcrime/securesms/ConversationListActivity.java | 2 +- .../securesms/accounts/AccountSelectionListFragment.java | 2 +- .../securesms/notifications/NotificationCenter.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java index 7ba3876cd..3bf20f9a6 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java @@ -262,7 +262,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit DcContext dcContext = DcHelper.getContext(this); int accountId = getIntent().getIntExtra(ACCOUNT_ID_EXTRA, dcContext.getAccountId()); if (getIntent().getBooleanExtra(CLEAR_NOTIFICATIONS, false)) { - DcHelper.getNotificationCenter(this).removeAllNotifiations(accountId); + DcHelper.getNotificationCenter(this).removeAllNotifications(accountId); } if (accountId != dcContext.getAccountId()) { AccountManager.getInstance().switchAccountAndStartActivity(this, accountId); diff --git a/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java index 3c0a31ef9..8ee696cc5 100644 --- a/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java @@ -119,7 +119,7 @@ public class AccountSelectionListFragment extends DialogFragment .setNegativeButton(R.string.cancel, (d, which) -> AccountManager.getInstance().showSwitchAccountMenu(activity)) .setPositiveButton(R.string.delete, (d2, which2) -> { boolean selected = accountId == accounts.getSelectedAccount().getAccountId(); - DcHelper.getNotificationCenter(activity).removeAllNotifiations(accountId); + DcHelper.getNotificationCenter(activity).removeAllNotifications(accountId); accounts.removeAccount(accountId); if (selected) { DcContext selAcc = accounts.getSelectedAccount(); diff --git a/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java index ae329deba..929e47930 100644 --- a/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java +++ b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java @@ -565,7 +565,7 @@ public class NotificationCenter { } catch (Exception e) { Log.w(TAG, e); } } - public void removeAllNotifiations(int accountId) { + public void removeAllNotifications(int accountId) { NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context); String tag = String.valueOf(accountId); synchronized (inboxes) { From 357e6de0310a5f6021b7c7ea4f38ff151511b29d Mon Sep 17 00:00:00 2001 From: "Weblate (bot)" Date: Wed, 11 Sep 2024 22:54:49 +0200 Subject: [PATCH 21/37] Translations update from Hosted Weblate (#3145) * Translated using Weblate (Portuguese) Currently translated at 16.6% (3 of 18 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/pt/ * Translated using Weblate (Italian) Currently translated at 100.0% (18 of 18 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/it/ * Translated using Weblate (Italian) Currently translated at 100.0% (19 of 19 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/it/ * Translated using Weblate (Portuguese (Portugal)) Currently translated at 10.5% (2 of 19 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/pt_PT/ * Translated using Weblate (German) Currently translated at 100.0% (3 of 3 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/de/ * Translated using Weblate (Italian) Currently translated at 100.0% (3 of 3 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/it/ * Translated using Weblate (Italian) Currently translated at 100.0% (3 of 3 strings) Translation: Delta Chat/Android metadata Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/it/ --------- Co-authored-by: Leonardo Colman Co-authored-by: Andrea Enzo Lattmann Co-authored-by: alex0valk Co-authored-by: sushidave Co-authored-by: Hocuri --- .../metadata/android/de/full_description.txt | 17 ++++++++++ .../metadata/android/de/short_description.txt | 2 +- .../metadata/android/it/full_description.txt | 32 +++++++++---------- fastlane/metadata/android/pt-PT/title.txt | 1 + .../metadata/android/pt/full_description.txt | 19 +++++++++++ fastlane/metadata/android/pt/title.txt | 1 + metadata/it/changelogs/6864.txt | 7 ++++ metadata/it/changelogs/6904.txt | 4 +++ 8 files changed, 66 insertions(+), 17 deletions(-) create mode 100644 fastlane/metadata/android/de/full_description.txt create mode 100644 fastlane/metadata/android/pt-PT/title.txt create mode 100644 fastlane/metadata/android/pt/full_description.txt create mode 100644 fastlane/metadata/android/pt/title.txt create mode 100644 metadata/it/changelogs/6864.txt create mode 100644 metadata/it/changelogs/6904.txt diff --git a/fastlane/metadata/android/de/full_description.txt b/fastlane/metadata/android/de/full_description.txt new file mode 100644 index 000000000..b9c845ee7 --- /dev/null +++ b/fastlane/metadata/android/de/full_description.txt @@ -0,0 +1,17 @@ +Delta Chat ist eine dezentrale, sichere Messenger-App, die mit der bestehenden E-Mail-Infrastruktur vollständig kompatibel ist.. + +Mit Delta Chat erhalten Sie die Einfachheit bekannter Messenger mit der Reichweite von E-Mail. + +Einige Funktionen auf einen Blick: + +💬 Zuverläßiges Instant-Messaging mit der Unterstützung mehrerer Profile und Geräte. + +⚡️ Nutzen Sie sichere und schnelle Chatmail-Server, um sich auf einfache Art anzumelden. Sie benötigen weder Telefonnummer noch private Angaben. + +📧 Alternativ können Sie Ihre bestehende E-Mail-Adresse verwenden, um Ihren Posteingang als Chat-Nachrichten zu lesen. + +🎮 Interaktive Mini-Apps in den Chats fürs Spielen und Zusammenarbeiten. + +🔒 Geprüfte Ende-zu-Ende-Verschlüsselung, die vor Netzwerk- und Server-Attacken schützt. + +🆓 Vollständig freie Open-Source-Software, nach Internet-Standards erstellt. diff --git a/fastlane/metadata/android/de/short_description.txt b/fastlane/metadata/android/de/short_description.txt index fe3c8c22c..9f9fce4cf 100644 --- a/fastlane/metadata/android/de/short_description.txt +++ b/fastlane/metadata/android/de/short_description.txt @@ -1 +1 @@ -Sofort über E-Mail kommunizieren +Über E-Mail chatten. Elegant retro, dezentral und offen. Privacy by Design. diff --git a/fastlane/metadata/android/it/full_description.txt b/fastlane/metadata/android/it/full_description.txt index 8578fe70d..ae96b1ad1 100644 --- a/fastlane/metadata/android/it/full_description.txt +++ b/fastlane/metadata/android/it/full_description.txt @@ -1,19 +1,19 @@ -Delta Chat è un'app di messaggistica completamente compatibile con -l'infrastruttura e-mail esistente. +Delta Chat è un'app di messaggistica decentralizzata e sicura, completamente +compatibile con l'infrastruttura e-mail esistente. -Quindi, con Delta Chat ottieni la facilità di messaggistica ben nota alla portata di -e-mail. Inoltre, sei indipendente da altre società o servizi, come i tuoi -dati non sono correlati a Delta Chat, qui non aggiungerai nemmeno nuove dipendenze. +Quindi, con Delta Chat ottieni la facilità di messaggistica istantanea più nota con la portata dell' +e-mail. -Alcune caratteristiche in breve: +Alcune funzionalità in sintesi: -* Proteggi con la crittografia end-to-end automatica, che supporta il nuovo standard Autocrypt -* Veloce grazie all'uso di Push-IMAP -* Base utenti più ampia -- è possibile raggiungere anche i destinatari che non utilizzano Delta Chat -* Compatibile -- non solo con se stesso -* Interfaccia utente elegante e semplice -* Sistema distribuito -* Nessuno Spam -- per impostazione predefinita vengono visualizzati solo i messaggi di utenti conosciuti -* Affidabile -- sicuro per l'uso professionale -* Affidabile -- può essere utilizzato anche per messaggi aziendali -* Completamente OpenSource e basato su Standards +💬 Messaggistica istantanea affidabile con supporto multi-profilo e multi-dispositivo. + +⚡️ Iscriviti facilmente utilizzando server di chatmail veloci e sicuri. Non hai bisogno di un numero di telefono o di dati privati. + +📧 In alternativa, usa il tuo indirizzo e-mail classico esistente per leggere la posta in arrivo come chat. + +🎮 Mini-app interattive nelle chat per giochi e collaborazione. + +🔒 Crittografia end-to-end verificata, sicura contro attacchi di rete e server. + +🆓 Software completamente open source/libero, basato su standard Internet. diff --git a/fastlane/metadata/android/pt-PT/title.txt b/fastlane/metadata/android/pt-PT/title.txt new file mode 100644 index 000000000..ec9e666c6 --- /dev/null +++ b/fastlane/metadata/android/pt-PT/title.txt @@ -0,0 +1 @@ +Chat Delta diff --git a/fastlane/metadata/android/pt/full_description.txt b/fastlane/metadata/android/pt/full_description.txt new file mode 100644 index 000000000..eb052e74a --- /dev/null +++ b/fastlane/metadata/android/pt/full_description.txt @@ -0,0 +1,19 @@ +Delta Chat é um aplicativo de mensagens que é completamente compatível com a existente +infraestrutura de e-mails. + +Portanto, com o Delta Chat você tem a facilidade de aplicativos conhecidos de mensagem +ao alcance do e-mail. Além disso, você é independente de outras empresas e serviços -- seus +dados não estão relacionados ao Delta Chat, você não irá ter nenhuma dependência nova por aqui. + +Algumas funcionalidades: + +* Segurança ponta-a-ponta automática, suportando o novo padrão Autocrypt +* Rápido pelo uso de Push-IMAP +* Maior base de usuários -- destinatários que não estão usando o Delta Chat também podem ser alcançados +* Compatível -- não apenas consigo mesmo +* Elegante e com uma interface simples de usar +* Sistema distribuído +* Sem Spam -- apenas mensagens de usuários conhecidos são mostradas por padrão +* Confiável -- seguro para uso profissional +* Seguro - pode ser usado até mesmo para mensagens de negócios +* Completamente Open Source e baseado em Padrões diff --git a/fastlane/metadata/android/pt/title.txt b/fastlane/metadata/android/pt/title.txt new file mode 100644 index 000000000..97cecc272 --- /dev/null +++ b/fastlane/metadata/android/pt/title.txt @@ -0,0 +1 @@ +Delta Chat diff --git a/metadata/it/changelogs/6864.txt b/metadata/it/changelogs/6864.txt new file mode 100644 index 000000000..ab3bcb224 --- /dev/null +++ b/metadata/it/changelogs/6864.txt @@ -0,0 +1,7 @@ +- nuovo inserimento: puoi creare un nuovo profilo con un tocco su "Crea Nuovo Profilo" - oppure utilizzare un accesso esistente o la configurazione del secondo dispositivo come al solito +i contatti possono essere allegati come "Schede" in "Allega/Contatto"; quando il destinatario tocca le carte, è possibile stabilire la crittografia end-to-end garantita +- aggiungi contatti manualmente in "Nuova Chat / Nuovo Contatto / Aggiungi Contatto Manualmente" + - invia qualsiasi emoji come reazione + - mostrare le reazioni nei riepiloghi + - blocca/archivia/ecc. le chat direttamente dai risultati di ricerca + - Risolti bug e altro ancora diff --git a/metadata/it/changelogs/6904.txt b/metadata/it/changelogs/6904.txt new file mode 100644 index 000000000..a6cffadc4 --- /dev/null +++ b/metadata/it/changelogs/6904.txt @@ -0,0 +1,4 @@ +- aggiungi un'opzione per contrassegnare tutte le chat selezionate come "Lette" (tocca a lungo una chat per avviare la modalità di selezione) + - i nuovi profili chatmail per dispositivo singolo hanno come impostazione predefinita "Elimina Messaggi Dopo il Download" + - quando si utilizza un profilo chatmail su più dispositivi, la cancellazione viene modificata in "Automatica" (la strategia di cancellazione dipende quindi dal server) + - Risolti bug e altro ancora From 3e3a01dd62605440e4d636fa57a149c5e32710e2 Mon Sep 17 00:00:00 2001 From: Hocuri Date: Thu, 12 Sep 2024 17:09:21 +0200 Subject: [PATCH 22/37] Remove changelogs --- metadata/it/changelogs/6864.txt | 7 ------- metadata/it/changelogs/6904.txt | 4 ---- 2 files changed, 11 deletions(-) delete mode 100644 metadata/it/changelogs/6864.txt delete mode 100644 metadata/it/changelogs/6904.txt diff --git a/metadata/it/changelogs/6864.txt b/metadata/it/changelogs/6864.txt deleted file mode 100644 index ab3bcb224..000000000 --- a/metadata/it/changelogs/6864.txt +++ /dev/null @@ -1,7 +0,0 @@ -- nuovo inserimento: puoi creare un nuovo profilo con un tocco su "Crea Nuovo Profilo" - oppure utilizzare un accesso esistente o la configurazione del secondo dispositivo come al solito -i contatti possono essere allegati come "Schede" in "Allega/Contatto"; quando il destinatario tocca le carte, è possibile stabilire la crittografia end-to-end garantita -- aggiungi contatti manualmente in "Nuova Chat / Nuovo Contatto / Aggiungi Contatto Manualmente" - - invia qualsiasi emoji come reazione - - mostrare le reazioni nei riepiloghi - - blocca/archivia/ecc. le chat direttamente dai risultati di ricerca - - Risolti bug e altro ancora diff --git a/metadata/it/changelogs/6904.txt b/metadata/it/changelogs/6904.txt deleted file mode 100644 index a6cffadc4..000000000 --- a/metadata/it/changelogs/6904.txt +++ /dev/null @@ -1,4 +0,0 @@ -- aggiungi un'opzione per contrassegnare tutte le chat selezionate come "Lette" (tocca a lungo una chat per avviare la modalità di selezione) - - i nuovi profili chatmail per dispositivo singolo hanno come impostazione predefinita "Elimina Messaggi Dopo il Download" - - quando si utilizza un profilo chatmail su più dispositivi, la cancellazione viene modificata in "Automatica" (la strategia di cancellazione dipende quindi dal server) - - Risolti bug e altro ancora From fc6bdc2fead38344d1513e74add6b6c6b8e67d52 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Mon, 16 Sep 2024 20:44:55 +0200 Subject: [PATCH 23/37] avoid NullPointerException in ConversationListActivity.refreshAvatar --- .../org/thoughtcrime/securesms/ConversationListActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java index dcd06d427..10844d728 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java @@ -303,6 +303,8 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit } public void refreshAvatar() { + if (selfAvatarContainer == null) return; + if (isRelayingMessageContent(this)) { selfAvatarContainer.setVisibility(View.GONE); } else { From 884cce3e1a9123ea7edbdfe9d7c9a3aa07f56811 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Mon, 16 Sep 2024 21:09:52 +0200 Subject: [PATCH 24/37] check that getSlideUri() is not null before passing it to ScribbleActivity --- .../org/thoughtcrime/securesms/mms/AttachmentManager.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java b/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java index 8d91fa34b..cfc4b8e0d 100644 --- a/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java +++ b/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java @@ -639,14 +639,12 @@ public class AttachmentManager { private class EditButtonListener implements View.OnClickListener { @Override public void onClick(View v) { - if (Build.VERSION.SDK_INT >= 19) { + Uri imgUri = getSlideUri(); + if (imgUri != null) { Intent intent = new Intent(context, ScribbleActivity.class); - intent.setData(getSlideUri()); + intent.setData(imgUri); ((Activity) context).startActivityForResult(intent, ScribbleActivity.SCRIBBLE_REQUEST_CODE); } - else { - Toast.makeText(context, "Image editing requires Android 4.4 KitKat or newer.", Toast.LENGTH_LONG).show(); - } } } From 78bd221fdff4b88698704bf7928a3eb6df19d82d Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 17 Sep 2024 15:33:21 +0200 Subject: [PATCH 25/37] update translations --- src/main/res/values-es/strings.xml | 8 +- src/main/res/values-hu/strings.xml | 117 +++++++++++++++-------------- src/main/res/values-pl/strings.xml | 4 + src/main/res/values-tr/strings.xml | 16 ++-- src/main/res/values-uk/strings.xml | 15 +++- 5 files changed, 94 insertions(+), 66 deletions(-) diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index 6c3a97f45..f9ce3afb5 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -168,6 +168,7 @@ Video Documentos Contacto + Bot Cámara Capturar @@ -274,6 +275,10 @@ Seleccionar chat Seleccionar más Editar nombre + + Establece un apodo que se te mostrará en lugar de \"%1$s\". Déjalo en blanco para utilizar el nombre elegido por el contacto. + + Apodo para \"%1$s\" Ajustes Avanzado Ver perfil @@ -1159,4 +1164,5 @@ Nueva pantalla de bienvenida 🐣 y más:\n\n⚡️ Regístrese en servidores de chatmail rápidos y seguros (https://delta.chat/chatmail) o use servidores de correo electrónico clásicos\n\n👉 Notificaciones PUSH para cualquier servidor de chatmail\n\n👤 Presenta un amigo a otro de forma segura usando \"Adjuntar Contacto\"\n\n🥰 Reacciona con cualquier emoji\n\n📌 Ancla chats directamente desde los resultados de la búsqueda... y MUCHO más en %1$s Nueva pantalla inicial 🐣 y más:\n\n⚡️ Regístrese en servidores de chatmail rápidos y seguros (https://delta.chat/chatmail) o use servidores de correo electrónico clásicos\n\n👉 Notificaciones PUSH para cualquier servidor de chatmail\n\n👤 Reciba \"Contactos adjuntos\" y conéctese con sus amigos\n\n🥰 Selección de reacción más rápida... y MÁS en %1$s - + ℹ️ Se movió la opción \"Cambiar perfil\": toca tu imagen de perfil en la esquina superior de la pantalla principal para agregar o cambiar perfiles 💡 + diff --git a/src/main/res/values-hu/strings.xml b/src/main/res/values-hu/strings.xml index d9a70a197..1649df2ba 100644 --- a/src/main/res/values-hu/strings.xml +++ b/src/main/res/values-hu/strings.xml @@ -44,7 +44,7 @@ Archiválás visszavonása Némítás Eltűnő üzenetek - A csevegés minden tagjára vonatkozik, ha a Delta Chat-et használják; az üzeneteket továbbra is másolhatják, menthetik és továbbíthatják, vagy más e-mail klienseket használhatnak. + A csevegés minden tagjára vonatkozik, ha a Delta Chatet használják; az üzeneteket továbbra is másolhatják, menthetik és továbbíthatják, vagy más e-mail klienseket használhatnak. Mentés Csevegés Média @@ -85,8 +85,8 @@ %1$s nem található. Vágólapra másolva. Névjegyek - E-mail cím - Rossz e-mail cím. + E-mail-cím + Hibás E-mail-cím. Jelszó Jelenlegi jelszó Most @@ -160,6 +160,7 @@ Videó Dokumentumok Névjegy + Bot Kamera Rögzítés @@ -180,7 +181,7 @@ Zöld Piros Kék - Narancs + Narancssárga Cián Lila Magenta @@ -231,8 +232,8 @@ Meghívó hivatkozás megosztása Ismerősök meghívása - Lépjen kapcsolatba velem a Delta Chat-en:\n%1$s - Kiválasztás másolása + Lépjen kapcsolatba velem a Delta Chaten:\n%1$s + Kiválasztott(ak) másolása Hívatkozás másolása Szöveg másolása Kép másolása @@ -251,7 +252,7 @@ Alkalmazás megjelenítése a csevegésben Megosztás - Blokkolás + Letiltás Névjegy letiltása Tiltás visszavonása Elfogadás @@ -266,6 +267,10 @@ Csevegés kiválasztása Több kiválasztása Név szerkesztése + + Állítson be egy becenevet a(z) „%1$s” nevű ismerősének. Ha üresen hagyja, akkor az ismerőse által választott név jelenik meg. + + Becenév megadása „%1$s“ számára Beállítások Haladó Profil megtekintése @@ -274,7 +279,7 @@ Naplófájl mentése További beállítások Helyesírás tanulása - Csevegés ellenőrzési naplófájl + Csevegésellenőrzési-naplófájl Ugrás az üzenetre JSON másolása Piszkozat cseréje @@ -291,13 +296,13 @@ Kitűzés - Kitűzés visszavonása + Kitűzés megszüntetése Nem található az eredeti üzenet Válasz privátban Forráskód Hozzáadás a kezdőképernyőhöz - Támogatás + Adományozás Némítás 1 órára Némítás 2 órára @@ -321,15 +326,15 @@ Meghívja videócsevegésbe őt: %1$s? Ehhez mindkét oldalon kompatibilis alkalmazás vagy böngésző szükséges. %1$s meg lett híva egy videócsevegésbe. - Ön elküdött egy videócsevegés meghívót. + Ön elküdött egy videócsevegés-meghívót. Koppintson ide a csatlakozáshoz. Koppintson ide a megnyitáshoz. - Videócsevegés példány - Az ön videócsevegés példánya + Videócsevegés-példány + Az ön videócsevegés-példánya Például: https://your-server.org/$ROOM Ha engedélyezve van, akkor minden csevegésből indíthat videócsevegést. Kompatibilis alkalmazást vagy böngészőt igényel mindkét oldalon. „%1$s” használata mások meghívásához a videócsevegésekbe?\n\nAmint beállította, minden egyes csevegésből indíthat videócsevegést. Ez minden korábbi beállítás helyébe lép a videócsevegéseknél. - Videócsevegés meghívó + Videócsevegés-meghívó Ön meg lett híva egy videócsevegésbe, kattintson ide: %1$s a csatlakozáshoz. @@ -351,8 +356,8 @@ Továbbítja az üzenetet a számára: %1$s? Továbbítja az üzenetet a következő csevegésbe: %1$d? A mellékletek exportálása lehetővé teszi, hogy más alkalmazások is hozzáférjenek azokhoz az eszközön.\n\nFolytatja? - Blokkolja ezt az ismerősét? Többé nem fog üzeneteket kapni tőle. - Feloldja ennek az ismerősének a blokkolását? Ezután képes lesz üzeneteket fogadni tőle. + Letiltja ezt az ismerősét? Többé nem fog üzeneteket kapni tőle. + Feloldja ennek az ismerősének a letiltását? Ezután képes lesz üzeneteket fogadni tőle. Ismerős törlése?\n\nA folyamatban lévő csevegésekkel rendelkező vagy a rendszer névjegyzékéből származó ismerősök nem törölhetőek véglegesen. %1$s nevű ismerősének tölése?\n\nA folyamatban lévő csevegésekkel rendelkező vagy a rendszer névjegyzékéből származó ismerősök nem törölhetőek véglegesen. A folyamatban lévő csevegésekkel rendelkező ismerősök nem törölhetőek. @@ -367,8 +372,8 @@ Névjegyek - Adjon meg egy nevet vagy egy e-mail címet - Írja be a fenti e-mail címet + Adjon meg egy nevet vagy egy E-mail-címet + Írja be a fenti E-mail-címet Még nincsenek névjegyek. @@ -397,10 +402,10 @@ Hangüzenet rögzítéséhez koppintson és tartsa lenyomva; Az elküldéshez engedje el. Nincsenek csevegések.\nÉrintse meg a „+” gombot egy új csevegés indításához. Minden csevegés archiválva van.\nÉrintse meg a „+” gombot egy új csevegés indításához. - Megosztás ezzel + Megosztás vele: Üzenet Archivált - Kérelem + Kérés Nincsenek üzenetek. Magamnak küldött üzenetek Az archivált csevegések itt fognak megjelenni. @@ -426,7 +431,7 @@ Indítás... - Először fogadja el a csevegési kérelmet. + Először fogadja el a csevegéskérést. „%1$s” küldése neki... @@ -496,7 +501,7 @@ %1$s megváltoztatta a címét erről: %2$s, erre: %3$s - Ön megváltoztatta a saját e-mail címét erről: %1$s erre: %2$s.\n\nHa most üzenetet küld egy ellenőrzött csoportba, az ottani ismerősei automatikusan lecserélik a z ön régi címét az új címére.\n\nEzért nagyon ajánlott beállítani, hogy a régi e-mail szolgáltatója minden e-mailt továbbítson-e az új e-mail címére. Ellenkező esetben lemaradhat azoknak az ismerőseinek az üzeneteiről, akik még nem kapták meg az új címét. + Ön megváltoztatta a saját E-mail-címét erről: %1$s erre: %2$s.\n\nHa most üzenetet küld egy ellenőrzött csoportba, az ottani ismerősei automatikusan lecserélik az ön régi címét az új címére.\n\nEzért nagyon ajánlott beállítani, hogy a régi E-mail szolgáltatója minden E-mailt továbbítson-e az új E-mail-címére. Ellenkező esetben lemaradhat azoknak az ismerőseinek az üzeneteiről, akik még nem kapták meg az új címét. @@ -504,9 +509,9 @@ Második eszköz hozzáadása Győződjön meg róla, hogy mindkét eszköz ugyanazon a Wi-Fi-n vagy hálózaton van-e Ez egy QR-kódot hoz létre, amelyet a második eszközön beolvashat a profil másolásához. - Telepítse a Delta Chat-et a másik eszközére (https://get.delta.chat) + Telepítse a Delta Chatet a másik eszközére (https://get.delta.chat) - Indítsa el a Delta Chat-et, koppintson a „Már van bejelentkezésem / Hozzáadás második eszközként” lehetőségre, és olvassa be az itt látható kódot. + Indítsa el a Delta Chatet, koppintson a „Már van profilom / Hozzáadás második eszközként” lehetőségre, és olvassa be az itt megjelenő kódot. Második eszköz beállításának beolvasása a(z) %1$s számára Hozzáadás második eszközként @@ -607,17 +612,17 @@ SOCKS5 felhasználó SOCKS5 jelszó Folytatja az egyszerűsített beállítást? - A megadott e-mail cím támogatja az egyszerűsített beállítást (OAuth 2.0).\n\nA következő lépésben engedélyezze a Delta Chat számára, hogy az e-mailen keresztüli csevegés alkalmazásaként működjön.\n\nA Delta Chat nem gyűjt felhasználói adatokat, minden adat az eszközön marad. + A megadott E-mail-cím támogatja az egyszerűsített beállítást (OAuth 2.0).\n\nA következő lépésben engedélyezze a Delta Chat számára, hogy az E-mailen keresztüli csevegés alkalmazásaként működjön.\n\nA Delta Chat nem gyűjt felhasználói adatokat, minden adat az eszközön marad. Tanúsítvány ellenőrzése - Adjon meg egy érvényes e-mail címet - Adjon meg egy érvényes kiszolgáló / IP-címet + Adjon meg egy érvényes E-mail-címet + Adjon meg egy érvényes kiszolgáló- / IP-címet Adjon meg egy érvényes portot (1-65535) - Adjon meg egy érvényes e-mail címet és egy jelszót + Adjon meg egy érvényes E-mail-címet és egy jelszót Biztonsági mentés visszaállítása A biztonsági mentés itt található: „%1$s”.\n\nAz összes adatot és beállítást szeretné importálni és használni belőle? A biztonsági mentés nem található.\n\nMásolja a biztonsági mentést ide: „%1$s” és próbálja újra. Másik lehetőségként nyomja meg az „Üzenetküldés indítása” gombot a normál beállítási folyamat folytatásához. - Nem lehetett bejelentkezni ide: „%1$s”. Ellenőrizze, hogy a megadott e-mail cím és a jelszó helyes-e. + Nem lehetett bejelentkezni ide: „%1$s”. Ellenőrizze, hogy a megadott E-mail-cím és a jelszó helyes-e. Érvénytelen tanúsítványok elfogadása Profilváltás @@ -667,7 +672,7 @@ Értesítések Megjelenítés Prioritás - Rendszer értesítések engedélyezése az új üzenetekről + Rendszerértesítések engedélyezése az új üzenetekről Üzenet tartalmának megjelenítése az értesítésben Az értesítésekben megjelenik az üzenet feladója és első szavai LED színe @@ -675,7 +680,7 @@ Csendes Adatvédelem Csevegések és média - Alapbeállítás + Rendszer alapértelmezett Világos Sötét @@ -712,7 +717,7 @@ %1$s exportálása Mind a(z) %1$d profil exportálása - Biztonsági mentés indítása + Biztonsági mentés készítése A biztonsági mentés sikeresen létrehozva itt: „%1$s”. Privát kulcsok kezelése Privát kulcsok exportálása @@ -804,7 +809,7 @@ Ha az egyszeri törlés engedélyezve van, akkor nem használhatja ezt a profilt több eszközről. Értem, törölje ezeket az üzeneteket - Egyszer + Egyszer a letöltés után 30 másodperc elteltével 1 perc elteltével 5 perc elteltével @@ -816,19 +821,19 @@ 1 év elteltével - Autocrypt beállító üzenet küldése - Egy autocrypt beállító üzenet biztonságosan megosztja az ön végpontok közötti beállításait más autocrypt-kompatibilis alkalmazásokkal.\n\nA beállítás titkosítása egy, itt megjelenő beállítási kóddal történik, amelyet a másik eszközön kell begépelni. - Autocrypt beállító üzenet küldése + Autocryptbeállító-üzenet küldése + Egy autocryptbeállító-üzenet biztonságosan megosztja az ön végpontok közötti beállításait más autocrypt-kompatibilis alkalmazásokkal.\n\nA beállítás titkosítása egy, itt megjelenő beállítási kóddal történik, amelyet a másik eszközön kell begépelni. + Autocryptbeállító-üzenet küldése A beállításokat elküldtük önnek. Váltson a másik eszközre, és nyissa meg a beállítási üzenetet. Meg kell adnia a beállítási kódot. Írja be a következő számjegyeket: Végpontok közötti titkosítás előnyben részesítése - Autocrypt beállító üzenet - Ez az autocrypt beállító üzenet a végpontok közötti beállítások kliensek közötti átvitelére szolgál.\n\nA beállítások visszafejtéséhez és használatához nyissa meg az üzenetet egy autocrypt-kompatibilis kliensben, és írja be a generáló eszközön megjelenő beállítási kódot. - Ez az Autocrypt beállító üzenet, amelyet a végpontok közötti titkosítási beállítások átvitelére használnak a kliensek között.\n\n\nA beállítások visszafejtéséhez és használatához koppintson vagy kattintson erre az üzenetre. - Autocrypt beállító üzenet + Autocryptbeállító-üzenet + Ez az autocryptbeállító-üzenet a végpontok közötti beállítások kliensek közötti átvitelére szolgál.\n\nA beállítások visszafejtéséhez és használatához nyissa meg az üzenetet egy autocrypt-kompatibilis kliensben, és írja be a generáló eszközön megjelenő beállítási kódot. + Ez az Autocryptbeállító-üzenet, amelyet a végpontok közötti titkosítási beállítások átvitelére használnak a kliensek között.\n\n\nA beállítások visszafejtéséhez és használatához koppintson vagy kattintson erre az üzenetre. + Autocryptbeállító-üzenet Adja meg a másik eszközön megjelenő beállítási kódot. A végpontok közötti beállítások átvitele megtörtént. Ez az eszköz most már készen áll az autocrypt használatára a másik eszközzel megegyező beállításokkal. Újra - Rossz beállítási kód. Próbálja újra.\n\nHa nem emlékszik a beállítási kódra, küldjön új Autocrypt Beállítás üzenetet a másik eszközről. + Rossz beállítási kód. Próbálja újra.\n\nHa nem emlékszik a beállítási kódra, küldjön új Autocryptbeállító-üzenetet a másik eszközről. @@ -836,7 +841,7 @@ Üzenet megnyitva Az Ön által küldött „%1$s” tartalmú üzenet megjelent a címzett képernyőjén.\n\nEz nem garancia arra, hogy a tartalmat elolvasták. - Ez az üzenet nem dekódolható.\n\n• Már az is segíthet, ha egyszerűen válaszol erre az üzenetre, és megkéri a feladóját, hogy küldje el újra az üzenetet.\n\n• Ha most telepítette újra a Delta Chat-et, akkor a legjobb, ha most újraindítja a Delta Chat-et, és kiválasztja a „Második eszközként való hozzáadás” lehetőséget, vagy importál egy biztonsági mentést. + Ez az üzenet nem dekódolható.\n\n• Már az is segíthet, ha egyszerűen válaszol erre az üzenetre, és megkéri a feladóját, hogy küldje el újra az üzenetet.\n\n• Ha most telepítette újra a Delta Chatet, akkor a legjobb, ha most újraindítja a Delta Chatet, és kiválasztja a „Második eszközként való hozzáadás” lehetőséget, vagy importál egy biztonsági mentést. Az üzenet küldője ismeretlen ebben a csevegésben. További részletekért nézze meg az \'Infót\'. Üzenet tőle: %1$s Nem sikerült elküldeni az üzenetet neki: %1$s. @@ -907,7 +912,7 @@ Az üzenetek mostantól garantáltan titkosítva lesznek a végpontok között. Koppintson, ha többet szeretne tudni. Mostantól garantált, hogy ebben a csevegésben minden üzenet végpontok közötti titkosítással rendelkezik.\n\nA végpontok közötti titkosítással az üzenetek bizalmasak maradnak ön és az ismerősei között. Még az e-mail szolgáltatója sem tudja elolvasni őket. %1$s egy másik eszközről küldött üzenetet. Koppintson, ha többet szeretne tudni. - A végpontok közötti titkosítás már nem garantálható, valószínűleg azért, mert %1$s újratelepítette a Delta Chat-et, vagy egy másik eszközről küldött üzenetet.\n\n Személyesen találkozhat vele, és újra beolvashatja a QR-kódját a garantált végpontok közötti titkosítás visszaállításához. + A végpontok közötti titkosítás már nem garantálható, valószínűleg azért, mert %1$s újratelepítette a Delta Chatet, vagy egy másik eszközről küldött üzenetet.\n\n Személyesen találkozhat vele, és újra beolvashatja a QR-kódját a garantált végpontok közötti titkosítás visszaállításához. ⚠️ A(z) %1$s végpontok közötti titkosítást igényel, ami még nincs beállítva erre a csevegésre. Koppintson, ha többet szeretne megtudni. A végpontok közötti titkosítás létrehozásához személyesen is találkozhat az ismerőseivel, és a QR-kódjukat beolvasva bemutathatja őket. A végpontok közötti titkosítás beállítása szükséges, de a(z) %1$s nevű ismerőse esetében az még nincs beállítva.\n\nMegoszthatja a meghívó hivatkozását, vagy személyesen is találkozhat vele, és beolvashatja a QR-kódját. @@ -932,7 +937,7 @@ A QR-kódot nem sikerült értelmezni Biztosan csatlakozik a(z) „%1$s” nevű szobához? A beolvasott ujjlenyomat nem egyezik a(z) %1$s utoljára látott ujjlenyomatával. - Ez a QR-kód tartalmaz egy ujjlenyomatot, de nem tartalmaz e-mail címet.\n\nA sávon kívüli ellenőrzéshez először hozzon létre titkosított kapcsolatot a címzetthez. + Ez a QR-kód tartalmaz egy ujjlenyomatot, de nem tartalmaz E-mail-címet.\n\nA sávon kívüli ellenőrzéshez először hozzon létre titkosított kapcsolatot a címzetthez. A beolvasott QR-kód szövege:\n\n%1$s A beolvasott QR-kód hivatkozás:\n\n%1$s Ujjlenyomat @@ -1026,7 +1031,7 @@ Ez a hivatalos Delta Chat Desktop alkalmazás. Ez a szoftver a GNU GPLv3 licenc alatt áll és a forráskód elérhető a GitHubon. - Üdvözöljük a Delta Chat-ben! + Üdvözöljük a Delta Chatben! Válasszon nyelvet... Fájl Kilépés @@ -1041,10 +1046,10 @@ Fejlesztő Fejlesztői eszközök Súgó - Tudjon meg többet a Delta Chat-ről + Tudjon meg többet a Delta Chatről Hozzájárulás a GitHub-on Jelentsen egy problémát - A Delta Chat-ről + A Delta Chatről Delta Chat megnyitása Kicsinyítés Válasszon ki egy csevegést vagy indítson egy újat @@ -1059,7 +1064,7 @@ Csoport képének kiválasztása Biztonsági mentés exportálása Autocrypt beállítások átvitele. - Törli ezt a bejelentkezést? Minden törlődik, beleértve a végpontok közötti titkosítási beállításokat, névjegyeket, csevegéseket, üzeneteket és médiát. Ez a művelet nem vonható vissza. + Törli ezt a profilt? Minden törlődik, beleértve a végpontok közötti titkosítási beállításokat, névjegyeket, csevegéseket, üzeneteket és médiát. Ez a művelet nem vonható vissza. elküldött érkezett Naplófájlok könyvtárának megnyitása @@ -1067,7 +1072,7 @@ A tálca ikonja nem kapcsolható ki, mivel a Delta Chat a --minimized opcióval indult. Nem találhatóak helyesírási javaslatok. Ablak megjelenítése - A SOCKS5 támogatás jelenleg kísérleti jellegű. Használja saját felelősségére. Ha beír egy címet az e-mail mezőbe, akkor lesz olyan DNS lekérés, ami nem fog átjutni a SOCKS5 csatornán. + A SOCKS5 támogatás jelenleg kísérleti jellegű. Használja saját felelősségére. Ha beír egy címet az E-mail-mezőbe, akkor lesz olyan DNS lekérés, ami nem fog átjutni a SOCKS5 csatornán. Billentyűkötések @@ -1106,7 +1111,7 @@ Eszköz névjegyeinek importálása Az eszközén lévő névjegyekkel való csevegéshez nyissa meg a Beállításokat, és engedélyezze a „Névjegyek” opciót. - Letiltva a Delta Chat-ben + Letiltva a Delta Chatben Letilva a rendszer beállításaiban „Háttérfrissítések” letiltva a rendszerbeállításokban @@ -1121,9 +1126,9 @@ Válassza a „Hozzáadás a kezdőképernyőhöz” lehetőséget, hogy az alkalmazást hozzáadja a kezdőképernyőhöz. A Delta Chat az eszköze kameráját használja fényképek és videók készítésére és küldésére, valamint QR-kódok beolvasására. - A Delta Chat a névjegyek segítségével megjeleníti azon e-mail címek listáját, amelyekkel cseveghet. A Delta Chat-nek nincs központi kiszolgálója, a névjegyeit nem küldjük el sehova. - A Delta Chat-nek engedélyre van szüksége ahhoz, hogy megoszthassa az ön tartózkodási helyszínét arra az időtartamra, ameddig engedélyezte a helyszínmegosztást. - A Delta Chat-nek engedélyre van szüksége ahhoz, hogy megoszthassa az ön tartózkodási helyszínét arra az időtartamra, ameddig engedélyezte a helyszínmegosztást. + A Delta Chat a névjegyek segítségével megjeleníti azon E-mail-címek listáját, amelyekkel cseveghet. A Delta Chatnek nincs központi kiszolgálója, a névjegyeit nem küldjük el sehova. + A Delta Chatnek engedélyre van szüksége ahhoz, hogy megoszthassa az ön tartózkodási helyszínét arra az időtartamra, ameddig engedélyezte a helyszínmegosztást. + A Delta Chatnek engedélyre van szüksége ahhoz, hogy megoszthassa az ön tartózkodási helyszínét arra az időtartamra, ameddig engedélyezte a helyszínmegosztást. A Delta Chat az eszköze mikrofonját használja a hangüzenetek és a hangos videók rögzítésére, valamint küldésére. A Delta Chat segítségével kiválaszthatja, hogy mely fényképeket szeretné elküldeni a könyvtárából. A Delta Chat el akarja menteni a képeket az eszköze fotótárába. @@ -1134,7 +1139,7 @@ Háttérkapcsolat használata Figyelmen kívül hagyott akkumulátor-optimalizációt igényel, akkor használja, ha a Push szolgáltatás nem érhető el Kényszerített háttérkapcsolat - Állandó értesítést jelenít meg + Egy állandó értesítést jelenít meg Az e-mail kiszolgálóval való kapcsolat fenntartásához és az üzenetek háttérben történő fogadásához hagyja figyelmen kívül az akkumulátor optimalizálását a következő lépésben.\n\nA Delta Chat kevés erőforrást használ, és ügyel arra, hogy ne merítse az akkumulátort. @@ -1144,4 +1149,6 @@ Új szolgáltatások 🐣 és további tudnivalók:\n\n⚡️ Regisztráljon biztonságos, gyors chatmail kiszolgálókra (https://delta.chat/chatmail) vagy használja a klasszikus e-mail kiszolgálókat\n\n👉 PUSH értesítések bármely chatmail kiszolgálóra\n\n👤 Kapcsolja össze ismerőseit biztonságosan a „Névjegyek csatolásával”\n\n🥰 Reagáljon bármilyen hangulatjellel\n\n📌 Tűzze ki a csevegéseket közvetlenül a keresésből ... tudjon meg többet itt: %1$s Új szolgáltatások 🐣 és további tudnivalók:\n\n⚡️ Regisztráljon biztonságos, gyors chatmail kiszolgálókra (https://delta.chat/chatmail) vagy használja a klasszikus e-mail kiszolgálókat\n\n👉 PUSH értesítések bármely chatmail kiszolgálóra\n\n👤 Fogadjon „Csatolt névjegyeket\" és csatlakozzon az ismerőseihez”\n\n🥰 Gyorsabb üzenetreakció kiválasztás ... tudjon meg többet itt: %1$s - + ℹ️ A „Profilváltás” opció át lett helyezve: +Érintse meg a főképernyő felső sarkában lévő profilképet a profilok hozzáadásához vagy váltásához 💡 + diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index 792630bcf..ec8286707 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -283,6 +283,10 @@ Zaznacz czat Zaznacz więcej Edytuj nazwę + + Ustaw nazwę, która będzie wyświetlana zamiast „%1$s”. Pozostaw puste pole, aby użyć wybranej nazwy kontaktu. + + Nazwa dla „%1$s” Ustawienia Zaawansowane Pokaż profil diff --git a/src/main/res/values-tr/strings.xml b/src/main/res/values-tr/strings.xml index c3401ef6e..d3dde1c67 100644 --- a/src/main/res/values-tr/strings.xml +++ b/src/main/res/values-tr/strings.xml @@ -400,7 +400,7 @@ Diğerleri, yalnızca siz bir ilk ileti gönderdikten sonra bu öbeği görecek. İptal etmek için kaydırın Bir sesli ileti kaydetmek için dokunun ve basılı tutun, göndermek için bırakın - Sohbet yok.\nYeni bir sohbet başlatmak için \"+\" tuşuna basın. + Sohbet yok.\nYeni bir sohbet başlatmak için \"+\" simgesine basın. Tüm sohbetler arşivlendi.\nYeni bir sohbet başlatmak için \"+\" simgesine basın. Paylaş İleti @@ -579,7 +579,7 @@ %1$s ile sohbet etmek için bir profil oluşturun. - Yeni bir profil oluşturmak ve %1$s ile sohbet etmeye başlamak istiyor musunuz? + Yeni bir profil oluşturmak ve %1$s ile sohbet başlatmak istiyor musunuz? Yeni bir profil oluşturmak ve \"%1$s\" sohbet öbeğine katılmak istiyor musunuz? @@ -620,7 +620,7 @@ Lütfen geçerli bir e-posta adresi ve bir parola girin Yedekten Geri Yükle \"%1$s\" üzerinde yedek bulundu.\n\nİçe aktarmak ve ondan gelen tüm verileri ve ayarları kullanmak istiyor musunuz? - Yedek bulunamadı.\n\nYedeği \"%1$s\" üzerine kopyalayın ve yeniden deneyin. Ek olarak, normal ayarlama işlemiyle sürdürmek için \"İletileşmeyi başlat\"a basın. + Yedek bulunamadı.\n\nYedeği \"%1$s\" üzerine kopyalayın ve yeniden deneyin. Ek olarak, normal ayarlama işlemiyle sürdürmek için \"İletileşmeye başla\"ya basın. \"%1$s\" olarak giriş yapılamıyor. Lütfen e-posta adresinin ve parolanın doğru olup olmadığını denetleyin. @@ -667,7 +667,7 @@ Titret Ekran Güvenliği - En yeniler listesinde ve uygulamanın içinde ekran görüntülerinin engellenmesini iste + Son listesinde ve uygulamanın içinde ekran görüntülerinin engellenmesini iste Ekran güvenliği ayarını uygulamak için lütfen uygulamayı yeniden başlatın. Bildirimler Göster @@ -739,7 +739,7 @@ DeltaChat Klasörüne Otomatik Olarak Taşı Sohbet görüşmeleri, Gelen Kutusu\'ndaki dağınıklığı önlemek için taşınır Yalnızca DeltaChat Klasöründen Getir - Diğer klasörleri yoksayar. Sunucunuzun sohbet iletilerini DeltaChat klasörüne taşımasını gerektirir. + Diğer klasörleri yok sayar. Sunucunuzun sohbet iletilerini DeltaChat klasörüne taşımasını gerektirir. Klasik E-Postaları Göster Hayır, yalnızca sohbetler Kabul edilen kişiler için @@ -809,7 +809,7 @@ Bir kerede silmeyi etkinleştirirseniz, bu profilde çoklu aygıtları kullanamazsınız. Anladım, tüm bu iletileri sil - İndirdikten Sonra Bir Kerede + İndirdikten sonra bir kerede 30 saniye sonra 1 dakika sonra 5 dakika sonra @@ -1137,11 +1137,11 @@ Anında Teslimat Arka Plan Bağlantısı Kullan - Pil iyileştirmelerinin yoksayılmasını gerektirir, bildirimler zamanında gelmezse kullanın + Pil iyileştirmelerinin yok sayılmasını gerektirir, bildirimler zamanında gelmezse kullanın Arka Plan Bağlantısını Zorla Kalıcı bir bildirime neden olur - E-posta sunucunuza bağlantıyı sürdürmek ve arka planda iletileri almak için sonraki adımda pil iyileştirmelerini yoksayın.\n\nDelta Chat, az kaynak kullanır ve pilinizi boşaltmamaya özen gösterir. + E-posta sunucunuza bağlantıyı sürdürmek ve arka planda iletileri almak için sonraki adımda pil iyileştirmelerini yok sayın.\n\nDelta Chat, az kaynak kullanır ve pilinizi boşaltmamaya özen gösterir. Delta Chat arka plandayken iletileri almak için buraya dokunun. Delta Chat\'in arka planda iletileri almasına zaten izin verdiniz.\n\nİletiler arka planda hâlâ gelmiyorsa, lütfen sistem ayarlarınızı da denetleyin. diff --git a/src/main/res/values-uk/strings.xml b/src/main/res/values-uk/strings.xml index 200f7901a..701b7bcc9 100644 --- a/src/main/res/values-uk/strings.xml +++ b/src/main/res/values-uk/strings.xml @@ -176,6 +176,7 @@ Відео Документи Контакт + Бот Камера Захопити @@ -244,6 +245,10 @@ Видалити це місце? Інформація про повідомлення Копіювати в буфер обміну + Поділитися посиланням на запрошення + Запросити друзів + + Зв\'яжіться зі мною в Delta Chat:\n%1$s Скопіювати позначене Скопіювати посилання Копіювати текст @@ -278,6 +283,10 @@ Оберіть чат Вибрати ще Редагувати ім\'я + + Задайте нікнейм, який буде відображатись для вас замість \"%1$s\". Залиште порожнім, щоб використовувати вибране ім\'я контакту. + + Нік для \"%1$s\" Налаштування Додатково Переглянути профіль @@ -354,7 +363,7 @@ Видалити %d чатів? Вони більше не будуть відображатися у списку чатів, їх повідомлення залишаться на сервері. Видалити %d чатів? Вони більше не будуть відображатися у списку чатів, їх повідомлення залишаться на сервері. - Ви впевнені, що хочете видалити \"%1$s\"? + Видалити чат \"%1$s\"? Він більше не буде відображатися у списку чату, але його повідомлення залишаться на сервері. Ви впевнені, що хочете видалити це повідомлення? Видалити %d повідомлення тут і на сервері? @@ -936,6 +945,7 @@ Наскрізне шифрування більше не гарантується, імовірно, через те, що %1$s перевстановив (-ла) Delta Chat або надіслав (-ла) повідомлення з іншого пристрою.\n\nВи можете зустрітися з ним (нею) особисто та знову відсканувати його (її) QR-код, щоб відновити гарантоване наскрізне шифрування. ⚠️ %1$s вимагає наскрізного шифрування, яке ще не налаштоване для цього чату. Натисніть, щоб дізнатися більше. Щоб установити наскрізне шифрування, Ви можете зустрітися з контактами особисто та відсканувати їхній QR-код, щоб додати їх. + Потрібне наскрізне шифрування, але воно ще не налаштоване на %1$s.\n\nВи можете поділитися з ними посиланням на запрошення або зустрітися особисто і відсканувати їхній QR-код. Дізнатися більше Ви видалили чат \"Збережені повідомлення\".\n\nℹ️ Аби використовувати функцію \"Збережені повідомлення\" знову, створіть новий чат самі із собою. @@ -1169,4 +1179,5 @@ Новий онбордінг 🐣 та багато іншого:\n\n⚡️ Підпишіться на безпечні сервери швидкої пошти (https://delta.chat/chatmail) або використовуйте класичні сервери електронної пошти\n\n👉 PUSH-сповіщення для будь-якого сервера чату\n\n👤 Безпечно підключайте друзів через \"Прикріпити контакти\"\n\n🥰 Реагуйте будь-якими емодзі\n\n📌 Прикріплюйте чати прямо з пошуку ... та багато іншого на %1$s Новий онбордінг 🐣 та багато іншого:\n\n⚡️ Підпишіться на безпечні швидкі chatmail-сервери (https://delta.chat/chatmail) або використовуйте класичні сервери електронної пошти\n\n👉 PUSH-повідомлення для будь-якого сервера чату\n\n👤 Отримуйте \"Прикріплені контакти\" та з\'єднуйтеся з друзями\n\n🥰 Швидший вибір реакції ... та багато іншого на %1$s - + ℹ️ Опцію \"Переключити профіль\" переміщено: Торкніться зображення свого профілю у верхньому кутку головного екрану, щоб додати або переключити профіль 💡. + From be4bc8259e2ff17572797f74665347eabd728f01 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 17 Sep 2024 17:54:38 +0200 Subject: [PATCH 26/37] avoid android.view.WindowManager$BadTokenException in maybeShowConfigurationError --- .../securesms/InstantOnboardingActivity.java | 18 +----------------- .../securesms/WelcomeActivity.java | 2 ++ 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java index 4918a57d8..7eee049ff 100644 --- a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java @@ -403,7 +403,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements private void progressError(String data2) { progressDialog.dismiss(); - maybeShowConfigurationError(this, data2); + WelcomeActivity.maybeShowConfigurationError(this, data2); } private void progressSuccess() { @@ -416,22 +416,6 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements finishAffinity(); } - public static void maybeShowConfigurationError(Activity activity, String data2) { - if (data2 != null && !data2.isEmpty()) { - AlertDialog d = new AlertDialog.Builder(activity) - .setMessage(data2) - .setPositiveButton(android.R.string.ok, null) - .create(); - d.show(); - try { - //noinspection ConstantConditions - Linkify.addLinks((TextView) d.findViewById(android.R.id.message), Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES); - } catch(NullPointerException e) { - Log.e(TAG, "Linkify failed", e); - } - } - } - @SuppressLint("StaticFieldLeak") private void createProfile() { if (TextUtils.isEmpty(this.name.getText())) { diff --git a/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java b/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java index b141216ea..54d45c075 100644 --- a/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java @@ -283,6 +283,8 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen } public static void maybeShowConfigurationError(Activity activity, String data2) { + if (activity.isFinishing()) return; // avoid android.view.WindowManager$BadTokenException + if (data2 != null && !data2.isEmpty()) { AlertDialog d = new AlertDialog.Builder(activity) .setMessage(data2) From 5f2b4590c007da2c7ecb08295b139b53d6eb421e Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 17 Sep 2024 16:14:23 +0200 Subject: [PATCH 27/37] marked chat replied to as being noticed when replying from within a notification, the corresponding chat should be marked as being noticed as well. otherwise, it looks wrong that one has replied to a chat, but still the chat is shown as being "unread". the 'reply' from a notification should leave the chat in the same state as 'dismiss' resp. 'mark read' - plus the added message. --- .../securesms/notifications/RemoteReplyReceiver.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java b/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java index 3233bd6d3..466ff1227 100644 --- a/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java +++ b/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java @@ -58,6 +58,7 @@ public class RemoteReplyReceiver extends BroadcastReceiver { if (responseText != null) { Util.runOnAnyBackgroundThread(() -> { DcContext dcContext = DcHelper.getAccounts(context).getAccount(accountId); + dcContext.marknoticedChat(chatId); if (dcContext.getChat(chatId).isContactRequest()) { dcContext.acceptChat(chatId); } From f3fa1d5e7c6404a004cbeff5fb40a98e48ea0120 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Tue, 17 Sep 2024 19:16:39 +0200 Subject: [PATCH 28/37] revert hack introduced in #2835 --- .../securesms/ConversationActivity.java | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java index 10acc7e6b..e4a150f2f 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java @@ -35,7 +35,6 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; -import android.os.PowerManager; import android.os.Vibrator; import android.provider.Browser; import android.text.Editable; @@ -301,12 +300,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity DcHelper.getNotificationCenter(this).updateVisibleChat(dcContext.getAccountId(), chatId); attachmentManager.onResume(); - - // action bar might be hidden by workaround in onStop() - ActionBar supportActionBar = getSupportActionBar(); - if (supportActionBar != null && !supportActionBar.isShowing()) { - supportActionBar.show(); - } } @Override @@ -322,23 +315,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity AudioSlidePlayer.stopAll(); } - @Override - public void onStop() { - super.onStop(); - - // hack/workaround to fix https://github.com/deltachat/deltachat-android/issues/2798 - // the real cause of the problem is still unknown but hiding the action bar here fixes it - if ( Build.VERSION.SDK_INT >= 34) { - ActionBar supportActionBar = getSupportActionBar(); - if (supportActionBar != null && container.isKeyboardOpen()) { - PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); - if (!pm.isInteractive()) { - supportActionBar.hide(); - } - } - } - } - @Override public void onConfigurationChanged(Configuration newConfig) { Log.i(TAG, "onConfigurationChanged(" + newConfig.orientation + ")"); From 0be6457cd158832e2bf595d3f8ea07324d75da58 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 17 Sep 2024 15:47:43 +0200 Subject: [PATCH 29/37] simplify 'Proxy Settings' to just 'Proxy' - shorter, less cluttering - we usually do not say 'Settings' inside 'Settings', also having several 'Settings' menu entries in the main menu us not so nice - same as telegram is doing --- src/main/res/values/strings.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 9ae997edb..e1f0c91fd 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -604,7 +604,8 @@ SMTP Port SMTP Security Authorization Method - Proxy Settings + + Proxy Use Proxy SOCKS5 From e41e3374e86660169328090dee65882a2118154d Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 17 Sep 2024 22:13:44 +0200 Subject: [PATCH 30/37] update translations --- src/main/res/values-de/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml index c8cdda359..9e1946760 100644 --- a/src/main/res/values-de/strings.xml +++ b/src/main/res/values-de/strings.xml @@ -604,6 +604,9 @@ SMTP-Port SMTP-Sicherheit Autorisierungsmethode + + Proxy + Proxy verwenden SOCKS5 SOCKS5 verwenden From e6f9eda78727a8f06af6df0994910cb6bca44179 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 17 Sep 2024 23:07:32 +0200 Subject: [PATCH 31/37] update translations --- src/main/res/values-bg/strings.xml | 1 + src/main/res/values-ca/strings.xml | 1 + src/main/res/values-de/strings.xml | 1 + src/main/res/values-el/strings.xml | 1 + src/main/res/values-es/strings.xml | 1 + src/main/res/values-fa/strings.xml | 1 + src/main/res/values-fi/strings.xml | 1 + src/main/res/values-fr/strings.xml | 1 + src/main/res/values-gl/strings.xml | 1 + src/main/res/values-hu/strings.xml | 1 + src/main/res/values-in/strings.xml | 1 + src/main/res/values-it/strings.xml | 1 + src/main/res/values-ko/strings.xml | 1 + src/main/res/values-lt/strings.xml | 1 + src/main/res/values-nl/strings.xml | 3 ++- src/main/res/values-pl/strings.xml | 1 + src/main/res/values-pt-rBR/strings.xml | 1 + src/main/res/values-ro/strings.xml | 1 + src/main/res/values-ru/strings.xml | 1 + src/main/res/values-sk/strings.xml | 3 ++- src/main/res/values-sq/strings.xml | 1 + src/main/res/values-sr/strings.xml | 1 + src/main/res/values-sv/strings.xml | 1 + src/main/res/values-tr/strings.xml | 1 + src/main/res/values-uk/strings.xml | 1 + src/main/res/values-vi/strings.xml | 1 + src/main/res/values-zh-rCN/strings.xml | 1 + src/main/res/values-zh-rTW/strings.xml | 1 + src/main/res/values/strings.xml | 2 +- 29 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/main/res/values-bg/strings.xml b/src/main/res/values-bg/strings.xml index 15cd950b5..27a496ee5 100644 --- a/src/main/res/values-bg/strings.xml +++ b/src/main/res/values-bg/strings.xml @@ -321,6 +321,7 @@ Докоснете, за да отворите Сървър за видеочат Вашият сървър за видеочат + Примери: https://meet.jit.si/$ROOM или basicwebrtc:https://вашият-сървър Ако настройката е разрешена, можете да започвате видеочат от всеки чат. Изисква съвместимо приложение или браузър и от двете страни. Да се използва ли \"%1$s\" за поканване на други към видеочатове?\n\nСлед като тази настройка бъде зададена, ще можете да започвате видеочат от всеки чат. Тя ще замени предишната настройка за видеочатове, ако има такава. diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml index 505889d72..697ff3f56 100644 --- a/src/main/res/values-ca/strings.xml +++ b/src/main/res/values-ca/strings.xml @@ -313,6 +313,7 @@ Toca per obrir-ho Instància de vídeo xat La vostra instància de vídeo xat + Exemples: https://meet.jit.si/$ROOM o basicwebrtc:https://your-server Invitació a un vídeo xat Heu sigut convidats a un vídeo xat, cliqueu %1$s per unir-vos-hi. diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml index 9e1946760..dbcc76b7f 100644 --- a/src/main/res/values-de/strings.xml +++ b/src/main/res/values-de/strings.xml @@ -331,6 +331,7 @@ Öffnen Videochat-Instanz Videochat-Instanz + Beispiele: https://meet.jit.si/$ROOM oder basicwebrtc:https://your-server Wenn aktiv, können Sie einen Videochat aus jedem Chat starten. Videochats erfordern beidseitig eine kompatible App oder einen kompatiblen Browser. \"%1$s\" verwenden, um andere zu Videochats einzuladen?\n\nWenn Sie diese Einstellung vornehmen, können Sie von jedem Chat aus einen Videochat starten. Dies überschreibt, falls vorhanden, die bisherige Einstellung zu Videochats. diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml index ff4d79200..7209daba5 100644 --- a/src/main/res/values-el/strings.xml +++ b/src/main/res/values-el/strings.xml @@ -289,6 +289,7 @@ Πατήστε για Άνοιγμα Παρουσία στη Βιντεοκλήση Η παρουσία σας στη βιντεοκλήση + Παράδειγμα: https://meet.jit.si/$ROOM ή basicwebrtc:https://your-server Αν είναι ενεργοποιημένο, μπορείτε να ξεκινήσετε μια συνομιλία μέσω βίντεο από κάθε συνομιλία. Απαιτεί μια συμβατή εφαρμογή ή ένα πρόγραμμα περιήγησης και στα δύο άκρα. Χρήση \"%1$s\" για να προσκαλέσετε άλλους στη βιντεοκλήση;\n\nΑφού ρυθμιστεί, μπορείτε να ξεκινήσετε μια συνομιλία μέσω βίντεο από κάθε συνομιλία. Αυτό αντικαθιστά οποιαδήποτε προηγούμενη ρύθμιση για συνομιλίες μέσω βίντεο. diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index f9ce3afb5..6ec4f3e1e 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -340,6 +340,7 @@ Toca para abrir Instancia de videollamada Tu instancia de videollamada + Ejemplo: https://tu-servidor.org/$ROOM Si el videochat está activado, puedes iniciar un videochat desde cada chat. Los chats de vídeo necesitan una aplicación o un navegador compatible en los dos lados. ¿Usa \"%1$s\" para invitar a otros a la videollamada?\n\nUna vez configurado, puedes iniciar una videollamada desde el chat individual. Esto reemplaza la configuración previa de videollamadas. Si la hubiera. diff --git a/src/main/res/values-fa/strings.xml b/src/main/res/values-fa/strings.xml index 015b7112b..4e49859c3 100644 --- a/src/main/res/values-fa/strings.xml +++ b/src/main/res/values-fa/strings.xml @@ -317,6 +317,7 @@ برای باز کردن ضربه بزنید. جلسه تماس تصویری جلسه تماس تصویری شما + مثال‌: https://meet.jit.si/$ROOM یا diff --git a/src/main/res/values-fi/strings.xml b/src/main/res/values-fi/strings.xml index a2cc81784..58b300482 100644 --- a/src/main/res/values-fi/strings.xml +++ b/src/main/res/values-fi/strings.xml @@ -321,6 +321,7 @@ Napauta avataksesi Videokeskustelun tarjoaja Videokeskustelusi tarjoaja + Esimerkkejä: https://meet.jit.si/$ROOM tai basicwebrtc:https://sinun-palvelimesi Jos videokeskustelu on kytketty päälle, voit aloittaa videokeskustelun mistä tahansa keskustelusta. Videokeskustelu vaatii molemmilta yhteensopivan sovelluksen tai selaimen. Käytä \"%1$s\" videokeskustelupyyntöihin?\n\nTämän jälkeen voit aloittaa videokeskustelun mistä tahansa keskustelusta. Tämä korvaa edellisen videokeskusteluasetuksen, jos sellainen on. diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index 79c27e9db..3e7934725 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -325,6 +325,7 @@ Appuyer pour ouvrir Instance de discussion vidéo Votre instance de discussion vidéo + Par exemple : https://your-server.org/$ROOM Si vous avez activé les discussions vidéo, vous pouvez démarrer une conversation vidéo dans chacune de vos discussions. Il faut que chaque participant-e ait une application ou un navigateur compatibles pour pouvoir utiliser cette option. Utiliser « %1$s » pour inviter d\'autres personnes à des discussions vidéo ?\n\nUne fois configuré, vous pouvez discuter en vidéo dans chaque discussion privée. Remplace vos préférences de configurations précédentes pour les discussions vidéos. diff --git a/src/main/res/values-gl/strings.xml b/src/main/res/values-gl/strings.xml index cc117493f..b67a67c20 100644 --- a/src/main/res/values-gl/strings.xml +++ b/src/main/res/values-gl/strings.xml @@ -295,6 +295,7 @@ Toca para abrir Instancia para video chat A túa instancia para video chat + Exemplos: https://meet.jit.si/$ROOM ou basicwebrtc:https://your-server Se o chat por vídeo está activado, podes iniciar o chat de vídeo desde cada chat. Os chats de vídeo requiren unha app compatible ou un navegador compatible nos dous extremos. ¿Usar \"%1$s\" para convidar a outras a chats de vídeo?\n\nUnha vez establecido podes iniciar o chat desde a conversa un-a-un. Esto restablece o axuste anterior para video chats se existise. diff --git a/src/main/res/values-hu/strings.xml b/src/main/res/values-hu/strings.xml index 1649df2ba..cab2e2b9e 100644 --- a/src/main/res/values-hu/strings.xml +++ b/src/main/res/values-hu/strings.xml @@ -331,6 +331,7 @@ Koppintson ide a megnyitáshoz. Videócsevegés-példány Az ön videócsevegés-példánya + Például: https://your-server.org/$ROOM Ha engedélyezve van, akkor minden csevegésből indíthat videócsevegést. Kompatibilis alkalmazást vagy böngészőt igényel mindkét oldalon. „%1$s” használata mások meghívásához a videócsevegésekbe?\n\nAmint beállította, minden egyes csevegésből indíthat videócsevegést. Ez minden korábbi beállítás helyébe lép a videócsevegéseknél. diff --git a/src/main/res/values-in/strings.xml b/src/main/res/values-in/strings.xml index 435fadf93..8f304c72b 100644 --- a/src/main/res/values-in/strings.xml +++ b/src/main/res/values-in/strings.xml @@ -278,6 +278,7 @@ Anda diundang ke obrolan video. Ketuk untuk bergabung Ketuk untuk membuka + Contoh: https://your-server.org/$ROOM Gunakan \"%1$s\" untuk mengundang orang lain ke obrolan video? Setelah diatur, Anda dapat memulai obrolan video dari setiap obrolan. Ini menggantikan pengaturan sebelumnya untuk obrolan video. Undangan obrolan video diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml index 74e1045ac..1d64c10b7 100644 --- a/src/main/res/values-it/strings.xml +++ b/src/main/res/values-it/strings.xml @@ -340,6 +340,7 @@ Tocca per Aprire Istanza Video Chat La Tua Istanza Video Chat + Esempi: https://your-server.org/$ROOM Se la video chat è abilitata, è possibile avviare una video chat da ogni chat. Le video chat richiedono un\'applicazione compatibile o un browser compatibile da entrambe le parti. Utilizzare \"%1$s\" per invitare altri alla video chat?\n\nUna volta impostato, è possibile avviare una video chat da ogni chat uno a uno. Ciò sostituirà l\'eventuale impostazione precedente per le video chat. diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml index 945dfafef..cd5dcd4b2 100644 --- a/src/main/res/values-ko/strings.xml +++ b/src/main/res/values-ko/strings.xml @@ -279,6 +279,7 @@ 열기 위해 탭하기 비디오 채팅 인스턴스 당신의 비디오 채팅 인스턴스 + 예시: https://meet.jit.si/$ROOM 또는 basicwebrtc:https://your-server 비디오 채팅을 사용할 수 있는 경우 각 채팅에서 비디오 채팅을 시작할 수 있습니다. 화상 채팅을 하려면 호환되는 앱 또는 호환 가능한 브라우저가 양쪽 끝에 필요합니다. \"%1$s\"를 사용하여 다른 사람을 화상 채팅에 초대하시겠습니까?\n\n설정되면 각 채팅에서 비디오 채팅을 시작할 수 있습니다. 이것은 비디오 채팅에 대한 이전 설정을 대체합니다. diff --git a/src/main/res/values-lt/strings.xml b/src/main/res/values-lt/strings.xml index f232f7661..c6fc2896b 100644 --- a/src/main/res/values-lt/strings.xml +++ b/src/main/res/values-lt/strings.xml @@ -287,6 +287,7 @@ Bakstelėkite norėdami atverti Vaizdo pokalbio egzempliorius Jūsų vaizdo pokalbio egzempliorius + Pavyzdys: https://jūsų-serveris.org/$KAMBARYS Pakvietimas į vaizdo pokalbį Jūs esate kviečiami į vaizdo pokalbį. Spustelėkite %1$s jei norite prisijungti. diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index 1f24c9d3c..8f94239f6 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -331,7 +331,8 @@ Druk om te openen Videogespreksinstantie Mijn videogespreksinstantie - Voorbeeld: https://meet.jit.si/$ROOM + + Voorbeeld: https://your-server.org/$ROOM Schakel in om een videogesprek te starten vanuit een een-op-eengesprek. Zowel jij als je gesprekspartner hebben hiervoor een compatibele app of webbrowser nodig. Wil je ‘%1$s’, gebruiken om anderen uit te nodigen voor videogesprekken?\n\nNa het instellen kun je een videogesprek starten vanuit elk een-op-eengesprek. Deze instelling vervangt de vorige videogespreksinstelling. Uitnodiging voor videogesprek diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index ec8286707..87a972252 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -349,6 +349,7 @@ Dotknij, aby otworzyć Instancja czatu wideo Twoja instancja czatu wideo + Przykład: https://meet.jit.si/$ROOM lub basicwebrtc:https://your-server Jeśli czat wideo jest włączony, możesz rozpocząć rozmowę wideo z każdego czatu indywidualnego. Czaty wideo wymagają kompatybilnej aplikacji lub kompatybilnej przeglądarki po obu stronach. Czy użyć „%1$s”, aby zaprosić innych do czatów wideo?\n\nPo ustawieniu możesz rozpocząć czat wideo z każdego czatu indywidualnego. Spowoduje to zastąpienie poprzedniego ustawienia czatów wideo, jeśli takie istnieją. diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml index fa1bc0111..f60f37598 100644 --- a/src/main/res/values-pt-rBR/strings.xml +++ b/src/main/res/values-pt-rBR/strings.xml @@ -310,6 +310,7 @@ Clique para abrir Instância de conversa de vídeo Sua instância de conversa de vídeo + Exemplos: https://meet.jit.si/$ROOM o basicwebrtc:https://your-server Se o video chat estiver habilitado, você pode iniciar uma ligação de video a partir de cada chat. Os bate-papos de vídeo exigem um aplicativo compatível ou um navegador compatível nos dos lados. Use \"%1$s\" para convidar outros para a conversas de vídeo?\n\nUma vez configurado, você pode iniciar uma conversa de vídeo para cada conversa um-para-um. Isto irá substituir os ajustes prévios para conversas de vídeo, caso existam. diff --git a/src/main/res/values-ro/strings.xml b/src/main/res/values-ro/strings.xml index aec1cbc14..382c9b6f1 100644 --- a/src/main/res/values-ro/strings.xml +++ b/src/main/res/values-ro/strings.xml @@ -306,6 +306,7 @@ Atingeți pentru a deschide Instanță de Videochat Instanța Dumneavoastră de Videochat + Exemple: https://meet.jit.si/$ROOM ori basicwebrtc:https://your-server Dacă este activată, puteți începe un chat video din fiecare chat. Necesită un app compatibil sau un browser la ambele capete. Folosiți \"%1$s\" pentru a invita alte persoane la chat-uri video?\n\nOnce setat, puteți începe un chat video din fiecare chat. Acest lucru înlocuiește orice setare anterioară pentru chat-urile video. diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml index d31b5c736..95c157fd8 100644 --- a/src/main/res/values-ru/strings.xml +++ b/src/main/res/values-ru/strings.xml @@ -339,6 +339,7 @@ Нажмите, чтобы открыть. Инстанс видеочатов Ваш инстанс видеочатов + Пример: https://your-server.org/$ROOM Если функция видеочата активирована, вы можете запустить видеочат из любого чата. Для видеочата требуется совместимое приложение или браузер у всех участников. Использовать \"%1$s\" чтобы приглашать других в видеочаты?\n\nНастроив один раз, вы можете начинать видеочат из каждого чата. Это заменит предыдущие настройки видеочатов, если они были. diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml index fa3d39024..757e5eaf5 100644 --- a/src/main/res/values-sk/strings.xml +++ b/src/main/res/values-sk/strings.xml @@ -307,7 +307,8 @@ Otvoríte klepnutím Inštancia videohovoru Vaša inštancia videohovoru - Príklady: https://meet.jit.si/$ROOM alebo basicwebrtc:https://vas-server + + Príklady: https://your-server.org/$ROOM Ak to zapnete, môžete začať video rozhovor z každej konverzácie. Vyžaduje kompatibilnú aplikáciu alebo prehliadač na oboch stranách. Použiť „%1$s“ na odoslanie pozvánky na videohovor?\n\nPo nastavení môžete začať videohovor z každej jednotlivej konverzácie. Toto nahradí predchádzajúce nastavenie pre videohovory, ak existujú. Pozvánka na videohovor diff --git a/src/main/res/values-sq/strings.xml b/src/main/res/values-sq/strings.xml index 29331b489..b9035ad70 100644 --- a/src/main/res/values-sq/strings.xml +++ b/src/main/res/values-sq/strings.xml @@ -328,6 +328,7 @@ Prekeni që të Hapet Instancë Fjalosjeje me Video Instanca juaj e Fjalosjes me Video + Shembull: https://shërbyesi-juaj.org/$ROOM Nëse është aktivizuar, mund të nisni një fjalosje me video prej secilës fjalosje. Kjo lyp në të dy skajet një aplikacion të përputhshëm, ose një shfletues të përputhshëm. Të përdoret “%1$s” për të ftuar të tjerë në fjalosje me video?\n\nPasi të ujdiset kjo, mund të filloni një fjalosje me video që prej një fjalosjeje tek-për-tek. Kështu do të zëvendësohet rregullimi i mëparshëm për fjalosje video, në pastë. diff --git a/src/main/res/values-sr/strings.xml b/src/main/res/values-sr/strings.xml index 86eef5d66..a6d72dbe2 100644 --- a/src/main/res/values-sr/strings.xml +++ b/src/main/res/values-sr/strings.xml @@ -309,6 +309,7 @@ Додирни да отвориш Инстанца видео ћаскања Ваша инстанца видео ћаскања + Примери: https://meet.jit.si/$ROOM или basicwebrtc:https://your-server Ако је омогућено, можете започети видео ћаскање из сваког ћаскања. Ово захтева компатибилну апликацију или прегледач на оба краја. Да ли желите да користите „%1$s“ да позовете друге у видео ћаскање?\n\nКада ово поставите, можете да започнете видео ћаскање из сваког ћаскања. Ово замењује све претходне поставке за видео ћаскање. diff --git a/src/main/res/values-sv/strings.xml b/src/main/res/values-sv/strings.xml index b66d00ea6..e4f99bc0d 100644 --- a/src/main/res/values-sv/strings.xml +++ b/src/main/res/values-sv/strings.xml @@ -327,6 +327,7 @@ Tryck för att öppna Videochattinstans Din videochattinstans + Exempel: https://din-server.org/$RUM Om det är aktiverat kan du starta en videochatt från varje chatt. Kräver en kompatibel app eller en webbläsare på båda sidor. Vill du använda \"%1$s\" för att bjuda in andra till videochattar?\n\nNär det väl är inställt kan du starta en videochatt från vilken en-till-en-chatt som helst. Detta ersätter den tidigare inställningen för eventuella videochattar. diff --git a/src/main/res/values-tr/strings.xml b/src/main/res/values-tr/strings.xml index d3dde1c67..fc92cd1c4 100644 --- a/src/main/res/values-tr/strings.xml +++ b/src/main/res/values-tr/strings.xml @@ -331,6 +331,7 @@ Açmak için Dokunun Video Sohbeti Örneği Video Sohbeti Örneğiniz + Örnek: https://your-server.org/$ROOM Etkinleştirilirse, her sohbetten video sohbeti başlatabilirsiniz. Her iki uçta da uyumlu bir uygulama ya da bir tarayıcı gerektirir. \"%1$s\" diğerlerini video sohbetlerine çağırmak için kullanılsın mı?\n\nBir kez ayarlandığında, her sohbetten video sohbeti başlatabilirsiniz. Bu, video sohbetleri için herhangi bir önceki ayarın yerini alır. diff --git a/src/main/res/values-uk/strings.xml b/src/main/res/values-uk/strings.xml index 701b7bcc9..251c183fc 100644 --- a/src/main/res/values-uk/strings.xml +++ b/src/main/res/values-uk/strings.xml @@ -349,6 +349,7 @@ Торкніться, щоб відкрити Відео чат Ваш відео чат + Приклади: https://meet.jit.si/$ROOM або basicwebrtc:https://your-server Якщо ввімкнено, Ви можете почати відеочат із кожного чату. Обидві сторони повинні встановити сумісний додаток або браузер. Використовувати \"%1$s\" аби запросити інших у відеочат?\n\nПісля встановлення Ви можете розпочати відеочат із кожного індивідуального чату. Це замінить попереднє налаштування для відеочату, якщо воно є. diff --git a/src/main/res/values-vi/strings.xml b/src/main/res/values-vi/strings.xml index 814be569b..8e04af8f1 100644 --- a/src/main/res/values-vi/strings.xml +++ b/src/main/res/values-vi/strings.xml @@ -309,6 +309,7 @@ Nhấn để mở Phiên bản trò chuyện video Phiên bản trò chuyện video của bạn + Ví dụ: https://your-server.org/$ROOM Nếu được bật, bạn có thể bắt đầu trò chuyện video từ mỗi cuộc trò chuyện. Yêu cầu ứng dụng tương thích hoặc trình duyệt ở cả hai đầu. Sử dụng \"%1$s\" để mời người khác trò chuyện video?\n\nSau khi thiết lập, bạn có thể bắt đầu trò chuyện video từ mỗi cuộc trò chuyện. Điều này sẽ thay thế mọi cài đặt trước đó cho trò chuyện video. diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index 2be09aed5..3167f7838 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -322,6 +322,7 @@ 点击来打开 视频聊天实例 您的视频聊天实例 + 示例: https://meet.jit.si/$ROOM 或 basicwebrtc:https://your-server 启用视频聊天后,您便可以在所有聊天中发起视频聊天。需要双方均装有兼容的应用或浏览器。 使用“%1$s”邀请其他人参加视频聊天吗?\n\n设置好后,您就可以在聊天里发起视频聊天了。 这会取代之前的视频聊天设置。 diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml index 503813b5f..340ba34e6 100644 --- a/src/main/res/values-zh-rTW/strings.xml +++ b/src/main/res/values-zh-rTW/strings.xml @@ -308,6 +308,7 @@ 點擊以開啟 視訊通話服務商 你的視訊通話服務商 + 範例:https://your-server.org/$ROOM 如果啟用,你可以在每個對話中開始視訊聊天。兩端都需要相容的應用程式或瀏覽器。 要使用\"%1$s\"來邀請其他人加入視訊通話嗎?\n\n一旦設定完成,你可以在每個聊天室內開啟視訊通話。這將會取代先前的視訊通話設定。 diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 5b8ebdba6..42233feb8 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -331,7 +331,7 @@ Tap to Open Video Chat Instance Your Video Chat Instance - + Example: https://your-server.org/$ROOM If enabled, you can start a video chat from each chat. Requires a compatible app or a browser on both ends. Use \"%1$s\" to invite others to video chats?\n\nOnce set, you can start a video chat from each chat. This replaces any previous setting for video chats. From e4543be71cf165b53b719b513599f1142b0c3c9c Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 17 Sep 2024 15:57:51 +0200 Subject: [PATCH 32/37] 'Mark Read' instead 'Dismiss' notifications 'Dismiss' is a bit unclear - even though introduced at #2083 to make things clearer, i do not think this has happened :) - i also needed to dive into the source code to see what exactly 'Dismiss' is doing. meanwhile, we're anyway using 'Mark Read' to remove unread counter from chats, and this is basically the same. good to be consistent. finally, this is also the term WhatsApp/Telegram are using. closes https://support.delta.chat/t/what-does-dismiss-button-on-notifications-do/3261/3 nb: we also change the english 'short' term from 'Read' to 'Mark Read' - this is sill shorter than many translations and removes the ambiguousness 'Mark Read' vs 'Open for Reading" - esp. in the notification without much context, this is better, but also on iOS, where the term was introduced for, it is good to be explict. --- .../securesms/notifications/NotificationCenter.java | 2 +- src/main/res/values/strings.xml | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java index 929e47930..13cc75798 100644 --- a/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java +++ b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java @@ -452,7 +452,7 @@ public class NotificationCenter { PendingIntent markReadIntent = getMarkAsReadIntent(chatData, true); NotificationCompat.Action markAsReadAction = new NotificationCompat.Action(R.drawable.check, - context.getString(R.string.notify_dismiss), + context.getString(R.string.mark_as_read_short), markReadIntent); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 42233feb8..07ac2131b 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -56,7 +56,7 @@ Mark All as Read Mark as Read - Read + Mark Read Loading… Hide @@ -994,6 +994,7 @@ mailto link could not be decoded: %1$s + Dismiss Reply New message From a35da9ac7c7863e1e2c51ba81042e1b3a9015fcd Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 17 Sep 2024 22:33:27 +0200 Subject: [PATCH 33/37] really mark messages as read from notification --- .../securesms/notifications/MarkReadReceiver.java | 8 +++++++- .../securesms/notifications/NotificationCenter.java | 7 ++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java b/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java index 2001d3d00..3e569c744 100644 --- a/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java +++ b/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java @@ -8,6 +8,8 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import com.b44t.messenger.DcContext; + import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.util.Util; @@ -16,6 +18,7 @@ public class MarkReadReceiver extends BroadcastReceiver { public static final String CANCEL_ACTION = "org.thoughtcrime.securesms.notifications.CANCEL"; public static final String ACCOUNT_ID_EXTRA = "account_id"; public static final String CHAT_ID_EXTRA = "chat_id"; + public static final String MSG_ID_EXTRA = "msg_id"; @Override public void onReceive(final Context context, Intent intent) { @@ -26,6 +29,7 @@ public class MarkReadReceiver extends BroadcastReceiver { final int accountId = intent.getIntExtra(ACCOUNT_ID_EXTRA, 0); final int chatId = intent.getIntExtra(CHAT_ID_EXTRA, DC_CHAT_NO_CHAT); + final int msgId = intent.getIntExtra(MSG_ID_EXTRA, 0); if (accountId == 0 || chatId == DC_CHAT_NO_CHAT) { return; } @@ -33,7 +37,9 @@ public class MarkReadReceiver extends BroadcastReceiver { Util.runOnAnyBackgroundThread(() -> { DcHelper.getNotificationCenter(context).removeNotifications(accountId, chatId); if (markNoticed) { - DcHelper.getAccounts(context).getAccount(accountId).marknoticedChat(chatId); + DcContext dcContext = DcHelper.getAccounts(context).getAccount(accountId); + dcContext.marknoticedChat(chatId); + dcContext.markseenMsgs(new int[]{msgId}); } }); } diff --git a/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java index 13cc75798..c74088ae7 100644 --- a/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java +++ b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java @@ -138,12 +138,13 @@ public class NotificationCenter { return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | IntentUtils.FLAG_MUTABLE()); } - private PendingIntent getMarkAsReadIntent(ChatData chatData, boolean markNoticed) { + private PendingIntent getMarkAsReadIntent(ChatData chatData, int msgId, boolean markNoticed) { Intent intent = new Intent(markNoticed? MarkReadReceiver.MARK_NOTICED_ACTION : MarkReadReceiver.CANCEL_ACTION); intent.setClass(context, MarkReadReceiver.class); intent.setData(Uri.parse("custom://"+chatData.accountId+"."+chatData.chatId)); intent.putExtra(MarkReadReceiver.ACCOUNT_ID_EXTRA, chatData.accountId); intent.putExtra(MarkReadReceiver.CHAT_ID_EXTRA, chatData.chatId); + intent.putExtra(MarkReadReceiver.MSG_ID_EXTRA, msgId); intent.setPackage(context.getPackageName()); return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | IntentUtils.FLAG_MUTABLE()); } @@ -377,7 +378,7 @@ public class NotificationCenter { .setCategory(NotificationCompat.CATEGORY_MESSAGE) .setOnlyAlertOnce(!signal) .setContentText(line) - .setDeleteIntent(getMarkAsReadIntent(chatData, false)) + .setDeleteIntent(getMarkAsReadIntent(chatData, msgId, false)) .setContentIntent(getOpenChatIntent(chatData)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { @@ -449,7 +450,7 @@ public class NotificationCenter { if (privacy.isDisplayContact() && privacy.isDisplayMessage()) { try { PendingIntent inNotificationReplyIntent = getRemoteReplyIntent(chatData); - PendingIntent markReadIntent = getMarkAsReadIntent(chatData, true); + PendingIntent markReadIntent = getMarkAsReadIntent(chatData, msgId, true); NotificationCompat.Action markAsReadAction = new NotificationCompat.Action(R.drawable.check, context.getString(R.string.mark_as_read_short), From 2870ad988fbf4933a1ba7777534dd7036e874e30 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 17 Sep 2024 22:38:26 +0200 Subject: [PATCH 34/37] mark messages as read also when replying from notification --- .../securesms/notifications/NotificationCenter.java | 5 +++-- .../securesms/notifications/RemoteReplyReceiver.java | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java index c74088ae7..beca6e712 100644 --- a/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java +++ b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java @@ -128,12 +128,13 @@ public class NotificationCenter { .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT | IntentUtils.FLAG_MUTABLE()); } - private PendingIntent getRemoteReplyIntent(ChatData chatData) { + private PendingIntent getRemoteReplyIntent(ChatData chatData, int msgId) { Intent intent = new Intent(RemoteReplyReceiver.REPLY_ACTION); intent.setClass(context, RemoteReplyReceiver.class); intent.setData(Uri.parse("custom://"+chatData.accountId+"."+chatData.chatId)); intent.putExtra(RemoteReplyReceiver.ACCOUNT_ID_EXTRA, chatData.accountId); intent.putExtra(RemoteReplyReceiver.CHAT_ID_EXTRA, chatData.chatId); + intent.putExtra(RemoteReplyReceiver.MSG_ID_EXTRA, msgId); intent.setPackage(context.getPackageName()); return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT | IntentUtils.FLAG_MUTABLE()); } @@ -449,7 +450,7 @@ public class NotificationCenter { // if privacy options are enabled, the buttons are not added. if (privacy.isDisplayContact() && privacy.isDisplayMessage()) { try { - PendingIntent inNotificationReplyIntent = getRemoteReplyIntent(chatData); + PendingIntent inNotificationReplyIntent = getRemoteReplyIntent(chatData, msgId); PendingIntent markReadIntent = getMarkAsReadIntent(chatData, msgId, true); NotificationCompat.Action markAsReadAction = new NotificationCompat.Action(R.drawable.check, diff --git a/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java b/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java index 466ff1227..6fa3c2633 100644 --- a/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java +++ b/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java @@ -41,6 +41,7 @@ public class RemoteReplyReceiver extends BroadcastReceiver { public static final String REPLY_ACTION = "org.thoughtcrime.securesms.notifications.WEAR_REPLY"; public static final String ACCOUNT_ID_EXTRA = "account_id"; public static final String CHAT_ID_EXTRA = "chat_id"; + public static final String MSG_ID_EXTRA = "msg_id"; public static final String EXTRA_REMOTE_REPLY = "extra_remote_reply"; @SuppressLint("StaticFieldLeak") @@ -50,6 +51,7 @@ public class RemoteReplyReceiver extends BroadcastReceiver { Bundle remoteInput = RemoteInput.getResultsFromIntent(intent); final int accountId = intent.getIntExtra(ACCOUNT_ID_EXTRA, 0); final int chatId = intent.getIntExtra(CHAT_ID_EXTRA, DC_CHAT_NO_CHAT); + final int msgId = intent.getIntExtra(MSG_ID_EXTRA, 0); if (remoteInput == null || chatId == DC_CHAT_NO_CHAT || accountId == 0) return; @@ -59,6 +61,7 @@ public class RemoteReplyReceiver extends BroadcastReceiver { Util.runOnAnyBackgroundThread(() -> { DcContext dcContext = DcHelper.getAccounts(context).getAccount(accountId); dcContext.marknoticedChat(chatId); + dcContext.markseenMsgs(new int[]{msgId}); if (dcContext.getChat(chatId).isContactRequest()) { dcContext.acceptChat(chatId); } From 91467e5c658ec1b122d89d33779c9c2c80966379 Mon Sep 17 00:00:00 2001 From: "B. Petersen" Date: Tue, 17 Sep 2024 22:42:48 +0200 Subject: [PATCH 35/37] add reference to original message when replying from a notification; otherwise a simple 'yes' is easily misleading if message arrive in between or out of order --- .../securesms/notifications/RemoteReplyReceiver.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java b/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java index 6fa3c2633..c010cc917 100644 --- a/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java +++ b/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java @@ -27,6 +27,7 @@ import android.os.Bundle; import androidx.core.app.RemoteInput; import com.b44t.messenger.DcContext; +import com.b44t.messenger.DcMsg; import org.thoughtcrime.securesms.connect.DcHelper; import org.thoughtcrime.securesms.util.Util; @@ -65,7 +66,12 @@ public class RemoteReplyReceiver extends BroadcastReceiver { if (dcContext.getChat(chatId).isContactRequest()) { dcContext.acceptChat(chatId); } - dcContext.sendTextMsg(chatId, responseText.toString()); + + DcMsg msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT); + msg.setText(responseText.toString()); + msg.setQuote(dcContext.getMsg(msgId)); + dcContext.sendMsg(chatId, msg); + DcHelper.getNotificationCenter(context).removeNotifications(accountId, chatId); }); } From 4e6119b85ddfdbb354fc8409dee275a98d88d3c3 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Thu, 19 Sep 2024 21:08:39 +0200 Subject: [PATCH 36/37] log notifications permission status --- src/main/java/org/thoughtcrime/securesms/LogViewFragment.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/org/thoughtcrime/securesms/LogViewFragment.java b/src/main/java/org/thoughtcrime/securesms/LogViewFragment.java index 89b3b6117..883f8036f 100644 --- a/src/main/java/org/thoughtcrime/securesms/LogViewFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/LogViewFragment.java @@ -17,6 +17,7 @@ package org.thoughtcrime.securesms; +import android.Manifest; import android.annotation.TargetApi; import android.app.ActivityManager; import android.content.Context; @@ -35,6 +36,7 @@ import android.view.ViewGroup; import android.widget.EditText; import androidx.annotation.NonNull; +import androidx.core.content.PermissionChecker; import androidx.fragment.app.Fragment; import com.b44t.messenger.DcContext; @@ -256,6 +258,8 @@ public class LogViewFragment extends Fragment { } final String token = FcmReceiveService.getToken(); + boolean notifPermGranted = PermissionChecker.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) == PermissionChecker.PERMISSION_GRANTED; + builder.append("notifications-permission=").append(notifPermGranted).append("\n"); builder.append("push-enabled=").append(Prefs.isPushEnabled(context)).append("\n"); builder.append("push-token=").append(token == null ? "" : token).append("\n"); } catch (Exception e) { From 1757c417fa9fccd2011ff87aba763547c837b679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asiel=20D=C3=ADaz=20Ben=C3=ADtez?= Date: Thu, 19 Sep 2024 16:14:49 -0400 Subject: [PATCH 37/37] Update src/main/java/org/thoughtcrime/securesms/LogViewFragment.java Co-authored-by: bjoern --- src/main/java/org/thoughtcrime/securesms/LogViewFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/thoughtcrime/securesms/LogViewFragment.java b/src/main/java/org/thoughtcrime/securesms/LogViewFragment.java index 883f8036f..17ce31e42 100644 --- a/src/main/java/org/thoughtcrime/securesms/LogViewFragment.java +++ b/src/main/java/org/thoughtcrime/securesms/LogViewFragment.java @@ -259,7 +259,7 @@ public class LogViewFragment extends Fragment { final String token = FcmReceiveService.getToken(); boolean notifPermGranted = PermissionChecker.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) == PermissionChecker.PERMISSION_GRANTED; - builder.append("notifications-permission=").append(notifPermGranted).append("\n"); + builder.append("post-notifications-granted=").append(notifPermGranted).append("\n"); builder.append("push-enabled=").append(Prefs.isPushEnabled(context)).append("\n"); builder.append("push-token=").append(token == null ? "" : token).append("\n"); } catch (Exception e) {