Compare commits
181 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5627f5f123 | |||
| 7a66085107 | |||
| aa45a9082e | |||
| 3955f4d505 | |||
| 74dd4c0d9a | |||
| 23eb418591 | |||
| edcfa80d92 | |||
| 5ff1f3d915 | |||
| b0ae2da439 | |||
| 8487c286e6 | |||
| ffa9177094 | |||
| 6f3d8a4414 | |||
| 9bbee2db10 | |||
| 30580366fd | |||
| ec4bffdabe | |||
| ca2d8f4b6e | |||
| a7f0f753fd | |||
| 4025fd5e0b | |||
| 577959a51a | |||
| 776dc05755 | |||
| 28141bf942 | |||
| 3431163c24 | |||
| 45cb3a953c | |||
| 3080313568 | |||
| f13251bc07 | |||
| 6a7c498481 | |||
| b72a1ec7d8 | |||
| 5fd06f2b9d | |||
| 899b075349 | |||
| 1c0dc91f03 | |||
| a76762f321 | |||
| 86ebb6e1a8 | |||
| ecf87c58e1 | |||
| 0bef0b3501 | |||
| bc6d676fcd | |||
| 8aa615157a | |||
| 9ffa76c0f4 | |||
| 9fc4bfb970 | |||
| 1bc40837fe | |||
| ba3ea172e5 | |||
| 3a4c02c8cd | |||
| 4b9d521c13 | |||
| df9e3007b2 | |||
| 117f144858 | |||
| e17d37ebb7 | |||
| 08200d8443 | |||
| 9809e3edd6 | |||
| 2255c267ef | |||
| 4a83f4005a | |||
| 8ea78b1930 | |||
| 9d4b5e8fed | |||
| ca74afb229 | |||
| 1757c417fa | |||
| 4e6119b85d | |||
| 91467e5c65 | |||
| 2870ad988f | |||
| a35da9ac7c | |||
| e4543be71c | |||
| b1e4d4dbe5 | |||
| e6f9eda787 | |||
| 12b5f0767c | |||
| 0bd2c2f825 | |||
| 5c9afb910d | |||
| e41e3374e8 | |||
| 0be6457cd1 | |||
| f3fa1d5e7c | |||
| 5f2b4590c0 | |||
| be4bc8259e | |||
| 529842ad60 | |||
| 78bd221fdf | |||
| 054902eb67 | |||
| ef578da78d | |||
| 884cce3e1a | |||
| fc6bdc2fea | |||
| e441a582dd | |||
| 3e3a01dd62 | |||
| 1cda594e02 | |||
| 357e6de031 | |||
| 30ac01a57e | |||
| de5d45d04d | |||
| c599fc8e79 | |||
| 295e1b50d2 | |||
| ef8838cbe3 | |||
| eed124a0f2 | |||
| 18974ff023 | |||
| e666bbf610 | |||
| 0330485123 | |||
| 56717d3f44 | |||
| 958bdddacf | |||
| 6375b85ef9 | |||
| e076691f2a | |||
| 4635cbbe4f | |||
| 71311d43e8 | |||
| 6efe540310 | |||
| 1843c29b7c | |||
| 653d940242 | |||
| 2f3a730be7 | |||
| 7a2401a3d5 | |||
| 6690add48f | |||
| ace1c99daa | |||
| 125ac5e7b3 | |||
| b3248c9f6d | |||
| 00d1803631 | |||
| 0482889dfa | |||
| 6113195977 | |||
| 4a02d6c73d | |||
| a252eec698 | |||
| b89e094f9f | |||
| bc511d6100 | |||
| 59435e8975 | |||
| 56b925f600 | |||
| 5a5ea83fa0 | |||
| 3033000e4e | |||
| 9f8da69b25 | |||
| aa52f8172d | |||
| 82ddcd0839 | |||
| 8d99b36347 | |||
| 589fa8e3dd | |||
| 434b40e51e | |||
| 755c346d82 | |||
| b13defdf9c | |||
| fbe533c701 | |||
| 13ebad4942 | |||
| f9539c160e | |||
| 0195f2f78f | |||
| 64553b5655 | |||
| ce38181502 | |||
| 4c58f31dc6 | |||
| e5a2bde5c4 | |||
| d984bf15a0 | |||
| ab2904e274 | |||
| c751d7015c | |||
| eef3be840b | |||
| fed96377f5 | |||
| 774bee1e28 | |||
| c0b3d87ff9 | |||
| e72eed807f | |||
| cd1821f6a7 | |||
| e79f4ef84e | |||
| 8071f64669 | |||
| fd2d3a5b5a | |||
| 2e500ce97b | |||
| 997d03829e | |||
| 67d6a2aed3 | |||
| 884481fa9e | |||
| 4c90890643 | |||
| 1209ec02f9 | |||
| 63e4b25cbf | |||
| acdde4c0a0 | |||
| a9fba59386 | |||
| 4ef7fc0401 | |||
| 148f07729c | |||
| 529f46f226 | |||
| 7ad8a48255 | |||
| 3d7d3157fc | |||
| 6b34438958 | |||
| 31bc04d190 | |||
| c1c2aa4930 | |||
| 78a9bd98b0 | |||
| c058eb2927 | |||
| 6180397f8f | |||
| b4bb2e2b5d | |||
| e717837e6c | |||
| b7ae41b249 | |||
| 270e31fc58 | |||
| 5900b340e4 | |||
| 066d794360 | |||
| c9d9d915a1 | |||
| d397f7f16e | |||
| d1d379b9b1 | |||
| a4abc0181b | |||
| 7c762bbb6c | |||
| 0d3e009500 | |||
| d16d58b77a | |||
| f4bbb61313 | |||
| a38a29167e | |||
| cf954d0970 | |||
| 7ded91d8af | |||
| 27d7e3b27d | |||
| 669e21b6f1 | |||
| b7e4dda6f5 |
@@ -63,7 +63,7 @@ jobs:
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
body: "Auto-generated release"
|
||||
body: '[<img src="store/get-it-on-fdroid.png" alt="Get it on F-Droid" height="48">](https://f-droid.org/packages/chat.delta.lite) [<img src="store/get-it-on-IzzyOnDroid.png" alt="Get it on IzzyOnDroid" height="48">](https://apt.izzysoft.de/fdroid/index/apk/chat.delta.lite) [<img src="store/get-it-on-apklis.png" alt="Disponible en Apklis" height="48">](https://www.apklis.cu/application/chat.delta.lite) [<img src="store/get-it-on-github.png" alt="Get it on GitHub" height="48">](https://github.com/ArcaneChat/android/releases/latest/download/ArcaneChat-gplay.apk)'
|
||||
prerelease: ${{ contains(github.event.ref, '-beta') }}
|
||||
fail_on_unmatched_files: true
|
||||
files: build/outputs/apk/foss/release/*.apk
|
||||
|
||||
@@ -1,4 +1,47 @@
|
||||
# Delta Chat Android Changelog
|
||||
# ArcaneChat Android Changelog
|
||||
|
||||
## v1.46.15
|
||||
2024-09
|
||||
|
||||
* new proxy settings screen available at "Advanced / Proxy"
|
||||
* manage a list of HTTP(S), SOCKS5 or Shadowsocks proxies
|
||||
* proxies icon shown on the chatlist if proxies are used
|
||||
* improve profile deletion dialog: show name, size and avatar of the profile being deleted
|
||||
* improve notification: allow to "Mark Read" from the notification
|
||||
* automatic reconfiguration, e.g. switching to implicit TLS if STARTTLS port stops working
|
||||
* parallelize IMAP and SMTP connection attempts
|
||||
* always use preloaded DNS results
|
||||
* always move auto-generated messages to DeltaChat folder
|
||||
* ignore invalid securejoin messages silently
|
||||
* delete messages from a chatmail server immediately by default
|
||||
* make resending pending messages possible
|
||||
* don't SMTP-send messages to self-chat if BccSelf is disabled
|
||||
* HTTP(S) tunneling
|
||||
* don't put displayname into From/To/Sender if it equals to address
|
||||
* hide sync messages from INBOX (use IMAP APPEND command to upload sync messages)
|
||||
* more verbose SMTP connection establishment errors
|
||||
* log unexpected message state when resending fails
|
||||
* fix: avoid app being killed when processing a PUSH notification
|
||||
* fix crash when refreshing avatar
|
||||
* fix crash in gallery
|
||||
* fix: shorten message text in locally sent messages too
|
||||
* fix: Set http I/O timeout to 1 minute rather than whole request timeout
|
||||
* fix: don't sync QR code token before populating the group
|
||||
* update to core 1.145.0
|
||||
|
||||
|
||||
## 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
|
||||
|
||||
@@ -2,15 +2,10 @@
|
||||
|
||||
A [Delta Chat](https://delta.chat/) client for Android.
|
||||
|
||||
[<img src="store/get-it-on-IzzyOnDroid.png"
|
||||
alt="Get it on IzzyOnDroid"
|
||||
height="48">](https://apt.izzysoft.de/fdroid/index/apk/chat.delta.lite)
|
||||
[<img src="store/get-it-on-apklis.png"
|
||||
alt="Disponible en Apklis"
|
||||
height="48">](https://www.apklis.cu/application/chat.delta.lite)
|
||||
[<img src="store/get-it-on-github.png"
|
||||
alt="Get it on GitHub"
|
||||
height="48">](https://github.com/ArcaneChat/android/releases/latest)
|
||||
[<img src="store/get-it-on-fdroid.png" alt="Get it on F-Droid" height="48">](https://f-droid.org/packages/chat.delta.lite)
|
||||
[<img src="store/get-it-on-IzzyOnDroid.png" alt="Get it on IzzyOnDroid" height="48">](https://apt.izzysoft.de/fdroid/index/apk/chat.delta.lite)
|
||||
[<img src="store/get-it-on-apklis.png" alt="Disponible en Apklis" height="48">](https://www.apklis.cu/application/chat.delta.lite)
|
||||
[<img src="store/get-it-on-github.png" alt="Get it on GitHub" height="48">](https://github.com/ArcaneChat/android/releases/latest/download/ArcaneChat-gplay.apk)
|
||||
|
||||
|
||||
<img alt="Screenshot" src="fastlane/metadata/android/en-US/images/phoneScreenshots/1.png" width="298" /> <img alt="Screenshot" src="fastlane/metadata/android/en-US/images/phoneScreenshots/2.png" width="298" />
|
||||
|
||||
@@ -33,8 +33,8 @@ android {
|
||||
useLibrary 'org.apache.http.legacy'
|
||||
|
||||
defaultConfig {
|
||||
versionCode 30000689
|
||||
versionName "1.46.17"
|
||||
versionCode 30000692
|
||||
versionName "1.46.20"
|
||||
|
||||
applicationId "chat.delta.lite"
|
||||
multiDexEnabled true
|
||||
|
||||
@@ -276,6 +276,12 @@ JNIEXPORT void Java_com_b44t_messenger_DcAccounts_setPushDeviceToken(JNIEnv *env
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jboolean Java_com_b44t_messenger_DcAccounts_backgroundFetch(JNIEnv *env, jobject obj, jint timeout_seconds)
|
||||
{
|
||||
return dc_accounts_background_fetch(get_dc_accounts(env, obj), timeout_seconds) != 0;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_DcAccounts_addAccount(JNIEnv *env, jobject obj)
|
||||
{
|
||||
return dc_accounts_add_account(get_dc_accounts(env, obj));
|
||||
@@ -1325,12 +1331,6 @@ JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatMedia(JNIEnv *env,
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getNextMedia(JNIEnv *env, jobject obj, jint msg_id, jint dir, jint type1, jint type2, jint type3)
|
||||
{
|
||||
return dc_get_next_media(get_dc_context(env, obj), msg_id, dir, type1, type2, type3);
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatMsgs(JNIEnv *env, jobject obj, jint chat_id, jint flags, jint marker1before)
|
||||
{
|
||||
dc_array_t* ca = dc_get_chat_msgs(get_dc_context(env, obj), chat_id, flags, marker1before);
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -17,7 +17,7 @@ import com.google.firebase.messaging.RemoteMessage;
|
||||
|
||||
import org.thoughtcrime.securesms.ApplicationContext;
|
||||
import org.thoughtcrime.securesms.BuildConfig;
|
||||
import org.thoughtcrime.securesms.util.Prefs;
|
||||
import org.thoughtcrime.securesms.service.FetchForegroundService;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
|
||||
public class FcmReceiveService extends FirebaseMessagingService {
|
||||
@@ -92,18 +92,17 @@ public class FcmReceiveService extends FirebaseMessagingService {
|
||||
return prefixedToken;
|
||||
}
|
||||
|
||||
@WorkerThread
|
||||
@Override
|
||||
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
|
||||
Log.i(TAG, "FCM push notification received");
|
||||
// the app is running (again) now and fetching and notifications should be processed as usual.
|
||||
// to support accounts that do not send PUSH notifications and for simplicity,
|
||||
// we just let the app run as long as possible.
|
||||
FetchForegroundService.start(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDeletedMessages() {
|
||||
Log.i(TAG, "FCM push notifications dropped");
|
||||
// nothing special to do as we're running now and notifications should be processed as usual.
|
||||
FetchForegroundService.start(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -262,6 +262,26 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name=".proxy.ProxySettingsActivity"
|
||||
android:label="@string/proxy_settings"
|
||||
android:windowSoftInputMode="stateHidden"
|
||||
android:exported="true"
|
||||
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW"/>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<category android:name="android.intent.category.BROWSABLE"/>
|
||||
<!-- Android's scheme matcher is case-sensitive, so include most likely variations -->
|
||||
<data android:scheme="ss" />
|
||||
<data android:scheme="socks5" />
|
||||
<data android:scheme="SOCKS5" tools:ignore="AppLinkUrlError" />
|
||||
<data android:scheme="SS" tools:ignore="AppLinkUrlError" />
|
||||
</intent-filter>
|
||||
|
||||
</activity>
|
||||
|
||||
|
||||
<activity android:name=".LogViewActivity"
|
||||
android:label="@string/pref_log_header"
|
||||
android:windowSoftInputMode="stateHidden"
|
||||
@@ -388,6 +408,10 @@
|
||||
android:name=".service.GenericForegroundService"
|
||||
android:foregroundServiceType="dataSync" />
|
||||
|
||||
<service
|
||||
android:name=".service.FetchForegroundService"
|
||||
android:foregroundServiceType="dataSync" />
|
||||
|
||||
<service
|
||||
android:name=".service.IPCAddAccountsService"
|
||||
android:foregroundServiceType="dataSync"
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
|
||||
<li><a href="#pfs">Does ArcaneChat support Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of ArcaneChat as safe as Signal?</a></li>
|
||||
<li><a href="#lze-znovu-použít-můj-stávající-soukromý-klíč">Lze znovu použít můj stávající soukromý klíč?</a></li>
|
||||
<li><a href="#importkey">Lze znovu použít můj stávající soukromý klíč?</a></li>
|
||||
<li><a href="#nemohu-do-delta-chatu-zavést-můj-stávající-pgp-klíč">Nemohu do ArcaneChatu zavést můj stávající PGP klíč.</a></li>
|
||||
<li><a href="#security-audits">Was ArcaneChat independently audited for security vulnerabilities?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#proč-můžu-nastavit-sledování-složky-odeslané">Proč můžu nastavit sledování složky Odeslané?</a></li>
|
||||
<li><a href="#proč-mohu-zvolit-nesledovat-složku-deltachat">Proč mohu zvolit nesledovat složku DeltaChat?</a></li>
|
||||
<li><a href="#lze-delta-chat-používat-s-protonmail--tutanota--criptext">Lze ArcaneChat používat s Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#how-can-i-delete-my-account">How can I delete my account?</a></li>
|
||||
<li><a href="#remove-account">How can I delete my account?</a></li>
|
||||
<li><a href="#mám-zájem-o-technické-podrobnosti-kde-najdu-víc">Mám zájem o technické podrobnosti. Kde najdu víc?</a></li>
|
||||
<li><a href="#jak-je-financován-vývoj-delta-chatu">Jak je financován vývoj ArcaneChatu?</a></li>
|
||||
</ul>
|
||||
@@ -1146,10 +1146,10 @@ past encrypted messages.</p>
|
||||
<p>In any case, ArcaneChat’s end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
|
||||
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
|
||||
|
||||
<h3 id="lze-znovu-použít-můj-stávající-soukromý-klíč">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Lze znovu použít můj stávající soukromý klíč? <a href="#lze-znovu-použít-můj-stávající-soukromý-klíč" class="anchor"></a>
|
||||
Lze znovu použít můj stávající soukromý klíč? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1277,7 +1277,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
|
||||
and wait a moment until a QR code is shown</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, <a href="https://get.delta.chat">install ArcaneChat</a></p>
|
||||
<p>On the second device, <a href="https://github.com/ArcaneChat">install ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, start ArcaneChat, select <strong>Add as Second Device</strong>, and scan the QR code from the old device</p>
|
||||
@@ -1379,7 +1379,7 @@ V tuto chvíli jsme zaměřeni na poskytování stabilní verze jako nativní ap
|
||||
významných obchodech (Google Play / iOS / Windows / macOS / Linux repositories) .</li>
|
||||
<li>Pokud nemáš dostatečná práva instalovat programy na svůj pracovní počítač, můžeš použít
|
||||
přenosnou verzi pro Windows nebo AppImage pro Linux.
|
||||
Všechny softwarové balíčky jsou na <a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
Všechny softwarové balíčky jsou na <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1791,7 +1791,7 @@ pro složku Odeslané přes IMAP).</p>
|
||||
programu (např. Thunderbird) spolu s ArcaneChatem, a chtít z tohoto programu také
|
||||
psát zprávy do hovorů ArcaneChatu.</p>
|
||||
|
||||
<p>Nicméně doporučujeme používat ArcaneChat Desktop Client; ten lze stáhnout z <a href="https://get.delta.chat">get.delta.chat</a>. Možnost sledování složky “Odeslané”
|
||||
<p>Nicméně doporučujeme používat ArcaneChat Desktop Client; ten lze stáhnout z <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. Možnost sledování složky “Odeslané”
|
||||
může být v budoucnu zrušena. Byla totiž vytvořena v době, kdy ArcaneChat Desktop
|
||||
nebyl dostupný na všech platformách.</p>
|
||||
|
||||
@@ -1829,22 +1829,38 @@ uses.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="how-can-i-delete-my-account">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
How can I delete my account? <a href="#how-can-i-delete-my-account" class="anchor"></a>
|
||||
How can I delete my account? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>As you use an e-mail account for ArcaneChat,
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/cs/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over your e-mail account,
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to keep the account,
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.</p>
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="mám-zájem-o-technické-podrobnosti-kde-najdu-víc">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#wie-kann-ich-ende-zu-ende-verschlüsselung-und-löschen-von-nachrichten-sicherstellen">Wie kann ich Ende-zu-Ende-Verschlüsselung und Löschen von Nachrichten sicherstellen?</a></li>
|
||||
<li><a href="#pfs">Unterstützt ArcaneChat “Perfect Forward Secrecy”?</a></li>
|
||||
<li><a href="#ist-die-ende-zu-ende-verschlüsselung-von-delta-chat-genauso-sicher-wie-die-von-signal">Ist die Ende-zu-Ende-Verschlüsselung von ArcaneChat genauso sicher wie die von Signal?</a></li>
|
||||
<li><a href="#kann-ich-meinen-existierenden-privaten-schlüssel-weiter-verwenden">Kann ich meinen existierenden privaten Schlüssel weiter verwenden?</a></li>
|
||||
<li><a href="#importkey">Kann ich meinen existierenden privaten Schlüssel weiter verwenden?</a></li>
|
||||
<li><a href="#ich-kann-meinen-existierenden-pgp-schlüssel-nicht-in-delta-chat-importieren">Ich kann meinen existierenden PGP-Schlüssel nicht in ArcaneChat importieren.</a></li>
|
||||
<li><a href="#security-audits">Wurde ArcaneChat unabhängig auf Sicherheitslücken geprüft?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#warum-gibt-es-die-funktion-gesendet-ordner-beobachten">Warum gibt es die Funktion “Gesendet-Ordner beobachten”?</a></li>
|
||||
<li><a href="#warum-kann-ich-deltachat-ordner-beobachten-ausschalten">Warum kann ich “DeltaChat-Ordner beobachten” ausschalten?</a></li>
|
||||
<li><a href="#ist-delta-chat-kompatibel-mit-protonmail--tutanota--criptext">Ist ArcaneChat kompatibel mit Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#wie-kann-ich-mein-konto-löschen">Wie kann ich mein Konto löschen?</a></li>
|
||||
<li><a href="#remove-account">Wie kann ich mein Konto löschen?</a></li>
|
||||
<li><a href="#ich-bin-an-technischen-details-interessiert-gibt-es-hierzu-weitere-infos">Ich bin an technischen Details interessiert. Gibt es hierzu weitere Infos?</a></li>
|
||||
<li><a href="#wie-wird-delta-chat-finanziert">Wie wird ArcaneChat finanziert?</a></li>
|
||||
</ul>
|
||||
@@ -1081,10 +1081,10 @@ vergangenen verschlüsselten Nachrichten hat.</p>
|
||||
<p>In jedem Fall verwendet die Ende-zu-Ende-Verschlüsselung von ArcaneChat eine <a href="#openpgp-secure">sichere Untermenge von OpenPGP</a>
|
||||
das [unabhängig sicherheitsgeprüft] wurde (../assets/blog/2019-first-security-review.pdf).</p>
|
||||
|
||||
<h3 id="kann-ich-meinen-existierenden-privaten-schlüssel-weiter-verwenden">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Kann ich meinen existierenden privaten Schlüssel weiter verwenden? <a href="#kann-ich-meinen-existierenden-privaten-schlüssel-weiter-verwenden" class="anchor"></a>
|
||||
Kann ich meinen existierenden privaten Schlüssel weiter verwenden? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1186,7 +1186,7 @@ Es wurden keine kritischen Probleme gefunden, aber zwei Probleme mit hohem Schwe
|
||||
<p>Gehen Sie auf dem ersten Gerät zu <strong>Einstellungen → Zweites Gerät hinzufügen</strong>, entsperren Sie den Bildschirm, falls erforderlich und warten Sie einen Moment, bis ein QR-Code angezeigt wird</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Auf dem zweiten Gerät <a href="https://get.delta.chat">ArcaneChat installieren</a></p>
|
||||
<p>Auf dem zweiten Gerät <a href="https://github.com/ArcaneChat">ArcaneChat installieren</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Auf dem zweiten Gerät ArcaneChat starten, “Als Zweitgerät hinzufügen” wählen und den QR-Code vom ersten Gerät scannen</p>
|
||||
@@ -1267,7 +1267,7 @@ Verwenden Sie nach Möglichkeit ein Nicht-Gast-Netzwerk. Wenn Sie Zugriff auf de
|
||||
<ul>
|
||||
<li>Es gibt keine direkten Pläne, aber einige vorläufige Gedanken.</li>
|
||||
<li>Es gibt 2-3 Möglichkeiten, einen ArcaneChat Web-Client einzuführen, aber sie bedeuten alle immense Arbeit. Im Moment fokussieren wir uns darauf, stabile native Apps in den Appstores (Google Play/iOS/Windows/macOS/Linux repositories) anzubieten.</li>
|
||||
<li>Sollten Sie einen Web-Client benötigen, weil Sie auf Ihrem Arbeitsrechner keine Software installieren dürfen, können Sie den Windows Desktop-Client bzw. Applmage für Linux nutzen. Sie finden diese unter <a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<li>Sollten Sie einen Web-Client benötigen, weil Sie auf Ihrem Arbeitsrechner keine Software installieren dürfen, können Sie den Windows Desktop-Client bzw. Applmage für Linux nutzen. Sie finden diese unter <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1612,7 +1612,7 @@ wenn Sie eine <a href="#signature">Signaturtext</a> einfügen.</p>
|
||||
|
||||
<p>Der einzige Grund, den Gesendet-Ordner zu beobachten, ist, wenn Sie ein weiteres E-Mail-Programm (wie Thunderbird) mit demselben E-Mail-Account verwenden und die von dort versendeten Nachrichten in der Chat-Historie aufgeführt werden sollen.</p>
|
||||
|
||||
<p>Wir empfehlen für diesen Zweck aber “ArcaneChat Desktop”; Sie können die App unter <a href="https://get.delta.chat">get.delta.chat</a> herunterladen. Möglicherweise wird die Option “Gesendet-Ordner beobachten” zukünftig wegfallen; sie kommt aus einer Zeit, als ArcaneChat Desktop noch nicht auf allen Plattformen zur Verfügung stand.</p>
|
||||
<p>Wir empfehlen für diesen Zweck aber “ArcaneChat Desktop”; Sie können die App unter <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a> herunterladen. Möglicherweise wird die Option “Gesendet-Ordner beobachten” zukünftig wegfallen; sie kommt aus einer Zeit, als ArcaneChat Desktop noch nicht auf allen Plattformen zur Verfügung stand.</p>
|
||||
|
||||
<h3 id="warum-kann-ich-deltachat-ordner-beobachten-ausschalten">
|
||||
|
||||
@@ -1640,17 +1640,38 @@ wenn Sie eine <a href="#signature">Signaturtext</a> einfügen.</p>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-fähige E-Mail-Anwendung</a> herstellen</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="wie-kann-ich-mein-konto-löschen">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
Wie kann ich mein Konto löschen? <a href="#wie-kann-ich-mein-konto-löschen" class="anchor"></a>
|
||||
Wie kann ich mein Konto löschen? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>Da Sie ein E-Mail-Konto für ArcaneChat verwenden, hängt von Ihrem E-Mail-Anbieter ab, wie Sie Ihr Konto löschen können. Wir haben keine Kontrolle über Ihr E-Mail-Konto, daher können wir Ihnen dabei leider nicht helfen.</p>
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/de/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>Wenn Sie das Konto behalten, aber ArcaneChat deinstallieren möchten, ist es ratsam, aktive Gruppen zu verlassen, bevor Sie ArcaneChat deinstallieren.</p>
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="ich-bin-an-technischen-details-interessiert-gibt-es-hierzu-weitere-infos">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
|
||||
<li><a href="#pfs">Does ArcaneChat support Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of ArcaneChat as safe as Signal?</a></li>
|
||||
<li><a href="#can-i-reuse-my-existing-private-key">Can I reuse my existing private key?</a></li>
|
||||
<li><a href="#importkey">Can I reuse my existing private key?</a></li>
|
||||
<li><a href="#i-cant-import-my-existing-pgp-key-into-delta-chat">I can’t import my existing PGP key into ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">Was ArcaneChat independently audited for security vulnerabilities?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#why-can-i-choose-to-watch-the-sent-folder">Why can I choose to watch the “Sent” folder?</a></li>
|
||||
<li><a href="#why-can-i-choose-not-to-watch-the-deltachat-folder">Why can I choose not to watch the DeltaChat folder?</a></li>
|
||||
<li><a href="#is-delta-chat-compatible-with-protonmail--tutanota--criptext">Is ArcaneChat compatible with Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#how-can-i-delete-my-account">How can I delete my account?</a></li>
|
||||
<li><a href="#remove-account">How can I delete my account?</a></li>
|
||||
<li><a href="#im-interested-in-the-technical-details-can-you-tell-me-more">I’m interested in the technical details. Can you tell me more?</a></li>
|
||||
<li><a href="#how-are-delta-chat-developments-funded">How are ArcaneChat developments funded?</a></li>
|
||||
</ul>
|
||||
@@ -1150,10 +1150,10 @@ past encrypted messages.</p>
|
||||
<p>In any case, ArcaneChat’s end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
|
||||
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
|
||||
|
||||
<h3 id="can-i-reuse-my-existing-private-key">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Can I reuse my existing private key? <a href="#can-i-reuse-my-existing-private-key" class="anchor"></a>
|
||||
Can I reuse my existing private key? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1283,7 +1283,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
|
||||
and wait a moment until a QR code is shown</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, <a href="https://get.delta.chat">install ArcaneChat</a></p>
|
||||
<p>On the second device, <a href="https://github.com/ArcaneChat">install ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, start ArcaneChat, select <strong>Add as Second Device</strong>, and scan the QR code from the old device</p>
|
||||
@@ -1386,7 +1386,7 @@ app stores (Google Play/iOS/Windows/macOS/Linux repositories) as native apps.</l
|
||||
<li>If you need a Web Client, because you are not allowed to install software on
|
||||
the computer you work with, you can use the portable Windows Desktop Client,
|
||||
or the AppImage for Linux. You can find them on
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1800,7 +1800,7 @@ mail program (like Thunderbird) next to your ArcaneChat app, and want your MUA
|
||||
to participate in chat conversations.</p>
|
||||
|
||||
<p>However, we recommend using the ArcaneChat Desktop Client; you can download it
|
||||
on <a href="https://get.delta.chat">get.delta.chat</a>. The option to watch the “Sent”
|
||||
on <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. The option to watch the “Sent”
|
||||
folder might go away in the future. It was introduced at a time where there was
|
||||
no ArcaneChat Desktop client available on all platforms.</p>
|
||||
|
||||
@@ -1838,22 +1838,38 @@ uses.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="how-can-i-delete-my-account">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
How can I delete my account? <a href="#how-can-i-delete-my-account" class="anchor"></a>
|
||||
How can I delete my account? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>As you use an e-mail account for ArcaneChat,
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/en/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over your e-mail account,
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to keep the account,
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.</p>
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="im-interested-in-the-technical-details-can-you-tell-me-more">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#cómo-puedo-asegurar-el-cifrado-de-extremo-a-extremo-y-la-eliminación-de-mensajes">¿Cómo puedo asegurar el cifrado de extremo a extremo y la eliminación de mensajes?</a></li>
|
||||
<li><a href="#pfs">¿Soporta ArcaneChat Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#es-el-cifrado-de-extremo-a-extremo-de-delta-chat-tan-seguro-como-el-de-signal">¿Es el cifrado de extremo a extremo de ArcaneChat tan seguro como el de Signal?</a></li>
|
||||
<li><a href="#puedo-reutilizar-mi-clave-privada-existente">¿Puedo reutilizar mi clave privada existente?</a></li>
|
||||
<li><a href="#importkey">¿Puedo reutilizar mi clave privada existente?</a></li>
|
||||
<li><a href="#no-puedo-importar-mi-clave-pgp-existente-en-delta-chat">No puedo importar mi clave PGP existente en ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">¿Se auditó ArcaneChat de forma independiente en busca de vulnerabilidades de seguridad?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#por-qué-puedo-elegir-monitorear-la-carpeta-enviados">¿Por qué puedo elegir monitorear la carpeta “Enviados”?</a></li>
|
||||
<li><a href="#por-qué-puedo-elegir-no-monitorear-la-carpeta-deltachat">¿Por qué puedo elegir no monitorear la carpeta DeltaChat?</a></li>
|
||||
<li><a href="#delta-chat-es-compatible-con-protonmail--tutanota--criptext">¿ArcaneChat es compatible con Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#cómo-puedo-eliminar-mi-cuenta">¿Cómo puedo eliminar mi cuenta?</a></li>
|
||||
<li><a href="#remove-account">¿Cómo puedo eliminar mi cuenta?</a></li>
|
||||
<li><a href="#estoy-interesado-en-los-detalles-técnicos-pueden-decirme-más">Estoy interesado en los detalles técnicos. ¿Pueden decirme más?</a></li>
|
||||
<li><a href="#cómo-se-financia-el-desarrollo-de-delta-chat">¿Cómo se financia el desarrollo de ArcaneChat?</a></li>
|
||||
</ul>
|
||||
@@ -1110,10 +1110,10 @@ past encrypted messages.</p>
|
||||
<p>In any case, ArcaneChat’s end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
|
||||
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
|
||||
|
||||
<h3 id="puedo-reutilizar-mi-clave-privada-existente">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
¿Puedo reutilizar mi clave privada existente? <a href="#puedo-reutilizar-mi-clave-privada-existente" class="anchor"></a>
|
||||
¿Puedo reutilizar mi clave privada existente? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1245,7 +1245,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
|
||||
and wait a moment until a QR code is shown</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>En el otro dispositivo, <a href="https://get.delta.chat">instala ArcaneChat</a></p>
|
||||
<p>En el otro dispositivo, <a href="https://github.com/ArcaneChat">instala ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, start ArcaneChat, select <strong>Add as Second Device</strong>, and scan the QR code from the old device</p>
|
||||
@@ -1348,7 +1348,7 @@ tiendas de aplicaciones (Google Play/iOS/Windows/macOS/Linux repositorios) como
|
||||
<li>Si necesitas un cliente web, porque no tienes permiso para instalar software en
|
||||
el ordenador con que trabajas, puedes utilizar el cliente portátil Windows Desktop Client
|
||||
o el AppImage para Linux. Puedes encontrarlos en
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1746,7 +1746,7 @@ programa de correo (como Thunderbird) a la vez que su aplicación ArcaneChat, y
|
||||
también participe en conversaciones de chat.</p>
|
||||
|
||||
<p>No obstante, recomendamos utilizar el cliente de escritorio ArcaneChat; puede descargarlo
|
||||
en <a href="https://get.delta.chat">get.delta.chat</a>. La opción de observar la carpeta “Enviados”
|
||||
en <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. La opción de observar la carpeta “Enviados”
|
||||
podría desaparecer en el futuro. Se introdujo en un momento en que no había
|
||||
cliente ArcaneChat Desktop disponible en todas las plataformas.</p>
|
||||
|
||||
@@ -1782,20 +1782,38 @@ uses.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="cómo-puedo-eliminar-mi-cuenta">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
¿Cómo puedo eliminar mi cuenta? <a href="#cómo-puedo-eliminar-mi-cuenta" class="anchor"></a>
|
||||
¿Cómo puedo eliminar mi cuenta? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>Al utilizar una cuenta de correo electrónico para ArcaneChat,
|
||||
La forma de eliminar tu cuenta depende de tu proveedor de correo electrónico.
|
||||
No tenemos ningún control sobre su cuenta de correo electrónico,
|
||||
Lamentablemente no podemos ayudarte con eso.</p>
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/es/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>Si quieres mantener la cuenta, pero desinstalar ArcaneChat, se recomienda salir de cualquier chat grupal antes de desinstalar ArcaneChat.</p>
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="estoy-interesado-en-los-detalles-técnicos-pueden-decirme-más">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
|
||||
<li><a href="#pfs">Does ArcaneChat support Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of ArcaneChat as safe as Signal?</a></li>
|
||||
<li><a href="#puis-je-ré-utiliser-ma-clé-privée-existante-">Puis-je ré-utiliser ma clé privée existante ?</a></li>
|
||||
<li><a href="#importkey">Puis-je ré-utiliser ma clé privée existante ?</a></li>
|
||||
<li><a href="#je-narrive-pas-à-importer-ma-clé-pgp-existante-dans-delta-chat">Je n’arrive pas à importer ma clé PGP existante dans ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">Est-ce qu’un audit indépendant des failles de sécurité a été réalisé sur ArcaneChat ?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#pourquoi-puis-je-choisir-de-regarder-le-dossier-envoyés">Pourquoi puis-je choisir de regarder le dossier “Envoyés”?</a></li>
|
||||
<li><a href="#pourquoi-puis-je-choisir-de-ne-pas-regarder-le-dossier-delta-chat">Pourquoi puis-je choisir de ne pas regarder le dossier ArcaneChat?</a></li>
|
||||
<li><a href="#delta-chat-est-il-compatible-avec-protonmail--tutanota--criptext-">ArcaneChat est-il compatible avec Protonmail / Tutanota / Criptext ?</a></li>
|
||||
<li><a href="#comment-supprimer-mon-compte-">Comment supprimer mon compte ?</a></li>
|
||||
<li><a href="#remove-account">Comment supprimer mon compte ?</a></li>
|
||||
<li><a href="#les-détails-techniques-mintéressent-pouvez-vous-men-dire-plus-">Les détails techniques m’intéressent. Pouvez-vous m’en dire plus ?</a></li>
|
||||
<li><a href="#comment-est-financé-le-développement-de-delta-chat-">Comment est financé le développement de ArcaneChat ?</a></li>
|
||||
</ul>
|
||||
@@ -1124,10 +1124,10 @@ past encrypted messages.</p>
|
||||
<p>In any case, ArcaneChat’s end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
|
||||
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
|
||||
|
||||
<h3 id="puis-je-ré-utiliser-ma-clé-privée-existante-">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Puis-je ré-utiliser ma clé privée existante ? <a href="#puis-je-ré-utiliser-ma-clé-privée-existante-" class="anchor"></a>
|
||||
Puis-je ré-utiliser ma clé privée existante ? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1231,7 +1231,7 @@ Le rapport complet <a href="https://delta.chat/assets/blog/2019-first-security-r
|
||||
<p>Sur le premier appareil, allez dans <strong>Paramètres → Ajouter un deuxième appareil</strong>, déverrouillez l’écran si nécessaire, et patientez un peu jusqu’à ce qu’un code QR s’affiche.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Sur le deuxième appareil, <a href="https://get.delta.chat">installez ArcaneChat</a>.</p>
|
||||
<p>Sur le deuxième appareil, <a href="https://github.com/ArcaneChat">installez ArcaneChat</a>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Sur le deuxième appareil, ouvrez ArcaneChat, sélectionnez <strong>Ajouter comme deuxième appareil</strong>, et scannez le code QR du premier appareil.</p>
|
||||
@@ -1329,7 +1329,7 @@ end-to-end encrypted messages with your communication partners.</li>
|
||||
<li>Il y a 2-3 façons d’introduire un client Web ArcaneChat, mais toutes représentent
|
||||
un travail conséquent. Pour l’instant, nous nous concentrons à sortir des versions stables dans tous les magasins d’applications (Google Play/iOS/Windows/macOS/centre de paquets Linux) en tant qu’applications natives.</li>
|
||||
<li>Si vous avez besoin d’un client Web parce que vous n’êtes pas autorisé à installer des logiciels sur l’ordinateur sur lequel vous travaillez, vous pouvez utiliser le Client Portable pour bureaux Windows ou l’AppImage pour Linux. Vous pouvez les trouver sur
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1710,7 +1710,7 @@ if you set a <a href="#signature">signature text</a>.</p>
|
||||
|
||||
<p>La seule raison de regarder le dossier Envoyés est si vous utilisez un autre programme de courriel (tel que Thunderbird) en parallèle de votre application ArcaneChat, et que vous voulez que votre client de messagerie participe aux discussions.</p>
|
||||
|
||||
<p>Cependant, nous recommandons d’utiliser le client de bureau ArcaneChat; vous pouvez le télécharger sur <a href="https://get.delta.chat">get.delta.chat</a>. L’option de regarder le dossier “Envoyés” pourrait disparaître dans le futur. Elle a été introduite à une époque où il n’y avait pas de client de bureau ArcaneChat disponible sur toutes les plateformes.</p>
|
||||
<p>Cependant, nous recommandons d’utiliser le client de bureau ArcaneChat; vous pouvez le télécharger sur <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. L’option de regarder le dossier “Envoyés” pourrait disparaître dans le futur. Elle a été introduite à une époque où il n’y avait pas de client de bureau ArcaneChat disponible sur toutes les plateformes.</p>
|
||||
|
||||
<h3 id="pourquoi-puis-je-choisir-de-ne-pas-regarder-le-dossier-delta-chat">
|
||||
|
||||
@@ -1744,18 +1744,38 @@ uses.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="comment-supprimer-mon-compte-">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
Comment supprimer mon compte ? <a href="#comment-supprimer-mon-compte-" class="anchor"></a>
|
||||
Comment supprimer mon compte ? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>Étant donné que vous utilisez ArcaneChat à travers un compte courriel, la façon dont vous pouvez supprimer votre compte dépend de votre fournisseur de courriel.
|
||||
Comme nous n’exerçons aucun contrôle sur votre compte courriel, nous ne sommes pas en mesure de vous aider à le supprimer.</p>
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/fr/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>Si vous souhaitez conserver votre compte mais désinstaller ArcaneChat, nous vous recommandons de quitter toutes les discussions de groupe avant de procéder à la désinstallation.</p>
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="les-détails-techniques-mintéressent-pouvez-vous-men-dire-plus-">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
|
||||
<li><a href="#pfs">Does ArcaneChat support Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of ArcaneChat as safe as Signal?</a></li>
|
||||
<li><a href="#can-i-reuse-my-existing-private-key">Can I reuse my existing private key?</a></li>
|
||||
<li><a href="#importkey">Can I reuse my existing private key?</a></li>
|
||||
<li><a href="#i-cant-import-my-existing-pgp-key-into-delta-chat">I can’t import my existing PGP key into ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">Was ArcaneChat independently audited for security vulnerabilities?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#why-can-i-choose-to-watch-the-sent-folder">Why can I choose to watch the “Sent” folder?</a></li>
|
||||
<li><a href="#why-can-i-choose-not-to-watch-the-deltachat-folder">Why can I choose not to watch the DeltaChat folder?</a></li>
|
||||
<li><a href="#is-delta-chat-compatible-with-protonmail--tutanota--criptext">Is ArcaneChat compatible with Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#how-can-i-delete-my-account">How can I delete my account?</a></li>
|
||||
<li><a href="#remove-account">How can I delete my account?</a></li>
|
||||
<li><a href="#im-interested-in-the-technical-details-can-you-tell-me-more">I’m interested in the technical details. Can you tell me more?</a></li>
|
||||
<li><a href="#how-are-delta-chat-developments-funded">How are ArcaneChat developments funded?</a></li>
|
||||
</ul>
|
||||
@@ -1150,10 +1150,10 @@ past encrypted messages.</p>
|
||||
<p>In any case, ArcaneChat’s end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
|
||||
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
|
||||
|
||||
<h3 id="can-i-reuse-my-existing-private-key">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Can I reuse my existing private key? <a href="#can-i-reuse-my-existing-private-key" class="anchor"></a>
|
||||
Can I reuse my existing private key? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1283,7 +1283,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
|
||||
and wait a moment until a QR code is shown</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, <a href="https://get.delta.chat">install ArcaneChat</a></p>
|
||||
<p>On the second device, <a href="https://github.com/ArcaneChat">install ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, start ArcaneChat, select <strong>Add as Second Device</strong>, and scan the QR code from the old device</p>
|
||||
@@ -1386,7 +1386,7 @@ app stores (Google Play/iOS/Windows/macOS/Linux repositories) as native apps.</l
|
||||
<li>If you need a Web Client, because you are not allowed to install software on
|
||||
the computer you work with, you can use the portable Windows Desktop Client,
|
||||
or the AppImage for Linux. You can find them on
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1800,7 +1800,7 @@ mail program (like Thunderbird) next to your ArcaneChat app, and want your MUA
|
||||
to participate in chat conversations.</p>
|
||||
|
||||
<p>However, we recommend using the ArcaneChat Desktop Client; you can download it
|
||||
on <a href="https://get.delta.chat">get.delta.chat</a>. The option to watch the “Sent”
|
||||
on <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. The option to watch the “Sent”
|
||||
folder might go away in the future. It was introduced at a time where there was
|
||||
no ArcaneChat Desktop client available on all platforms.</p>
|
||||
|
||||
@@ -1838,22 +1838,38 @@ uses.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="how-can-i-delete-my-account">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
How can I delete my account? <a href="#how-can-i-delete-my-account" class="anchor"></a>
|
||||
How can I delete my account? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>As you use an e-mail account for ArcaneChat,
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/id/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over your e-mail account,
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to keep the account,
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.</p>
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="im-interested-in-the-technical-details-can-you-tell-me-more">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#come-posso-garantire-la-crittografia-e-leliminazione-end-to-end-dei-messaggi">Come posso garantire la crittografia e l’eliminazione end-to-end dei messaggi?</a></li>
|
||||
<li><a href="#pfs">ArcaneChat supporta Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#la-crittografia-end-to-end-di-delta-chat-è-sicura-quanto-quella-di-signal">La crittografia end-to-end di ArcaneChat è sicura quanto quella di Signal?</a></li>
|
||||
<li><a href="#posso-riutilizzare-la-mia-chiave-privata-esistente">Posso riutilizzare la mia chiave privata esistente?</a></li>
|
||||
<li><a href="#importkey">Posso riutilizzare la mia chiave privata esistente?</a></li>
|
||||
<li><a href="#non-riesco-a-importare-la-mia-chiave-pgp-esistente-in-delta-chat">Non riesco a importare la mia chiave PGP esistente in ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">ArcaneChat è stata verificata in modo indipendente per le vulnerabilità di sicurezza?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#perché-posso-scegliere-di-guardare-la-cartella-inviata">Perché posso scegliere di guardare la cartella “Inviata”?</a></li>
|
||||
<li><a href="#perché-posso-scegliere-di-non-guardare-la-cartella-deltachat">Perché posso scegliere di non guardare la cartella DeltaChat?</a></li>
|
||||
<li><a href="#delta-chat-è-compatibile-con-protonmail--tutanota--criptext">ArcaneChat è compatibile con Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#come-posso-eliminare-il-mio-profilo">Come posso eliminare il mio profilo?</a></li>
|
||||
<li><a href="#remove-account">Come posso eliminare il mio profilo?</a></li>
|
||||
<li><a href="#sono-interessato-ai-dettagli-tecnici-mi-puoi-dire-di-più">Sono interessato ai dettagli tecnici. Mi puoi dire di più?</a></li>
|
||||
<li><a href="#come-viene-finanziato-lo-sviluppo-di-delta-chat">Come viene finanziato lo sviluppo di ArcaneChat?</a></li>
|
||||
</ul>
|
||||
@@ -1137,10 +1137,10 @@ messaggi crittografati precedenti.</p>
|
||||
<p>In ogni caso, la crittografia end-to-end di ArcaneChat utilizza un <a href="#openpgp-secure">sottoinsieme sicuro di OpenPGP</a>
|
||||
che è stato <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">controllato in modo indipendente sulla sicurezza</a>.</p>
|
||||
|
||||
<h3 id="posso-riutilizzare-la-mia-chiave-privata-esistente">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Posso riutilizzare la mia chiave privata esistente? <a href="#posso-riutilizzare-la-mia-chiave-privata-esistente" class="anchor"></a>
|
||||
Posso riutilizzare la mia chiave privata esistente? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1270,7 +1270,7 @@ Puoi leggere il <a href="https://delta.chat/assets/blog/2019-first-security-revi
|
||||
e attendere un attimo fino a quando non viene visualizzato un codice QR</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Sul secondo dispositivo, <a href="https://get.delta.chat">installare ArcaneChat</a></p>
|
||||
<p>Sul secondo dispositivo, <a href="https://github.com/ArcaneChat">installare ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Sul secondo dispositivo, avviare ArcaneChat, selezionare <strong>Aggiungi Come Secondo Dispositivo</strong> e scansionare il codice QR del vecchio dispositivo.</p>
|
||||
@@ -1370,7 +1370,7 @@ gli app store (repository Google Play/iOS/Windows/macOS/Linux) come app native.<
|
||||
<li>Se hai bisogno di un Client Web, perché non sei autorizzato a installare software sul
|
||||
computer con cui lavori, puoi utilizzare il client Desktop Windows Portatile,
|
||||
o l’AppImage per Linux. Le trovi su
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1762,7 +1762,7 @@ programma di posta (come Thunderbird) accanto alla tua app ArcaneChat e desideri
|
||||
per partecipare a conversazioni in chat.</p>
|
||||
|
||||
<p>Tuttavia, consigliamo di utilizzare il client desktop ArcaneChat; puoi scaricarlo
|
||||
su <a href="https://get.delta.chat">get.delta.chat</a>. L’opzione per guardare la cartella
|
||||
su <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. L’opzione per guardare la cartella
|
||||
“Inviata” potrebbe scomparire in futuro. È stato introdotto in un momento in cui non c’era
|
||||
nessun client ArcaneChat Desktop disponibile su tutte le piattaforme.</p>
|
||||
|
||||
@@ -1800,22 +1800,38 @@ che usa.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">App di posta elettronica abilitata per Autocrypt</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="come-posso-eliminare-il-mio-profilo">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
Come posso eliminare il mio profilo? <a href="#come-posso-eliminare-il-mio-profilo" class="anchor"></a>
|
||||
Come posso eliminare il mio profilo? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>Poiché utilizzi un profilo e-mail per ArcaneChat,
|
||||
il modo in cui puoi eliminare il tuo profilo dipende dal tuo provider e-mail.
|
||||
Non abbiamo alcun controllo sul tuo profilo e-mail,
|
||||
quindi purtroppo non possiamo aiutarti in questo.</p>
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/it/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>Se vuoi mantenere il profilo,
|
||||
ma disinstallare ArcaneChat,
|
||||
si consiglia di uscire da qualsiasi chat di gruppo prima di disinstallare ArcaneChat.</p>
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="sono-interessato-ai-dettagli-tecnici-mi-puoi-dire-di-più">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
|
||||
<li><a href="#pfs">Does ArcaneChat support Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of ArcaneChat as safe as Signal?</a></li>
|
||||
<li><a href="#kan-ik-mijn-bestaande-privésleutel-hergebruiken">Kan ik mijn bestaande privésleutel hergebruiken?</a></li>
|
||||
<li><a href="#importkey">Kan ik mijn bestaande privésleutel hergebruiken?</a></li>
|
||||
<li><a href="#ik-kan-mijn-bestaande-pgp-sleutel-niet-importeren">Ik kan mijn bestaande PGP-sleutel niet importeren</a></li>
|
||||
<li><a href="#security-audits">Heeft ArcaneChat ooit onafhankelijke beveiligingscontroles ondergaan?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#waarom-kan-ik-kiezen-om-de-map-verzonden-te-controleren">Waarom kan ik kiezen om de map ‘Verzonden’ te controleren?</a></li>
|
||||
<li><a href="#waarom-kan-ik-kiezen-om-de-deltachat-map-te-negeren">Waarom kan ik kiezen om de DeltaChat-map te negeren?</a></li>
|
||||
<li><a href="#is-delta-chat-compatibel-met-protonmailtutanotacriptext">Is ArcaneChat compatibel met Protonmail/Tutanota/Criptext?</a></li>
|
||||
<li><a href="#hoe-kan-ik-mijn-account-verwijderen">Hoe kan ik mijn account verwijderen?</a></li>
|
||||
<li><a href="#remove-account">Hoe kan ik mijn account verwijderen?</a></li>
|
||||
<li><a href="#ik-wil-graag-meer-weten-over-de-gebruikte-technieken-waar-kan-ik-meer-informatie-vinden">Ik wil graag meer weten over de gebruikte technieken. Waar kan ik meer informatie vinden?</a></li>
|
||||
<li><a href="#hoe-wordt-de-ontwikkeling-van-delta-chat-gefinancierd">Hoe wordt de ontwikkeling van ArcaneChat gefinancierd?</a></li>
|
||||
</ul>
|
||||
@@ -1143,10 +1143,10 @@ past encrypted messages.</p>
|
||||
<p>In any case, ArcaneChat’s end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
|
||||
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
|
||||
|
||||
<h3 id="kan-ik-mijn-bestaande-privésleutel-hergebruiken">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Kan ik mijn bestaande privésleutel hergebruiken? <a href="#kan-ik-mijn-bestaande-privésleutel-hergebruiken" class="anchor"></a>
|
||||
Kan ik mijn bestaande privésleutel hergebruiken? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1275,7 +1275,7 @@ Het <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">voll
|
||||
en wacht totdat de QR-code in beeld verschijnt.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="https://get.delta.chat">Installeer ArcaneChat</a> op het tweede apparaat.</p>
|
||||
<p><a href="https://github.com/ArcaneChat">Installeer ArcaneChat</a> op het tweede apparaat.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Start ArcaneChat op het tweede apparaat, kies <strong>Toevoegen als tweede apparaat</strong> en scan de QR-code met het eerste apparaat.</p>
|
||||
@@ -1377,7 +1377,7 @@ inspanningen. Momenteel ligt voor ons de focus op stabiele uitgaven maken voor a
|
||||
<li>Als je een webclient nodig hebt omdat je geen software mag installeren op
|
||||
je computer, dan kun je de meeneembare (portable) versie gebruiken van de Windows-client,
|
||||
of de AppImage van de Linux-client. Deze kun je downloaden op
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1785,7 +1785,7 @@ en eenmaal middels imap naar de map ‘Verzonden’).</p>
|
||||
ArcaneChat-app gebruikt en wilt dat je andere apparaten deel uitmaken van gesprekken.</p>
|
||||
|
||||
<p>Wij raden echter aan om in dat geval de ArcaneChat-app te installeren op je computer:
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>. De optie om de map ‘Verzonden’ te controleren
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. De optie om de map ‘Verzonden’ te controleren
|
||||
wordt in de toekomst mogelijk verwijderd. De functie deed zijn intrede toen er nog niet
|
||||
op alle platformen een ArcaneChat-client beschikbaar was.</p>
|
||||
|
||||
@@ -1823,22 +1823,38 @@ uses.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="hoe-kan-ik-mijn-account-verwijderen">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
Hoe kan ik mijn account verwijderen? <a href="#hoe-kan-ik-mijn-account-verwijderen" class="anchor"></a>
|
||||
Hoe kan ik mijn account verwijderen? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>ArcaneChat maakt gebruik van je e-mailaccount,
|
||||
dus de verwijderprocedure is afhankelijk van je provider.
|
||||
We hebben geen zeggenschap over je account,
|
||||
dus helaas kunnen we je daar niet bij helpen.</p>
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/nl/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>Als je je account wilt behouden maar ArcaneChat
|
||||
niet wilt verwijderen, verlaat dan groeps-
|
||||
gesprekken voordat je ArcaneChat verwijdert.</p>
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="ik-wil-graag-meer-weten-over-de-gebruikte-technieken-waar-kan-ik-meer-informatie-vinden">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#jak-mogę-zapewnić-kompleksowe-szyfrowanie-i-usuwanie-wiadomości">Jak mogę zapewnić kompleksowe szyfrowanie i usuwanie wiadomości?</a></li>
|
||||
<li><a href="#pfs">Czy ArcaneChat obsługuje funkcję Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#czy-szyfrowanie-end-to-end-delta-chat-jest-tak-samo-bezpieczne-jak-signal">Czy szyfrowanie end-to-end ArcaneChat jest tak samo bezpieczne jak Signal?</a></li>
|
||||
<li><a href="#czy-mogę-ponownie-wykorzystać-mój-istniejący-klucz-prywatny">Czy mogę ponownie wykorzystać mój istniejący klucz prywatny?</a></li>
|
||||
<li><a href="#importkey">Czy mogę ponownie wykorzystać mój istniejący klucz prywatny?</a></li>
|
||||
<li><a href="#nie-mogę-zaimportować-istniejącego-klucza-pgp-do-delta-chat">Nie mogę zaimportować istniejącego klucza PGP do ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">Czy ArcaneChat był niezależnie kontrolowany pod kątem luk w zabezpieczeniach?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#po-co-mam-wybrać-opcję-oglądania-folderu-wysłane">Po co mam wybrać opcję oglądania folderu „Wysłane”?</a></li>
|
||||
<li><a href="#dlaczego-mogę-nie-widzieć-folderu-deltachat">Dlaczego mogę nie widzieć folderu DeltaChat?</a></li>
|
||||
<li><a href="#czy-delta-chat-jest-kompatybilny-z-protonmail--tutanota--criptext">Czy ArcaneChat jest kompatybilny z Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#jak-mogę-usunąć-swoje-konto">Jak mogę usunąć swoje konto?</a></li>
|
||||
<li><a href="#remove-account">Jak mogę usunąć swoje konto?</a></li>
|
||||
<li><a href="#interesują-mnie-szczegóły-techniczne-możesz-powiedzieć-mi-coś-więcej">Interesują mnie szczegóły techniczne. Możesz powiedzieć mi coś więcej?</a></li>
|
||||
<li><a href="#w-jaki-sposób-finansowany-jest-rozwój-delta-chat">W jaki sposób finansowany jest rozwój ArcaneChat?</a></li>
|
||||
</ul>
|
||||
@@ -824,10 +824,10 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
|
||||
|
||||
<p>W każdym razie szyfrowanie end-to-end ArcaneChat wykorzystuje <a href="#openpgp-secure">bezpieczny podzbiór OpenPGP</a>, który został poddany <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">niezależnemu audytowi bezpieczeństwa</a>.</p>
|
||||
|
||||
<h3 id="czy-mogę-ponownie-wykorzystać-mój-istniejący-klucz-prywatny">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Czy mogę ponownie wykorzystać mój istniejący klucz prywatny? <a href="#czy-mogę-ponownie-wykorzystać-mój-istniejący-klucz-prywatny" class="anchor"></a>
|
||||
Czy mogę ponownie wykorzystać mój istniejący klucz prywatny? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -914,7 +914,7 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
|
||||
<p>Na pierwszym urządzeniu przejdź do <strong>Ustawienia → Dodaj kolejne urządzenie</strong>, w razie potrzeby odblokuj ekran i poczekaj chwilę, aż pojawi się kod QR</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Na drugim urządzeniu <a href="https://get.delta.chat">zainstaluj ArcaneChat</a></p>
|
||||
<p>Na drugim urządzeniu <a href="https://github.com/ArcaneChat">zainstaluj ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Na drugim urządzeniu uruchom ArcaneChat, wybierz <strong>Dodaj jako kolejne urządzenie</strong> i zeskanuj kod QR z pierwszego urządzenia</p>
|
||||
@@ -993,7 +993,7 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
|
||||
<ul>
|
||||
<li>Nie ma bezpośrednich planów, ale wstępne przemyślenia.</li>
|
||||
<li>Istnieją 2-3 możliwości wprowadzenia klienta Web ArcaneChat, ale wszystkie wymagają znaczącej pracy. Na razie skupiamy się na udostępnianiu stabilnych wersji we wszystkich sklepach z aplikacjami (repozytoria Google Play/iOS/Windows/macOS/Linux) jako aplikacji natywnych.</li>
|
||||
<li>Jeśli potrzebujesz klienta Web, ponieważ nie możesz instalować oprogramowania na komputerze, na którym pracujesz, możesz użyć przenośnego klienta Windows Desktop lub AppImage dla Linuxa. Możesz je znaleźć na <a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<li>Jeśli potrzebujesz klienta Web, ponieważ nie możesz instalować oprogramowania na komputerze, na którym pracujesz, możesz użyć przenośnego klienta Windows Desktop lub AppImage dla Linuxa. Możesz je znaleźć na <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1299,7 +1299,7 @@ jeśli chcesz sprawdzić, czy Twoje poświadczenia są przetwarzane w bezpieczny
|
||||
|
||||
<p>Jedynym powodem, dla którego ktoś chce oglądać folder Wysłane, jest to, że używa innego programu pocztowego (takiego jak Thunderbird) razem z aplikacją ArcaneChat i chce, aby jego program pocztowy „uczestniczył” w rozmowach na czacie.</p>
|
||||
|
||||
<p>Jednak zalecamy używanie klienta ArcaneChat Desktop; możesz go pobrać z <a href="https://get.delta.chat">get.delta.chat</a>. Opcja oglądania folderu „Wysłane” może w przyszłości zniknąć. Została wprowadzona w czasie, gdy na żadnej platformie nie był dostępny klient ArcaneChat Desktop.</p>
|
||||
<p>Jednak zalecamy używanie klienta ArcaneChat Desktop; możesz go pobrać z <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. Opcja oglądania folderu „Wysłane” może w przyszłości zniknąć. Została wprowadzona w czasie, gdy na żadnej platformie nie był dostępny klient ArcaneChat Desktop.</p>
|
||||
|
||||
<h3 id="dlaczego-mogę-nie-widzieć-folderu-deltachat">
|
||||
|
||||
@@ -1326,18 +1326,38 @@ jeśli chcesz sprawdzić, czy Twoje poświadczenia są przetwarzane w bezpieczny
|
||||
<li>ArcaneChat może zaszyfrować metodą end-to-end za pośrednictwem dowolnego dostawcy poczty e-mail z dowolną <a href="https://autocrypt.org/dev-status.html">aplikacją e-mail z włączoną funkcją Autocrypt</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="jak-mogę-usunąć-swoje-konto">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
Jak mogę usunąć swoje konto? <a href="#jak-mogę-usunąć-swoje-konto" class="anchor"></a>
|
||||
Jak mogę usunąć swoje konto? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>Gdy korzystasz z konta e-mail w ArcaneChat, sposób usunięcia konta zależy od dostawcy poczty e-mail.
|
||||
Nie mamy żadnej kontroli nad twoim kontem e-mail, więc niestety nie możemy ci w tym pomóc.</p>
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/pl/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>Jeśli chcesz zachować konto, ale odinstalować ArcaneChat, zaleca się opuszczenie każdego czatu grupowego przed odinstalowaniem ArcaneChat.</p>
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="interesują-mnie-szczegóły-techniczne-możesz-powiedzieć-mi-coś-więcej">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
|
||||
<li><a href="#pfs">Does ArcaneChat support Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of ArcaneChat as safe as Signal?</a></li>
|
||||
<li><a href="#posso-reutilizar-minha-chave-privada-existente">Posso reutilizar minha chave privada existente?</a></li>
|
||||
<li><a href="#importkey">Posso reutilizar minha chave privada existente?</a></li>
|
||||
<li><a href="#eu-não-posso-importar-minha-chave-pgp-existente-para-o-delta-chat">Eu não posso importar minha chave PGP existente para o ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">Was ArcaneChat independently audited for security vulnerabilities?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#por-que-eu-posso-escolher-assistir-à-pasta-enviado">Por que eu posso escolher assistir à pasta “Enviado”?</a></li>
|
||||
<li><a href="#por-que-eu-posso-escolher-não-observar-a-pasta-deltachat">Por que eu posso escolher não observar a pasta DeltaChat?</a></li>
|
||||
<li><a href="#o-delta-chat-é-compatível-com-protonmail--tutanota--criptext">O ArcaneChat é compatível com Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#how-can-i-delete-my-account">How can I delete my account?</a></li>
|
||||
<li><a href="#remove-account">How can I delete my account?</a></li>
|
||||
<li><a href="#estou-interessado-nos-detalhes-técnicos-pode-me-dizer-mais">Estou interessado nos detalhes técnicos. Pode me dizer mais?</a></li>
|
||||
<li><a href="#como-são-os-desenvolvimentos-do-delta-chat-financiados">Como são os desenvolvimentos do ArcaneChat financiados?</a></li>
|
||||
</ul>
|
||||
@@ -1144,10 +1144,10 @@ past encrypted messages.</p>
|
||||
<p>In any case, ArcaneChat’s end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
|
||||
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
|
||||
|
||||
<h3 id="posso-reutilizar-minha-chave-privada-existente">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Posso reutilizar minha chave privada existente? <a href="#posso-reutilizar-minha-chave-privada-existente" class="anchor"></a>
|
||||
Posso reutilizar minha chave privada existente? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1277,7 +1277,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
|
||||
and wait a moment until a QR code is shown</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, <a href="https://get.delta.chat">install ArcaneChat</a></p>
|
||||
<p>On the second device, <a href="https://github.com/ArcaneChat">install ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, start ArcaneChat, select <strong>Add as Second Device</strong>, and scan the QR code from the old device</p>
|
||||
@@ -1380,7 +1380,7 @@ app stores (Google Play/iOS/Windows/macOS/Linux repositórios) como aplicativos
|
||||
<li>Se você precisa de um Cliente Web, porque não está autorizado a instalar software em
|
||||
o computador com o qual você trabalha, você pode usar o Windows Desktop Client portátil,
|
||||
ou o AppImage para Linux. Você pode encontrá-los em
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1786,7 +1786,7 @@ programa de correio (como Thunderbird) ao lado de seu aplicativo ArcaneChat, e q
|
||||
para participar numa conversa de chat.</p>
|
||||
|
||||
<p>No entanto, recomendamos o uso do ArcaneChat cliente Desktop; você pode baixá-lo
|
||||
no <a href="https://get.delta.chat">get.delta.chat</a>. A opção de observar o “Enviado
|
||||
no <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. A opção de observar o “Enviado
|
||||
pasta pode ir embora no futuro. Ela foi introduzida num momento em que havia
|
||||
nenhum cliente ArcaneChat no desktop disponível em todas as plataformas.</p>
|
||||
|
||||
@@ -1824,22 +1824,38 @@ uses.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="how-can-i-delete-my-account">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
How can I delete my account? <a href="#how-can-i-delete-my-account" class="anchor"></a>
|
||||
How can I delete my account? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>As you use an e-mail account for ArcaneChat,
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/pt/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over your e-mail account,
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to keep the account,
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.</p>
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="estou-interessado-nos-detalhes-técnicos-pode-me-dizer-mais">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#как-я-могу-обеспечить-сквозное-шифрование-и-удаление-сообщений">Как я могу обеспечить сквозное шифрование и удаление сообщений?</a></li>
|
||||
<li><a href="#pfs">Поддерживает ли ArcaneChat Совершенную Прямую Секретность?</a></li>
|
||||
<li><a href="#является-ли-сквозное-шифрование-delta-chat-таким-же-безопасным-как-signal">Является ли сквозное шифрование ArcaneChat таким же безопасным как Signal?</a></li>
|
||||
<li><a href="#можно-ли-повторно-использовать-существующий-секретный-ключ">Можно ли повторно использовать существующий секретный ключ?</a></li>
|
||||
<li><a href="#importkey">Можно ли повторно использовать существующий секретный ключ?</a></li>
|
||||
<li><a href="#я-не-могу-импортировать-мой-существующий-ключ-pgp-в-delta-chat">Я не могу импортировать мой существующий ключ PGP в ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">Проходил ли ArcaneChat независимую проверку на наличие уязвимостей безопасности?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#для-чего-нужен-параметр-следить-за-папкой-отправлено">Для чего нужен параметр “следить за папкой Отправлено”?</a></li>
|
||||
<li><a href="#почему-я-могу-отключить-следить-за-папкой-delta-chat">Почему я могу отключить “следить за папкой ArcaneChat”?</a></li>
|
||||
<li><a href="#совместим-ли-delta-chat-с-protonmail--tutanota--criptext">Совместим ли ArcaneChat с Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#как-я-могу-удалить-аккаунт">Как я могу удалить аккаунт?</a></li>
|
||||
<li><a href="#remove-account">Как я могу удалить аккаунт?</a></li>
|
||||
<li><a href="#меня-интересуют-технические-детали-можете-рассказать-больше">Меня интересуют технические детали. Можете рассказать больше?</a></li>
|
||||
<li><a href="#как-финансируются-разработки-delta-chat">Как финансируются разработки ArcaneChat?</a></li>
|
||||
</ul>
|
||||
@@ -543,12 +543,12 @@
|
||||
|
||||
</h3>
|
||||
|
||||
<p>Yes, ArcaneChat automatically uses Push Notifications for <a href="https://delta.chat/chatmail">chatmail</a> profiles.
|
||||
And no, there is no alternative on Apple’s phones to achieve instant message delivery
|
||||
because Apple devices do not allow ArcaneChat to fetch data in the background.
|
||||
Push notifications are automatically activated for iOS users because
|
||||
<a href="#privacy-notifications">ArcaneChat’s privacy-preserving Push Notification system</a>
|
||||
does not expose data to Apple that it doesn’t already have.</p>
|
||||
<p>Да, ArcaneChat автоматически использует Push-уведомления для профилей <a href="https://delta.chat/chatmail">chatmail</a>.
|
||||
И нет, на устройствах Apple нет альтернативы для обеспечения мгновенной доставки сообщений,
|
||||
поскольку устройства Apple не позволяют ArcaneChat запрашивать данные в фоновом режиме.
|
||||
Push-уведомления автоматически активируются для пользователей iOS, потому что
|
||||
<a href="#privacy-notifications">Система Push-уведомлений ArcaneChat, обеспечивающая конфиденциальность</a>
|
||||
не передает данные Apple, которых у нее еще нет.</p>
|
||||
|
||||
<h3 id="android-push">
|
||||
|
||||
@@ -1150,10 +1150,10 @@ Signal и большинство других мессенджеров, подд
|
||||
<p>В любом случае, сквозное шифрование ArcaneChat использует <a href="#openpgp-secure">безопасное подмножество OpenPGP</a>
|
||||
которое прошло <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">независимую проверку безопасности</a>.</p>
|
||||
|
||||
<h3 id="можно-ли-повторно-использовать-существующий-секретный-ключ">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Можно ли повторно использовать существующий секретный ключ? <a href="#можно-ли-повторно-использовать-существующий-секретный-ключ" class="anchor"></a>
|
||||
Можно ли повторно использовать существующий секретный ключ? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1204,11 +1204,11 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<p>2024 March, we received a deep security analysis from the Applied Cryptography
|
||||
research group at ETH Zuerich and addressed all raised issues.
|
||||
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
|
||||
<p>В марте 2024 года мы получили подробный анализ безопасности от исследовательской группы
|
||||
Applied Cryptography в ETH Цюрихе и устранили все выявленные проблемы.
|
||||
Читайте наш пост в блоге о <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> для более подробной информации и
|
||||
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of ArcaneChat</a>
|
||||
research paper published afterwards.</p>
|
||||
научной статьи, опубликованной позже.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>В Апреле 2023 г. мы исправили проблемы безопасности и конфиденциальности в веб-интерфейсе,
|
||||
@@ -1279,7 +1279,7 @@ Chat Rust <a href="https://github.com/deltachat/deltachat-core-rust/">ядро</
|
||||
и подождите немного, пока не появится QR-код</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>На втором устройстве, <a href="https://get.delta.chat">установите ArcaneChat</a></p>
|
||||
<p>На втором устройстве, <a href="https://github.com/ArcaneChat">установите ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>На втором устройстве запустите ArcaneChat, выберите <strong>Добавить как второе устройство</strong> и отсканируйте QR-код со старого устройства</p>
|
||||
@@ -1378,7 +1378,7 @@ PIN-код разблокировки экрана, графический кл
|
||||
<li>Если вам нужен веб-клиент, поскольку вы не можете устанавливать программное обеспечение на
|
||||
компьютере, на которым вы работаете, вы можете использовать портативный настольный клиент Windows
|
||||
или AppImage для Linux. Вы можете найти их на
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1767,7 +1767,7 @@ PIN-код разблокировки экрана, графический кл
|
||||
почтовую программу (например, Thunderbird) вместе с приложением ArcaneChat.</p>
|
||||
|
||||
<p>Однако мы рекомендуем использовать настольный клиент ArcaneChat; вы можете скачать его
|
||||
на <a href="https://get.delta.chat">get.delta.chat</a>. Опция для слежения за папкой “Отправлено”
|
||||
на <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. Опция для слежения за папкой “Отправлено”
|
||||
может быть убрана в будущем. Эта функция была представлена в то время, когда не было
|
||||
настольного клиента ArcaneChat доступного на всех платформах.</p>
|
||||
|
||||
@@ -1803,22 +1803,38 @@ Protonmail, Tutanota или Criptext. Однако, эти сообщения н
|
||||
<a href="https://autocrypt.org/dev-status.html">Приложением эл.почты с поддержкой Autocrypt</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="как-я-могу-удалить-аккаунт">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
Как я могу удалить аккаунт? <a href="#как-я-могу-удалить-аккаунт" class="anchor"></a>
|
||||
Как я могу удалить аккаунт? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>Поскольку вы используете учётную запись эл.почты для ArcaneChat,
|
||||
способ удаления своей учетной записи зависит от вашего провайдера эл.почты.
|
||||
Мы не имеем никакого контроля над вашей учётной записью эл.почты,
|
||||
поэтому, к сожалению, мы не можем вам с этим помочь.</p>
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/ru/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>Если вы хотите сохранить учётную запись,
|
||||
но удаляете ArcaneChat,
|
||||
перед удалением ArcaneChat рекомендуется выйти из группового чата.</p>
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="меня-интересуют-технические-детали-можете-рассказать-больше">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
|
||||
<li><a href="#pfs">Does ArcaneChat support Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of ArcaneChat as safe as Signal?</a></li>
|
||||
<li><a href="#môžem-znova-použiť-svoj-existujúci-súkromný-kľúč">Môžem znova použiť svoj existujúci súkromný kľúč?</a></li>
|
||||
<li><a href="#importkey">Môžem znova použiť svoj existujúci súkromný kľúč?</a></li>
|
||||
<li><a href="#nemôžem-importovať-môj-existujúci-pgp-kľúč-do-delta-chat">Nemôžem importovať môj existujúci PGP kľúč do ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">Was ArcaneChat independently audited for security vulnerabilities?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#prečo-si-môžem-vybrať-sledovanie-priečinka-odoslané">Prečo si môžem vybrať sledovanie priečinka „Odoslané“?</a></li>
|
||||
<li><a href="#prečo-sa-môžem-rozhodnúť-nesledovať-priečinok-deltachat">Prečo sa môžem rozhodnúť nesledovať priečinok DeltaChat?</a></li>
|
||||
<li><a href="#je-delta-chat-kompatibilný-s-protonmail--tutanota--criptext">Je ArcaneChat kompatibilný s Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#how-can-i-delete-my-account">How can I delete my account?</a></li>
|
||||
<li><a href="#remove-account">How can I delete my account?</a></li>
|
||||
<li><a href="#zaujímajú-ma-technické-detaily-môžete-mi-povedať-viac">Zaujímajú ma technické detaily. Môžete mi povedať viac?</a></li>
|
||||
<li><a href="#ako-sa-financuje-vývoj-delta-chat">Ako sa financuje vývoj ArcaneChat?</a></li>
|
||||
</ul>
|
||||
@@ -1150,10 +1150,10 @@ past encrypted messages.</p>
|
||||
<p>In any case, ArcaneChat’s end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
|
||||
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
|
||||
|
||||
<h3 id="môžem-znova-použiť-svoj-existujúci-súkromný-kľúč">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Môžem znova použiť svoj existujúci súkromný kľúč? <a href="#môžem-znova-použiť-svoj-existujúci-súkromný-kľúč" class="anchor"></a>
|
||||
Môžem znova použiť svoj existujúci súkromný kľúč? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1283,7 +1283,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
|
||||
and wait a moment until a QR code is shown</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, <a href="https://get.delta.chat">install ArcaneChat</a></p>
|
||||
<p>On the second device, <a href="https://github.com/ArcaneChat">install ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, start ArcaneChat, select <strong>Add as Second Device</strong>, and scan the QR code from the old device</p>
|
||||
@@ -1386,7 +1386,7 @@ obchodov s aplikáciami (repozitáre Google Play/iOS/Windows/macOS/Linux) ako na
|
||||
<li>Ak potrebujete webového klienta, pretože nemáte povolené inštalovať softvér
|
||||
na počítač, s ktorým pracujete, môžete použiť prenosného klienta Windows Desktop Client,
|
||||
alebo AppImage pre Linux. Nájdete ich na
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1796,7 +1796,7 @@ poštový program (napríklad Thunderbird) vedľa vašej aplikácie ArcaneChat a
|
||||
aby sa zúčastňoval chatových konverzácií.</p>
|
||||
|
||||
<p>Odporúčame však použiť ArcaneChat Desktop Client; môžete si ho stiahnuť
|
||||
na <a href="https://get.delta.chat">get.delta.chat</a>. Možnosť sledovať „Odoslané“
|
||||
na <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. Možnosť sledovať „Odoslané“
|
||||
priečinok môže v budúcnosti zmiznúť. Bolo to zavedené v čase, kedy nebol
|
||||
ArcaneChat Desktop dostupný na všetkých platformách.</p>
|
||||
|
||||
@@ -1834,22 +1834,38 @@ uses.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="how-can-i-delete-my-account">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
How can I delete my account? <a href="#how-can-i-delete-my-account" class="anchor"></a>
|
||||
How can I delete my account? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>As you use an e-mail account for ArcaneChat,
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/sk/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over your e-mail account,
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to keep the account,
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.</p>
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="zaujímajú-ma-technické-detaily-môžete-mi-povedať-viac">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
|
||||
<li><a href="#pfs">Does ArcaneChat support Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of ArcaneChat as safe as Signal?</a></li>
|
||||
<li><a href="#a-mund-të-ripërdor-kyçin-tim-ekzistues-privat">A mund të ripërdor kyçin tim ekzistues privat?</a></li>
|
||||
<li><a href="#importkey">A mund të ripërdor kyçin tim ekzistues privat?</a></li>
|
||||
<li><a href="#seksportoj-dot-kyçet-e-mi-ekzistues-pgp-në-delta-chat">S’eksportoj dot kyçet e mi ekzistues PGP në ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">A është bërë auditim i pavarur i ArcaneChat-it për cenueshmëri sigurie?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#pse-mund-të-zgjedh-të-vëzhgoj-dosjen-të-dërguar">Pse mund të zgjedh të vëzhgoj dosjen “Të dërguar”?</a></li>
|
||||
<li><a href="#pse-mund-të-zgjedh-të-mos-e-vëzhgoj-dosjen-deltachat">Pse mund të zgjedh të mos e vëzhgoj dosjen DeltaChat?</a></li>
|
||||
<li><a href="#a-është-i-përputhshëm-delta-chat-i-me-protonmail-in--tutanota-n--criptext-in">A është i përputhshëm ArcaneChat-i me Protonmail-in / Tutanota-n / Criptext-in?</a></li>
|
||||
<li><a href="#si-mund-ta-fshij-llogarinë-time">Si mund ta fshij llogarinë time?</a></li>
|
||||
<li><a href="#remove-account">Si mund ta fshij llogarinë time?</a></li>
|
||||
<li><a href="#më-interesojnë-hollësitë-teknike-mund-të-më-tregoni-diçka-më-tepër">Më interesojnë hollësitë teknike. Mund të më tregoni diçka më tepër?</a></li>
|
||||
<li><a href="#si-financohet-zhvillimi-i-delta-chat-it">Si financohet zhvillimi i ArcaneChat-it?</a></li>
|
||||
</ul>
|
||||
@@ -1151,10 +1151,10 @@ past encrypted messages.</p>
|
||||
<p>In any case, ArcaneChat’s end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
|
||||
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
|
||||
|
||||
<h3 id="a-mund-të-ripërdor-kyçin-tim-ekzistues-privat">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
A mund të ripërdor kyçin tim ekzistues privat? <a href="#a-mund-të-ripërdor-kyçin-tim-ekzistues-privat" class="anchor"></a>
|
||||
A mund të ripërdor kyçin tim ekzistues privat? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1283,7 +1283,7 @@ Mund të lexoni <a href="https://delta.chat/assets/blog/2019-first-security-revi
|
||||
dhe prisni një çast sa të shfaqet një kod QR</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Te pajisja e dytë, <a href="https://get.delta.chat">instaloni ArcaneChat-in</a></p>
|
||||
<p>Te pajisja e dytë, <a href="https://github.com/ArcaneChat">instaloni ArcaneChat-in</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Në pajisjen e dytë, nisni ArcaneChat-in, përzgjidhni <strong>Shtoje si Pajisje të Dytë</strong> dhe skanoni kodin QR që nga pajisja e vjetër</p>
|
||||
@@ -1388,7 +1388,7 @@ përkatës.</li>
|
||||
<li>Nëse ju duhet një Klient Web, ngaqë s’keni leje të instaloni software në
|
||||
kompjuterin me të cilin punoni, mund të përdorni Klientin e bartshëm për
|
||||
Windows Desktop, ose AppImage për Linux. Mund t’i gjeni te
|
||||
<a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1806,7 +1806,7 @@ përdoret tjetër program email-sh (bie fjala, Thunderbird-i) në krah të
|
||||
aplikacionit tuaj ArcaneChat, dhe doni që MUA juaj të marrë pjesë në biseda.</p>
|
||||
|
||||
<p>Sidoqoftë, rekomandojmë të përdoret Klienti Desktop i ArcaneChat-it; mund ta
|
||||
shkarkoni që nga <a href="https://get.delta.chat">get.delta.chat</a>. Mundësia për vëzhgim
|
||||
shkarkoni që nga <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. Mundësia për vëzhgim
|
||||
të dosjes “Të dërguar” mund të hiqet në të ardhmen. Qe prurë në kohët kur s’kish
|
||||
klient Desktop ArcaneChat për krejt platformat.</p>
|
||||
|
||||
@@ -1845,22 +1845,38 @@ uses.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="si-mund-ta-fshij-llogarinë-time">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
Si mund ta fshij llogarinë time? <a href="#si-mund-ta-fshij-llogarinë-time" class="anchor"></a>
|
||||
Si mund ta fshij llogarinë time? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>Ngaqë për ArcaneChat-in përdorni një llogari email,
|
||||
se si mund të fshini llogarinë tuaj, varet nga shërbimi juaj email.
|
||||
Nuk kemi fuqi mbi llogarinë tuaj email,
|
||||
ndaj, mjerisht, s’mund t’ju ndihmojmë për këtë.</p>
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/sq/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>Nëse doni ta mbani llogarinë,
|
||||
por të çinstaloni ArcaneChat-in,
|
||||
rekomandohet të braktisni çfarëdo grupi fjalosjeje, para çinstalimit të ArcaneChat-it.</p>
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="më-interesojnë-hollësitë-teknike-mund-të-më-tregoni-diçka-më-tepër">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#як-забезпечити-наскрізне-шифрування-та-видалення-повідомлень">Як забезпечити наскрізне шифрування та видалення повідомлень?</a></li>
|
||||
<li><a href="#pfs">Чи підтримує ArcaneChat цілковиту пряму секретність (Perfect Forward Secrecy)?</a></li>
|
||||
<li><a href="#чи-є-наскрізне-шифрування-delta-chat-таким-же-безпечним-як-signal">Чи є наскрізне шифрування ArcaneChat таким же безпечним, як Signal?</a></li>
|
||||
<li><a href="#чи-можна-повторно-використовувати-існуючий-закритий-ключ">Чи можна повторно використовувати існуючий закритий ключ?</a></li>
|
||||
<li><a href="#importkey">Чи можна повторно використовувати існуючий закритий ключ?</a></li>
|
||||
<li><a href="#я-не-можу-імпортувати-свій-існуючий-pgp-ключ-у-delta-chat">Я не можу імпортувати свій існуючий PGP ключ у ArcaneChat.</a></li>
|
||||
<li><a href="#security-audits">Чи проходив ArcaneChat незалежний аудит на наявність вразливостей у безпеці?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#чому-я-можу-обрати-стеження-за--папкою-надіслані">Чому я можу обрати стеження за папкою “Надіслані”?</a></li>
|
||||
<li><a href="#чому-я-можу-відмовитись-від-стеження-за--папкою-deltachat">Чому я можу відмовитись від стеження за папкою DeltaChat?</a></li>
|
||||
<li><a href="#чи-сумісний-delta-chat-із-protonmail--tutanota--criptext">Чи сумісний ArcaneChat із Protonmail / Tutanota / Criptext?</a></li>
|
||||
<li><a href="#як-мені-видалити-свій-обліковий-запис">Як мені видалити свій обліковий запис?</a></li>
|
||||
<li><a href="#remove-account">Як мені видалити свій обліковий запис?</a></li>
|
||||
<li><a href="#мене-цікавлять-технічні-деталі-можете-розповісти-більше">Мене цікавлять технічні деталі. Можете розповісти більше?</a></li>
|
||||
<li><a href="#як-фінансується-розробка-delta-chat">Як фінансується розробка ArcaneChat?</a></li>
|
||||
</ul>
|
||||
@@ -831,10 +831,10 @@ Autocrypt використовує обмежену і <a href="#openpgp-secure"
|
||||
|
||||
<p>У будь-якому випадку, наскрізне шифрування ArcaneChat використовує <a href="#openpgp-secure">безпечну підмножину OpenPGP</a> який пройшов <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">незалежний аудит безпеки</a>.</p>
|
||||
|
||||
<h3 id="чи-можна-повторно-використовувати-існуючий-закритий-ключ">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
Чи можна повторно використовувати існуючий закритий ключ? <a href="#чи-можна-повторно-використовувати-існуючий-закритий-ключ" class="anchor"></a>
|
||||
Чи можна повторно використовувати існуючий закритий ключ? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -917,7 +917,7 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
|
||||
<p>На першому пристрої перейдіть до <strong>Налаштування → Додати другий пристрій</strong>, розблокуйте екран, якщо потрібно і трохи зачекайте, поки не з’явиться QR-код</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>На другому пристрої <a href="https://get.delta.chat">встановіть ArcaneChat</a></p>
|
||||
<p>На другому пристрої <a href="https://github.com/ArcaneChat">встановіть ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>На другому пристрої запустіть ArcaneChat, виберіть <strong>Додати як другий пристрій</strong> і відскануйте QR-код зі старого пристрою</p>
|
||||
@@ -995,7 +995,7 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
|
||||
<ul>
|
||||
<li>Немає найближчих планів, крім попередніх думок.</li>
|
||||
<li>Є 2-3 способи створити веб-клієнт ArcaneChat, але всі вони вимагають значної роботи. На даний момент ми зосереджені на отриманні стабільних релізів в усіх магазини додатків (Google Play / IOS / Windows / MacOS / репозитаріїв Linux), як нативних додатків.</li>
|
||||
<li>Якщо вам потрібен веб-клієнт, через заборону встановлювати програмне забезпечення на комп’ютері, з яким ви працюєте, ви можете використовувати портативний клієнт Windows Desktop або AppImage для Linux. Ви можете знайти їх на <a href="https://get.delta.chat">get.delta.chat</a>.</li>
|
||||
<li>Якщо вам потрібен веб-клієнт, через заборону встановлювати програмне забезпечення на комп’ютері, з яким ви працюєте, ви можете використовувати портативний клієнт Windows Desktop або AppImage для Linux. Ви можете знайти їх на <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1316,7 +1316,7 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
|
||||
|
||||
<p>Єдина причина, через яку захочеться стежити за папкою Надіслане, полягає в тому, що якщо ви використовуєте іншу поштову програму (наприклад, Thunderbird) разом із вашим додатком ArcaneChat і хочете, щоб ваш поштовий клієнт брав участь у розмовах.</p>
|
||||
|
||||
<p>Однак ми рекомендуємо використовувати клієнт ArcaneChat Desktop; Ви можете завантажити його на <a href="https://get.delta.chat">get.delta.chat</a>. Можливість стеження папки “Надіслане” може зникнути в майбутньому. Вона був представлена у той час, коли на всіх платформах ще не було клієнта ArcaneChat Desktop.</p>
|
||||
<p>Однак ми рекомендуємо використовувати клієнт ArcaneChat Desktop; Ви можете завантажити його на <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a>. Можливість стеження папки “Надіслане” може зникнути в майбутньому. Вона був представлена у той час, коли на всіх платформах ще не було клієнта ArcaneChat Desktop.</p>
|
||||
|
||||
<h3 id="чому-я-можу-відмовитись-від-стеження-за--папкою-deltachat">
|
||||
|
||||
@@ -1344,17 +1344,38 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
|
||||
<li>ArcaneChat може наскрізно шифрувати через будь-якого провайдера електронної пошти з будь-якою <a href="https://autocrypt.org/dev-status.html">поштовою програмою з підтримкою автошифрування</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="як-мені-видалити-свій-обліковий-запис">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
Як мені видалити свій обліковий запис? <a href="#як-мені-видалити-свій-обліковий-запис" class="anchor"></a>
|
||||
Як мені видалити свій обліковий запис? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>Оскільки ви використовуєте обліковий запис електронної пошти для ArcaneChat, спосіб видалення облікового запису залежить від вашого постачальника послуг електронної пошти. Ми не маємо жодного контролю над вашим обліковим записом електронної пошти, тому, на жаль, ми не можемо вам у цьому допомогти.</p>
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/uk/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>Якщо ви хочете зберегти обліковий запис, але видалити ArcaneChat, перед видаленням ArcaneChat рекомендується покинути будь-які групові чати.</p>
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="мене-цікавлять-технічні-деталі-можете-розповісти-більше">
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
|
||||
<li><a href="#pfs">Does ArcaneChat support Perfect Forward Secrecy?</a></li>
|
||||
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of ArcaneChat as safe as Signal?</a></li>
|
||||
<li><a href="#我可以重复使用现有的私钥吗">我可以重复使用现有的私钥吗?</a></li>
|
||||
<li><a href="#importkey">我可以重复使用现有的私钥吗?</a></li>
|
||||
<li><a href="#我无法将现有的-pgp-密钥导入-delta-chat">我无法将现有的 PGP 密钥导入 ArcaneChat。</a></li>
|
||||
<li><a href="#security-audits">Was ArcaneChat independently audited for security vulnerabilities?</a></li>
|
||||
</ul>
|
||||
@@ -97,7 +97,7 @@
|
||||
<li><a href="#为什么我可以选择监视已发送文件夹">为什么我可以选择监视“已发送”文件夹?</a></li>
|
||||
<li><a href="#为什么我可以选择不监视-deltachat-文件夹">为什么我可以选择不监视 DeltaChat 文件夹?</a></li>
|
||||
<li><a href="#delta-chat-与-protonmail--tutanota--criptext-兼容吗">ArcaneChat 与 Protonmail / Tutanota / Criptext 兼容吗?</a></li>
|
||||
<li><a href="#如何删除我的账户">如何删除我的账户?</a></li>
|
||||
<li><a href="#remove-account">如何删除我的账户?</a></li>
|
||||
<li><a href="#我对技术细节很感兴趣能告诉我更多吗">我对技术细节很感兴趣。能告诉我更多吗?</a></li>
|
||||
<li><a href="#delta-chat-的开发是如何被资助的">ArcaneChat 的开发是如何被资助的?</a></li>
|
||||
</ul>
|
||||
@@ -1117,10 +1117,10 @@ past encrypted messages.</p>
|
||||
<p>In any case, ArcaneChat’s end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
|
||||
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
|
||||
|
||||
<h3 id="我可以重复使用现有的私钥吗">
|
||||
<h3 id="importkey">
|
||||
|
||||
|
||||
我可以重复使用现有的私钥吗? <a href="#我可以重复使用现有的私钥吗" class="anchor"></a>
|
||||
我可以重复使用现有的私钥吗? <a href="#importkey" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
@@ -1240,7 +1240,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
|
||||
and wait a moment until a QR code is shown</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, <a href="https://get.delta.chat">install ArcaneChat</a></p>
|
||||
<p>On the second device, <a href="https://github.com/ArcaneChat">install ArcaneChat</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<p>On the second device, start ArcaneChat, select <strong>Add as Second Device</strong>, and scan the QR code from the old device</p>
|
||||
@@ -1338,7 +1338,7 @@ end-to-end encrypted messages with your communication partners.</li>
|
||||
<ul>
|
||||
<li>目前没有计划,但有一些初步的想法。</li>
|
||||
<li>有 2-3 种途径来实现 ArcaneChat Web 客户端,但是它们都需要巨大的工作量。目前,我们专注于将稳定的版本作为本地应用程序发布到所有应用程序商店(Google Play/iOS/Windows/macOS/Linux 仓库)。</li>
|
||||
<li>如果是因为不能在工作的电脑上安装软件而需要一个 Web 客户端,您可以使用便携版的 Windows 桌面客户端,或者在 Linux 上使用 AppImage 版。您可以在 <a href="https://get.delta.chat">get.delta.chat</a> 找到它们。</li>
|
||||
<li>如果是因为不能在工作的电脑上安装软件而需要一个 Web 客户端,您可以使用便携版的 Windows 桌面客户端,或者在 Linux 上使用 AppImage 版。您可以在 <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a> 找到它们。</li>
|
||||
</ul>
|
||||
|
||||
<h2 id="webxdc">
|
||||
@@ -1716,7 +1716,7 @@ if you set a <a href="#signature">signature text</a>.</p>
|
||||
|
||||
<p>监视已发送文件夹的唯一原因是:您在使用ArcaneChat软件的同时也使用其他的邮件应用程序(比如 Thunderbird),并且想让邮件分发代理参与聊天对话。</p>
|
||||
|
||||
<p>不过,我们推荐使用 ArcaneChat 桌面客户端;您可以在 <a href="https://get.delta.chat">get.delta.chat</a> 下载它。监视“已发送”文件夹的选项是在还没有 ArcaneChat 桌面客户端的时候引入的,这个选项可能会在未来消失。</p>
|
||||
<p>不过,我们推荐使用 ArcaneChat 桌面客户端;您可以在 <a href="https://github.com/ArcaneChat">github.com/ArcaneChat</a> 下载它。监视“已发送”文件夹的选项是在还没有 ArcaneChat 桌面客户端的时候引入的,这个选项可能会在未来消失。</p>
|
||||
|
||||
<h3 id="为什么我可以选择不监视-deltachat-文件夹">
|
||||
|
||||
@@ -1749,22 +1749,38 @@ uses.</li>
|
||||
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="如何删除我的账户">
|
||||
<h3 id="remove-account">
|
||||
|
||||
|
||||
如何删除我的账户? <a href="#如何删除我的账户" class="anchor"></a>
|
||||
如何删除我的账户? <a href="#remove-account" class="anchor"></a>
|
||||
|
||||
|
||||
</h3>
|
||||
|
||||
<p>As you use an e-mail account for ArcaneChat,
|
||||
<p>If you use a default chat profile
|
||||
you can simply uninstall the app.
|
||||
This will automatically trigger deletion of all associated account data on the chatmail server.
|
||||
For more info, please refer to <a href="https://nine.testrun.org/info.html#account-deletion">nine.testrun.org account-deletion</a> for the default onboarding server,
|
||||
or the respective page from your chosen <a href="https://delta.chat/zh_CN/chatmail">3rd party chatmail server</a>.</p>
|
||||
|
||||
<p>If you have set up your chat profile on multiple devices
|
||||
you need to remove it from all devices.</p>
|
||||
|
||||
<p>If you are using more than one account,
|
||||
but don’t want to get rid of all of them,
|
||||
you can remove it in the account switcher menu (on android and iOS),
|
||||
or in the sidebar with a right click (in the desktop client).</p>
|
||||
|
||||
<p>Accounts on <a href="https://providers.delta.chat">classic e-mail providers</a>
|
||||
will not be deleted automatically;
|
||||
how you can delete your account depends on your e-mail provider.
|
||||
We don’t have any control over your e-mail account,
|
||||
We don’t have any control over e-mail accounts at those providers,
|
||||
so unfortunately we can’t help you with that.</p>
|
||||
|
||||
<p>If you want to keep the account,
|
||||
<p>If you want to continue using a classic e-mail account with other apps,
|
||||
but uninstall ArcaneChat,
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.</p>
|
||||
it is recommended to leave any group chat before uninstalling ArcaneChat.
|
||||
Otherwise you might receive undecryptable messages from those group chats.</p>
|
||||
|
||||
<h3 id="我对技术细节很感兴趣能告诉我更多吗">
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ public class DcAccounts {
|
||||
public native void stopIo ();
|
||||
public native void maybeNetwork ();
|
||||
public native void setPushDeviceToken (String token);
|
||||
public native boolean backgroundFetch (int timeoutSeconds);
|
||||
|
||||
public native int addAccount ();
|
||||
public native int migrateAccount (String dbfile);
|
||||
|
||||
@@ -31,6 +31,7 @@ public class DcContext {
|
||||
public final static int DC_EVENT_WEBXDC_STATUS_UPDATE = 2120;
|
||||
public final static int DC_EVENT_WEBXDC_INSTANCE_DELETED = 2121;
|
||||
public final static int DC_EVENT_WEBXDC_REALTIME_DATA = 2150;
|
||||
public final static int DC_EVENT_ACCOUNTS_BACKGROUND_FETCH_DONE = 2200;
|
||||
|
||||
public final static int DC_IMEX_EXPORT_SELF_KEYS = 1;
|
||||
public final static int DC_IMEX_IMPORT_SELF_KEYS = 2;
|
||||
@@ -55,6 +56,7 @@ public class DcContext {
|
||||
public final static int DC_QR_BACKUP = 251;
|
||||
public final static int DC_QR_BACKUP2 = 252;
|
||||
public final static int DC_QR_WEBRTC = 260;
|
||||
public final static int DC_QR_PROXY = 271;
|
||||
public final static int DC_QR_ADDR = 320;
|
||||
public final static int DC_QR_TEXT = 330;
|
||||
public final static int DC_QR_URL = 332;
|
||||
@@ -182,7 +184,6 @@ public class DcContext {
|
||||
public native int[] searchMsgs (int chat_id, String query);
|
||||
public native int[] getFreshMsgs ();
|
||||
public native int[] getChatMedia (int chat_id, int type1, int type2, int type3);
|
||||
public native int getNextMedia (int msg_id, int dir, int type1, int type2, int type3);
|
||||
public native int[] getChatContacts (int chat_id);
|
||||
public native int getChatEphemeralTimer (int chat_id);
|
||||
public native boolean setChatEphemeralTimer (int chat_id, int timer);
|
||||
@@ -248,6 +249,14 @@ public class DcContext {
|
||||
return ret.trim();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
String displayname = getConfig("displayname");
|
||||
if (displayname.isEmpty()) {
|
||||
displayname = getContact(DcContact.DC_CONTACT_ID_SELF).getAddr();
|
||||
}
|
||||
return displayname;
|
||||
}
|
||||
|
||||
public boolean isCommunity() {
|
||||
return getConfigInt("is_community") == 1;
|
||||
}
|
||||
@@ -277,21 +286,6 @@ public class DcContext {
|
||||
setConfigInt("is_muted", muted? 1 : 0);
|
||||
}
|
||||
|
||||
// Called for new profiles on chatmail servers that are "single device" initially;
|
||||
// to save server disk space, we make use of that delete all messages immediately after download.
|
||||
public void assumeSingleDevice() {
|
||||
if (isChatmail()) {
|
||||
setConfigInt("delete_server_after", 1 /*at once*/);
|
||||
}
|
||||
}
|
||||
|
||||
// Called when we get a hint that another device may be set up.
|
||||
public void assumeMultiDevice() {
|
||||
if (isChatmail() && getConfigInt("delete_server_after") == 1 /*at once*/) {
|
||||
setConfigInt("delete_server_after", 0 /*never/automatic*/);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isGmailOauth2Addr(String addr) {
|
||||
final String oauth2url = getOauth2Url(addr, "chat.delta:/foo");
|
||||
return isGmailOauth2Url(oauth2url);
|
||||
@@ -301,6 +295,12 @@ public class DcContext {
|
||||
return oauth2url.startsWith("https://accounts.google.com/");
|
||||
}
|
||||
|
||||
public void restartIo() {
|
||||
if (!isEnabled()) return;
|
||||
stopIo();
|
||||
startIo();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if at least one chat has location streaming enabled
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -186,7 +186,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
|
||||
public void handleEvent(@NonNull DcEvent event) {
|
||||
if (event.getId() == DcContext.DC_EVENT_CONNECTIVITY_CHANGED) {
|
||||
this.findPreference(PREFERENCE_CATEGORY_CONNECTIVITY)
|
||||
.setSummary(DcHelper.getConnectivitySummary(getActivity(), R.string.connectivity_connected));
|
||||
.setSummary(DcHelper.getConnectivitySummary(getActivity(), getString(R.string.connectivity_connected)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -202,7 +202,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
|
||||
this.findPreference(PREFERENCE_CATEGORY_PRIVACY)
|
||||
.setSummary(PrivacyPreferenceFragment.getSummary(getActivity()));
|
||||
this.findPreference(PREFERENCE_CATEGORY_CONNECTIVITY)
|
||||
.setSummary(DcHelper.getConnectivitySummary(getActivity(), R.string.connectivity_connected));
|
||||
.setSummary(DcHelper.getConnectivitySummary(getActivity(), getString(R.string.connectivity_connected)));
|
||||
this.findPreference(PREFERENCE_CATEGORY_HELP)
|
||||
.setSummary(AdvancedPreferenceFragment.getVersion(getActivity()));
|
||||
}
|
||||
|
||||
@@ -38,7 +38,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;
|
||||
@@ -302,12 +301,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 + ")");
|
||||
@@ -1056,18 +1032,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
else if (action == ACTION_SEND_OUT && quote.isPresent() && EmojiProvider.getInstance(this).maybeEmoji(body)){
|
||||
int quotedMsg = quote.get().getQuotedMsg().getId();
|
||||
try {
|
||||
rpc.sendReaction(dcContext.getAccountId(), quotedMsg, body.equals(getSelfReaction(quotedMsg))? "" : body);
|
||||
future.set(chatId);
|
||||
return future;
|
||||
} catch (RpcException e) {
|
||||
e.printStackTrace();
|
||||
msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
|
||||
msg.setText(body);
|
||||
}
|
||||
}
|
||||
else if (!body.isEmpty()){
|
||||
msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
|
||||
msg.setText(body);
|
||||
|
||||
@@ -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_PROXY_URL;
|
||||
import static org.thoughtcrime.securesms.util.RelayUtil.acquireRelayMessageContent;
|
||||
import static org.thoughtcrime.securesms.util.RelayUtil.getDirectSharingChatId;
|
||||
import static org.thoughtcrime.securesms.util.RelayUtil.getSharedTitle;
|
||||
@@ -66,6 +67,7 @@ import org.thoughtcrime.securesms.connect.DcHelper;
|
||||
import org.thoughtcrime.securesms.connect.DirectShareUtil;
|
||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.proxy.ProxySettingsActivity;
|
||||
import org.thoughtcrime.securesms.qr.QrActivity;
|
||||
import org.thoughtcrime.securesms.qr.QrCodeHandler;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
@@ -121,7 +123,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
|
||||
// Util.copy(inputStream, new FileOutputStream(outputFile));
|
||||
// msg.setFile(outputFile, "image/jpeg");
|
||||
|
||||
msg.setText(getString(R.string.update_1_46_android, "https://get.delta.chat/#changelogs"));
|
||||
msg.setText(getString(R.string.update_1_46_android, "https://raw.githubusercontent.com/ArcaneChat/android/refs/heads/main/CHANGELOG.md"));
|
||||
}
|
||||
dcContext.addDeviceMsg(deviceMsgLabel, msg);
|
||||
|
||||
@@ -186,7 +188,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
|
||||
|
||||
TooltipCompat.setTooltipText(selfAvatar, getText(R.string.switch_account));
|
||||
selfAvatar.setOnClickListener(v -> AccountManager.getInstance().showSwitchAccountMenu(this));
|
||||
title.setOnClickListener(v -> {
|
||||
findViewById(R.id.avatar_and_title).setOnClickListener(v -> {
|
||||
if (!isRelayingMessageContent(this)) {
|
||||
AccountManager.getInstance().showSwitchAccountMenu(this);
|
||||
}
|
||||
@@ -265,7 +267,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);
|
||||
@@ -299,19 +301,15 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
|
||||
}
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
} else {
|
||||
DcContext dcContext = DcHelper.getContext(this);
|
||||
DcContact self = dcContext.getContact(DcContact.DC_CONTACT_ID_SELF);
|
||||
String name = dcContext.getConfig("displayname");
|
||||
if (TextUtils.isEmpty(name)) {
|
||||
name = self.getAddr();
|
||||
}
|
||||
title.setText(name);
|
||||
title.setText(DcHelper.getContext(this).getName());
|
||||
selfAvatar.setConnectivity(DcHelper.getContext(this).getConnectivity());
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
public void refreshAvatar() {
|
||||
if (selfAvatarContainer == null) return;
|
||||
|
||||
if (isRelayingMessageContent(this)) {
|
||||
selfAvatarContainer.setVisibility(View.GONE);
|
||||
} else {
|
||||
@@ -377,20 +375,9 @@ 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);
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
MenuCompat.setGroupDividerEnabled(menu, true);
|
||||
} else{
|
||||
menu.setGroupVisible(R.id.extra_services, false);
|
||||
}
|
||||
menu.findItem(R.id.menu_global_map).setVisible(Prefs.isLocationStreamingEnabled(this));
|
||||
menu.findItem(R.id.menu_proxy_settings).setVisible(!TextUtils.isEmpty(DcHelper.get(this, CONFIG_PROXY_URL)));
|
||||
MenuCompat.setGroupDividerEnabled(menu, true);
|
||||
}
|
||||
|
||||
super.onPrepareOptionsMenu(menu);
|
||||
@@ -453,6 +440,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;
|
||||
@@ -460,10 +450,10 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
|
||||
startActivity(new Intent(this, ProfileActivity.class));
|
||||
return true;
|
||||
case R.id.menu_webxdc_apps_store:
|
||||
handleShowBot("xstore@testrun.org", "OPENPGP4FPR:37DC2B704A2AE2F6A96235CE0C3A0EBCA4F5801D#a=xstore%40testrun.org&n=&i=-1IGtynaivZ&s=JqHsvvcDmnW");
|
||||
handleShowBot("juegos@buzon.uy", "OPENPGP4FPR:d3d403a734be71fe9293a00311fef80dbe5dbc89#a=juegos%40buzon.uy&n=&i=WQZY-8FODS3&s=ZQBkaclFzao");
|
||||
return true;
|
||||
case R.id.menu_public_bots:
|
||||
handleShowBot("publicbots@testrun.org", "OPENPGP4FPR:4DB8117591B27184A903FF7E9F469E00D40E13E7#a=publicbots%40testrun.org&n=Public%20Bots&i=zSuQpFtBa_Q&s=weLMu1-o1o1");
|
||||
handleShowBot("puente@buzon.uy", "OPENPGP4FPR:4B41E5AFAF78A0C71DB56138D5BEFED00A45F97A#a=puente%40buzon.uy&n=Public%20Bots&i=ZC_oaJtuvJP&s=5SE96rRovsK");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,9 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.res.TypedArray;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
@@ -13,6 +15,7 @@ import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.text.util.Linkify;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
@@ -47,6 +50,7 @@ import org.thoughtcrime.securesms.mms.GlideApp;
|
||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.profiles.AvatarHelper;
|
||||
import org.thoughtcrime.securesms.profiles.ProfileMediaConstraints;
|
||||
import org.thoughtcrime.securesms.proxy.ProxySettingsActivity;
|
||||
import org.thoughtcrime.securesms.qr.RegistrationQrActivity;
|
||||
import org.thoughtcrime.securesms.scribbles.ScribbleActivity;
|
||||
import org.thoughtcrime.securesms.util.Prefs;
|
||||
@@ -132,13 +136,29 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
|
||||
handleIntent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPrepareOptionsMenu(Menu menu) {
|
||||
menu.clear();
|
||||
getMenuInflater().inflate(R.menu.instant_onboarding_menu, menu);
|
||||
return super.onPrepareOptionsMenu(menu);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
super.onOptionsItemSelected(item);
|
||||
if (item.getItemId() == android.R.id.home) {
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home:
|
||||
getOnBackPressedDispatcher().onBackPressed();
|
||||
return true;
|
||||
case R.id.menu_proxy_settings:
|
||||
startActivity(new Intent(this, ProxySettingsActivity.class));
|
||||
return true;
|
||||
case R.id.menu_view_log:
|
||||
startActivity(new Intent(this, LogViewActivity.class));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -290,32 +310,15 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
|
||||
|
||||
signUpBtn.setOnClickListener(view -> createProfile());
|
||||
|
||||
Button otherOptionsBtn = findViewById(R.id.other_options_button);
|
||||
otherOptionsBtn.setOnClickListener(view -> showOtherOptionsDialog());
|
||||
}
|
||||
|
||||
private void showOtherOptionsDialog() {
|
||||
View view = View.inflate(this, R.layout.signup_options_view, null);
|
||||
AlertDialog signUpDialog = new AlertDialog.Builder(this)
|
||||
.setView(view)
|
||||
.setTitle(R.string.instant_onboarding_show_more_instances)
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.create();
|
||||
|
||||
view.findViewById(R.id.use_other_server).setOnClickListener((v) -> {
|
||||
findViewById(R.id.use_other_server).setOnClickListener((v) -> {
|
||||
WebViewActivity.openUrlInBrowser(this, INSTANCES_URL);
|
||||
signUpDialog.dismiss();
|
||||
});
|
||||
view.findViewById(R.id.login_button).setOnClickListener((v) -> {
|
||||
findViewById(R.id.login_button).setOnClickListener((v) -> {
|
||||
startRegistrationActivity();
|
||||
signUpDialog.dismiss();
|
||||
});
|
||||
view.findViewById(R.id.scan_qr_button).setOnClickListener((v) -> {
|
||||
findViewById(R.id.scan_qr_button).setOnClickListener((v) -> {
|
||||
new IntentIntegrator(this).setCaptureActivity(RegistrationQrActivity.class).initiateScan();
|
||||
signUpDialog.dismiss();
|
||||
});
|
||||
|
||||
signUpDialog.show();
|
||||
}
|
||||
|
||||
private void startRegistrationActivity() {
|
||||
@@ -330,7 +333,11 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
|
||||
privacyPolicyBtn.setText(getString(R.string.qrlogin_ask_login, providerHost));
|
||||
} else {
|
||||
signUpBtn.setText(R.string.instant_onboarding_create);
|
||||
privacyPolicyBtn.setTextColor(getResources().getColor(R.color.def_accent));
|
||||
|
||||
try (TypedArray typedArray = obtainStyledAttributes(new int[]{R.attr.colorAccent})) {
|
||||
privacyPolicyBtn.setTextColor(typedArray.getColor(0, Color.BLACK));
|
||||
}
|
||||
|
||||
if (DEFAULT_CHATMAIL_HOST.equals(providerHost)) {
|
||||
privacyPolicyBtn.setText(getString(R.string.instant_onboarding_agree_default2, providerHost));
|
||||
} else {
|
||||
@@ -373,7 +380,6 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
|
||||
progressUpdate((int)progress);
|
||||
} else if (progress==1000/*done*/) {
|
||||
DcHelper.getAccounts(this).startIo();
|
||||
dcContext.assumeSingleDevice();
|
||||
progressSuccess();
|
||||
}
|
||||
}
|
||||
@@ -386,7 +392,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
|
||||
|
||||
private void progressError(String data2) {
|
||||
progressDialog.dismiss();
|
||||
maybeShowConfigurationError(this, data2);
|
||||
WelcomeActivity.maybeShowConfigurationError(this, data2);
|
||||
}
|
||||
|
||||
private void progressSuccess() {
|
||||
@@ -399,22 +405,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())) {
|
||||
|
||||
@@ -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;
|
||||
@@ -255,6 +257,13 @@ public class LogViewFragment extends Fragment {
|
||||
builder.append("rtl=").append(isRtl).append("\n");
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
boolean notifPermGranted = PermissionChecker.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) == PermissionChecker.PERMISSION_GRANTED;
|
||||
builder.append("post-notifications-granted=").append(notifPermGranted).append("\n");
|
||||
} else {
|
||||
builder.append("post-notifications-granted=<not needed>").append("\n");
|
||||
}
|
||||
|
||||
final String token = FcmReceiveService.getToken();
|
||||
builder.append("push-enabled=").append(Prefs.isPushEnabled(context)).append("\n");
|
||||
builder.append("push-token=").append(token == null ? "<empty>" : token).append("\n");
|
||||
|
||||
@@ -12,11 +12,7 @@ import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SEND_SECURITY;
|
||||
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SEND_SERVER;
|
||||
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SEND_USER;
|
||||
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.connect.DcHelper.CONFIG_SOCKS5_HOST;
|
||||
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SOCKS5_PASSWORD;
|
||||
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SOCKS5_PORT;
|
||||
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SOCKS5_USER;
|
||||
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_ENABLED;
|
||||
import static org.thoughtcrime.securesms.connect.DcHelper.getContext;
|
||||
import static org.thoughtcrime.securesms.service.IPCAddAccountsService.ACCOUNT_DATA;
|
||||
|
||||
@@ -59,6 +55,7 @@ import com.google.android.material.textfield.TextInputEditText;
|
||||
import org.thoughtcrime.securesms.connect.DcEventCenter;
|
||||
import org.thoughtcrime.securesms.connect.DcHelper;
|
||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.proxy.ProxySettingsActivity;
|
||||
import org.thoughtcrime.securesms.util.DynamicTheme;
|
||||
import org.thoughtcrime.securesms.util.IntentUtils;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
@@ -96,7 +93,6 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve
|
||||
Spinner certCheck;
|
||||
|
||||
private SwitchCompat proxySwitch;
|
||||
private Group proxyGroup;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle bundle) {
|
||||
@@ -127,15 +123,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 +153,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_PROXY_ENABLED);
|
||||
proxySwitch.setChecked(intVal == 1);
|
||||
expandAdvanced = expandAdvanced || intVal == 1;
|
||||
|
||||
if (isConfigured) {
|
||||
String email = DcHelper.get(this, CONFIG_ADDRESS);
|
||||
emailInput.setText(email);
|
||||
@@ -170,10 +171,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 +210,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 +228,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 +245,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve
|
||||
}
|
||||
}
|
||||
|
||||
if (expandAdvanced) { onAdvancedSettings(); }
|
||||
registerForEvents();
|
||||
}
|
||||
|
||||
@@ -272,6 +257,7 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
dynamicTheme.onResume(this);
|
||||
proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_PROXY_ENABLED) == 1);
|
||||
}
|
||||
|
||||
private void showLog() {
|
||||
@@ -574,12 +560,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 +605,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());
|
||||
|
||||
@@ -69,26 +69,9 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen
|
||||
super.onCreate(bundle);
|
||||
setContentView(R.layout.welcome_activity);
|
||||
|
||||
Button signUpButton = findViewById(R.id.signup_button);
|
||||
Button signInButton = findViewById(R.id.signin_button);
|
||||
|
||||
View view = View.inflate(this, R.layout.login_options_view, null);
|
||||
AlertDialog signInDialog = new AlertDialog.Builder(this)
|
||||
.setView(view)
|
||||
.setTitle(R.string.onboarding_alternative_logins)
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.create();
|
||||
view.findViewById(R.id.add_as_second_device_button).setOnClickListener((v) -> {
|
||||
startAddAsSecondDeviceActivity();
|
||||
signInDialog.dismiss();
|
||||
});
|
||||
view.findViewById(R.id.backup_button).setOnClickListener((v) -> {
|
||||
startImportBackup();
|
||||
signInDialog.dismiss();
|
||||
});
|
||||
|
||||
signUpButton.setOnClickListener((v) -> startInstantOnboardingActivity());
|
||||
signInButton.setOnClickListener((v) -> signInDialog.show());
|
||||
findViewById(R.id.signup_button).setOnClickListener((v) -> startInstantOnboardingActivity());
|
||||
findViewById(R.id.add_as_second_device_button).setOnClickListener((v) -> startAddAsSecondDeviceActivity());
|
||||
findViewById(R.id.backup_button).setOnClickListener((v) -> startImportBackup());
|
||||
|
||||
registerForEvents();
|
||||
initializeActionBar();
|
||||
@@ -296,6 +279,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)
|
||||
@@ -342,7 +327,6 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen
|
||||
}
|
||||
DcHelper.getAccounts(this).startIo();
|
||||
progressSuccess();
|
||||
dcContext.assumeMultiDevice();
|
||||
notificationController.close();
|
||||
cleanupTempBackupFile();
|
||||
}
|
||||
|
||||
@@ -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,15 +18,20 @@ 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 com.b44t.messenger.DcEvent;
|
||||
import com.b44t.messenger.rpc.Rpc;
|
||||
import com.b44t.messenger.rpc.RpcException;
|
||||
|
||||
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.DcEventCenter;
|
||||
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;
|
||||
|
||||
@@ -134,13 +141,38 @@ public class AccountSelectionListFragment extends DialogFragment implements DcEv
|
||||
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.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");
|
||||
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());
|
||||
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)
|
||||
.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();
|
||||
DcHelper.getNotificationCenter(activity).removeAllNotifiations(accountId);
|
||||
DcHelper.getNotificationCenter(activity).removeAllNotifications(accountId);
|
||||
accounts.removeAccount(accountId);
|
||||
if (selected) {
|
||||
DcContext selAcc = accounts.getSelectedAccount();
|
||||
|
||||
@@ -214,6 +214,7 @@ public class EmojiTextView extends AppCompatTextView {
|
||||
|
||||
private static final Pattern CMD_PATTERN = Pattern.compile("(?<=^|\\s)/[a-zA-Z][a-zA-Z@\\d_/.-]{0,254}");
|
||||
private static final Pattern CUSTOM_PATTERN = Pattern.compile("(?<=^|\\s)(OPENPGP4FPR|openpgp4fpr|mumble):[^ \\n]+");
|
||||
private static final Pattern PROXY_PATTERN = Pattern.compile("(?<=^|\\s)(SOCKS5|socks5|ss|SS):[^ \\n]+");
|
||||
|
||||
private static void replaceURLSpan(Spannable messageBody) {
|
||||
URLSpan[] urlSpans = messageBody.getSpans(0, messageBody.length(), URLSpan.class);
|
||||
@@ -234,6 +235,10 @@ public class EmojiTextView extends AppCompatTextView {
|
||||
Linkify.addLinks(messageBody, CUSTOM_PATTERN, null, null, null);
|
||||
EmojiTextView.replaceURLSpan(messageBody);
|
||||
|
||||
if (Linkify.addLinks(messageBody, PROXY_PATTERN, null, null, null)) {
|
||||
EmojiTextView.replaceURLSpan(messageBody); // replace URLSpan so that it is not removed on the next addLinks() call
|
||||
}
|
||||
|
||||
// linkyfiy urls etc., this removes all existing URLSpan
|
||||
if (Linkify.addLinks(messageBody, Linkify.EMAIL_ADDRESSES|Linkify.WEB_URLS|Linkify.PHONE_NUMBERS)) {
|
||||
EmojiTextView.replaceURLSpan(messageBody);
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.b44t.messenger.DcEvent;
|
||||
|
||||
import org.thoughtcrime.securesms.ApplicationContext;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.service.FetchForegroundService;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -177,6 +178,10 @@ public class DcEventCenter {
|
||||
DcHelper.getNotificationCenter(context).removeNotifications(accountId, event.getData1Int());
|
||||
break;
|
||||
|
||||
case DcContext.DC_EVENT_ACCOUNTS_BACKGROUND_FETCH_DONE:
|
||||
FetchForegroundService.stop(context);
|
||||
break;
|
||||
|
||||
case DcContext.DC_EVENT_IMEX_PROGRESS:
|
||||
sendToCurrentAccountObservers(event);
|
||||
return 0;
|
||||
|
||||
@@ -75,11 +75,8 @@ public class DcHelper {
|
||||
public static final String CONFIG_SHOW_EMAILS = "show_emails";
|
||||
public static final String CONFIG_MEDIA_QUALITY = "media_quality";
|
||||
public static final String CONFIG_WEBRTC_INSTANCE = "webrtc_instance";
|
||||
public static final String CONFIG_SOCKS5_ENABLED = "socks5_enabled";
|
||||
public static final String CONFIG_SOCKS5_HOST = "socks5_host";
|
||||
public static final String CONFIG_SOCKS5_PORT = "socks5_port";
|
||||
public static final String CONFIG_SOCKS5_USER = "socks5_user";
|
||||
public static final String CONFIG_SOCKS5_PASSWORD = "socks5_password";
|
||||
public static final String CONFIG_PROXY_ENABLED = "proxy_enabled";
|
||||
public static final String CONFIG_PROXY_URL = "proxy_url";
|
||||
public static final String CONFIG_VERIFIED_ONE_ON_ONE_CHATS = "verified_one_on_one_chats";
|
||||
public static final String CONFIG_WEBXDC_REALTIME_ENABLED = "webxdc_realtime_enabled";
|
||||
|
||||
@@ -452,13 +449,14 @@ public class DcHelper {
|
||||
* Gets a string you can show to the user with basic information about connectivity.
|
||||
* @param context
|
||||
* @param connectedString Usually "Connected", but when using this as the title in
|
||||
* ConversationListActivity, we want to write "ArcaneChat" there instead.
|
||||
* ConversationListActivity, we want to write "ArcaneChat"
|
||||
* or the user's display name there instead.
|
||||
* @return
|
||||
*/
|
||||
public static String getConnectivitySummary(Context context, int connectedString) {
|
||||
public static String getConnectivitySummary(Context context, String connectedString) {
|
||||
int connectivity = getContext(context).getConnectivity();
|
||||
if (connectivity >= DcContext.DC_CONNECTIVITY_CONNECTED) {
|
||||
return context.getString(connectedString);
|
||||
return connectedString;
|
||||
} else if (connectivity >= DcContext.DC_CONNECTIVITY_WORKING) {
|
||||
return context.getString(R.string.connectivity_updating);
|
||||
} else if (connectivity >= DcContext.DC_CONNECTIVITY_CONNECTING) {
|
||||
|
||||
@@ -638,14 +638,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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -128,22 +128,24 @@ 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());
|
||||
}
|
||||
|
||||
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());
|
||||
}
|
||||
@@ -166,6 +168,7 @@ public class NotificationCenter {
|
||||
public static final int ID_PERMANENT = 1;
|
||||
public static final int ID_MSG_SUMMARY = 2;
|
||||
public static final int ID_GENERIC = 3;
|
||||
public static final int ID_FETCH = 4;
|
||||
public static final int ID_MSG_OFFSET = 0; // msgId is added - as msgId start at 10, there are no conflicts with lower numbers
|
||||
|
||||
|
||||
@@ -379,7 +382,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) {
|
||||
@@ -450,11 +453,11 @@ public class NotificationCenter {
|
||||
// if privacy options are enabled, the buttons are not added.
|
||||
if (privacy.isDisplayContact() && privacy.isDisplayMessage()) {
|
||||
try {
|
||||
PendingIntent inNotificationReplyIntent = getRemoteReplyIntent(chatData);
|
||||
PendingIntent markReadIntent = getMarkAsReadIntent(chatData, true);
|
||||
PendingIntent inNotificationReplyIntent = getRemoteReplyIntent(chatData, msgId);
|
||||
PendingIntent markReadIntent = getMarkAsReadIntent(chatData, msgId, 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) {
|
||||
@@ -567,7 +570,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) {
|
||||
|
||||
@@ -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;
|
||||
@@ -41,6 +42,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 +52,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;
|
||||
|
||||
@@ -58,10 +61,17 @@ public class RemoteReplyReceiver extends BroadcastReceiver {
|
||||
if (responseText != null) {
|
||||
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);
|
||||
}
|
||||
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);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -35,6 +35,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.proxy.ProxySettingsActivity;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.RegistrationActivity;
|
||||
import org.thoughtcrime.securesms.connect.DcEventCenter;
|
||||
@@ -157,6 +158,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);
|
||||
@@ -389,6 +395,7 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
|
||||
}
|
||||
)
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.setNeutralButton(R.string.learn_more, (d, w) -> DcHelper.openHelp(getActivity(), "#importkey"))
|
||||
.show();
|
||||
})
|
||||
.execute();
|
||||
|
||||
@@ -138,7 +138,6 @@ public abstract class ListSummaryPreferenceFragment extends CorrectedPreferenceF
|
||||
protected void startImexInner(int accountId, int what, String imexPath, String pathAsDisplayedToUser)
|
||||
{
|
||||
DcContext dcContext = DcHelper.getAccounts(getActivity()).getAccount(accountId);
|
||||
dcContext.assumeMultiDevice();
|
||||
this.pathAsDisplayedToUser = pathAsDisplayedToUser;
|
||||
progressWhat = what;
|
||||
dcContext.imex(progressWhat, imexPath);
|
||||
@@ -200,7 +199,7 @@ public abstract class ListSummaryPreferenceFragment extends CorrectedPreferenceF
|
||||
imexProgress.put(event.getAccountId(), (int) progress);
|
||||
int totalProgress = getTotalProgress();
|
||||
int percent = totalProgress / (10 * imexAccounts.length);
|
||||
String formattedPercent = String.format(" %d%%", percent);
|
||||
String formattedPercent = percent > 0 ? String.format(" %d%%", percent) : "";
|
||||
progressDialog.setMessage(getResources().getString(R.string.one_moment) + formattedPercent);
|
||||
notifController.setProgress(1000L * imexAccounts.length, totalProgress, formattedPercent);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,176 @@
|
||||
package org.thoughtcrime.securesms.proxy;
|
||||
|
||||
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_ENABLED;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.b44t.messenger.DcContext;
|
||||
import com.b44t.messenger.DcLot;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.connect.DcHelper;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class ProxyListAdapter extends BaseAdapter {
|
||||
private enum ProxyState {
|
||||
CONNECTED,
|
||||
CONNECTING,
|
||||
NOT_CONNECTED,
|
||||
}
|
||||
|
||||
@NonNull private final Context context;
|
||||
@NonNull private final DcContext dcContext;
|
||||
@NonNull private final List<String> proxies = new LinkedList<>();
|
||||
@Nullable private ItemClickListener itemClickListener;
|
||||
@Nullable private ProxyState proxyState;
|
||||
@Nullable private String selectedProxy;
|
||||
|
||||
public ProxyListAdapter(@NonNull Context context)
|
||||
{
|
||||
this.context = context;
|
||||
this.dcContext = DcHelper.getContext(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return proxies.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getItem(int position) {
|
||||
return proxies.get(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
return position;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(final int position, View v, final ViewGroup parent) {
|
||||
if (v == null) {
|
||||
v = LayoutInflater.from(context).inflate(R.layout.proxy_list_item, parent, false);
|
||||
}
|
||||
|
||||
TextView host = v.findViewById(R.id.host);
|
||||
TextView protocol = v.findViewById(R.id.protocol);
|
||||
ImageView checkmark = v.findViewById(R.id.checkmark);
|
||||
TextView status = v.findViewById(R.id.status);
|
||||
|
||||
final String proxyUrl = (String)getItem(position);
|
||||
final DcLot qrParsed = dcContext.checkQr(proxyUrl);
|
||||
if (qrParsed.getState() == DcContext.DC_QR_PROXY) {
|
||||
host.setText(qrParsed.getText1());
|
||||
protocol.setText(proxyUrl.split(":", 2)[0]);
|
||||
} else {
|
||||
host.setText(proxyUrl);
|
||||
protocol.setText(R.string.unknown);
|
||||
}
|
||||
if (proxyUrl.equals(selectedProxy)) {
|
||||
checkmark.setVisibility(View.VISIBLE);
|
||||
if(dcContext.isConfigured() == 1 && dcContext.getConfigInt(CONFIG_PROXY_ENABLED) == 1) {
|
||||
status.setVisibility(View.VISIBLE);
|
||||
status.setText(getConnectivityString());
|
||||
} else {
|
||||
status.setVisibility(View.GONE);
|
||||
}
|
||||
} else {
|
||||
checkmark.setVisibility(View.GONE);
|
||||
status.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
v.setOnClickListener(view -> {
|
||||
if (itemClickListener != null) {
|
||||
itemClickListener.onItemClick(proxyUrl);
|
||||
}
|
||||
});
|
||||
v.findViewById(R.id.share).setOnClickListener(view -> {
|
||||
if (itemClickListener != null) {
|
||||
itemClickListener.onItemShare(proxyUrl);
|
||||
}
|
||||
});
|
||||
v.findViewById(R.id.delete).setOnClickListener(view -> {
|
||||
if (itemClickListener != null) {
|
||||
itemClickListener.onItemDelete(proxyUrl);
|
||||
}
|
||||
});
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
public void changeData(String newProxies) {
|
||||
proxies.clear();
|
||||
if (!TextUtils.isEmpty(newProxies)) {
|
||||
Collections.addAll(proxies, newProxies.split("\n"));
|
||||
}
|
||||
selectedProxy = proxies.isEmpty()? null : proxies.get(0);
|
||||
proxyState = null; // to force notifyDataSetChanged() in refreshConnectivity()
|
||||
refreshConnectivity();
|
||||
}
|
||||
|
||||
public void setSelectedProxy(String proxyUrl) {
|
||||
selectedProxy = proxyUrl;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
private String getConnectivityString() {
|
||||
if (proxyState == ProxyState.CONNECTED) {
|
||||
return context.getString(R.string.connectivity_connected);
|
||||
}
|
||||
if (proxyState == ProxyState.CONNECTING) {
|
||||
return context.getString(R.string.connectivity_connecting);
|
||||
}
|
||||
return context.getString(R.string.connectivity_not_connected);
|
||||
}
|
||||
|
||||
public void refreshConnectivity() {
|
||||
if (DcHelper.getInt(context, CONFIG_PROXY_ENABLED) != 1) {
|
||||
if (proxyState != ProxyState.NOT_CONNECTED) {
|
||||
proxyState = ProxyState.NOT_CONNECTED;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
int connectivity = dcContext.getConnectivity();
|
||||
if (connectivity >= DcContext.DC_CONNECTIVITY_WORKING) {
|
||||
if (proxyState != ProxyState.CONNECTED) {
|
||||
proxyState = ProxyState.CONNECTED;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
} else if (connectivity >= DcContext.DC_CONNECTIVITY_CONNECTING) {
|
||||
if (proxyState != ProxyState.CONNECTING) {
|
||||
proxyState = ProxyState.CONNECTING;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
} else if (proxyState != ProxyState.NOT_CONNECTED) {
|
||||
proxyState = ProxyState.NOT_CONNECTED;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public void setItemClickListener(@Nullable ItemClickListener listener) {
|
||||
itemClickListener = listener;
|
||||
}
|
||||
|
||||
public interface ItemClickListener {
|
||||
void onItemClick(String proxyUrl);
|
||||
void onItemShare(String proxyUrl);
|
||||
void onItemDelete(String proxyUrl);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,220 @@
|
||||
package org.thoughtcrime.securesms.proxy;
|
||||
|
||||
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_ENABLED;
|
||||
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_URL;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ListView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.ActionBar;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.widget.SwitchCompat;
|
||||
|
||||
import com.b44t.messenger.DcContext;
|
||||
import com.b44t.messenger.DcEvent;
|
||||
import com.b44t.messenger.DcLot;
|
||||
|
||||
import org.thoughtcrime.securesms.BaseActionBarActivity;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.connect.DcEventCenter;
|
||||
import org.thoughtcrime.securesms.connect.DcHelper;
|
||||
import org.thoughtcrime.securesms.util.DynamicTheme;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class ProxySettingsActivity extends BaseActionBarActivity
|
||||
implements ProxyListAdapter.ItemClickListener, DcEventCenter.DcEventDelegate {
|
||||
|
||||
private final DynamicTheme dynamicTheme = new DynamicTheme();
|
||||
private SwitchCompat proxySwitch;
|
||||
private ProxyListAdapter adapter;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle bundle) {
|
||||
super.onCreate(bundle);
|
||||
dynamicTheme.onCreate(this);
|
||||
setContentView(R.layout.proxy_settings_activity);
|
||||
|
||||
ActionBar actionBar = getSupportActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBar.setTitle(R.string.proxy_settings);
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
}
|
||||
|
||||
adapter = new ProxyListAdapter(this);
|
||||
adapter.setItemClickListener(this);
|
||||
|
||||
proxySwitch = findViewById(R.id.proxy_switch);
|
||||
proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_PROXY_ENABLED) == 1);
|
||||
proxySwitch.setOnClickListener(l -> {
|
||||
if (proxySwitch.isChecked() && adapter.getCount() == 0) {
|
||||
showAddProxyDialog();
|
||||
} else {
|
||||
DcHelper.set(this, CONFIG_PROXY_ENABLED, proxySwitch.isChecked()? "1" : "0");
|
||||
DcHelper.getContext(this).restartIo();
|
||||
}
|
||||
});
|
||||
|
||||
ListView proxyList = findViewById(R.id.proxy_list);
|
||||
proxyList.setAdapter(adapter);
|
||||
proxyList.addHeaderView(View.inflate(this, R.layout.proxy_list_header, null), null, false);
|
||||
View footer = View.inflate(this, R.layout.proxy_list_footer, null);
|
||||
footer.setOnClickListener(l -> showAddProxyDialog());
|
||||
proxyList.addFooterView(footer);
|
||||
adapter.changeData(DcHelper.get(this, CONFIG_PROXY_URL));
|
||||
DcHelper.getEventCenter(this).addObserver(DcContext.DC_EVENT_CONNECTIVITY_CHANGED, this);
|
||||
|
||||
handleOpenProxyUrl();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
handleOpenProxyUrl();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
dynamicTheme.onResume(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
DcHelper.getEventCenter(this).removeObservers(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 onItemClick(String proxyUrl) {
|
||||
if (DcHelper.getContext(this).setConfigFromQr(proxyUrl)) {
|
||||
DcHelper.getContext(this).restartIo();
|
||||
adapter.setSelectedProxy(proxyUrl);
|
||||
proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_PROXY_ENABLED) == 1);
|
||||
} else {
|
||||
Toast.makeText(this, R.string.proxy_invalid, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemShare(String proxyUrl) {
|
||||
Intent intent = new Intent(Intent.ACTION_SEND);
|
||||
intent.setType("text/plain");
|
||||
intent.putExtra(Intent.EXTRA_TEXT, proxyUrl);
|
||||
startActivity(Intent.createChooser(intent, getString(R.string.chat_share_with_title)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onItemDelete(String proxyUrl) {
|
||||
String host = DcHelper.getContext(this).checkQr(proxyUrl).getText1();
|
||||
AlertDialog dialog = new AlertDialog.Builder(this)
|
||||
.setTitle(R.string.proxy_delete)
|
||||
.setMessage(getString(R.string.proxy_delete_explain, host))
|
||||
.setPositiveButton(R.string.delete, (dlg, btn) -> deleteProxy(proxyUrl))
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.show();
|
||||
Util.redPositiveButton(dialog);
|
||||
}
|
||||
|
||||
private void deleteProxy(String proxyUrl) {
|
||||
final LinkedList<String> proxies = new LinkedList<>();
|
||||
for (String proxy: DcHelper.get(this, CONFIG_PROXY_URL).split("\n")) {
|
||||
if (!proxy.equals(proxyUrl)) {
|
||||
proxies.add(proxy);
|
||||
}
|
||||
}
|
||||
if (proxies.isEmpty()) {
|
||||
DcHelper.set(this, CONFIG_PROXY_ENABLED, "0");
|
||||
proxySwitch.setChecked(false);
|
||||
}
|
||||
String proxyUrls = String.join("\n", proxies);
|
||||
DcHelper.set(this, CONFIG_PROXY_URL, proxyUrls);
|
||||
DcHelper.getContext(this).restartIo();
|
||||
adapter.changeData(proxyUrls);
|
||||
}
|
||||
|
||||
private void showAddProxyDialog() {
|
||||
View view = View.inflate(this, R.layout.single_line_input, null);
|
||||
EditText inputField = view.findViewById(R.id.input_field);
|
||||
inputField.setHint(R.string.proxy_add_url_hint);
|
||||
|
||||
new AlertDialog.Builder(this)
|
||||
.setTitle(R.string.proxy_add)
|
||||
.setMessage(R.string.proxy_add_explain)
|
||||
.setView(view)
|
||||
.setPositiveButton(R.string.proxy_use_proxy, (dialog, whichButton) -> {
|
||||
String newProxy = inputField.getText().toString().trim();
|
||||
DcContext dcContext = DcHelper.getContext(this);
|
||||
final DcLot qrParsed = dcContext.checkQr(newProxy);
|
||||
if (qrParsed.getState() == DcContext.DC_QR_PROXY) {
|
||||
dcContext.setConfigFromQr(newProxy);
|
||||
DcHelper.getContext(this).restartIo();
|
||||
adapter.changeData(DcHelper.get(this, CONFIG_PROXY_URL));
|
||||
} else {
|
||||
Toast.makeText(this, R.string.proxy_invalid, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_PROXY_ENABLED) == 1);
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, (dialog, whichButton) -> {
|
||||
if (proxySwitch.isChecked() && adapter.getCount() == 0) {
|
||||
// user enabled switch without having proxies yet, revert
|
||||
proxySwitch.setChecked(false);
|
||||
}
|
||||
})
|
||||
.setCancelable(false)
|
||||
.show();
|
||||
}
|
||||
|
||||
private void handleOpenProxyUrl() {
|
||||
if (getIntent() != null && Intent.ACTION_VIEW.equals(getIntent().getAction())) {
|
||||
Uri uri = getIntent().getData();
|
||||
if (uri == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
DcContext dcContext = DcHelper.getContext(this);
|
||||
final DcLot qrParsed = dcContext.checkQr(uri.toString());
|
||||
if (qrParsed.getState() == DcContext.DC_QR_PROXY) {
|
||||
new AlertDialog.Builder(this)
|
||||
.setTitle(R.string.proxy_use_proxy)
|
||||
.setMessage(getString(R.string.proxy_use_proxy_confirm, qrParsed.getText1()))
|
||||
.setPositiveButton(R.string.proxy_use_proxy, (dlg, btn) -> {
|
||||
dcContext.setConfigFromQr(uri.toString());
|
||||
dcContext.restartIo();
|
||||
adapter.changeData(DcHelper.get(this, CONFIG_PROXY_URL));
|
||||
proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_PROXY_ENABLED) == 1);
|
||||
})
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.setCancelable(false)
|
||||
.show();
|
||||
} else {
|
||||
Toast.makeText(this, R.string.proxy_invalid, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleEvent(@NonNull DcEvent event) {
|
||||
if (event.getId() == DcContext.DC_EVENT_CONNECTIVITY_CHANGED) {
|
||||
adapter.refreshConnectivity();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -64,7 +64,6 @@ public class BackupProviderFragment extends Fragment implements DcEventCenter.Dc
|
||||
progressBar.setIndeterminate(true);
|
||||
|
||||
dcContext = DcHelper.getContext(getActivity());
|
||||
dcContext.assumeMultiDevice();
|
||||
DcHelper.getEventCenter(getActivity()).addObserver(DcContext.DC_EVENT_IMEX_PROGRESS, this);
|
||||
|
||||
prepareThread = new Thread(() -> {
|
||||
@@ -174,17 +173,8 @@ public class BackupProviderFragment extends Fragment implements DcEventCenter.Dc
|
||||
if (permille == 0) {
|
||||
getTransferActivity().setTransferError("Sending Error");
|
||||
hideQrCode = true;
|
||||
} else if(permille <= 350) {
|
||||
statusLineText = getString(R.string.preparing_account);
|
||||
} else if(permille <= 400) {
|
||||
statusLine.setVisibility(View.GONE);
|
||||
progressBar.setVisibility(View.GONE);
|
||||
statusLineText = getString(R.string.waiting_for_receiver);
|
||||
} else if(permille <= 450) {
|
||||
statusLineText = getString(R.string.receiver_connected);
|
||||
hideQrCode = true;
|
||||
} else if (permille < 1000) {
|
||||
percent = (permille-450)/5;
|
||||
percent = permille/10;
|
||||
percentMax = 100;
|
||||
statusLineText = getString(R.string.transferring);
|
||||
hideQrCode = true;
|
||||
|
||||
@@ -81,20 +81,14 @@ public class BackupReceiverFragment extends Fragment implements DcEventCenter.Dc
|
||||
Log.i(TAG,"DC_EVENT_IMEX_PROGRESS, " + permille);
|
||||
if (permille == 0) {
|
||||
getTransferActivity().setTransferError("Receiving Error");
|
||||
} else if (permille <= 100) {
|
||||
statusLineText = getString(R.string.preparing_account);
|
||||
hideSameNetworkHint = true;
|
||||
} else if (permille <= 950 ) {
|
||||
percent = ((permille-100)*100)/850;
|
||||
} else if (permille < 1000) {
|
||||
percent = permille/10;
|
||||
percentMax = 100;
|
||||
statusLineText = getString(R.string.transferring) + String.format(Util.getLocale(), " %d%%", percent);
|
||||
hideSameNetworkHint = true;
|
||||
} else if (permille < 1000) {
|
||||
statusLineText = "Finishing..."; // range not used, should not happen
|
||||
} else if (permille == 1000) {
|
||||
getTransferActivity().setTransferState(BackupTransferActivity.TransferState.TRANSFER_SUCCESS);
|
||||
getTransferActivity().doFinish();
|
||||
dcContext.assumeMultiDevice();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -89,6 +89,17 @@ public class QrCodeHandler {
|
||||
BackupTransferActivity.appendSSID(activity, alertDialog.findViewById(android.R.id.message));
|
||||
return;
|
||||
|
||||
case DcContext.DC_QR_PROXY:
|
||||
builder.setTitle(R.string.proxy_use_proxy);
|
||||
builder.setMessage(activity.getString(R.string.proxy_use_proxy_confirm, qrParsed.getText1()));
|
||||
builder.setPositiveButton(R.string.proxy_use_proxy, (dlg, btn) -> {
|
||||
dcContext.setConfigFromQr(rawString);
|
||||
dcContext.restartIo();
|
||||
});
|
||||
builder.setNegativeButton(R.string.cancel, null);
|
||||
builder.setCancelable(false);
|
||||
break;
|
||||
|
||||
case DcContext.DC_QR_WEBRTC:
|
||||
builder.setMessage(activity.getString(R.string.videochat_instance_from_qr, qrParsed.getText1()));
|
||||
builder.setPositiveButton(R.string.ok, (dialog, which) -> {
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
package org.thoughtcrime.securesms.service;
|
||||
|
||||
import android.app.Notification;
|
||||
import android.app.Service;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.IBinder;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.app.NotificationCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import org.thoughtcrime.securesms.ApplicationContext;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.notifications.FcmReceiveService;
|
||||
import org.thoughtcrime.securesms.notifications.NotificationCenter;
|
||||
import org.thoughtcrime.securesms.util.Util;
|
||||
|
||||
public final class FetchForegroundService extends Service {
|
||||
private static final String TAG = FcmReceiveService.class.getSimpleName();
|
||||
private static final Object SERVICE_LOCK = new Object();
|
||||
private static Intent service;
|
||||
|
||||
public static void start(Context context) {
|
||||
GenericForegroundService.createFgNotificationChannel(context);
|
||||
synchronized (SERVICE_LOCK) {
|
||||
if (service == null) {
|
||||
service = new Intent(context, FetchForegroundService.class);
|
||||
ContextCompat.startForegroundService(context, service);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void stop(Context context) {
|
||||
synchronized (SERVICE_LOCK) {
|
||||
if (service != null) {
|
||||
context.stopService(service);
|
||||
service = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
Log.i(TAG, "Creating fetch service");
|
||||
super.onCreate();
|
||||
|
||||
Notification notification = new NotificationCompat.Builder(this, NotificationCenter.CH_GENERIC)
|
||||
.setContentTitle(getString(R.string.connectivity_updating))
|
||||
.setSmallIcon(R.drawable.notification_permanent)
|
||||
.build();
|
||||
|
||||
startForeground(NotificationCenter.ID_FETCH, notification);
|
||||
|
||||
Util.runOnAnyBackgroundThread(() -> {
|
||||
Log.i(TAG, "Starting fetch");
|
||||
if (!ApplicationContext.dcAccounts.backgroundFetch(300)) { // as startForeground() was called, there is time
|
||||
FetchForegroundService.stop(this);
|
||||
} // else we stop FetchForegroundService on DC_EVENT_ACCOUNTS_BACKGROUND_FETCH_DONE
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
stopForeground(true);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -185,7 +185,7 @@ public final class GenericForegroundService extends Service {
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.O)
|
||||
static private void createFgNotificationChannel(Context context) {
|
||||
static public void createFgNotificationChannel(Context context) {
|
||||
if(!CHANNEL_CREATED.get() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
CHANNEL_CREATED.set(true);
|
||||
NotificationChannel channel = new NotificationChannel(NotificationCenter.CH_GENERIC,
|
||||
|
||||
@@ -81,7 +81,14 @@ public class LongClickCopySpan extends ClickableSpan {
|
||||
QrCodeHandler qrCodeHandler = new QrCodeHandler((Activity) widget.getContext());
|
||||
qrCodeHandler.handleQrData(url);
|
||||
} else {
|
||||
IntentUtils.showBrowserIntent(widget.getContext(), url);
|
||||
Activity activity = (Activity) widget.getContext();
|
||||
DcContext dcContext = DcHelper.getContext(activity);
|
||||
if (dcContext.checkQr(url).getState() == DcContext.DC_QR_PROXY) {
|
||||
QrCodeHandler qrCodeHandler = new QrCodeHandler(activity);
|
||||
qrCodeHandler.handleQrData(url);
|
||||
} else {
|
||||
IntentUtils.showBrowserIntent(widget.getContext(), url);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="228"
|
||||
android:viewportHeight="280"
|
||||
android:tint="#FFFFFF"
|
||||
android:alpha="0.5">
|
||||
<group android:scaleX="0.7491429"
|
||||
android:scaleY="0.92"
|
||||
android:translateX="28.597713"
|
||||
android:translateY="11.2">>
|
||||
|
||||
<path android:fillColor="#ffffff" android:pathData="m10.03,234.14c0.3,-0.01 0.6,-0.02 0.9,-0.04 -0.07,-0.49 -0.14,-0.97 -0.2,-1.46 -0.15,-1.34 -0.26,-2.69 -0.25,-4.04 -0.02,-0.86 -0.05,-1.71 -0.07,-2.57 -0.09,-0.06 -0.18,-0.13 -0.27,-0.19 -0.02,-0.02 -0.04,-0.03 -0.07,-0.05zM44.87,232.95c11.71,-8.35 26.86,-14.79 46.21,-15.9 0,0 39.93,-0.27 47.91,-3.53 7.98,-3.26 68.68,-14.69 82.94,-98.43 14.26,-83.74 -1.06,-115.09 -1.06,-115.09 0,0 -21.14,55.68 -81.02,59.81 0,0 -14.5,1.03 -38.82,1.42 -24.32,0.39 -75.77,20.65 -90.55,85.62l-0.22,43.44c2.5,4.22 5.49,8.12 8.91,11.66 3.99,4.11 8.11,8.12 12.79,11.45 2.26,1.65 4.65,3.2 6.51,5.33 1.94,2.34 3.33,5 4.2,7.93 0.71,2.1 1.45,4.2 2.2,6.28z"/>
|
||||
|
||||
<path android:fillColor="#ffffff" android:pathData="m217.97,45.86c-0.3,0.01 -0.6,0.02 -0.9,0.04 0.07,0.49 0.14,0.97 0.2,1.46 0.15,1.34 0.26,2.69 0.25,4.04 0.02,0.86 0.05,1.71 0.07,2.57 0.09,0.06 0.18,0.13 0.27,0.19 0.02,0.02 0.04,0.03 0.07,0.05zM183.13,47.05c-11.71,8.35 -26.86,14.79 -46.21,15.9 0,0 -39.93,0.27 -47.91,3.53 -7.98,3.26 -68.68,14.69 -82.94,98.43 -14.26,83.74 1.06,115.09 1.06,115.09 0,0 21.14,-55.68 81.02,-59.81 0,0 14.5,-1.03 38.82,-1.42 24.32,-0.39 75.77,-20.65 90.55,-85.62l0.22,-43.44c-2.5,-4.22 -5.49,-8.12 -8.91,-11.66 -3.99,-4.11 -8.11,-8.12 -12.79,-11.45 -2.26,-1.65 -4.65,-3.2 -6.51,-5.33 -1.94,-2.34 -3.33,-5 -4.2,-7.93 -0.71,-2.1 -1.45,-4.2 -2.2,-6.28z"/>
|
||||
|
||||
</group>
|
||||
</vector>
|
||||
|
Before Width: | Height: | Size: 956 B After Width: | Height: | Size: 432 B |
|
Before Width: | Height: | Size: 740 B After Width: | Height: | Size: 287 B |
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- TODO - Consolidate using attr if we move away from API 19 -->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||
<stroke android:width="2dp" android:color="@color/gray50"/>
|
||||
<stroke android:width="1dp" android:color="@color/gray50"/>
|
||||
<corners android:radius="8dp"/>
|
||||
</shape>
|
||||
|
||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 552 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 822 B |
@@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:tint="#FFFFFF"
|
||||
android:viewportHeight="24" android:viewportWidth="24"
|
||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M20,5V4c0,-0.55 -0.45,-1 -1,-1h-2c-0.55,0 -1,0.45 -1,1v1h-1v4c0,0.55 0.45,1 1,1h1v7c0,1.1 -0.9,2 -2,2s-2,-0.9 -2,-2V7c0,-2.21 -1.79,-4 -4,-4S5,4.79 5,7v7H4c-0.55,0 -1,0.45 -1,1v4h1v1c0,0.55 0.45,1 1,1h2c0.55,0 1,-0.45 1,-1v-1h1v-4c0,-0.55 -0.45,-1 -1,-1H7V7c0,-1.1 0.9,-2 2,-2s2,0.9 2,2v10c0,2.21 1.79,4 4,4s4,-1.79 4,-4v-7h1c0.55,0 1,-0.45 1,-1V5H20z"/>
|
||||
</vector>
|
||||
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- TODO - Consolidate using attr if we move away from API 19 -->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||
<solid android:color="@color/def_primary_lite"/>
|
||||
<solid android:color="?attr/fab_color"/>
|
||||
<corners android:radius="8dp"/>
|
||||
</shape>
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- TODO - Consolidate using attr if we move away from API 19 -->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||
<solid android:color="@color/blue_primary_lite"/>
|
||||
<corners android:radius="8dp"/>
|
||||
</shape>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- TODO - Consolidate using attr if we move away from API 19 -->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||
<solid android:color="@color/gray_primary_lite"/>
|
||||
<corners android:radius="8dp"/>
|
||||
</shape>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- TODO - Consolidate using attr if we move away from API 19 -->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||
<solid android:color="@color/green_primary_lite"/>
|
||||
<corners android:radius="8dp"/>
|
||||
</shape>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- TODO - Consolidate using attr if we move away from API 19 -->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||
<solid android:color="@color/pink_primary_lite"/>
|
||||
<corners android:radius="8dp"/>
|
||||
</shape>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- TODO - Consolidate using attr if we move away from API 19 -->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||
<solid android:color="@color/purple_primary_lite"/>
|
||||
<corners android:radius="8dp"/>
|
||||
</shape>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- TODO - Consolidate using attr if we move away from API 19 -->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||
<solid android:color="@color/red_primary_lite"/>
|
||||
<corners android:radius="8dp"/>
|
||||
</shape>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- TODO - Consolidate using attr if we move away from API 19 -->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
|
||||
<stroke android:width="2px" android:color="@color/def_primary"/>
|
||||
<stroke android:width="2px" android:color="?attr/fab_color"/>
|
||||
<corners android:radius="8dp"/>
|
||||
</shape>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
android:shape="rectangle">
|
||||
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
|
||||
<solid android:color="@color/blue_primary" />
|
||||
<solid android:color="@color/delete_account_item_bg" />
|
||||
<corners android:radius="8dp" />
|
||||
</shape>
|
||||
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 630 KiB |
@@ -1,6 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
|
||||
<solid android:color="@color/def_primary" />
|
||||
<solid android:color="?attr/fab_color" />
|
||||
</shape>
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
|
||||
<solid android:color="@color/gray_primary" />
|
||||
</shape>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
|
||||
<solid android:color="@color/green_primary" />
|
||||
</shape>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
|
||||
<solid android:color="@color/pink_primary" />
|
||||
</shape>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
|
||||
<solid android:color="@color/purple_primary" />
|
||||
</shape>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
|
||||
<solid android:color="@color/red_primary" />
|
||||
</shape>
|
||||
@@ -126,7 +126,7 @@
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginLeft="12dp"
|
||||
android:layout_marginRight="12dp"
|
||||
android:background="?attr/send_button_bg"
|
||||
android:background="@drawable/send_button_bg"
|
||||
android:layout_gravity="center_vertical">
|
||||
|
||||
<ImageButton
|
||||
|
||||
@@ -1,97 +1,112 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@id/container"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@id/container"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:contentInsetStart="14dp"
|
||||
app:contentInsetLeft="14dp"
|
||||
android:elevation="4dp"
|
||||
android:theme="?attr/actionBarStyle">
|
||||
<androidx.appcompat.widget.Toolbar
|
||||
android:id="@+id/toolbar"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:minHeight="?attr/actionBarSize"
|
||||
android:background="?attr/colorPrimary"
|
||||
app:contentInsetStart="0dp"
|
||||
app:contentInsetLeft="0dp"
|
||||
android:elevation="4dp"
|
||||
android:theme="?attr/actionBarStyle">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/self_avatar_container"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="45dp">
|
||||
<org.thoughtcrime.securesms.components.AvatarView
|
||||
android:id="@+id/self_avatar"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:clickable="true"
|
||||
app:inverted="true"
|
||||
android:contentDescription="@string/pref_profile_info_headline" />
|
||||
<ImageView android:id="@+id/unread_indicator"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginStart="20dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:contentDescription="@null"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
</RelativeLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/avatar_and_title"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:paddingStart="14dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginEnd="10dp">
|
||||
|
||||
<org.thoughtcrime.securesms.components.emoji.EmojiTextView style="@style/TextSecure.TitleTextStyle"
|
||||
android:id="@+id/toolbar_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/app_name"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:paddingRight="10dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"/>
|
||||
<RelativeLayout
|
||||
android:id="@+id/self_avatar_container"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="45dp">
|
||||
<org.thoughtcrime.securesms.components.AvatarView
|
||||
android:id="@+id/self_avatar"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginEnd="10dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:clickable="true"
|
||||
app:inverted="true"
|
||||
android:contentDescription="@string/pref_profile_info_headline" />
|
||||
<ImageView
|
||||
android:id="@+id/unread_indicator"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginStart="20dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:contentDescription="@null"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
</RelativeLayout>
|
||||
|
||||
<ImageView android:id="@+id/search_action"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@drawable/ic_search_white_24dp"
|
||||
android:paddingRight="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:paddingLeft="12dp"
|
||||
android:paddingStart="12dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:contentDescription="@string/search"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.appcompat.widget.Toolbar>
|
||||
|
||||
<FrameLayout android:id="@+id/fragment_container"
|
||||
android:layout_below="@id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<org.thoughtcrime.securesms.components.SearchToolbar
|
||||
android:id="@+id/search_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
|
||||
style="@style/TextSecure.TitleTextStyle"
|
||||
android:id="@+id/toolbar_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:elevation="4dp"
|
||||
android:visibility="invisible"
|
||||
tools:visibility="visible"/>
|
||||
android:text="@string/app_name"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:paddingRight="10dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"/>
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/search_action"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@drawable/ic_search_white_24dp"
|
||||
android:paddingRight="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:paddingLeft="12dp"
|
||||
android:paddingStart="12dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:contentDescription="@string/search"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.appcompat.widget.Toolbar>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/fragment_container"
|
||||
android:layout_below="@id/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<org.thoughtcrime.securesms.components.SearchToolbar
|
||||
android:id="@+id/search_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:elevation="4dp"
|
||||
android:visibility="invisible"
|
||||
tools:visibility="visible"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="20dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="10dp"
|
||||
android:text="@string/delete_account_ask" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:background="@drawable/delete_account_item_background">
|
||||
|
||||
<org.thoughtcrime.securesms.components.AvatarView
|
||||
android:id="@+id/avatar"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginStart="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
|
||||
android:id="@+id/name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="marquee"
|
||||
android:singleLine="true"
|
||||
android:fontFamily="sans-serif"
|
||||
android:textSize="16sp"
|
||||
tools:text="Frieeeeeeedrich Nieeeeeeeeeetzsche" />
|
||||
|
||||
<TextView
|
||||
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" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/size_label"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textSize="12sp"
|
||||
android:fontFamily="sans-serif-light"
|
||||
tools:text="150 MB" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="10dp"
|
||||
android:text="@string/delete_account_explain_with_name"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
||||
|
||||
@@ -7,13 +7,14 @@
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView android:id="@+id/avatar"
|
||||
@@ -42,8 +43,6 @@
|
||||
android:id="@+id/information_label"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:gravity="start"
|
||||
android:text="@string/set_name_and_avatar_explain"
|
||||
@@ -54,11 +53,9 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="start"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text=""
|
||||
android:textColor="@color/def_accent"
|
||||
android:textColor="?attr/colorAccent"
|
||||
android:textSize="16sp"/>
|
||||
|
||||
<Button
|
||||
@@ -68,20 +65,38 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:text="@string/instant_onboarding_create"/>
|
||||
|
||||
<Button
|
||||
style="@style/ButtonSecondary"
|
||||
android:id="@+id/other_options_button"
|
||||
android:id="@+id/use_other_server"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:layout_margin="16dp"
|
||||
android:text="@string/instant_onboarding_show_more_instances" />
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/instant_onboarding_other_server"/>
|
||||
|
||||
<Button
|
||||
style="@style/ButtonSecondary"
|
||||
android:id="@+id/login_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/manual_account_setup_option"/>
|
||||
|
||||
<Button
|
||||
style="@style/ButtonSecondary"
|
||||
android:id="@+id/scan_qr_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:layout_marginTop="16dp"
|
||||
android:text="@string/scan_invitation_code"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:background="?attr/conversation_list_item_background"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:text="@string/proxy_add"
|
||||
android:drawablePadding="5dp"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="marquee"
|
||||
android:fontFamily="sans-serif"
|
||||
android:textSize="16sp"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TextView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:text="@string/proxy_list_header"
|
||||
android:textColor="?attr/colorAccent"
|
||||
android:textSize="16sp"
|
||||
android:textStyle="bold"
|
||||
android:typeface="sans"
|
||||
/>
|
||||
@@ -0,0 +1,106 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:background="?attr/conversation_list_item_background"
|
||||
android:paddingEnd="6dp"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/host"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_toStartOf="@id/share"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingTop="10dp"
|
||||
android:drawablePadding="5dp"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="marquee"
|
||||
android:fontFamily="sans-serif"
|
||||
android:textSize="16sp"
|
||||
tools:text="127.0.0.1:1080"
|
||||
/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_below="@+id/host"
|
||||
android:layout_toStartOf="@id/share"
|
||||
android:layout_marginTop="5dp"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:gravity="center_vertical"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/checkmark"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical|end"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:contentDescription="@null"
|
||||
android:src="@drawable/ic_delivery_status_sent"
|
||||
app:tint="?attr/conversation_list_item_date_color"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="marquee"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textSize="14sp"
|
||||
android:fontFamily="sans-serif-light"
|
||||
tools:text="@string/connectivity_connected"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/protocol"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="5dp"
|
||||
android:paddingRight="5dp"
|
||||
android:paddingTop="1dp"
|
||||
android:paddingBottom="1dp"
|
||||
android:textAllCaps="true"
|
||||
android:textColor="?attr/conversation_list_item_date_color"
|
||||
android:background="@drawable/archived_indicator_background"
|
||||
style="@style/Signal.Text.Caption"
|
||||
tools:text="socks5"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/share"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_toStartOf="@id/delete"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@string/menu_share"
|
||||
android:background="@drawable/touch_highlight_background"
|
||||
android:src="@drawable/ic_share_white_24dp"
|
||||
app:tint="?attr/conversation_list_item_date_color"
|
||||
/>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/delete"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:contentDescription="@string/delete"
|
||||
android:background="@drawable/touch_highlight_background"
|
||||
android:src="@drawable/ic_delete_white_24dp"
|
||||
app:tint="?attr/conversation_list_item_date_color"
|
||||
/>
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
tools:context=".proxy.ProxySettingsActivity">
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/proxy_switch"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:text="@string/proxy_use_proxy" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/proxy_list"
|
||||
android:paddingTop="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -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" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/advanced_icon"
|
||||
@@ -151,6 +151,17 @@
|
||||
app:layout_constraintStart_toEndOf="@id/advanced_icon"
|
||||
app:layout_constraintTop_toBottomOf="@id/no_servers_hint" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/proxy_settings"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:text="@string/proxy_use_proxy"
|
||||
app:layout_constraintEnd_toEndOf="@id/guideline_root_end"
|
||||
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
|
||||
app:layout_constraintTop_toBottomOf="@id/advanced_text" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/inbox"
|
||||
android:layout_width="wrap_content"
|
||||
@@ -159,7 +170,7 @@
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="@string/login_inbox"
|
||||
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
|
||||
app:layout_constraintTop_toBottomOf="@id/advanced_text" />
|
||||
app:layout_constraintTop_toBottomOf="@id/proxy_settings" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/imap_login"
|
||||
@@ -378,110 +389,6 @@
|
||||
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
|
||||
app:layout_constraintTop_toBottomOf="@id/cert_check_label" />
|
||||
|
||||
<androidx.appcompat.widget.SwitchCompat
|
||||
android:id="@+id/socks5_switch"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:text="@string/login_socks5_use_socks5"
|
||||
app:layout_constraintEnd_toEndOf="@id/guideline_root_end"
|
||||
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
|
||||
app:layout_constraintTop_toBottomOf="@id/cert_check" />
|
||||
|
||||
<androidx.constraintlayout.widget.Group
|
||||
android:id="@+id/socks5_group"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="gone"
|
||||
app:constraint_referenced_ids="socks5_experimental_warning, socks5_host, socks5_port, socks5_user, socks5_password" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/socks5_experimental_warning"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="left"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingTop="1dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:text="@string/login_socks5_experimental_warning"
|
||||
android:textColor="@color/gray50"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/socks5_switch" />
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/socks5_host"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="58dp"
|
||||
app:errorEnabled="true"
|
||||
app:layout_constraintEnd_toEndOf="@id/guideline_root_end"
|
||||
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
|
||||
app:layout_constraintTop_toBottomOf="@id/socks5_experimental_warning">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/socks5_host_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/login_socks5_host"
|
||||
android:inputType="textUri|textNoSuggestions" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/socks5_port"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="58dp"
|
||||
app:errorEnabled="true"
|
||||
app:layout_constraintEnd_toEndOf="@id/guideline_root_end"
|
||||
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
|
||||
app:layout_constraintTop_toBottomOf="@id/socks5_host">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/socks5_port_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/login_socks5_port"
|
||||
android:inputType="number" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/socks5_user"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="@id/guideline_root_end"
|
||||
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
|
||||
app:layout_constraintTop_toBottomOf="@id/socks5_port">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/socks5_user_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="textNoSuggestions"
|
||||
android:hint="@string/login_socks5_user" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<com.google.android.material.textfield.TextInputLayout
|
||||
android:id="@+id/socks5_password"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="@id/guideline_root_end"
|
||||
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
|
||||
app:layout_constraintTop_toBottomOf="@id/socks5_user"
|
||||
app:passwordToggleEnabled="true">
|
||||
|
||||
<com.google.android.material.textfield.TextInputEditText
|
||||
android:id="@+id/socks5_password_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:hint="@string/login_socks5_password"
|
||||
android:inputType="textPassword" />
|
||||
|
||||
</com.google.android.material.textfield.TextInputLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/view_log_button"
|
||||
android:layout_width="0dp"
|
||||
@@ -495,7 +402,7 @@
|
||||
android:paddingBottom="32dp"
|
||||
app:layout_constraintEnd_toEndOf="@id/guideline_root_end"
|
||||
app:layout_constraintStart_toStartOf="@id/guideline_root_start"
|
||||
app:layout_constraintTop_toBottomOf="@id/socks5_password" />
|
||||
app:layout_constraintTop_toBottomOf="@id/cert_check" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/sub_header"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="7dp"
|
||||
android:background="?attr/send_button_bg"
|
||||
android:background="@drawable/send_button_bg"
|
||||
android:contentDescription="@string/menu_send"
|
||||
tools:src="@drawable/ic_send_push_white_24dp" />
|
||||
|
||||
|
||||
@@ -53,14 +53,23 @@
|
||||
|
||||
<Button
|
||||
style="@style/ButtonSecondary"
|
||||
android:id="@+id/signin_button"
|
||||
android:id="@+id/add_as_second_device_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="24dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:text="@string/onboarding_alternative_logins"/>
|
||||
android:text="@string/multidevice_receiver_title"/>
|
||||
|
||||
<Button
|
||||
style="@style/ButtonSecondary"
|
||||
android:id="@+id/backup_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="24dp"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:text="@string/import_backup_title"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<menu
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item android:title="@string/proxy_settings"
|
||||
android:id="@+id/menu_proxy_settings"
|
||||
app:showAsAction="never"/>
|
||||
|
||||
<item android:title="@string/pref_view_log"
|
||||
android:id="@+id/menu_view_log"
|
||||
app:showAsAction="never"/>
|
||||
|
||||
</menu>
|
||||
@@ -5,7 +5,7 @@
|
||||
<item android:title="@string/qr_code"
|
||||
android:id="@+id/menu_qr"
|
||||
android:icon="@drawable/baseline_qr_code_24"
|
||||
app:showAsAction="always"/>
|
||||
app:showAsAction="ifRoom"/>
|
||||
|
||||
<item android:title="@string/invite_friends"
|
||||
android:id="@+id/menu_invite_friends" />
|
||||
@@ -18,6 +18,13 @@
|
||||
android:visible="false"
|
||||
/>
|
||||
|
||||
<item android:title="@string/proxy_settings"
|
||||
android:id="@+id/menu_proxy_settings"
|
||||
android:icon="@drawable/baseline_proxy_24"
|
||||
app:showAsAction="always"
|
||||
android:visible="false"
|
||||
/>
|
||||
|
||||
<item android:title="@string/menu_settings"
|
||||
android:id="@+id/menu_settings" />
|
||||
|
||||
|
||||
@@ -321,6 +321,7 @@
|
||||
<string name="videochat_tap_to_open">Докоснете, за да отворите</string>
|
||||
<string name="videochat_instance">Сървър за видеочат</string>
|
||||
<string name="videochat_instance_placeholder">Вашият сървър за видеочат</string>
|
||||
<!-- Do not translate "$ROOM", since it is a fixed token ArcaneChat will replace with a generated room ID like "aOclju5eCky" -->
|
||||
<string name="videochat_instance_example">Примери: https://meet.jit.si/$ROOM или basicwebrtc:https://вашият-сървър</string>
|
||||
<string name="videochat_instance_explain_2">Ако настройката е разрешена, можете да започвате видеочат от всеки чат. Изисква съвместимо приложение или браузър и от двете страни.</string>
|
||||
<string name="videochat_instance_from_qr">Да се използва ли \"%1$s\" за поканване на други към видеочатове?\n\nСлед като тази настройка бъде зададена, ще можете да започвате видеочат от всеки чат. Тя ще замени предишната настройка за видеочатове, ако има такава.</string>
|
||||
@@ -496,7 +497,7 @@
|
||||
<string name="multidevice_title">Добавяне на допълнително устройство</string>
|
||||
<string name="multidevice_same_network_hint">Уверете се, че и двете устройства са свързани към една и съща Wi-Fi или друга мрежа</string>
|
||||
<string name="multidevice_this_creates_a_qr_code">Ще бъде създаден QR код, чрез сканиране на който другото устройство може да копира акаунта.</string>
|
||||
<string name="multidevice_install_dc_on_other_device">Инсталирайте ArcaneChat на другото Ви устройство (https://get.delta.chat)</string>
|
||||
<string name="multidevice_install_dc_on_other_device">Инсталирайте ArcaneChat на другото Ви устройство (https://github.com/ArcaneChat)</string>
|
||||
<!-- "I Already Have a Profile / Add as Second Device” should be the same text as defined by the keys onboarding_alternative_logins and multidevice_receiver_title -->
|
||||
<string name="multidevice_tap_scan_on_other_device">Стартирайте ArcaneChat, докоснете \"Добавяне като допълнително устройство\" и сканирайте кода, показан тук</string>
|
||||
<!-- Shown inside a "QR code card" with very limited space; please formulate the text as short as possible therefore. The placeholder will be replaced by name and/or address eg. "Scan to set up second device for Alice (alice@example.org)" -->
|
||||
@@ -591,13 +592,14 @@
|
||||
<string name="login_smtp_port">SMTP порт</string>
|
||||
<string name="login_smtp_security">Сигурност на SMTP връзката</string>
|
||||
<string name="login_auth_method">Метод за оторизация</string>
|
||||
<!-- the word "SOCKS5" here and in the following strings should not be translated in most cases -->
|
||||
<!-- deprecated -->
|
||||
<string name="login_socks5">SOCKS5</string>
|
||||
<string name="login_socks5_use_socks5">Да се използва SOCKS5</string>
|
||||
<string name="login_socks5_host">SOCKS5 хост</string>
|
||||
<string name="login_socks5_port">SOCKS5 порт</string>
|
||||
<string name="login_socks5_user">SOCKS5 потребител</string>
|
||||
<string name="login_socks5_password">SOCKS5 парола</string>
|
||||
|
||||
<string name="login_info_oauth2_title">Да се продължи ли с опростената настройка?</string>
|
||||
<string name="login_info_oauth2_text">Въведеният адрес за електронна поща поддържа опростена настройка (OAuth 2.0).\n\nНа следващата стъпка, моля позволете на ArcaneChat да действа в качеството си на избраното от Вас приложение за чат върху електронна поща.\n\nArcaneChat няма сървъри, Вашите данни стоят на Вашето устройство.</string>
|
||||
<string name="login_certificate_checks">Проверки на сертификатите</string>
|
||||
@@ -907,7 +909,7 @@
|
||||
<string name="devicemsg_storage_exceeding">⚠️ Мястото за съхранение, предоставено от Вашия доставчик, скоро ще бъде изчерпано:%1$s%% вече са използвани.\n\nМоже да нямате възможност да получавате съобщения, ако мястото за съхранение е заето напълно.\n\n👉 Моля, проверете дали не бихте могли да изтриете стари данни през уеб интерфейса на доставчика и обмислете дали да не включите \"Настройки / Изтриване на старите съобщения\". Можете по всяко време да проверите текущо използваното място за съхранение в \"Настройки / Свързаност\".</string>
|
||||
<!-- %1%s will be replaced by date and time in some human-readable format -->
|
||||
<string name="devicemsg_bad_time">⚠️ Изглежда датата и часът на Вашето устройство са неточни (%1$s).\n\nНастройте часовника ⏰🔧, за да имате сигурност, че Вашите съобщения се получават правилно.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Възможно е версията на Вашия ArcaneChat да е неактуална.\n\nТова може да създаде проблеми, тъй като Вашите чат партньори използват по-нови версии; освен това Ви липсват най-новите възможности.😳\nМоля, проверете за актуализации на https://get.delta.chat или в ползвания от Вас магазин за приложения.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Възможно е версията на Вашия ArcaneChat да е неактуална.\n\nТова може да създаде проблеми, тъй като Вашите чат партньори използват по-нови версии; освен това Ви липсват най-новите възможности.😳\nМоля, проверете за актуализации на https://github.com/ArcaneChat или в ползвания от Вас магазин за приложения.</string>
|
||||
|
||||
<!-- Some options as "Add Second Device" or "Backup" may require the system PIN/Fingerprint/Gesture/Etc. to be entered in a system dialog. This hint is added to the system dialog, below a title as "Add Second Device" or "Backup". -->
|
||||
<string name="enter_system_secret_to_continue">Отключете, за да продължите</string>
|
||||
@@ -974,6 +976,7 @@
|
||||
<string name="mailto_link_could_not_be_decoded">Неуспешно декодиране на mailto връзка: %1$s</string>
|
||||
|
||||
<!-- notifications -->
|
||||
<!-- deprecated, use mark_as_read or mark_as_read_short -->
|
||||
<string name="notify_dismiss">Затваряне</string>
|
||||
<string name="notify_reply_button">Отговор</string>
|
||||
<string name="notify_new_message">Ново съобщение</string>
|
||||
|
||||
@@ -313,6 +313,7 @@
|
||||
<string name="videochat_tap_to_open">Toca per obrir-ho</string>
|
||||
<string name="videochat_instance">Instància de vídeo xat</string>
|
||||
<string name="videochat_instance_placeholder">La vostra instància de vídeo xat</string>
|
||||
<!-- Do not translate "$ROOM", since it is a fixed token ArcaneChat will replace with a generated room ID like "aOclju5eCky" -->
|
||||
<string name="videochat_instance_example">Exemples: https://meet.jit.si/$ROOM o basicwebrtc:https://your-server</string>
|
||||
<string name="videochat_invitation">Invitació a un vídeo xat</string>
|
||||
<string name="videochat_invitation_body">Heu sigut convidats a un vídeo xat, cliqueu %1$s per unir-vos-hi.</string>
|
||||
@@ -510,7 +511,7 @@
|
||||
<string name="login_smtp_port">Port SMTP</string>
|
||||
<string name="login_smtp_security">Seguretat SMTP</string>
|
||||
<string name="login_auth_method">Mètode d\'autorització</string>
|
||||
<!-- the word "SOCKS5" here and in the following strings should not be translated in most cases -->
|
||||
<!-- deprecated -->
|
||||
<string name="login_socks5">SOCKS5</string>
|
||||
<string name="login_info_oauth2_title">Voleu continuar amb la configuració simplificada?</string>
|
||||
<string name="login_info_oauth2_text">L’adreça d\'e-mail que heu introduït admet una configuració simplificada. (OAuth2).\n\nEn el pas següent, permeteu que ArcaneChat actuï com a xat amb l\'aplicació de correu electrònic..\n\nNo hi ha servidors de ArcaneChat, les vostres dades romanen al vostre dispositiu!</string>
|
||||
|
||||
@@ -450,7 +450,7 @@
|
||||
<string name="tab_all_media_empty_hint">Zde se zobrazí média sdílená v jakémkoli chatu.</string>
|
||||
<string name="media_preview">Náhled multimedia</string>
|
||||
<string name="send_message">Pošli zprávu</string>
|
||||
<string name="multidevice_install_dc_on_other_device">Nainstalujte si ArcaneChat do druhého zařízení (https://get.delta.chat)</string>
|
||||
<string name="multidevice_install_dc_on_other_device">Nainstalujte si ArcaneChat do druhého zařízení (https://github.com/ArcaneChat)</string>
|
||||
<!-- "I Already Have a Profile / Add as Second Device” should be the same text as defined by the keys onboarding_alternative_logins and multidevice_receiver_title -->
|
||||
<string name="multidevice_tap_scan_on_other_device">Spusťte ArcaneChat, klepněte na „Přidat jako druhé zařízení“ a naskenujte zde zobrazený kód</string>
|
||||
<string name="login_title">Přihlaš se</string>
|
||||
@@ -718,7 +718,7 @@
|
||||
<string name="chat_protection_enabled_explanation">Nyní je zaručeno, že všechny zprávy v tomto chatu jsou šifrovány end-to-end.\n\nŠifrování end-to-end udržuje zprávy soukromé mezi vámi a vašimi partnery v chatu. Nedokáže je přečíst ani váš poskytovatel e-mailu.</string>
|
||||
<string name="invalid_unencrypted_tap_to_learn_more">⚠️%1$svyžaduje end-to-end šifrování, které pro tento chat ještě není nastaveno. Klepnutím se dozvíte více. </string>
|
||||
<string name="devicemsg_self_deleted">Smazali jste chat „Uložené zprávy“.\n\nℹ️ Chcete-li znovu použít funkci „Uložené zprávy“, vytvořte si nový chat. </string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Vaše verze ArcaneChatu může být zastaralá.\n\nTo může způsobit problémy, protože vaši partneři v chatu používají novější verze – a vám chybí nejnovější funkce 😳\nAktualizace najdete na https://get.delta.chat nebo v obchodě s aplikacemi . </string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Vaše verze ArcaneChatu může být zastaralá.\n\nTo může způsobit problémy, protože vaši partneři v chatu používají novější verze – a vám chybí nejnovější funkce 😳\nAktualizace najdete na https://github.com/ArcaneChat nebo v obchodě s aplikacemi . </string>
|
||||
|
||||
<!-- qr code stuff -->
|
||||
<string name="qr_code">QR kód</string>
|
||||
|
||||
@@ -398,13 +398,14 @@
|
||||
<string name="login_smtp_port">SMTP port</string>
|
||||
<string name="login_smtp_security">SMTP sikkerhed</string>
|
||||
<string name="login_auth_method">Autorisationsmetode</string>
|
||||
<!-- the word "SOCKS5" here and in the following strings should not be translated in most cases -->
|
||||
<!-- deprecated -->
|
||||
<string name="login_socks5">SOCKS5</string>
|
||||
<string name="login_socks5_use_socks5">Brug SOCKS5</string>
|
||||
<string name="login_socks5_host">SOCKS5 Værtsnavn</string>
|
||||
<string name="login_socks5_port">SOCKS5 Port</string>
|
||||
<string name="login_socks5_user">SOCKS5 Brugernavn</string>
|
||||
<string name="login_socks5_password">SOCKS5 adgangskode</string>
|
||||
|
||||
<string name="login_info_oauth2_title">Fortsæt med forenklet opsætning?</string>
|
||||
<string name="login_info_oauth2_text">Indtastet e-mail adresse understøtter simple opsætning (OAuth2).\n\nTillad i næste trin at ArcaneChat agerer som samtale med e-mail program.\n\nDer er ingen ArcaneChat servere, data forbliver på enhed.</string>
|
||||
<string name="login_certificate_checks">Certifikationstjek</string>
|
||||
|
||||
@@ -332,6 +332,7 @@
|
||||
<string name="videochat_tap_to_open">Öffnen</string>
|
||||
<string name="videochat_instance">Videochat-Instanz</string>
|
||||
<string name="videochat_instance_placeholder">Videochat-Instanz</string>
|
||||
<!-- Do not translate "$ROOM", since it is a fixed token ArcaneChat will replace with a generated room ID like "aOclju5eCky" -->
|
||||
<string name="videochat_instance_example">Beispiele: https://meet.jit.si/$ROOM oder basicwebrtc:https://your-server</string>
|
||||
<string name="videochat_instance_explain_2">Wenn aktiv, können Sie einen Videochat aus jedem Chat starten. Videochats erfordern beidseitig eine kompatible App oder einen kompatiblen Browser.</string>
|
||||
<string name="videochat_instance_from_qr">\"%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.</string>
|
||||
@@ -510,7 +511,7 @@
|
||||
<string name="multidevice_title">Zweitgerät hinzufügen</string>
|
||||
<string name="multidevice_same_network_hint">Beide Geräte müssen im selben Wi-Fi oder Netzwerk sein.</string>
|
||||
<string name="multidevice_this_creates_a_qr_code">Erstellt einen QR-Code, den ein Zweitgerät scannen kann, um das Profil zu kopieren.</string>
|
||||
<string name="multidevice_install_dc_on_other_device">ArcaneChat auf dem anderen Gerät installieren (https://get.delta.chat)</string>
|
||||
<string name="multidevice_install_dc_on_other_device">ArcaneChat auf dem anderen Gerät installieren (https://github.com/ArcaneChat)</string>
|
||||
<!-- "I Already Have a Profile / Add as Second Device” should be the same text as defined by the keys onboarding_alternative_logins and multidevice_receiver_title -->
|
||||
<string name="multidevice_tap_scan_on_other_device">ArcaneChat starten, \"Ich habe bereits ein Profil / Als Zweitgerät hinzufügen\" wählen und den QR-Code scannen</string>
|
||||
<!-- Shown inside a "QR code card" with very limited space; please formulate the text as short as possible therefore. The placeholder will be replaced by name and/or address eg. "Scan to set up second device for Alice (alice@example.org)" -->
|
||||
@@ -605,13 +606,25 @@
|
||||
<string name="login_smtp_port">SMTP-Port</string>
|
||||
<string name="login_smtp_security">SMTP-Sicherheit</string>
|
||||
<string name="login_auth_method">Autorisierungsmethode</string>
|
||||
<!-- the word "SOCKS5" here and in the following strings should not be translated in most cases -->
|
||||
<!-- the word "Proxy" might be left untranslated unless the destination language has a well-known term for a "Proxy Server", acting intermediary between the app and the chatmail or email server -->
|
||||
<string name="proxy_settings">Proxy</string>
|
||||
<string name="proxy_use_proxy">Proxy verwenden</string>
|
||||
<string name="proxy_add">Proxy hinzufügen</string>
|
||||
<string name="proxy_add_explain">Unterstützte Typen: HTTP(S), SOCKS5 und Shadowsocks.</string>
|
||||
<string name="proxy_add_url_hint">Proxy URL hier eingeben</string>
|
||||
<string name="proxy_invalid">Ungültige oder nicht unterstützte Proxy-URL</string>
|
||||
<string name="proxy_list_header">Proxies</string>
|
||||
<string name="proxy_delete">Proxy löschen</string>
|
||||
<string name="proxy_delete_explain">\"%1$s\" löschen?</string>
|
||||
|
||||
<!-- deprecated -->
|
||||
<string name="login_socks5">SOCKS5</string>
|
||||
<string name="login_socks5_use_socks5">SOCKS5 verwenden</string>
|
||||
<string name="login_socks5_host">SOCKS5-Host</string>
|
||||
<string name="login_socks5_port">SOCKS5-Port</string>
|
||||
<string name="login_socks5_user">SOCKS5-Anmeldename</string>
|
||||
<string name="login_socks5_password">SOCKS5-Passwort</string>
|
||||
|
||||
<string name="login_info_oauth2_title">Weiter mit vereinfachter Einrichtung?</string>
|
||||
<string name="login_info_oauth2_text">Die eingegebene E-Mail-Adresse unterstützt eine vereinfachte Einrichtung (OAuth 2.0).\n\nBitte erlauben Sie ArcaneChat im nächsten Schritt, als Chat-über-E-Mail-App zu arbeiten.\n\nArcaneChat sammelt keine Benutzerdaten, alles bleibt auf Ihrem Gerät.</string>
|
||||
<string name="login_certificate_checks">Zertifikatsüberprüfung</string>
|
||||
@@ -924,7 +937,7 @@
|
||||
<string name="devicemsg_storage_exceeding">⚠️ Der Speicherplatz Ihres Anbieters ist bald erschöpft; bereits %1$s%% sind verbraucht.\n\nSie können möglicherweise keine Nachrichten mehr empfangen, wenn der Speicherplatz komplett verbraucht ist.\n\n👉 Bitte prüfen Sie, ob Sie alte Daten im Webinterface des Anbieters löschen können, und erwägen Sie, \"Einstellungen / Chats und Medien / Alte Nachrichten löschen\" zu aktivieren. Den aktuellen Speicherverbrauch können Sie jederzeit unter \"Einstellungen / Verbindungsstatus\" überprüfen.</string>
|
||||
<!-- %1%s will be replaced by date and time in some human-readable format -->
|
||||
<string name="devicemsg_bad_time">⚠️ Ihr Gerät scheint ein falsches Datum oder eine falsche Uhrzeit (%1$s) zu verwenden.\n\nStellen Sie Ihre Uhr ⏰🔧 richtig ein, um sicherzustellen, dass Ihre Nachrichten korrekt empfangen werden.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Ihre Delta-Chat-Version ist möglicherweise veraltet.\n\nDies kann zu Problemen führen, wenn Ihre Chat-PartnerInnen neuere Versionen verwenden - und Ihnen die neuesten Funktionen fehlen. 😳\nBitte überprüfen Sie https://get.delta.chat oder Ihren App-Store auf Updates.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Ihre Delta-Chat-Version ist möglicherweise veraltet.\n\nDies kann zu Problemen führen, wenn Ihre Chat-PartnerInnen neuere Versionen verwenden - und Ihnen die neuesten Funktionen fehlen. 😳\nBitte überprüfen Sie https://github.com/ArcaneChat oder Ihren App-Store auf Updates.</string>
|
||||
|
||||
<!-- Some options as "Add Second Device" or "Backup" may require the system PIN/Fingerprint/Gesture/Etc. to be entered in a system dialog. This hint is added to the system dialog, below a title as "Add Second Device" or "Backup". -->
|
||||
<string name="enter_system_secret_to_continue">Entsperren zum Fortfahren</string>
|
||||
@@ -991,6 +1004,7 @@
|
||||
<string name="mailto_link_could_not_be_decoded">Mailto-Link konnte nicht dekodiert werden: %1$s</string>
|
||||
|
||||
<!-- notifications -->
|
||||
<!-- deprecated, use mark_as_read or mark_as_read_short -->
|
||||
<string name="notify_dismiss">Verwerfen</string>
|
||||
<string name="notify_reply_button">Antworten</string>
|
||||
<string name="notify_new_message">Neue Nachricht</string>
|
||||
|
||||
@@ -289,6 +289,7 @@
|
||||
<string name="videochat_tap_to_open">Πατήστε για Άνοιγμα</string>
|
||||
<string name="videochat_instance">Παρουσία στη Βιντεοκλήση</string>
|
||||
<string name="videochat_instance_placeholder">Η παρουσία σας στη βιντεοκλήση</string>
|
||||
<!-- Do not translate "$ROOM", since it is a fixed token ArcaneChat will replace with a generated room ID like "aOclju5eCky" -->
|
||||
<string name="videochat_instance_example">Παράδειγμα: https://meet.jit.si/$ROOM ή basicwebrtc:https://your-server</string>
|
||||
<string name="videochat_instance_explain_2">Αν είναι ενεργοποιημένο, μπορείτε να ξεκινήσετε μια συνομιλία μέσω βίντεο από κάθε συνομιλία. Απαιτεί μια συμβατή εφαρμογή ή ένα πρόγραμμα περιήγησης και στα δύο άκρα.</string>
|
||||
<string name="videochat_instance_from_qr">Χρήση \"%1$s\" για να προσκαλέσετε άλλους στη βιντεοκλήση;\n\nΑφού ρυθμιστεί, μπορείτε να ξεκινήσετε μια συνομιλία μέσω βίντεο από κάθε συνομιλία. Αυτό αντικαθιστά οποιαδήποτε προηγούμενη ρύθμιση για συνομιλίες μέσω βίντεο.</string>
|
||||
@@ -491,13 +492,14 @@
|
||||
<string name="login_smtp_port">Θύρα SMTP</string>
|
||||
<string name="login_smtp_security">Ασφάλεια SMTP</string>
|
||||
<string name="login_auth_method">Μέθοδος Πιστοποίησης</string>
|
||||
<!-- the word "SOCKS5" here and in the following strings should not be translated in most cases -->
|
||||
<!-- deprecated -->
|
||||
<string name="login_socks5">SOCKS5</string>
|
||||
<string name="login_socks5_use_socks5">Χρήση SOCKS5</string>
|
||||
<string name="login_socks5_host">SOCKS5 Κεντρικός</string>
|
||||
<string name="login_socks5_port">Θύρα SOCKS5</string>
|
||||
<string name="login_socks5_user">Χρήστης SOCKS5</string>
|
||||
<string name="login_socks5_password">Κωδικός SOCKS5</string>
|
||||
|
||||
<string name="login_info_oauth2_title">Συνέχεια με την απλοποιημένη ρύθμιση;</string>
|
||||
<string name="login_info_oauth2_text">Η εισαγόμενη διεύθυνση e-mail υποστηρίζει μια απλοποιημένη ρύθμιση (OAuth 2.0).\n\nΣτο επόμενο βήμα, επιτρέψτε στο ArcaneChat να λειτουργεί ως η εφαρμογή Chat μέσω ηλεκτρονικού ταχυδρομείου.\n\nΔεν υπάρχουν διακομιστές ArcaneChat, τα δεδομένα σας παραμένει στη συσκευή σας.</string>
|
||||
<string name="login_certificate_checks">Έλεγχοι Πιστοποιητικών</string>
|
||||
@@ -770,7 +772,7 @@
|
||||
<string name="devicemsg_storage_exceeding">⚠️ Ο αποθηκευτικός χώρος του παρόχου σας πρόκειται να εξαντληθεί: %1$s %% χρησιμοποιούνται ήδη.\n\nΕνδέχεται να μην μπορείτε να λαμβάνετε μηνύματα εάν ο χώρος αποθήκευσης είναι πλήρης.\n\n👉 Ελέγξτε εάν μπορείτε να διαγράψετε παλιά δεδομένα στη διεπαφή ιστού του παρόχου και εξετάστε το ενδεχόμενο ενεργοποίηση \"Ρυθμίσεις / Διαγραφή παλαιών μηνυμάτων\". Μπορείτε να ελέγξετε την τρέχουσα χρήση αποθηκευτικού χώρου ανά πάσα στιγμή στις \"Ρυθμίσεις / Συνδεσιμότητα\".</string>
|
||||
<!-- %1%s will be replaced by date and time in some human-readable format -->
|
||||
<string name="devicemsg_bad_time">⚠️ Η ημερομηνία ή η ώρα στη συσκευή σας φαίνεται να είναι μην είναι ακριβής (%1$s).\n\nΠροσαρμόστε το ρολόι σας ⏰🔧 για να βεβαιωθείτε ότι τα μηνύματά σας λαμβάνονται σωστά.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Η έκδοση ArcaneChat μπορεί να είναι παλιά.\n\nΑυτό μπορεί να προκαλέσει προβλήματα επειδή οι συνεργάτες συνομιλίας σας χρησιμοποιούν νεότερες εκδόσεις - και δεν έχετε τις πιο πρόσφατες λειτουργίες 😳\nΕλέγξτε τη https://get.delta.chat ή το κατάστημα εφαρμογών σας για ενημερώσεις .</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Η έκδοση ArcaneChat μπορεί να είναι παλιά.\n\nΑυτό μπορεί να προκαλέσει προβλήματα επειδή οι συνεργάτες συνομιλίας σας χρησιμοποιούν νεότερες εκδόσεις - και δεν έχετε τις πιο πρόσφατες λειτουργίες 😳\nΕλέγξτε τη https://github.com/ArcaneChat ή το κατάστημα εφαρμογών σας για ενημερώσεις .</string>
|
||||
|
||||
<!-- Some options as "Add Second Device" or "Backup" may require the system PIN/Fingerprint/Gesture/Etc. to be entered in a system dialog. This hint is added to the system dialog, below a title as "Add Second Device" or "Backup". -->
|
||||
<string name="enter_system_secret_to_continue">Εισαγάγετε το μυστικό που έχει οριστεί από το σύστημά σας για να συνεχίσετε.</string>
|
||||
@@ -828,6 +830,7 @@
|
||||
<string name="mailto_link_could_not_be_decoded">Αδυναμία αποκωδικοποίησης του συνδέσμου mailto: %1$s</string>
|
||||
|
||||
<!-- notifications -->
|
||||
<!-- deprecated, use mark_as_read or mark_as_read_short -->
|
||||
<string name="notify_dismiss">Απόρριψη</string>
|
||||
<string name="notify_reply_button">Απάντηση</string>
|
||||
<string name="notify_new_message">Νέο μήνυμα</string>
|
||||
|
||||
@@ -173,6 +173,7 @@
|
||||
<string name="video">Video</string>
|
||||
<string name="documents">Documentos</string>
|
||||
<string name="contact">Contacto</string>
|
||||
<string name="bot">Bot</string>
|
||||
<string name="camera">Cámara</string>
|
||||
<!-- As in "start a video recording" or "take a photo"; eg. the description of the "shutter button" in cameras -->
|
||||
<string name="capture">Capturar</string>
|
||||
@@ -281,6 +282,10 @@
|
||||
<string name="select_chat">Seleccionar chat</string>
|
||||
<string name="select_more">Seleccionar más</string>
|
||||
<string name="menu_edit_name">Editar nombre</string>
|
||||
<!-- The placeholder will be replaced by the name the contact gave themself (if any) or by an e-mail address. -->
|
||||
<string name="edit_name_explain">Establece un apodo que se te mostrará en lugar de \"%1$s\". Déjalo en blanco para utilizar el nombre elegido por el contacto.</string>
|
||||
<!-- The placeholder will be replaced by the name the contact gave themself (if any) or by an e-mail address. -->
|
||||
<string name="edit_name_placeholder">Apodo para \"%1$s\"</string>
|
||||
<string name="menu_settings">Ajustes</string>
|
||||
<string name="menu_advanced">Avanzado</string>
|
||||
<string name="menu_view_profile">Ver perfil</string>
|
||||
@@ -343,6 +348,7 @@
|
||||
<string name="videochat_tap_to_open">Toca para abrir</string>
|
||||
<string name="videochat_instance">Instancia de videollamada</string>
|
||||
<string name="videochat_instance_placeholder">Tu instancia de videollamada</string>
|
||||
<!-- Do not translate "$ROOM", since it is a fixed token ArcaneChat will replace with a generated room ID like "aOclju5eCky" -->
|
||||
<string name="videochat_instance_example">Ejemplo: https://tu-servidor.org/$ROOM</string>
|
||||
<string name="videochat_instance_explain_2">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.</string>
|
||||
<string name="videochat_instance_from_qr">¿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.</string>
|
||||
@@ -535,7 +541,7 @@
|
||||
<string name="multidevice_title">Añadir otro dispositivo</string>
|
||||
<string name="multidevice_same_network_hint">Asegúrate de que ambos dispositivos estén conectados en la misma red o Wi-Fi</string>
|
||||
<string name="multidevice_this_creates_a_qr_code">Esto crea un código QR que el otro dispositivo puede escanear para copiar la cuenta.</string>
|
||||
<string name="multidevice_install_dc_on_other_device">Instala ArcaneChat en tu otro dispositivo (https://get.delta.chat)</string>
|
||||
<string name="multidevice_install_dc_on_other_device">Instala ArcaneChat en tu otro dispositivo (https://github.com/ArcaneChat)</string>
|
||||
<!-- "I Already Have a Profile / Add as Second Device” should be the same text as defined by the keys onboarding_alternative_logins and multidevice_receiver_title -->
|
||||
<string name="multidevice_tap_scan_on_other_device">Inicia ArcaneChat, toca \"Añadir desde otro dispositivo\" y escanea el código mostrado aquí</string>
|
||||
<!-- Shown inside a "QR code card" with very limited space; please formulate the text as short as possible therefore. The placeholder will be replaced by name and/or address eg. "Scan to set up second device for Alice (alice@example.org)" -->
|
||||
@@ -630,13 +636,14 @@
|
||||
<string name="login_smtp_port">Puerto SMTP</string>
|
||||
<string name="login_smtp_security">Seguridad SMTP</string>
|
||||
<string name="login_auth_method">Método de autorización</string>
|
||||
<!-- the word "SOCKS5" here and in the following strings should not be translated in most cases -->
|
||||
<!-- deprecated -->
|
||||
<string name="login_socks5">SOCKS5</string>
|
||||
<string name="login_socks5_use_socks5">Usar SOCKS5</string>
|
||||
<string name="login_socks5_host">Servidor SOCKS5</string>
|
||||
<string name="login_socks5_port">Puerto SOCKS5</string>
|
||||
<string name="login_socks5_user">Usuario SOCKS5</string>
|
||||
<string name="login_socks5_password">Contraseña SOCKS5</string>
|
||||
|
||||
<string name="login_info_oauth2_title">¿Continuar con la configuración simplificada?</string>
|
||||
<string name="login_info_oauth2_text">La dirección de correo electrónico introducida admite una configuración simplificada (OAuth 2.0).\n\nEn el próximo paso, permita que ArcaneChat actúe como su aplicación de chat por correo electrónico.\n\nNo hay servidores de ArcaneChat, tus datos permanecen en tu dispositivo.</string>
|
||||
<string name="login_certificate_checks">Comprobaciones de certificados</string>
|
||||
@@ -949,7 +956,7 @@
|
||||
<string name="devicemsg_storage_exceeding">⚠️ El almacenamiento de tu proveedor está por excederse, ya tienes %1$s%% en uso.\n\nQuizás no puedas recibir mensajes cuando el almacenamiento esté al 100%% de uso.\n\n👉 Por favor chequea si puedes eliminar los datos antiguos en la página web del proveedor y considera habilitar \"Ajustes / Eliminar mensajes antiguos\". Puedes chequear tu almacenamiento actual en cualquier momento en \"Ajustes / Conectividad\".</string>
|
||||
<!-- %1%s will be replaced by date and time in some human-readable format -->
|
||||
<string name="devicemsg_bad_time">⚠️ Fecha y hora de tu dispositivo parecen ser inexactas (%1$s).\n\nAjusta tu reloj ⏰🔧 para asegurarte que los mensajes sean recibidos correctamente.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Tu versión de ArcaneChat puede estar desactualizada.\n\nEso puede crear problemas porque tus contactos usan nuevas versiones - y tú te estás perdiendo las últimas novedades 😳\nChequea https://get.delta.chat o tu tienda de aplicaciones para actualizaciones.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Tu versión de ArcaneChat puede estar desactualizada.\n\nEso puede crear problemas porque tus contactos usan nuevas versiones - y tú te estás perdiendo las últimas novedades 😳\nChequea https://github.com/ArcaneChat o tu tienda de aplicaciones para actualizaciones.</string>
|
||||
|
||||
<!-- Some options as "Add Second Device" or "Backup" may require the system PIN/Fingerprint/Gesture/Etc. to be entered in a system dialog. This hint is added to the system dialog, below a title as "Add Second Device" or "Backup". -->
|
||||
<string name="enter_system_secret_to_continue">Desbloquear para continuar</string>
|
||||
@@ -1017,6 +1024,7 @@
|
||||
<string name="mailto_link_could_not_be_decoded">El enlace mailto no se pudo decodificar: %1$s</string>
|
||||
|
||||
<!-- notifications -->
|
||||
<!-- deprecated, use mark_as_read or mark_as_read_short -->
|
||||
<string name="notify_dismiss">Descartar</string>
|
||||
<string name="notify_reply_button">Responder</string>
|
||||
<string name="notify_new_message">Nuevo mensaje</string>
|
||||
@@ -1176,4 +1184,5 @@
|
||||
<!-- device messages for updates -->
|
||||
<string name="update_1_46_android">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</string>
|
||||
<string name="update_1_46_ios">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</string>
|
||||
</resources>
|
||||
<string name="update_switch_profile_placement">ℹ️ 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 💡</string>
|
||||
</resources>
|
||||
|
||||
@@ -317,6 +317,7 @@
|
||||
<string name="videochat_tap_to_open">برای باز کردن ضربه بزنید. </string>
|
||||
<string name="videochat_instance">جلسه تماس تصویری</string>
|
||||
<string name="videochat_instance_placeholder">جلسه تماس تصویری شما</string>
|
||||
<!-- Do not translate "$ROOM", since it is a fixed token ArcaneChat will replace with a generated room ID like "aOclju5eCky" -->
|
||||
<string name="videochat_instance_example">مثال:
|
||||
https://meet.jit.si/$ROOM
|
||||
یا
|
||||
@@ -490,7 +491,7 @@ https://meet.jit.si/$ROOM
|
||||
<string name="multidevice_title">افزودن دستگاه دوم</string>
|
||||
<string name="multidevice_same_network_hint">مطمئن شوید هر دو دستگاه در یک وایفای یا شبکه هستند</string>
|
||||
<string name="multidevice_this_creates_a_qr_code">این یک کد کیوآر ایجاد میکند که دستگاه دوم میتواند برای کپی حساب اسکن کند.</string>
|
||||
<string name="multidevice_install_dc_on_other_device">دلتاچت را روی دستگاه دیگر خود نصب کنید (https://get.delta.chat)</string>
|
||||
<string name="multidevice_install_dc_on_other_device">دلتاچت را روی دستگاه دیگر خود نصب کنید (https://github.com/ArcaneChat)</string>
|
||||
<!-- "I Already Have a Profile / Add as Second Device” should be the same text as defined by the keys onboarding_alternative_logins and multidevice_receiver_title -->
|
||||
<string name="multidevice_tap_scan_on_other_device">دلتاچت را باز کنید، روی «افزودن به عنوان دستگاه دوم» بزنید و کد نشان داده شده در اینجا را اسکن کنید</string>
|
||||
<!-- Shown inside a "QR code card" with very limited space; please formulate the text as short as possible therefore. The placeholder will be replaced by name and/or address eg. "Scan to set up second device for Alice (alice@example.org)" -->
|
||||
@@ -572,13 +573,14 @@ https://meet.jit.si/$ROOM
|
||||
<string name="login_smtp_port">SMTP Port</string>
|
||||
<string name="login_smtp_security">SMTP Security</string>
|
||||
<string name="login_auth_method">Authorization Method</string>
|
||||
<!-- the word "SOCKS5" here and in the following strings should not be translated in most cases -->
|
||||
<!-- deprecated -->
|
||||
<string name="login_socks5">SOCKS5</string>
|
||||
<string name="login_socks5_use_socks5">استفاده از SOCKS5</string>
|
||||
<string name="login_socks5_host">SOCKS5 Host</string>
|
||||
<string name="login_socks5_port">SOCKS5 Port</string>
|
||||
<string name="login_socks5_user">SOCKS5 User</string>
|
||||
<string name="login_socks5_password">SOCKS5 Password</string>
|
||||
|
||||
<string name="login_info_oauth2_title">با تنظیمها ساده شده ادامه میدهید؟</string>
|
||||
<string name="login_info_oauth2_text">نشانی رایانامه وارد شده از تنظیمهای ساده پشتیبانی میکند
|
||||
(OAuth 2.0).\n\nIn
|
||||
@@ -887,7 +889,7 @@ https://meet.jit.si/$ROOM
|
||||
ساعت دستگاه خود را تنظیم کنید ⏰🔧 تا پیامها به درستی دریافت شوند. </string>
|
||||
<string name="devicemsg_update_reminder">هشدار⚠️ ممکن است نسخه دلتاچت مورد استفاده قدیمی شده باشد.
|
||||
این موضوع ممکن است مشکلاتی ایجاد کند چون مخاطبین شما از نسخههای جدیدتر استفاده میکنند. همچنین قابلیتهای جدید را هم از دست میدهید😳
|
||||
لطفا برای دریافت نسخه جدید به app store یا https://get.delta.chat مراجعه کنید. </string>
|
||||
لطفا برای دریافت نسخه جدید به app store یا https://github.com/ArcaneChat مراجعه کنید. </string>
|
||||
|
||||
<!-- Some options as "Add Second Device" or "Backup" may require the system PIN/Fingerprint/Gesture/Etc. to be entered in a system dialog. This hint is added to the system dialog, below a title as "Add Second Device" or "Backup". -->
|
||||
<string name="enter_system_secret_to_continue">برای ادامه، لطفا رمز تعیین شده توسط سیستم خود را وارد کنید</string>
|
||||
@@ -954,6 +956,7 @@ https://meet.jit.si/$ROOM
|
||||
<string name="mailto_link_could_not_be_decoded">امکان کدگشایی پیوند mailto وجود ندارد: %1$s</string>
|
||||
|
||||
<!-- notifications -->
|
||||
<!-- deprecated, use mark_as_read or mark_as_read_short -->
|
||||
<string name="notify_dismiss">صرف نظر</string>
|
||||
<string name="notify_reply_button">پاسخ</string>
|
||||
<string name="notify_new_message">پیام جدید</string>
|
||||
|
||||
@@ -321,6 +321,7 @@
|
||||
<string name="videochat_tap_to_open">Napauta avataksesi</string>
|
||||
<string name="videochat_instance">Videokeskustelun tarjoaja</string>
|
||||
<string name="videochat_instance_placeholder">Videokeskustelusi tarjoaja</string>
|
||||
<!-- Do not translate "$ROOM", since it is a fixed token ArcaneChat will replace with a generated room ID like "aOclju5eCky" -->
|
||||
<string name="videochat_instance_example">Esimerkkejä: https://meet.jit.si/$ROOM tai basicwebrtc:https://sinun-palvelimesi</string>
|
||||
<string name="videochat_instance_explain_2">Jos videokeskustelu on kytketty päälle, voit aloittaa videokeskustelun mistä tahansa keskustelusta. Videokeskustelu vaatii molemmilta yhteensopivan sovelluksen tai selaimen.</string>
|
||||
<string name="videochat_instance_from_qr">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.</string>
|
||||
@@ -499,7 +500,7 @@
|
||||
<string name="multidevice_title">Lisää toinen laite</string>
|
||||
<string name="multidevice_same_network_hint">Varmista että molemmat laitteet ovat samassa Wi-Fi verkossa</string>
|
||||
<string name="multidevice_this_creates_a_qr_code">Tämä luo QR koodin, jolla toinen laite saa ladattua kopion profiilista.</string>
|
||||
<string name="multidevice_install_dc_on_other_device">Lataa ArcaneChat toiselle laitteellesi (https://get.delta.chat)</string>
|
||||
<string name="multidevice_install_dc_on_other_device">Lataa ArcaneChat toiselle laitteellesi (https://github.com/ArcaneChat)</string>
|
||||
<!-- "I Already Have a Profile / Add as Second Device” should be the same text as defined by the keys onboarding_alternative_logins and multidevice_receiver_title -->
|
||||
<string name="multidevice_tap_scan_on_other_device">Avaa ArcaneChat, valitse \"Minulla on jo profiili / Lisää toiseksi laitteeksi\" ja skannaa täällä näkyvä koodi</string>
|
||||
<!-- Shown inside a "QR code card" with very limited space; please formulate the text as short as possible therefore. The placeholder will be replaced by name and/or address eg. "Scan to set up second device for Alice (alice@example.org)" -->
|
||||
@@ -594,13 +595,14 @@
|
||||
<string name="login_smtp_port">SMTP -portti</string>
|
||||
<string name="login_smtp_security">SMTP -turvallisuusprotokolla</string>
|
||||
<string name="login_auth_method">Kirjautumismenetelmä</string>
|
||||
<!-- the word "SOCKS5" here and in the following strings should not be translated in most cases -->
|
||||
<!-- deprecated -->
|
||||
<string name="login_socks5">SOCKS5</string>
|
||||
<string name="login_socks5_use_socks5">Käytä SOCKS5</string>
|
||||
<string name="login_socks5_host">SOCKS5 -isäntä</string>
|
||||
<string name="login_socks5_port">SOCKS5 -portti</string>
|
||||
<string name="login_socks5_user">SOCKS5 -käyttäjä</string>
|
||||
<string name="login_socks5_password">SOCKS5 -salasana</string>
|
||||
|
||||
<string name="login_info_oauth2_title">Jatka yksinkertaistetulla käyttöönotolla?</string>
|
||||
<string name="login_info_oauth2_text">Annettu sähköpostiosoite tukee yksinkertaista käyttöönottoa (OAuth 2.0).\n\nSeuraavassa vaiheessa sinun tulisi antaa ArcaneChatille oikeus toimia keskustelusovelluksena sähköpostia hyödyntäen.\n\nArcaneChat ei kerää käyttäjädataa, kaikki tallennetaan vain laitteellesi.</string>
|
||||
<string name="login_certificate_checks">Varmenteiden tarkastus</string>
|
||||
@@ -910,7 +912,7 @@
|
||||
<string name="devicemsg_storage_exceeding">⚠️ Palveluntarjoajasi tallennuskiintiö ylitetään pian, käytössä on jo %1$s / %%.\n\nEt välttämättä enää voi vastaanottaa viestejäsi, kun 100 %% on käytössä.\n\n👉 Kokeile poistaa viestejä palveluntarjoajasi internetkäyttöliittymästä. Kannattaa myös ehkä kytkeä päälle \"Asetukset / Poista vanhat viestit\". Voit tarkistaa tämän hetkisen tallennustilan käytön \"Asetukset / Yhteys\".</string>
|
||||
<!-- %1%s will be replaced by date and time in some human-readable format -->
|
||||
<string name="devicemsg_bad_time">⚠️ Laitteesi päivämäärä tai aika vaikuttaa olevan väärässä (%1$s).\n\nAseta kellonaika ⏰🔧 varmistaaksesi, että viestin vastaanottaminen onnistuu.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ ArcaneChat -versio saattaa olla vanhentunut.\n\nTämä saattaa aiheuttaa ongelmia, koska muut käyttävät uudempia versioita - ja saatat jäädä paitsi uusista ominaisuuksista. 😳\nTarkista uudet päivitykset sovelluskaupastasi tai https://get.delta.chat</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ ArcaneChat -versio saattaa olla vanhentunut.\n\nTämä saattaa aiheuttaa ongelmia, koska muut käyttävät uudempia versioita - ja saatat jäädä paitsi uusista ominaisuuksista. 😳\nTarkista uudet päivitykset sovelluskaupastasi tai https://github.com/ArcaneChat</string>
|
||||
|
||||
<!-- Some options as "Add Second Device" or "Backup" may require the system PIN/Fingerprint/Gesture/Etc. to be entered in a system dialog. This hint is added to the system dialog, below a title as "Add Second Device" or "Backup". -->
|
||||
<string name="enter_system_secret_to_continue">Avaa lukitus jatkaaksesi</string>
|
||||
@@ -977,6 +979,7 @@
|
||||
<string name="mailto_link_could_not_be_decoded">mailto-linkkiä ei voitu selvittää: %1$s</string>
|
||||
|
||||
<!-- notifications -->
|
||||
<!-- deprecated, use mark_as_read or mark_as_read_short -->
|
||||
<string name="notify_dismiss">Hylkää</string>
|
||||
<string name="notify_reply_button">Vastaa</string>
|
||||
<string name="notify_new_message">Uusi viesti</string>
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
<string name="app_name">ArcaneChat</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="cancel">Annuler</string>
|
||||
<string name="clear_search">Effacer la recherche</string>
|
||||
<!-- the word "or" to separate blocks in the user interface that are mutually exclusive -->
|
||||
<string name="or_separator">ou</string>
|
||||
<string name="clear_search">Effacer la recherche</string>
|
||||
<string name="yes">Oui</string>
|
||||
<string name="no">Non</string>
|
||||
<string name="select">Sélectionner</string>
|
||||
@@ -52,6 +54,7 @@
|
||||
<string name="show_full_message">Montrer le message complet...</string>
|
||||
<!-- Stay short here, say ~16 characters. The source string could also be "All Read", maybe that hint can make translations easier :) -->
|
||||
<string name="mark_all_as_read">Marquer tout comme lu</string>
|
||||
<string name="mark_as_read">Marquer comme lu</string>
|
||||
<!-- Shortest text for "Mark as being read". In english, this could be "Read" (past tense of "to read"), in german, this could be "Gelesen". -->
|
||||
<string name="mark_as_read_short">Lu</string>
|
||||
<!-- Placeholder text when something is loading -->
|
||||
@@ -203,6 +206,8 @@
|
||||
|
||||
<!-- menu labels (or icon, buttons...) -->
|
||||
<string name="menu_new_contact">Nouveau contact</string>
|
||||
<string name="menu_new_classic_contact">Ajouter le contact à la main</string>
|
||||
<string name="new_classic_contact_explain">Les contacts ajoutés à la main peuvent être contactés par e-mail classique. Le chiffrement de bout en bout n\'est pas garanti.</string>
|
||||
<string name="menu_new_chat">Nouvelle discussion</string>
|
||||
<string name="menu_new_group">Nouveau groupe</string>
|
||||
<string name="clone_chat">Cloner la discussion</string>
|
||||
@@ -326,6 +331,7 @@
|
||||
<string name="videochat_tap_to_open">Appuyer pour ouvrir</string>
|
||||
<string name="videochat_instance">Instance de discussion vidéo</string>
|
||||
<string name="videochat_instance_placeholder">Votre instance de discussion vidéo</string>
|
||||
<!-- Do not translate "$ROOM", since it is a fixed token ArcaneChat will replace with a generated room ID like "aOclju5eCky" -->
|
||||
<string name="videochat_instance_example">Par exemple : https://your-server.org/$ROOM</string>
|
||||
<string name="videochat_instance_explain_2">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.</string>
|
||||
<string name="videochat_instance_from_qr">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.</string>
|
||||
@@ -437,6 +443,9 @@
|
||||
<string name="send_file_to">Envoyer \"%1$s\" à</string>
|
||||
<!-- title shown above a list contacts where one should be selected (eg. when a webxdc attempts to send a message to a chat) -->
|
||||
<string name="send_message_to">Envoyer un message à</string>
|
||||
<string name="enable_realtime">Canaux Webxdc temps réel</string>
|
||||
<string name="enable_realtime_explain">Enclenchez l\'API temps réel Webxdc pour créer des connexions entre les appareils.</string>
|
||||
|
||||
<!-- map -->
|
||||
<string name="filter_map_on_time">Afficher les positions pour une période</string>
|
||||
<string name="show_location_traces">Afficher les traces</string>
|
||||
@@ -507,7 +516,7 @@
|
||||
<string name="multidevice_title">Ajouter un deuxième appareil</string>
|
||||
<string name="multidevice_same_network_hint">Vérifiez que les deux appareils sont bien connectés au même Wi-Fi ou réseau.</string>
|
||||
<string name="multidevice_this_creates_a_qr_code">Crée un code QR que vous pouvez scanner avec le deuxième appareil pour copier le compte.</string>
|
||||
<string name="multidevice_install_dc_on_other_device">Installer ArcaneChat sur votre autre appareil (https://get.delta.chat)</string>
|
||||
<string name="multidevice_install_dc_on_other_device">Installer ArcaneChat sur votre autre appareil (https://github.com/ArcaneChat)</string>
|
||||
<!-- "I Already Have a Profile / Add as Second Device” should be the same text as defined by the keys onboarding_alternative_logins and multidevice_receiver_title -->
|
||||
<string name="multidevice_tap_scan_on_other_device">Lancez ArcaneChat, appuyez sur \"Ajouter comme deuxième appareil\" et scannez le code affiché ici.</string>
|
||||
<!-- Shown inside a "QR code card" with very limited space; please formulate the text as short as possible therefore. The placeholder will be replaced by name and/or address eg. "Scan to set up second device for Alice (alice@example.org)" -->
|
||||
@@ -554,6 +563,18 @@
|
||||
<string name="part_of_total_used">%1$s sur %2$s utilisé</string>
|
||||
|
||||
|
||||
<!-- welcome and login -->
|
||||
<!-- Primary button on the welcome screen, allows to create an instant profile -->
|
||||
<string name="onboarding_create_instant_account">Créer un nouveau compte</string>
|
||||
<!-- Secondary button on the welcome screen, allows to "Add as Second Device", "Restore from Backup" -->
|
||||
<string name="onboarding_alternative_logins">Je possède déjà un compte</string>
|
||||
<!-- Instant onboarding title (there is not more to do than to set name and avatar) -->
|
||||
<string name="instant_onboarding_title">Votre compte</string>
|
||||
<!-- Confirmation button on the instant onboarding screen -->
|
||||
<string name="instant_onboarding_create">Accepter et créer le compte</string>
|
||||
<!-- Secondary, link-like button to open a page with other possible instances -->
|
||||
<string name="instant_onboarding_show_more_instances">Utiliser un autre serveur</string>
|
||||
<string name="instant_onboarding_other_server">Lister les serveurs de discussions</string>
|
||||
<string name="scan_invitation_code">Scanner le code d\'invitation</string>
|
||||
<string name="login_title">Connexion</string>
|
||||
<!-- for classic email, we use the classical term "Account" -->
|
||||
@@ -574,13 +595,23 @@
|
||||
<string name="login_smtp_port">Port SMTP</string>
|
||||
<string name="login_smtp_security">Sécurité SMTP</string>
|
||||
<string name="login_auth_method">Méthode d\'autorisation</string>
|
||||
<!-- the word "SOCKS5" here and in the following strings should not be translated in most cases -->
|
||||
<!-- the word "Proxy" might be left untranslated unless the destination language has a well-known term for a "Proxy Server", acting intermediary between the app and the chatmail or email server -->
|
||||
<string name="proxy_settings">Proxy</string>
|
||||
<string name="proxy_use_proxy">Utiliser le proxy</string>
|
||||
<string name="proxy_add">Ajouter un proxy</string>
|
||||
<string name="proxy_add_explain">Types de proxy supportés: HTTP(S), SOCKS5 et Shadowsocks.</string>
|
||||
<string name="proxy_add_url_hint">Entrez l\'URL du proxy ici</string>
|
||||
<string name="proxy_invalid">URL invalide ou non supportée</string>
|
||||
<string name="proxy_list_header">Sauver les proxy</string>
|
||||
<string name="proxy_delete">Effacer le proxy</string>
|
||||
<!-- deprecated -->
|
||||
<string name="login_socks5">SOCKS5</string>
|
||||
<string name="login_socks5_use_socks5">Utiliser SOCKS5</string>
|
||||
<string name="login_socks5_host">Hôte SOCKS5</string>
|
||||
<string name="login_socks5_port">Port SOCKS5</string>
|
||||
<string name="login_socks5_user">Utilisateur SOCKS5</string>
|
||||
<string name="login_socks5_password">Mot de passe SOCKS5</string>
|
||||
|
||||
<string name="login_info_oauth2_title">Continuer avec une configuration simplifiée ?</string>
|
||||
<string name="login_info_oauth2_text">L\'adresse de courriel saisie prend en charge une configuration simplifiée (OAuth2.0). \n\nDans l\'étape suivante, autorisez ArcaneChat à agir comme votre application de Chat avec courriel . Il n\'y a pas de serveur ArcaneChat, vos données restent sur votre appareil !</string>
|
||||
<string name="login_certificate_checks">Vérification du certificat</string>
|
||||
@@ -662,6 +693,8 @@
|
||||
<string name="pref_incognito_keyboard_explain">Demander que le clavier désactive l\'apprentissage personnalisé</string>
|
||||
<string name="pref_read_receipts">Accusés de lecture</string>
|
||||
<string name="pref_read_receipts_explain">Si les accusés de lecture sont désactivés, vous ne pourrez pas voir les accusés de lecture des autres.</string>
|
||||
<string name="pref_server">Serveur</string>
|
||||
<string name="pref_encryption">Chiffrement</string>
|
||||
<string name="pref_manage_keys">Gérer les clés</string>
|
||||
<string name="pref_use_system_emoji">Utiliser les émojis système</string>
|
||||
<string name="pref_use_system_emoji_explain">Désactiver la prise en charge des émojis intégrés de ArcaneChat</string>
|
||||
@@ -736,6 +769,9 @@
|
||||
<string name="pref_edit_profile">Édition du profil</string>
|
||||
<string name="disable_imap_idle">Désactiver IMAP IDLE</string>
|
||||
<string name="disable_imap_idle_explain">N\'utilisez pas d\'extension IMAP IDLE, même si elle est prise en charge par votre serveur, car elle provoque des retards dans la récupération des messages. Activez cette option uniquement pour effectuer des tests.</string>
|
||||
<string name="send_stats_to_devs">Envoyer les statistiques aux développeurs ArcaneChat</string>
|
||||
|
||||
|
||||
<!-- Emoji picker and categories -->
|
||||
<string name="emoji_search_results">Résultats de la recherche</string>
|
||||
<string name="emoji_not_found">Pas d\'emoji trouvé</string>
|
||||
@@ -795,6 +831,7 @@
|
||||
<string name="systemmsg_read_receipt_subject">Accusé de lecture</string>
|
||||
<!-- deprecated -->
|
||||
<string name="systemmsg_read_receipt_body">Ceci est un accusé de lecture pour le message \"%1$s\".\n\nCela signifie que le message a été affiché sur l\'appareil du destinataire, pas forcément que le contenu ait été lu.</string>
|
||||
<string name="systemmsg_cannot_decrypt">Ce message ne peut pas être déchiffré.\n\n• Essayez de demander à l\'expéditeur de vous l\'envoyer à nouveaux.\n\n• Si vous venez de réinstaller ArcaneChat il serait bien de le reconfigurer en sélectionnant \"Ajouter un deuxième appareil\" ou d\'importer une sauvegarde.</string>
|
||||
<string name="systemmsg_unknown_sender_for_chat">Expéditeur inconnu de cette discussion. Voir « Info » pour plus de détails.</string>
|
||||
<string name="systemmsg_subject_for_new_contact">Message de %1$s</string>
|
||||
<string name="systemmsg_failed_sending_to">Échec de l\'envoi du message à %1$s.</string>
|
||||
@@ -864,6 +901,7 @@
|
||||
<string name="chat_protection_enabled_explanation">Il n\'est pas garanti que tous les messages de cette discussion sont chiffrés de bout en bout.\n\nLe chiffrement de bout en bout assure la confidentialité des messages échangés par les membres d\'une discussion. Même votre fournisseur de courriel ne peut pas les lire. </string>
|
||||
<string name="chat_protection_broken_tap_to_learn_more">%1$s a envoyé un message depuis un nouvel appareil. Appuyez pour en savoir plus.</string>
|
||||
<string name="chat_protection_broken_explanation">Le chiffrement de bout en bout ne peut plus être garanti, probablement parce que %1$s a réinstallé ArcaneChat ou envoyé un message depuis un nouvel appareil.\n\nVous pouvez convenir d\'une rencontre physique afin de scanner à nouveau son code QR pour ré-instaurer la garantie du chiffrement de bout en bout.</string>
|
||||
<string name="invalid_unencrypted_explanation">Pour établir un chiffrement de bout en bout vous pouvez rencontrer vos contacts en personne et scanner leur code QR.</string>
|
||||
<string name="learn_more">En savoir plus</string>
|
||||
|
||||
<string name="devicemsg_self_deleted">Vous avez supprimé la discussion \"Messages sauvegardés\".\n\nℹ️ Pour utiliser la fonctionnalité \"Message enregistrés\" à nouveau, commencez une nouvelle discussion avec vous-même.</string>
|
||||
@@ -871,7 +909,7 @@
|
||||
<string name="devicemsg_storage_exceeding">⚠️ Bientôt plus d\'espace de stockage chez votre fournisseur, %1$s%% utilisés.\n\nVous ne serez peut-être plus en mesure de recevoir des messages quand votre espace de stockage sera plein.\n\n👉 Veuillez vérifier si vous avez d\'anciens éléments à supprimer directement sur l\'interface web de votre fournisseur et envisagez d\'activer \"Paramètres / Supprimer les anciens messages\". Vous pouvez vérifier à tout moment le volume d\'espace de stockage en cours d\'utilisation depuis \"Paramètres / Connectivité\".</string>
|
||||
<!-- %1%s will be replaced by date and time in some human-readable format -->
|
||||
<string name="devicemsg_bad_time">⚠️ L\'heure ou la date de votre appareil semble erronée (%1$s).\n\nRéglez votre horloge ⏰🔧 pour que vos messages soient bien reçus.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Votre version de ArcaneChat semble obsolète.\n\nCela risque de créer des dysfonctionnements parce que vos contacts utilisent des versions plus récentes - en plus, vous ratez les nouvelles fonctionnalités 😳\n Rendez-vous sur https://get.delta.chat ou sur votre magasin d\'applications pour effectuer la mise à jour !</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ Votre version de ArcaneChat semble obsolète.\n\nCela risque de créer des dysfonctionnements parce que vos contacts utilisent des versions plus récentes - en plus, vous ratez les nouvelles fonctionnalités 😳\n Rendez-vous sur https://github.com/ArcaneChat ou sur votre magasin d\'applications pour effectuer la mise à jour !</string>
|
||||
|
||||
<!-- Some options as "Add Second Device" or "Backup" may require the system PIN/Fingerprint/Gesture/Etc. to be entered in a system dialog. This hint is added to the system dialog, below a title as "Add Second Device" or "Backup". -->
|
||||
<string name="enter_system_secret_to_continue">Déverrouillez votre appareil pour continuer</string>
|
||||
@@ -881,6 +919,7 @@
|
||||
<string name="load_qr_code_as_image">Charger le code QR comme une image</string>
|
||||
<string name="qrscan_title">Numériser le QR code</string>
|
||||
<string name="qrscan_hint">Placez votre caméra au dessus du QR code</string>
|
||||
<string name="qrscan_hint_desktop">Placez le code QR devant la caméra</string>
|
||||
<string name="qrscan_failed">Le code QR n\'a pas pu être décodé</string>
|
||||
<string name="qrscan_ask_join_group">Voulez-vous rejoindre le groupe \"%1$s\" ?</string>
|
||||
<string name="qrscan_fingerprint_mismatch">L\'empreinte digitale numérisée ne correspond pas à la dernière empreinte digitale vue depuis %1$s</string>
|
||||
@@ -909,6 +948,7 @@
|
||||
<string name="qrshow_join_contact_no_connection_toast">Pas de connexion Internet, ne peut pas effectuer la configuration du QR code.</string>
|
||||
<string name="qraccount_ask_create_and_login">Créer une nouvelle adresse de courriel sur « %1$s » et se connecter ici ?</string>
|
||||
<string name="qraccount_ask_create_and_login_another">Créer une nouvelle adresse de courriel sur « %1$s » et s\'y connecter ?\n\nVotre compte existant ne sera pas supprimé. Utilisez l\'élément de menu « Changer de compte » pour passer d\'un compte à l\'autre.</string>
|
||||
<string name="set_name_and_avatar_explain">Choisissez un nom que vos contacts reconnaîtrons. Vous pouvez également définir une image pour votre profile.</string>
|
||||
<string name="qraccount_qr_code_cannot_be_used">Le code QR scanné ne peut pas être utilisé pour ouvrir un nouveau compte.</string>
|
||||
<!-- the placeholder will be replaced by the e-mail address of the profile -->
|
||||
<string name="qrlogin_ask_login">Se connecter au compte « %1$s » ?</string>
|
||||
@@ -918,6 +958,8 @@
|
||||
<string name="secure_join_started">%1$s vous a invité à rejoindre ce groupe.\n\nEn attente de la réponse de l’appareil de %2$s…</string>
|
||||
<!-- placeholder will be replaced by the name of the inviter. -->
|
||||
<string name="secure_join_replies">%1$s a répondu, en attente d’être ajouté au groupe…</string>
|
||||
<string name="secure_join_wait">Chiffrement de bout en bout en cours d\'établissement, merci de patienter...</string>
|
||||
<string name="secure_join_wait_timeout">Le chiffrement de bout en bout n\'est pas encore garanti, mais vous pouvez déjà envoyer un message.</string>
|
||||
<string name="contact_verified">%1$s connu.</string>
|
||||
<string name="contact_not_verified">Impossible de garantir le chiffrement de bout en bout avec %1$s.</string>
|
||||
<!-- Shown in contact profile. The placeholder will be replaced by the name of the contact that introduced the contact. -->
|
||||
@@ -933,6 +975,7 @@
|
||||
<string name="mailto_link_could_not_be_decoded">Le lien mailto n\'a pas pu être décodé: %1$s</string>
|
||||
|
||||
<!-- notifications -->
|
||||
<!-- deprecated, use mark_as_read or mark_as_read_short -->
|
||||
<string name="notify_dismiss">Rejeter</string>
|
||||
<string name="notify_reply_button">Répondre</string>
|
||||
<string name="notify_new_message">Nouveau message</string>
|
||||
@@ -944,6 +987,8 @@
|
||||
<string name="notify_no_name_or_message">Pas de nom ou de message</string>
|
||||
<string name="notifications_disabled">Notifications désactivées</string>
|
||||
<string name="new_messages">Nouveaux messages</string>
|
||||
<!-- Body text for a generic "New messages" notification. Shown if we do not have more information about a new messages. Note, that the string is also referenced at https://github.com/deltachat/notifiers -->
|
||||
<string name="new_messages_body">Vous avez de nouveaux messages</string>
|
||||
<string name="n_messages_in_m_chats">%1$d messages dans %2$d discussions</string>
|
||||
|
||||
|
||||
@@ -1075,6 +1120,10 @@
|
||||
<string name="InfoPlist_NSPhotoLibraryAddUsageDescription">ArcaneChat veut enregistrer les images dans votre bibliothèque photo.</string>
|
||||
|
||||
|
||||
<!-- android specific strings, developers: please take care to remove strings that are no longer used! -->
|
||||
<string name="pref_instant_delivery">Envoi Immédiat</string>
|
||||
<string name="pref_background_notifications">Utiliser une connexion en arrière plan</string>
|
||||
<string name="pref_reliable_service">Forcer une connexion en arrière plan</string>
|
||||
<string name="pref_background_notifications_rationale">Pour maintenir une connexion à votre serveur de courriel et recevoir les messages en arrière-plan, ignorez l\'optimisation de la batterie à l\'étape suivante.\n\nArcaneChat utilise peu de ressources et prend garde à ne pas vider votre batterie.</string>
|
||||
<!-- disabling "Reliable service" will hide a the maybe annoying permanent-notification with the drawback that new-message-notifications get potentially unreliable -->
|
||||
<string name="perm_enable_bg_reminder_title">Touchez ici pour recevoir des messages pendant que DeltaChat est en arrière-plan.</string>
|
||||
|
||||
@@ -295,6 +295,7 @@
|
||||
<string name="videochat_tap_to_open">Toca para abrir</string>
|
||||
<string name="videochat_instance">Instancia para video chat</string>
|
||||
<string name="videochat_instance_placeholder">A túa instancia para video chat</string>
|
||||
<!-- Do not translate "$ROOM", since it is a fixed token ArcaneChat will replace with a generated room ID like "aOclju5eCky" -->
|
||||
<string name="videochat_instance_example">Exemplos: https://meet.jit.si/$ROOM ou basicwebrtc:https://your-server</string>
|
||||
<string name="videochat_instance_explain_2">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.</string>
|
||||
<string name="videochat_instance_from_qr">¿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.</string>
|
||||
@@ -498,13 +499,14 @@
|
||||
<string name="login_smtp_port">Porto SMTP</string>
|
||||
<string name="login_smtp_security">Seguridade SMTP</string>
|
||||
<string name="login_auth_method">Método de autorización</string>
|
||||
<!-- the word "SOCKS5" here and in the following strings should not be translated in most cases -->
|
||||
<!-- deprecated -->
|
||||
<string name="login_socks5">SOCKS5</string>
|
||||
<string name="login_socks5_use_socks5">Usar SOCKS5</string>
|
||||
<string name="login_socks5_host">Servidor SOCKS5</string>
|
||||
<string name="login_socks5_port">Porto SOCKS5</string>
|
||||
<string name="login_socks5_user">Usuaria SOCKS5</string>
|
||||
<string name="login_socks5_password">Contrasinal SOCKS5</string>
|
||||
|
||||
<string name="login_info_oauth2_title">Continuar co axuste simplificado?</string>
|
||||
<string name="login_info_oauth2_text">O enderezo introducido soporta o axuste simplificado (OAuth 2.0).\n\nNo seguinte paso, permite a ArcaneChat actuar como app de Conversa sobre Correo-e.\n\nNon hai servidores ArcaneChat, os teus datos permanecen no dispositivo.</string>
|
||||
<string name="login_certificate_checks">Comprobacións do certificado</string>
|
||||
@@ -750,7 +752,7 @@
|
||||
<string name="devicemsg_storage_exceeding">⚠️ A almacenaxe do teu provedor vaise esgotar, xa utilizaches %1$s %%.\n\nPode que non recibas mensaxes cando a almacenaxe chegue a 100%% utilizado.\n\n👉 Mira se podes eliminar datos antigos na interface web do teu provedor e pensa se debes activar \"Axustes / Eliminar Mensaxes Antigas\". Podes ver a almacenaxe actual utilizada en \"Axustes / Conectividade\".</string>
|
||||
<!-- %1%s will be replaced by date and time in some human-readable format -->
|
||||
<string name="devicemsg_bad_time">⚠️ A hora ou data no teu dispositivo poderían ser incorrectas (%1$s).\n\nAxusta o reloxio ⏰🔧 para asegurar que as túas mensaxes son recibidas correctamente.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ A túa versión de ArcaneChat podería estar desactualizada.\n\nEsto podería causar problemas porque os teus correspondentes utilizan versións máis novas - e ademáis non tes as últimas características 😳\nVai a https://get.delta.chat ou tenda de aplicacións para máis detalles.</string>
|
||||
<string name="devicemsg_update_reminder">⚠️ A túa versión de ArcaneChat podería estar desactualizada.\n\nEsto podería causar problemas porque os teus correspondentes utilizan versións máis novas - e ademáis non tes as últimas características 😳\nVai a https://github.com/ArcaneChat ou tenda de aplicacións para máis detalles.</string>
|
||||
|
||||
<!-- Some options as "Add Second Device" or "Backup" may require the system PIN/Fingerprint/Gesture/Etc. to be entered in a system dialog. This hint is added to the system dialog, below a title as "Add Second Device" or "Backup". -->
|
||||
<string name="enter_system_secret_to_continue">Escribe o código establecido no sistema para continuar.</string>
|
||||
@@ -804,6 +806,7 @@
|
||||
<string name="mailto_link_could_not_be_decoded">a ligazón mailto non se puido descodificar: %1$s</string>
|
||||
|
||||
<!-- notifications -->
|
||||
<!-- deprecated, use mark_as_read or mark_as_read_short -->
|
||||
<string name="notify_dismiss">Desbotar</string>
|
||||
<string name="notify_reply_button">Responder</string>
|
||||
<string name="notify_new_message">Nova mensaxe</string>
|
||||
|
||||