diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
deleted file mode 100644
index cd7317d19..000000000
--- a/.github/CONTRIBUTING.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Thank you for contributing to Delta Chat.
-
-If you like to discuss a **new feature** or submit suggestions,
-please use the community forum:
-
-*
-
-If you intend to send a **bug report** for Delta Chat,
-search for existing bugs first:
-
-* [Core](https://github.com/deltachat/deltachat-core-rust/issues?&q=is%3Aissue)
-* [Android](https://github.com/deltachat/deltachat-android/issues?&q=is%3Aissue)
-* [iOS](https://github.com/deltachat/deltachat-ios/issues?&q=is%3Aissue)
-* [Desktop](https://github.com/deltachat/deltachat-ios/issues?&q=is%3Aissue)
-
-In short, the Android/iOS/Desktop parts are about the User Interface.
-The Core part is about handling the connection to the mail server and the chat
-or e-mail messages as well as providing secure communication by using
-[Autocrypt](https://autocrypt.org/en/latest/).
-
-A _bug_ is a reproducable misbehaviour,
-when something happens but something else should happen instead.
-
-Please try to create your issue in the respective issue tracker.
-
-Did you know there is a [Help](https://delta.chat/en/help) page for Delta Chat?
-
-To ask questions, you are also invited to join our IRC channel #deltachat
-on [Freenode](https://kiwiirc.com/nextclient/#irc://irc.freenode.net/deltachat).
-
diff --git a/.github/workflows/preview-apk.yml b/.github/workflows/preview-apk.yml
index d7f294da9..b838276a7 100644
--- a/.github/workflows/preview-apk.yml
+++ b/.github/workflows/preview-apk.yml
@@ -11,17 +11,18 @@ jobs:
uses: styfle/cancel-workflow-action@0.9.1
with:
access_token: ${{ github.token }}
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
submodules: recursive
- - uses: Swatinem/rust-cache@v1
+ - uses: Swatinem/rust-cache@v2
with:
working-directory: jni/deltachat-core-rust
- - uses: actions/setup-java@v1.4.3
+ - uses: actions/setup-java@v3
with:
- java-version: 11
- - uses: android-actions/setup-android@v2
- - uses: actions/cache@v2
+ java-version: 17
+ distribution: 'temurin'
+ - uses: android-actions/setup-android@v3
+ - uses: actions/cache@v3
with:
path: |
~/.gradle/caches
@@ -48,7 +49,7 @@ jobs:
run: ./gradlew --no-daemon assembleGplayDebug
- name: Upload APK
- uses: actions/upload-artifact@v2
+ uses: actions/upload-artifact@v3
with:
name: app-preview.apk
path: 'build/outputs/apk/gplay/debug/*.apk'
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8e2e73376..40b1f1cfb 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -53,7 +53,7 @@ jobs:
echo "DC_RELEASE_STORE_PASSWORD=${{ secrets.KEY_STORE_PASSWORD }}" >> ~/.gradle/gradle.properties
echo "DC_RELEASE_KEY_ALIAS=${{ secrets.ALIAS }}" >> ~/.gradle/gradle.properties
echo "DC_RELEASE_KEY_PASSWORD=${{ secrets.KEY_PASSWORD }}" >> ~/.gradle/gradle.properties
- ./gradlew --no-daemon assembleGplayRelease
+ ./gradlew --no-daemon assembleFossRelease
- name: Release
uses: softprops/action-gh-release@v1
@@ -62,4 +62,4 @@ jobs:
body: "WARNING: DeltaChat Lite is not DeltaLab! it is a lightweight version of Delta Chat"
prerelease: ${{ contains(github.event.ref, '-beta') }}
fail_on_unmatched_files: true
- files: build/outputs/apk/gplay/release/*.apk
+ files: build/outputs/apk/foss/release/*.apk
diff --git a/.gitignore b/.gitignore
index e06e7294b..3e39f6288 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,7 +5,7 @@ project.properties
.settings
bin/
gen/
-gplay/
+/gplay/
.idea/
*.iml
*.so
@@ -45,3 +45,5 @@ jni/x86_64
jni/armeabi
jni/armeabi-v7a
jni/arm64-v8a
+
+*~
\ No newline at end of file
diff --git a/.tx/config b/.tx/config
index 18fae2ddf..53f8bbb00 100644
--- a/.tx/config
+++ b/.tx/config
@@ -3,8 +3,8 @@ host = https://www.transifex.com
lang_map = id: in, ja_JP: ja, nl_NL: nl, pt_BR: pt-rBR, zh_CN: zh-rCN, zh_TW: zh-rTW
[o:delta-chat:p:delta-chat-app:r:stringsxml]
-file_filter = res/values-/strings.xml
-source_file = res/values/strings.xml
+file_filter = src/main/res/values-/strings.xml
+source_file = src/main/res/values/strings.xml
source_lang = en
type = ANDROID
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9d4cf9c38..69cd855a3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,249 @@
# Delta Chat Android Changelog
+## v1.46.5
+2024-06
+
+* support webxdc apps with experimental realtime channels ("Settings / Advanced / Realtime Webxdc Channels")
+* fewer traffic in larger chatmail groups by allowing more than 50 recipients per time
+* log debug level (mostly foreign modules) only if "Settings / Advanced / Developer Mode" is enabled
+* fix: avoid asking to disable battery optimisations when creating the second profile
+* fix hangs on low/no network during onboarding
+* fix: cancel muting does not cancel selection in chatlist
+* fix migrated address losing verified status and key on experimental AEAP
+* fix: allow creation of groups by outgoing messages without recipients
+* fix: avoid group splits by preferring ID from encrypted header over references for new groups
+* fix: do not fail to send images with wrong extensions
+* fix: retry sending MDNs on temporary error
+* fix: do not miss new messages while expunging the folder
+* fix missing logging info lines
+* fix: remove group member locally even if sending fails
+* fix: revert group member addition if the corresponding message couldn't be sent
+* update translations and local help
+* update to core 1.140.2
+
+
+## v1.46.3
+2024-06
+
+* Disable FCM PUSH notification support for F-Droid and other non-Google-Play-builds
+* using core 1.139.5
+
+
+## v1.46.2
+2024-06
+
+* fix: create new profile when scanning/tapping QR codes outside "Add Profile"
+* update translations and local help
+* using core 1.139.5
+
+
+## v1.46.1
+2024-05
+
+* new onboarding: you can create a new profile with one tap on "Create New Profile" -
+ or use an existing login or second-device-setup as usual
+* use FCM PUSH notification if supported by providers (as chatmail) and by the operating system
+* do not ask for disabling "battery optimisations" when PUSH notifications are working
+* add an option to disable PUSH notifications
+* contacts can be attached as "Cards" at "Attach / Contact";
+ when the receiver taps the cards, guaranteed end-to-end encrypted can be established
+* "Profiles" are names as such throughout the app;
+ note that these profiles exist on the device only, there is nothing persisted on the server
+* adding contacts manually at "New Chat / New Contact / Add Contact Manually"
+* send any emoji as reaction
+* show reactions in summaries
+* nicer summaries by using some emojis for attachment types
+* pin/archive/etc chats directly from search result
+* new map for - still experimental - location streaming (enable at "Settings / Advanced")
+* ask for system unlock before accessing "password & account"
+* advanced settings resorted, you'll also find "password & account" and "show classic emails" there
+* improve resilience by adding references to the last three messages
+* one-to-one chats are read-only during reasonable run of securejoin
+* if securejoin is taking longer than expected, a warning is shown and messages can be sent
+* improve resilience by including more entries in DNS fallback cache
+* improve anonymous mailing lists by not adding hostname to Message-ID
+* harden share-to-delta
+* add second device's troubleshooting is always available offline now
+* hide folder options if not supported by the used account
+* allow to view password (after entering system secret)
+* device update message is added as unread only for the first account
+* share log to other chats or apps
+* use colors for info/warning/error in the log
+* fix: preserve upper-/lowercase of links from HTML-messages
+* fix: rescan folders on "Watch Sent Folder" changes
+* fix sometimes wrong sender name in "Message Info"
+* fix: do not send avatar in securejoin messages before contact verification
+* fix: avoid being re-added to groups just left
+* fix: do not auto-delete webxdc apps that have recent updates
+* fix: improve moving messages on gmail
+* fix: improve chat assignments of not downloaded messages
+* fix: do not create ad-hoc groups from partial downloads
+* fix: improve connectivity on startup by adding backoff for IMAP connections
+* fix: mark contact request messages as seen on IMAP server
+* fix: convert images to RGB8 before encoding into JPEG to fix sending of large RGBA images
+* fix showing large PNG files
+* fix: do not convert large GIF to JPEG
+* fix receiving Autocrypt Setup Messages from K-9
+* fix: delete expired locations and POIs with deleted chats
+* fix: send locations more reliable
+* fix: use last known location if it is recent enough
+* fix: do not fail to send encrypted quotes to unencrypted chats, replace quote by "..." instead
+* fix: always use correct "Saved Messages" icon when the chat is recreated
+* fix: add white background to transparent avatars
+* fix crashes when exporting or importing huge accounts
+* fix: remove leading whitespace from subject
+* fix problem with sharing the same key by several accounts
+* fix busy looping eg. during key import
+* fix remote group membership changes always overriding local ones
+* fix hint when adding a webxdc shortcut to the home page
+* fix webxdc links for securejoin
+* fix sending uncompressed images (bug introduced in beta 1.45 beta series)
+* fix: hide not useful menu options in the QR screens
+* fix scanning invite codes from the "New Chat" screen
+* fix: use the last header of multiple ones with the same name; this is the one DKIM was using
+* fix migration of legacy databases
+* fix: on onboarding, keep entered name and avatar when scanning QR codes or going for other options
+* fix broken "..." ellipsis for small screens
+* fix: do not mark the message with locations as seen
+* fix startup crash on android4
+* fix location streaming crash introduced in 1.45 beta
+* update translations and local help
+* update to core 1.139.5
+
+
+## v1.44.0
+2024-03
+
+* sync self-avatar and self-signature text across devices
+* remove webxdc sending limit
+* recognize "Trash" folder by name in case it is not flagged as such by the server
+* send group avatars inline so that they do not appear as unexpected attachments
+* "Settings / Advanced / Send statistics to Delta Chat's developers"
+ now include number of protected/encrypted/unencrypted chats
+* fix sending sync messages on updating self-name etc.
+* fix sometimes slow reconnects
+* more bug fixes
+* update translations and local help
+* update to core 1.136.2
+
+
+## v1.43.1 Testrun
+2024-02
+
+* add "Settings / Advanced / Send statistics to Delta Chat's developers" to draft a message with statistic;
+ the message is only sent if the user hits the "Send" button
+* add device message if outgoing messages are undecryptable
+* "Settings / Advanced / Read System Address Book" is remembered per-account
+* add link to troubleshooting for "Add as Second Device" on welcome screen and update troubleshooting
+* fix compatibility issue with 1.42 when using "Add Second Device" or backups
+* fix sometimes mangled links
+* fix sometimes wrongly marked gossiped keys
+* fix: guarantee immediate message deletion if "Delete Messages from Server" is set to "At once"
+* fix: Never allow a message timestamp to be a lot in the future
+* fix: make IMAP folder handling more resilient
+* update translations and local help
+* update to core 1.135.0
+
+
+## v1.43.0 Testrun
+2024-02
+
+* add "Reactions": long tap a message to react to it ❤️
+* reactions from others are shown below the messages
+* tap a reaction below a message to get reaction details
+* sharing QR code now shares "Invite Link":
+ if tapped by with Delta Chat users, Delta Chat opens; otherwise the browser opens;
+ the server does not get any information about the link details (as "Fragment" is not sent to server)
+* copying/pasting QR code data now also supports invite links
+* when using multiple accounts,
+ the avatar in the upper left corner now shows the number of unread messages in other account
+* updated "welcome message" now focuses about how to get in contact
+* add meaningful info message if provider does not allow unencrypted messages
+* long-tapping chatlist items now allow to mute/unmute chats directly
+* ask for system unlock secret before opening "Password & Account"
+* add 'Learn More' to ephemeral messages dialog
+* mark data as being "fragile", supporting systems now allows the data to be kept, making reinstalls easier
+* new option "Settings / Advanced / Read System Address Book":
+ when enabled, the address book addresses are added to the "New Chat" activity
+* faster reconnects when switching from a bad or offline network to a working network
+* add "From:" to protected headers for signed-only messages generated by some apps
+* sync user actions for ad-hoc groups across devices
+* sync contact creation/rename across devices
+* encrypt read receipts
+* only try to configure non-strict TLS checks if explicitly set
+* accept i.delta.chat as well as openpgp4fpr: links
+* force a display name to be set when using an instant onboarding QR code
+* focus on name and state for guaranteed e2ee chats; email address and other data are available in the profile
+* improve navigation on account creation by adding a title and a back button to the welcome screen
+* fix: delete resent messages on receiver side
+* fix: do not drop unknown report attachments, such as TLS reports
+* fix: be graceful with systems mangling the qr-code-date (macOS, iOS)
+* fix unexpected line breaks in messages (by using Quoted-Printable MIME)
+* fix: avoid retry sending for servers not returning a response code in time (force BCC-self)
+* fix partially downloaded messages getting stuck in "Downloading..."
+* fix inconsistent QR scan states (track forward and backward verification separately, mark 1:1 chat as verified as early as possible)
+* fix duplicated messages for some providers as "QQ Mail"
+* fix: do not remove contents from unencrypted Schleuder mailing lists messages
+* fix: reset message error when scheduling resending
+* fix marking some one-to-one chats as guaranteed
+* fix: avoid multiple resending of messages on slow SMTP servers
+* fix: more reliable connectivity information
+* fix: delete received outgoing messages from SMTP queue
+* fix timestamp of guaranteed e2ee info message for correct message ordering after backup restore
+* fix: add padlock to empty part if the whole message is empty
+* fix IDLE timeout renewal on keepalives and reduce it to 5 minutes
+* fix: fail fast on LIST errors to avoid busy loop when connection is lost
+* fix: improve checking if all members of a chat are verified
+* fix: same "green checkmark" message order on all platforms
+* fix CI by increasing TCP timeouts from 30 to 60 seconds
+* update translations and local help
+* update to core 1.134.0
+
+
+## v1.42.6
+2023-11
+
+* sync changes on "Your Profile Name", "Show Class Mails", "Read Receipts" options across devices
+* remove receiver limit on .xdc size
+* fix decryption errors when using multiple private keys
+* fix more log in errors for providers as 163.com; this was introduced in 1.41
+* fix: database locked errors on webxdc updates
+* update translations and local help
+* update to core 1.131.9
+
+
+## v1.42.4
+2023-11
+
+* fix battery draining due to active IMAP loop on some providers; this was introduced in 1.41
+* fix log in error on some providers as 163.com; this was introduced in 1.41
+* fix "Learn More" buttons that opened the help always in english
+* update local help
+* update to core 1.131.7
+
+
+## v1.42.3
+2023-11
+
+* fix: avoid infinite loop by failing fast on IMAP FETCH parsing errors
+* update translations
+* update to core 1.131.6
+
+
+## v1.42.2
+2023-11
+
+* fix contact creation using outdated names sometimes
+* fix: do not replace the message with an error in square brackets
+ when the sender is not a member of the protected group
+* fix: compare addresses on QR code scans and at similar places case-insensitively
+* fix: normalize addresses to lower case to catch unrecoverable typos and other rare errors
+* fix: fetch contact addresses in a single query
+* fix: sync chat name to other devices
+* update translations and local help
+* update to core 1.131.5
+
+
## v1.42.1
2023-11
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..61f2e74d8
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,153 @@
+# Contributing Guidelines
+
+Thank you for looking for ways to help on Delta Chat Android!
+
+This document tries to outline some conventions that may not be obvious
+and aims to give a good starting point to new contributors.
+
+
+## Reporting Bugs
+
+If you found a bug, [report it on Github](https://github.com/deltachat/deltachat-android/issues).
+
+Project maintainers may transfer bugs that are not UI specific
+(eg. network, database or encryption related)
+to [Delta Chat Core](https://github.com/deltachat/deltachat-core-rust/issues).
+If you assume beforehand, that the bug you've found belongs to Core,
+you can report there directly.
+
+Please search both open and closed issues to make sure your bug report is not a duplicate.
+
+For community interactions around Delta Chat
+please read our [Community Standards](https://delta.chat/community-standards).
+
+
+## Proposing Features
+
+If you have a feature request,
+create a new topic on the [Forum](https://support.delta.chat/c/features/6).
+
+
+## Rough UX Philosophy
+
+Some rough ideas, that may be helpful when thinking about how to enhance things:
+
+- Work hard to avoid options and up-front choices.
+ Thinking about concrete user stories may help on that.
+- Avoid to speak about keys and other hard to understand things in the primary UI.
+- The app shall work offline as well as with bad network.
+- Users do not read (much).
+- Consistency matters.
+- Offer only things that are highly useful to many people in primary UI.
+ If really needed, bury other things eg. in some menus.
+- The app should be for the many, not for the few.
+
+
+## Contributing Code
+
+The [README](./README.md) explains in detail how to set up the build environment.
+Please follow all steps precisely.
+If you run into troubles,
+ask on one of the [communication channels](https://delta.chat/contribute) for help.
+
+To contribute code,
+[open a Pull Request](https://github.com/deltachat/deltachat-android/pulls).
+
+If you have write access to the repository,
+push a branch named `/`
+so it is clear who is responsible for the branch,
+and open a PR proposing to merge the change.
+Otherwise fork the repository and create a branch in your fork.
+
+Please add a meaningful description to your PR
+so that reviewers get an idea about what the modifications are supposed to do.
+
+A meaningful PR title is helpful for [updating `CHANGELOG.md` on releases](./RELEASE.md)
+(CHANGELOG.md is updated manually
+to only add things that are at least roughly understandable by the end user)
+
+If the changes affect the user interface,
+screenshots are very helpful,
+esp. before/after screenshots.
+
+
+### Coding Conventions
+
+Source files are partly derived from different other open source projects
+and may follow different coding styles and conventions.
+
+If you do a PR fixing a bug or adding a feature,
+please embrace the coding convention you see in the corresponding files,
+so that the result fits well together.
+
+Do not refactor or rename things in the same PR
+to make the diff small and the PR easy to review.
+
+Project language is Java.
+
+By using [Delta Chat Core](https://github.com/deltachat/deltachat-core-rust)
+there is already a strong separation between "UI" and "Model".
+Further separations and abstraction layers are often not helpful
+and only add more complexity.
+
+Try to avoid premature optimisation
+and complexity because it "may be needed in some future".
+Usually, it is not.
+
+Readable code is better than having some Java paradigms fulfilled.
+Classic Java has a strong drive to add lots of classes, factories, one-liner-functions.
+Try to not follow these patterns and keep things really on point and simple.
+If this gets in conflict with embracing existing style, however,
+consistency with existing code is more important.
+
+The "Delta Chat Core" is a high-level interface to what the UI actually needs,
+data should be served in a form that the UI do not need much additional work.
+If this is not the case, consider a feature proposal to "Delta Chat Core".
+
+
+### Merging Conventions
+
+PR are merged usually to the branch `main` from which [releases](./RELEASE.md) are done.
+
+As a default, do a `git rebase main` in case feature branches and `main` differ too much.
+
+Once a PR has an approval, unless stated otherwise, it can be merged by the author.
+A PR may be approved but postponed to be merged eg. because of an ongoing release.
+
+To ensure the correct merge merge strategy, merging left up to the PR author:
+
+- Usually, PR are squash-merged
+ as UI development often results in tiny tweak commits that are not that meaningful on their own.
+- If all commits are meaningful and have a well-written description,
+ they can be rebased-merged.
+
+If you do not have write access to the repository,
+you may leave a note in the PR about the desired merge strategy.
+
+
+## Translations
+
+Translations are done via [Transifex](https://explore.transifex.com/delta-chat/),
+you can log in there with your E-Mail Address or with a Github or Google handle.
+You find two projects there:
+- "Delta Chat App" contains the strings used in the app's UI
+- "Delta Chat Website" contains the offline help from "Settings / Help"
+ as well as the pages used on
+
+Most strings and the whole help are used for all systems
+(Android, iOS, Linux, Windows, macOS)
+and should be formulated accordingly.
+
+If you want to change the english sources,
+do a PR to [`strings.xml`](https://github.com/deltachat/deltachat-android/blob/main/res/values/strings.xml)
+or to [`help.md`](https://github.com/deltachat/deltachat-pages/blob/master/en/help.md).
+Again, please do not mix adding things and refactorings, esp. for `help.md`,
+this would require retranslations and should be considered carefully.
+
+
+## Other Ways To Contribute
+
+For other ways to contribute, refer to the [website](https://delta.chat/contribute).
+
+If you think, something important is missed in this overview,
+please do a PR to this document :)
diff --git a/Dockerfile b/Dockerfile
index ef4f19fcf..4255d6ddb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM docker.io/ubuntu:18.04
+FROM docker.io/debian:12.4
# Install Android Studio requirements
# See https://developer.android.com/studio/install#linux
@@ -7,7 +7,7 @@ RUN apt-get update -y \
wget \
curl \
unzip \
-openjdk-11-jre \
+openjdk-17-jre \
file \
build-essential \
&& rm -rf /var/lib/apt/lists/*
diff --git a/README.md b/README.md
index 7e7abf484..0d268151a 100644
--- a/README.md
+++ b/README.md
@@ -8,6 +8,8 @@ The APK can also be downloaded from [get.delta.chat](https://get.delta.chat).
For the core library and other common info, please refer to the
[Delta Chat Core Library](https://github.com/deltachat/deltachat-core-rust).
+For general contribution hints, please refer to [CONTRIBUTING.md](./CONTRIBUTING.md).
+
@@ -225,6 +227,14 @@ You have 2 ways to do this:
2. Or set them via environment variables.
+# Translations
+
+Android metadata and changelogs are translated using [Weblate](https://hosted.weblate.org/projects/deltachat/android-metadata/).
+
+
+
+
+
# Credits
The user interface classes are based on the Signal messenger.
diff --git a/RELEASE.md b/RELEASE.md
index 881721728..cad21c9e5 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -23,7 +23,10 @@ the following steps are done in a PR called `prep-VERSION` (no leading "v"):
from
and .
avoid technical terms, library versions etc. the changelog is for the end user.
- do not forget to update/mention used core version and release month.
+ do not forget to update/mention used core version and release month.
+ in case previous entries of the changelog refer to betas or to not officially released versions,
+ the entries can be summarized.
+ this makes it easier for the end user to follow changes by showing major changes atop
4. add a device message to `ConversationListActivity::onCreate()` or remove the old one.
do not repeat the CHANGELOG here: write what really is the ux outcome
@@ -69,7 +72,8 @@ on :
9. a) open "Delta Chat/Release/Production"
then "Create new release" and upload APK from above
- b) fill out "Release details/Release notes" (500 characters, summary can be reused for F-Droid),
+ b) fill out "Release details/Release notes" (500 chars), add the line
+ "These features will roll out over the coming days. Thanks for using Delta Chat!";
release name should be default ("123 (1.2.3)")
c) click "Next", set "Rollout Percentage" to 1% (later 2%, 5%, 10%, 20%, 50%, 100%),
click "Start rollout to Production"
@@ -105,6 +109,16 @@ on :
f) on "Step 4" page: "Submit app"
+## Release on Huawei AppGallery
+
+on :
+
+13. a) go to "Upload your app / Android / Delta Chat / Update", again "Update" upper right
+ b) "Manage Packages / Upload", upload the APK from above, hit "Save"
+ c) Update "App Information / New Features", hit "Save", then "Next"
+ d) Hit "Submit"; on the next page, confirm version and language
+
+
## Releases on Apklis, Passkoocheh
These stores are not under our control.
diff --git a/assets/device-messages/green-checkmark.jpg b/assets/device-messages/green-checkmark.jpg
deleted file mode 100644
index 82a367d61..000000000
Binary files a/assets/device-messages/green-checkmark.jpg and /dev/null differ
diff --git a/assets/help/pl/help.html b/assets/help/pl/help.html
deleted file mode 100644
index c242f3ad6..000000000
--- a/assets/help/pl/help.html
+++ /dev/null
@@ -1,1533 +0,0 @@
-
-
Delta Chat to nowa aplikacja do czatowania, która wysyła wiadomości e-mailem, w miarę możliwości zaszyfrowane przy użyciu Autocrypt.
-Nie musisz się nigdzie rejestrować, po prostu użyj swojego istniejącego konta e-mail w Delta Chat.
-
-
-
-
-
-
- Jak mogę znaleźć ludzi, z którymi mogę czatować?
-
-
-
-
-
Dzięki Delta Chat możesz pisać na każdy istniejący adres e-mail - nawet
-jeśli odbiorca nie korzysta z aplikacji Delta Chat. Odbiorca nie musi
-instalować tej samej aplikacji co Twoja, tak jak w przypadku innych komunikatorów.
-
-
-
-
- Jakie są zalety Delta Chat w porównaniu z innymi komunikatorami?
-
-
-
-
-
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
-
-
- Jakie wiadomości pojawiają się w Delta Chat?
-
-
-
-
-
Domyślnie Delta Chat pokazuje wszystkie e-maile.
-
-
Możesz to zmienić w „Ustawienia » Czaty i media » Pokaż klasyczne e-maile”. Masz następujące opcje:
-
-
-
„Nie, tylko czaty”: Wyświetlane są tylko wiadomości wysłane przez innych użytkowników Delta Chat i odpowiedzi na Twoje wiadomości Delta Chat. Ma to największy sens, jeśli używasz tego samego konta e-mail również do wysyłania zwykłych wiadomości e-mail. To jest ustawienie domyślne.
-
„Wszystkie”: Delta Chat pokazuje wszystkie e-maile, które są wysyłane na Twój adres e-mail. Ma to sens, jeśli chcesz używać Delta Chat do wszystkich swoich e-maili, więc żadna wiadomość nie zostanie utracona. To jest ustawienie domyślne.
-
„Dla zaakceptowanych kontaktów”: Delta Chat pokazuje wszystkie e-maile od kontaktów, z którymi już prowadzisz czat, ale nowe czaty pojawiają się tylko dla wiadomości Delta Chat. Pomaga to zdecydować indywidualnie dla każdego przypadku, czy chcesz prowadzić rozmowę w Delta Chat, czy w „normalnej” aplikacji e-mail.
-
-
-
-
-
- Co zrobić, jeśli oczekuję wiadomości od osoby, do której nie pisałem w przeszłości?
-
-
-
-
-
-
Jeśli wiadomość przychodzi od nieznanego kontaktu, pojawia się jako prośba. Musisz zaakceptować prośbę, zanim będziesz mógł odpowiedzieć.
-
Możesz również „usunąć” ją, jeśli nie chcesz na razie z nią rozmawiać. To nie usuwa wiadomości na serwerze, tylko na Twoim urządzeniu. Możesz więc nadal zajmować się tą wiadomością w innej aplikacji pocztowej.
-
Jeśli usuniesz prośbę, przyszłe wiadomości od tego kontaktu będą nadal wyświetlane jako prośba o wiadomość, więc możesz zmienić zdanie. Jeśli naprawdę nie chcesz otrzymywać wiadomości od tej osoby, rozważ zablokowanie jej.
-
-
-
-
-
- Czy Delta Chat obsługuje obrazy, filmy i inne załączniki?
-
-
-
-
-
-
-
Tak. Oprócz zwykłego tekstu wszystkie załączniki wiadomości e-mail są wyświetlane jako oddzielne wiadomości. Wiadomości wychodzące automatycznie otrzymują załączniki w razie potrzeby.
-
-
-
Ze względu na wydajność obrazy są domyślnie optymalizowane i wysyłane w mniejszym rozmiarze, ale można je wysłać jako „plik”, aby zachować oryginał.
-
-
-
-
-
-
- Jak mogę dodawać lub przełączać się między wieloma kontami?
-
-
-
-
-
Możesz łatwo pracować z dodatkowymi kontami na klientach mobilnych i stacjonarnych Delta Chat, klikając:
-
-
na przycisku menu, a następnie „Przełącz konto” (Android i komputer stacjonarny)
-
lub ikonę profilu, a następnie „Dodaj konto” (iOS)
Możesz dodać zdjęcie profilowe w swoich ustawieniach. Jeśli napiszesz do swoich kontaktów lub dodasz je za pomocą kodu QR, automatycznie zobaczą je jako Twoje zdjęcie profilowe.
-
-
-
Kontakty, które nie korzystają z Delta Chat nie widzą zdjęcia profilowego (jednak oczywiście mogą zainstalować Delta Chat :)
-
-
-
Ze względów prywatności nikt nie widzi Twojego zdjęcia profilowego, dopóki nie napiszesz do niego wiadomości.
-
-
-
Twoje zdjęcie profilowe nie jest wysyłane z każdą wiadomością, ale wystarczająco regularnie, aby kontakty ponownie otrzymały Twoje zdjęcie profilowe, nawet jeśli dodadzą nowe urządzenie.
-
-
-
-
-
-
- Czy Delta Chat obsługuje wiadomości e-mail w formacie HTML?
-
-
-
-
-
Yes, incoming HTML messages come with a “Show full message” button.
-Outgoing messages always use plain text.
-
-
-
-
- Dlaczego muszę wpisać moje hasło e-mail do Delta Chat? Czy to jest bezpieczne?
-
-
-
-
-
Podobnie jak w przypadku innych programów pocztowych, takich jak Thunderbird, K9-Mail lub Outlook, program potrzebuje hasła, aby można było go używać do wysyłania wiadomości e-mail. Oczywiście hasło jest przechowywane tylko na Twoim urządzeniu. Hasło jest przesyłane tylko do Twojego dostawcy poczty e-mail (po zalogowaniu), który i tak ma dostęp do Twojej poczty
-
-
Jeśli korzystasz z dostawcy poczty e-mail z obsługą OAuth2, takiego jak gmail.com lub yandex.ru, nie musisz przechowywać hasła na urządzeniu. W takim przypadku używany jest tylko token dostępu.
-
-
Ponieważ Delta Chat jest Open Source, możesz sprawdzić Kod źródłowy
-jeśli chcesz sprawdzić, czy Twoje poświadczenia są przetwarzane w bezpieczny sposób. Cieszymy się z opinii, które sprawiają, że aplikacja jest bezpieczniejsza dla wszystkich naszych użytkowników.
W zależności od używanego systemu operacyjnego możesz
-zostać poproszony o przyznanie uprawnień aplikacji.
-Oto, co robi Delta Chat z tymi uprawnieniami:
-
-
-
Aparat (można zablokować)
-
robi zdjęcia i filmy: do wysyłania zdjęć
-
Kontakty (można zablokować)
-
czyta twoje kontakty: aby znaleźć kontakty do czatu
-
Lokalizacja (można zablokować)
-
dostęp do przybliżonej lokalizacji (sieciowe źródła lokalizacji): dla funkcji przesyłania strumieniowego lokalizacji
-
dostęp do dokładnej lokalizacji (GPS i sieciowe źródła lokalizacji): dla funkcji przesyłania strumieniowego lokalizacji
-
Mikrofon (można zablokować)
-
nagrywanie dźwięku: dla wiadomości audio
-
Przechowywanie (można zablokować)
-
modyfikowanie lub usuwanie zawartości karty SD: pobieranie załączników do wiadomości
-
czytanie zawartość twojej karty SD: aby udostępniać pliki swoim kontaktom
-
Inne możliwości aplikacji
-
zmiana ustawienia dźwięku: możesz wybrać dzwonki i głośność dla powiadomień i wiadomości audio
-
uruchamianie przy starcie: więc nie musisz ręcznie uruchamiać Delta Chat
-
kontrola wibracji: do powiadomień
-
przeglądanie połączenia sieciowych: aby połączyć się z dostawcą poczty e-mail
-
zapobieganie uśpieniu telefonu: dzięki czemu możesz łatwiej skopiować kod zabezpieczający podczas komunikatu konfiguracyjnego Autocrypt
-
pełny dostęp do sieci: aby połączyć się z dostawcą poczty e-mail
-
wyświetlanie połączenia Wi-Fi: aby połączyć się z dostawcą poczty e-mail
-
prośba o zignorowanie optymalizacji baterii: dla użytkowników, którzy chcą otrzymywać wiadomości przez cały czas
-
-
-
-
-
- Co oznacza przypinanie, wyciszanie i archiwizowanie?
-
-
-
-
-
Użyj tych narzędzi, aby uporządkować swoje czaty i mieć wszystko na swoim miejscu:
-
-
-
-
Przypięte czaty zawsze pozostają na szczycie listy czatów. Możesz ich używać, aby szybko lub tymczasowo uzyskać dostęp do swoich ulubionych czatów, aby o czymś nie zapomnieć.
-
-
-
Wycisz czaty, jeśli nie chcesz otrzymywać z nich powiadomień. Wyciszone czaty pozostają na swoim miejscu i możesz też przypiąć wyciszony czat.
-
-
-
Archiwizuj czaty, jeśli nie chcesz ich już widzieć na liście czatów. Zarchiwizowane czaty pozostają dostępne nad listą czatów lub poprzez wyszukiwanie.
-
-
-
Gdy zarchiwizowany czat otrzyma nową wiadomość, o ile nie zostanie wyciszony, wyskoczy z archiwum i wróci na twoją listę czatów.
-Wyciszone czaty pozostają zarchiwizowane do czasu ich ręcznego przywrócenia.
-
-
-
-
Aby zarchiwizować lub przypiąć czat, dotknij i przytrzymaj (Android), użyj menu czatu (Android/Desktop) lub przesuń palcem w lewo (iOS);
-aby wyciszyć czat, użyj menu czatu (Android/Desktop) lub profilu czatu (iOS).
-
-
-
-
- Co oznacza zielona kropka?
-
-
-
-
-
-
Od wersji Delta Chat 1.34 czasami można zobaczyć „zieloną kropkę” obok awatara kontaktu. Oznacza to, że był on „niedawno widziany”.
-
Dokładnie oznacza to, że w ciągu ostatnich 10 minut Delta Chat widział go:
-
dlatego, że wysłał Ci bezpośrednio wiadomość,
-
ponieważ napisał coś do grupy, której oboje jesteście członkami,
-
ponieważ wysłał Ci potwierdzenie przeczytania napisanej przez Ciebie wiadomości,
-
lub dlatego, że wysłał dane do Twojej aplikacji Delta Chat za pomocą Webxdc aplikacji.
-
Nie jest to więc status online w czasie rzeczywistym – a jeśli ktoś nie odpowie od razu, mimo że wydaje się, że jest online, nie martw się i daj mu trochę miejsca ;-)
-
Z drugiej strony inni nie zawsze „zobaczą, że jesteś online”. Jeśli wyłączyłeś potwierdzenia odczytu, nie zobaczą oni zielonej kropki, dopóki nie wyślesz do nich wiadomości lub nie napiszesz do grupy, w której również się znajdują.
-
-
-
-
-
- Jak mogę usunąć swoje konto?
-
-
-
-
-
Gdy korzystasz z konta e-mail w Delta Chat, 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.
-
-
Jeśli chcesz zachować konto, ale odinstalować Delta Chat, zaleca się opuszczenie każdego czatu grupowego przed odinstalowaniem Delta Chat.
-
-
-
-
- Grupy
-
-
-
-
-
-
-
- Tworzenie grupy
-
-
-
-
-
-
Wybierz Nowy czat, a następnie Nowa grupa z menu w prawym górnym rogu lub naciśnij odpowiedni przycisk na Androidzie / iOS.
-
Na następnym ekranie wybierz członków grupy i zdefiniuj nazwę grupy. Możesz też wybrać awatar grupy.
-
Zaraz po napisaniu pierwszej wiadomości w grupie wszyscy członkowie zostaną poinformowani o nowej grupie i mogą odpowiedzieć w grupie (jeżeli nie napiszesz wiadomości w grupie, grupa jest niewidoczna dla członków).
-
-
-
-
-
- Dodanie członków do grupy
-
-
-
-
-
-
Każdy członek grupy ma takie same prawa jak każdy inny. Z tego powodu każdy może usunąć każdego członka lub dodać nowego.
-
Aby dodać lub usunąć członków, kliknij nazwę grupy na czacie.
-
-
-
-
-
- Usunąłem się przez przypadek.
-
-
-
-
-
-
Ponieważ nie jesteś członkiem grupy, nie możesz dodać siebie ponownie.
-Jednak nie ma problemu, po prostu poproś dowolnego członka grupy na normalnym czacie, aby dodał cię ponownie.
-
-
-
-
-
- Nie chcę już otrzymywać wiadomości od grupy.
-
-
-
-
-
-
-
Usuń siebie z listy członków lub usuń cały czat.
-Jeśli później będziesz chciał ponownie dołączyć do grupy, poproś innego członka grupy, aby dodał cię do grupy.
-
-
-
Alternatywnie możesz też „Wyłączyć powiadomienia” dla grupy dzięki temu otrzymasz wszystkie wiadomości i
-nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych nowych wiadomościach.
-
-
-
-
-
-
- Co oznaczają znaczniki wyświetlane obok wiadomości wychodzących?
-
-
-
-
-
-
Jeden znacznik oznacza, że wiadomość została pomyślnie wysłana do Twojego dostawcy.
-
Dwa znaczniki oznaczają, że co najmniej jedno urządzenie odbiorcy zgłosiło otrzymanie wiadomości.
-
Odbiorcy mogli wyłączyć potwierdzenia odczytu, więc nawet jeśli widzisz tylko jeden znacznik, wiadomość mogła zostać przeczytana.
-
Odwrotnie, dwa znaczniki nie oznaczają automatycznie, że człowiek przeczytał lub zrozumiał wiadomość ;)
-
-
-
-
-
- Co się stanie, jeśli włączę opcję „Usuń wiadomości z serwera”?
-
-
-
-
-
-
-
Domyślnie Delta Chat przechowuje wszystkie wiadomości lokalnie na Twoim urządzeniu. Jeśli np. chcesz zaoszczędzić miejsce u swojego dostawcy poczty, możesz wybrać automatyczne usuwanie starych wiadomości. Pozostają one nadal na Twoim urządzeniu, dopóki nie usuniesz ich również tam.
-
-
-
Aby ją włączyć, w ustawieniach „Czaty i media” przejdź do Usuwanie starych wiadomości → Usuń wiadomości z serwera. Możesz ustawić przedział czasowy pomiędzy „Od razu” a „Po 1 roku”. Wszystkie e-maile otrzymane przez Delta Chat zostaną usunięte z serwera po tym czasie.
-
-
-
Zauważ, że jeśli używasz Delta Chat na więcej niż jednym urządzeniu, powinieneś pozostawić wiadomości na serwerze, do czasu, aż inne urządzenie/urządzenia będzie mogło je pobrać.
-
-
-
-
-
-
- Co się stanie, jeśli włączę opcję „Usuń wiadomości z urządzenia”?
-
-
-
-
-
-
Jeśli chcesz zaoszczędzić miejsce na urządzeniu, możesz wybrać opcję automatycznego usuwania starych wiadomości.
-
Aby ją włączyć, przejdź do „Usuń wiadomości z urządzenia” w ustawieniach w sekcji „Czaty i media”. Możesz ustawić przedział czasowy pomiędzy „po 1 godzinie” a „po 1 roku”; w ten sposób wszystkie wiadomości zostaną usunięte z urządzenia, gdy tylko staną się starsze.
-
-
-
-
-
- Encryption and Security
-
-
-
-
-
-
-
- Which standards are used for end-to-end encryption?
-
-
-
-
-
Autocrypt is used for automatically
-establishing end-to-end encryption with contacts and group chats.
-Autocrypt uses a limited and secure subset of the OpenPGP standard.
-End-to-End encrypted messages are marked with a padlock
-.
-
-
Secure-Join protocols
-are used for establishing chats with guaranteed end-to-end encryption
-which protects against network attacks and compromised servers.
-Chats marked with a green checkmark
-
-guarantee end-to-end encrypted messages.
-
-
-
-
- How can i know if messages are end-to-end encrypted?
-
-
-
-
-
All end-to-end encrypted messages carry a padlock:
-
-
-
-
End-to-end encryption is guaranteed if there is a green checkmark next to the chat title:
-
-
-
-
-
-
- How can I get guaranteed end-to-end encryption and green checkmarks?
-
-
-
-
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
-
-
Inviter side:
-
-
-
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
-
-
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
-
-
-
-
Joiner side:
-
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
If both devices are online,
-both sides will eventually see a (group or direct) chat with a green checkmark
-
-next to the title.
-
-
-
If one of the devices is offline, the green checkmarks will only
-appear later when the device is internet-connected again
-and the Secure-Join network protocol completed.
-
-
-
-
Congratulations!
-You now will automatically use guaranteed end-to-end encryption
-with this contact and both of you can add each other to green-checkmarked groups
-,
-thereby automatically spreading guaranteed end-to-end encryption among its members.
-
-
-
-
- What does the green checkmark and “guaranteed end-to-end encryption” mean?
-
-
-
-
-
Chat titles with green checkmarks
-
-mean that all messages in the chat will be end-to-end encrypted
-and can not be read or altered by compromised e-mail servers or Internet providers.
-Joining green-checkmarked group chats
-safely spreads everybody’s encryption information (and green checkmarks)
-in a manner that guarantees end-to-end encryption in the group and among members.
-
-
Contact profiles with green checkmarks
-
-mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
-Every green-checkmarked contact either did a direct QR-scan with you
-or was introduced by a another green-checkmarked contact.
-Introductions happen automatically when adding members to groups.
-Whoever adds a contact to a green-checkmarked group becomes an introducer
-to those members who didn’t yet know about the added contact.
-In a contact profile you can tap on the “Introduced by …” text repeatedly
-until you get to the one with whom you directly did a QR-scan.
-
-
Note that in a contact profile you may see and tap introducers
-but there is no green checkmark in the profile title.
-This usually means that the contact “sent a message from another device”.
-
-
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
-and specifically read about “Verified Groups”, the technical term
-of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
-
-
-
-
- A contact “sent a message from another device”, what can i do?
-
-
-
-
-
Your chat with a contact lost guaranteed end-to-end encryption.
-The green checkmark was removed for this chat and contact when you see this warning.
-If you find the sudden drop of guaranteed end-to-end encryption
-surprising for this contact then don’t accept the warning!
-Instead check with your contact through a second channel
-like a video call, other messenger or a phone call,
-to find out what happened.
-
-
If your contact actually caused the drop of guaranteed end-to-end encryption
-please see the next paragraphs for common reasons and their mitigations.
-Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
-even if the contact is a member there.
-
-
Your contact is using Delta Chat on a second device (phone or laptop)
-
-
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
-and add it as a second device as described here.
-As soon as they message you afterwards, the warning will be gone
-and guaranteed encryption is established with both devices of your contact.
-
-
Your contact reinstalled Delta Chat using their old account login
-
-
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
-As soon as they message you afterwards, the warning will be gone
-and guaranteed encryption is re-established for this contact.
-
-
If they don’t have a backup file, it’s best to perform a QR scan
-with your chat partner to re-establish guaranteed end-to-end encryption.
-
-
Your contact sent a mail through a webmail interface or another e-mail app
-and will get back to using Delta Chat soon again.
-
-
If you are sure that the contact sometimes uses webmail,
-or another mail app lacking end-to-end encryption,
-then you may accept the warning.
-As soon as your contact uses Delta Chat again,
-guaranteed end-to-end encryption will be automatically re-established.
-
-
Your contact stopped using Delta Chat entirely
-
-
Sometimes remaining in contact is more important than end-to-end encryption.
-“Transport Layer Encryption” (TLS) may still meaningfully protect
-the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
-to not read or manipulate your messages, and to not hand them to third parties.
-
-
In any case, you can not do much else than accept the warning.
-Please also remove the contact from any active green-checkmarked group
-which you can find in “Shared chats” in the Contact profile.
-This spares your contact from getting “unreadable” messages.
-
-
If the contact removed Delta Chat because of buggy or undesirable behaviour,
-please consider posting to our support forum
-to help us identify and address common problems. Thanks!
When we talk about an “end-to-end encrypted message”
-we always mean a whole message is encrypted,
-including all the attachments
-and attachment metadata such as filenames.
-
-
-
-
- Is OpenPGP secure?
-
-
-
-
-
Yes, Delta Chat uses a secure subset of OpenPGP
-and only displays a padlock security indicator on a message
-if the whole message is properly encrypted and signed.
-For example, “Detached signatures” are not treated as secure.
-
-
OpenPGP is not insecure by itself.
-Most publically discussed OpenPGP security problems
-actually stem from bad usability or bad implementations of tools or apps (or both).
-It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
-and GnuPG (GPG), a command line tool implementing OpenPGP.
-Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
-Delta Chat rather uses the OpenPGP Rust implementation rPGP,
-available as an independent “pgp” package,
-and security-audited in 2019.
-
-
We aim, along with other OpenPGP implementors,
-to further improve security characteristics by implementing the
-new IETF OpenPGP Crypto-Refresh
-which was thankfully adopted in summer 2023.
-
-
-
-
- Did you consider using alternatives to OpenPGP for end-to-end -encryption?
-
-
-
-
-
Yes, we are following efforts like MLS
-or Saltpack
-but adopting them would mean breaking end-to-end encryption interoperability
-with all other e-mail apps that typically support OpenPGP encryption.
-So it would not be a light decision to take
-and there must be tangible improvements for users.
-
-
Delta Chat takes a holistic “usable security” approach
-and works with a wide range of activist groupings as well as
-renowned researchers such as TeamUSEC
-to improve actual user outcomes against security threats.
-The wire protocol and standard for establishing end-to-end encryption is
-only one part of “user outcomes”,
-see also our answers to device-seizure
-and message-metadata questions.
-
-
-
-
- Is Delta Chat vulnerable to EFAIL?
-
-
-
-
-
No, Delta Chat never was vulnerable to EFAIL
-because its OpenPGP implementation rPGP
-uses Modification Detection Code when encrypting messages
-and returns an error
-if the Modification Detection Code is incorrect.
-
-
Delta Chat also never was vulnerable to the “Direct Exfiltration” EFAIL attack
-because it only decrypts multipart/encrypted messages
-which contain exactly one encrypted and signed part,
-as defined by the Autocrypt Level 1 specification.
-
-
-
-
- Is a message exposed in cleartext if end-to-end encryption is not available?
-
-
-
-
-
Even if your messages are not guaranteed to be end-to-end encrypted,
-they are still protected from Internet providers like cell or cable companies.
-However, your and your recipient’s e-mail providers
-may read, analyze or even modify your messages,
-including any attachments,
-if they are not end-to-end encrypted.
-
-
Delta Chat by default uses strict
-TLS encryption
-which secures connections between your device and your e-mail provider.
-All of Delta Chat’s TLS-handling has been independently security audited.
-Moreover, the connection between your and the recipient’s e-mail provider
-will typically be transport-encrypted as well.
-If the involved e-mail servers support MTA-STS
-then transport encryption will be enforced between e-mail providers
-in which case Delta Chat communications will never be exposed in cleartext to the Internet
-even if the message was not end-to-end encrypted.
-
-
Note that maintaining guaranteed end-to-end encryption on top of TLS encryption
-provides pervasive safety between your and the recipient’s devices.
-Not even your e-mail or Internet provider will be able to read or modify your messages.
-
-
-
-
- How does Delta Chat protect metadata in messages?
-
-
-
-
-
Delta Chat protects most message metadata by putting the following information
-into the end-to-end encrypted part of messages:
E-Mail servers do not get access to this protected metadata
-but they do see the message date as well as the message size,
-and, more importantly, the sender and receiver addresses.
-E-mail servers need receiver addresses to route and
-deliver messages to recipient’s devices.
-
-
-
-
- How to protect metadata and contacts when a device is seized?
-
-
-
-
-
Both for protecting against metadata-collecting e-mail servers
-as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
-can not be identified easily, as compared to messengers which reveal
-phone numbers in chat groups which in turn are often associated with legal identities.
-
-
-
-
- How can i check encryption information?
-
-
-
-
-
You may check the end-to-end encryption status manually in the “Encryption” dialog
-(user profile on Android/iOS or right-click a user’s chat-list item on desktop).
-Delta Chat shows two fingerprints there.
-If the same fingerprints appear on your own and your contact’s device,
-the connection is safe.
-
-
-
-
- How can I check the encryption status of messages?
-
-
-
-
-
A little padlock in a message bubble denotes
-that the message was properly end-to-end encrypted from the given sender.
-If there is no padlock, the message was not properly end-to-end encrypted
-most likely because the sender uses an app or webmail interface
-without support for end-to-end–encryption.
-
-
-
-
- Why do I see unencrypted messages?
-
-
-
-
-
If a contact uses a non-Autocrypt e-mail app,
-all messages involving this contact (in a group or 1:1 chat)
-will not be end-to-end encrypted, and thus not show a “padlock” with messages.
-Note that even if your contacts use Delta Chat on their account,
-they might also use a non-Autocrypt e-mail app on that account
-which then may cause intermittently unencrypted messages.
-Replying unencrypted to unencrypted messages is mandated by Autocrypt
-to prevent unreadable messages on the side of your contacts
-and their non-Autocrypt e-mail app.
-
-
-
-
- How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app?
-
-
-
-
-
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
-it’s best to setup guaranteed end-to-end encryption with them
-and then create a guaranteed end-to-end encrypted group chat with you two as members.
-In this group chat all messages will be end-to-end encrypted
-even if the direct chat between you two has a
-“… sent a message from another device” warning.
-
-
-
-
- How can I ensure message end-to-end encryption and deletion?
-
-
-
-
-
The best way to ensure every message is end-to-end encrypted,
-and metadata deleted as quickly as possible
-is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
-
-
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
-on the server after a user-configured time.
-
-
- Does Delta Chat support Perfect Forward Secrecy?
-
-
-
-
-
No, Delta Chat doesn’t support Perfect Forward Secrecy (PFS).
-This means that if your Delta Chat private decryption key is leaked,
-and someone has collected your prior in-transit messages,
-they will be able to decrypt and read them using the leaked decryption key.
-
-
Note, however, that if anyone obtains to your decryption keys,
-they will typically also be able to obtain your messages,
-irrespective if Perfect Forward Secrecy is in place or not.
-The typical real-world situation for leaked decryption keys is device seizure
-which we discuss in our answer on metadata and device seizure.
-
-
It is possible that Delta Chat evolves to support Perfect Forward Secrecy,
-because OpenPGP is just a container for encrypted messages
-but encryption key management (and thus key rotation or key “ratcheting”)
-could be organized in flexible ways.
-See Seqouia’s PFS prototype
-for existing experiments in the OpenPGP implementor community.
-
-
-
-
- Is end-to-end encryption of Delta Chat as safe as Signal?
-
-
-
-
-
It depends on what is important to you.
-Delta Chat does not support PFS like Signal does
-but it provides guaranteed end-to-end encrypted chats
-that are safe against compromised servers or corrupted networks.
-Signal and most other PFS-supporting messengers do not provide
-a practical scheme for protecting chat groups from network attacks
-which are arguably more worrysome
-than a potential attacker who seizes your phone and private encryption setup
-but somehow not your messages, yet has a full record of all
-past encrypted messages.
-
-
- Czy mogę ponownie wykorzystać mój istniejący klucz prywatny?
-
-
-
-
-
Yes.
-The best way is to send an Autocrypt Setup Message from the other e-mail client.
-Look for something like Start Autocrypt Setup Transfer in the settings of the other client and follow the instructions shown there.
-
-
Alternatively, you can import the key manually in “Settings -> Advanced settings -> Import secret keys”.
-Caution: Make sure the key is not protected by a password, or remove the password beforehand.
-
-
If you don’t have a key or don’t even know you would need one - don’t worry: Delta Chat generates keys as needed, you don’t have to hit a button for it.
-
-
-
-
- Nie mogę zaimportować istniejącego klucza PGP do Delta Chat.
-
-
-
-
-
Jest wielce prawdopodobne, że problemem jest klucz, który jest zaszyfrowany i/lub używa hasła. Takie klucze nie są obsługiwane przez Delta Chat. Możesz usunąć frazę szyfrującą i hasło i spróbować ponownie zaimportować klucz. Jeśli chcesz zachować hasło, musisz utworzyć alias e-mail do użytku z Delta Chat, tak aby klucz Delta Chat był powiązany z tym aliasem e-mail.
-
-
Rozsądny format, Delta Chat obsługuje popularne formaty kluczy prywatnych OpenPGP, jednak jest mało prawdopodobne, że będziemy obsługiwać 100% wszystkich kluczy prywatnych z dowolnych źródeł. To również nie jest głównym celem Delta Chat (w rzeczywistości, znaczna większość użytkowników Delta Chat nie będzie miała żadnego klucza przed rozpoczęciem korzystania z Delta). Jednak staramy się wspierać klucze prywatne z innych źródeł tak dobrze jak to tylko możliwe.
-
-
Usunięcie hasła z klucza prywatnego będzie się różnić w zależności od
-oprogramowania używanego do zarządzania kluczami PGP. Za pomocą programu Enigmail można ustawić
-hasło na pustą wartość w oknie zarządzania kluczami. Z GnuPG możesz ustawić je z linii poleceń.
-W przypadku innych programów można znaleźć rozwiązanie online.
-
-
-
-
- Multi-klient
-
-
-
-
-
-
-
- Czy mogę korzystać z Delta Chat na wielu urządzeniach w tym samym czasie?
-
-
-
-
-
Tak. Delta Chat 1.36 zawiera nową, eksperymentalną funkcję korzystania z tego samego konta na różnych urządzeniach:
-
-
-
-
Upewnij się, że oba urządzenia są połączone z tego samego Wi-Fi lub sieci
-
-
-
Na pierwszym urządzeniu przejdź do Ustawienia → Dodaj kolejne urządzenie, w razie potrzeby odblokuj ekran i poczekaj chwilę, aż pojawi się kod QR
Na drugim urządzeniu uruchom Delta Chat, wybierz Dodaj jako kolejne urządzenie i zeskanuj kod QR z pierwszego urządzenia
-
-
-
-
Przenoszenie powinno rozpocząć się po kilku sekundach, a podczas przenoszenia oba urządzenia będą pokazywać postęp. Poczekaj, aż zakończy się na obu urządzeniach.
-
-
W przeciwieństwie do wielu innych komunikatorów, po udanym przenoszeniu oba urządzenia są całkowicie niezależne. Jedno urządzenie nie jest potrzebne do działania drugiego.
-
-
-
-
- Rozwiązywanie problemów
-
-
-
-
-
-
-
Sprawdź dokładnie, czy oba urządzenia są w tym samym Wi-Fi lub tej samej sieci
-
-
-
Twój system może mieć „zaporę ogniową”, o której wiadomo, że powoduje problemy (szczególnie w systemie Windows).
-Wyłącz zaporę dla Delta Chat po obu stronach i spróbuj ponownie
-
-
-
Upewnij się, że na urządzeniu docelowym jest wystarczająca ilość miejsca
-
-
-
Jeśli przenoszenie się rozpoczęło, upewnij się, że urządzenia pozostają aktywne i nie zasypiają. Nie wychodź z Delta Chat. (dokładamy wszelkich starań, aby aplikacja działała w tle, ale systemy mają tendencję do ubijania aplikacji, niestety)
-
-
-
Delta Chat jest już zalogowany na urządzeniu docelowym? Możesz używać wielu kont na urządzeniu, po prostu dodaj kolejne konto
-
-
-
Jeśli nadal masz problemy lub nie możesz zeskanować kodu QR, wypróbuj ręczne przenoszenie opisane poniżej
-
-
-
-
-
-
- Manual Transfer
-
-
-
-
-
Ta metoda jest zalecana tylko wtedy, gdy opisana powyżej opcja „Dodaj kolejne urządzenie” nie działa.
-
-
-
On the old device, go to “Settings -> Chats and media -> Export Backup”. Enter your
-screen unlock PIN, pattern, or password. Then you can click on “Start
-Backup”. This saves the backup file to your device. Now you have to transfer
-it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
-keys, and media should be copied to the new device.
-
-
If you use iOS: and you encounter difficulties, maybe
-this guide will
-help you.
-
-
-
You are now synchronized, and can use both devices for sending and receiving
-end-to-end encrypted messages with your communication partners.
-
-
-
-
-
- Czy są jakieś plany wprowadzenia klienta Web Delta Chat?
-
-
-
-
-
-
Nie ma bezpośrednich planów, ale wstępne przemyślenia.
-
Istnieją 2-3 możliwości wprowadzenia klienta Web Delta Chat, 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.
-
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 get.delta.chat.
-
-
-
-
-
- Do czego służy ustawienie „Wyślij kopię do siebie”?
-
-
-
-
-
Wysłanie kopii wiadomości do siebie zapewnia otrzymywanie własnych wiadomości na wszystkich urządzeniach. Jeśli masz wiele urządzeń i jej nie włączysz, zobaczysz tylko wiadomości od innych osób oraz wiadomości, które wysyłasz z bieżącego urządzenia.
-
-
Kopia jest wysyłana do skrzynki odbiorczej, a następnie przenoszona do folderu DeltaChat; nie jest umieszczana w folderze „Wysłane”. Delta Chat nigdy nie przesyła niczego do folderu Wysłane, ponieważ oznaczałoby to dwukrotne przesłanie wiadomości (raz przez SMTP i raz przez IMAP do folderu Wysłane).
-
-
Domyślne ustawienie kopiowania do siebie to „nie”.
-
-
-
-
- Po co mam wybrać opcję oglądania folderu „Wysłane”?
-
-
-
-
-
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ą Delta Chat i chce, aby jego program pocztowy „uczestniczył” w rozmowach na czacie.
-
-
Jednak zalecamy używanie klienta Delta Chat Desktop; możesz go pobrać z get.delta.chat. 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 Delta Chat Desktop.
Niektórzy używają Delta Chat jako zwykłego klienta poczty e-mail i chcą używać folderu Skrzynka odbiorcza dla swojej poczty zamiast folderu DeltaChat. Jeśli wyłączysz opcję „Oglądaj folder DeltaChat”, powinieneś również wyłączyć opcję „Automatyczne przenoszenie do folderu DeltaChat”. W przeciwnym razie usuwanie wiadomości lub konfiguracja wielu urządzeń może nie działać poprawnie.
-
-
-
-
- webxdc apps
-
-
-
-
-
In Delta Chat, you can share webxdc apps, attachments with an .xdc file
-extension. They can do very different things, and make Delta Chat a truly
-extendable messenger.
-
-
-
-
- How private are webxdc apps?
-
-
-
-
-
-
webxdc apps can not send data to the Internet, or download anything.
-
A webxdc app can only exchange data within a Delta Chat chat, with its
-copies on the devices of your chat partners. Other than that, it’s completely
-isolated from the Internet.
-
The privacy a webxdc app offers is the privacy of your chat - as long as you
-trust the people you chat with, you can trust the webxdc app as well.
-
This also means: it can be a privacy risk to open webxdc apps in chats where
-you don’t trust the members - as you know it from e-mail attachments, where
-you only open attachments from senders you trust, and not from spammers.
-
-
-
-
-
- Where can I get webxdc apps?
-
-
-
-
-
-
In general, anyone can share webxdc apps with each
-other without restrictions.
-
You can send ‘hi’ to xstore@testrun.org
-to see an experimental webxdc appstore.
-All of the apps are open source and for free.
All else you need to know is written in the
-documentation.
-
If you have question, you can ask others with experience in the Delta Chat
-Forum.
-
-
-
-
-
- Funkcje eksperymentalne
-
-
-
-
-
We are very grateful for feedback on these features - do you want to share
-your ideas? Join the Forum to contribute.
-You may conveniently login via Delta Chat and a QR code scan,
-another rather stable experiment we run on the side (sic!).
-
-
-
-
- Jak mogę korzystać z połączeń audio/wideo z Delta Chat?
-
-
-
-
-
-
To turn on audio/video calls, go to the “experimental features” section in
-the advanced settings and choose a “Video Chat Instance”.
-
When you invite others to a video chat, it is opened in your browser/app at
-once. The others receive an e-mail with a link to the video chat.
-This way, it is also compatible if your chat partners don’t use Delta Chat.
-
Note that there is no ring tone on the other side, and your chat partners
-will not get interrupted by a video chat invite.
-
You can use any video chat service which allows joining by link. Just add the
-link in the settings.
-
For example, to use the flagship Jitsi Meet instance, you could enter
-https://meet.jit.si/$ROOM. The $ROOM variable will be a random value;
-this way, you will have a new random jitsi room every time you call someone.
-
-
-
-
-
- Co to są Listy rozgłoszeniowe i jak mogę ich używać?
-
-
-
-
-
-
Dzięki liście rozgłoszeniowej możesz wysłać wiadomość do wielu odbiorców jednocześnie; kiedy ci odpowiedzą, otrzymasz odpowiedź w bezpośrednim czacie 1: 1 z nimi. Odbiorcy nie widzą siebie nawzajem.
-
Technicznie, jest to e-mail z wieloma odbiorcami w „ukrytej kopii”.
-
Możesz włączyć tę funkcję w sekcji „Funkcje eksperymentalne” w ustawieniach zaawansowanych. Następnie możesz utworzyć listę rozgłoszeniową z okna dialogowego „Nowy czat”.
-
Jeśli używasz więcej niż jednego urządzenia, listy rozgłoszeniowe nie są obecnie synchronizowane między nimi.
-
Wiadomości wysyłane do list rozgłoszeniowych nie są szyfrowane. Szyfrowanie złamałoby anonimowość, ponieważ wtedy wszyscy odbiorcy wiedzieliby, kto jeszcze je otrzymał (wysyłanie indywidualnych wiadomości do wszystkich byłoby gorsze z powodu limitu prędkości i zużycia sieci).
-
-
-
-
-
- Jak mogę udostępnić swoją lokalizację moim rozmówcom?
-
-
-
-
-
-
Możesz włączyć przesyłanie strumieniowe lokalizacji w sekcji „Funkcje eksperymentalne” w ustawieniach zaawansowanych.
-
Teraz, jeśli chcesz udostępnić swoją lokalizację na czacie, przejdź do „załącz” i wybierz „Lokalizacja”. Możesz teraz ustawić przedział czasowy, w którym Twoja lokalizacja będzie przesyłana strumieniowo do rozmówców, od 5 minut do 6 godzin.
-
Gdy Twoja lokalizacja się zmienia, inni uczestnicy czatu mogą ją zobaczyć na mapie w czacie.
-
Aby zobaczyć mapę i wyświetlić lokalizacje innych osób, musisz włączyć tę funkcję w ustawieniach zaawansowanych.
-
Ta funkcja nie będzie udostępniać Twojej lokalizacji nikomu poza partnerami czatu. Ale: aby pokazać mapę, musimy pobrać część mapy z serwisu mapbox.com, więc jeśli wyświetlasz mapę, serwis mapbox.com jest proszony o mapę określonego obszaru. Jeśli jest to dla Ciebie zagrożeniem dla prywatności, ta funkcja może nie być dla Ciebie. Pracujemy nad znalezieniem zdecentralizowanej alternatywy dla Mapbox.
-
Na komputerze system operacyjny zwykle nie może określić Twojej lokalizacji. Zamiast tego możesz kliknąć prawym przyciskiem myszy na mapie i opisać lokalizację, która jest wysyłana do czatu jako wiadomość, ale także pojawia się na mapie.
-
-
-
-
-
- Co właściwie chroni eksperymentalne szyfrowanie bazy danych?
-
-
-
-
-
-
W tej chwili szyfrowanie bazy danych jest jeszcze bardzo eksperymentalne. Nie polegaj na nim w kwestii ochrony, powinieneś dodatkowo użyć szyfrowania systemu operacyjnego, jeśli takie zapewnia.
-
Szyfrowanie bazy danych nie szyfruje jeszcze obiektów blob, tylko wiersze i kolumny bazy danych. Oznacza to mniej więcej tyle, że Twoje wiadomości są bezpieczne, ale nie załączniki.
-
W systemach iOS i Android klucze szyfrujące są przechowywane w pęku kluczy systemowych. Oznacza to, że szyfrowanie jest tak bezpieczne, jak system operacyjny, na którym działa.
-
Klient Delta Chat na komputer nie oferuje jeszcze szyfrowania bazy danych, ponieważ nie ma standardowego sposobu przechowywania kluczy szyfrowania na różnych obsługiwanych platformach.
-
-
-
-
-
- Dlaczego mogę wybrać, aby widzieć tylko folder DeltaChat?
-
-
-
-
-
To jest ustawienie eksperymentalne dla niektórych osób, które eksperymentują z regułami po stronie serwera. Nie wszyscy dostawcy to obsługują, ale w przypadku niektórych możesz przenieść wszystkie wiadomości z nagłówkiem „Chat-Version” do folderu DeltaChat. Zwykle byłoby to zrobione przez aplikację Delta Chat.
-
-
Włączenie „Pobieraj tylko z folderu DeltaChat” ma sens, jeśli masz:
-
-
-
włączoną regułę po stronie serwera, aby przenosić wszystkie wiadomości z nagłówkiem Chat-Version do folderu DeltaChat i,
-
ustawioną opcję „Pokaż klasyczne e-maile” na „Nie, tylko czaty”.
-
-
-
W tym przypadku Delta Chat nie musi obserwować skrzynki odbiorczej, a wystarczy, że będzie obserwować tylko folder DeltaChat.
-
-
-
-
- Jak mogę zmienić moje konto na inny adres e-mail?
-
-
-
-
-
-
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
-You will get an information notice about the fact that you are moving to a new address.
-An additional notice will also show up in your “Device messages” chat.
-
-
-
If possible, let your old e-mail provider forward all messages to your new address.
-
-
-
Tell your contacts that you changed your address.
-Writing to guaranteed end-to-end encrypted chats and groups,
-will make them notice your move automatically
-and they will continue chatting with you using your new address.
-
-
-
-
Note that Delta Chat will not retrieve messages anymore from your old e-mail provider.
-If you didn’t configure your e-mail provider to forward messages (step 2.)
-only those contacts to whom you sent a message in a guaranteed end-to-end encrypted chat
-will send messages to your new address.
-
-
- Czy Delta Chat działa z moim dostawcą poczty e-mail?
-
-
-
-
-
-
Z dość dużym prawdopodobieństwem: Tak :)
-Jednak niektórzy dostawcy potrzebują specjalnych opcji, aby działać poprawnie, zobacz Przegląd dostawców
-
-
-
-
-
- Chcę zarządzać własnym serwerem e-mail dla Delta Chat. Co polecacie?
-
-
-
-
-
-
Większość serwerów pocztowych będzie działać dobrze. Ale to, co osobiście polecamy, to połączenie mailcow i mailadm, jak opisano w tym poście na blogu.
-
-
- Jeśli Delta Chat korzysta z poczty e-mail, czy naprawdę jest to komunikator internetowy?
-
-
-
-
-
-
Wysyłanie i odbieranie wiadomości zwykle zajmuje kilka sekund. Czasami zdarzają się przypadki, w których trwa to dłużej, ale prawdopodobnie jest to również prawdą w przypadku każdego innego komunikatora.
-
Natychmiastowe czatowanie działa szybko, jeśli obie strony aktywnie korzystają z aplikacji. Czasami działa wolniej, jeśli aplikacja działa w tle.
-
Odbieranie wiadomości może zająć kilka minut, ponieważ zarówno Android, jak i iOS często zatrzymują Delta Chat podczas działaniem w tle i budzą go tylko od czasu do czasu. To sztuczne opóźnienie jest zwykle gorsze na iOS niż na Androidzie.
-
Jednak „ubijanie” aplikacji działających w tle na Androidzie i iOS stanowi problem dla wielu legalnych aplikacji. Aby uzyskać więcej informacji, zobacz dontkillmyapp.com.
-
-
-
-
-
- Czy Delta Chat jest kompatybilny z Protonmail / Tutanota / Criptext?
-
-
-
-
-
-
Yes and No.
-
No, you can not use your Protonmail, Tutanota, or Criptext account with Delta
-Chat; they do not offer receiving mails via IMAP.
-
In any case you can use Delta Chat to send Messages to people who use
-Protonmail, Tutanota, or Criptext. Those messages will not be end-to-end
-encrypted, though. The end-to-end encryption those providers offer is not
-compatible with Autocrypt, the standard Delta Chat
-uses.
-
-
- Czy Delta Chat był niezależnie kontrolowany pod kątem luk w zabezpieczeniach?
-
-
-
-
-
Projekt Delta Chat przeszedł w ostatnich latach cztery niezależne audyty bezpieczeństwa:
-
-
-W 2019 r. firma Include Security przeanalizowała biblioteki PGP i RSA Delta Chat. Nie znaleziono żadnych krytycznych problemów, ale dwa poważne problemy, które później naprawiliśmy. Ujawniła również jeden problem o średniej wadze i kilka mniej poważnych, ale nie było możliwości wykorzystania tych luk w implementacji Delta Chat. Niektóre z nich jednak naprawiliśmy od czasu zakończenia kontroli. Pełny raport można przeczytać tutaj.
-
-
-
-
W 2020 r. firma Include Security przeanalizowała biblioteki Rust core, IMAP, SMTP i TLS Delta Chat. Nie znalazła żadnych problemów krytycznych ani poważnych. W raporcie zwrócono uwagę na kilka słabych punktów o średniej wadze – same w sobie nie stanowią zagrożenia dla użytkowników Delta Chat, ponieważ zależą od środowiska, w którym używany jest Delta Chat. Ze względu na użyteczność i kompatybilność nie możemy złagodzić wszystkich z nich i zdecydowaliśmy się przedstawić zalecenia dotyczące bezpieczeństwa zagrożonym użytkownikom. Pełny raport można przeczytać tutaj.
-
-
-
Początkiem 2023 r. firma Cure53 przeanalizowała zarówno szyfrowanie transportu połączeń sieciowych Delta Chat, jak i powtarzalną konfigurację serwera pocztowego zgodnie z zaleceniami na tej stronie. Możesz przeczytać więcej o audycie na naszym blogu lub przeczytać pełny raport tutaj.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
-
-
-
- W jaki sposób finansowany jest rozwój Delta Chat?
-
-
-
-
-
Delta Chat nie otrzymuje żadnego kapitału wysokiego ryzyka, nie jest zadłużony i nie jest pod presją generowania ogromnych zysków lub sprzedawania reklamodawcom użytkowników i ich przyjaciół oraz rodziny (lub gorzej).
-Raczej korzystamy z publicznych źródeł finansowania, jak dotąd pochodzących z UE i USA, aby wspomóc nasze wysiłki w inicjowaniu zdecentralizowanego i zróżnicowanego ekosystemu komunikatora, opartego na rozwoju społeczności Free i Open-Source.
-
-
Konkretnie, rozwój Delta Chat był dotychczas finansowany z tych źródeł:
-
-
-
-
The NEXTLEAP EU project funded the research
-and implementation of verified groups and setup contact protocols
-in 2017 and 2018 and also helped to integrate end-to-end Encryption
-through Autocrypt.
-
-
-
Open Technology Fund przyznał nam pierwszy grant w 2018/2019 (~200 000 $), dzięki któremu znacznie ulepszyliśmy aplikację na Androida i wydaliśmy pierwszą wersję beta aplikacji na komputery stacjonarne, a także ugruntował rozwój naszych funkcji w badaniach UX w kontekście praw człowieka, zobacz nasz końcowy raport Needfinding and UX.
-Druga dotacja w 2019/2020 (~300 000 4) pomogła nam wydać wersje Delta/iOS, przekonwertować naszą podstawową bibliotekę na Rust i zapewnić nowe funkcje dla wszystkich platform.
-
-
-
The NLnet foundation granted in 2019/2020 EUR 46K for
-completing Rust/Python bindings and instigating a Chat-bot eco-system.
-
-
-
W 2021 r. otrzymaliśmy kolejne dofinansowanie z UE na dwie propozycje dotyczące Internetu nowej generacji, a mianowicie na EPPD – katalog przenośności dostawcy poczty e-mail ( ~97 tys. EUR) i AEAP – przenoszenie adresu e-mail (~90 tys. EUR), co zaowocowało lepszą obsługą wielu kont, ulepszonymi kontaktami i ustawieniami grup za pomocą kodów QR oraz wieloma ulepszeniami sieciowymi na wszystkich platformach.
-
-
-
Od końca 2021 do marca 2023 otrzymaliśmy dofinansowanie Wolność Internetu (~500 tys. $) z amerykańskiego Biura Demokracji, Praw Człowieka i Pracy (DRL).
-Fundusze te wspierają nasze długofalowe cele, aby uczynić Delta Chat bardziej użytecznym i kompatybilnym z szeroką gamą serwerów e-mail na całym świecie, a także bardziej odpornym i bezpiecznym w miejscach często dotkniętych cenzurą i wyłączeniami Internetu.
-
-
-
Od 2023 roku zostaliśmy zaakceptowani w programie Next Generation Internet (NGI) Entrust dla naszych propozycji „Prywatnych zdecentralizowanych aplikacji”. Dokładna kwota do ustalenia (około 100 tys. EUR). Finansowanie to wspiera dalszy rozwój „aplikacji udostępnianych na czacie” webxdc.
-
-
-
Czasami otrzymujemy jednorazowe darowizny od osób prywatnych. Na przykład w 2021 roku pewna hojna osoba przekazała nam 4K EUR w formie przelewu bankowego tytułem “kontynuujcie dobry rozwój!”. 💜 Takie pieniądze przeznaczamy na finansowanie spotkań rozwojowych lub na doraźne wydatki, których nie da się łatwo przewidzieć lub zrefundować z publicznych dotacji. Otrzymywanie większej ilości darowizn pomaga nam również stać się bardziej niezależnymi i długoterminowo rentownymi jako społeczność współpracowników.
-
-
-
-
-
-
-
Wreszcie, ale zdecydowanie nie najmniej ważne, kilku ekspertów i entuzjastów pro-bono wniosło wkład i przyczyniło się do rozwoju Delta Chat bez otrzymywania pieniędzy lub tylko niewielkich kwot. Bez nich Delta Chat nie byłby tam, gdzie jest dzisiaj, nawet w pobliżu.
-
-
-
Wspomniane powyżej finansowanie pieniężne jest w większości organizowane przez merlinux GmbH we Freiburgu (Niemcy) i jest dystrybuowane do kilkunastu podmiotów na całym świecie.
-
-
Zapoznaj się z kanałami wpłat dla Delta Chat, aby uzyskać informacje o możliwościach wpłat zarówno pieniężnych, jak i innych.
-
-
-
-
-
\ No newline at end of file
diff --git a/assets/help/ru/help.html b/assets/help/ru/help.html
deleted file mode 100644
index 8b42b3ce4..000000000
--- a/assets/help/ru/help.html
+++ /dev/null
@@ -1,1736 +0,0 @@
-
-
Delta Chat — это новое приложение для обмена мгновенными сообщениями, которое отправляет сообщения через электронную почту, шифруя сообщение (если это возможно) с помощью Autocrypt.
-Вам не нужно нигде регистрироваться, просто используйте существующую учётную запись электронной почты в Delta Chat.
-
-
-
-
-
-
- Как мне найти людей для общения?
-
-
-
-
-
С помощью Delta Chat вы можете писать на любые существующие адреса
-электронной почты, даже если получатель не использует приложение Delta Chat.
-Получателю не нужно устанавливать то же приложение, что и у вас, в отличии от других мессенджеров.
-
-
-
-
- Каковы преимущества Delta Chat по сравнению с другими мессенджерами?
-
-
-
-
-
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
-
-
- Какие сообщения отображаются в Delta Chat?
-
-
-
-
-
By default, Delta Chat shows all e-mails.
-
-
At “Settings -> Chats &
-Media -> Show Classic E-Mails”, you can change this. You have these options:
-
-
-
“No, chats only”: Only messages sent by other Delta Chat users and replies to
-your Delta Chat messages are shown. This makes most sense if you use the same
-e-mail account for normal e-mails as well.
-
“All”: Delta Chat shows all e-mails that are sent to your email address. This
-makes sense if you want to use Delta Chat for all your e-mails, so no message
-gets lost. This is the default setting.
-
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
-you already have a chat, but new chats only pop up for Delta Chat messages.
-This helps to decide on a case-by-case basis whether you want to have a
-conversation in Delta Chat or in a “normal” e-mail app.
-
-
-
-
-
- Что если я ожидаю сообщение от кого-то кому я ранее не писал?
-
-
-
-
-
-
If a message comes from an unknown contact, it appears as a request. You
-need to accept the request before you can reply.
-
You can also “delete” it if you don’t want to chat with them for now. This
-does not delete the message on the server, only on your device. So you can
-still deal with the message in a different mail app.
-
If you delete a request, future messages from that contact will still appear
-as message request, so you can change your mind. If you really don’t want to
-receive messages from this person, consider blocking them.
-
-
-
-
-
- Поддерживает ли Delta Chat вложения фото, видео или другие?
-
-
-
-
-
-
-
Да. Помимо обычного текста, все вложения электронной почты отображаются в виде отдельных сообщений. В исходящие сообщения вложения встраиваются по мере необходимости автоматически.
-
-
-
For performance, images are optimized and sent at a smaller size by default, but you can send it as a “file” to preserve the original.
-
-
-
-
-
-
- Как я могу добавить или сменить аккаунт?
-
-
-
-
-
You can easily work with additional accounts on Delta Chat mobile and desktop clients by clicking either:
-
-
on the menu button and then ‘Switch Account’ (Android and desktop)
Вы можете добавить изображение профиля в настройках. Если вы пишете своим
- контактам или добавляете их с помощью QR-кода, они автоматически видят его как
- изображение вашего профиля.
-
-
-
Контакты, которые не используют Delta Chat не видят ваше изображение профиля
-(однако, конечно, они могут установить Delta Chat :)
-
-
-
Из соображений конфиденциальности никто не увидит ваше изображение
- в профиле, пока вы не напишете им сообщение.
-
-
-
Изображение вашего профиля отправляется не с каждым сообщением, но достаточно
-регулярно, чтобы ваши контакты снова его получили, даже если они добавят
- новое устройство.
-
-
-
-
-
-
- Поддерживает ли Delta Chat электронную почту в формате HTML?
-
-
-
-
-
Yes, incoming HTML messages come with a “Show full message” button.
-Outgoing messages always use plain text.
-
-
-
-
- Почему я должен вводить свой пароль от электронной почты в Delta Chat? Это безопасно?
-
-
-
-
-
Как и в случае других программ электронной почты, таких как Thunderbird,
- K9-Mail или Outlook, программе необходим пароль, чтобы использовать его
- для отправки почты. Конечно, пароль хранится только на вашем устройстве.
- Пароль передаётся только вашему провайдеру электронной почты (при входе
- в систему), который в любом случае имеет доступ к вашей почте.
-
-
Если вы используете провайдера электронной почты с поддержкой OAuth2,
- например, gmail.com или yandex.ru, нет необходимости хранить пароль на
- устройстве, так как в этом случае используется токен доступа.
-
-
Поскольку Delta Chat является программой открытым исходным кодом, вы
- можете изучить исходный код, если хотите убедиться, что ваши
- учётные данные обрабатываются безопасно. Мы будем рады вашим отзывам
- и предложениям, которые сделают приложение более безопасным для всех.
-
-
-
-
- Какие разрешения нужны Delta Chat?
-
-
-
-
-
В зависимости от используемой операционной системы
-вам может быть предложено предоставить разрешения для приложения.
-Вот что делает Delta Chat с этими разрешениями:
-
-
-
Камера (можно запретить)
-
-
делайте фотографии и видео: для отправки фотографий
-
-
-
Контакты (можно запретить)
-
-
чтение ваших контактов: чтобы найти контакты для общения
-
-
-
Местоположение (можно запретить)
-
-
доступ к приблизительному местоположению (источники сетевого местоположения): для функции потоковой передачи местоположения
-
доступ к точному местоположению (GPS и сетевые источники местоположения): для функции потоковой передачи местоположения
-
-
-
Микрофон (можно запретить)
-
-
запись аудио: для звуковых сообщений
-
-
-
Память (можно запретить)
-
-
изменение или удаление содержимого вашей SD-карты: для загрузки вложений сообщений
-
чтение содержимого вашей SD-карты: чтобы делиться файлами с вашими контактами
-
-
-
Другие возможности приложения
-
-
изменять настройки звука: таким образом, вы можете выбрать мелодию звонка и громкость для уведомлений и аудиосообщений
-
запуск при включении: вам не придется запускать Delta Chat вручную
-
контроль вибрации: для уведомлений
-
просмотр сетевых подключений: для подключения к провайдеру электронной почты
-
предотвращение спящего режима: так вы можете легче скопировать код безопасности во время Autocrypt Setup Message
-
иметь полный доступ к сети: для подключения к вашему провайдеру электронной почты
-
просмотр подключений Wi-Fi: для подключения к провайдеру электронной почты
-
игнорирование оптимизации батареи: для пользователей, которые хотят получать сообщения в любое время
-
-
-
-
-
-
-
- What means Pinning, Muting, Archiving?
-
-
-
-
-
Используйте эти инструменты чтобы организовать ваши чаты:
-
-
-
-
Закрепленные чаты всегда находятся наверху списка чатов. Вы можете использовать их чтобы быстро получать доступ к вашим любимым чатам или чтобы не забыть о важных вещах.
-
-
-
Mute chats if you do not want to get notifications for them. Muted chats stay in place and you can also pin a muted chat.
-
-
-
Archive chats if you do not want to see them in your chat list any longer.
-Archived chats remain accessible above the chat list or via search.
-
-
-
When an archived chat gets a new message, unless muted, it will pop out of the archive and back into your chat list.
-Muted chats stay archived until you unarchive them manually.
-
-
-
-
To archive or pin a chat, long tap (Android), use the chat’s menu (Android/Desktop) or swipe to the left (iOS);
-to mute a chat, use the chat’s menu (Android/Desktop) or the chat’s profile (iOS).
-
-
-
-
- Что означает зеленая точка?
-
-
-
-
-
-
Since Delta Chat 1.34 you can sometimes see a “green dot” next to the avatar
-of a contact. It means they were “recently seen”.
-
In detail: it means, that in the last 10 minutes, Delta Chat has seen them:
-
-
either because they messaged you directly,
-
because they wrote something to a group you are both a member of,
-
because they sent you a read receipt for a message you wrote,
-
or because they sent data to your Delta Chat app by using a
-webxdc app.
-
-
-
So this is not a real time online status - and if someone doesn’t answer
-right away even though they seem to be online, don’t worry and give them some
-space ;-)
-
On the other hand, others will not always “see that you are online”. If you
-have turned off read receipts, they will not see the green dot until you
-message them or write to a group they’re in as well.
-
-
-
-
-
- Как я могу удалить аккаунт?
-
-
-
-
-
As you use an e-mail account for Delta Chat,
-how you can delete your account depends on your e-mail provider.
-We don’t have any control over your e-mail account,
-so unfortunately we can’t help you with that.
-
-
If you want to keep the account,
-but uninstall Delta Chat,
-it is recommended to leave any group chat before uninstalling Delta Chat.
-
-
-
-
- Группы
-
-
-
-
-
-
-
- Создание группы
-
-
-
-
-
-
Выберите Новый чат, а затем Новая группа из меню в правом верхнем углу или нажмите соответствующую кнопку на Android/iOS.
-
На следующем экране выберите участников и придумайте название группы. Вы также можете выбрать изображение группы.
-
Как только вы напишете первое сообщение в группе, все участники будут проинформированы о новой группе и смогут ответить (до тех пор, пока вы не напишете сообщение в группе, группа будет невидима для участников).
-
-
-
-
-
- Добавление участников в группу
-
-
-
-
-
-
Каждый участник группы имеет те же права, что и любой другой. По этой причине каждый может удалить любого участника или добавить нового.
-
Чтобы добавить или удалить участников, нажмите на название группы в чате.
-
-
-
-
-
- Я случайно себя удалил.
-
-
-
-
-
-
Поскольку вы больше не являетесь членом группы, вы не можете добавлять себя снова.
-Тем не менее, проблемы нет, просто попросите любого другого члена группы в обычном чате повторно добавить вас.
-
-
-
-
-
- Я больше не хочу получать сообщения группы.
-
-
-
-
-
-
-
Либо удалите себя из списка участников, либо удалите весь чат.
-Если позже вы снова захотите присоединиться к группе, попросите другого члена группы добавить вас.
-
-
-
Или, в качестве альтернативы, вы также можете отключить уведомления для группы - это означает, что вы будете получать все сообщения и сможете их писать, но больше не будете получать уведомления о новых сообщениях.
-
-
-
-
-
-
- Что означают галочки рядом с исходящими сообщениями?
-
-
-
-
-
-
Одна галочка означает, что сообщение было успешно отправлено вашему провайдеру.
-
Две галочки означают, что хотя бы одно устройство получателя
-сообщило о получении сообщения.
-
Получатели могут отключить функцию чтения сообщений,
-поэтому даже если вы видите только одну галочку, сообщение может быть прочитано.
-
И наоборот, две галочки не означают,
- что человек прочитал или понял сообщение ;)
-
-
-
-
-
- What happens if I turn on “Delete old messages from server”?
-
-
-
-
-
-
-
By default, Delta Chat stores all messages locally on your device.
-If you e.g. want to save storage space at your mail provider,
-you can configure Delta Chat
-to delete old already-received messages on the server automatically.
-They still remain on your device until you delete them there, too.
-
-
-
To turn it on, go to Delete Old Messages → Delete Messages from Server
-in the “Chats and Media” settings.
-You can set a timeframe between “At once” and “After 1 year”.
-All e-mails received by Delta Chat will be deleted from the server after this timeframe.
-
-
-
Note that if you use Delta Chat on more than one device,
-you need to leave the message on the server with a sufficient timeframe
-so that the other device(s) can download them, too.
-
-
-
-
-
-
- What happens if I turn on “Delete old messages from device”?
-
-
-
-
-
-
If you want to save storage on your device, you can choose to delete old
-messages automatically.
-
To turn it on, go to “delete old messages from device” in the “Chats & Media”
-settings. You can set a timeframe between “after an hour” and “after a year”;
-this way, all messages will be deleted from your device as soon as they are
-older than that.
-
-
-
-
-
- Шифрование и безопасность
-
-
-
-
-
-
-
- Which standards are used for end-to-end encryption?
-
-
-
-
-
Autocrypt is used for automatically
-establishing end-to-end encryption with contacts and group chats.
-Autocrypt uses a limited and secure subset of the OpenPGP standard.
-End-to-End encrypted messages are marked with a padlock
-.
-
-
Secure-Join protocols
-are used for establishing chats with guaranteed end-to-end encryption
-which protects against network attacks and compromised servers.
-Chats marked with a green checkmark
-
-guarantee end-to-end encrypted messages.
-
-
-
-
- How can i know if messages are end-to-end encrypted?
-
-
-
-
-
All end-to-end encrypted messages carry a padlock:
-
-
-
-
End-to-end encryption is guaranteed if there is a green checkmark next to the chat title:
-
-
-
-
-
-
- How can I get guaranteed end-to-end encryption and green checkmarks?
-
-
-
-
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
-
-
Inviter side:
-
-
-
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
-
-
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
-
-
-
-
Joiner side:
-
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
If both devices are online,
-both sides will eventually see a (group or direct) chat with a green checkmark
-
-next to the title.
-
-
-
If one of the devices is offline, the green checkmarks will only
-appear later when the device is internet-connected again
-and the Secure-Join network protocol completed.
-
-
-
-
Congratulations!
-You now will automatically use guaranteed end-to-end encryption
-with this contact and both of you can add each other to green-checkmarked groups
-,
-thereby automatically spreading guaranteed end-to-end encryption among its members.
-
-
-
-
- What does the green checkmark and “guaranteed end-to-end encryption” mean?
-
-
-
-
-
Chat titles with green checkmarks
-
-mean that all messages in the chat will be end-to-end encrypted
-and can not be read or altered by compromised e-mail servers or Internet providers.
-Joining green-checkmarked group chats
-safely spreads everybody’s encryption information (and green checkmarks)
-in a manner that guarantees end-to-end encryption in the group and among members.
-
-
Contact profiles with green checkmarks
-
-mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
-Every green-checkmarked contact either did a direct QR-scan with you
-or was introduced by a another green-checkmarked contact.
-Introductions happen automatically when adding members to groups.
-Whoever adds a contact to a green-checkmarked group becomes an introducer
-to those members who didn’t yet know about the added contact.
-In a contact profile you can tap on the “Introduced by …” text repeatedly
-until you get to the one with whom you directly did a QR-scan.
-
-
Note that in a contact profile you may see and tap introducers
-but there is no green checkmark in the profile title.
-This usually means that the contact “sent a message from another device”.
-
-
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
-and specifically read about “Verified Groups”, the technical term
-of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
-
-
-
-
- A contact “sent a message from another device”, what can i do?
-
-
-
-
-
Your chat with a contact lost guaranteed end-to-end encryption.
-The green checkmark was removed for this chat and contact when you see this warning.
-If you find the sudden drop of guaranteed end-to-end encryption
-surprising for this contact then don’t accept the warning!
-Instead check with your contact through a second channel
-like a video call, other messenger or a phone call,
-to find out what happened.
-
-
If your contact actually caused the drop of guaranteed end-to-end encryption
-please see the next paragraphs for common reasons and their mitigations.
-Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
-even if the contact is a member there.
-
-
Your contact is using Delta Chat on a second device (phone or laptop)
-
-
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
-and add it as a second device as described here.
-As soon as they message you afterwards, the warning will be gone
-and guaranteed encryption is established with both devices of your contact.
-
-
Your contact reinstalled Delta Chat using their old account login
-
-
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
-As soon as they message you afterwards, the warning will be gone
-and guaranteed encryption is re-established for this contact.
-
-
If they don’t have a backup file, it’s best to perform a QR scan
-with your chat partner to re-establish guaranteed end-to-end encryption.
-
-
Your contact sent a mail through a webmail interface or another e-mail app
-and will get back to using Delta Chat soon again.
-
-
If you are sure that the contact sometimes uses webmail,
-or another mail app lacking end-to-end encryption,
-then you may accept the warning.
-As soon as your contact uses Delta Chat again,
-guaranteed end-to-end encryption will be automatically re-established.
-
-
Your contact stopped using Delta Chat entirely
-
-
Sometimes remaining in contact is more important than end-to-end encryption.
-“Transport Layer Encryption” (TLS) may still meaningfully protect
-the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
-to not read or manipulate your messages, and to not hand them to third parties.
-
-
In any case, you can not do much else than accept the warning.
-Please also remove the contact from any active green-checkmarked group
-which you can find in “Shared chats” in the Contact profile.
-This spares your contact from getting “unreadable” messages.
-
-
If the contact removed Delta Chat because of buggy or undesirable behaviour,
-please consider posting to our support forum
-to help us identify and address common problems. Thanks!
When we talk about an “end-to-end encrypted message”
-we always mean a whole message is encrypted,
-including all the attachments
-and attachment metadata such as filenames.
-
-
-
-
- Is OpenPGP secure?
-
-
-
-
-
Yes, Delta Chat uses a secure subset of OpenPGP
-and only displays a padlock security indicator on a message
-if the whole message is properly encrypted and signed.
-For example, “Detached signatures” are not treated as secure.
-
-
OpenPGP is not insecure by itself.
-Most publically discussed OpenPGP security problems
-actually stem from bad usability or bad implementations of tools or apps (or both).
-It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
-and GnuPG (GPG), a command line tool implementing OpenPGP.
-Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
-Delta Chat rather uses the OpenPGP Rust implementation rPGP,
-available as an independent “pgp” package,
-and security-audited in 2019.
-
-
We aim, along with other OpenPGP implementors,
-to further improve security characteristics by implementing the
-new IETF OpenPGP Crypto-Refresh
-which was thankfully adopted in summer 2023.
-
-
-
-
- Did you consider using alternatives to OpenPGP for end-to-end -encryption?
-
-
-
-
-
Yes, we are following efforts like MLS
-or Saltpack
-but adopting them would mean breaking end-to-end encryption interoperability
-with all other e-mail apps that typically support OpenPGP encryption.
-So it would not be a light decision to take
-and there must be tangible improvements for users.
-
-
Delta Chat takes a holistic “usable security” approach
-and works with a wide range of activist groupings as well as
-renowned researchers such as TeamUSEC
-to improve actual user outcomes against security threats.
-The wire protocol and standard for establishing end-to-end encryption is
-only one part of “user outcomes”,
-see also our answers to device-seizure
-and message-metadata questions.
-
-
-
-
- Is Delta Chat vulnerable to EFAIL?
-
-
-
-
-
No, Delta Chat never was vulnerable to EFAIL
-because its OpenPGP implementation rPGP
-uses Modification Detection Code when encrypting messages
-and returns an error
-if the Modification Detection Code is incorrect.
-
-
Delta Chat also never was vulnerable to the “Direct Exfiltration” EFAIL attack
-because it only decrypts multipart/encrypted messages
-which contain exactly one encrypted and signed part,
-as defined by the Autocrypt Level 1 specification.
-
-
-
-
- Is a message exposed in cleartext if end-to-end encryption is not available?
-
-
-
-
-
Even if your messages are not guaranteed to be end-to-end encrypted,
-they are still protected from Internet providers like cell or cable companies.
-However, your and your recipient’s e-mail providers
-may read, analyze or even modify your messages,
-including any attachments,
-if they are not end-to-end encrypted.
-
-
Delta Chat by default uses strict
-TLS encryption
-which secures connections between your device and your e-mail provider.
-All of Delta Chat’s TLS-handling has been independently security audited.
-Moreover, the connection between your and the recipient’s e-mail provider
-will typically be transport-encrypted as well.
-If the involved e-mail servers support MTA-STS
-then transport encryption will be enforced between e-mail providers
-in which case Delta Chat communications will never be exposed in cleartext to the Internet
-even if the message was not end-to-end encrypted.
-
-
Note that maintaining guaranteed end-to-end encryption on top of TLS encryption
-provides pervasive safety between your and the recipient’s devices.
-Not even your e-mail or Internet provider will be able to read or modify your messages.
-
-
-
-
- How does Delta Chat protect metadata in messages?
-
-
-
-
-
Delta Chat protects most message metadata by putting the following information
-into the end-to-end encrypted part of messages:
E-Mail servers do not get access to this protected metadata
-but they do see the message date as well as the message size,
-and, more importantly, the sender and receiver addresses.
-E-mail servers need receiver addresses to route and
-deliver messages to recipient’s devices.
-
-
-
-
- How to protect metadata and contacts when a device is seized?
-
-
-
-
-
Both for protecting against metadata-collecting e-mail servers
-as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
-can not be identified easily, as compared to messengers which reveal
-phone numbers in chat groups which in turn are often associated with legal identities.
-
-
-
-
- How can i check encryption information?
-
-
-
-
-
You may check the end-to-end encryption status manually in the “Encryption” dialog
-(user profile on Android/iOS or right-click a user’s chat-list item on desktop).
-Delta Chat shows two fingerprints there.
-If the same fingerprints appear on your own and your contact’s device,
-the connection is safe.
-
-
-
-
- How can I check the encryption status of messages?
-
-
-
-
-
A little padlock in a message bubble denotes
-that the message was properly end-to-end encrypted from the given sender.
-If there is no padlock, the message was not properly end-to-end encrypted
-most likely because the sender uses an app or webmail interface
-without support for end-to-end–encryption.
-
-
-
-
- Why do I see unencrypted messages?
-
-
-
-
-
If a contact uses a non-Autocrypt e-mail app,
-all messages involving this contact (in a group or 1:1 chat)
-will not be end-to-end encrypted, and thus not show a “padlock” with messages.
-Note that even if your contacts use Delta Chat on their account,
-they might also use a non-Autocrypt e-mail app on that account
-which then may cause intermittently unencrypted messages.
-Replying unencrypted to unencrypted messages is mandated by Autocrypt
-to prevent unreadable messages on the side of your contacts
-and their non-Autocrypt e-mail app.
-
-
-
-
- How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app?
-
-
-
-
-
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
-it’s best to setup guaranteed end-to-end encryption with them
-and then create a guaranteed end-to-end encrypted group chat with you two as members.
-In this group chat all messages will be end-to-end encrypted
-even if the direct chat between you two has a
-“… sent a message from another device” warning.
-
-
-
-
- How can I ensure message end-to-end encryption and deletion?
-
-
-
-
-
The best way to ensure every message is end-to-end encrypted,
-and metadata deleted as quickly as possible
-is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
-
-
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
-on the server after a user-configured time.
-
-
- Does Delta Chat support Perfect Forward Secrecy?
-
-
-
-
-
No, Delta Chat doesn’t support Perfect Forward Secrecy (PFS).
-This means that if your Delta Chat private decryption key is leaked,
-and someone has collected your prior in-transit messages,
-they will be able to decrypt and read them using the leaked decryption key.
-
-
Note, however, that if anyone obtains to your decryption keys,
-they will typically also be able to obtain your messages,
-irrespective if Perfect Forward Secrecy is in place or not.
-The typical real-world situation for leaked decryption keys is device seizure
-which we discuss in our answer on metadata and device seizure.
-
-
It is possible that Delta Chat evolves to support Perfect Forward Secrecy,
-because OpenPGP is just a container for encrypted messages
-but encryption key management (and thus key rotation or key “ratcheting”)
-could be organized in flexible ways.
-See Seqouia’s PFS prototype
-for existing experiments in the OpenPGP implementor community.
-
-
-
-
- Is end-to-end encryption of Delta Chat as safe as Signal?
-
-
-
-
-
It depends on what is important to you.
-Delta Chat does not support PFS like Signal does
-but it provides guaranteed end-to-end encrypted chats
-that are safe against compromised servers or corrupted networks.
-Signal and most other PFS-supporting messengers do not provide
-a practical scheme for protecting chat groups from network attacks
-which are arguably more worrysome
-than a potential attacker who seizes your phone and private encryption setup
-but somehow not your messages, yet has a full record of all
-past encrypted messages.
-
-
- Можно ли повторно использовать существующий секретный ключ?
-
-
-
-
-
Yes.
-The best way is to send an Autocrypt Setup Message from the other e-mail client.
-Look for something like Start Autocrypt Setup Transfer in the settings of the other client and follow the instructions shown there.
-
-
Alternatively, you can import the key manually in “Settings -> Advanced settings -> Import secret keys”.
-Caution: Make sure the key is not protected by a password, or remove the password beforehand.
-
-
If you don’t have a key or don’t even know you would need one - don’t worry: Delta Chat generates keys as needed, you don’t have to hit a button for it.
-
-
-
-
- Я не могу импортировать мой существующий ключ PGP в Delta Chat.
-
-
-
-
-
Вероятная причина заключается в том, что ваш ключ зашифрован и/или использует
-пароль. Такие ключи не поддерживаются Delta Chat. Вы можете удалить
-шифрование парольной фразы и пароль, а затем повторить попытку импорта. Если вы хотите
-сохранить свою парольную фразу, вам придется создать псевдоним электронной почты для использования
- Delta Chat, чтобы ключ Delta Chat был привязан к этому псевдониму электронной почты.
-
-
Delta Chat поддерживает расспространённые форматы закрытых ключей OpenPGP, однако
-маловероятно, что мы будем поддерживать все закрытые ключи из любых источников. Это
- не является главным фокусом Delta Chat. На самом деле, подавляющее большинство
-пользователей Delta Chat не будут иметь никакого ключа, прежде чем они начнут использовать его.
-Однако мы стараемся поддерживать закрытые ключи из как можно большего числа источников.
-
-
Удаление пароля закрытого ключа будет отличаться в зависимости от программного обеспечения, используемого для управления ключами PGP.
-В Enigmail вы можете установить пустой пароль в окне управления ключами.
-В GnuPG вы можете установить его через командную строку.
-Для других программ ищите решение в интернете.
-
-
-
-
- Мультиклиент
-
-
-
-
-
-
-
- Можно ли использовать Delta Chat на нескольких устройствах одновременно?
-
-
-
-
-
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
-
-
-
-
Make sure both devices are on the same Wi-Fi or network
-
-
-
On the first device, go to Settings → Add Second Device, unlock the screen if needed
-and wait a moment until a QR code is shown
On the second device, start Delta Chat, select Add as Second Device, and scan the QR code from the old device
-
-
-
Transfer should start after a few seconds and during transfer both devices will show the progress.
-Wait until it is finished on both devices.
-
-
-
-
In contrast to many other messengers, after successful transfer,
-both devices are completely independent.
-One device is not needed for the other to work.
-
-
-
-
- Troubleshooting
-
-
-
-
-
-
-
Double-check both devices are in the same Wi-Fi or network
-
-
-
Your system might have a “personal firewall”,
-which is known to cause problems (especially on Windows).
-Disable the personal firewall for Delta Chat on both ends and try again
-
-
-
Ensure there is enough storage on the destination device
-
-
-
If transfer started, make sure, the devices stay active and do not fall asleep.
-Do not exit Delta Chat.
-(we try hard to make the app work in background, but systems tend to kill apps, unfortunately)
-
-
-
Delta Chat is already logged in on the destination device?
-You can use multiple accounts per device, just add another account
-
-
-
If you still have problems or if you cannot scan a QR code
-try the manual transfer described below
-
-
-
-
-
-
- Manual Transfer
-
-
-
-
-
This method is only recommended if “Add Second Device” as described above does not work.
-
-
-
On the old device, go to “Settings -> Chats and media -> Export Backup”. Enter your
-screen unlock PIN, pattern, or password. Then you can click on “Start
-Backup”. This saves the backup file to your device. Now you have to transfer
-it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
-keys, and media should be copied to the new device.
-
-
If you use iOS: and you encounter difficulties, maybe
-this guide will
-help you.
-
-
-
You are now synchronized, and can use both devices for sending and receiving
-end-to-end encrypted messages with your communication partners.
-
-
-
-
-
- Есть ли какие-либо планы по внедрению веб-клиента Delta Chat?
-
-
-
-
-
-
Ближайших планов нет, но есть некоторые предварительные идеи.
-
Существуют 2-3 способа внедрения веб-клиента Delta Chat, но все
-они требуют значительных усилий. На данный момент мы сосредоточены на выпуске стабильных релизов во всех
-магазинах приложений (Google Play/iOS/Windows/macOS/Linux).
-
Если вам нужен веб-клиент, поскольку вы не можете устанавливать программное обеспечение на
-компьютере, на которым вы работаете, вы можете использовать портативный настольный клиент Windows
-или AppImage для Linux. Вы можете найти их на
-get.delta.chat.
-
-
-
-
-
- Для чего нужен параметр “Отправить копию себе”?
-
-
-
-
-
Отправка копии ваших сообщений себе гарантирует, что вы получите свои собственные
-сообщения на всех устройствах. Если у вас есть несколько устройств и вы не включили его, вы
-видите только сообщения от других людей и сообщения, которые вы отправляете с
-текущего устройства.
-
-
Копия отправляется в папку “Входящие”, а затем перемещается в папку DeltaChat; она не
-помещается в папку “Отправлено”. Delta Chat никогда ничего не загружает в папку Отправлено
-, потому что это означало бы загрузку сообщения дважды (один раз через SMTP
-и один раз через IMAP в папку Отправлено).
-
-
Значение для “Отправить копию себе” по умолчанию - нет.
-
-
-
-
- Для чего нужен параметр “следить за папкой Отправлено”?
-
-
-
-
-
Этот параметр, важен для тех, кто использует другую
-почтовую программу (например, Thunderbird) вместе с приложением Delta Chat.
-
-
Однако мы рекомендуем использовать настольный клиент Delta Chat; вы можете скачать его
-на get.delta.chat. Возможность “слежения за папкой Отправлено”
-может быть убрана в будущем. Эта функция была представлена в то время, когда не было
- настольного клиента Delta Chat доступного на всех платформах.
-
-
-
-
- Почему я могу отключить “следить за папкой Delta Chat”?
-
-
-
-
-
Некоторые люди используют Delta Chat в качестве обычного почтового клиента и хотят использовать папку “Входящие”
-для своей почты вместо папки DeltaChat. Если вы отключите функцию “следить за
-папкой DeltaChat”, вы также должны отключить “переместить сообщения чата в DeltaChat”.
-В противном случае удаление сообщений или настройки могут работать неправильно.
-
-
-
-
- webxdc apps
-
-
-
-
-
In Delta Chat, you can share webxdc apps, attachments with an .xdc file
-extension. They can do very different things, and make Delta Chat a truly
-extendable messenger.
-
-
-
-
- How private are webxdc apps?
-
-
-
-
-
-
webxdc apps can not send data to the Internet, or download anything.
-
A webxdc app can only exchange data within a Delta Chat chat, with its
-copies on the devices of your chat partners. Other than that, it’s completely
-isolated from the Internet.
-
The privacy a webxdc app offers is the privacy of your chat - as long as you
-trust the people you chat with, you can trust the webxdc app as well.
-
This also means: it can be a privacy risk to open webxdc apps in chats where
-you don’t trust the members - as you know it from e-mail attachments, where
-you only open attachments from senders you trust, and not from spammers.
-
-
-
-
-
- Where can I get webxdc apps?
-
-
-
-
-
-
In general, anyone can share webxdc apps with each
-other without restrictions.
-
You can send ‘hi’ to xstore@testrun.org
-to see an experimental webxdc appstore.
-All of the apps are open source and for free.
All else you need to know is written in the
-documentation.
-
If you have question, you can ask others with experience in the Delta Chat
-Forum.
-
-
-
-
-
- Experimental Features
-
-
-
-
-
We are very grateful for feedback on these features - do you want to share
-your ideas? Join the Forum to contribute.
-You may conveniently login via Delta Chat and a QR code scan,
-another rather stable experiment we run on the side (sic!).
-
-
-
-
- How can I use audio/video calls with Delta Chat?
-
-
-
-
-
-
To turn on audio/video calls, go to the “experimental features” section in
-the advanced settings and choose a “Video Chat Instance”.
-
When you invite others to a video chat, it is opened in your browser/app at
-once. The others receive an e-mail with a link to the video chat.
-This way, it is also compatible if your chat partners don’t use Delta Chat.
-
Note that there is no ring tone on the other side, and your chat partners
-will not get interrupted by a video chat invite.
-
You can use any video chat service which allows joining by link. Just add the
-link in the settings.
-
For example, to use the flagship Jitsi Meet instance, you could enter
-https://meet.jit.si/$ROOM. The $ROOM variable will be a random value;
-this way, you will have a new random jitsi room every time you call someone.
-
-
-
-
-
- What are Broadcast Lists and how can I use them?
-
-
-
-
-
-
With a Broadcast List you can send a message to many recipents at once; when
-they reply to you, you get the reply in your direct 1:1 chat with them. The
-recipients can’t see each other.
-
Technically, it is an E-Mail with many recipients in BCC.
-
You can turn on the feature in the “experimental features” section in the
-advanced settings. Then you can create a Broadcast List from the “New Chat”
-dialog.
-
In case you are using more than one device, Broadcast Lists are currently not
-synced between them.
-
Messages sent to broadcast lists are not encrypted. Encryption would break
-anonymity, because then all recipients would know who else received it
-(Sending individual mails to everyone would be worse for rate limit and network
-consumption reason).
-
-
-
-
-
- How can I share my location with my chat partners?
-
-
-
-
-
-
You can turn on location streaming in the “experimental features” section of
-the advanced settings.
-
Now, if you want to share your location in a chat, go to “attach” and select
-“location”. You can now set a time frame in which your location will be
-streamed to your chat partners, between 5 minutes and 6 hours.
-
When your location changes, the others in the chat can view it on a map in
-the chat.
-
To see the map and view locations of others, you need to turn on the feature
-in the advanced settings.
-
This feature will not share your location with anyone except your chat
-partners. But: to show the map, we need to download map tiles from
-mapbox.com, so if you view the map, mapbox.com is asked for the map of a
-specific area. If this is a privacy risk for you, this feature might not be
-for you. We are working on finding a decentralized alternative for Mapbox.
-
On desktop, the OS typically can’t determine your location. Instead you can
-right click on the map and describe a location, which is sent to the chat as
-a message, but also appears on the map.
-
-
-
-
-
- What does the experimental database encryption actually protect?
-
-
-
-
-
-
Right now, the database encryption is still very experimental. Don’t rely on
-it for protection, you should additionally use encryption of your operating
-system, if it provides any.
-
The database encryption does not yet encrypt the blobs, only the rows and
-columns of the database. This more or less means that your messages are safe,
-but not your attachments.
-
For iOS and Android, the encryption keys are stored in the system keychain.
-This means the encryption is as secure as the operating system it’s running
-on.
-
The Delta Chat desktop client doesn’t offer database encryption yet, as there
-is no standard way to store the encryption keys on the different supported
-platforms.
-
-
-
-
-
- Why can I choose to only watch the DeltaChat folder?
-
-
-
-
-
Это экспериментальная функция для некоторых людей, которые экспериментируют с
-правилами на стороне сервера. Не все провайдеры поддерживают это, но с некоторыми вы можете переместить
-все письма с заголовком “Chat-Version” в папку DeltaChat. Обычно это
-делается с помощью приложения Delta Chat.
-
-
Enabling “Only Fetch from DeltaChat folder” makes sense if you have both:
-
-
-
включено правило на стороне сервера для перемещения всех сообщений с заголовком “Chat-Version” в папку Delta Chat, и
-
установлен параметр “Показывать классические электронные письма” со значеним “Нет, только чаты”.
-
-
-
In this case, Delta Chat doesn’t need to watch the Inbox, and it’s enough to only watch the DeltaChat folder.
-
-
-
-
- How can I change my account to a different e-mail address?
-
-
-
-
-
-
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
-You will get an information notice about the fact that you are moving to a new address.
-An additional notice will also show up in your “Device messages” chat.
-
-
-
If possible, let your old e-mail provider forward all messages to your new address.
-
-
-
Tell your contacts that you changed your address.
-Writing to guaranteed end-to-end encrypted chats and groups,
-will make them notice your move automatically
-and they will continue chatting with you using your new address.
-
-
-
-
Note that Delta Chat will not retrieve messages anymore from your old e-mail provider.
-If you didn’t configure your e-mail provider to forward messages (step 2.)
-only those contacts to whom you sent a message in a guaranteed end-to-end encrypted chat
-will send messages to your new address.
-
-
- Поддерживает ли Delta Chat работу с моим провайдером электронной почты?
-
-
-
-
-
-
В большинстве случаев - да :)
-Тем не менее, для корректной работы некоторых почтовых служб (провайдеров)
-требуются специфические настройки;
-смотрите Обзор провайдеров
-
-
-
-
-
- I want to manage my own e-mail server for Delta Chat. What do you recommend?
-
-
-
-
-
-
Most mail servers will work well. But what we personally recommend is a
-combination of mailcow and mailadm, as described in this
-blogpost.
-
-
- Если Delta Chat использует электронную почту, действительно ли это сервис обмена мгновенными сообщениями (мессенджер)?
-
-
-
-
-
-
Отправка и получение сообщений обычно занимает несколько секунд. Иногда
-есть случаи, когда это занимает больше времени, но это, возможно, верно и для
-любого другого мессенджера.
-
Мгновенный чат работает быстро, если обе стороны активно используют приложение. Иногда это
-происходит медленнее, если приложение работает в фоновом режиме.
-
Получение сообщений тогда может занять несколько минут, потому что и Android, и iOS часто
-останавливают работу Delta Chat в фоновом режиме и только иногда пробуждают его
-. Эта искусственная задержка обычно хуже работает на iOS, чем на Android.
-
Однако Android и iOS убивают приложения, работающие в фоновом режиме, что является
-проблемой для многих законных приложений. Для получения дополнительной информации см.
-dontkillmyapp.com.
-
-
-
-
-
- Совместим ли Delta Chat с Protonmail / Tutanota / Criptext?
-
-
-
-
-
-
Yes and No.
-
No, you can not use your Protonmail, Tutanota, or Criptext account with Delta
-Chat; they do not offer receiving mails via IMAP.
-
In any case you can use Delta Chat to send Messages to people who use
-Protonmail, Tutanota, or Criptext. Those messages will not be end-to-end
-encrypted, though. The end-to-end encryption those providers offer is not
-compatible with Autocrypt, the standard Delta Chat
-uses.
-
-
- Was Delta Chat independently audited for security vulnerabilities?
-
-
-
-
-
The Delta Chat project underwent four independent security audits in the last years:
-
-
-
-
In 2019, Include Security analyzed Delta
-Chat’s PGP and
-RSA libraries.
-It found no critical issues,
-but two high-severity issues that we subsequently fixed.
-It also revealed one medium-severity and some less severe issues,
-but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
-Some of them we nevertheless fixed since the audit was concluded.
-You can read the full report here.
-
-
-
In 2020, Include Security analyzed Delta
-Chat’s Rust core,
-IMAP,
-SMTP, and
-TLS libraries.
-It did not find any critical or high-severity issues.
-The report raised a few medium-severity weaknesses -
-they are no threat to Delta Chat users on their own
-because they depend on the environment in which Delta Chat is used.
-For usability and compatibility reasons,
-we can not mitigate all of them
-and decided to provide security recommendations to threatened users.
-You can read the full report here.
-
-
-
Beginning 2023, Cure53 analyzed both the transport encryption of
-Delta Chat’s network connections and a reproducible mail server setup as
-recommended on this site.
-You can read more about the audit on our blog
-or read the full report here.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
-
-
-
- Как финансируются разработки Delta Chat?
-
-
-
-
-
Delta Chat не получает никакого венчурного капитала,
-не имеет долгов, и не ставит целью заработать огромную прибыль или
-продавать пользователей, их друзей и семью рекламодателям (или ещё кому-либо).
-Мы предпочитаем использовать государственные источники финансирования далёкие от Евросоюза и США, чтобы
-продолжить создавать децентрализованную экосистему обмена сообщениями,
-основанную на Свободном и Открытом исходном коде.
-
-
Конкретно до этого момента, разработки Delta Chat финансировались из этих источников:
-
-
-
-
The NEXTLEAP EU project funded the research
-and implementation of verified groups and setup contact protocols
-in 2017 and 2018 and also helped to integrate end-to-end Encryption
-through Autocrypt.
-
-
-
Фонд открытых технологий предоставил нам
-два гранта. Первый грант 2018/2019 года (~$200 тыс.) помог значительно улучшить Android приложение
-и выпустить бета-версию настольного клиента, кроме того
-закрепил наши разработки в области исследований UX в контексте прав человека,
-смотрите наш отчёт Needfinding and UX report.
-Второй грант 2019/2020 года (~$300 тыс.) помог нам
-выпустить Delta/iOS версии, преобразовать нашу основную библиотеку Rust, а также
-предоставить новые функции для всех платформ.
-
-
-
The NLnet foundation granted in 2019/2020 EUR 46K for
-completing Rust/Python bindings and instigating a Chat-bot eco-system.
-
-
-
В 2021 мы получили дополнительное финансирование из ЕС для двух Next-Generation-Internet
-целей, а именно для EPPD - e-mail provider portability directory (~97 тыс. евро) и AEAP - email address porting (~90 тыс. евро). Это привело к улучшению поддержки мультиклиентности, QR-кодов, настройки контактов и групп, и множеству улучшений в работе сети для всех платформ.
-
-
-
From End 2021 till March 2023 we received Internet Freedom funding (500K USD) from the
-U.S. Bureau of Democracy, Human Rights and Labor (DRL).
-This funding supported our long-running goals to make Delta Chat more usable
-and compatible with a wide range of e-mail servers world-wide, and more resilient and secure
-in places often affected by internet censorship and shutdowns.
-
-
-
Beginning 2023 we got accepted in the Next Generation Internet (NGI)
-Entrust program for our “Private Decentralized Apps” proposals.
-Exact amount is to be determined (around 100K EUR).
-This funding supports further developments of webxdc “apps shared in a chat”.
-
-
-
Sometimes we receive one-time donations from private individuals.
-For example, in 2021 a generous individual bank-wired us 4K EUR
-with the subject “keep up the good developments!”. 💜
-We use such money to fund development gatherings or to care for ad-hoc expenses
-that can not easily be predicted for, or reimbursed from, public funding grants.
-Receiving more donations also helps us to become more independent and long-term viable
-as a contributor community.
-
-
-
-
-
И последнее, но далеко не менее важное: несколько экспертов и энтузиастов на общественных началах внесли
- и вносят свой вклад в развитие Delta Chat, не получая денег, а только
-небольшие суммы. Без них Delta Chat не был бы там, где он есть сегодня,
-даже близко.
-
-
-
-
Упомянутые выше денежные сборы было организованы компанией merlinux GmbH в городе
-Фрайбург (Германия), и распределяются среди более чем дюжины участников по всему миру.
Delta Chat це новий додаток для спілкування, який надсилає повідомлення через електронну пошту, зашифровані, якщо можливо, за допомогою Autocrypt.
-Вам не потрібно будь-де реєструватися, просто використовуйте з Delta Chat вашу наявну електронну пошту
-
-
-
-
-
-
- Як мені знайти людей для спілкування?
-
-
-
-
-
З Delta Chat ви можете писати на будь-яку адресу електронної пошти, навіть якщо адресат не використовує Delta Chat. Отримувач не повинен інсталювати такий само додаток, що і у вас, як у інших месенджерів.
-
-
-
-
- Які переваги Delta Chat у порівнянні з іншими месенджерами?
-
-
-
-
-
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
-
-
- Які повідомлення відображаються у Delta Chat?
-
-
-
-
-
За замовчуванням Delta Chat відображає всі електронні листи.
-
-
У “Налаштування -> Чати та Медіа -> Показати класичні електронні листи”, ви можете змінити це. У вас є такі параметри:
-
-
-
«Ні, лише чати»: лише повідомлення, надіслані іншими користувачами Delta Chat, і відповіді на них відображаються ваші повідомлення Delta Chat. Це має найбільший сенс, якщо ви використовуєте той самий обліковий запис електронної пошти також для звичайної електронної пошти.
-
«Усі»: Delta Chat показує всі електронні листи, надіслані на вашу електронну адресу. Це має сенс, якщо ви хочете використовувати Delta Chat для всіх ваших електронних листів, тому жодних повідомлень не губиться. Це налаштування за замовчуванням.
-
«Для прийнятих контактів»: Delta Chat показує всі електронні листи від контактів, з ким у вас уже є чат, але нові чати з’являються лише для повідомлень Delta Chat. Це допоможе вирішити в кожному конкретному випадку, чи бажаєте ви мати a розмова в Delta Chat або в «звичайній» програмі електронної пошти.
-
-
-
-
-
- Що робити, якщо я очікую повідомлення від когось, кому раніше не писав?
-
-
-
-
-
-
Якщо повідомлення приходить від невідомого контакту, воно відображається як запит. ви потрібно прийняти запит, перш ніж ви зможете відповісти.
-
Ви також можете “видалити” його, якщо ви не хочете зараз спілкуватися з ними. Це не видаляє повідомлення на сервері, лише на вашому пристрої. Отже, ви можете як і раніше обробляти повідомлення в іншій поштовій програмі.
-
Якщо ви видалите запит, майбутні повідомлення від цього контакту все одно відображатимуться як запит на повідомлення, щоб ви могли змінити свою думку. Якщо дуже не хочеться отримувати повідомлення від цієї особи, подумайте про її блокування.
-
-
-
-
-
- Чи підтримує Delta Chat вкладення у вигляді фото, відео тощо?
-
-
-
-
-
-
-
Так. Крім звичайного тексту, всі вкладення електронної пошти відображаються у вигляді окремих повідомлень. Вихідні повідомлення автоматично отримують вкладення.
-
-
-
З міркувань продуктивності, зображення оптимізовані та надсилаються в меншому розмірі за замовчуванням, але ви можете надіслати їх як «файл», щоб зберегти оригінал.
-
-
-
-
-
-
- Як я можу додати або переключитися між кількома обліковими записами?
-
-
-
-
-
Ви можете легко працювати з додатковими обліковими записами в мобільних і десктопних клієнтах Delta Chat, натиснувши одне з:
-
-
на кнопці меню, а потім «Змінити обліковий запис» (Android і десктоп)
-
або значок профілю, а потім «Додати обліковий запис» (iOS)
Ви можете додати зображення профілю в ваших налаштуваннях. Якщо ви пишете комусь із ваших контактів чи додаєте їх через QR код, вони автоматично побачать ваше зображення профілю.
-
-
-
Контакти, які не використовують Delta Chat, не бачать зображення профілю (однак, звичайно, вони можуть встановити Delta Chat :)
-
-
-
Із міркувань приватності, ніхто не бачить ваше зображення профілю доки ви їм не напишете.
-
-
-
Ваше зображення профілю не надсилається із кожним повідомленням, але достатньо регулярно для того щоб ваші контакти заново отримували ваше зображення профілю, навіть якщо вони додали новий пристрій.
-
-
-
-
-
-
- Чи підтримує Delta Chat HTML-листи?
-
-
-
-
-
Yes, incoming HTML messages come with a “Show full message” button.
-Outgoing messages always use plain text.
-
-
-
-
- Чому я маю вводити пароль до моєї електронної пошти у Delta Chat? Чи це безпечно?
-
-
-
-
-
Як і інші клієнти електронної пошти, на зразок Thunderbird, K9-Mail, or Outlook, програма потребує пароль. Авжеж, пароль зберігається лише на вашому пристрої. Пароль передається лише до вашого провайдера електронної пошти, який все одно має доступ до ваших повідомлень.
-
-
Якщо ваш провайдер електронної пошти підтримує OAuth2, як gmail.com чи yandex.ru, то немає необхідності зберігати пароль на пристрої. В цьому випадку використовується лише токен доступу.
-
-
Оскільки Delta Chat має відкритий код, ви можете ознайомитись із початковим кодом якщо бажаєте перевірити що ваші дані для авторизації надійно зберігаються. Ми будемо раді вашим пропозиціям, які зроблять додаток більш безпечним для всіх користувачів.
-
-
-
-
- Яких дозволів потребує Delta Chat?
-
-
-
-
-
В залежності від операційної системи, додаток може потребувати наступних дозволів:
-
-
-
Камера (може бути заборонено)
-
-
знімати фото та відео: для надсилання фотографій
-
-
-
Контакти (може бути заборонено)
-
-
зчитувати ваші контакти: знаходити контакти для спілкування
-
-
-
Місцезнаходження (може бути заборонено)
-
-
доступ до приблизного місцезнаходження (мережеві джерела місцезнаходження): для функції стримінгу координат
-
доступ до точного місцезнаходження (GPS та мережеві джерела координат): для функції стримінгу координат
-
-
-
Мікрофон (може бути заборонено)
-
-
записувати звук: для звукових повідомлень
-
-
-
Сховище (може бути заборонено)
-
-
змінювати та видаляти вміст вашої SD-карти: для завантаження вкладень до повідомлень
-
зчитувати вміст вашої SD-карти: для надсилання файлів вашим контактам
-
-
-
Інші можливості додатку:
-
-
змінювати налаштування звуку: ви можете змінювати сигнали та гучність для сповіщень та звукових повідомлень
-
запуск на старті: вам не потрібно запускати Delta Chat вручну
-
вібрація: для сповіщень
-
перегляд мережевих з’єднань: для під’єднання до сервера електронної пошти
-
запобігання переходу телефону у сплячий режим: так вам буде легше скопіювати код безпеки при налаштування Autocrypt
-
повний доступ до мережі: для під’єднання до сервера електронної пошти
-
перегляд Wi-Fi з’єднань: для під’єднання до сервера електронної пошти
-
запитувати дозволу ігнорувати оптимізації батареї: для користувачів які хочуть бути на постійному зв’язку
Використовуйте ці інструменти, щоб організувати ваші чати і тримати все на своєму місці:
-
-
-
-
Закріплені чати завжди залишаються першими в списку чатів. Ви можете використовувати їх, щоб мати швидкий доступ до ваших найулюбленіших чат або тимчасово аби про щось не забути.
-
-
-
Приглушіть чати якщо ви не хочете отримувати сповіщення для них. Приглушені чати залишаються на місці і ви також можете закріпити приглушений чат.
-
-
-
Архівуйте чати, якщо ви більше не хочете бачити їх у своєму списку чатів.
-Заархівовані чати залишаються доступними над списком чатів або через пошук.
-
-
-
Коли архівний чат отримує нове повідомлення, якщо не приглушений, він вискочить з архіву і повернеться у ваш список чатів.
-Приглушені чати залишаються заархівованим доки ви не розархівуєте їх вручну.
-
-
-
-
Щоб заархівувати або закріпити чат, довго торкніться (Android), скористайтеся меню чату (Android/комп’ютер) або проведіть пальцем ліворуч (iOS); щоб вимкнути звук чату, скористайтеся меню чату (Android/комп’ютер) або профілем чату (iOS).
-
-
-
-
- Що означає зелена точка?
-
-
-
-
-
-
Починаючи з Delta Chat 1.34, ви іноді можете бачити “зелену крапку” поруч із аватаром контакту. Це означає, що контакт «нещодавно бачили».
-
Детально: це означає, що за останні 10 хвилин Delta Chat бачив їх:
-
або тому, що вони надіслали вам повідомлення безпосередньо,
-
тому що вони написали щось групі, учасником якої є ви обоє,
-
тому що вони надіслали вам сповіщення про прочитання повідомлення, яке ви написали,
-
або тому, що вони надіслали дані до вашої програми Delta Chat за допомогою a приватна програма.
-– Отже, це не онлайн-статус у реальному часі – і якщо хтось не відповідає відразу, навіть якщо вони, здаються, онлайн, не хвилюйтесь і дайте їм трохи простору ;-)
-– З іншого боку, інші не завжди «побачать, що ви онлайн». Якщо ви вимкнули сповіщення про прочитання, вони не побачать зелену крапку, доки ви не надішлете їм повідомлення або напишете у групу, до якої вони входять.
-
-
-
-
-
- Як мені видалити свій обліковий запис?
-
-
-
-
-
Оскільки ви використовуєте обліковий запис електронної пошти для Delta Chat, спосіб видалення облікового запису залежить від вашого постачальника послуг електронної пошти. Ми не маємо жодного контролю над вашим обліковим записом електронної пошти, тому, на жаль, ми не можемо вам у цьому допомогти.
-
-
Якщо ви хочете зберегти обліковий запис, але видалити Delta Chat, перед видаленням Delta Chat рекомендується покинути будь-які групові чати.
-
-
-
-
- Групи
-
-
-
-
-
-
-
- Створення групи
-
-
-
-
-
-
Оберіть Новий чат, потім Нова групи у меню в верхньому правому кутку або натисніть відповідну кнопку у Android/iOS.
-
На наступному екрані виберіть учасники групи та встановіть назву групи. Ви також можете обрати аватар групи.
-
Як тільки ви напишете перше повідомлення у групу, усі учасники будуть проінформовані про нову групу і зможуть відповісти у нову групу (доки ви не напишете повідомлення у групі, група залишатиметься невидимою для учасників).
-
-
-
-
-
- Додавання учасників групи
-
-
-
-
-
-
Кожен учасник групи має ті ж самі права, що і будь-який інший. З цієї причини кожен може видалити будь-якого учасника або додати нового.
-
Щоб додати або видалити учасників, натисніть на назву групи в чаті.
-
-
-
-
-
- Я випадково себе видалив
-
-
-
-
-
-
Оскільки ви більше не учасник групи, ви не зможете додати себе знову. Однак, це не проблема, просто попросіть будь-якого іншого учасника групи в звичайному чаті додати вас знову.
-
-
-
-
-
- Я більше не хочу отримувати повідомлення групи.
-
-
-
-
-
-
-
Або видаліть себе із списку учасників групи, або видаліть весь чат. Якщо ви хочете повернутись до чату пізніше, попросіть іншого учасника групи додати вас знову.
-
-
-
Ви також можете “Заглушити” групу - це означає, що ви будете отримувати усі повідомлення та можете писати у групу, але ви більше не будете отримувати сповіщення про нові повідомлення.
-
-
-
-
-
-
- Що означають галочки біля вихідних повідомлень?
-
-
-
-
-
-
Одна галочка означає, що повідомлення було успішно надіслано вашому провайдеру.
-
Дві галочки означають, що принаймні один пристрій одержувача повідомив про отримання повідомлення.
-
Одержувачі могли вимкнути звіти про прочитання, тож навіть якщо ви бачите лише одну галочку, можливо, повідомлення прочитане.
-
Навпаки, дві галочки не означають автоматично, що людина прочитала або зрозуміла повідомлення ;)
-
-
-
-
-
- Що станеться, якщо я ввімкну «Видаляти старі повідомлення з сервера»?
-
-
-
-
-
-
-
За умовчанням Delta Chat зберігає всі повідомлення локально на вашому пристрої. Якщо ви, наприклад, бажаєте заощадити місце для зберігання у свого провайдера електронної пошти, ви можете вибрати автоматичне видалення старих повідомлень. Вони все ще залишаються на вашому пристрої, поки ви видалите їх і там.
-
-
-
Щоб увімкнути його, перейдіть до Видалити старі повідомлення → Видалити повідомлення з сервера в налаштуваннях «Чати та медіа». Ви можете встановити часові рамки між «Одразу» та «Через 1 рік». Усі електронні листи, отримані Delta Chat, будуть видалені з сервера після закінчення цього терміну.
-
-
-
Зауважте, що якщо ви використовуєте Delta Chat на кількох пристроях, вам слід залишити повідомлення на сервері, доки інший пристрій не зможе завантажити їх. У цьому випадку вам слід встановити для автоматичного видалення значення «через день» або щось подібне, залежно від того, як часто ви вмикаєте інший пристрій.
-
-
-
-
-
-
- Що станеться, якщо я ввімкну «Видаляти старі повідомлення з пристрою»?
-
-
-
-
-
-
Якщо ви хочете заощадити пам’ять на своєму пристрої, ви можете видалити старе повідомлення автоматично.
-
Щоб увімкнути його, перейдіть до «видалити старі повідомлення з пристрою» в налаштуваннях «Чатів та медіа» . Ви можете встановити часові рамки від «через годину» до «через рік»;
-Таким чином, усі повідомлення будуть видалені з вашого пристрою, як тільки вони будуть старішими за це.
-
-
-
-
-
- Encryption and Security
-
-
-
-
-
-
-
- Які стандарти використовуються для наскрізного шифрування?
-
-
-
-
-
Autocrypt is used for automatically
-establishing end-to-end encryption with contacts and group chats.
-Autocrypt uses a limited and secure subset of the OpenPGP standard.
-End-to-End encrypted messages are marked with a padlock
-.
-
-
Secure-Join protocols
-are used for establishing chats with guaranteed end-to-end encryption
-which protects against network attacks and compromised servers.
-Chats marked with a green checkmark
-
-guarantee end-to-end encrypted messages.
-
-
-
-
- How can i know if messages are end-to-end encrypted?
-
-
-
-
-
All end-to-end encrypted messages carry a padlock:
-
-
-
-
End-to-end encryption is guaranteed if there is a green checkmark next to the chat title:
-
-
-
-
-
-
- How can I get guaranteed end-to-end encryption and green checkmarks?
-
-
-
-
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
-
-
Inviter side:
-
-
-
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
-
-
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
-
-
-
-
Joiner side:
-
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
If both devices are online,
-both sides will eventually see a (group or direct) chat with a green checkmark
-
-next to the title.
-
-
-
If one of the devices is offline, the green checkmarks will only
-appear later when the device is internet-connected again
-and the Secure-Join network protocol completed.
-
-
-
-
Congratulations!
-You now will automatically use guaranteed end-to-end encryption
-with this contact and both of you can add each other to green-checkmarked groups
-,
-thereby automatically spreading guaranteed end-to-end encryption among its members.
-
-
-
-
- What does the green checkmark and “guaranteed end-to-end encryption” mean?
-
-
-
-
-
Chat titles with green checkmarks
-
-mean that all messages in the chat will be end-to-end encrypted
-and can not be read or altered by compromised e-mail servers or Internet providers.
-Joining green-checkmarked group chats
-safely spreads everybody’s encryption information (and green checkmarks)
-in a manner that guarantees end-to-end encryption in the group and among members.
-
-
Contact profiles with green checkmarks
-
-mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
-Every green-checkmarked contact either did a direct QR-scan with you
-or was introduced by a another green-checkmarked contact.
-Introductions happen automatically when adding members to groups.
-Whoever adds a contact to a green-checkmarked group becomes an introducer
-to those members who didn’t yet know about the added contact.
-In a contact profile you can tap on the “Introduced by …” text repeatedly
-until you get to the one with whom you directly did a QR-scan.
-
-
Note that in a contact profile you may see and tap introducers
-but there is no green checkmark in the profile title.
-This usually means that the contact “sent a message from another device”.
-
-
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
-and specifically read about “Verified Groups”, the technical term
-of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
-
-
-
-
- A contact “sent a message from another device”, what can i do?
-
-
-
-
-
Your chat with a contact lost guaranteed end-to-end encryption.
-The green checkmark was removed for this chat and contact when you see this warning.
-If you find the sudden drop of guaranteed end-to-end encryption
-surprising for this contact then don’t accept the warning!
-Instead check with your contact through a second channel
-like a video call, other messenger or a phone call,
-to find out what happened.
-
-
If your contact actually caused the drop of guaranteed end-to-end encryption
-please see the next paragraphs for common reasons and their mitigations.
-Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
-even if the contact is a member there.
-
-
Your contact is using Delta Chat on a second device (phone or laptop)
-
-
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
-and add it as a second device as described here.
-As soon as they message you afterwards, the warning will be gone
-and guaranteed encryption is established with both devices of your contact.
-
-
Your contact reinstalled Delta Chat using their old account login
-
-
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
-As soon as they message you afterwards, the warning will be gone
-and guaranteed encryption is re-established for this contact.
-
-
If they don’t have a backup file, it’s best to perform a QR scan
-with your chat partner to re-establish guaranteed end-to-end encryption.
-
-
Your contact sent a mail through a webmail interface or another e-mail app
-and will get back to using Delta Chat soon again.
-
-
If you are sure that the contact sometimes uses webmail,
-or another mail app lacking end-to-end encryption,
-then you may accept the warning.
-As soon as your contact uses Delta Chat again,
-guaranteed end-to-end encryption will be automatically re-established.
-
-
Your contact stopped using Delta Chat entirely
-
-
Sometimes remaining in contact is more important than end-to-end encryption.
-“Transport Layer Encryption” (TLS) may still meaningfully protect
-the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
-to not read or manipulate your messages, and to not hand them to third parties.
-
-
In any case, you can not do much else than accept the warning.
-Please also remove the contact from any active green-checkmarked group
-which you can find in “Shared chats” in the Contact profile.
-This spares your contact from getting “unreadable” messages.
-
-
If the contact removed Delta Chat because of buggy or undesirable behaviour,
-please consider posting to our support forum
-to help us identify and address common problems. Thanks!
When we talk about an “end-to-end encrypted message”
-we always mean a whole message is encrypted,
-including all the attachments
-and attachment metadata such as filenames.
-
-
-
-
- Is OpenPGP secure?
-
-
-
-
-
Yes, Delta Chat uses a secure subset of OpenPGP
-and only displays a padlock security indicator on a message
-if the whole message is properly encrypted and signed.
-For example, “Detached signatures” are not treated as secure.
-
-
OpenPGP is not insecure by itself.
-Most publically discussed OpenPGP security problems
-actually stem from bad usability or bad implementations of tools or apps (or both).
-It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
-and GnuPG (GPG), a command line tool implementing OpenPGP.
-Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
-Delta Chat rather uses the OpenPGP Rust implementation rPGP,
-available as an independent “pgp” package,
-and security-audited in 2019.
-
-
We aim, along with other OpenPGP implementors,
-to further improve security characteristics by implementing the
-new IETF OpenPGP Crypto-Refresh
-which was thankfully adopted in summer 2023.
-
-
-
-
- Did you consider using alternatives to OpenPGP for end-to-end -encryption?
-
-
-
-
-
Yes, we are following efforts like MLS
-or Saltpack
-but adopting them would mean breaking end-to-end encryption interoperability
-with all other e-mail apps that typically support OpenPGP encryption.
-So it would not be a light decision to take
-and there must be tangible improvements for users.
-
-
Delta Chat takes a holistic “usable security” approach
-and works with a wide range of activist groupings as well as
-renowned researchers such as TeamUSEC
-to improve actual user outcomes against security threats.
-The wire protocol and standard for establishing end-to-end encryption is
-only one part of “user outcomes”,
-see also our answers to device-seizure
-and message-metadata questions.
-
-
-
-
- Is Delta Chat vulnerable to EFAIL?
-
-
-
-
-
No, Delta Chat never was vulnerable to EFAIL
-because its OpenPGP implementation rPGP
-uses Modification Detection Code when encrypting messages
-and returns an error
-if the Modification Detection Code is incorrect.
-
-
Delta Chat also never was vulnerable to the “Direct Exfiltration” EFAIL attack
-because it only decrypts multipart/encrypted messages
-which contain exactly one encrypted and signed part,
-as defined by the Autocrypt Level 1 specification.
-
-
-
-
- Is a message exposed in cleartext if end-to-end encryption is not available?
-
-
-
-
-
Even if your messages are not guaranteed to be end-to-end encrypted,
-they are still protected from Internet providers like cell or cable companies.
-However, your and your recipient’s e-mail providers
-may read, analyze or even modify your messages,
-including any attachments,
-if they are not end-to-end encrypted.
-
-
Delta Chat by default uses strict
-TLS encryption
-which secures connections between your device and your e-mail provider.
-All of Delta Chat’s TLS-handling has been independently security audited.
-Moreover, the connection between your and the recipient’s e-mail provider
-will typically be transport-encrypted as well.
-If the involved e-mail servers support MTA-STS
-then transport encryption will be enforced between e-mail providers
-in which case Delta Chat communications will never be exposed in cleartext to the Internet
-even if the message was not end-to-end encrypted.
-
-
Note that maintaining guaranteed end-to-end encryption on top of TLS encryption
-provides pervasive safety between your and the recipient’s devices.
-Not even your e-mail or Internet provider will be able to read or modify your messages.
-
-
-
-
- How does Delta Chat protect metadata in messages?
-
-
-
-
-
Delta Chat protects most message metadata by putting the following information
-into the end-to-end encrypted part of messages:
E-Mail servers do not get access to this protected metadata
-but they do see the message date as well as the message size,
-and, more importantly, the sender and receiver addresses.
-E-mail servers need receiver addresses to route and
-deliver messages to recipient’s devices.
-
-
-
-
- How to protect metadata and contacts when a device is seized?
-
-
-
-
-
Both for protecting against metadata-collecting e-mail servers
-as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
-can not be identified easily, as compared to messengers which reveal
-phone numbers in chat groups which in turn are often associated with legal identities.
-
-
-
-
- How can i check encryption information?
-
-
-
-
-
You may check the end-to-end encryption status manually in the “Encryption” dialog
-(user profile on Android/iOS or right-click a user’s chat-list item on desktop).
-Delta Chat shows two fingerprints there.
-If the same fingerprints appear on your own and your contact’s device,
-the connection is safe.
-
-
-
-
- How can I check the encryption status of messages?
-
-
-
-
-
A little padlock in a message bubble denotes
-that the message was properly end-to-end encrypted from the given sender.
-If there is no padlock, the message was not properly end-to-end encrypted
-most likely because the sender uses an app or webmail interface
-without support for end-to-end–encryption.
-
-
-
-
- Why do I see unencrypted messages?
-
-
-
-
-
If a contact uses a non-Autocrypt e-mail app,
-all messages involving this contact (in a group or 1:1 chat)
-will not be end-to-end encrypted, and thus not show a “padlock” with messages.
-Note that even if your contacts use Delta Chat on their account,
-they might also use a non-Autocrypt e-mail app on that account
-which then may cause intermittently unencrypted messages.
-Replying unencrypted to unencrypted messages is mandated by Autocrypt
-to prevent unreadable messages on the side of your contacts
-and their non-Autocrypt e-mail app.
-
-
-
-
- How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app?
-
-
-
-
-
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
-it’s best to setup guaranteed end-to-end encryption with them
-and then create a guaranteed end-to-end encrypted group chat with you two as members.
-In this group chat all messages will be end-to-end encrypted
-even if the direct chat between you two has a
-“… sent a message from another device” warning.
-
-
-
-
- How can I ensure message end-to-end encryption and deletion?
-
-
-
-
-
The best way to ensure every message is end-to-end encrypted,
-and metadata deleted as quickly as possible
-is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
-
-
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
-on the server after a user-configured time.
-
-
- Does Delta Chat support Perfect Forward Secrecy?
-
-
-
-
-
No, Delta Chat doesn’t support Perfect Forward Secrecy (PFS).
-This means that if your Delta Chat private decryption key is leaked,
-and someone has collected your prior in-transit messages,
-they will be able to decrypt and read them using the leaked decryption key.
-
-
Note, however, that if anyone obtains to your decryption keys,
-they will typically also be able to obtain your messages,
-irrespective if Perfect Forward Secrecy is in place or not.
-The typical real-world situation for leaked decryption keys is device seizure
-which we discuss in our answer on metadata and device seizure.
-
-
It is possible that Delta Chat evolves to support Perfect Forward Secrecy,
-because OpenPGP is just a container for encrypted messages
-but encryption key management (and thus key rotation or key “ratcheting”)
-could be organized in flexible ways.
-See Seqouia’s PFS prototype
-for existing experiments in the OpenPGP implementor community.
-
-
-
-
- Is end-to-end encryption of Delta Chat as safe as Signal?
-
-
-
-
-
It depends on what is important to you.
-Delta Chat does not support PFS like Signal does
-but it provides guaranteed end-to-end encrypted chats
-that are safe against compromised servers or corrupted networks.
-Signal and most other PFS-supporting messengers do not provide
-a practical scheme for protecting chat groups from network attacks
-which are arguably more worrysome
-than a potential attacker who seizes your phone and private encryption setup
-but somehow not your messages, yet has a full record of all
-past encrypted messages.
-
-
- Чи можна повторно використовувати існуючий закритий ключ?
-
-
-
-
-
Yes.
-The best way is to send an Autocrypt Setup Message from the other e-mail client.
-Look for something like Start Autocrypt Setup Transfer in the settings of the other client and follow the instructions shown there.
-
-
Alternatively, you can import the key manually in “Settings -> Advanced settings -> Import secret keys”.
-Caution: Make sure the key is not protected by a password, or remove the password beforehand.
-
-
If you don’t have a key or don’t even know you would need one - don’t worry: Delta Chat generates keys as needed, you don’t have to hit a button for it.
-
-
-
-
- Я не можу імпортувати свій існуючий PGP ключ у Delta Chat.
-
-
-
-
-
Найімовірнішою причиною є те, що ваш ключ зашифрований та/або використовується пароль. Такі ключі не підтримуються Delta Chat. Ви можете видалити шифрування парольної фрази та пароль і спробувати імпорт знову. Якщо ви хочете зберегти свою парольну фразу, вам доведеться створити псевдонім електронної пошти для використання з Delta Chat, щоб ключ Delta Chat був прив’язаний до цього псевдоніма електронної пошти.
-
-
Delta Chat підтримує поширені формати приватних ключів OpenPGP, однак навряд чи приватні ключі з усіх джерел будуть повністю підтримуватися. Це не головна мета Delta Chat. Фактично, більшість нових користувачів не матимуть жодного ключа до використання Delta Chat. Однак ми намагаємось підтримувати приватні ключі з якомога більшої кількості джерел.
-
-
Видалення пароля з приватного ключа буде залежати від програмного забезпечення, яке використовується для управління ключами PGP. За допомогою Enigmail ви можете встановити для порожній пароль у вікні Керування ключами. За допомогою GnuPG ви можете встановити його через командний рядок. Для інших програм ви зможете знайти рішення в інтернеті.
-
-
-
-
- Мульти-клієнт
-
-
-
-
-
-
-
- Чи можна використовувати Delta Chat на декількох пристроях одночасно?
-
-
-
-
-
Так. У Delta Chat 1.36 є нова експериментальна функція для використання одного облікового запису на різних пристроях:
-
-
-
-
Упевніться, що обидва пристрої підключені до одного Wi-Fi або мережі
-
-
-
На першому пристрої перейдіть до Налаштування → Додати другий пристрій, розблокуйте екран, якщо потрібно і трохи зачекайте, поки не з’явиться QR-код
На другому пристрої запустіть Delta Chat, виберіть Додати як другий пристрій і відскануйте QR-код зі старого пристрою
-
-
-
Передача має розпочатися через кілька секунд, і під час передачі обидва пристрої відображатимуть прогрес. Дочекайтеся завершення на обох пристроях.
-
-
-
-
На відміну від багатьох інших месенджерів, після успішної передачі, обидва пристрої повністю незалежні. Один пристрій не потрібен для роботи іншого.
-
-
-
-
- Вирішення проблем
-
-
-
-
-
-
-
Ще раз упевніться, що обидва пристрої підключені до одного Wi-Fi або мережі
-
-
-
Ваша система може мати “персональний брандмауер”, який, як відомо, викликає проблеми (особливо у Windows). Вимкніть персональний брандмауер для Delta Chat на обох кінцях і повторіть спробу
-
-
-
Переконайтеся, що на цільовому пристрої достатньо пам’яті
-
-
-
Якщо передача почалася, переконайтеся, що пристрої залишаються активними і не засинають. Не виходьте з Delta Chat. (ми докладаємо всіх зусиль, щоб програма працювала у фоновому режимі, але системи, як правило, вбивають програми, на жаль)
-
-
-
Delta Chat уже ввійшов на цільовому пристрої? Ви можете використовувати кілька облікових записів на одному пристрої, просто додайте інший обліковий запис
-
-
-
Якщо у вас усе ще виникають проблеми або якщо ви не можете відсканувати QR-код спробуйте перенесення вручну, описане нижче
-
-
-
-
-
-
- Manual Transfer
-
-
-
-
-
Цей спосіб рекомендований, лише якщо «Додати другий пристрій», як описано вище, не працює.
-
-
-
On the old device, go to “Settings -> Chats and media -> Export Backup”. Enter your
-screen unlock PIN, pattern, or password. Then you can click on “Start
-Backup”. This saves the backup file to your device. Now you have to transfer
-it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
-keys, and media should be copied to the new device.
-
-
If you use iOS: and you encounter difficulties, maybe
-this guide will
-help you.
-
-
-
You are now synchronized, and can use both devices for sending and receiving
-end-to-end encrypted messages with your communication partners.
-
-
-
-
-
- Чи планується впровадження веб-клієнта Delta Chat?
-
-
-
-
-
-
Немає найближчих планів, крім попередніх думок.
-
Є 2-3 способи створити веб-клієнт Delta Chat, але всі вони вимагають значної роботи. На даний момент ми зосереджені на отриманні стабільних релізів в усіх магазини додатків (Google Play / IOS / Windows / MacOS / репозитаріїв Linux), як нативних додатків.
-
Якщо вам потрібен веб-клієнт, через заборону встановлювати програмне забезпечення на комп’ютері, з яким ви працюєте, ви можете використовувати портативний клієнт Windows Desktop або AppImage для Linux. Ви можете знайти їх на get.delta.chat.
-
-
-
-
-
- Для чого потрібне налаштування “Відправити копію собі”?
-
-
-
-
-
Надсилаючи собі копію своїх повідомлень, ви отримуєте власні повідомлення на всіх пристроях. Якщо у вас кілька пристроїв, і ви не вмикаєте це налаштування, ви бачите лише повідомлення інших людей та повідомлення, які ви надсилаєте з поточного пристрою.
-
-
Копія надсилається у папку Вхідні, а потім переміщується до папки DeltaChat; вона не поміщається в папку «Відправлені». Delta Chat ніколи не завантажує нічого в папку Надіслане, оскільки це означало б завантаження повідомлень двічі (один раз через SMTP і один раз через IMAP до папки Надіслані).
-
-
За замовчуванням параметр копії для себе - “ні”.
-
-
-
-
- Чому я можу обрати стеження за папкою “Надіслані”?
-
-
-
-
-
Єдина причина, через яку захочеться стежити за папкою Надіслане, полягає в тому, що якщо ви використовуєте іншу поштову програму (наприклад, Thunderbird) разом із вашим додатком Delta Chat і хочете, щоб ваш поштовий клієнт брав участь у розмовах.
-
-
Однак ми рекомендуємо використовувати клієнт Delta Chat Desktop; Ви можете завантажити його на get.delta.chat. Можливість стеження папки “Надіслане” може зникнути в майбутньому. Вона був представлена у той час, коли на всіх платформах ще не було клієнта Delta Chat Desktop.
-
-
-
-
- Чому я можу відмовитись від стеження за папкою DeltaChat?
-
-
-
-
-
Деякі люди використовують Delta Chat як звичайний поштовий клієнт і хочуть використовувати папку Вхідні для своєї пошти замість папки DeltaChat. Якщо ви вимкнете “Перегляд папки DeltaChat”, вам слід також вимкнути “переміщення повідомлень чату до DeltaChat”.
-В іншому випадку видалення повідомлень або налаштування декількох пристроїв може не працювати належним чином.
-
-
-
-
- webxdc apps
-
-
-
-
-
In Delta Chat, you can share webxdc apps, attachments with an .xdc file
-extension. They can do very different things, and make Delta Chat a truly
-extendable messenger.
-
-
-
-
- How private are webxdc apps?
-
-
-
-
-
-
webxdc apps can not send data to the Internet, or download anything.
-
A webxdc app can only exchange data within a Delta Chat chat, with its
-copies on the devices of your chat partners. Other than that, it’s completely
-isolated from the Internet.
-
The privacy a webxdc app offers is the privacy of your chat - as long as you
-trust the people you chat with, you can trust the webxdc app as well.
-
This also means: it can be a privacy risk to open webxdc apps in chats where
-you don’t trust the members - as you know it from e-mail attachments, where
-you only open attachments from senders you trust, and not from spammers.
-
-
-
-
-
- Where can I get webxdc apps?
-
-
-
-
-
-
In general, anyone can share webxdc apps with each
-other without restrictions.
-
You can send ‘hi’ to xstore@testrun.org
-to see an experimental webxdc appstore.
-All of the apps are open source and for free.
All else you need to know is written in the
-documentation.
-
If you have question, you can ask others with experience in the Delta Chat
-Forum.
-
-
-
-
-
- Експериментальні функції
-
-
-
-
-
We are very grateful for feedback on these features - do you want to share
-your ideas? Join the Forum to contribute.
-You may conveniently login via Delta Chat and a QR code scan,
-another rather stable experiment we run on the side (sic!).
-
-
-
-
- Як я можу робити аудіо/відеодзвінки з Delta Chat?
-
-
-
-
-
-
To turn on audio/video calls, go to the “experimental features” section in
-the advanced settings and choose a “Video Chat Instance”.
-
When you invite others to a video chat, it is opened in your browser/app at
-once. The others receive an e-mail with a link to the video chat.
-This way, it is also compatible if your chat partners don’t use Delta Chat.
-
Note that there is no ring tone on the other side, and your chat partners
-will not get interrupted by a video chat invite.
-
You can use any video chat service which allows joining by link. Just add the
-link in the settings.
-
For example, to use the flagship Jitsi Meet instance, you could enter
-https://meet.jit.si/$ROOM. The $ROOM variable will be a random value;
-this way, you will have a new random jitsi room every time you call someone.
-
-
-
-
-
- Що таке списки широкомовлення та як ними користуватися?
-
-
-
-
-
-
За допомогою списку розсилки ви можете надіслати повідомлення багатьом одержувачам одночасно; коли вони відповідають вам, ви отримуєте відповідь у своєму прямому чаті 1:1 з ними. Одержувачі не бачать один одного.
-
Технічно це електронний лист із багатьма одержувачами в BCC.
-
Ви можете ввімкнути функцію в розділі «експериментальні функції» в розширених налаштуваннях. Потім ви можете створити список трансляцій у діалоговому вікні «Новий чат».
-
Якщо ви використовуєте більше ніж один пристрій, списки трансляцій наразі не синхронізуються між ними.
-
Повідомлення, надіслані до списків розсилки, не шифруються. Шифрування порушило б анонімність, оскільки тоді всі одержувачі знали б, хто ще його отримав (надсилання окремих листів усім було б гіршим через обмеження швидкості та споживання мережі).
-
-
-
-
-
- Як я можу поділитися своїм місцезнаходженням зі своїми співрозмовниками в чаті?
-
-
-
-
-
-
Ви можете ввімкнути потокове передавання місцезнаходження в розділі «експериментальні функції» в розширених налаштуваннях.
-
Тепер, якщо ви хочете поділитися своїм місцезнаходженням у чаті, перейдіть до «прикріпити» та виберіть “Місцезнаходження”. Тепер ви можете встановити часові рамки, протягом яких ваше місцезнаходження транслюється вашим партнерам у чаті від 5 хвилин до 6 годин.
-
Коли ваше місцезнаходження змінюється, інші учасники чату можуть побачити його на карті в чат.
-
Щоб бачити карту та місцезнаходження інших, потрібно ввімкнути цю функцію у розширених налаштуваннях.
-
Ця функція не надасть доступу до вашого місцезнаходження нікому, крім ваших співрозмовників в чаті. Але: щоб показати карту, нам потрібно завантажити фрагменти карти з mapbox.com, тому, якщо ви переглядаєте карту, mapbox.com запитує карту конкретної області. Якщо це загроза конфіденційності для вас, ця функція може бути не для вас. Ми працюємо над пошуком децентралізованої альтернативи для Mapbox.
-
На комп’ютері ОС зазвичай не може визначити ваше місцезнаходження. Натомість ви можете клацнути правою кнопкою миші на карті та надсилати до чату як повідомлення, яке також з’являється на карті.
-
-
-
-
-
- Що насправді захищає експериментальне шифрування бази даних?
-
-
-
-
-
-
На даний момент шифрування бази даних все ще є експериментальним. Не покладайтеся на нього для захисту, ви повинні додатково використовувати шифрування вашої операційної системи, якщо воно передбачає таке.
-
Шифрування бази даних ще не шифрує блоби, лише рядки та стовпці бази даних. Це більш-менш означає, що ваші повідомлення в безпеці, але не вкладені файли.
-
Для iOS і Android ключі шифрування зберігаються в системному брелоку. Це означає, що шифрування настільки ж безпечно, як і операційна система, на якій воно працює.
-
Настільний клієнт Delta Chat поки що не пропонує шифрування бази даних, оскільки немає стандартного способу зберігання ключів шифрування на різних підтримуваних платформах.
-
-
-
-
-
- Чому я можу вибрати лише стеження за папкою DeltaChat?
-
-
-
-
-
Це експериментальне налаштування для деяких людей, які експериментують з правилами на стороні сервера. Не всі провайдери підтримують це, але деякі дозволятимуть перемістити всі листи із заголовком “Chat-Version” до папки DeltaChat. Зазвичай це робиться додатком Delta Chat.
-
-
Увімкнення «Отримувати лише з папки DeltaChat» має сенс, якщо у вас є обидва:
-
-
-
увімкнене правило на стороні сервера для переміщення всіх повідомлень із заголовком Chat-Version до папки DeltaChat та
-
встановлено параметр “Показувати класичні електронні листи” у значення “ні, лише чати”.
-
-
-
У цьому випадку Delta Chat не потрібно стежити за папкою «Вхідні», а достатньо лише стежити за папкою DeltaChat.
-
-
-
-
- Як я можу змінити мій обліковий запис на іншу адресу електронної пошти?
-
-
-
-
-
-
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
-You will get an information notice about the fact that you are moving to a new address.
-An additional notice will also show up in your “Device messages” chat.
-
-
-
If possible, let your old e-mail provider forward all messages to your new address.
-
-
-
Tell your contacts that you changed your address.
-Writing to guaranteed end-to-end encrypted chats and groups,
-will make them notice your move automatically
-and they will continue chatting with you using your new address.
-
-
-
-
Note that Delta Chat will not retrieve messages anymore from your old e-mail provider.
-If you didn’t configure your e-mail provider to forward messages (step 2.)
-only those contacts to whom you sent a message in a guaranteed end-to-end encrypted chat
-will send messages to your new address.
-
-
- Якщо Delta Chat використовує електронну пошту, чи насправді він є Instant месенджером?
-
-
-
-
-
-
Надсилання та отримання повідомлень зазвичай триває кілька секунд. Іноді трапляються випадки, коли це займає більше часу, але це, безперечно, справедливо і для будь-якого іншого месенджера.
-
Миттєвий чат працює швидко, якщо обидві сторони активно використовують додаток. Іноді це повільніше, якщо програма працює у фоновому режимі.
-
Отримання повідомлень тоді може зайняти хвилини, оскільки як Android, так і iOS часто припиняють роботу Delta Chat у фоновому режимі і лише час від часу прокидають його. Ця штучна затримка зазвичай гірша на iOS, ніж на Android.
-
Однак програми для Android та iOS вбивають програми, що працюють у фоновому режимі, є проблемою для багатьох законних програм. Для отримання додаткової інформації див. dontkillmyapp.com.
-
-
-
-
-
- Чи сумісний Delta Chat із Protonmail / Tutanota / Criptext?
-
-
-
-
-
-
Yes and No.
-
No, you can not use your Protonmail, Tutanota, or Criptext account with Delta
-Chat; they do not offer receiving mails via IMAP.
-
In any case you can use Delta Chat to send Messages to people who use
-Protonmail, Tutanota, or Criptext. Those messages will not be end-to-end
-encrypted, though. The end-to-end encryption those providers offer is not
-compatible with Autocrypt, the standard Delta Chat
-uses.
-
-
- Чи проходив Delta Chat незалежний аудит на наявність вразливостей у безпеці?
-
-
-
-
-
За останні роки проект Delta Chat пройшов чотири незалежні аудити безпеки:
-
-
-
-
У 2019 році Include Security проаналізувала бібліотеки PGP і RSA із Delta Chat. Він не виявив критичних проблем, лише дві серйозні проблеми, які ми згодом виправили. Він також виявив одну проблему середньої тяжкості та кілька менш серйозних, але не було можливості використати ці вразливості в реалізації Delta Chat. Деякі з них ми все ж усунули після завершення аудиту. Ви можете прочитати повний звіт тут.
-
-
-
У 2020 році Include Security проаналізувала Rust-ядро Delta Chat і бібліотеки IMAP, SMTP та TLS. Він не виявив критичних або серйозних проблем. У звіті виявлено кілька слабких місць середнього ступеня тяжкості – вони самі по собі не становлять загрози для користувачів Delta Chat оскільки вони залежать від середовища, у якому використовується Delta Chat. З міркувань зручності використання та сумісності ми не можемо пом’якшити їх усі тому вирішили надати рекомендації щодо безпеки користувачам, яким загрожує небезпека. Ви можете прочитати повний звіт тут.
-
-
-
Починаючи з 2023 року Cure53 проаналізував транспортне шифрування мережевих з’єднань Delta Chat і відтворюване налаштування поштового сервера як рекомендовано на цьому сайті. Ви можете прочитати більше про аудит у нашому блозі або прочитайте повний звіт тут.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
-
-
-
- Як фінансується розробка Delta Chat?
-
-
-
-
-
Delta Chat не отримує жодного Венчурного Капіталу і не є в боргу, не знаходиться під тиском отримання значних прибутків, або продажу користувачів і їхніх друзів з родиною рекламодавцям (або гірше). Ми скоріше використовуємо джерела державного фінансування поки що від ЄС та США, щоб допомогти нашим зусиллям у створенні децентралізованої та різноманітної екосистеми обміну повідомленнями на основі вільного та відкритого коду спільноти розробників
-
-
Конкретно, розробки Delta Chat поки що фінансуються з цих джерел:
-
-
-
-
The NEXTLEAP EU project funded the research
-and implementation of verified groups and setup contact protocols
-in 2017 and 2018 and also helped to integrate end-to-end Encryption
-through Autocrypt.
-
-
-
Open Technology Fund надав нам два гранти.
-Перший грант 2018/2019 року (~$200K), допоміг значно покращили додаток для Android
-і випустили першу бета-версію додатка для ПК, і який до того ж
-закріпив наші розробки функцій у дослідженнях UX у контексті прав людини,
-дивіться наш підсумковий звіт Needfinding and UX report.
-Другий грант 2019/2020 року (~$300K) допоміг нам
-випустити Delta/iOS версію, конвертувати нашу основному бібліотеку на Rust,
-і додати нові функції для всіх платформ.
-
-
-
The NLnet foundation granted in 2019/2020 EUR 46K for
-completing Rust/Python bindings and instigating a Chat-bot eco-system.
-
-
-
-
– У 2021 році ми отримали подальше фінансування ЄС для двох Інтернет-технологій наступного покоління пропозиції, а саме для EPPD - каталог перенесення електронної пошти (~97 тис. євро) та AEAP - перенесення електронної адреси (~90 тис. євро), що призвело до кращої підтримки кількох облікових записів, покращеного QR-коду контактів і налаштувань груп, а також багатьох покращень роботи мережі на всіх платформах.
-
-
-
-
З кінця 2021 до березня 2023 року ми отримували фінансування Internet Freedom (500 тис. дол. США) від Бюро США з питань демократії, прав людини та праці (DRL). Це фінансування підтримало наші довгострокові цілі зробити Delta Chat більш зручним для використання і сумісним з широким спектром серверів електронної пошти по всьому світу, більш стійким і безпечним в місцях, які постраждали від інтернет-цензури та відключення інтернету.
-
-
-
На початку 2023 року нас прийняли в Next Generation Internet (NGI)
-Entrust program для наших пропозицій щодо «Приватних децентралізованих додатків». Точна сума буде визначена (близько 100 тис. євро). Це фінансування підтримує подальший розвиток webxdc “додатків, якими діляться в чаті”.
-
-
-
-
– Іноді ми отримуємо одноразові пожертви від приватних осіб. Наприклад, у 2021 році щедра приватна особа перерахував нам 4 тис. євро з повідомленням «так тримати!». 💜 Ми використовуємо такі пожертви для фінансування зборів на розвиток або для тимчасових витрат, які важко передбачити або відшкодувати за рахунок грантів державного фінансування. Отримання більшої кількості пожертв також допомагає нам стати більш незалежними та довгостроково життєздатними як спільнота контриб’юторів.
-
-
-
-
-
Кілька експертів та ентузіастів, які працюють на громадських засадах, сприяли розробці програми Delta Chat, не отримуючи грошей або лише невеликі суми. Без них Delta Chat не був би там, де є сьогодні, навіть близько.
-
-
-
Зазначене вище грошове фінансування в основному організовано компанією merlinux GmbH у Фрайбурзі (Німеччина) і розподілено між більше ніж дюжиною розробників по всьому світу.
-
-
-
-
-
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 1443e7853..e36806ec3 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,5 +1,6 @@
plugins {
- id 'com.android.application' version '7.4.2'
+ id 'com.android.application' version '8.1.4'
+// id 'com.google.gms.google-services' version '4.4.1'
}
repositories {
@@ -13,87 +14,23 @@ repositories {
jcenter()
}
-dependencies {
- implementation 'androidx.sharetarget:sharetarget:1.2.0'
- implementation 'androidx.webkit:webkit:1.5.0'
- implementation 'androidx.multidex:multidex:2.0.1'
- implementation 'androidx.appcompat:appcompat:1.5.1'
- implementation 'com.google.android.material:material:1.7.0'
- implementation 'androidx.legacy:legacy-support-v13:1.0.0'
- implementation ('androidx.preference:preference:1.2.0') {
- exclude group: 'androidx.lifecycle', module:'lifecycle-viewmodel'
- exclude group: 'androidx.lifecycle', module:'lifecycle-viewmodel-ktx'
- }
- implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
- implementation 'androidx.exifinterface:exifinterface:1.3.5'
- implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
- implementation 'androidx.lifecycle:lifecycle-common-java8:2.5.1'
- implementation 'androidx.lifecycle:lifecycle-viewmodel:2.5.1'
- implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
- implementation 'androidx.work:work-runtime:2.7.1'
- implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6' // plays video and audio
- implementation 'com.google.android.exoplayer:exoplayer-ui:2.9.6'
- implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
- implementation 'com.journeyapps:zxing-android-embedded:3.4.0' // QR Code scanner
- implementation 'com.fasterxml.jackson.core:jackson-databind:2.11.1' // used as JSON library
- implementation 'com.google.code.gson:gson:2.9.1' // used as JSON library. Don't upgrade to 2.10.1: https://github.com/deltachat/deltachat-android/pull/2610
- implementation "me.leolin:ShortcutBadger:1.1.16" // display messagecount on the home screen icon.
- implementation 'com.github.chrisbanes:PhotoView:2.1.3' // does the zooming on photos / media
- implementation 'com.caverock:androidsvg-aar:1.4' // SVG support.
- implementation 'com.github.bumptech.glide:glide:4.12.0'
- annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
- annotationProcessor 'androidx.annotation:annotation:1.5.0'
- implementation 'com.makeramen:roundedimageview:2.1.0' // crops the avatars to circles
- implementation 'com.pnikosis:materialish-progress:1.5' // used only in the "Progress Wheel" in Share Activity.
- implementation 'com.soundcloud.android:android-crop:1.0.1@aar' // used for profile and group avatar selection in Android SDK<19
- implementation 'mobi.upod:time-duration-picker:1.1.3' // Used to pick the time for inactivity.
- implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' // number of unread messages,
- // the one-letter circle for the contacts (when there is not avatar) and a white background.
- implementation 'com.googlecode.mp4parser:isoparser:1.0.6' // MP4 recoding; upgrading eg. to 1.1.22 breaks recoding, however, i have not investigated further, just reset to 1.0.6
- implementation ('com.davemorrissey.labs:subsampling-scale-image-view:3.6.0') { // for the zooming on photos / media
- exclude group: 'com.android.support', module: 'support-annotations'
- }
- implementation 'com.annimon:stream:1.1.8' // brings future java streams api to SDK Version < 24
- implementation 'com.codewaves.stickyheadergrid:stickyheadergrid:0.9.4' // glues the current time segment text in the gallery to the top.
-
- testImplementation 'junit:junit:4.13.1'
- testImplementation 'org.assertj:assertj-core:1.7.1'
- testImplementation 'org.mockito:mockito-core:1.9.5'
- testImplementation 'org.powermock:powermock-api-mockito:1.6.1'
- testImplementation 'org.powermock:powermock-module-junit4:1.6.1'
- testImplementation 'org.powermock:powermock-module-junit4-rule:1.6.1'
- testImplementation 'org.powermock:powermock-classloading-xstream:1.6.1'
-
- androidTestImplementation 'androidx.test:runner:1.4.0'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
- androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0'
- androidTestImplementation 'androidx.test:rules:1.4.0'
- androidTestImplementation 'androidx.test.ext:junit:1.1.3'
- androidTestImplementation 'com.android.support:support-annotations:28.0.0'
-
- androidTestImplementation ('org.assertj:assertj-core:1.7.1') {
- exclude group: 'org.hamcrest', module: 'hamcrest-core'
- }
-}
-
-
android {
namespace "org.thoughtcrime.securesms"
flavorDimensions "none"
- compileSdkVersion 33
+ compileSdk 34
// Set NDK version to strip native libraries.
// Even though we compile our libraries outside Gradle with `scripts/ndk-make.sh`,
// without ndkVersion `./gradlew clean` followed by `./gradlew assembleDebug --warning-mode=all` emits the following warning:
// > Task :stripFatDebugDebugSymbols
- // Unable to strip the following libraries, packaging them as they are: libanimation-decoder-gif.so, libmapbox-gl.so, libnative-utils.so.
+ // Unable to strip the following libraries, packaging them as they are: libanimation-decoder-gif.so, libnative-utils.so.
// See for details.
ndkVersion "23.2.8568313"
useLibrary 'org.apache.http.legacy'
defaultConfig {
- versionCode 672
- versionName "1.42.1"
+ versionCode 688
+ versionName "1.46.5"
applicationId "com.b44t.messenger"
multiDexEnabled true
@@ -107,7 +44,6 @@ android {
project.ext.set("archivesBaseName", "deltachat");
buildConfigField "boolean", "DEV_BUILD", "false"
- buildConfigField "String", "MAP_ACCESS_TOKEN", '"pk.eyJ1IjoiZGVsdGFjaGF0IiwiYSI6ImNqc3c1aWczMzBjejY0M28wZmU0a3cwMzMifQ.ZPTH9dFJaav06RAu4rTYHw"'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -120,18 +56,16 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
-
packagingOptions {
- exclude 'LICENSE.txt'
- exclude 'LICENSE'
- exclude 'NOTICE'
- exclude 'asm-license.txt'
- exclude 'META-INF/LICENSE'
- exclude 'META-INF/NOTICE'
- doNotStrip '*/mips/*.so'
- doNotStrip '*/mips64/*.so'
+ jniLibs {
+ keepDebugSymbols += ['*/mips/*.so', '*/mips64/*.so']
+ }
+ resources {
+ excludes += ['LICENSE.txt', 'LICENSE', 'NOTICE', 'asm-license.txt', 'META-INF/LICENSE', 'META-INF/NOTICE']
+ }
}
+
signingConfigs {
debug {
// add `DC_DEBUG_STORE_FILE=/path/to/debug.keystore` to `~/.gradle/gradle.properties`
@@ -173,9 +107,15 @@ android {
}
productFlavors {
+ foss {
+ dimension "none"
+ buildConfigField "boolean", "USE_PLAY_SERVICES", "false"
+ }
gplay {
dimension "none"
applicationId "chat.delta"
+ //apply plugin: "com.google.gms.google-services"
+ buildConfigField "boolean", "USE_PLAY_SERVICES", "true"
}
}
@@ -205,25 +145,98 @@ android {
sourceSets {
main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['src']
- resources.srcDirs = ['src']
- aidl.srcDirs = ['src']
- renderscript.srcDirs = ['src']
- res.srcDirs = ['res']
- assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
- androidTest {
- java.srcDirs = ['androidTest']
- }
}
lint {
abortOnError false
}
+ buildFeatures {
+ renderScript true
+ aidl true
+ }
}
+dependencies {
+ implementation 'androidx.sharetarget:sharetarget:1.2.0'
+ implementation 'androidx.webkit:webkit:1.8.0'
+ implementation 'androidx.multidex:multidex:2.0.1'
+ implementation 'androidx.appcompat:appcompat:1.6.1'
+ implementation 'com.google.android.material:material:1.10.0'
+ implementation 'androidx.legacy:legacy-support-v13:1.0.0'
+ implementation ('androidx.preference:preference:1.2.1') {
+ exclude group: 'androidx.lifecycle', module:'lifecycle-viewmodel'
+ exclude group: 'androidx.lifecycle', module:'lifecycle-viewmodel-ktx'
+ }
+ implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
+ implementation 'androidx.exifinterface:exifinterface:1.3.6'
+ implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
+ implementation 'androidx.lifecycle:lifecycle-common-java8:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel:2.6.2'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
+ implementation 'androidx.work:work-runtime:2.8.1'
+ implementation 'androidx.emoji2:emoji2-emojipicker:1.4.0'
+ implementation 'com.google.guava:guava:29.0-android'
+ implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6' // plays video and audio
+ implementation 'com.google.android.exoplayer:exoplayer-ui:2.9.6'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ implementation 'com.journeyapps:zxing-android-embedded:3.4.0' // QR Code scanner
+ implementation 'com.fasterxml.jackson.core:jackson-databind:2.11.1' // used as JSON library
+ implementation 'com.google.code.gson:gson:2.9.1' // used as JSON library. Don't upgrade to 2.10.1: https://github.com/deltachat/deltachat-android/pull/2610
+ implementation "me.leolin:ShortcutBadger:1.1.16" // display messagecount on the home screen icon.
+ implementation 'com.jpardogo.materialtabstrip:library:1.0.9' // used in the emoji selector for the tab selection.
+ implementation 'com.github.chrisbanes:PhotoView:2.1.3' // does the zooming on photos / media
+ implementation 'com.github.penfeizhou.android.animation:glide-plugin:2.25.0' // APNG & animated webp support.
+ implementation 'com.caverock:androidsvg-aar:1.4' // SVG support.
+ implementation 'com.github.bumptech.glide:glide:4.12.0'
+ annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
+ annotationProcessor 'androidx.annotation:annotation:1.7.0'
+ implementation 'com.makeramen:roundedimageview:2.1.0' // crops the avatars to circles
+ implementation 'com.pnikosis:materialish-progress:1.5' // used only in the "Progress Wheel" in Share Activity.
+ implementation 'com.soundcloud.android:android-crop:1.0.1@aar' // used for profile and group avatar selection in Android SDK<19
+ //implementation 'com.nineoldandroids:library:2.4.0' // DEPRECATED! Used to slide in the half-camera.
+ implementation 'mobi.upod:time-duration-picker:1.1.3' // Used to pick the time for inactivity.
+ implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' // number of unread messages,
+ // the one-letter circle for the contacts (when there is not avatar) and a white background.
+ implementation 'com.googlecode.mp4parser:isoparser:1.0.6' // MP4 recoding; upgrading eg. to 1.1.22 breaks recoding, however, i have not investigated further, just reset to 1.0.6
+ implementation ('com.davemorrissey.labs:subsampling-scale-image-view:3.6.0') { // for the zooming on photos / media
+ exclude group: 'com.android.support', module: 'support-annotations'
+ }
+ implementation 'com.annimon:stream:1.1.8' // brings future java streams api to SDK Version < 24
+ implementation 'com.codewaves.stickyheadergrid:stickyheadergrid:0.9.4' // glues the current time segment text in the gallery to the top.
+
+ // Replacement for ContentResolver
+ // that protects against the Surreptitious Sharing attack.
+ //
+ implementation 'de.cketti.safecontentresolver:safe-content-resolver-v14:1.0.0'
+
+// gplayImplementation('com.google.firebase:firebase-messaging:23.4.1') { // for PUSH notifications
+// exclude group: 'com.google.firebase', module: 'firebase-core'
+// exclude group: 'com.google.firebase', module: 'firebase-analytics'
+// exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
+// }
+
+ testImplementation 'junit:junit:4.13.1'
+ testImplementation 'org.assertj:assertj-core:1.7.1'
+ testImplementation 'org.mockito:mockito-core:1.9.5'
+ testImplementation 'org.powermock:powermock-api-mockito:1.6.1'
+ testImplementation 'org.powermock:powermock-module-junit4:1.6.1'
+ testImplementation 'org.powermock:powermock-module-junit4-rule:1.6.1'
+ testImplementation 'org.powermock:powermock-classloading-xstream:1.6.1'
+
+ androidTestImplementation 'androidx.test:runner:1.4.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0'
+ androidTestImplementation 'androidx.test:rules:1.4.0'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'com.android.support:support-annotations:28.0.0'
+
+ androidTestImplementation ('org.assertj:assertj-core:1.7.1') {
+ exclude group: 'org.hamcrest', module: 'hamcrest-core'
+ }
+}
+
String buildConfigProperty(String name) {
return "\"${propertyOrEmpty(name)}\""
}
diff --git a/docs/f-droid.md b/docs/f-droid.md
index 8aea4fb07..332b7086c 100644
--- a/docs/f-droid.md
+++ b/docs/f-droid.md
@@ -2,22 +2,22 @@
-
is the Delta Chat page on F-Droid.org,
- the F-Droid-app will show similar information.
+ the F-Droid app will show similar information.
--
+-
contains the description, icon, screenshots and all meta data shown for Delta Chat on F-Droid
in the [fastlane format](https://f-droid.org/en/docs/All_About_Descriptions_Graphics_and_Screenshots/#fastlane-structure).
-- and
-
- contain [additional F-Droid-specific metadata](https://f-droid.org/en/docs/All_About_Descriptions_Graphics_and_Screenshots/#in-the-f-droid-repo)
+-
+ contains [additional F-Droid-specific metadata](https://f-droid.org/en/docs/All_About_Descriptions_Graphics_and_Screenshots/#in-the-f-droid-repo)
and build instructions that do not fit the fastlane format.
F-Droid adds new versions automatically to the end of `.yml` file.
-- new versions are recognized by tags in the form `v1.2.3` -
- before adding tags like that, have a look at `docs/release-checklist.md`
- the build and distribution is expected to take
- [up to 5 days](https://gitlab.com/fdroid/wiki/-/wikis/FAQ#how-long-does-it-take-for-my-app-to-show-up-on-website-and-client).
+- New versions are recognized by tags in the form `v1.2.3` -
+ before adding tags like that, have a look at
+ .
+ The build and distribution is expected to take
+ [up to 7 days](https://gitlab.com/fdroid/wiki/-/wikis/FAQ#how-long-does-it-take-for-my-app-to-show-up-on-website-and-client).
# F-Droid Build status
@@ -25,7 +25,7 @@
-
shows F-Droid's overall build status,
if Delta Chat shows up at "Need updating" or "Running",
- things are working as expected :)
+ things are working as expected. :)
-
(with VERSIONCODE = 537 or so) links to successfully built apk
@@ -41,22 +41,22 @@ $ git clone https://gitlab.com/fdroid/fdroiddata
$ git clone https://gitlab.com/fdroid/fdroidserver
$ cd fdroiddata
-now, metadata/com.b44t.messenger.yml can be modified.
-for testing, one can change the repo to a branch
+Now, metadata/com.b44t.messenger.yml can be modified.
+For testing, one can change the repo to a branch
by adding the line `Update Check Mode:RepoManifest/BRANCH` to the file.
-set some path to ndk etc:
+Set some path to ndk etc:
$ cp ../fdroidserver/examples/config.py . # adapt file as needed
-checkout repo as f-droid would do:
+Checkout repo as F-Droid would do:
$ ../fdroidserver/fdroid checkupdates -v com.b44t.messenger
(for testing with uncommitted changes, add --allow-dirty)
-build repo as f-droid would do:
+Build repo as F-Droid would do:
$ ../froidserver/fdroid build -v com.b44t.messenger:
-(via https://f-droid.org/docs/Installing_the_Server_and_Repo_Tools/
-and https://f-droid.org/docs/Building_Applications/ -
+(via
+and -
might require `pip install pyasn1 pyasn1_modules pyaml requests`)
@@ -66,14 +66,14 @@ might require `pip install pyasn1 pyasn1_modules pyaml requests`)
and `metadata/en-US/full_description.txt`
in repository.
-- make sure there is a "newline" at the end of the description
- (see )
+- Make sure there is a "newline" at the end of the description
+ (see ).
# Changing F-Droid metadata
-- the file `com.b44t.messenger.yml` can be changed via a PR to the repository
+- The file `com.b44t.messenger.yml` can be changed via a PR to the repository.
-- reformat the metadata using
+- Reformat the metadata using
$ ../fdroidserver/fdroid rewritemeta com.b44t.messenger # called from fdroiddata dir
diff --git a/flake.lock b/flake.lock
index b569a58f8..795a35dfe 100644
--- a/flake.lock
+++ b/flake.lock
@@ -3,15 +3,15 @@
"android": {
"inputs": {
"devshell": "devshell",
- "flake-utils": "flake-utils",
+ "flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs"
},
"locked": {
- "lastModified": 1695500385,
- "narHash": "sha256-bpTF7H5fjfZMwgU8/W28FPgkyTf2rYTVUMBgmMskk44=",
+ "lastModified": 1710633978,
+ "narHash": "sha256-yemnwSvW7cdWtXGpivFA5jDO35rGPs6fqxlQ4l6ODXs=",
"owner": "tadfisher",
"repo": "android-nixpkgs",
- "rev": "a85aaf82d9c29b41e37bc0babd3f69632dfdbaf1",
+ "rev": "e91fb3d8517538e5ad9b422c9a4f604b56008a9e",
"type": "github"
},
"original": {
@@ -22,18 +22,18 @@
},
"devshell": {
"inputs": {
+ "flake-utils": "flake-utils",
"nixpkgs": [
"android",
"nixpkgs"
- ],
- "systems": "systems"
+ ]
},
"locked": {
- "lastModified": 1695195896,
- "narHash": "sha256-pq9q7YsGXnQzJFkR5284TmxrLNFc0wo4NQ/a5E93CQU=",
+ "lastModified": 1708939976,
+ "narHash": "sha256-O5+nFozxz2Vubpdl1YZtPrilcIXPcRAjqNdNE8oCRoA=",
"owner": "numtide",
"repo": "devshell",
- "rev": "05d40d17bf3459606316e3e9ec683b784ff28f16",
+ "rev": "5ddecd67edbd568ebe0a55905273e56cc82aabe3",
"type": "github"
},
"original": {
@@ -44,14 +44,14 @@
},
"flake-utils": {
"inputs": {
- "systems": "systems_2"
+ "systems": "systems"
},
"locked": {
- "lastModified": 1694529238,
- "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
+ "lastModified": 1701680307,
+ "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
+ "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
@@ -62,14 +62,14 @@
},
"flake-utils_2": {
"inputs": {
- "systems": "systems_3"
+ "systems": "systems_2"
},
"locked": {
- "lastModified": 1694529238,
- "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
+ "lastModified": 1709126324,
+ "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
+ "rev": "d465f4819400de7c8d874d50b982301f28a84605",
"type": "github"
},
"original": {
@@ -79,15 +79,33 @@
}
},
"flake-utils_3": {
+ "inputs": {
+ "systems": "systems_3"
+ },
+ "locked": {
+ "lastModified": 1710146030,
+ "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "numtide",
+ "repo": "flake-utils",
+ "type": "github"
+ }
+ },
+ "flake-utils_4": {
"inputs": {
"systems": "systems_4"
},
"locked": {
- "lastModified": 1681202837,
- "narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
+ "lastModified": 1705309234,
+ "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "cfacdce06f30d2b68473a46042957675eebb3401",
+ "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github"
},
"original": {
@@ -98,11 +116,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1695145219,
- "narHash": "sha256-Eoe9IHbvmo5wEDeJXKFOpKUwxYJIOxKUesounVccNYk=",
+ "lastModified": 1709237383,
+ "narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "5ba549eafcf3e33405e5f66decd1a72356632b96",
+ "rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8",
"type": "github"
},
"original": {
@@ -114,11 +132,11 @@
},
"nixpkgs_2": {
"locked": {
- "lastModified": 1697915759,
- "narHash": "sha256-WyMj5jGcecD+KC8gEs+wFth1J1wjisZf8kVZH13f1Zo=",
+ "lastModified": 1710889954,
+ "narHash": "sha256-Pr6F5Pmd7JnNEMHHmspZ0qVqIBVxyZ13ik1pJtm2QXk=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "51d906d2341c9e866e48c2efcaac0f2d70bfd43e",
+ "rev": "7872526e9c5332274ea5932a0c3270d6e4724f3b",
"type": "github"
},
"original": {
@@ -130,11 +148,11 @@
},
"nixpkgs_3": {
"locked": {
- "lastModified": 1681358109,
- "narHash": "sha256-eKyxW4OohHQx9Urxi7TQlFBTDWII+F+x2hklDOQPB50=",
+ "lastModified": 1706487304,
+ "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "96ba1c52e54e74c3197f4d43026b3f3d92e83ff9",
+ "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac",
"type": "github"
},
"original": {
@@ -147,22 +165,22 @@
"root": {
"inputs": {
"android": "android",
- "flake-utils": "flake-utils_2",
+ "flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_2",
"rust-overlay": "rust-overlay"
}
},
"rust-overlay": {
"inputs": {
- "flake-utils": "flake-utils_3",
+ "flake-utils": "flake-utils_4",
"nixpkgs": "nixpkgs_3"
},
"locked": {
- "lastModified": 1697940838,
- "narHash": "sha256-eyk92QqAoRNC0V99KOcKcBZjLPixxNBS0PRc4KlSQVs=",
+ "lastModified": 1711073443,
+ "narHash": "sha256-PpNb4xq7U5Q/DdX40qe7CijUsqhVVM3VZrhN0+c6Lcw=",
"owner": "oxalica",
"repo": "rust-overlay",
- "rev": "a3e829c06eadf848f13d109c7648570ce37ebccd",
+ "rev": "eec55ba9fcde6be4c63942827247e42afef7fafe",
"type": "github"
},
"original": {
diff --git a/flake.nix b/flake.nix
index 2e0fe9b29..d95dd3591 100644
--- a/flake.nix
+++ b/flake.nix
@@ -15,25 +15,24 @@
pkgs = import nixpkgs { inherit system overlays; };
android-sdk = android.sdk.${system} (sdkPkgs:
with sdkPkgs; [
- build-tools-30-0-3
+ build-tools-33-0-1
cmdline-tools-latest
ndk-bundle
platform-tools
- platforms-android-33
+ platforms-android-34
ndk-23-2-8568313
]);
+ rust-version = pkgs.lib.removeSuffix "\n"
+ (builtins.readFile ./scripts/rust-toolchain);
in {
devShells.default = pkgs.mkShell {
ANDROID_SDK_ROOT = "${android-sdk}/share/android-sdk";
ANDROID_NDK_ROOT =
"${android-sdk}/share/android-sdk/ndk/23.2.8568313";
- shellHook = ''
- export PATH="$ANDROID_SDK_ROOT/build-tools/30.0.3/:$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/:$PATH"
- '';
buildInputs = [
android-sdk
pkgs.openjdk17
- (pkgs.buildPackages.rust-bin.stable."1.72.0".minimal.override {
+ (pkgs.buildPackages.rust-bin.stable."${rust-version}".minimal.override {
targets = [
"armv7-linux-androideabi"
"aarch64-linux-android"
diff --git a/google-services.json b/google-services.json
new file mode 100644
index 000000000..64d7ae566
--- /dev/null
+++ b/google-services.json
@@ -0,0 +1,86 @@
+{
+ "project_info": {
+ "project_number": "922391085500",
+ "project_id": "delta-chat-fcm",
+ "storage_bucket": "delta-chat-fcm.appspot.com"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:922391085500:android:938fa7a685ce74ba3e2bb9",
+ "android_client_info": {
+ "package_name": "chat.delta"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBYH8Iznh8btYX7g_udv_bu68VH30zzxho"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:922391085500:android:6f54e2c4e49405673e2bb9",
+ "android_client_info": {
+ "package_name": "chat.delta.beta"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBYH8Iznh8btYX7g_udv_bu68VH30zzxho"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:922391085500:android:92b4cf12669cc2083e2bb9",
+ "android_client_info": {
+ "package_name": "com.b44t.messenger"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBYH8Iznh8btYX7g_udv_bu68VH30zzxho"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ },
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:922391085500:android:228a205b8aa2bacc3e2bb9",
+ "android_client_info": {
+ "package_name": "com.b44t.messenger.beta"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBYH8Iznh8btYX7g_udv_bu68VH30zzxho"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 2510a2d94..f6503cb12 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,3 +1,6 @@
+android.defaults.buildfeatures.buildconfig=true
android.enableJetifier=true
+android.nonFinalResIds=false
+android.nonTransitiveRClass=false
android.useAndroidX=true
-org.gradle.jvmargs=-Xmx4608m
\ No newline at end of file
+org.gradle.jvmargs=-Xmx4608m
diff --git a/jni/Android.mk b/jni/Android.mk
index e2867679c..65a4d0ad9 100644
--- a/jni/Android.mk
+++ b/jni/Android.mk
@@ -30,8 +30,6 @@ LOCAL_CFLAGS := -Werror -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast -DNUL
LOCAL_CFLAGS += -Drestrict='' -D__EMX__ -DFIXED_POINT -DUSE_ALLOCA -DHAVE_LRINT -DHAVE_LRINTF -fno-math-errno
LOCAL_CFLAGS += -DANDROID_NDK -DDISABLE_IMPORTGL -fno-strict-aliasing -DAVOID_TABLES -DANDROID_TILE_BASED_DECODE -DANDROID_ARMV6_IDCT -ffast-math -D__STDC_CONSTANT_MACROS
-LOCAL_SRC_FILES := \
-utils/org_thoughtcrime_securesms_util_FileUtils.cpp \
-dc_wrapper.c
+LOCAL_SRC_FILES := dc_wrapper.c
include $(BUILD_SHARED_LIBRARY)
diff --git a/jni/dc_wrapper.c b/jni/dc_wrapper.c
index d55d6c9e4..4e3a8d180 100644
--- a/jni/dc_wrapper.c
+++ b/jni/dc_wrapper.c
@@ -268,6 +268,14 @@ JNIEXPORT void Java_com_b44t_messenger_DcAccounts_maybeNetwork(JNIEnv *env, jobj
}
+JNIEXPORT void Java_com_b44t_messenger_DcAccounts_setPushDeviceToken(JNIEnv *env, jobject obj, jstring token)
+{
+ CHAR_REF(token);
+ dc_accounts_set_push_device_token(get_dc_accounts(env, obj), tokenPtr);
+ CHAR_UNREF(token);
+}
+
+
JNIEXPORT jint Java_com_b44t_messenger_DcAccounts_addAccount(JNIEnv *env, jobject obj)
{
return dc_accounts_add_account(get_dc_accounts(env, obj));
@@ -792,6 +800,20 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getWebxdcStatusUpdates(JNIEn
}
+JNIEXPORT jint Java_com_b44t_messenger_DcContext_initWebxdcIntegration(JNIEnv *env, jobject obj, jint chat_id)
+{
+ return dc_init_webxdc_integration(get_dc_context(env, obj), chat_id);
+}
+
+
+JNIEXPORT void Java_com_b44t_messenger_DcContext_setWebxdcIntegration(JNIEnv *env, jobject obj, jstring file)
+{
+ CHAR_REF(file);
+ dc_set_webxdc_integration(get_dc_context(env, obj), filePtr);
+ CHAR_UNREF(file);
+}
+
+
JNIEXPORT jint Java_com_b44t_messenger_DcContext_addDeviceMsg(JNIEnv *env, jobject obj, jstring label, jobject msg)
{
CHAR_REF(label);
@@ -1004,18 +1026,6 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcContext_setLocation(JNIEnv *env, jo
}
-JNIEXPORT jlong Java_com_b44t_messenger_DcContext_getLocationsCPtr(JNIEnv *env, jobject obj, jint chat_id, jint contact_id, jlong timestamp_start, jlong timestamp_end)
-{
- return (jlong)dc_get_locations(get_dc_context(env, obj), chat_id, contact_id, CTIMESTAMP(timestamp_start), CTIMESTAMP(timestamp_end));
-}
-
-
-JNIEXPORT void Java_com_b44t_messenger_DcContext_deleteAllLocations(JNIEnv *env, jobject obj)
-{
- dc_delete_all_locations(get_dc_context(env, obj));
-}
-
-
JNIEXPORT jlong Java_com_b44t_messenger_DcContext_getProviderFromEmailWithDnsCPtr(JNIEnv *env, jobject obj, jstring email)
{
CHAR_REF(email);
@@ -1108,94 +1118,23 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcEvent_getData2Str(JNIEnv *env, jobje
}
-JNIEXPORT jint Java_com_b44t_messenger_DcEvent_getAccountId(JNIEnv *env, jobject obj)
+JNIEXPORT jbyteArray Java_com_b44t_messenger_DcEvent_getData2Blob(JNIEnv *env, jobject obj)
{
- return (jint)dc_event_get_account_id(get_dc_event(env, obj));
-}
+ jbyteArray ret = NULL;
+ dc_event_t* event = get_dc_event(env, obj);
+ size_t ptrSize = dc_event_get_data2_int(event);
+ char* ptr = dc_event_get_data2_str(get_dc_event(env, obj));
+ ret = ptr2jbyteArray(env, ptr, ptrSize);
+ dc_str_unref(ptr);
-/*******************************************************************************
- * DcArray
- ******************************************************************************/
-
-
-static dc_array_t* get_dc_array(JNIEnv *env, jobject obj)
-{
- static jfieldID fid = 0;
- if (fid==0) {
- jclass cls = (*env)->GetObjectClass(env, obj);
- fid = (*env)->GetFieldID(env, cls, "arrayCPtr", "J" /*Signature, J=long*/);
- }
- if (fid) {
- return (dc_array_t*)(*env)->GetLongField(env, obj, fid);
- }
- return NULL;
-}
-
-
-JNIEXPORT void Java_com_b44t_messenger_DcArray_unrefArrayCPtr(JNIEnv *env, jobject obj)
-{
- dc_array_unref(get_dc_array(env, obj));
-}
-
-
-JNIEXPORT jint Java_com_b44t_messenger_DcArray_getCnt(JNIEnv *env, jobject obj)
-{
- return dc_array_get_cnt(get_dc_array(env, obj));
-}
-
-
-JNIEXPORT jfloat Java_com_b44t_messenger_DcArray_getLatitude(JNIEnv *env, jobject obj, jint index)
-{
- return (jfloat)dc_array_get_latitude(get_dc_array(env, obj), index);
-}
-
-
-JNIEXPORT jfloat Java_com_b44t_messenger_DcArray_getLongitude(JNIEnv *env, jobject obj, jint index)
-{
- return (jfloat)dc_array_get_longitude(get_dc_array(env, obj), index);
-}
-
-
-JNIEXPORT jfloat Java_com_b44t_messenger_DcArray_getAccuracy(JNIEnv *env, jobject obj, jint index)
-{
- return (jfloat)dc_array_get_accuracy(get_dc_array(env, obj), index);
-}
-
-
-JNIEXPORT jlong Java_com_b44t_messenger_DcArray_getTimestamp(JNIEnv *env, jobject obj, jint index)
-{
- return JTIMESTAMP(dc_array_get_timestamp(get_dc_array(env, obj), index));
-}
-
-
-JNIEXPORT jint Java_com_b44t_messenger_DcArray_getMsgId(JNIEnv *env, jobject obj, jint index)
-{
- return dc_array_get_msg_id(get_dc_array(env, obj), index);
-}
-
-
-JNIEXPORT jint Java_com_b44t_messenger_DcArray_getLocationId(JNIEnv *env, jobject obj, jint index)
-{
- return dc_array_get_id(get_dc_array(env, obj), index);
-}
-
-
-JNIEXPORT jstring Java_com_b44t_messenger_DcArray_getMarker(JNIEnv *env, jobject obj, jint index)
-{
- char* temp = dc_array_get_marker(get_dc_array(env, obj), index);
- jstring ret = NULL;
- if (temp) {
- ret = JSTRING_NEW(temp);
- }
- dc_str_unref(temp);
return ret;
}
-JNIEXPORT jboolean Java_com_b44t_messenger_DcArray_isIndependent(JNIEnv *env, jobject obj, jint index)
+JNIEXPORT jint Java_com_b44t_messenger_DcEvent_getAccountId(JNIEnv *env, jobject obj)
{
- return (dc_array_is_independent(get_dc_array(env, obj), index)!=0);
+ return (jint)dc_event_get_account_id(get_dc_event(env, obj));
}
diff --git a/jni/deltachat-core-rust b/jni/deltachat-core-rust
index e0e907b1b..b46247d64 160000
--- a/jni/deltachat-core-rust
+++ b/jni/deltachat-core-rust
@@ -1 +1 @@
-Subproject commit e0e907b1bb710dcd049cbc864e319f1e08c94705
+Subproject commit b46247d649f0c013b8d48c54af0242c934f17848
diff --git a/jni/utils/org_thoughtcrime_securesms_util_FileUtils.cpp b/jni/utils/org_thoughtcrime_securesms_util_FileUtils.cpp
deleted file mode 100644
index ef86ac8e3..000000000
--- a/jni/utils/org_thoughtcrime_securesms_util_FileUtils.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "org_thoughtcrime_securesms_util_FileUtils.h"
-
-#include
-#include
-#include
-
-jint JNICALL Java_org_thoughtcrime_securesms_util_FileUtils_getFileDescriptorOwner
- (JNIEnv *env, jclass clazz, jobject fileDescriptor)
-{
- jclass fdClass = env->GetObjectClass(fileDescriptor);
-
- if (fdClass == NULL) {
- return -1;
- }
-
- jfieldID fdFieldId = env->GetFieldID(fdClass, "descriptor", "I");
-
- if (fdFieldId == NULL) {
- return -1;
- }
-
- int fd = env->GetIntField(fileDescriptor, fdFieldId);
-
- struct stat stat_struct;
-
- if (fstat(fd, &stat_struct) != 0) {
- return -1;
- }
-
- return stat_struct.st_uid;
-}
\ No newline at end of file
diff --git a/jni/utils/org_thoughtcrime_securesms_util_FileUtils.h b/jni/utils/org_thoughtcrime_securesms_util_FileUtils.h
deleted file mode 100644
index abf13b35b..000000000
--- a/jni/utils/org_thoughtcrime_securesms_util_FileUtils.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include
-/* Header for class org_thoughtcrime_securesms_util_FileUtils */
-
-#ifndef _Included_org_thoughtcrime_securesms_util_FileUtils
-#define _Included_org_thoughtcrime_securesms_util_FileUtils
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class: org_thoughtcrime_securesms_util_FileUtils
- * Method: getFileDescriptorOwner
- * Signature: (Ljava/io/FileDescriptor;)I
- */
-JNIEXPORT jint JNICALL Java_org_thoughtcrime_securesms_util_FileUtils_getFileDescriptorOwner
- (JNIEnv *, jclass, jobject);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
diff --git a/metadata/de/title.txt b/metadata/de/title.txt
new file mode 100644
index 000000000..97cecc272
--- /dev/null
+++ b/metadata/de/title.txt
@@ -0,0 +1 @@
+Delta Chat
diff --git a/metadata/en-US/changelogs/6744.txt b/metadata/en-US/changelogs/6744.txt
new file mode 100644
index 000000000..5135a706c
--- /dev/null
+++ b/metadata/en-US/changelogs/6744.txt
@@ -0,0 +1,6 @@
+- One-to-one chats guarantee end-to-end encryption for contacts with a green checkmark now
+- For everyone\'s simplicity, we also mark these chats with green checkmarks
+- Groups are created automatically with guaranteed end-to-end encryption if possible
+- Accept/Blocked, Archived, Pinned, Mute is synced across all your devices
+- More improvements in camera, voice messages, backup-all, screen reader, per-account wallpapers, gallery select-all, webxdc landscape
+- Tons of bug fixes
diff --git a/metadata/en-US/changelogs/6754.txt b/metadata/en-US/changelogs/6754.txt
new file mode 100644
index 000000000..5135a706c
--- /dev/null
+++ b/metadata/en-US/changelogs/6754.txt
@@ -0,0 +1,6 @@
+- One-to-one chats guarantee end-to-end encryption for contacts with a green checkmark now
+- For everyone\'s simplicity, we also mark these chats with green checkmarks
+- Groups are created automatically with guaranteed end-to-end encryption if possible
+- Accept/Blocked, Archived, Pinned, Mute is synced across all your devices
+- More improvements in camera, voice messages, backup-all, screen reader, per-account wallpapers, gallery select-all, webxdc landscape
+- Tons of bug fixes
diff --git a/metadata/en-US/changelogs/6774.txt b/metadata/en-US/changelogs/6774.txt
new file mode 100644
index 000000000..f4f724b94
--- /dev/null
+++ b/metadata/en-US/changelogs/6774.txt
@@ -0,0 +1,6 @@
+- sync changes on "Your Profile Name", "Show Class Mails", "Read Receipts" options across devices
+- remove receiver limit on .xdc size
+- fix log in errors for providers as 163.com
+- fix decryption errors when using multiple private keys
+- fix database locked errors on webxdc updates
+- update translations
diff --git a/metadata/en-US/changelogs/6804.txt b/metadata/en-US/changelogs/6804.txt
new file mode 100644
index 000000000..34a3c04ff
--- /dev/null
+++ b/metadata/en-US/changelogs/6804.txt
@@ -0,0 +1,8 @@
+- "Reactions": long tap a message to react to it
+- If you cannot scan QR codes, share them as "invite links"
+- Unread messages of all accounts are counted and shown in title now
+- Webxdc sending limit removed
+- Long-tapping chatlist items now allow to mute/unmute chats directly
+- Ask for system unlock secret before opening "Password & Account"
+- New option "Settings / Advanced / Read System Address Book"
+- Tons of bug fixes
diff --git a/metadata/en-US/changelogs/6864.txt b/metadata/en-US/changelogs/6864.txt
new file mode 100644
index 000000000..f71a0af68
--- /dev/null
+++ b/metadata/en-US/changelogs/6864.txt
@@ -0,0 +1,7 @@
+- new onboarding: you can create a new profile with one tap on "Create New Profile" - or use an existing login or second-device-setup as usual
+- contacts can be attached as "Cards" at "Attach / Contact"; when the receiver taps the cards, guaranteed end-to-end encrypted can be established
+- add contacts manually at "New Chat / New Contact / Add Contact Manually"
+- send any emoji as reaction
+- show reactions in summaries
+- pin/archive/etc chats directly from search result
+- bug fixed and more
diff --git a/metadata/en-US/images/phoneScreenshots/1.png b/metadata/en-US/images/phoneScreenshots/1.png
index 6f50fafbf..55364bacd 100644
Binary files a/metadata/en-US/images/phoneScreenshots/1.png and b/metadata/en-US/images/phoneScreenshots/1.png differ
diff --git a/metadata/en-US/images/phoneScreenshots/2.png b/metadata/en-US/images/phoneScreenshots/2.png
index 936661b60..e165558ef 100644
Binary files a/metadata/en-US/images/phoneScreenshots/2.png and b/metadata/en-US/images/phoneScreenshots/2.png differ
diff --git a/metadata/en-US/images/phoneScreenshots/3.png b/metadata/en-US/images/phoneScreenshots/3.png
index 83e1b607e..a6978fad7 100644
Binary files a/metadata/en-US/images/phoneScreenshots/3.png and b/metadata/en-US/images/phoneScreenshots/3.png differ
diff --git a/metadata/en-US/images/phoneScreenshots/4.png b/metadata/en-US/images/phoneScreenshots/4.png
index e768f6068..ae269dd69 100644
Binary files a/metadata/en-US/images/phoneScreenshots/4.png and b/metadata/en-US/images/phoneScreenshots/4.png differ
diff --git a/metadata/en-US/images/phoneScreenshots/5.png b/metadata/en-US/images/phoneScreenshots/5.png
index 9328f6e00..352221329 100644
Binary files a/metadata/en-US/images/phoneScreenshots/5.png and b/metadata/en-US/images/phoneScreenshots/5.png differ
diff --git a/metadata/en-US/images/phoneScreenshots/6.png b/metadata/en-US/images/phoneScreenshots/6.png
index acd462743..85ae92146 100644
Binary files a/metadata/en-US/images/phoneScreenshots/6.png and b/metadata/en-US/images/phoneScreenshots/6.png differ
diff --git a/metadata/en-US/images/phoneScreenshots/7.png b/metadata/en-US/images/phoneScreenshots/7.png
index c6e4ccf12..4e750da26 100644
Binary files a/metadata/en-US/images/phoneScreenshots/7.png and b/metadata/en-US/images/phoneScreenshots/7.png differ
diff --git a/metadata/en-US/images/phoneScreenshots/8.png b/metadata/en-US/images/phoneScreenshots/8.png
index 1966ec36a..2b87d8e6b 100644
Binary files a/metadata/en-US/images/phoneScreenshots/8.png and b/metadata/en-US/images/phoneScreenshots/8.png differ
diff --git a/metadata/es/full_description.txt b/metadata/es/full_description.txt
new file mode 100644
index 000000000..034863433
--- /dev/null
+++ b/metadata/es/full_description.txt
@@ -0,0 +1,19 @@
+Delta Chat es una aplicación de mensajería totalmente compatible con
+infraestructura de correo electrónico.
+
+Por lo tanto, con Delta Chat se obtiene la facilidad de conocidos mensajeros con el alcance de
+e-mail. Además, eres independiente de otras empresas o servicios, ya que tu
+Los datos no están relacionados con Delta Chat, ni siquiera agregará nuevas dependencias aquí.
+
+Algunas características de un vistazo:
+
+* Seguro con cifrado automático de extremo a extremo, compatible con el nuevo estándar Autocrypt
+* Rápido mediante el uso de Push-IMAP
+* Mayor base de usuarios -- también se puede llegar a los receptores que no usan Delta Chat
+* Compatible -- no sólo consigo mismo
+* Interfaz de usuario elegante y sencilla
+* Sistema distribuido
+* Sin spam -- sólo los mensajes de usuarios conocidos se muestran por defecto
+* Fiable -- seguro para uso profesional
+* Confiable -- incluso se puede utilizar para mensajes de negocios
+* Totalmente OpenSource y basado en estándares
diff --git a/metadata/es/title.txt b/metadata/es/title.txt
new file mode 100644
index 000000000..97cecc272
--- /dev/null
+++ b/metadata/es/title.txt
@@ -0,0 +1 @@
+Delta Chat
diff --git a/metadata/it/changelogs/6444.txt b/metadata/it/changelogs/6444.txt
new file mode 100644
index 000000000..d98292db8
--- /dev/null
+++ b/metadata/it/changelogs/6444.txt
@@ -0,0 +1,10 @@
+Se un utente e-mail classica invia un'e-mail a un gruppo e aggiunge nuovi destinatari, i nuovi destinatari diventeranno membri del gruppo.
+Tratta le chiavi PGP allegate dall'utente di posta elettronica classica come un segnale per preferire la crittografia reciproca.
+Tratta i messaggi crittografati o firmati provenienti dall'utente di posta elettronica classica come un segnale per preferire la crittografia reciproca.
+Corretta la migrazione dei vecchi database.
+Correzione: invia messaggi di modifica temporanei del timer solo nella chat già conosciuta da altri membri.
+Correzione: utilizza percorsi relativi al database ed evita problemi ad es. sulla migrazione verso altri dispositivi o percorsi.
+Correzione: timeout di lettura/scrittura per IMAP su SOCKS5.
+Correzione: non inviare "modifiche al nome del gruppo" se nessun carattere è stato modificato.
+Aggiungi la traduzione greca, aggiornate altre traduzioni.
+Aggiornamento al core104.
diff --git a/metadata/it/changelogs/6464.txt b/metadata/it/changelogs/6464.txt
new file mode 100644
index 000000000..4c18ed5d6
--- /dev/null
+++ b/metadata/it/changelogs/6464.txt
@@ -0,0 +1,13 @@
+correzione: rendere visibili le chat archiviate che non vengono annullate automaticamente (chat disattivate): aggiunge un contatore non letto e sposta l'archivio in alto
+correzione: invia file AVIF, HEIC, TXT, PPT, XLS, XML come tali
+correzione: attiva la riconnessione quando non si riesce a recuperare i messaggi esistenti
+correzione: non riprova a recuperare i messaggi esistenti dopo un errore, impedisce il ciclo infinito di riconnessione
+correzione: non aggiunge un errore se il messaggio è crittografato ma non firmato
+correzione: non rimuove gli spazi iniziali dalle righe del messaggio
+risolvere i casi limite relativi all'invio di testi citati
+corretta la connessione STARTTLS
+correzione: non trattare gli indirizzi email non validi come un'eccezione
+correzione: svuotamento dei percorsi relativi del database introdotti in 1.34.8 in tempo
+aggiornamenti rapidi degli elenchi di chat e dell'elenco dei contatti
+aggiornare le traduzioni
+aggiornamento al core106
diff --git a/metadata/it/changelogs/6494.txt b/metadata/it/changelogs/6494.txt
new file mode 100644
index 000000000..b822b7635
--- /dev/null
+++ b/metadata/it/changelogs/6494.txt
@@ -0,0 +1,5 @@
+* aggiunge le opzioni SOCKS5 a "Aggiungi Account" e "Configura"
+* introdurre la cache DNS: se il DNS smette di funzionare su una rete, Delta Chat sarà comunque in grado di connettersi ad IMAP utilizzando gli indirizzi IP precedenti
+* mostra messaggi completi: non carica automaticamente il contenuto remoto per le richieste
+* Corretti vari bug e migliorata la registrazione
+* aggiornate le traduzioni
diff --git a/metadata/it/changelogs/6504.txt b/metadata/it/changelogs/6504.txt
new file mode 100644
index 000000000..7716e1746
--- /dev/null
+++ b/metadata/it/changelogs/6504.txt
@@ -0,0 +1,8 @@
+* nuovo e semplice modo per aggiungere un secondo dispositivo al tuo account: seleziona "Aggiungi Secondo Dispositivo" dopo l'installazione e scansiona un codice QR dal primo dispositivo
+* visualizza "Tutti i Media" di tutte le chat
+* nuova opzione "Cancella Chat".
+* mostra le notifiche per tutti gli account
+* utilizza meglio la modalità buio/luce in "Mostra messaggio completo"
+* mostra l'icona accanto ai messaggi informativi delle app
+* resilienza contro le interruzioni memorizzando nella cache i risultati DNS per le connessioni SMTP e IMAP
+* Miglioramenti e correzioni velocità e affidabilità
diff --git a/metadata/it/changelogs/6514.txt b/metadata/it/changelogs/6514.txt
new file mode 100644
index 000000000..4a5fe06da
--- /dev/null
+++ b/metadata/it/changelogs/6514.txt
@@ -0,0 +1,8 @@
+* aggiungi un messaggio sul dispositivo dopo aver configurato un secondo dispositivo utilizzando "Impostazioni/Aggiungi Secondo Dispositivo"
+* velocizza significativamente il tempo di connessione "Aggiungi come Secondo Dispositivo" dal lato intermediario
+* se possibile, mostra il nome Wi-Fi direttamente dopo aver scansionato il codice QR "Aggiungi Secondo Dispositivo".
+* risolto il riavvio immediato di "Aggiungi Secondo Dispositivo"
+* correzione: non vengono visualizzati solo i media cestinati nella vista "Tutti i Media".
+* correzione: aggiornamento del database se necessario dopo "Aggiungi Secondo Dispositivo"
+* aggiornate traduzioni e aiuto locale
+* aggiornamento al core112.6
diff --git a/metadata/it/changelogs/6534.txt b/metadata/it/changelogs/6534.txt
new file mode 100644
index 000000000..36b7d9242
--- /dev/null
+++ b/metadata/it/changelogs/6534.txt
@@ -0,0 +1,6 @@
+* inizia con un tema chiaro/scuro a seconda del tema del sistema
+* corrette le icone di verifica per le chat individuali
+* corretti gli errori di recupero dovuti al rilevamento EOF errato nelle risposte IMAP lunghe
+* ulteriori correzioni di bug
+* aggiornate le traduzioni e aiuto locale
+* aggiornamento al core112.7
diff --git a/metadata/it/changelogs/6544.txt b/metadata/it/changelogs/6544.txt
new file mode 100644
index 000000000..c0c15e5d1
--- /dev/null
+++ b/metadata/it/changelogs/6544.txt
@@ -0,0 +1,4 @@
+* utilizza la configurazione SOCKS5 anche per caricare immagini remote nelle mail HTML
+* correzioni di bug
+* aggiornate le traduzioni e aiuto locale
+* aggiornamento al core112.8
diff --git a/metadata/it/changelogs/6584.txt b/metadata/it/changelogs/6584.txt
new file mode 100644
index 000000000..607e5dc2a
--- /dev/null
+++ b/metadata/it/changelogs/6584.txt
@@ -0,0 +1,6 @@
+* nuove API webxdc: importFiles() e sendToChat()
+* rimosso il limite di dimensione superiore degli allegati
+* risparmia traffico e spazio di archiviazione: ricodifica PNG di grandi dimensioni e altri formati di immagine supportati (i JPEG di grandi dimensioni venivano sempre ricodificati; le immagini inviate come "File" non vengono ancora registrate o modificate in altro modo)
+* salva spazio di archiviazione locale: comprimi le email HTML nel database
+* migliorata coerenza dell'appartenenza al gruppo
+* molte correzioni di bug
diff --git a/metadata/it/changelogs/6594.txt b/metadata/it/changelogs/6594.txt
new file mode 100644
index 000000000..72af82ecf
--- /dev/null
+++ b/metadata/it/changelogs/6594.txt
@@ -0,0 +1,5 @@
+* usa l'editor immagini per la selezione dell'avatar quando possibile
+* migliora la schermata di caricamento in modalità oscura
+* aggiornamento "icona verificata"
+* aggiunta la traduzione di Luri Bakhtiari, aggiornate altre traduzioni
+* molte correzioni di bug
diff --git a/metadata/it/changelogs/6600.txt b/metadata/it/changelogs/6600.txt
new file mode 100644
index 000000000..72af82ecf
--- /dev/null
+++ b/metadata/it/changelogs/6600.txt
@@ -0,0 +1,5 @@
+* usa l'editor immagini per la selezione dell'avatar quando possibile
+* migliora la schermata di caricamento in modalità oscura
+* aggiornamento "icona verificata"
+* aggiunta la traduzione di Luri Bakhtiari, aggiornate altre traduzioni
+* molte correzioni di bug
diff --git a/metadata/it/changelogs/6744.txt b/metadata/it/changelogs/6744.txt
new file mode 100644
index 000000000..387d27d4b
--- /dev/null
+++ b/metadata/it/changelogs/6744.txt
@@ -0,0 +1,6 @@
+- Le chat individuali garantiscono ora la crittografia end-to-end per i contatti con un segno di spunta verde
+- Per la semplicità di tutti, contrassegniamo queste chat anche con segni di spunta verdi
+- I gruppi vengono creati automaticamente con crittografia end-to-end garantita, se possibile
+- Accetta/Bloccato, Archiviato, Appuntato, Disattiva Audio è sincronizzato su tutti i tuoi dispositivi
+- Ulteriori miglioramenti alla fotocamera, ai messaggi vocali, al backup di tutto, alla lettura dello schermo, agli sfondi per account, alla selezione di tutto nella galleria, all'orientamento orizzontale webxdc
+- Tonnellate di correzioni bug
diff --git a/metadata/it/changelogs/6754.txt b/metadata/it/changelogs/6754.txt
new file mode 100644
index 000000000..387d27d4b
--- /dev/null
+++ b/metadata/it/changelogs/6754.txt
@@ -0,0 +1,6 @@
+- Le chat individuali garantiscono ora la crittografia end-to-end per i contatti con un segno di spunta verde
+- Per la semplicità di tutti, contrassegniamo queste chat anche con segni di spunta verdi
+- I gruppi vengono creati automaticamente con crittografia end-to-end garantita, se possibile
+- Accetta/Bloccato, Archiviato, Appuntato, Disattiva Audio è sincronizzato su tutti i tuoi dispositivi
+- Ulteriori miglioramenti alla fotocamera, ai messaggi vocali, al backup di tutto, alla lettura dello schermo, agli sfondi per account, alla selezione di tutto nella galleria, all'orientamento orizzontale webxdc
+- Tonnellate di correzioni bug
diff --git a/metadata/it/changelogs/6774.txt b/metadata/it/changelogs/6774.txt
new file mode 100644
index 000000000..9ad82cae8
--- /dev/null
+++ b/metadata/it/changelogs/6774.txt
@@ -0,0 +1,6 @@
+- sincronizza le modifiche alle opzioni "Nome Tuo Profilo", "Mostra E-Mails Tradizionali", "Ricevute di Lettura" su tutti i dispositivi
+- rimosso il limite del ricevitore sulla dimensione .xdc
+- corretti gli errori di accesso per provider come 163.com
+- corretti gli errori di decrittazione quando si utilizzano più chiavi private
+- corretti gli errori di blocco del database sugli aggiornamenti webxdc
+- aggiornate le traduzioni
diff --git a/metadata/it/changelogs/6804.txt b/metadata/it/changelogs/6804.txt
new file mode 100644
index 000000000..f3f7e6b98
--- /dev/null
+++ b/metadata/it/changelogs/6804.txt
@@ -0,0 +1,8 @@
+- "Reazioni": tocca a lungo un messaggio per reagire ad esso
+- Se non riesci a scansionare i codici QR, condividili come "link di invito"
+- I messaggi non letti di tutti gli account ora vengono conteggiati e mostrati nel titolo
+- Rimosso limite di invio di webxdc
+- Gli elementi dell'elenco chat a tocco prolungato ora consentono di disattivare/attivare l'audio delle chat direttamente
+- Richiede lo sblocco segreto del sistema prima di aprire "Password & Account"
+- Nuova opzione "Impostazioni/Avanzate/Leggi Rubrica di Sistema"
+- Tonnellate di correzioni bug
diff --git a/metadata/it/full_description.txt b/metadata/it/full_description.txt
new file mode 100644
index 000000000..8578fe70d
--- /dev/null
+++ b/metadata/it/full_description.txt
@@ -0,0 +1,19 @@
+Delta Chat è un'app di messaggistica completamente compatibile con
+l'infrastruttura e-mail esistente.
+
+Quindi, con Delta Chat ottieni la facilità di messaggistica ben nota alla portata di
+e-mail. Inoltre, sei indipendente da altre società o servizi, come i tuoi
+dati non sono correlati a Delta Chat, qui non aggiungerai nemmeno nuove dipendenze.
+
+Alcune caratteristiche in breve:
+
+* Proteggi con la crittografia end-to-end automatica, che supporta il nuovo standard Autocrypt
+* Veloce grazie all'uso di Push-IMAP
+* Base utenti più ampia -- è possibile raggiungere anche i destinatari che non utilizzano Delta Chat
+* Compatibile -- non solo con se stesso
+* Interfaccia utente elegante e semplice
+* Sistema distribuito
+* Nessuno Spam -- per impostazione predefinita vengono visualizzati solo i messaggi di utenti conosciuti
+* Affidabile -- sicuro per l'uso professionale
+* Affidabile -- può essere utilizzato anche per messaggi aziendali
+* Completamente OpenSource e basato su Standards
diff --git a/metadata/it/short_description.txt b/metadata/it/short_description.txt
index 861e437b3..4efb40ce0 100644
--- a/metadata/it/short_description.txt
+++ b/metadata/it/short_description.txt
@@ -1 +1 @@
-Comunica istantaneamente tramite e-mail
+Chatta via e-mail. Elegantemente Retrò, Decentralizzato e Aperto. Riservatezza da Progettazione.
diff --git a/metadata/it/title.txt b/metadata/it/title.txt
new file mode 100644
index 000000000..97cecc272
--- /dev/null
+++ b/metadata/it/title.txt
@@ -0,0 +1 @@
+Delta Chat
diff --git a/metadata/nb/short_description.txt b/metadata/nb/short_description.txt
index 1b6e197bf..64a513b02 100644
--- a/metadata/nb/short_description.txt
+++ b/metadata/nb/short_description.txt
@@ -1 +1 @@
-Kommuniser umiddelbart via e-post
+Sludre desentralisert via e-post.
diff --git a/metadata/nb/title.txt b/metadata/nb/title.txt
new file mode 100644
index 000000000..97cecc272
--- /dev/null
+++ b/metadata/nb/title.txt
@@ -0,0 +1 @@
+Delta Chat
diff --git a/metadata/pt-BR/title.txt b/metadata/pt-BR/title.txt
new file mode 100644
index 000000000..97cecc272
--- /dev/null
+++ b/metadata/pt-BR/title.txt
@@ -0,0 +1 @@
+Delta Chat
diff --git a/metadata/ru/changelogs/6444.txt b/metadata/ru/changelogs/6444.txt
new file mode 100644
index 000000000..654d5dd50
--- /dev/null
+++ b/metadata/ru/changelogs/6444.txt
@@ -0,0 +1,10 @@
+Если пользователь классической электронной почты отправляет электронное письмо группе и добавляет новых получателей, новые получатели станут членами группы.
+Рассматривать прикрепленные ключи PGP от пользователя классической электронной почты как сигнал о предпочтении взаимного шифрования.
+Считаать зашифрованные или подписанные сообщения от пользователя классической электронной почты сигналом о предпочтении взаимного шифрования.
+Исправлена миграция старых баз данных.
+Исправлено: отправлять эфемерные сообщения об изменении таймера только в том случае, если чат уже известен другим участникам.
+Исправлено: использовать относительные пути к базе данных.
+Исправлены таймауты чтения/записи для IMAP через SOCKS5.
+Исправлено: не отправлять «изменения имени группы», если ни один символ не был изменен.
+Обновлены переводы.
+Обновление до core104.
diff --git a/metadata/ru/changelogs/6464.txt b/metadata/ru/changelogs/6464.txt
new file mode 100644
index 000000000..3360991ae
--- /dev/null
+++ b/metadata/ru/changelogs/6464.txt
@@ -0,0 +1,15 @@
+исправление: сделать видимыми заархивированные чаты, которые не распаковываются автоматически (отключенные чаты): добавить счетчик непрочитанных сообщений и переместить архив в начало страницы
+исправление: отправлять файлы AVIF, HEIC, TXT, PPT, XLS, XML как таковые
+исправление: инициировать повторное подключение, если не удалось получить существующие сообщения
+исправление: не повторять попытку извлечения существующих сообщений после неудачи, предотвращая бесконечный цикл переподключения
+исправление: не добавлять ошибку, если сообщение зашифровано, но не подписано
+исправление: не удалять ведущие пробелы из строк сообщений
+исправление угловых ситуаций при отправке текстов с кавычками
+исправление: исправление STARTTLS-соединения
+исправление: не рассматривать недействительные адреса электронной почты как исключение
+исправление: своевременно промывать относительные пути к базам данных, введенные в 1.34.8
+более быстрое обновление списков чатов и списков контактов
+обновление переводов
+обновление до core106
+
+Переведено с помощью DeepL.com (бесплатная версия)
diff --git a/metadata/ru/changelogs/6494.txt b/metadata/ru/changelogs/6494.txt
new file mode 100644
index 000000000..57078df6b
--- /dev/null
+++ b/metadata/ru/changelogs/6494.txt
@@ -0,0 +1,5 @@
+* добавлены настройки SOCKS5
+* добавлен кеш DNS: если DNS перестаетс работать, Delta Chat всё равно сможет присоединиться к IMAP с использованием предыдущего IP-адреса
+* отключена загрузка удаленного контента по умолчанию при отображении полного сообщения
+* исправлены различные ошибки и улучшены логи
+* обновлен перевод
diff --git a/metadata/ru/changelogs/6504.txt b/metadata/ru/changelogs/6504.txt
new file mode 100644
index 000000000..8067e1428
--- /dev/null
+++ b/metadata/ru/changelogs/6504.txt
@@ -0,0 +1,8 @@
+* новый, простой способ добавить второе устройство в свой аккаунт: выберите "Добавить как второе устройство" после установки и отсканируйте QR-код с первого устройства
+* просмотр "Всех медиа" всех чатов
+* новая опция "Очистить чат"
+* показывать уведомления для всех аккаунтов
+* более эффективное использование темного/светлого режима в "Показать полное сообщение"
+* показывать значок рядом с информационными сообщениями приложений
+* устойчивость к сбоям за счет кэширования результатов DNS для SMTP- и IMAP-соединений
+* улучшения скорости и надежности, исправления
diff --git a/metadata/ru/changelogs/6514.txt b/metadata/ru/changelogs/6514.txt
new file mode 100644
index 000000000..c137a7456
--- /dev/null
+++ b/metadata/ru/changelogs/6514.txt
@@ -0,0 +1,8 @@
+* добавление сообщения об устройстве после настройки второго устройства с помощью "Настройки / Добавить второе устройство"
+* значительно ускорить время подключения "Добавить в качестве второго устройства" на стороне получателя
+* если возможно, показывать имя Wi-Fi непосредственно после сканирования QR-кода "Добавить второе устройство"
+* исправление немедленного перезапуска "Добавить второе устройство"
+* исправление: в представлении "Все носители" не показывать только удаленные носители
+* исправление: обновление базы данных при необходимости после "Добавить второе устройство"
+* обновить переводы и локальную справку
+* обновление до core112.6
diff --git a/metadata/ru/changelogs/6534.txt b/metadata/ru/changelogs/6534.txt
new file mode 100644
index 000000000..4a0c1e7d0
--- /dev/null
+++ b/metadata/ru/changelogs/6534.txt
@@ -0,0 +1,6 @@
+* запуск светлой/темной темы в зависимости от темы системы
+* исправление значков проверки для чатов один на один
+* исправление ошибок выборки из-за ошибочного определения EOF в длинных ответах IMAP
+* исправление других ошибок
+* обновление переводов и локальной справки
+* обновление до core112.7
diff --git a/metadata/ru/changelogs/6544.txt b/metadata/ru/changelogs/6544.txt
new file mode 100644
index 000000000..3597c833e
--- /dev/null
+++ b/metadata/ru/changelogs/6544.txt
@@ -0,0 +1,4 @@
+* использование конфигурации SOCKS5 также для загрузки удаленных изображений в HTML-почте
+* исправление ошибок
+* обновление переводов и локальной справки
+* обновление до core112.8
diff --git a/metadata/ru/changelogs/6584.txt b/metadata/ru/changelogs/6584.txt
new file mode 100644
index 000000000..d15fab295
--- /dev/null
+++ b/metadata/ru/changelogs/6584.txt
@@ -0,0 +1,6 @@
+* новые API webxdc: importFiles() и sendToChat()
+* убрано верхнее ограничение на размер вложений
+* экономия трафика и памяти: перекодировка больших PNG и других поддерживаемых форматов изображений (большие JPEG всегда перекодировались; изображения, отправленные как "Файл", по-прежнему не записываются или изменяются иным образом)
+* экономия локального хранилища: сжимать HTML-письма в базе данных
+* улучшение согласованности членства в группах
+* множество исправлений ошибок
diff --git a/metadata/ru/changelogs/6594.txt b/metadata/ru/changelogs/6594.txt
new file mode 100644
index 000000000..0fe3c92c8
--- /dev/null
+++ b/metadata/ru/changelogs/6594.txt
@@ -0,0 +1,5 @@
+* используйте редактор изображений для выбора аватара, когда это возможно
+* улучшить экран загрузки в темном режиме
+* обновить "проверенную иконку"
+* добавлен перевод Лури Бахтиари, обновлены другие переводы
+* множество исправлений ошибок
diff --git a/metadata/ru/changelogs/6600.txt b/metadata/ru/changelogs/6600.txt
new file mode 100644
index 000000000..0fe3c92c8
--- /dev/null
+++ b/metadata/ru/changelogs/6600.txt
@@ -0,0 +1,5 @@
+* используйте редактор изображений для выбора аватара, когда это возможно
+* улучшить экран загрузки в темном режиме
+* обновить "проверенную иконку"
+* добавлен перевод Лури Бахтиари, обновлены другие переводы
+* множество исправлений ошибок
diff --git a/metadata/ru/changelogs/6744.txt b/metadata/ru/changelogs/6744.txt
new file mode 100644
index 000000000..39ce66825
--- /dev/null
+++ b/metadata/ru/changelogs/6744.txt
@@ -0,0 +1,6 @@
+- Чаты один на один гарантируют сквозное шифрование для контактов, отмеченных зеленым флажком.
+- Для простоты everyone\ мы также помечаем эти чаты зелеными галочками.
+- Группы создаются автоматически с гарантированным сквозным шифрованием, если это возможно
+- Принятые/заблокированные, архивированные, прикрепленные, отключенные синхронизируются на всех ваших устройствах.
+- Улучшения в камере, голосовых сообщениях, резервном копировании, считывателе экрана, обоях для каждого аккаунта, галерее "Выделить все", ландшафте webxdc
+- Множество исправлений ошибок
diff --git a/metadata/ru/changelogs/6754.txt b/metadata/ru/changelogs/6754.txt
new file mode 100644
index 000000000..39ce66825
--- /dev/null
+++ b/metadata/ru/changelogs/6754.txt
@@ -0,0 +1,6 @@
+- Чаты один на один гарантируют сквозное шифрование для контактов, отмеченных зеленым флажком.
+- Для простоты everyone\ мы также помечаем эти чаты зелеными галочками.
+- Группы создаются автоматически с гарантированным сквозным шифрованием, если это возможно
+- Принятые/заблокированные, архивированные, прикрепленные, отключенные синхронизируются на всех ваших устройствах.
+- Улучшения в камере, голосовых сообщениях, резервном копировании, считывателе экрана, обоях для каждого аккаунта, галерее "Выделить все", ландшафте webxdc
+- Множество исправлений ошибок
diff --git a/metadata/ru/changelogs/6774.txt b/metadata/ru/changelogs/6774.txt
new file mode 100644
index 000000000..77cb66375
--- /dev/null
+++ b/metadata/ru/changelogs/6774.txt
@@ -0,0 +1,6 @@
+- синхронизируйте изменения опций "Имя вашего профиля", "Показывать письма класса", "Прочитать квитанции" на разных устройствах
+- снято ограничение на размер .xdc для приемников
+- исправление ошибок входа в систему для провайдеров 163.com
+- исправить ошибки расшифровки при использовании нескольких закрытых ключей
+- исправление ошибок блокировки базы данных при обновлении webxdc
+- обновление переводов
diff --git a/metadata/ru/changelogs/6804.txt b/metadata/ru/changelogs/6804.txt
new file mode 100644
index 000000000..fd7ff7335
--- /dev/null
+++ b/metadata/ru/changelogs/6804.txt
@@ -0,0 +1,8 @@
+- "Реакции": долгое нажатие на сообщение, чтобы отреагировать на него.
+- Если вы не можете сканировать QR-коды, поделитесь ими как "пригласительными ссылками".
+- Непрочитанные сообщения всех аккаунтов теперь подсчитываются и отображаются в заголовке
+- Убрано ограничение на отправку Webxdc
+- Длительное нажатие на элементы списка чатов теперь позволяет отключать/включать чаты напрямую
+- Запрос секрета разблокировки системы перед открытием "Пароль и аккаунт"
+- Новая опция "Настройки / Дополнительно / Прочитать адресную книгу системы"
+- Множество исправлений ошибок
diff --git a/metadata/ru/full_description.txt b/metadata/ru/full_description.txt
new file mode 100644
index 000000000..473bd9b62
--- /dev/null
+++ b/metadata/ru/full_description.txt
@@ -0,0 +1,19 @@
+Delta Chat — это чат-приложение, полностью совместимое с существующей
+инфраструктурой электронной почты.
+
+Таким образом, с Delta Chat вы получаете удобство использования мессенджеров и доступность
+электроннай почты. Более того, вы независимы от других компаний или сервисов, поскольку ваши
+данные не связаны с Delta Chat, вы даже не будете добавлять сюда новые зависимости.
+
+Краткий обзор некоторых функций:
+
+* Безопасность с помощью автоматического сквозного шифрования поддерживающему новый стандарт Autocrypt
+* Быстрота благодаря использованию Push-IMAP
+* Самая большая база пользователей: можно связаться и с теми, кто не использует Delta Chat
+* Совместимость - не только этот чат с самим с собой
+* Элегантный и простой пользовательский интерфейс
+* Распределенная система
+* Никакого спама — по умолчанию отображаются только сообщения известных пользователей
+* Надежный — безопасно для профессионального использования
+* Заслуживающий доверия – можно использовать даже для деловых сообщений
+* Полностью открытый исходный код и основанный на стандартах
diff --git a/metadata/ru/short_description.txt b/metadata/ru/short_description.txt
index aa841299f..b7d2c56ab 100644
--- a/metadata/ru/short_description.txt
+++ b/metadata/ru/short_description.txt
@@ -1 +1 @@
-Мгновенно общайтесь по электронной почте
+Мгновенно общайтесь по электронной почте. Конфиденциально по дизайну.
diff --git a/metadata/ru/title.txt b/metadata/ru/title.txt
new file mode 100644
index 000000000..97cecc272
--- /dev/null
+++ b/metadata/ru/title.txt
@@ -0,0 +1 @@
+Delta Chat
diff --git a/metadata/zh-CN/changelogs/6444.txt b/metadata/zh-CN/changelogs/6444.txt
new file mode 100644
index 000000000..6bb5cf753
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6444.txt
@@ -0,0 +1,10 @@
+当传统电子邮件用户向群组发送邮件并添加新收件人时,这些新收件人将成为群组成员。
+将来自传统电子邮件用户的附带PGP密钥视为倾向于互相加密的信号。
+将来自传统电子邮件用户的加密或签名消息视为倾向于互相加密的信号。
+修复旧数据库的迁移问题。
+修复:仅在聊天已被其他成员知晓的情况下发送临时计时器变更消息。
+修复:使用相对路径访问数据库,以避免在迁移到其他设备或路径时出现问题。
+修复通过SOCKS5的IMAP连接的读写超时问题。
+修复:如果没有修改任何字符,则不发送“群组名称变更”信息。
+新增希腊语翻译,更新其他语言翻译。
+更新至core104版本。
diff --git a/metadata/zh-CN/changelogs/6464.txt b/metadata/zh-CN/changelogs/6464.txt
new file mode 100644
index 000000000..c84a00a2c
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6464.txt
@@ -0,0 +1,13 @@
+修复:使归档的对话可见,这些对话不会自动解除归档(静音的对话):添加未读计数器并将归档移至顶部
+修复:直接发送AVIF、HEIC、TXT、PPT、XLS、XML等格式的文件,不进行转换
+修复:当获取现有消息失败时触发重新连接
+修复:在消息获取失败后不再重试,以防止无限重新连接循环
+修复:如果消息已加密但未签名,不再添加错误提示
+修复:不再从消息行首删除前导空格
+修复发送引用文本时的边缘情况问题
+修复STARTTLS连接问题
+修复:不将无效的电子邮件地址视为异常处理
+修复:及时清理在1.34.8版本中引入的相对数据库路径问题
+加快聊天列表和联系人列表的更新速度
+更新翻译
+更新至core106版本
diff --git a/metadata/zh-CN/changelogs/6494.txt b/metadata/zh-CN/changelogs/6494.txt
new file mode 100644
index 000000000..b23796a12
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6494.txt
@@ -0,0 +1,5 @@
+* 在“添加账户”和“配置”中增加SOCKS5代理选项
+* 引入DNS缓存功能:如果网络中的DNS服务停止工作,Delta Chat仍能通过使用先前的IP地址成功连接到IMAP服务器
+* 显示完整邮件内容:不自动加载远程内容以请求
+* 修复多种错误并增强日志记录功能
+* 更新翻译内容
diff --git a/metadata/zh-CN/changelogs/6504.txt b/metadata/zh-CN/changelogs/6504.txt
new file mode 100644
index 000000000..4be5f5291
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6504.txt
@@ -0,0 +1,8 @@
+* 添加第二台设备到账号的新简便方法:安装后选择“作为第二台设备添加”,然后扫描第一台设备上的二维码
+* 查看所有聊天中的“所有媒体”
+* 新增“清空聊天”选项
+* 为所有账号显示通知
+* 在“显示完整消息”中更好地利用深色/浅色模式
+* 在应用信息消息旁显示图标
+* 通过缓存SMTP和IMAP连接的DNS结果以提高对解析中断的处理能力
+* 加速并提升了可靠性的改进与修复
diff --git a/metadata/zh-CN/changelogs/6514.txt b/metadata/zh-CN/changelogs/6514.txt
new file mode 100644
index 000000000..d1a5cb170
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6514.txt
@@ -0,0 +1,8 @@
+* 在使用“设置/添加第二台设备”设置好第二台设备后,添加一条设备添加消息
+* 显著加快“作为第二台设备添加”在接收端的连接时间
+* 如有可能,在扫描“添加第二台设备”二维码后直接显示Wi-Fi名称
+* 修复“添加第二台设备”立即重启的问题
+* 修复:在“所有媒体”视图中不只显示已删除的媒体
+* 修复:在“添加第二台设备”后如有需要则更新数据库
+* 更新翻译内容和本地帮助文档
+* 更新至core112.6版本
diff --git a/metadata/zh-CN/changelogs/6534.txt b/metadata/zh-CN/changelogs/6534.txt
new file mode 100644
index 000000000..c3ee16c7a
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6534.txt
@@ -0,0 +1,6 @@
+* 根据系统主题自动选择浅色/深色模式启动
+* 修复一对一聊天中的验证图标问题
+* 修正因在长IMAP响应中错误的EOF检测导致的获取错误
+* 更多错误修复
+* 更新翻译内容和本地帮助文档
+* 更新至core112.7版本
diff --git a/metadata/zh-CN/changelogs/6544.txt b/metadata/zh-CN/changelogs/6544.txt
new file mode 100644
index 000000000..7836dbb48
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6544.txt
@@ -0,0 +1,4 @@
+* 将SOCKS5配置来也用来加载HTML邮件中的远程图片
+* 错误修复
+* 更新翻译内容和本地帮助文档
+* 更新至core112.8版本
diff --git a/metadata/zh-CN/changelogs/6584.txt b/metadata/zh-CN/changelogs/6584.txt
new file mode 100644
index 000000000..7b9c6ff4c
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6584.txt
@@ -0,0 +1,6 @@
+* 新的Webxdc API:importFiles()和sendToChat()
+* 移除附件的大小限制
+* 节省流量和存储空间:对大的PNG及其他受支持的图像格式进行重新编码(大的JPEG文件一直都会被重新编码;以“文件”形式发送的图像仍不会被重新编码或以其他方式改变)
+* 节省本地存储空间:对数据库中的HTML邮件进行压缩
+* 提升群组成员身份一致性
+* 大量错误修复
diff --git a/metadata/zh-CN/changelogs/6594.txt b/metadata/zh-CN/changelogs/6594.txt
new file mode 100644
index 000000000..704d1c78e
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6594.txt
@@ -0,0 +1,5 @@
+* 在可能的情况下,使用图像编辑器来选择头像
+* 改进深色模式下的加载屏幕显示效果
+* 更新“已验证图标”
+* 添加卢尔语(Luri) 巴克提尔利语(Bakhtiari)语翻译,更新其他语言翻译
+* 大量错误修复
diff --git a/metadata/zh-CN/changelogs/6600.txt b/metadata/zh-CN/changelogs/6600.txt
new file mode 100644
index 000000000..704d1c78e
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6600.txt
@@ -0,0 +1,5 @@
+* 在可能的情况下,使用图像编辑器来选择头像
+* 改进深色模式下的加载屏幕显示效果
+* 更新“已验证图标”
+* 添加卢尔语(Luri) 巴克提尔利语(Bakhtiari)语翻译,更新其他语言翻译
+* 大量错误修复
diff --git a/metadata/zh-CN/changelogs/6744.txt b/metadata/zh-CN/changelogs/6744.txt
new file mode 100644
index 000000000..7835ccb98
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6744.txt
@@ -0,0 +1,6 @@
+- 现在一对一聊天为保证了端到端的加密的联系人使用绿色对勾标记
+- 为了简化每个人的体验,我们也用绿色对勾标记这些聊天
+- 如有可能,群聊会自动创建并尽可能保证端到端的加密
+- 接受/屏蔽、已存档、置顶、静音状态在您所有设备间同步
+- 相机、语音消息、备份全部、屏幕阅读器、每个账户单独的壁纸、相册全选、Webxdc横屏模式等方面有更多的改进
+- 大量的错误修复
diff --git a/metadata/zh-CN/changelogs/6754.txt b/metadata/zh-CN/changelogs/6754.txt
new file mode 100644
index 000000000..7835ccb98
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6754.txt
@@ -0,0 +1,6 @@
+- 现在一对一聊天为保证了端到端的加密的联系人使用绿色对勾标记
+- 为了简化每个人的体验,我们也用绿色对勾标记这些聊天
+- 如有可能,群聊会自动创建并尽可能保证端到端的加密
+- 接受/屏蔽、已存档、置顶、静音状态在您所有设备间同步
+- 相机、语音消息、备份全部、屏幕阅读器、每个账户单独的壁纸、相册全选、Webxdc横屏模式等方面有更多的改进
+- 大量的错误修复
diff --git a/metadata/zh-CN/changelogs/6774.txt b/metadata/zh-CN/changelogs/6774.txt
new file mode 100644
index 000000000..7c5d1a43b
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6774.txt
@@ -0,0 +1,6 @@
+- 在设备间同步“您的个人资料名称”、“显示组邮件”和“阅读回执”选项的更改
+- 取消对.xdc文件大小的接收方限制
+- 修复针对如163.com等提供商的登录错误
+- 修复在使用多个私钥时的解密错误
+- 修复在webxdc更新时的数据库锁定错误
+- 更新翻译内容
diff --git a/metadata/zh-CN/changelogs/6804.txt b/metadata/zh-CN/changelogs/6804.txt
new file mode 100644
index 000000000..d5ff2f218
--- /dev/null
+++ b/metadata/zh-CN/changelogs/6804.txt
@@ -0,0 +1,8 @@
+- "反应功能":长按消息以作出回应
+- 如果无法扫描二维码,可以将它们分享为“邀请链接”
+- 现在,所有账户的未读消息会被计数并在标题中显示
+- 移除了Webxdc的发送限制
+- 长按聊天列表项现在可以直接使聊天静音/取消静音
+- 在打开“密码与账户”前,会要求输入系统解锁密码
+- 新选项:“设置/高级/读取系统通讯录”
+- 大量错误修复
diff --git a/metadata/zh-CN/full_description.txt b/metadata/zh-CN/full_description.txt
new file mode 100644
index 000000000..207a69294
--- /dev/null
+++ b/metadata/zh-CN/full_description.txt
@@ -0,0 +1,16 @@
+Delta Chat 是一款完全兼容现有电子邮件基础设施的即时通讯应用程序。
+
+因此,使用 Delta Chat,您既能享受到知名即时通讯软件的便捷性,又能拥有电子邮件的广泛可达性。此外,您将独立于其他公司或服务——因为您的数据不依赖于 Delta Chat,您在这里也不会增加新的依赖关系。
+
+部分功能亮点包括:
+
+* 安全性:自动端到端加密,并支持最新的Autocrypt标准
+* 速度:通过Push-IMAP技术实现快速通信
+* 最大用户基数:未使用 Delta Chat 的接收者也能顺利接收到信息
+* 兼容性强:不仅限于 Delta Chat 用户之间的交流
+* 优雅且简单的用户界面
+* 分布式系统
+* 无垃圾邮件:默认仅显示已知联系人的消息
+* 可靠性高:适合专业用途
+* 值得信赖:可用于商业信息交流
+* 完全开源且基于标准构建
diff --git a/metadata/zh-CN/short_description.txt b/metadata/zh-CN/short_description.txt
index 2e155880a..37cebb4b2 100644
--- a/metadata/zh-CN/short_description.txt
+++ b/metadata/zh-CN/short_description.txt
@@ -1 +1 @@
-通过电子邮件进行即时通信
+通过电子邮件进行即时通信。经典优雅,去中心化且开源。保护隐私。
diff --git a/metadata/zh-CN/title.txt b/metadata/zh-CN/title.txt
new file mode 100644
index 000000000..97cecc272
--- /dev/null
+++ b/metadata/zh-CN/title.txt
@@ -0,0 +1 @@
+Delta Chat
diff --git a/metadata/zh-TW/short_description.txt b/metadata/zh-TW/short_description.txt
index 7b2b6d58b..4d9659779 100644
--- a/metadata/zh-TW/short_description.txt
+++ b/metadata/zh-TW/short_description.txt
@@ -1 +1 @@
-通過電子郵件即時通信
+透過電子郵件聊天。優雅復古、去中心化而且開源。隱私設計。
diff --git a/metadata/zh-TW/title.txt b/metadata/zh-TW/title.txt
new file mode 100644
index 000000000..97cecc272
--- /dev/null
+++ b/metadata/zh-TW/title.txt
@@ -0,0 +1 @@
+Delta Chat
diff --git a/res/drawable-hdpi/ic_location_on_white_48dp.png b/res/drawable-hdpi/ic_location_on_white_48dp.png
deleted file mode 100755
index d226e78f1..000000000
Binary files a/res/drawable-hdpi/ic_location_on_white_48dp.png and /dev/null differ
diff --git a/res/drawable-hdpi/ic_timeline.png b/res/drawable-hdpi/ic_timeline.png
deleted file mode 100755
index ec39d34d8..000000000
Binary files a/res/drawable-hdpi/ic_timeline.png and /dev/null differ
diff --git a/res/drawable-xhdpi/ic_timeline.png b/res/drawable-xhdpi/ic_timeline.png
deleted file mode 100755
index 35bbcf599..000000000
Binary files a/res/drawable-xhdpi/ic_timeline.png and /dev/null differ
diff --git a/res/drawable-xxhdpi/ic_timeline.png b/res/drawable-xxhdpi/ic_timeline.png
deleted file mode 100755
index b151d978a..000000000
Binary files a/res/drawable-xxhdpi/ic_timeline.png and /dev/null differ
diff --git a/res/drawable-xxxhdpi/ic_timeline.png b/res/drawable-xxxhdpi/ic_timeline.png
deleted file mode 100755
index bfe700020..000000000
Binary files a/res/drawable-xxxhdpi/ic_timeline.png and /dev/null differ
diff --git a/res/drawable/circle_touch_highlight_background_map.xml b/res/drawable/circle_touch_highlight_background_map.xml
deleted file mode 100644
index b610f0adb..000000000
--- a/res/drawable/circle_touch_highlight_background_map.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/drawable/divider_end.xml b/res/drawable/divider_end.xml
deleted file mode 100644
index 553712883..000000000
--- a/res/drawable/divider_end.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
diff --git a/res/drawable/divider_start.xml b/res/drawable/divider_start.xml
deleted file mode 100644
index 45500503b..000000000
--- a/res/drawable/divider_start.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
diff --git a/res/drawable/ic_location_dot.xml b/res/drawable/ic_location_dot.xml
deleted file mode 100644
index 7426bb67b..000000000
--- a/res/drawable/ic_location_dot.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/drawable/ic_location_poi_dot.xml b/res/drawable/ic_location_poi_dot.xml
deleted file mode 100644
index 81e5bf15e..000000000
--- a/res/drawable/ic_location_poi_dot.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/drawable/intro1.png b/res/drawable/intro1.png
deleted file mode 100644
index d44d2f9c8..000000000
Binary files a/res/drawable/intro1.png and /dev/null differ
diff --git a/res/drawable/map_bubble_add_poi.xml b/res/drawable/map_bubble_add_poi.xml
deleted file mode 100644
index ea2836da5..000000000
--- a/res/drawable/map_bubble_add_poi.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/layout/activity_map.xml b/res/layout/activity_map.xml
deleted file mode 100644
index 940c3f623..000000000
--- a/res/layout/activity_map.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/res/layout/add_poi_view.xml b/res/layout/add_poi_view.xml
deleted file mode 100644
index 6f6e59398..000000000
--- a/res/layout/add_poi_view.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/res/layout/bottom_map_sheet.xml b/res/layout/bottom_map_sheet.xml
deleted file mode 100644
index 1d1868ade..000000000
--- a/res/layout/bottom_map_sheet.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/layout/map_bubble_layout.xml b/res/layout/map_bubble_layout.xml
deleted file mode 100644
index 8b4b5a00d..000000000
--- a/res/layout/map_bubble_layout.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/res/menu/conversation_list.xml b/res/menu/conversation_list.xml
deleted file mode 100644
index 072990723..000000000
--- a/res/menu/conversation_list.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
\ No newline at end of file
diff --git a/res/menu/conversation_list_batch_archive.xml b/res/menu/conversation_list_batch_archive.xml
deleted file mode 100644
index 678ebc1c5..000000000
--- a/res/menu/conversation_list_batch_archive.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
\ No newline at end of file
diff --git a/res/menu/conversation_list_batch_pin.xml b/res/menu/conversation_list_batch_pin.xml
deleted file mode 100644
index 36236cfc0..000000000
--- a/res/menu/conversation_list_batch_pin.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
\ No newline at end of file
diff --git a/res/menu/conversation_list_batch_unarchive.xml b/res/menu/conversation_list_batch_unarchive.xml
deleted file mode 100644
index 835f26eac..000000000
--- a/res/menu/conversation_list_batch_unarchive.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
\ No newline at end of file
diff --git a/res/menu/qr_scan.xml b/res/menu/qr_scan.xml
deleted file mode 100644
index a6ee5a836..000000000
--- a/res/menu/qr_scan.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
deleted file mode 100644
index 03e7c3761..000000000
--- a/res/values-hu/strings.xml
+++ /dev/null
@@ -1,311 +0,0 @@
-
-
-
- Delta Chat
- OK
- Mégse
- Igen
- Nem
- Be
- Ki
- Alapértelmezett
- Egyéni
- Egyik sem
- Automatikus
- Szigorú
- Megnyitás
- Törlés
- Infó
- Emoji
- Továbbítás
- Némítás
- Eltűnő üzenetek
- Mentés
- Média
- Most nem
- Soha
- Egy pillanat...
- Kész
- Visszavonás
-
- Tovább
- Hiba
- Hiba: %1$s
- Nincs böngésző telepítve.
- %1$s nem található.
- Vágólapra másolva.
- Partnerek
- E-mail cím
- Rossz e-mail cím.
- Jelszó
- Most
- Ma
- Tegnap
- Ezen a héten
- Ebben a hónapban
- Múlt héten
- Múlt hónapban
-
-
- %d perce
- %d perce
-
-
-
- %d órája
- %d órája
-
-
- %d beszélgetés
- %d beszélgetés
-
-
- %d partner
- %d partner
-
-
- %d üzenet
- %d üzenet
-
-
- %d tag
- %d tag
-
- Én
- Piszkozat
- Kép
- Gif
- Képek
- Hang
- Hangüzenet
- Továbbított üzenet
- Videó
- Dokumentumok
- Névjegy
- Kamera
- Hely
- Galéria
- Fájl
- Ismeretlen
-
- Zöld
- Piros
- Kék
- Narancs
- Cián
- Lila
- Magenta
- Fehér
-
- Kicsi
- Normál
- Nagy
- Nagyon nagy
-
- Gyors
- Lassú
-
-
- Új partner
- Új beszélgetés
- Új csoport
- Küldés
- Emoji billentyűzet kapcsoló
- Csoport szerkesztése
- Csoportnév és -kép
- Minden hely megjelenítése
- Beszélgetés archiválása
- Archiválás visszavonása
- Fájl csatolása
- Csoport elhagyása
- Beszélgetés törlése
- Üzenetek törlése
- Törlöd ezt a helyszínt?
- Üzenet részletei
- Vágólapra másolás
- Üzenet továbbítása
- Válasz az üzenetre
- Értesítések némítása
- Némítás kikapcsolása
- Csatolmány exportálása
- Minden média
- Megosztás
- Partner letiltása
- Tiltás visszavonása
- Lejátszás
- Szünet
- Ugrás az aljára
- Ugrás a tetejére
- Segítség
- Összes kiválasztása
- Név módosítása
- Beállítások
- Haladó
- Profil megtekintése
- Naplófájl mentése
- Hely megosztása a csoport összes tagjával
- Némítás 1 órára
- Némítás 2 órára
- Némítás 1 napra
- Némítás 7 napra
- Némítás örökre
-
- 5 percig
- 30 percig
- 1 óráig
- 2 óráig
- 6 óráig
-
-
- Biztosan ki akarsz lépni a csoportból?
- Továbbítod az üzenetet %1$s részére?
- Beszélgetést indítasz %1$s partnerrel?
-
- Kiveszed a csoportból %1$s partnert?
-
- Kontaktok
- Még nincs partner.
-
-
-
-
- %d beszélgetés archiválva
- %d beszélgetés archiválva
-
- Archivált beszélgetések
-
- %d új üzenet
- %d új üzenet
-
- Írj egy kezdőüzenetet, hogy a többiek válaszolhassanak a csoportban.\n\n• Nincs gond, ha nem használja minden tag a Delta Chatet.\n\n• Az első üzenet kézbesítése kicsit lassabb lehet.
- Visszavonás csúsztatással
- Üres a postaláda.\nNyomd meg a \"+\" gombot új beszélgetés indításához.
- Minden csevegés archiválva van.\nNyomd meg a \"+\" gombot új beszélgetés indításához.
- Megosztás
- Üzenet
- Archivált
- Nincs üzenet.
- Magamnak küldött üzenetek
-
- Keresés
-
- Csoportnév
- Csoportkép
- Csoport készítése
- Nevezd el a csoportot.
- Tagok felvétele
- A csoport tagjának kell lenned, hogy ezt megtehesd.
- Titkosítás
- Névjegy
- Csoport
- Galéria
- Dokumentumok
- Linkek
- Térkép
- Média előnézete
- Ismert e-mail szolgáltató esetén az alábbi beállításokat automatikusan meghatározzuk. Előfordulhat, hogy az IMAP/SMTP szolgáltatást az email fiókod webes felületén engedélyezni kell.\n\nHa nem megy, kérj segítséget a szolgáltatótól vagy a barátaidtól.
- Bejövő
- IMAP bejelentkezési név
- IMAP kiszolgáló
- IMAP port
- IMAP biztonság
- Kimenő
- SMTP bejelentkezési név
- SMTP jelszó
- SMTP kiszolgáló
- SMTP port
- Biztonsági mentés importálása
-
-
- Továbbítás…
- Profilod adatai
- Profilkép
- Letiltott partnerek
- Neved
-
- A Delta Chat Messengeremmel küldtem: https://delta.chat
- Küldés \"enterrel\"
- Rezgés
- Képernyőbiztonság
-
- Képernyőképek készítésének blokkolása a futó alkalmazások listájában és az alkalmazáson belül
- Értesítések
- Megjelenítés
- Prioritás
- LED színe
- Hang
- Csendes
- Privacy
- Csevegések és média
- Alapbeállítás
-
- Világos
- Sötét
- Megjelenés
- Sötét
- Nyelv
- Inkognitó billentyűzet
-
- Tanulás letiltásának kérése a billentyűzettől (személyre szabás kikapcsolása)
- Olvasási nyugták
- Ha az olvasási nyugták le vannak tiltva, te sem fogod látni mások olvasási nyugtáit.
- Privát kulcsok kezelése
- Rendszer emojik használata
- A Delta Chat beépített emoji-támogatásának letiltása
- Alkalmazás hozzáférés
- Csevegések
- Csevegésen belüli hangok
- Üzenetek betűmérete
- Egyéb
- Biztonsági mentés
- Privát kulcsok kezelése
- Privát kulcsok exportálása
- Privát kulcsok importálása
-
- Beszélgetés háttere
- Galériából
- Mind
- Újra
-
- QR-kód
- QR-kód olvasása
- Ujjlenyomat.
- %1$s csatlakozik.
- %1$s ellenőrizve.
- %1$s csatlakozott a csoporthoz.
- %1$s ellenőrizve.
- %1$s nem ellenőrizhető
- Válasz
- Új üzenet
- Magas
- Hangjelzés legfeljebb
- Név és üzenet
- Csak név
- Se név, se üzenet
-
- Engedély szükséges
- Folytatás
-
- Titkosított üzenet
-
- Üdvözöl a Delta Chat!
- Válassz nyelvet...
- Fájl
- Kilépés
- Szerkesztés
- Visszavonás
- Újra
- Kivágás
- Másolás
- Beillesztés
- Nézet
- Súgó
- Válassz ki egy beszélgetést vagy indíts egy újat
- További információ
- Eltávolítás
- Mentés
- Név
- Biztonsági mentés exportálása
- Naplófájlok könyvtárának megnyitása
- Jelenlegi naplófájl megnyitása
-
diff --git a/scripts/add-language.sh b/scripts/add-language.sh
index c44b4fb77..57fe38791 100755
--- a/scripts/add-language.sh
+++ b/scripts/add-language.sh
@@ -7,18 +7,19 @@ then
fi
LANG=$1
+RES=src/main/res
-mkdir res/values-$LANG/
+mkdir $RES/values-$LANG/
-cp res/values/strings.xml res/values-$LANG/strings.xml
+cp $RES/values/strings.xml $RES/values-$LANG/strings.xml
# set time to old date because transifex may have different file times
# and does not overwrite old file
# (using -t as sth. as -d "100 days ago" does not work on mac)
-touch -t 201901010000 res/values-$LANG/strings.xml
+touch -t 201901010000 $RES/values-$LANG/strings.xml
-echo "res/values-$LANG/strings.xml added:"
-echo "- add the name to res/values/arrays.xml"
+echo "$RES/values-$LANG/strings.xml added:"
+echo "- add the name to $RES/values/arrays.xml"
echo "- if needed, language mappings can be added to .tx/config"
echo "- pull translations using ./scripts/tx-pull-translations.sh"
echo " (on problems, 'tx -d pull' gives verbose output)"
diff --git a/scripts/check-translations.sh b/scripts/check-translations.sh
index 501caeb89..ffe5abd7d 100755
--- a/scripts/check-translations.sh
+++ b/scripts/check-translations.sh
@@ -1,20 +1,22 @@
echo potential errors, if any:
+RES=./src/main/res
+
# a space after the percent sign
# results in an IllegalFormatException in getString()
-grep --include='strings.xml' -r '\% [12]' ./res/
-grep --include='strings.xml' -r '\%[$]' ./res/
-grep --include='strings.xml' -r '\$ ' ./res/
-grep --include='strings.xml' -r ' \$' ./res/
+grep --include='strings.xml' -r '\% [12]' $RES
+grep --include='strings.xml' -r '\%[$]' $RES
+grep --include='strings.xml' -r '\$ ' $RES
+grep --include='strings.xml' -r ' \$' $RES
# check for broken usage of escape sequences:
# - alert on `\ n`, `\ N`, `\n\Another paragraph` and so on
# - allow only `\n`, `\"`, `\'` and `\’`
# (`’` might not be escaped, but it is done often eg. in "sq", so we allow that for now)
-grep --include='strings.xml' -r "\\\\[^n\"'’]" ./res/
+grep --include='strings.xml' -r "\\\\[^n\"'’]" $RES
# check for usage of a single `&` - this has to be an `&`
-grep --include='strings.xml' -r "&[^a]" ./res/
+grep --include='strings.xml' -r "&[^a]" $RES
# single is not needed - and not allowed in xml, leading to error "matching end tag missing"
-grep --include='strings.xml' -r " "
exit
fi
@@ -16,5 +16,9 @@ grep --exclude=*.strings --exclude-dir={.git,libraries,Pods,deltachat-ios.xcodep
echo "==================== DESKTOP USAGE ===================="
grep --exclude-dir={.cache,.git,html-dist,node_modules,_locales} -ri $TEXT ../deltachat-desktop/
-echo "==================== NODE USAGE ===================="
-grep --exclude-dir={.git} -ri $TEXT ../deltachat-core-rust/node
+echo "==================== JSONRPC USAGE ===================="
+grep --exclude-dir={.git} -ri $TEXT ../deltachat-core-rust/deltachat-jsonrpc
+
+echo "==================== UBUNTU TOUCH USAGE ===================="
+grep --exclude-dir={.git} -ri $TEXT ../deltatouch/
+
diff --git a/scripts/ndk-make.sh b/scripts/ndk-make.sh
index bd7820734..a874ad103 100755
--- a/scripts/ndk-make.sh
+++ b/scripts/ndk-make.sh
@@ -33,7 +33,7 @@
# deploy DeltaChat from the jni/deltachat-core-rust directory by
# typing `nmake`:
#
-# nmake() {(cd ../..; scripts/ndk-make.sh arm64-v8a && ./gradlew installFatDebug; notify-send "install finished")}
+# nmake() {(cd ../..; scripts/ndk-make.sh arm64-v8a && ./gradlew installFossDebug; notify-send "install finished")}
#
#
# If anything doesn't work, please open an issue!!
diff --git a/scripts/rust-toolchain b/scripts/rust-toolchain
index 0834888f5..79e15fd49 100644
--- a/scripts/rust-toolchain
+++ b/scripts/rust-toolchain
@@ -1 +1 @@
-1.72.0
+1.77.0
diff --git a/scripts/tx-pull-source.sh b/scripts/tx-pull-source.sh
index 247ca5a82..6bf99aa16 100755
--- a/scripts/tx-pull-source.sh
+++ b/scripts/tx-pull-source.sh
@@ -1,4 +1,5 @@
+RES=src/main/res
tx pull -l en
-mv res/values-en/strings.xml res/values/strings.xml
-rmdir res/values-en
+mv $RES/values-en/strings.xml $RES/values/strings.xml
+rmdir $RES/values-en
./scripts/check-translations.sh
diff --git a/scripts/tx-push-source.sh b/scripts/tx-push-source.sh
index 6c6e5c81a..10fe83bc2 100755
--- a/scripts/tx-push-source.sh
+++ b/scripts/tx-push-source.sh
@@ -1,3 +1,3 @@
-read -p "Push res/values/strings.xml to transifex? Press ENTER to continue, CTRL-C to abort."
+read -p "Push src/main/res/values/strings.xml to transifex? Press ENTER to continue, CTRL-C to abort."
tx push -s
./scripts/check-translations.sh
diff --git a/scripts/upload-beta.sh b/scripts/upload-beta.sh
index 3e95245db..2c094a809 100755
--- a/scripts/upload-beta.sh
+++ b/scripts/upload-beta.sh
@@ -15,7 +15,7 @@ if [[ ${VERSION:0:1} == "v" ]]; then
fi
APKGPLAY="gplay/release/deltachat-gplay-release-$VERSION.apk"
-APKDEV="build/outputs/apk/fat/debug/deltachat-fat-debug-$VERSION.apk"
+APKDEV="build/outputs/apk/foss/debug/deltachat-foss-debug-$VERSION.apk"
ls -l $APKGPLAY
ls -l $APKDEV
read -p "upload these apks to download.delta.chat/android/beta? ENTER to continue, CTRL-C to abort."
@@ -28,7 +28,7 @@ echo "upload done."
echo ""
echo "and now: here is Delta Chat $VERSION - choose your flavour and mind your backups:"
echo "- 🍋 https://download.delta.chat/android/beta/deltachat-gplay-release-$VERSION.apk (android, overwrites existing gplay installs, should keep data)"
-echo "- 🍉 https://download.delta.chat/android/beta/deltachat-fat-debug-$VERSION.apk (android, can be installed beside gplay)"
+echo "- 🍉 https://download.delta.chat/android/beta/deltachat-foss-debug-$VERSION.apk (android, fully FOSS, can be installed beside gplay)"
echo "- 🍏 https://testflight.apple.com/join/uEMc1NxS (ios, update to $VERSION may take a day or so)"
echo ""
echo "what to test: PLEASE_FILL_OUT"
diff --git a/androidTest/com/b44t/messenger/TestUtils.java b/src/androidTest/java/com/b44t/messenger/TestUtils.java
similarity index 100%
rename from androidTest/com/b44t/messenger/TestUtils.java
rename to src/androidTest/java/com/b44t/messenger/TestUtils.java
diff --git a/androidTest/com/b44t/messenger/uibenchmarks/EnterChatsBenchmark.java b/src/androidTest/java/com/b44t/messenger/uibenchmarks/EnterChatsBenchmark.java
similarity index 100%
rename from androidTest/com/b44t/messenger/uibenchmarks/EnterChatsBenchmark.java
rename to src/androidTest/java/com/b44t/messenger/uibenchmarks/EnterChatsBenchmark.java
diff --git a/androidTest/com/b44t/messenger/uitests/offline/ForwardingTest.java b/src/androidTest/java/com/b44t/messenger/uitests/offline/ForwardingTest.java
similarity index 100%
rename from androidTest/com/b44t/messenger/uitests/offline/ForwardingTest.java
rename to src/androidTest/java/com/b44t/messenger/uitests/offline/ForwardingTest.java
diff --git a/androidTest/com/b44t/messenger/uitests/offline/SharingTest.java b/src/androidTest/java/com/b44t/messenger/uitests/offline/SharingTest.java
similarity index 100%
rename from androidTest/com/b44t/messenger/uitests/offline/SharingTest.java
rename to src/androidTest/java/com/b44t/messenger/uitests/offline/SharingTest.java
diff --git a/androidTest/com/b44t/messenger/uitests/online/OnboardingTest.java b/src/androidTest/java/com/b44t/messenger/uitests/online/OnboardingTest.java
similarity index 100%
rename from androidTest/com/b44t/messenger/uitests/online/OnboardingTest.java
rename to src/androidTest/java/com/b44t/messenger/uitests/online/OnboardingTest.java
diff --git a/src/com/b44t/messenger/DcArray.java b/src/com/b44t/messenger/DcArray.java
deleted file mode 100644
index c9d50ccb9..000000000
--- a/src/com/b44t/messenger/DcArray.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.b44t.messenger;
-
-public class DcArray {
-
- public DcArray(long arrayCPtr) {
- this.arrayCPtr = arrayCPtr;
- }
-
- @Override protected void finalize() throws Throwable {
- super.finalize();
- unrefArrayCPtr();
- arrayCPtr = 0;
- }
-
- public native int getCnt ();
- public native float getLatitude (int index);
- public native float getLongitude (int index);
- public native float getAccuracy (int index);
- public native long getTimestamp (int index);
- public native int getMsgId (int index);
- public native int getLocationId(int index);
- public native String getMarker (int index);
- public native boolean isIndependent(int index);
-
- // working with raw c-data
- private long arrayCPtr; // CAVE: the name is referenced in the JNI
- private native void unrefArrayCPtr();
-}
diff --git a/src/debug/README.md b/src/debug/README.md
deleted file mode 100644
index a259be6c6..000000000
--- a/src/debug/README.md
+++ /dev/null
@@ -1,12 +0,0 @@
-the main purpose of this directory is
-to define a different ic_launcher icon for the build-type 'debug'.
-
-the build-process seems to prefer files from /src/debug/res
-over the ones from the /res, not totally sure, however, it
-works :)
-
-btw the dev-icon is not available as vector graphic,
-the original source is in xxhdpi -
-all other resolutions are just scaled with gimp.
-
-via http://onebigfunction.com/android/2016/10/06/flavor-flav-android-product-flavors-explained/
diff --git a/src/foss/java/org/thoughtcrime/securesms/notifications/FcmReceiveService.java b/src/foss/java/org/thoughtcrime/securesms/notifications/FcmReceiveService.java
new file mode 100644
index 000000000..3aa3584cd
--- /dev/null
+++ b/src/foss/java/org/thoughtcrime/securesms/notifications/FcmReceiveService.java
@@ -0,0 +1,15 @@
+package org.thoughtcrime.securesms.notifications;
+
+import android.content.Context;
+import androidx.annotation.Nullable;
+
+/*
+ Fake do-nothing implementation of FcmReceiveService.
+ The real implementation is in the gplay flavor only.
+*/
+public class FcmReceiveService {
+ public static void register(Context context) {}
+ public static void waitForRegisterFinished() {}
+ public static void deleteToken() {}
+ @Nullable public static String getToken() { return null; }
+}
diff --git a/src/gplay/AndroidManifest.xml b/src/gplay/AndroidManifest.xml
new file mode 100644
index 000000000..f2f978857
--- /dev/null
+++ b/src/gplay/AndroidManifest.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/gplay/java/org/thoughtcrime/securesms/notifications/FcmReceiveService.java b/src/gplay/java/org/thoughtcrime/securesms/notifications/FcmReceiveService.java
new file mode 100644
index 000000000..b8e6bbbf0
--- /dev/null
+++ b/src/gplay/java/org/thoughtcrime/securesms/notifications/FcmReceiveService.java
@@ -0,0 +1,132 @@
+package org.thoughtcrime.securesms.notifications;
+
+import android.content.Context;
+import android.os.Build;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.WorkerThread;
+
+import com.google.android.gms.tasks.Tasks;
+import com.google.firebase.FirebaseApp;
+import com.google.firebase.messaging.FirebaseMessaging;
+import com.google.firebase.messaging.FirebaseMessagingService;
+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.util.Util;
+
+public class FcmReceiveService extends FirebaseMessagingService {
+ private static final String TAG = FcmReceiveService.class.getSimpleName();
+ private static final Object INIT_LOCK = new Object();
+ private static boolean initialized;
+ private static volatile boolean triedRegistering;
+ private static volatile String prefixedToken;
+
+ public static void register(Context context) {
+ if (Build.VERSION.SDK_INT < 19) {
+ Log.w(TAG, "FCM not available on SDK < 19");
+ triedRegistering = true;
+ return;
+ }
+
+ if (FcmReceiveService.prefixedToken != null) {
+ Log.i(TAG, "FCM already registered");
+ triedRegistering = true;
+ return;
+ }
+
+ Util.runOnAnyBackgroundThread(() -> {
+ final String rawToken;
+
+ try {
+ synchronized (INIT_LOCK) {
+ if (!initialized) {
+ // manual init: read tokens from `./google-services.json`;
+ // automatic init disabled in AndroidManifest.xml to skip FCM code completely.
+ FirebaseApp.initializeApp(context);
+ }
+ initialized = true;
+ }
+ rawToken = Tasks.await(FirebaseMessaging.getInstance().getToken());
+ } catch (Exception e) {
+ // we're here usually when FCM is not available and initializeApp() or getToken() failed.
+ Log.w(TAG, "cannot get FCM token for " + BuildConfig.APPLICATION_ID + ": " + e);
+ triedRegistering = true;
+ return;
+ }
+ if (TextUtils.isEmpty(rawToken)) {
+ Log.w(TAG, "got empty FCM token for " + BuildConfig.APPLICATION_ID);
+ triedRegistering = true;
+ return;
+ }
+
+ prefixedToken = addPrefix(rawToken);
+ Log.i(TAG, "FCM token: " + prefixedToken);
+ ApplicationContext.dcAccounts.setPushDeviceToken(prefixedToken);
+ triedRegistering = true;
+ });
+ }
+
+ // wait a until FCM registration got a token or not.
+ // we're calling register() pretty soon and getToken() pretty late on init,
+ // so usually, this should not block anything.
+ // still, waitForRegisterFinished() needs to be called from a background thread.
+ @WorkerThread
+ public static void waitForRegisterFinished() {
+ while (!triedRegistering) {
+ Util.sleep(100);
+ }
+ }
+
+ private static String addPrefix(String rawToken) {
+ return "fcm-" + BuildConfig.APPLICATION_ID + ":" + rawToken;
+ }
+
+ @Nullable
+ public static String getToken() {
+ return prefixedToken;
+ }
+
+ public static void deleteToken() {
+ if (prefixedToken == null) {
+ Log.i(TAG, "FCM not registered yet, no token to delete");
+ return;
+ }
+
+ Util.runOnAnyBackgroundThread(() -> {
+ try {
+ Tasks.await(FirebaseMessaging.getInstance().deleteToken());
+ prefixedToken = null;
+ Log.i(TAG, "FCM token deleted for " + BuildConfig.APPLICATION_ID);
+ } catch (Exception e) {
+ Log.e(TAG, "cannot delete FCM token for " + BuildConfig.APPLICATION_ID + ": " + e);
+ }
+ });
+ }
+
+ @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.
+ }
+
+ @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.
+ }
+
+ @Override
+ public void onNewToken(@NonNull String rawToken) {
+ prefixedToken = addPrefix(rawToken);
+ Log.i(TAG, "new FCM token: " + prefixedToken);
+ ApplicationContext.dcAccounts.setPushDeviceToken(prefixedToken);
+ }
+}
diff --git a/AndroidManifest.xml b/src/main/AndroidManifest.xml
similarity index 91%
rename from AndroidManifest.xml
rename to src/main/AndroidManifest.xml
index 815945e6e..fcb8b31af 100644
--- a/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -37,6 +37,9 @@
+
+
+
-
-
-
-
-
-
+ android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
@@ -382,6 +398,17 @@
+
+
+
+
+
+
+
Delta Chat je nový četovací messenger, který posílá zprávy přes e-mail, pokud možno zašifrované metodou Autocrypt.
-Netřeba žádného nového účtu. Pro Delta Chat prostě použijete ten, který už máte pro svůj e-mail.
+
Delta Chat is a reliable, decentralized and secure messaging app,
+available for mobile and desktop platforms.
+
+
Delta Chat feels like Whatsapp or Telegram but you can also use and regard it as an e-mail app.
+You can signup anonymously to a variety of interoperable chatmail servers
+which are minimal e-mail servers optimized for fast and secure operations.
+Or you may use classic e-mail servers and an existing e-mail account
+in which case Delta Chat acts as an e-mail app.
@@ -117,9 +134,15 @@
-
Delta Chatem můžete napsat na jakýkoli e-mail i v případě,
-že příjemce Delta Chat nepoužívá. Není nutné aby příjemce
-instaloval stejnou aplikaci jako vy, jak vyžadují ostatní četovací systémy.
+
To securely setup contact with others scan an invite QR code
+or share an invite link.
+This is required when using a (default) chatmail-based chat profile
+because chatmail servers reject un-encrypted outgoing messages.
+
+
If you create a chat profile with a classic e-mail address
+you may manually create a contact if you know their e-mail address
+and then write a message to them
+even if the recipient is not using Delta Chat.
@@ -130,42 +153,25 @@ instaloval stejnou aplikaci jako vy, jak vyžadují ostatní četovací systémy
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
At “Settings -> Chats &
-Media -> Show Classic E-Mails”, you can change this. You have these options:
-
-
-
“No, chats only”: Only messages sent by other Delta Chat users and replies to
-your Delta Chat messages are shown. This makes most sense if you use the same
-e-mail account for normal e-mails as well.
-
“All”: Delta Chat shows all e-mails that are sent to your email address. This
-makes sense if you want to use Delta Chat for all your e-mails, so no message
-gets lost. This is the default setting.
-
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
-you already have a chat, but new chats only pop up for Delta Chat messages.
-This helps to decide on a case-by-case basis whether you want to have a
-conversation in Delta Chat or in a “normal” e-mail app.
+
+
Anonymous chat profiles with fast, secure and interoperable chatmail servers
+which offer instant Push Notifications for iOS and Android devices.
+
+
+
Pervasive multi-profile and multi-device support on all platforms.
@@ -207,18 +213,25 @@ receive messages from this person, consider blocking them.
- How can I add or switch between multiple accounts?
+ What are profiles? How can I switch between them?
-
You can easily work with additional accounts on Delta Chat mobile and desktop clients by clicking either:
-
-
on the menu button and then ‘Switch Account’ (Android and desktop)
-
or the profile icon and then ‘Add Account’ (iOS)
-
+
A profile is a name, a picture and some additional information for encrypting messages.
+A profile lives on your device(s) only
+and uses a chatmail or a classic e-mail server to transport messages.
On first installation of Delta Chat a first profile is created.
+
+
Later, you can tap your profile image in the upper left corner to Add Profiles
+or to Switch Profiles.
+
+
You may want to use separate profiles for political, family or work related activities,
+or e. g. for a dedicated “spam-profile” with which you register at websites and platforms
+that tend to cause unsolicited messages (“spam”) sooner or later.
@@ -244,96 +257,26 @@ nebo přidáš nový vyfocením QR kódu, tyto kontakty automaticky uvidí tvůj
Profilový obrázek není posílán s každou zprávou, ale dostatečně často k tomu aby tvé kontakty zvuobdrželi obrázek i když začnou používat nové zařízení.
-
+
- Umí Delta Chat pracovat s e-maily v HTML?
+ Can I set a Signature Text/Status/Motto with Delta Chat?
-
Yes, incoming HTML messages come with a “Show full message” button.
-Outgoing messages always use plain text.
+
Yes,
+you can do so under “Settings > Profile > Signature Text”.
+Your contacts who use Delta Chat will see it
+when they view your contact details.
+To everyone else,
+It will appear as an e-mail signature
+below the text of all your messages.
-
+
- Proč musím Delta Chatu zadat mé e-mailové heslo? Je to bezpečné?
-
-
-
-
-
Podobně jako ostatní e-mailové programy, např. Thunderbird nebo Outlook,
-program potřebuje heslo k tomu aby mohl posílat e-maily. Samozřejmě, že
-heslo je uloženo pouze na tvém přístroji. Heslo je přenášeno pouze při přihlašení
-k e-mailovému serveru, který má i beztak přístup k tvým e-mailům.
-
-
Poskytovatelé e-mailu s podporou OAuth2, např. “gmail.com” či “yandex.ru”,
-nepotřebují při přihlašování tvé heslo. V takovém případě je uložen pouze
-vygenerovaný přístupový kód.
-
-
Delta Chat má otevřený zdrojový kód,
-ze kterého lze ověřit, že program s osobními daty zachází bezpečně. Jsme rádi
-za každou odezvu, která udělá Delta Chat bezpečnější pro všechny.
-
-
-
-
- Jaká oprávnění Delta Chat potřebuje?
-
-
-
-
-
Dle užívaného operačního systému můžeš být
-dotázán na udělení povolení této aplikaci.
-Zde je co Delta Chat dělá s těmito povoleními:
-
-
-
Kamera (může být zakázána)
-
-
fotit a filmovat: zasílat Fotky
-
-
-
Kontakty (mohou být zakázané)
-
-
číst tvé kontakty: objevovat kontakty pro hovory
-
-
-
Poloha (může být zakázaná)
-
-
přístup k přibližné poloze (poloha z GSM sítě): pro funkci “vysílání” polohy
-
přístup k přesné poloze (poloha z GPS a sítě GSM): pro funkci “vysílání” polohy
-
-
-
Mikrofon (může být zakázaný)
-
-
nahrávat zvuk: pro hlasové zprávy
-
-
-
Úložiště (může být zakázané)
-
-
upravovat a mazat obsah tvé SD karty: stahování příloh zpráv
-
číst obsah tvé SD karty: sdílet soubory s tvými kontakty
-
-
-
Další schopnosti aplikace
-
-
měnit nastavení zvuku: lze měnit zvuky vyzvánění a hlasitost oznámení a zvukových zpráv
-
spouštět se při startu: nemusíš spouštět Delta Chat ručně
-
ovládat chvění: pro oznámení
-
značit síťová připojení: pro připojení k tvému poskytovateli e-mailu.
-
zamezit režimu spánku: pro snadnější přepis čísel bezpečnostního kódu při přenosu Nastavení Autokryptu
-
plný přístup k síti: pro připojení k poskytovateli e-mailu
-
vidět Wi-Fi připojenís: pro připojení k poskytovateli e-mailu
-
zamezit přizpůsobení se baterii: pro uživatele, kteří chtějí přijímat zprávy bez přerušení
-
-
-
-
-
-
-
- What means Pinning, Muting, Archiving?
+ What do Pinning, Muting and Archiving mean?
@@ -388,22 +331,40 @@ have turned off read receipts, they will not see the green dot until you
message them or write to a group they’re in as well.
-
+
- How can I delete my account?
+ How do disappearing messages work?
-
As you use an e-mail account for Delta Chat,
-how you can delete your account depends on your e-mail provider.
-We don’t have any control over your e-mail account,
-so unfortunately we can’t help you with that.
+
You can turn on “disappearing messages”
+in the settings of a chat,
+at the top right of the chat window,
+by selecting a time span
+between 1 minute and 5 weeks.
-
If you want to keep the account,
-but uninstall Delta Chat,
-it is recommended to leave any group chat before uninstalling Delta Chat.
+
Until the setting is turned off again,
+each chat member’s Delta Chat app takes care
+of deleting the messages
+after the selected time span.
+The time span begins
+when the receiver first sees the message in Delta Chat.
+The messages are deleted
+both in each email account on the server,
+and in the app itself.
+
+
Note that you can rely on disappearing messages
+only as long as you trust your chat partners;
+malicious chat partners can take photos,
+or otherwise save, copy or forward messages before deletion.
+
+
Apart from that,
+if one chat partner uninstalls Delta Chat,
+the messages will not get deleted from their email account.
+They will most likely also not be decryptable anymore
+(as long as they were encrypted in the first place).
@@ -536,6 +497,170 @@ this way, all messages will be deleted from your device as soon as they
older than that.
+
+
+
+ What are Push Notifications? How can I get instant message delivery?
+
+
+
+
+
Push Notifications are sent by Apple and Google “Push services” to a user’s device
+so that an inactive Delta Chat app can fetch messages in the background
+and show notifications on a user’s phone if needed.
+
+
Push Notifications work with all chatmail servers on
+
+
+
+
iOS devices, by integrating with Apple Push services.
+
+
+
Android devices, by integrating with the Google FCM Push service,
+including on devices that use microG
+instead of proprietary Google code on the phone.
+
+
+
+
As of May 2024, classic e-mail servers do not support Push Notifications
+for Delta Chat users.
+
+
+
+
+ Are Push Notifications enabled on iOS devices? Is there an alternative?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Are Push notifications enabled / needed on Android devices?
+
+
+
+
+
If a “Push Service” is available, Delta Chat enables Push Notifications
+to achieve instant message delivery for all chatmail users.
+If you are using a classic e-mail provider instead of chatmail servers,
+Push Notifications are not available.
+
+
In the Delta Chat “Notifications” settings for “Instant delivery”
+you can change the following settings effecting all chat profiles:
+
+
+
+
Use Push Service: the default when using chatmail profiles and if
+a Push service is available on the phone.
+If you have both chatmail and classic e-mail profiles,
+then Push Notification will only work
+for incoming messages on chatmail profiles.
+
+
+
Use Background Connection: If you are not using a Push service,
+you may disable “battery optimizations” for Delta Chat,
+allowing it to fetch messages in the background.
+However, there could be delays from minutes to hours.
+Some Android vendors even restrict apps completely
+(see dontkillmyapp.com)
+and Delta Chat might not show incoming messages
+until you manually open the app again.
+
+
+
Force Background Connection: This is the fallback option
+if the previous options are not available or do not achieve “instant delivery”.
+Enabling it causes a permanent notification on your phone
+which may sometimes be “minified” with recent Android phones.
+
+
+
+
Both “Background Connection” options are energy-efficient and
+safe to try if you experience messages arrive only with long delays.
+
+
+
+
+ How private are Delta Chat Push Notifications?
+
+
+
+
+
Delta Chat Push Notification support avoids leakage of private information.
+It does not leak e-mail, IP address or message content (not even encrypted)
+to any system involved in the delivery of Push Notifications.
+
+
Here is how Delta Chat apps perform Push Notification delivery:
+
+
+
+
A Delta Chat app obtains a “device token” locally and stores it
+on the chatmail server.
+
+
+
When a chatmail server receives an e-mail for a Delta Chat user
+it forwards the “device token” to the central Delta Chat notification proxy.
+
+
+
The central Delta Chat notification proxy forwards
+the “device token” to the respective Push service (Apple, Google, etc.),
+without ever knowing the IP or e-mail address of Delta Chat users.
+
+
+
The central Push Service (Apple, Google, etc.)
+wakes up the Delta Chat app on your device
+to check for new messages in the background.
+It does not know about the chatmail or e-mail address of the device it wakes up.
+The central Apple/Google Push services never see an e-mail address (sender or receiver)
+and also never see any message content (also not in encrypted forms).
+
+
+
+
As of May 2024, chatmail servers know about “device tokens”
+but we plan to encrypt this information to the notification proxy
+such that the chatmail server never learns the device token.
+
+
The central Delta Chat notification proxy is small and fully implemented in Rust
+and forgets about device-tokens as soon as Apple/Google/etc processed them,
+usually in a matter of milliseconds.
+
+
Resulting from this overall privacy design, even the seizure of a chatmail server,
+or the full seizure of the central Delta Chat notification proxy
+would not reveal private information that Push services do not already have.
+
+
+
+
+ Why does Delta Chat integrate with centralized proprietary Apple/Google push services?
+
+
+
+
+
Delta Chat is a free and open source decentralized messenger with free server choice,
+but we want users to reliably experience “instant delivery” of messages,
+like they experience from Whatsapp, Signal or Telegram apps,
+without asking questions up-front that are more suited to expert users or developers.
Secure-Join protocols
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
@@ -589,49 +714,32 @@ guarantee end-to-end encrypted messages.
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
+
If you have a second communication channel with your chat partner,
+like a video chat or a different messenger,
+you can generate an invite link.
-
Inviter side:
+
If you are together in person,
+you can show a QR code to your chat partner.
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
+
For Group invitations,
+tap the chat group title to see its member list,
+and select “QR Invite code”.
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
+
For direct 1:1 chat invitations,
+tap the QR Code icon
+on the Delta Chat app main screen.
-
Joiner side:
+
Let your chat partner scan the QR image
+with their Delta Chat app,
+or click “Copy” or “Share” to create an invite link
+and share it with your chat partner.
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
@@ -685,7 +793,7 @@ but there is no green checkmark in the profile title.
This usually means that the contact “sent a message from another device”.
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
+please see Secure-Join protocols
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
@@ -713,7 +821,7 @@ even if the contact is a member there.
Your contact is using Delta Chat on a second device (phone or laptop)
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
+they should remove the profile from the new device
and add it as a second device as described here.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.
@@ -721,8 +829,8 @@ and guaranteed encryption is established with both devices of your contact.
Your contact reinstalled Delta Chat using their old account login
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
+they should remove the profile from the new device
+and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.
@@ -743,7 +851,7 @@ guaranteed end-to-end encryption will be automatically re-established.
Sometimes remaining in contact is more important than end-to-end encryption.
“Transport Layer Encryption” (TLS) may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
+But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.
In any case, you can not do much else than accept the warning.
@@ -909,12 +1017,12 @@ deliver messages to recipient’s devices.
Both for protecting against metadata-collecting e-mail servers
as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
+we recommend to use a chatmail server
+to create pseudonymous temporary profiles through QR-code scans.
+Note that Delta Chat apps on all platforms support multiple profiles
+so you can easily use situation-specific profiles next to your “main” profile
+with the knowledge that all their data, along with all metadata, will be deleted.
+Moreover, if a device is seized then contacts using temporary profiles
can not be identified easily, as compared to messengers which reveal
phone numbers in chat groups which in turn are often associated with legal identities.
@@ -973,7 +1081,7 @@ and their non-Autocrypt e-mail app.
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
+who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
it’s best to setup guaranteed end-to-end encryption with them
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
@@ -991,10 +1099,10 @@ even if the direct chat between you two has a
The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
+
Guaranteed end-to-end encrypted chats protect against MITM attacks
+and turning on disappearing messages deletes the messages
on the server after a user-configured time.
If you don’t need a longer-lived copy of your messages on the server,
@@ -1074,10 +1182,13 @@ Caution: Make sure the key is not protected by a password, or remove the passwor
Nejpravděpodobnější příčinou jsou zašifrované klíče, nebo klíče s heslem.
-Takové klíče Delta Chat nepodporuje. Můžeš odstranit šifrování nebo heslo a
+Takové klíče Delta Chat nepodporuje. Můžeš odstranit šifrování nebo heslo a
zkusit to znovu. Pokud je potřeba použít zaheslovaný klíč vytvoř / použij zástupnou
adresua a pak přidej nový Delta Chat účet s tímto klíčem.
+
Another common error is having the wrong file ending.
+Use the ASCII armored format and an .asc file ending.
+
Delta Chat podporuje běžné formáty OpenPGP klíčů, nicméně neočekáváme,
že soukromé klíče ze všech aplikací budou fungovat. To není cíl, a
ve skutečnosti věttšina nových uživatelů Delta Chatu nemá žádný stávající klíč.
@@ -1088,6 +1199,67 @@ Enigmail umí nastavit prázdnou hodnotu hesla v okně Key Management.
U GnuPG lze to samé nastavit z příkazové řádky.
Pro ostatní programy by mělo jít nalézt řešení na Interentu.
+
+
+
+ Was Delta Chat independently audited for security vulnerabilities?
+
+
+
+
+
The Delta Chat project underwent four independent security audits and one
+independent security analysis, from most recent to older:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
2023 April, we fixed security and privacy issues with the “web
+apps shared in a chat” feature, related to failures of sandboxing
+especially with Chromium. We subsequently got an independent security
+audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
+See here for the full background story on end-to-end security in the web.
+
+
+
2023 March, Cure53 analyzed both the transport encryption of
+Delta Chat’s network connections and a reproducible mail server setup as
+recommended on this site.
+You can read more about the audit on our blog
+or read the full report here.
+
+
+
2020, Include Security analyzed Delta
+Chat’s Rust core,
+IMAP,
+SMTP, and
+TLS libraries.
+It did not find any critical or high-severity issues.
+The report raised a few medium-severity weaknesses -
+they are no threat to Delta Chat users on their own
+because they depend on the environment in which Delta Chat is used.
+For usability and compatibility reasons,
+we can not mitigate all of them
+and decided to provide security recommendations to threatened users.
+You can read the full report here.
+
+
+
2019, Include Security analyzed Delta
+Chat’s PGP and
+RSA libraries.
+It found no critical issues,
+but two high-severity issues that we subsequently fixed.
+It also revealed one medium-severity and some less severe issues,
+but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
+Some of them we nevertheless fixed since the audit was concluded.
+You can read the full report here.
+
+
+
@@ -1104,7 +1276,7 @@ Pro ostatní programy by mělo jít nalézt řešení na Interentu.
-
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
+
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
@@ -1142,10 +1314,19 @@ One device is not needed for the other to work.
Double-check both devices are in the same Wi-Fi or network
+
+
On Windows, go to Control Panel / Network and Internet
+and make sure, Private Network is selected as “Network profile type”
+(after transfer, you can change back to the original value)
+
Your system might have a “personal firewall”,
which is known to cause problems (especially on Windows).
Disable the personal firewall for Delta Chat on both ends and try again
+
+
+
Guest Networks may not allow devices to communicate with each other.
+If possible, use a non-guest network.
Ensure there is enough storage on the destination device
@@ -1157,7 +1338,7 @@ Do not exit Delta Chat.
Delta Chat is already logged in on the destination device?
-You can use multiple accounts per device, just add another account
If you still have problems or if you cannot scan a QR code
@@ -1180,8 +1361,8 @@ try the manual transfer described below
screen unlock PIN, pattern, or password. Then you can click on “Start
Backup”. This saves the backup file to your device. Now you have to transfer
it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
+
On the new device, in the “I already have a profile” menu,
+choose “restore from backup”. After import, your conversations, encryption
keys, and media should be copied to the new device.
If you use iOS: and you encounter difficulties, maybe
@@ -1211,55 +1392,6 @@ přenosnou verzi pro Windows nebo AppImage pro Linux.
Všechny softwarové balíčky jsou na get.delta.chat.
-
-
-
- K čemu je dobré nastavení “Posílat si kopii”?
-
-
-
-
-
Posílat si kopii zpráv zaručuje, že zprávy se zobrazí na všech současně nastavených
-zařízeních. Pokud máš několik zařízení a nezapneš tuto funkci, uvidíš pouze příchozí
-zprávy, a zprávy odeslané jen z právě používaného přístroje. Ty odeslané z ostatních
-zařízení neuvidíš.
-
-
Kopie přijdou nejdříve do Příchozí složky, a pak jsou samočinně přesunuty do složky
-DeltaChat; ne do složky Odeslané. Do složky Odeslané se nepřesouvá nikdy nic.
-protože by to vyžadovalo přenášet zprávu dvakrát (jednou poslat přes SMTP, a jednou
-pro složku Odeslané přes IMAP).
-
-
Výchozí hodnota nastavení pro zasílání si kopií je “Ne”.
Jediný důvod sledovat složku s odeslanými zprávami je používání jiného e-mailového
-programu (např. Thunderbird) spolu s Delta Chatem, a chtít z tohoto programu také
-psát zprávy do hovorů Delta Chatu.
-
-
Nicméně doporučujeme používat Delta Chat Desktop Client; ten lze stáhnout z get.delta.chat. Možnost sledování složky “Odeslané”
-může být v budoucnu zrušena. Byla totiž vytvořena v době, kdy Delta Chat Desktop
-nebyl dostupný na všech platformách.
Někteří lidé užívají Delta Chat jako jediný e-mailový program, a chtějí užívat
-složku Příchozí / Inbox pro všechny zprávy i místo složky DeltaChat. Pokud zrušíš
-“Sleduj složku DeltaChat”, zruš také “přesouvat zprávy do složky DeltaChat”. Jinak
-hrozí, že mazání zpráv či nastavení na několika zařízeních nebude správně fungovat.
-
@@ -1406,11 +1538,8 @@ streamed to your chat partners, between 5 minutes and 6 hours.
the chat.
To see the map and view locations of others, you need to turn on the feature
in the advanced settings.
-
This feature will not share your location with anyone except your chat
-partners. But: to show the map, we need to download map tiles from
-mapbox.com, so if you view the map, mapbox.com is asked for the map of a
-specific area. If this is a privacy risk for you, this feature might not be
-for you. We are working on finding a decentralized alternative for Mapbox.
+
This feature will not share your location with anyone except your chat partners.
+Map tiles are downloaded from OpenStreetMap.
On desktop, the OS typically can’t determine your location. Instead you can
right click on the map and describe a location, which is sent to the chat as
a message, but also appears on the map.
@@ -1461,18 +1590,18 @@ DeltaChat. To je něco co za běžných okolností dělá Delta Chat sám.
In this case, Delta Chat doesn’t need to watch the Inbox, and it’s enough to only watch the DeltaChat folder.
-
+
- How can I change my account to a different e-mail address?
+ How can I use a different e-mail address with my profile?
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
+
Change your address in “Settings → Advanced → Password and Account” and
+enter the password of your new e-mail account (and if necessary, server settings).
You will get an information notice about the fact that you are moving to a new address.
An additional notice will also show up in your “Device messages” chat.
@@ -1503,6 +1632,60 @@ it.
+
+
+
+ Jaká oprávnění Delta Chat potřebuje?
+
+
+
+
+
Dle užívaného operačního systému můžeš být
+dotázán na udělení povolení této aplikaci.
+Zde je co Delta Chat dělá s těmito povoleními:
+
+
+
Camera (can be disallowed)
+
+
take pictures and videos: for sending Photos
+
+
+
Contacts (can be disallowed)
+
+
read your contacts: to discover contacts to chat with
+
+
+
Location (can be disallowed)
+
+
access approximate location (network location sources): for the location streaming feature
+
access precise location (GPS and network location sources): for the location streaming feature
+
+
+
Microphone (can be disallowed)
+
+
record audio: for audio messages
+
+
+
Storage (can be disallowed)
+
+
modify or delete the contents of your SD card: to download message attachments
+
read the contents of your SD card: to share files with your contacts
+
+
+
Other app capabilities
+
+
change your audio settings: so you can choose ring tones and volume for notifications and audio messages
+
run at startup: so you don’t have to start Delta Chat manually
+
control vibration: for notifications
+
view network connections: to connect to your E-Mail provider
+
prevent phone from sleeping: so you can easier copy the security code during the Autocrypt Setup Message
+
have full network access: to connect to your E-Mail provider
+
view Wi-Fi connections: to connect to your E-Mail provider
+
ask to ignore battery optimisations: for achieving “instant message delivery”
- Je hovor v Delta Chatu skutečně interaktivní, když užívá E-Mail?
+ Proč musím Delta Chatu zadat mé e-mailové heslo? Je to bezpečné?
+
Podobně jako ostatní e-mailové programy, např. Thunderbird nebo Outlook,
+program potřebuje heslo k tomu aby mohl posílat e-maily. Samozřejmě, že
+heslo je uloženo pouze na tvém přístroji. Heslo je přenášeno pouze při přihlašení
+k e-mailovému serveru, který má i beztak přístup k tvým e-mailům.
+
+
Poskytovatelé e-mailu s podporou OAuth2, např. “gmail.com” či “yandex.ru”,
+nepotřebují při přihlašování tvé heslo. V takovém případě je uložen pouze
+vygenerovaný přístupový kód.
+
+
Delta Chat má otevřený zdrojový kód,
+ze kterého lze ověřit, že program s osobními daty zachází bezpečně. Jsme rádi
+za každou odezvu, která udělá Delta Chat bezpečnější pro všechny.
+
+
+
+
+ Jaké zprávy Delta Chat zobrazuje?
+
+
+
+
+
By default, Delta Chat shows all e-mails.
+
+
At “Settings → Advanced → Show Classic E-Mails”,
+you can change this. You have these options:
+
-
Sending and receiving messages takes a few seconds, typically. Sometimes
-there are cases where it takes longer but that is arguably true as well for
-any other messenger.
-
Instant chatting works fast if both parties are actively using the app. It’s
-sometimes slower if the app is running in the background.
-
Receiving messages then can take minutes because both Android and iOS often
-stop Delta Chat from running in the background, and only wake it up
-occasionally. This artificial delay is usually worse on iOS than on Android.
-
However, Android and iOS kill apps running in the background is a
-problem for many legitimate apps. For more information, see
-dontkillmyapp.com.
+
“No, chats only”: Only messages sent by other Delta Chat users and replies to
+your Delta Chat messages are shown. This makes most sense if you use the same
+e-mail account for normal e-mails as well.
+
“All”: Delta Chat shows all e-mails that are sent to your email address. This
+makes sense if you want to use Delta Chat for all your e-mails, so no message
+gets lost. This is the default setting.
+
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
+you already have a chat, but new chats only pop up for Delta Chat messages.
+This helps to decide on a case-by-case basis whether you want to have a
+conversation in Delta Chat or in a “normal” e-mail app.
+
+
+
+ Umí Delta Chat pracovat s e-maily v HTML?
+
+
+
+
+
Yes, incoming HTML messages come with a “Show full message” button.
+Outgoing messages always use plain text.
+
+
+
+
+ Can I set the E-Mail Subject with Delta Chat?
+
+
+
+
+
Delta Chat sets (and encrypts!) the classic e-mail subject
+automatically to the group name or to the sender name.
+
+
So if you want to set the subject yourself,
+for example for a formal e-mail to a business contact,
+you can create a group
+with only yourself and the recipient(s).
+Set the Chat Title to the Subject you want,
+and then send your e-mail as the first message.
+If the recipients don’t use Delta Chat,
+it will look like a normal,
+formal e-mail to them.
+You will get bonus professionalism points
+if you set a signature text.
+
+
+
+
+ K čemu je dobré nastavení “Posílat si kopii”?
+
+
+
+
+
Posílat si kopii zpráv zaručuje, že zprávy se zobrazí na všech současně nastavených
+zařízeních. Pokud máš několik zařízení a nezapneš tuto funkci, uvidíš pouze příchozí
+zprávy, a zprávy odeslané jen z právě používaného přístroje. Ty odeslané z ostatních
+zařízení neuvidíš.
+
+
Kopie přijdou nejdříve do Příchozí složky, a pak jsou samočinně přesunuty do složky
+DeltaChat; ne do složky Odeslané. Do složky Odeslané se nepřesouvá nikdy nic.
+protože by to vyžadovalo přenášet zprávu dvakrát (jednou poslat přes SMTP, a jednou
+pro složku Odeslané přes IMAP).
+
+
The default setting for “Send Copy to Self” is “on”.
Jediný důvod sledovat složku s odeslanými zprávami je používání jiného e-mailového
+programu (např. Thunderbird) spolu s Delta Chatem, a chtít z tohoto programu také
+psát zprávy do hovorů Delta Chatu.
+
+
Nicméně doporučujeme používat Delta Chat Desktop Client; ten lze stáhnout z get.delta.chat. Možnost sledování složky “Odeslané”
+může být v budoucnu zrušena. Byla totiž vytvořena v době, kdy Delta Chat Desktop
+nebyl dostupný na všech platformách.
Někteří lidé užívají Delta Chat jako jediný e-mailový program, a chtějí užívat
+složku Příchozí / Inbox pro všechny zprávy i místo složky DeltaChat. Pokud zrušíš
+“Sleduj složku DeltaChat”, zruš také “přesouvat zprávy do složky DeltaChat”. Jinak
+hrozí, že mazání zpráv či nastavení na několika zařízeních nebude správně fungovat.
As you use an e-mail account for Delta Chat,
+how you can delete your account depends on your e-mail provider.
+We don’t have any control over your e-mail account,
+so unfortunately we can’t help you with that.
+
+
If you want to keep the account,
+but uninstall Delta Chat,
+it is recommended to leave any group chat before uninstalling Delta Chat.
-
-
- Was Delta Chat independently audited for security vulnerabilities?
-
-
-
-
-
The Delta Chat project underwent four independent security audits in the last years:
-
-
-
-
In 2019, Include Security analyzed Delta
-Chat’s PGP and
-RSA libraries.
-It found no critical issues,
-but two high-severity issues that we subsequently fixed.
-It also revealed one medium-severity and some less severe issues,
-but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
-Some of them we nevertheless fixed since the audit was concluded.
-You can read the full report here.
-
-
-
In 2020, Include Security analyzed Delta
-Chat’s Rust core,
-IMAP,
-SMTP, and
-TLS libraries.
-It did not find any critical or high-severity issues.
-The report raised a few medium-severity weaknesses -
-they are no threat to Delta Chat users on their own
-because they depend on the environment in which Delta Chat is used.
-For usability and compatibility reasons,
-we can not mitigate all of them
-and decided to provide security recommendations to threatened users.
-You can read the full report here.
-
-
-
Beginning 2023, Cure53 analyzed both the transport encryption of
-Delta Chat’s network connections and a reproducible mail server setup as
-recommended on this site.
-You can read more about the audit on our blog
-or read the full report here.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
@@ -1680,7 +1935,7 @@ completing Rust/Python bindings and instigating a Chat-bot eco-system.
In 2021 we received further EU funding for two Next-Generation-Internet
-proposals, namely for EPPD - e-mail provider portability directory (~97K EUR) and AEAP - email address porting (~90K EUR) which resulted in better multi-account support, improved QR-code contact and group setups and many networking improvements on all platforms.
From End 2021 till March 2023 we received Internet Freedom funding (500K USD) from the
diff --git a/assets/help/de/help.html b/src/main/assets/help/de/help.html
similarity index 62%
rename from assets/help/de/help.html
rename to src/main/assets/help/de/help.html
index e80800bb5..e6223a607 100644
--- a/assets/help/de/help.html
+++ b/src/main/assets/help/de/help.html
@@ -4,17 +4,14 @@
Delta Chat ist eine neue Chat-App, die mit Autocrypt verschlüsselte E-Mails versendet.
-Sie müssen sich nirgendwo anmelden, verwenden Sie einfach Ihr bestehendes E-Mail-Konto mit Delta Chat.
+
Delta Chat ist eine zuverlässige, dezentralisierte und sichere Messaging-App, verfügbar für Mobile- und Desktop-Plattformen.
+
+
Delta Chat sieht wie Whatsapp oder Telegram aus, aber kann auch als E-Mail-App verwendet und betracht werden.
+Sie können sich anonym bei einer Vielzahl von interoperablen Chatmail-Servern anmelden, bei denen es sich um minimale E-Mail-Server handelt, die für einen schnellen und sicheren Betrieb optimiert sind.
+Oder Sie verwenden einen klassische E-Mail-Server und ein bestehendes E-Mail-Konto.
+In diesem Fall fungiert Delta Chat als E-Mail-App.
@@ -117,8 +132,12 @@
-
Mit Delta Chat können Sie an jede existierende E-Mail-Adresse schreiben. Im Gegensatz
-zu anderen Instant-Messengern muss der/die EmpfängerIn nicht Delta Chat installieren, um mit Ihnen zu kommunizieren. Er/sie kann einfach sein/ihr gewohntes Mailprogramm nutzen.
Wenn Sie ein Profil mit einer klassischen E-Mail-Adresse verwenden, können Sie manuell Kontakte über bekannte E-Mail-Adresse hinzufügen und anschreiben -
+auch wenn der Empfänger Delta Chat nicht benutzt.
@@ -129,33 +148,25 @@ zu anderen Instant-Messengern muss der/die EmpfängerIn nicht Delta Chat install
-
Delta Chat ist unabhängig von Unternehmen oder Dienstleistern. Ihre Daten gehören nur Ihnen
-
Ihre Daten werden nicht auf einem zentralen Server gespeichert wenn Benutzer verschiedene E-Mail-Server verwenden
-
Ihr Adressbuch wird nicht an Dritte übermittelt.
-
Schnell durch die Verwendung von Push-IMAP.
-
Größte Nutzerbasis - EmpfängerInnen, die Delta Chat nicht nutzen, können ebenfalls erreicht werden.
-
Kein Spam - standardmäßig werden nur Nachrichten bekannter Kontakte angezeigt.
-
Ende-zu-Ende-Verschlüsselung mit Autocrypt.
-
Auf Copyleft und Standards basierende freie Software.
-
Flexible Identität mit eingebauter Unterstützung für mehrere Konten
-
-
-
-
-
- Welche Nachrichten erscheinen in Delta Chat?
-
-
-
-
-
In der Standardeinstellung zeigt Delta Chat alle E-Mails an.
-
-
Unter “Einstellungen / Chats und Medien / Normale E-Mails anzeigen” können Sie dies ändern. Sie haben die folgenden Optionen:
-
-
-
“Nein, nur Chats”: Es werden die von anderen Delta-Chat-Benutzern gesendeten Nachrichten sowie alle Antworten auf Ihre Nachrichten angezeigt. Dies ist sinnvoll, wenn Sie das gleiche E-Mail-Konto noch mit einer anderen E-Mail-App bearbeiten.
-
“Alle”: Delta Chat zeigt alle E-Mails an, die an Ihre E-Mail-Adresse gesendet werden. Dies ist sinnvoll, wenn Sie Delta Chat für alle Ihre E-Mails verwenden möchten, damit keine Nachricht verloren geht. Dies ist die Standardeinstellung.
-
“Akzeptierte Kontakte”: Delta Chat zeigt alle E-Mails von Kontakten an, mit denen Sie bereits einen Chat haben, aber neue Chats werden nur für Delta Chat-Nachrichten angezeigt. So können Sie von Fall zu Fall entscheiden, ob Sie eine Unterhaltung in Delta Chat oder in einer “normalen” E-Mail-App führen möchten.
+
+
Anonyme Chat-Profile mit schnellen, sicheren und interoperablen Chatmail-Servern,
+die sofortige Push-Benachrichtigungen für iOS- und Android-Geräte bieten.
+
+
+
Durchgängige Multi-Profil und Multi-Geräte-Unterstützung auf allen Plattformen.
@@ -192,18 +203,25 @@ zu anderen Instant-Messengern muss der/die EmpfängerIn nicht Delta Chat install
- Wie kann ich mehrere Konten hinzufügen oder zwischen ihnen wechseln?
+ Was sind Profile? Wie kann ich zwischen ihnen wechseln?
-
Sie können ganz einfach mehrere E-Mail-Konten Konten verwnden, indem Sie entweder:
-
-
im Hauptmenü “Konto wechseln” wählen (Android und Desktop)
-
oder auf das Profilsymbol und dann auf “Konto hinzufügen” klicken (iOS)
-
+
Ein Profil besteht aus einem Namen, einem Bild und einigen zusätzlichen Informationen zum Verschlüsseln von Nachrichten.
+Ein Profil existiert nur auf Ihren Geräten
+und verwendet einen Chatmail- oder einen klassischen E-Mail-Server für den Transport von Nachrichten.
Bei der Installation von Delta Chat wird ein erstes Profil erstellt.
+
+
Später können Sie auf Ihr Profilbild in der oberen linken Ecke tippen, um Profile hinzuzufügen
+oder Profile zu wechseln.
+
+
Vielleicht möchten Sie separate Profile für politische, familiäre oder berufliche Aktivitäten verwenden,
+oder z. B. für ein spezielles „Spam-Profil“, mit dem Sie sich bei Websites und Plattformen anmelden
+die dazu neigen, früher oder später unerwünschte Nachrichten („Spam“) zu versenden.
@@ -228,83 +246,21 @@ zu anderen Instant-Messengern muss der/die EmpfängerIn nicht Delta Chat install
-
+
- Unterstützt Delta Chat HTML-E-Mails?
+ Kann ich eine Signatur (Status/Motto) festlegen?
-
-
Ja. Eingehende HTML-Nachrichten erhalten eine Schaltfläche “Ganze Nachricht anzeigen”. Ausgehende E-Mails verwenden immer “Nur Text”.
-
-
-
-
-
- Weshalb muss ich mein E-Mail-Kennwort in Delta Chat eingeben? Ist das sicher?
-
-
-
-
-
Genau wie auch bei anderen E-Mail-Programmen (z. B. Thunderbird, K9-Mail oder Outlook) benötigt Delta Chat das Passwort, um E-Mails versenden zu können. Das Passwort wird nur auf Ihrem Gerät gespeichert und bei der Anmeldung an Ihren E-Mail-Anbieter gesendet.
-
-
Wenn Sie einen E-Mail-Anbieter wie gmail.com oder yandex.ru nutzen, der OAuth2 unterstützt, wird Ihr Passwort nicht auf Ihrem Gerät gespeichert. In diesem Fall wird nur ein Zugriffstoken genutzt.
-
-
Da Delta Chat Open Source ist, können Sie den Quellcode einsehen und sich davon überzeugen, dass Ihre Zugangsdaten sicher gehandhabt werden. Wir freuen uns über Feedback, das unsere App sicherer für all unsere NutzerInnen macht.
Je nach verwendetem Betriebssystem werden Sie möglicherweise aufgefordert, der App Berechtigungen zu erteilen. Diese werden wie folgt verwendet:
-
-
-
Kamera (kann verweigert werden)
-
-
Bilder und Videos aufnehmen: Um Fotos zu senden
-
-
-
Kontakte (kann verweigert werden)
-
-
Kontakte lesen: Um Kontakte zum Chatten zu finden
-
-
-
Standort (kann verweigert werden)
-
-
Auf den ungefähren Standort zugreifen (netzwerkbasiert): Für die Standortübertragungsfunktion
-
Auf genauen Standort zugreifen (GPS- und netzwerkbasiert): Für die Standortübertragungsfunktion
-
-
-
Mikrofon (kann verweigert werden)
-
-
Audio aufnehmen: Für Sprachnachrichten
-
-
-
Speicher (kann verweigert werden)
-
-
SD-Karteninhalte ändern oder löschen: Um Nachrichtenanhänge herunterzuladen
-
SD-Karteninhalte lesen: Um Dateien mit Ihren Kontakten zu teilen
-
-
-
Andere Berechtigungen:
-
-
Audio-Einstellungen ändern: Um Klingeltöne und die Lautstärke für Benachrichtigungen und Audionachrichten zu wählen
-
Beim Start ausführen: Um Delta Chat nicht manuell starten zu müssen
-
Vibrationsalarm steuern: Für Benachrichtigungen
-
Netzwerkverbindungen abrufen: Um eine Verbindung zu Ihrem E-Mail-Anbieter herzustellen
-
Ruhezustand deaktivieren: Um den Sicherheitscode während der Autocrypt-Setupnachricht einfacher abtippen zu können
-
Auf alle Netzwerke zugreifen: Um eine Verbindung zu Ihrem E-Mail-Anbieter herzustellen
-
WLAN-Verbindungen abrufen: Um eine Verbindung zu Ihrem E-Mail-Anbieter herzustellen
-
Fragen, ob Akku-Leistungsoptimierungen ignoriert werden können: Für NutzerInnen, die permanent Nachrichten empfangen möchten
-
-
-
+
Ja,
+Sie können dies unter “Einstellungen → Profil → Signatur” tun.
+Kontakte, die Delta Chat nutzen, sehen die Signatur,
+wenn Sie sich Ihre Kontaktdetails ansehen.
+Für klassische E-Mail-Programme,
+erscheint die Signatur
+unter dem Text Ihrer Nachrichten.
@@ -355,17 +311,37 @@ zu anderen Instant-Messengern muss der/die EmpfängerIn nicht Delta Chat install
Andererseits werden andere nicht immer “sehen, dass Sie online sind”. Wenn Sie Lesebestätigungen deaktiviert haben, sehen sie den grünen Punkt erst, wenn Sie ihnen eine Nachricht senden oder einer Gruppe schreiben, in der sie sich ebenfalls befinden.
-
+
- Wie kann ich mein Konto löschen?
+ Wie funktionieren “Verschwindende Nachrichten”?
-
Da Sie ein E-Mail-Konto für Delta Chat 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.
+
Sie schalten “Verschwindende Nachrichten”
+oben rechts im Chatfenster,
+durch Auswahl einer Zeitspanne
+zwischen 1 Minute und 5 Wochen ein.
-
Wenn Sie das Konto behalten, aber Delta Chat deinstallieren möchten, ist es ratsam, aktive Gruppen zu verlassen, bevor Sie Delta Chat deinstallieren.
+
Bis die Einstellung wieder ausgeschaltet wird,
+kümmern sich die Delta-Chat-Apps der Chat-Teilnehmer
+um das Löschen der Nachrichten
+nach der gewählten Zeitspanne.
+Die Zeitspanne beginnt,
+wenn der Empfänger die Nachricht zum ersten Mal in Delta Chat ansieht.
+Die Nachrichten werden dann
+sowohl in den E-Mail-Konten auf dem Server,
+als auch in der App selbst gelöscht.
+
+
Beachten Sie, dass Sie sich auf verschwindende Nachrichten nur so lange verlassen können, wie Sie Ihren Chat-Partnern vertrauen;
+böswillige Chatpartner können Fotos machen,
+oder auf andere Weise Nachrichten vor dem Löschen speichern, kopieren oder weiterleiten.
+
+
Abgesehen davon,
+wenn ein Chat-Partner Delta Chat deinstalliert,
+werden die Nachrichten nicht aus seinem E-Mail-Konto gelöscht.
+Sie werden höchstwahrscheinlich aber auch nicht mehr entschlüsselt werden können.
@@ -484,6 +460,161 @@ Alle von Delta Chat empfangenen Nachrichten werden nach diesem Zeitraum vom Serv
Um es zu aktivieren, gehen Sie in den “Chats und Medien”-Einstellungen zu “Alte Nachrichten vom Gerät löschen”. Sie können einen Zeitraum zwischen “nach 1 Stunde” und “nach 1 Jahr” festlegen; auf diese Weise werden alle Nachrichten von Ihrem Gerät gelöscht, sobald sie älter als angegeben sind.
+
+
+
+ Sofortige Nachrichtenzustellung und Push-Benachrichtigungen
+
+
+
+
+
+
+
+ Was sind Push-Benachrichtigungen? Wie kann ich Nachrichten sofort erhalten?
+
+
+
+
+
Push-Benachrichtigungen werden von Apples und Googles „Push-Diensten“ an das Gerät des Benutzers gesendet,
+so dass eine inaktive Delta-Chat-App im Hintergrund Nachrichten erhalten
+und Benachrichtigungen auf dem Telefon des Nutzers anzeigen kann.
+
+
Push-Benachrichtigungen funktionieren mit allen Chatmail-Servern auf
+
+
+
+
iOS-Geräten, durch die Integration mit den Apple-Push-Diensten.
+
+
+
Android-Geräten, durch die Integration des Google FCM Push-Dienste,
+auch auf Geräten, die microG
+anstelle von proprietärem Google-Code auf dem Telefon.
+
+
+
+
Stand Mai 2024 unterstützen die klassischen E-Mail-Server keine Push-Benachrichtigungen für Delta-Chat-Benutzer.
+
+
+
+
+ Sind Push-Benachrichtigungen auf iOS-Geräten aktiviert? Gibt es Alternativen?
+
+
+
+
+
Ja, Delta Chat verwendet automatisch Push-Benachrichtigungen für Chatmail-Profile.
+Und nein, es gibt für Apple-Telefonen keine Alternative, Push-Benachrichten zuzustellen;
+Apple-Geräte erlauben es Delta Chat nicht, Daten im Hintergrund abzurufen.
+Push-Benachrichtigungen werden für iOS-Nutzer automatisch aktiviert, da
+Delta Chats datenschutzwahrendes Push-Benachrichtigungssystem
+keine Daten an Apple weitergibt, die Apple nicht bereits hat.
+
+
+
+
+ Sind Push-Benachrichtigungen auf Android-Geräten aktiviert/erforderlich?
+
+
+
+
+
Wenn ein „Push-Service“ verfügbar ist, aktiviert Delta Chat Push-Benachrichtigungen
+um eine sofortige Nachrichtenzustellung für alle Chatmail-Benutzer zu erreichen.
+Wenn Sie einen klassischen E-Mail-Anbieter anstelle von chatmail Servern verwenden,
+sind Push-Benachrichtigungen nicht verfügbar.
+
+
In den Delta-Chat-Einstellungen „Benachrichtigungen“ für „Sofortige Benachrichtigungen“
+können Sie die folgenden Einstellungen ändern, die alle Chat-Profile betreffen:
+
+
+
+
Push-Dienst verwenden: die Standardeinstellung bei Verwendung von Chatmail-Profilen und wenn
+ein Push-Service auf dem Telefon verfügbar ist.
+Wenn Sie sowohl Chatmail- als auch klassische E-Mail-Profile haben,
+dann funktioniert die Push-Benachrichtigung nur
+für eingehende Nachrichten auf Chatmail-Profilen.
+
+
+
Hintergrundverbindung verwenden: Wenn Sie keinen Push-Dienst verwenden, können Sie die „Batterie-Optimierung“ für Delta Chat deaktivieren, damit Nachrichten im Hintergrund abgerufen werden können. Dabei kann es jedoch zu Verzögerungen von Minuten bis Stunden kommen.
+Einige Android-Hersteller schränken Apps sogar vollständig ein
+(siehe dontkillmyapp.com)
+und Delta Chat zeigt möglicherweise keine eingehenden Nachrichten anbis Sie die App erneut manuell öffnen.
+
+
+
Hintergrundverbindung erzwingen: Dies ist die Ausweichoption wenn die vorherigen Optionen nicht verfügbar sind oder keine „sofortige Zustellung“ erreichen. Die Aktivierung dieser Option führt zu einer permanenten Benachrichtigung auf Ihrem Telefon, die bei neueren Android-Telefonen manchmal „verkleinert“ werden kann.
+
+
+
+
Beide „Hintergrundverbindung“-Optionen sind energiesparend und
+können sicher ausprobiert werden, wenn Sie feststellen, dass Nachrichten nur mit großer Verzögerung ankommen.
+
+
+
+
+ Wie privat sind Delta Chat Push-Benachrichtigungen?
+
+
+
+
+
Delta Chats Vorgehensweise, Push-Benachrichtigungen zu verwenden, vermeidet die Weitergabe privater Informationen.
+Es werden keine E-Mail- oder IP-Adressen oder Nachrichteninhalte (auch nicht verschlüsselt)
+an irgendein System, das an der Zustellung von Push-Benachrichtigungen beteiligt ist, weitergegeben.
+
+
So verwendet Delta Chat Push-Benachrichtigungen:
+
+
+
+
Eine Delta-Chat-Anwendung erhält lokal ein „Geräte-Token“ (eine zufällige Zahl) und speichert es
+auf dem Chatmail-Server.
+
+
+
Wenn ein Chatmail-Server eine E-Mail für einen Delta Chat-Benutzer erhält
+erhält, leitet er den „Geräte-Token“ an den zentralen Delta-Chat-Benachrichtigungs-Proxy weiter.
+
+
+
Der zentrale Delta-Chat-Benachrichtigungs-Proxy leitet
+das „Geräte-Token“ an den jeweiligen Push-Dienst (Apple, Google, etc.) weiter,
+ohne jemals die IP- oder E-Mail-Adresse des Delta-Chat-Benutzers zu kennen.
+
+
+
Der zentrale Push-Dienst (Apple, Google, etc.)
+weckt die Delta-Chat-App auf Ihrem Gerät auf
+um im Hintergrund nach neuen Nachrichten zu suchen.
+Der zentrale Push-Dienst weiß nichts über die Chatmail- oder E-Mail-Adresse des Geräts, das er aufweckt und sieht nie eine E-Mail-Adresse (Absender oder Empfänger)
+und auch nie den Inhalt einer Nachricht (auch nicht in verschlüsselter Form).
+
+
+
+
Stand Mai 2024 kennen die Chatmail-Server die Geräte-Token,
+aber wir planen, diese Informationen an den Benachrichtigungs-Proxy zu verschlüsseln
+zu verschlüsseln, so dass der Chatmail-Server niemals das „Geräte-Token“ erfährt.
+
+
Der zentrale Delta-Chat-Benachrichtigungs-Proxy ist klein und vollständig in Rust implementiert
+und vergisst die Geräte-Token, sobald Apple/Google/etc. sie verarbeitet hat,
+normalerweise innerhalb weniger Millisekunden.
+
+
Aufgrund dieses umfassenden Datenschutzkonzepts würde sogar die Beschlagnahmung eines Chatmail-Servers,
+oder die vollständige Beschlagnahmung des zentralen Delta-Chat-Benachrichtigungsproxys
+keine privaten Informationen preisgeben, die den zentralen Push-Diensten nicht bereits vorliegen.
+
+
+
+
+ Warum integriert sich Delta Chat in zentralisierte, proprietäre Apple/Google-Push-Dienste?
+
+
+
+
+
Delta Chat ist ein freier, quelloffener, dezentraler Messenger mit freier Serverwahl,
+aber wir wollen, dass die Nutzer eine zuverlässige „Sofortzustellung“ von Nachrichten haben,
+wie sie es von Whatsapp, Signal oder Telegram kennen,
+ohne im Vorfeld Fragen zu stellen, die eher für erfahrene Nutzer oder Entwickler geeignet sind.
@@ -492,10 +623,10 @@ Alle von Delta Chat empfangenen Nachrichten werden nach diesem Zeitraum vom Serv
-
+
- Welches Verfahren wird für die Ende-zu-Ende-Verschlüsselung verwendet?
+ Welche Standards werden für die Ende-zu-Ende-Verschlüsselung verwendet?
@@ -505,7 +636,7 @@ eine Ende-zu-Ende-Verschlüsselung mit Kontakten und Gruppenchats herzustellen.
Autocrypt verwendet eine begrenzte und sichere Untermenge des OpenPGP-Standards.
Ende-zu-Ende verschlüsselte Nachrichten sind mit einem Vorhängeschloss gekennzeichnet
-
Secure-Join-Protokolle
werden für Chats mit garantierter Ende-zu-Ende-Verschlüsselung verwendet,
die vor Netzwerkangriffen und kompromittierten Servern schützt.
Chats, die mit einem grünen Häkchen markiert sind
@@ -520,7 +651,7 @@ garantieren Ende-zu-Ende-verschlüsselte Nachrichten.
-
Alle Ende-zu-Ende-verschlüsselten Nachrichten sind mit einem Vorhängeschloss versehen:
+
Ende-zu-Ende-verschlüsselten Nachrichten sind mit einem Vorhängeschloss versehen:
Treffen Sie Ihren Chatpartner außerhalb von Delta Chat, vorzugsweise persönlich.
-Ein zweiter Kanal wie ein Video-Chat
-oder ein anderer Messenger ist aber auch in Ordnung.
-Führen Sie das folgende QR-Code-Verfahren mit Ihrem Chat-Partner durch.
-Einer von Ihnen ist der “Einladende”, die andere ist der “Beitretende”.
+
Wenn Sie einen zweiten Kommunikationskanal mit Ihrem Chatpartner haben,
+wie einen Video-Chat oder einen anderen Messenger,
+können Sie einen Einladungslink erstellen.
-
Auf der Seite des Einladers:
+
Wenn Sie persönlich zusammen sind,
+können Sie Ihrem Chat-Partner einen QR-Code zeigen.
-
Gruppeneinladung:
-Tippen Sie auf den Titel der Chat-Gruppe, um die Mitgliederliste anzuzeigen, und wählen Sie “QR-Einladungscode”.
-Zeigen Sie das QR-Bild der anderen Seite entweder persönlich oder über einen zweiten Kanal.
+
Für Gruppeneinladungen,
+tippen Sie auf den Titel der Gruppe, um die Mitgliederliste anzuzeigen,
+und wählen Sie „QR-Einladungscode“.
-
Direkte 1:1 Chat-Einladung:
-Tippen Sie auf das QR-Code-Symbol
-auf dem Hauptbildschirm der Delta Chat-App –
-auf dem Desktop befindet sich das QR-Symbol im Sandwich-Menü auf der linken Seite.
-Zeigen Sie das QR-Bild der anderen Seite entweder persönlich oder über einen zweiten Kanal.
+
Für Direktchat-Einladungen,
+tippen Sie auf das QR-Code-Symbol
+auf dem Hauptbildschirm der Delta-Chat-App.
-
Auf der Seite des Beitretenden:
+
Lassen Sie Ihren Chat-Partner den QR-Code mit der Delta-Chat-App scannen.
+Oder Sie klicken auf „Kopieren“ oder „Teilen“, um einen Einladungslink zu erstellen und diesen mit Ihrem Chat-Partner zu teilen.
-
-
-
Tippen Sie auf das QR-Code-Symbol
-auf dem Hauptbildschirm der Delta Chat-App –
-auf dem Desktop befindet sich das QR-Symbol im Sandwich-Menü auf der linken Seite.
-
-
-
Wählen Sie “QR-CODE SCANNEN” und scannen Sie den QR-Code
-den Sie von Ihrem Chatpartner in einem zweiten Kanal sehen oder erhalten haben.
-
-
-
“OK” tippen
-
-
-
-
Beide, Einlader und Beitretender:
-
-
Warten Sie, während [Secure-Join-Netzwerkmeldungen] (https://countermitm.readthedocs.io/en/latest/new.html#setup-contact-protocol) zwischen beiden Geräten ausgetauscht werden.
Wenn beide Geräte online sind,
-sehen beide Seiten schließlich einen (Gruppen- oder Direkt-) Chat mit einem grünen Häkchen
+sehen beide Seiten schließlich einen Gruppen- oder Direkt-Chat mit einem grünen Häkchen
neben dem Titel.
Wenn eines der Geräte offline ist, erscheinen die grünen Häkchen erst
-erst später, wenn das Gerät wieder mit dem Internet verbunden ist
-und das Secure-Join-Netzwerkprotokoll abgeschlossen ist.
+später, wenn das Gerät wieder mit dem Internet verbunden ist
+und das Secure-Join-Protokoll abgeschlossen werden kann.
Herzlichen Glückwunsch! 🎉
-Sie verwenden nun automatisch eine garantierte Ende-zu-Ende-Verschlüsselung
+Sie verwenden nun eine garantierte Ende-zu-Ende-Verschlüsselung
mit diesem Kontakt und Sie beide können sich gegenseitig zu grün markierten Gruppen hinzufügen
,
Dadurch wird die garantierte Ende-zu-Ende-Verschlüsselung automatisch unter den Mitgliedern dieser Gruppe verbreitet.
@@ -603,38 +715,37 @@ Dadurch wird die garantierte Ende-zu-Ende-Verschlüsselung automatisch unter den
- Was bedeutet das grüne Häkchen und die “garantierte Ende-zu-Ende-Verschlüsselung”?
+ Was bedeuten das “Grüne Häkchen” und die “garantierte Ende-zu-Ende-Verschlüsselung”?
-
Chat-Titel mit grünen Häkchen
+
Chat-Titel mit grünen Häkchen
-bedeuten, dass alle Nachrichten im Chat Ende-zu-Ende verschlüsselt werden
+bedeuten, dass alle Nachrichten im Chat Ende-zu-Ende-verschlüsselt werden
und nicht von kompromittierten E-Mail-Servern oder Internet-Providern gelesen oder verändert werden können.
Beim Beitritt zu Gruppenchats mit grünen Häkchen
werden Verschlüsselungsinformationen (und die grünen Häkchen) aller Teilnehmer sicher so weitergegeben,
dass die Ende-zu-Ende-Verschlüsselung in der Gruppe und zwischen den Mitgliedern garantiert werden kann.
-
Contact profiles with green checkmarks
+
Kontaktprofile mit grünen Häkchen
-mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
-Every green-checkmarked contact either did a direct QR-scan with you
-or was introduced by a another green-checkmarked contact.
-Introductions happen automatically when adding members to groups.
-Whoever adds a contact to a green-checkmarked group becomes an introducer
-to those members who didn’t yet know about the added contact.
-In a contact profile you can tap on the “Introduced by …” text repeatedly
-until you get to the one with whom you directly did a QR-scan.
+bedeuten, dass die Nachrichtenübermittlung an einen Kontakt derzeit garantiert Ende-zu-Ende-verschlüsselt ist.
+Jeder grün markierte Kontakt hat entweder einen direkten QR-Scan mit Ihnen durchgeführt
+oder wurde von einem anderen Kontakt mit grünem Häkchen eingeführt.
+Das Einführen geschieht automatisch, wenn Sie Mitglieder zu Gruppen hinzufügen.
+Wer einen Kontakt zu einer Gruppe mit grünem Häkchen hinzufügt, wird zum Einführenden
+für die Mitglieder, die noch nichts von dem hinzugefügten Kontakt wussten.
+In einem Kontaktprofil können Sie wiederholt auf den Text “Eingeführt von …” tippen
+bis du zu demjenigen gelangst, mit dem Sie einen direkten QR-Scan gemacht haben.
-
Note that in a contact profile you may see and tap introducers
-but there is no green checkmark in the profile title.
-This usually means that the contact “sent a message from another device”.
+
Beachten Sie, dass Sie in einem Kontaktprofil unter Umständen Einführende sehen und antippen können, aber kein grünes Häkchen im Profiltitel vorhanden ist.
+Dies bedeutet normalerweise, dass der Kontakt “eine Nachricht von einem anderen Gerät gesendet hat”.
-
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
-and specifically read about “Verified Groups”, the technical term
-of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
+
Für eine ausführlichere Diskussion der “Garantierten Ende-zu-Ende-Verschlüsselung”,
+siehe Secure-Join-Protokolle
+und dort speziell den Abschnitt zu “Verified Groups”, dem technischen Begriff
+für “Chats mit grünem Häkchen” oder “Garantierter Ende-zu-Ende-Verschlüsselung”.
@@ -644,63 +755,58 @@ of what is called here “green-checkmarked” or “guaranteed end-to-end encry
-
Your chat with a contact lost guaranteed end-to-end encryption.
-The green checkmark was removed for this chat and contact when you see this warning.
-If you find the sudden drop of guaranteed end-to-end encryption
-surprising for this contact then don’t accept the warning!
-Instead check with your contact through a second channel
-like a video call, other messenger or a phone call,
-to find out what happened.
+
Wenn Sie diese Warnung sehen, wurde das grüne Häkchen entfernt, da für den Kontakt die Ende-zu-Ende-Verschlüsselung nicht mehr garantiert werden kann.
+Wenn Sie den Wegfall der garantierten Ende-zu-Ende-Verschlüsselung
+für diesen Kontakt überraschend finden, akzeptieren Sie die Warnung nicht!
+Versuchen Sie stattdessen mit Ihrem Kontakt über einen zweiten Kanal (z.B. Videoanruf, Telefon oder ein anderer Messenger) herauszufinden, was passiert ist.
-
If your contact actually caused the drop of guaranteed end-to-end encryption
-please see the next paragraphs for common reasons and their mitigations.
-Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
-even if the contact is a member there.
+
Wenn Ihr Kontakt tatsächlich den Ausfall der garantierten Ende-zu-Ende-Verschlüsselung verursacht hat,
+finden Sie in den nächsten Abschnitten häufige Gründe und Abhilfe.
+Unabhängig davon bleiben alle anderen Chats mit einem grünen Häkchen garantiert Ende-zu-Ende-verschlüsselt,
+auch wenn der Kontakt dort Mitglied ist.
-
Your contact is using Delta Chat on a second device (phone or laptop)
+
Ihr Kontakt verwendet Delta Chat auf einem zweiten Gerät (Smartphone oder Laptop)
-
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
-and add it as a second device as described here.
-As soon as they message you afterwards, the warning will be gone
-and guaranteed encryption is established with both devices of your contact.
+
Wenn Ihr Kontakt ein weiteres Gerät mit Delta Chat eingerichtet hat,
+sollte das Konto von dem neuen Gerät entfernen werden und als zweites Gerät, wie hier beschrieben erneut hinzugefügt werden.
+Sobald sie sich danach schreiben, wird die Warnung verschwinden
+und die Verschlüsselung ist mit beiden Geräten Ihres Kontakts garantiert.
-
Your contact reinstalled Delta Chat using their old account login
+
Ihr Kontakt hat Delta Chat mit seinem alten Login neu installiert
-
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
-As soon as they message you afterwards, the warning will be gone
-and guaranteed encryption is re-established for this contact.
+
Wenn Ihr Kontakt ein Backup hat,
+sollte das Profil auf dem neuen Gerät
+entfernt werden und stattdessen das Backup importiert werden, um das Konto neu zu erstellen.
+Sobald sie sich danach schreiben, wird die Warnung verschwinden
+und die garantierte Verschlüsselung wird für diesen Kontakt wiederhergestellt.
-
If they don’t have a backup file, it’s best to perform a QR scan
-with your chat partner to re-establish guaranteed end-to-end encryption.
+
Wenn Ihr Kontakt kein Backup hat, ist es am besten, einen QR-Code-Scan
+mit Ihrem Chat-Partner durchzuführen, um die garantierte Ende-zu-Ende-Verschlüsselung wiederherzustellen.
-
Your contact sent a mail through a webmail interface or another e-mail app
-and will get back to using Delta Chat soon again.
+
Ihr Kontakt hat eine E-Mail über Webmail oder eine andere E-Mail-Anwendung gesendet,
+wird Delta Chat aber bald wieder benutzen.
-
If you are sure that the contact sometimes uses webmail,
-or another mail app lacking end-to-end encryption,
-then you may accept the warning.
-As soon as your contact uses Delta Chat again,
-guaranteed end-to-end encryption will be automatically re-established.
+
Wenn Sie wissen, dass der Kontakt manchmal Webmail,
+oder andere E-Mail-Anwendungen ohne Ende-zu-Ende-Verschlüsselung verwendet,
+dann können Sie die Warnung akzeptieren.
+Sobald Ihr Kontakt Delta Chat wieder benutzt,
+wird die garantierte Ende-zu-Ende-Verschlüsselung automatisch wiederhergestellt.
-
Your contact stopped using Delta Chat entirely
+
Ihr Kontakt hat die Nutzung von Delta Chat komplett eingestellt
-
Sometimes remaining in contact is more important than end-to-end encryption.
-“Transport Layer Encryption” (TLS) may still meaningfully protect
-the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
-to not read or manipulate your messages, and to not hand them to third parties.
+
Manchmal ist es wichtiger, in Kontakt zu bleiben als eine Ende-zu-Ende-Verschlüsselung zu haben;
+die “Transport Layer Encryption” (TLS) kann die Vertraulichkeit
+Ihrer Nachrichten zwischen Ihrem Gerät und dem E-Mail-Server dennoch schützen.
+Ohne Ende-zu-Ende-Verschlüsselung vertrauen Sie und Ihr Chat-Partner jedoch darauf, dass Ihr E-Mail-Server Nachrichten nicht liest oder manipuliert und sie nicht an Dritte weitergibt.
-
In any case, you can not do much else than accept the warning.
-Please also remove the contact from any active green-checkmarked group
-which you can find in “Shared chats” in the Contact profile.
-This spares your contact from getting “unreadable” messages.
+
In jedem Fall können Sie nicht viel mehr tun, als die Warnung zu akzeptieren.
+Bitte entfernen Sie den Kontakt auch aus allen aktiven, grün markierten Gruppen
+die Sie unter “Gemeinsame Chats” im Profil des Kontakts finden können.
+So vermeiden Sie, dass Ihr Kontakt “unlesbare” Nachrichten erhält.
-
If the contact removed Delta Chat because of buggy or undesirable behaviour,
-please consider posting to our support forum
-to help us identify and address common problems. Thanks!
+
Wenn der Kontakt Delta Chat aufgrund von Fehlern oder Bugs nicht mehr verwendet,
+können Sie diese in unser Support-Forum schreiben,
+und uns so dabei helfen, häufige Probleme zu identifizieren und zu lösen. Vielen Dank!
@@ -712,10 +818,10 @@ to help us identify and address common problems. Thanks!
Ja.
-
When we talk about an “end-to-end encrypted message”
-we always mean a whole message is encrypted,
-including all the attachments
-and attachment metadata such as filenames.
+
Wenn wir von einer “Ende-zu-Ende-verschlüsselten Nachricht” sprechen
+meinen wir immer, dass eine ganze Nachricht verschlüsselt ist,
+einschließlich aller Anhänge
+und Anhang-Metadaten wie Dateinamen.
@@ -725,25 +831,23 @@ and attachment metadata such as filenames.
-
Yes, Delta Chat uses a secure subset of OpenPGP
-and only displays a padlock security indicator on a message
-if the whole message is properly encrypted and signed.
-For example, “Detached signatures” are not treated as secure.
+
Ja, Delta Chat verwendet eine sichere Untermenge von OpenPGP
+und zeigt nur dann ein Vorhängeschloss auf einer Nachricht an,
+wenn die gesamte Nachricht ordnungsgemäß verschlüsselt und signiert ist.
+Zum Beispiel werden “Detached Signatures” nicht als sicher betrachtet.
-
OpenPGP is not insecure by itself.
-Most publically discussed OpenPGP security problems
-actually stem from bad usability or bad implementations of tools or apps (or both).
-It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
-and GnuPG (GPG), a command line tool implementing OpenPGP.
-Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
-Delta Chat rather uses the OpenPGP Rust implementation rPGP,
-available as an independent “pgp” package,
-and security-audited in 2019.
+
Die meisten öffentlich diskutierten OpenPGP-Probleme
+resultieren in Wirklichkeit aus schlechter Usability oder schlechter Implementierung von Tools oder Anwendungen - oder beidem.
+Es ist besonders wichtig, zwischen OpenPGP, dem IETF-Verschlüsselungsstandard
+und GnuPG (GPG), einem Kommandozeilenprogramm, das OpenPGP implementiert, zu unterscheiden.
+In vielen öffentlichen Kritiken zu OpenPGP wird GnuPG diskutiert, das Delta Chat nie verwendet hat.
+Delta Chat verwendet stattdessen die OpenPGP-Rust-Implementierung rPGP,
+die als ein unabhängiges “pgp”-Paket,
+verfügbar und 2019 sicherheitsgeprüft wurde.
-
We aim, along with other OpenPGP implementors,
-to further improve security characteristics by implementing the
-new IETF OpenPGP Crypto-Refresh
-which was thankfully adopted in summer 2023.
+
Unser Ziel ist, zusammen mit anderen OpenPGP-Implementierungen,
+die Sicherheitseigenschaften durch das im Sommer 2023 angenommene
+IETF OpenPGP Crypto-Refresh weiter zu verbessern.
@@ -753,21 +857,21 @@ which was thankfully adopted in summer 2023.
-
Yes, we are following efforts like MLS
-or Saltpack
-but adopting them would mean breaking end-to-end encryption interoperability
-with all other e-mail apps that typically support OpenPGP encryption.
-So it would not be a light decision to take
-and there must be tangible improvements for users.
+
Ja, wir verfolgen Ansätze wie MLS
+oder Saltpack.
+Diese zu übernehmen würde aber bedeuten, die Interoperabilität der Ende-zu-Ende-Verschlüsselung
+mit allen anderen E-Mail-Anwendungen zu zerstören.
+Die Entscheidung wäre also nicht leicht zu treffen
+und müsste spürbare Verbesserungen für die Nutzer bringen.
-
Delta Chat takes a holistic “usable security” approach
-and works with a wide range of activist groupings as well as
-renowned researchers such as TeamUSEC
-to improve actual user outcomes against security threats.
-The wire protocol and standard for establishing end-to-end encryption is
-only one part of “user outcomes”,
-see also our answers to device-seizure
-and message-metadata questions.
+
Delta Chat verfolgt einen ganzheitlichen Ansatz bei der “nutzbaren Sicherheit”:
+Wir arbeiteten mit vielen Aktivistengruppen sowie mit
+renommierten Forschern wie TeamUSEC zusammen,
+um die tatsächlichen Ergebnisse der Benutzer gegen Sicherheitsbedrohungen zu verbessern.
+Das Wire-Protokoll und der Standard für die Einrichtung der Ende-zu-Ende-Verschlüsselung ist
+nur ein Teil der Ergebnisse,
+siehe auch unsere Antworten auf Gerätebeschlagnahmung
+und Metadaten Fragen.
No, Delta Chat never was vulnerable to EFAIL
-because its OpenPGP implementation rPGP
-uses Modification Detection Code when encrypting messages
-and returns an error
-if the Modification Detection Code is incorrect.
+
Nein, Delta Chat war nie anfällig für EFAIL.
+Delta Chats OpenPGP-Implementierung rPGP
+verwendet beim Verschlüsseln von Nachrichten “Modification Detection Codes”
+und gibt Fehler zurück,
+wenn dieser falsch ist.
-
Delta Chat also never was vulnerable to the “Direct Exfiltration” EFAIL attack
-because it only decrypts multipart/encrypted messages
-which contain exactly one encrypted and signed part,
-as defined by the Autocrypt Level 1 specification.
+
Delta Chat war auch nie anfällig für den EFAIL-Angriff “Direct Exfiltration”,
+da nur multipart/encrypted Nachrichten entschlüsselt werden,
+die genau einen verschlüsselten und signierten Teil enthalten;
+so wie in der Autocrypt Level 1 Spezifikation definiert.
@@ -796,27 +900,26 @@ as defined by the Autocrypt Level 1 specification.
-
Even if your messages are not guaranteed to be end-to-end encrypted,
-they are still protected from Internet providers like cell or cable companies.
-However, your and your recipient’s e-mail providers
-may read, analyze or even modify your messages,
-including any attachments,
-if they are not end-to-end encrypted.
+
Auch wenn Ihre Nachrichten nicht Ende-zu-Ende-verschlüsselt sind,
+sind sie dennoch vor Internetanbietern wie Mobilfunk- oder Telefongesellschaften geschützt.
+Allerdings können Ihr E-Mail-Provider und der des Empfängers
+Ihre Nachrichten lesen, analysieren oder sogar verändern,
+wenn sie nicht Ende-zu-Ende-verschlüsselt sind.
-
Delta Chat by default uses strict
-TLS encryption
-which secures connections between your device and your e-mail provider.
-All of Delta Chat’s TLS-handling has been independently security audited.
-Moreover, the connection between your and the recipient’s e-mail provider
-will typically be transport-encrypted as well.
-If the involved e-mail servers support MTA-STS
-then transport encryption will be enforced between e-mail providers
-in which case Delta Chat communications will never be exposed in cleartext to the Internet
-even if the message was not end-to-end encrypted.
+
Delta Chat verwendet standardmäßig strikte
+TLS-Verschlüsselung,
+die die Verbindungen zwischen Ihrem Gerät und Ihrem E-Mail-Anbieter sichert.
+Die gesamte TLS-Implementierung wurde unabhängig sicherheitsgeprüft.
+Die Verbindung zwischen Ihrem E-Mail-Providern und dem des Empfängers
+ist in der Regel ebenfalls transportverschlüsselt.
+Wenn die beteiligten E-Mail-Server MTA-STS unterstützen,
+wird TLS zwischen den E-Mail-Anbietern durchgesetzt.
+In diesem Fall wird die Delta-Chat-Kommunikation niemals im Klartext ins Internet gelangen
+selbst wenn die Nachricht nicht Ende-zu-Ende-verschlüsselt war.
-
Note that maintaining guaranteed end-to-end encryption on top of TLS encryption
-provides pervasive safety between your and the recipient’s devices.
-Not even your e-mail or Internet provider will be able to read or modify your messages.
+
Beachten Sie, dass die Beibehaltung der garantierten Ende-zu-Ende-Verschlüsselung zusätzlich zur TLS-Verschlüsselung
+eine allumfassende Sicherheit zwischen Ihrem Gerät und dem des Empfängers bietet.
+Nicht einmal Ihr E-Mail- oder Internet-Provider wird in der Lage sein, Ihre Nachrichten zu lesen oder zu verändern.
@@ -826,25 +929,24 @@ Not even your e-mail or Internet provider will be able to read or modify your me
-
Delta Chat protects most message metadata by putting the following information
-into the end-to-end encrypted part of messages:
+
Delta Chat schützt die meisten Metadaten von Nachrichten, indem es die folgenden Informationen
+in den Ende-zu-Ende-verschlüsselten Teil der Nachrichten verschiebt:
E-Mail servers do not get access to this protected metadata
-but they do see the message date as well as the message size,
-and, more importantly, the sender and receiver addresses.
-E-mail servers need receiver addresses to route and
-deliver messages to recipient’s devices.
+
E-Mail-Server erhalten keinen Zugriff auf diese geschützten Metadaten,
+sehen aber Datum und Größe der Nachricht sowie die Absender- und Empfängeradressen.
+E-Mail-Server benötigen Empfängeradressen, um Nachrichten
+Nachrichten an die Geräte der Empfänger weiterzuleiten und zuzustellen.
@@ -854,16 +956,15 @@ deliver messages to recipient’s devices.
-
Both for protecting against metadata-collecting e-mail servers
-as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
-can not be identified easily, as compared to messengers which reveal
-phone numbers in chat groups which in turn are often associated with legal identities.
+
Sowohl zum Schutz vor E-Mail-Servern, die Metadaten sammeln
+als auch gegen die Gefahr der Beschlagnahmung von Geräten
+empfehlen wir die Verwendung einer für Delta Chat optimierten E-Mail-Server-Instanz, um pseudonym-temporäre Konten durch Scannen von QR-Codes zu erstellen.
+Beachten Sie, dass Delta-Chat-Apps auf allen Plattformen mehrere Konten unterstützen.
+Sie können also problemlos aktionsspezifische “1-Wochen-“ oder “1-Monats-Konten” neben Ihrem “Hauptkonto” verwenden,
+mit dem Wissen, dass alle temporären Kontodaten zusammen mit allen Metadaten gelöscht werden.
+Wenn ein Gerät beschlagnahmt wird, können Kontakte mit temporären E-Mail-Konten
+Konten nicht so leicht identifiziert werden, wie dies bei Messengern der Fall ist, die die
+Telefonnummern in Chatgruppen preisgeben, die wiederum oft mit legalen Identitäten verbunden sind.
@@ -873,11 +974,11 @@ phone numbers in chat groups which in turn are often associated with legal ident
-
You may check the end-to-end encryption status manually in the “Encryption” dialog
-(user profile on Android/iOS or right-click a user’s chat-list item on desktop).
-Delta Chat shows two fingerprints there.
-If the same fingerprints appear on your own and your contact’s device,
-the connection is safe.
+
Sie können den Status der Ende-zu-Ende-Verschlüsselung manuell im Dialog “Verschlüsselung”
+(Android/iOS: Benutzerprofil, Desktop: Rechtsklick auf den Chat eines Benutzers) überprüfen.
+Delta Chat zeigt dort zwei Fingerabdrücke an.
+Wenn die gleichen Fingerabdrücke auf Ihrem eigenen Gerät und auf dem Gerät Ihres Kontakts erscheinen,
+ist die Verbindung sicher.
@@ -887,11 +988,11 @@ the connection is safe.
-
A little padlock in a message bubble denotes
-that the message was properly end-to-end encrypted from the given sender.
-If there is no padlock, the message was not properly end-to-end encrypted
-most likely because the sender uses an app or webmail interface
-without support for end-to-end–encryption.
+
Ein kleines Vorhängeschloss in einer Nachrichten zeigt an,
+dass die Nachricht vom Absender korrekt Ende-zu-Ende-verschlüsselt wurde.
+Wenn kein Vorhängeschloss vorhanden ist, wurde die Nachricht nicht oder nicht korrekt Ende-zu-Ende-verschlüsselt.
+Höchstwahrscheinlich, weil der Absender ein Webmail-Interface oder eine App
+ohne Ende-zu-Ende-Unterstützung verwendet.
@@ -901,15 +1002,13 @@ without support for end-to-end–encryption.
-
If a contact uses a non-Autocrypt e-mail app,
-all messages involving this contact (in a group or 1:1 chat)
-will not be end-to-end encrypted, and thus not show a “padlock” with messages.
-Note that even if your contacts use Delta Chat on their account,
-they might also use a non-Autocrypt e-mail app on that account
-which then may cause intermittently unencrypted messages.
-Replying unencrypted to unencrypted messages is mandated by Autocrypt
-to prevent unreadable messages on the side of your contacts
-and their non-Autocrypt e-mail app.
+
Wenn ein Kontakt keine Autocrypt-fähige App verwendet,
+werden alle Nachrichten, die diesen Kontakt betreffen (in Gruppen- oder Direkt-Chats)
+nicht Ende-zu-Ende-verschlüsselt und zeigen daher kein “Vorhängeschloss”.
+Beachten Sie, auch Kontakte, die primär Delta Chat verwenden,
+können gleichzeitig auch nicht-Autocrypt-fähige Apps verwenden.
+Das unverschlüsselte Antworten auf unverschlüsselte Nachrichten wird von Autocrypt vorgeschrieben
+um zu verhindern, dass unlesbare Nachrichten auf der Seite Ihrer Kontakte ankommen.
@@ -919,13 +1018,12 @@ and their non-Autocrypt e-mail app.
-
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
-it’s best to setup guaranteed end-to-end encryption with them
-and then create a guaranteed end-to-end encrypted group chat with you two as members.
-In this group chat all messages will be end-to-end encrypted
-even if the direct chat between you two has a
-“… sent a message from another device” warning.
+
Wenn Sie einen sicheren Ende-zu-Ende-verschlüsselten Chat mit einem Kontakt benötigen,
+der sowohl Delta Chat als auch nicht-Autocrypt-Anwendungen nutzt,
+können Sie eine garantierte Ende-zu-Ende-Verschlüsselung einrichten, mit einer Gruppe mit Ihnen beiden als Mitgliedern.
+In diesem Gruppenchat werden alle Nachrichten Ende-zu-Ende verschlüsselt werdejn,
+auch wenn im Direkt-Chat eine
+“Nachricht von einem anderen Gerät gesendet” wurde.
@@ -935,14 +1033,14 @@ even if the direct chat between you two has a
-
The best way to ensure every message is end-to-end encrypted,
-and metadata deleted as quickly as possible
-is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
-on the server after a user-configured time.
+
Garantierte Ende-zu-Ende-Verschlüsselung schützt vor MITM-Angriffen
+und das Aktivieren von “Verschwindende Nachrichten” löscht die Nachrichten
+auf dem Server und Lokal nach einer vom Benutzer eingestellten Zeit.
Wenn Sie die Nachrichten auf Ihrem Gerät, aber nicht auf dem Server benötigen, können Sie auch in der Gruppe vereinbaren, “Nachrichten automatisch vom Server löschen” einzuschalten.
@@ -955,20 +1053,17 @@ on the server after a user-configured time.
Nein, Delta Chat unterstützt kein “Perfect Forward Secrecy” (PFS).
-Das bedeutet, dass wenn Ihr privater Delta Chat-Schlüssel durchgesickert ist,
+Das bedeutet, dass wenn Ihr privater Delta-Chat-Schlüssel durchgesickert ist,
und jemand Ihre vorherigen In-Transit-Nachrichten gesammelt hat,
können diese mit dem veröffentlichtem Schlüssel entschlüsselt werden.
-
Beachten Sie jedoch, dass jemand, der in den Besitz Ihrer privaten Schlüssel gelangt,
-unabhängig davon, ob Perfect Forward Secrecy vorhanden ist oder nicht,
-in der Regel auch in der Lage sein wird, Ihre Nachrichten zu lesen.
-Die typische reale Situation für durchgesickerte private Schlüssel, ist die Beschlagnahme von Geräten,
-die wir in unter [über Metadaten und Gerätebeschlagnahme] (#device-seizure) erörtern.
+
Beachten Sie jedoch, dass jemand, der in den Besitz Ihrer privaten Schlüssel gelangt, in der Regel auch in der Lage sein wird, Ihre Nachrichten zu lesen - unabhängig davon, ob Perfect Forward Secrecy nun verwendet wird oder nicht.
+Die typische, reale Situation für durchgesickerte private Schlüssel, ist die Beschlagnahme von Geräten.
-
Es ist möglich, dass Delta Chat eine Tages “Perfect Forward Secrecy” unterstützt,
-denn OpenPGP ist nur ein Container für verschlüsselte Nachrichten;
+
Es ist möglich, dass Delta Chat eine Tages “Perfect Forward Secrecy” unterstützt -
+OpenPGP ist nur ein Container für verschlüsselte Nachrichten mit dem
die Verwaltung der Schlüssel (und damit die Schlüsselrotation oder das Schlüssel-“Ratcheting”)
-kann auf flexible Weise organisiert werden könnte.
+auf flexible Weise organisiert werden kann.
Siehe Seqouia’s PFS-Prototyp
für bestehende Experimente in der OpenPGP-Community.
@@ -982,12 +1077,12 @@ für bestehende Experimente in der OpenPGP-Community.
Das hängt davon ab, was für Sie wichtig ist.
Delta Chat unterstützt kein PFS,
-bietet aber garantiert Ende-zu-Ende-verschlüsselte Chats,
-die vor kompromittierten Servern oder korrupten Netzwerken sicher sind.
+bietet aber garantierte Ende-zu-Ende-Verschlüsselung,
+die vor kompromittierten Servern oder korrupten Netzwerken schützt.
Signal und die meisten anderen PFS-unterstützenden Messenger bieten kein
-praktisches System zum Schutz von Chatgruppen vor Netzwerkangriffen,
-die besorgniserregender und realer sind
-als ein potenzieller Angreifer, der zwar Ihr Telefon und Ihre privaten Schlüssel beschlagnahmt
+praktisches System zum Schutz von Chatgruppen vor Netzwerkangriffen.
+Diese sind besorgniserregender und realer
+als ein potenzieller Angreifer, der zwar Ihr Telefon und Ihre privaten Schlüssel beschlagnahmt,
aber irgendwie nicht Ihre Nachrichten - gleichzeitig aber eine vollständige Aufzeichnung aller
vergangenen verschlüsselten Nachrichten hat.
@@ -1008,7 +1103,7 @@ Look for something like Start Autocrypt Setup Transfer in the s
-
Alternativ können Sie den Schlüssel manuell unter “Einstellungen -> Erweitert -> Schlüssel verwalten -> Importiere geheime Schlüssel” importieren. Achtung: Stellen Sie sicher, dass der Schlüssel nicht durch ein Passwort geschützt ist, oder entfernen Sie das Passwort vorher.
+
Alternativ können Sie den Schlüssel manuell unter “Einstellungen → Erweitert → Schlüssel verwalten → Importiere geheime Schlüssel” importieren. Achtung: Stellen Sie sicher, dass der Schlüssel nicht durch ein Passwort geschützt ist, oder entfernen Sie das Passwort vorher.
Wenn Sie keinen Schlüssel besitzen oder nicht einmal wissen, dass Sie einen benötigen - keine Sorge: Delta Chat erstellt einen Schlüssel, wenn er benötigt wird. Sie müssen nichts weiter tun.
@@ -1023,14 +1118,15 @@ Look for something like Start Autocrypt Setup Transfer in the s
+
Mit sehr großer Wahrscheinlichkeit besteht das Problem darin, dass Ihr Schlüssel verschlüsselt ist und/oder ein Passwort verwendet. Solche Schlüssel werden von Delta Chat nicht unterstützt. Bitte entfernen Sie die Verschlüsselung und das Passwort und versuchen Sie den Import danach erneut.
+
+
Ein weiterer häufiger Fehler ist die falsche Dateiendung.
+Verwenden Sie das ASCII-Armored-Format und die Dateiendung .asc.
+
-
-
Wahrscheinlich ist Ihr Schlüssel verschlüsselt und/oder mit einem Passwort geschützt. Solche Schlüssel werden von Delta Chat nicht unterstützt. Bitte entfernen Sie die Verschlüsselung und das Passwort und versuchen Sie den Import danach erneut.
-Wenn Sie das Passwort nicht entfernen möchten, müssen Sie einen E-Mail-Alias zur Nutzung mit Delta Chat anlegen, sodass der Schlüssel von Delta Chat mit diesem E-Mail-Alias verknüpft ist.
-
Delta Chat unterstützt “gängige” private Schlüsselformate, allerdings ist es unwahrscheinlich, dass wir 100% aller privaten Schlüssel aus sämtlichen Quellen unterstützen.
-Dies ist auch nicht das Hauptaugenmerk von Delta Chat. Tatsächlich besitzt die große Mehrheit der Delta Chat-NutzerInnen keinen Schlüssel, bevor sie Delta Chat verwendet.
+Dies ist auch nicht das Hauptaugenmerk von Delta Chat. Tatsächlich besitzt die große Mehrheit der Delta-Chat-NutzerInnen keinen Schlüssel, bevor sie Delta Chat verwendet.
Wir versuchen jedoch, private Schlüssel aus anderen Quellen so gut wie möglich zu unterstützen.
@@ -1041,6 +1137,37 @@ Für andere Programme können Sie online eine Lösung finden.
+
+
+
+ Wurde Delta Chat unabhängig auf Sicherheitslücken geprüft?
+
+
+
+
+
Das Delta-Chat-Projekt wurde in den letzten Jahren fünf unabhängigen Sicherheitsprüfungen und -analysen unterzogen:
+
+
+
+
Im März 2024 erhielten wir von der Forschungsgruppe “Applied Cryptography” der ETH Zürich eine umfassende Sicherheitsanalyse und haben alle aufgeworfenen Fragen adressiert.
+Weitere Informationen finden Sie in unserem Blogbeitrag über Hardening Guaranteed End-to-End encryption und in der hinterher publizierten Kryptografischen Analyse von Delta Chat
+
+
+
Im April 2023 haben wir Sicherheits- und Datenschutzprobleme mit den “In Chats geteilten Apps”-Feature behoben, die mit Fehlern beim Sandboxing, insbesondere mit Chromium zusammenhängen. Wir haben daraufhin eine unabhängige Sicherheitsprüfung von Cure53 durchführen lassen, und alle gefundenen Probleme wurden mit den im April 2023 veröffentlichten 1.36 Releases behoben. Siehe hier für die vollständige Hintergrundgeschichte.
Im Jahr 2020 analysierte Include Security Delta Chats Rust core, IMAP,SMTP, und TLS Bibliotheken.
+Es wurden keine kritischen oder hochgradig gefährlichen Probleme gefunden. Der Bericht wies auf einige Schwachstellen mittlerer Schwere hin - sie stellen für sich genommen keine Bedrohung für Delta-Chat-Benutzer dar, da sie von der Umgebung abhängen, in der Delta Chat verwendet wird. Aus Gründen der Benutzerfreundlichkeit und der Kompatibilität können wir nicht alle Schwachstellen beseitigen und haben beschlossen, Sicherheitsempfehlungen für bedrohte Benutzer zu geben. Sie können den vollständigen Bericht hier lesen.
+
+
+
Im Jahr 2019 analysierte Include Security die von Delta Chat verwendeten PGP und RSA Bibliotheken.
+Es wurden keine kritischen Probleme gefunden, aber zwei Probleme mit hohem Schweregrad, die wir anschließend behoben haben. Außerdem wurden ein mittelschweres und einige weniger schwerwiegende Probleme gefunden, aber es gab keine Möglichkeit, diese Schwachstellen in der Delta-Chat-Implementierung auszunutzen. Einige dieser Schwachstellen haben wir dennoch nach Abschluss des Audits behoben. Sie können den [vollständigen Bericht hier] lesen (../assets/blog/2019-first-security-review.pdf).
+
+
+
@@ -1057,7 +1184,7 @@ Für andere Programme können Sie online eine Lösung finden.
-
Ja. Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
+
Ja. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
@@ -1091,9 +1218,18 @@ Für andere Programme können Sie online eine Lösung finden.
Vergewissern Sie sich, dass beide Geräte mit dem gleichen Wi-Fi, WLAN oder Netzwerk verbunden sind.
+
+
Unter Windows, Systemsteuerung / Netzwerk und Internet öffnen
+und sicherstellen, dass Privates Netzwerk als “Netzwerkprofiltyp” ausgewählt ist.
+(nach der Übertragung kann wieder der ursprüngliche Wert verwendet werden)
+
Ihr System verfügt möglicherweise über eine “Personal Firewall”, diese sind dafür bekannt, Probleme zu verursachen (insbesondere bei Windows). Deaktivieren Sie die Personal Firewall für Delta Chat auf beiden Seiten und versuchen Sie es erneut
+
+
In Gastnetzwerken z.B. der Fritz!Box, können Geräte möglicherweise nicht miteinander kommunizieren.
+Verwenden Sie nach Möglichkeit ein Nicht-Gast-Netzwerk. Wenn Sie Zugriff auf den Router haben, können Sie auch die Kommunikation der Geräte untereinander für die Dauer der Übertragung erlauben.
+
Vergewissern Sie sich, dass das Zielgerät über genügend Speicher verfügt
@@ -1101,7 +1237,7 @@ Für andere Programme können Sie online eine Lösung finden.
Wenn die Übertragung begonnen hat, stellen Sie sicher, dass die Geräte aktiv bleiben und nicht ausgehen. Beenden Sie Delta Chat nicht. (wir bemühen uns, die App im Hintergrund laufen zu lassen, aber Systeme neigen dazu, Apps zu beenden, leider)
-
Sie sind auf dem Zielgerät bereits eingeloggt? Sie können mehrere Konten pro Gerät verwenden, fügen Sie einfach ein weiteres Konto hinzu
+
Sie sind auf dem Zielgerät bereits eingeloggt? Sie können mehrere Profile pro Gerät verwenden, fügen Sie einfach ein weiteres Konto hinzu
Wenn Sie immer noch Probleme haben oder wenn Sie keinen QR-Code scannen können versuchen Sie die manuelle Übertragung wie unten beschrieben
@@ -1119,7 +1255,7 @@ Für andere Programme können Sie online eine Lösung finden.
Diese Methode wird nur empfohlen, wenn “Zweites Gerät hinzufügen”, wie oben beschrieben, nicht funktioniert.
-
Auf dem alten Gerät gehen Sie zu “Einstellungen -> Chats und Medien -> Chats auf externem Speicher speichern”. Geben Sie Ihre PIN, Ihr Muster oder Ihr Passwort zum Entsperren des Bildschirms ein. Anschließend können Sie auf “Backup starten” klicken. Dadurch wird die Backup-Datei auf Ihrem Gerät gespeichert. Jetzt müssen Sie sie irgendwie auf das andere Gerät übertragen.
+
Auf dem alten Gerät gehen Sie zu “Einstellungen → Chats und Medien → Chats auf externem Speicher speichern”. Geben Sie Ihre PIN, Ihr Muster oder Ihr Passwort zum Entsperren des Bildschirms ein. Anschließend können Sie auf “Backup starten” klicken. Dadurch wird die Backup-Datei auf Ihrem Gerät gespeichert. Jetzt müssen Sie sie irgendwie auf das andere Gerät übertragen.
Auf dem neuen Gerät, auf dem Anmeldebildschirm, wählen Sie, anstatt sich bei Ihrem E-Mail-Konto anzumelden, “Wiederherstellen aus Backup”. Nach dem Import sollten Ihre Unterhaltungen, Verschlüsselungsschlüssel und Medien auf das neue Gerät kopiert sein.
Wenn Sie iOS verwenden und auf Schwierigkeiten stoßen, hilft Ihnen vielleicht diese Anleitung.
@@ -1142,42 +1278,6 @@ Für andere Programme können Sie online eine Lösung finden.
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 get.delta.chat.
-
-
-
- Was macht die Option “Kopie an mich selbst senden”?
-
-
-
-
-
Das Senden einer Kopie an Sie selbst stellt sicher, dass Sie Ihre eigenen Nachrichten auf all Ihren Geräten sehen. Wenn Sie mehrere Geräte nutzen, aber diese Option nicht eingeschaltet ist, sehen Sie nur die Nachrichten, die andere Ihnen geschickt haben, und die ausgehenden Nachrichten, die auf dem Gerät selbst verschickt wurden.
-
-
Die Kopie wird dabei an den Posteingang verschickt und von dort in den DeltaChat-Ordner verschoben. Delta Chat lädt niemals etwas in den Gesendet-Ordner hoch, weil dies bedeuten würde, dass eine Nachricht zweimal hochgeladen werden müsste (einmal durch SMTP und dann durch IMAP in den Gesendet-Ordner).
-
-
Die Standardeinstellung für “Kopie an mich selbst senden” ist “Aus”.
-
-
-
-
- Warum gibt es die Funktion “Gesendet-Ordner beobachten”?
-
-
-
-
-
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.
-
-
Wir empfehlen für diesen Zweck aber “Delta Chat Desktop”; Sie können die App unter get.delta.chat herunterladen. Möglicherweise wird die Option “Gesendet-Ordner beobachten” zukünftig wegfallen; sie kommt aus einer Zeit, als Delta Chat Desktop noch nicht auf allen Plattformen zur Verfügung stand.
-
-
-
-
- Warum kann ich “DeltaChat-Ordner beobachten” ausschalten?
-
-
-
-
-
Einige BenutzerInnen verwenden Delta Chat als reguläres E-Mail-Programm und möchten lieber den Posteingang anstatt des DeltaChat-Ordners verwenden. Wenn Sie “DeltaChat-Ordner beobachten” ausschalten, sollten Sie auch “Autom. Verschieben in den DeltaChat-Ordner” ausschalten. Andernfalls funktioniert die Verwendung auf mehreren Geräten möglicherweise nicht richtig.
-
@@ -1198,7 +1298,7 @@ Für andere Programme können Sie online eine Lösung finden.
Webxdc Apps können keine Daten ins Internet senden oder etwas herunterladen.
-
Eine Webxdc App kann Daten nur innerhalb eines Delta Chat-Chats mit ihren Kopien auf den Geräten Ihrer Chat-Partner austauschen. Ansonsten ist sie komplett vom Internet isoliert.
+
Eine Webxdc App kann Daten nur innerhalb eines Delta-Chat-Chats mit ihren Kopien auf den Geräten Ihrer Chat-Partner austauschen. Ansonsten ist sie komplett vom Internet isoliert.
Die Privatsphäre, die eine Webxdc App bietet, ist die Privatsphäre Ihres Chats - solange Sie den Personen vertrauen, mit denen Sie chatten, können Sie auch der Webxdc App vertrauen.
Das bedeutet auch: Es kann ein Datenschutzrisiko darstellen, Webxdc Apps in Chats zu öffnen, in denen man den Mitgliedern nicht vertraut - so wie man es von E-Mail-Anhängen kennt, wo man nur Anhänge von Absendern öffnet, denen man vertraut, und nicht von Spammern.
@@ -1232,7 +1332,7 @@ forum veröffentlicht und diskutiert.
Webxdc Apps sind nur ZIP-Dateien, die HTML-, CSS- und JavaScript-Code enthalten.
Alles andere, was Sie wissen müssen, steht in der Dokumentation.
-
Wenn Sie Fragen haben, können Sie andere mit Erfahrung im Delta Chat-Forum fragen.
+
Wenn Sie Fragen haben, können Sie andere mit Erfahrung im Delta-Chat-Forum fragen.
@@ -1243,7 +1343,7 @@ forum veröffentlicht und diskutiert.
-
Wir sind sehr dankbar für Feedback zu diesen Funktionen - möchten Sie Ihre Ideen teilen? Treten Sie dem Forum bei, um einen Beitrag zu leisten. (Sie mögen Experimente? Registrieren Sie sich über “Sign Up -> with Delta Chat”!)
+
Wir sind sehr dankbar für Feedback zu diesen Funktionen - möchten Sie Ihre Ideen teilen? Treten Sie dem Forum bei, um einen Beitrag zu leisten. (Sie mögen Experimente? Registrieren Sie sich über “Sign Up → with Delta Chat”!)
@@ -1270,7 +1370,7 @@ forum veröffentlicht und diskutiert.
-
Mit einer Broadcast-Liste können Sie eine Nachricht an viele Empfänger gleichzeitig senden; wenn sie Ihnen antworten, erhalten Sie die Antwort in Ihrem direkten 1:1-Chat mit ihnen. Die Empfänger können einander nicht sehen.
+
Mit einer Broadcast-Liste können Sie eine Nachricht an viele Empfänger gleichzeitig senden; wenn sie Ihnen antworten, erhalten Sie die Antwort im Direktchat mit ihnen. Die Empfänger können einander nicht sehen.
Technisch gesehen handelt es sich um eine E-Mail mit vielen Empfängern in BCC.
Sie können die Funktion im Abschnitt “Experimentelle Features” in den erweiterten Einstellungen aktivieren. Dann können Sie im Dialogfeld “Neuer Chat” eine Broadcast-Liste erstellen.
Falls Sie mehr als ein Gerät verwenden, werden Broadcast-Listen derzeit nicht zwischen ihnen synchronisiert.
@@ -1290,7 +1390,7 @@ forum veröffentlicht und diskutiert.
Wenn Sie nun Ihren Standort in einem Chat teilen möchten, gehen Sie zu “Anhängen” und wählen Sie “Standort”. Sie können nun einen Zeitraum zwischen 5 Minuten und 6 Stunden festlegen, in dem Ihr Standort an Ihre Chat-Partner gestreamt wird.
Wenn sich Ihr Standort ändert, können die anderen im Chat ihn auf einer Karte im Chat sehen.
Um die Karte und die Standorte anderer anzuzeigen, müssen Sie die Funktion in den erweiterten Einstellungen aktivieren.
-
Diese Funktion teilt Ihren Standort mit niemandem außer Ihren Chat-Partnern. Aber: Um die Karte anzuzeigen, müssen wir Kartenkacheln von mapbox.com herunterladen. Wenn Sie also die Karte ansehen, wird mapbox.com nach der Karte eines bestimmten Gebiets gefragt. Wenn dies ein Datenschutzrisiko für Sie darstellt, ist diese Funktion möglicherweise nicht für Sie geeignet. Wir arbeiten daran, eine dezentrale Alternative für Mapbox zu finden.
+
Diese Funktion teilt Ihren Standort mit niemandem außer Ihren Chat-Partnern. Kartendaten werden von OpenStreetMap heruntergeladen.
Auf dem Desktop kann das Betriebssystem Ihren Standort normalerweise nicht bestimmen. Stattdessen können Sie mit der rechten Maustaste auf die Karte klicken und einen Ort beschreiben, der als Nachricht an den Chat gesendet wird, aber auch auf der Karte erscheint.
@@ -1306,7 +1406,7 @@ forum veröffentlicht und diskutiert.
Im Moment ist die Datenbankverschlüsselung noch sehr experimentell. Verlassen Sie sich zum Schutz nicht darauf, sondern nutzen Sie zusätzlich die Verschlüsselung Ihres Betriebssystems, sofern vorhanden.
Die Datenbankverschlüsselung verschlüsselt noch nicht die Blobs, sondern nur die Zeilen und Spalten der Datenbank. Dies bedeutet mehr oder weniger, dass Ihre Nachrichten sicher sind, aber nicht Ihre Anhänge.
Für iOS und Android werden die Verschlüsselungsschlüssel im Systemschlüsselbund gespeichert. Das bedeutet, dass die Verschlüsselung so sicher ist wie das Betriebssystem, auf dem sie ausgeführt wird.
-
Der Delta Chat-Desktop-Client bietet noch keine Datenbankverschlüsselung, da es keine Standardmethode zum Speichern der Verschlüsselungsschlüssel auf den verschiedenen unterstützten Plattformen gibt.
+
Der Delta-Chat-Desktop-Client bietet noch keine Datenbankverschlüsselung, da es keine Standardmethode zum Speichern der Verschlüsselungsschlüssel auf den verschiedenen unterstützten Plattformen gibt.
@@ -1317,7 +1417,7 @@ forum veröffentlicht und diskutiert.
-
Dies ist eine experimentelle Einstellung für BenutzerInnen, die serverseitige Regeln verwenden möchten. Dies wird nicht von allen Providern unterstützt, aber bei einigen können Sie Nachrichten mit einem “Chat-Version”-Header vom Server in den DeltaChat-Ordner verschieben. Normalerweise wird dies von der Delta Chat-App erledigt.
+
Dies ist eine experimentelle Einstellung für BenutzerInnen, die serverseitige Regeln verwenden möchten. Dies wird nicht von allen Providern unterstützt, aber bei einigen können Sie Nachrichten mit einem “Chat-Version”-Header vom Server in den DeltaChat-Ordner verschieben. Normalerweise wird dies von der Delta-Chat-App erledigt.
Die Aktivierung von “Nur aus DeltaChat-Ordner lesen” ist sinnvoll, wenn Sie beides haben:
@@ -1328,36 +1428,36 @@ forum veröffentlicht und diskutiert.
In diesem Fall muss Delta Chat den Posteingang nicht beobachten, und es reicht aus, nur den DeltaChat-Ordner zu beobachten.
-
+
- Wie kann ich mein Konto auf eine andere E-Mail-Adresse ändern?
+ Wie kann ich mein Profil auf eine andere E-Mail-Adresse ändern?
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
-You will get an information notice about the fact that you are moving to a new address.
-An additional notice will also show up in your “Device messages” chat.
+
Ändern Sie Ihre E-Mail-Adresse unter “Einstellungen → Erweitert → Passwort und E-Mail-Konto” und
+geben Sie das Passwort Ihres neuen E-Mail-Konto (und ggf. die Servereinstellungen) ein.
+Sie erhalten einen Hinweis darauf, dass Sie zu einer neuen E-Mail-Adresse umziehen.
+Ein zusätzlicher Hinweis erscheint auch in Ihrem Chat “Systemnachrichten”.
-
If possible, let your old e-mail provider forward all messages to your new address.
+
Wenn möglich, weisen Sie Ihren alten E-Mail-Provider an, alle Nachrichten an die neue Adresse weiterzuleiten.
-
Tell your contacts that you changed your address.
-Writing to guaranteed end-to-end encrypted chats and groups,
-will make them notice your move automatically
-and they will continue chatting with you using your new address.
+
Teilen Sie Ihren Kontakten mit, dass Sie Ihre E-Mail-Adresse geändert haben.
+Sobald Sie in “Garantiert Ende-zu-Ende-verschlüsselten” Chats schreiben,
+werden die anderen Mitglieder automatisch von Ihrem Umzug erfahren
+und werden mit Ihnen unter Ihrer neuen Adresse weiterchatten.
-
Note that Delta Chat will not retrieve messages anymore from your old e-mail provider.
-If you didn’t configure your e-mail provider to forward messages (step 2.)
-only those contacts to whom you sent a message in a guaranteed end-to-end encrypted chat
-will send messages to your new address.
+
Beachten Sie, dass Delta Chat keine Nachrichten mehr von Ihrem alten E-Mail-Anbieter abrufen wird.
+Wenn Sie Ihren E-Mail-Provider nicht für die Weiterleitung von Nachrichten konfiguriert haben (Schritt 2.)
+werden nur die Kontakte, denen Sie eine Nachricht in einem garantiert Ende-zu-Ende-verschlüsselten Chat gesendet haben
+gesendet haben, Nachrichten an Ihre neue Adresse senden.
- Delta Chat verwendet E-Mail - ist es dann wirklich ein Instant Messenger?
+ Weshalb muss ich mein E-Mail-Kennwort in Delta Chat eingeben? Ist das sicher?
+
+
+
+
+
Genau wie auch bei anderen E-Mail-Programmen (z. B. Thunderbird, K9-Mail oder Outlook) benötigt Delta Chat das Passwort, um E-Mails versenden zu können. Das Passwort wird nur auf Ihrem Gerät gespeichert und bei der Anmeldung an Ihren E-Mail-Anbieter gesendet.
+
+
Wenn Sie einen E-Mail-Anbieter wie gmail.com oder yandex.ru nutzen, der OAuth2 unterstützt, wird Ihr Passwort nicht auf Ihrem Gerät gespeichert. In diesem Fall wird nur ein Zugriffstoken genutzt.
+
+
Da Delta Chat Open Source ist, können Sie den Quellcode einsehen und sich davon überzeugen, dass Ihre Zugangsdaten sicher gehandhabt werden. Wir freuen uns über Feedback, das unsere App sicherer für all unsere NutzerInnen macht.
+
+
+
+
+ Welche Nachrichten erscheinen in Delta Chat?
+
+
+
+
+
In der Standardeinstellung zeigt Delta Chat alle E-Mails an.
+
+
Unter “Einstellungen → Erweitert → Normale E-Mails anzeigen” können Sie dies ändern. Sie haben die folgenden Optionen:
+
+
+
“Nein, nur Chats”: Es werden die von anderen Delta-Chat-Benutzern gesendeten Nachrichten sowie alle Antworten auf Ihre Nachrichten angezeigt. Dies ist sinnvoll, wenn Sie das gleiche E-Mail-Konto noch mit einer anderen E-Mail-App bearbeiten.
+
“Alle”: Delta Chat zeigt alle E-Mails an, die an Ihre E-Mail-Adresse gesendet werden. Dies ist sinnvoll, wenn Sie Delta Chat für alle Ihre E-Mails verwenden möchten, damit keine Nachricht verloren geht. Dies ist die Standardeinstellung.
+
“Akzeptierte Kontakte”: Delta Chat zeigt alle E-Mails von Kontakten an, mit denen Sie bereits einen Chat haben, aber neue Chats werden nur für Delta Chat-Nachrichten angezeigt. So können Sie von Fall zu Fall entscheiden, ob Sie eine Unterhaltung in Delta Chat oder in einer “normalen” E-Mail-App führen möchten.
+
+
+
+
+
+ Unterstützt Delta Chat HTML-E-Mails?
-
Typischerweise benötigt das Senden und Empfangen von Nachrichten nur wenige Sekunden. Es gibt Fälle, in denen es länger dauert, aber das trifft auch auf andere Messenger zu.
-
Das Chatten geht schnell, wenn beide Seiten die App aktiv verwenden. Wenn die App im Hintergrund läuft, kann es zu Verzögerungen kommen.
-
Das Empfangen von Nachrichten im Hintergrund kann deshalb manchmal Minuten dauern, weil Android und iOS Delta Chat daran hindert, im Hintergrund zu laufen, und die App so nur gelegentlich aktiv ist. Diese künstliche Verzögerung ist eher unter iOS zu spüren als unter Android.
-
Dass Android und iOS Apps, die im Hintergrund laufen, beenden, ist allerdings ein Problem, das viele legitime Apps haben. Für weitere Informationen siehe dontkillmyapp.com.
+
Ja. Eingehende HTML-Nachrichten erhalten eine Schaltfläche “Ganze Nachricht anzeigen”. Ausgehende E-Mails verwenden immer “Nur Text”.
+
+
+
+ Kann ich den E-Mail “Betreff” (das “Subject”) mit Delta Chat setzen?
+
+
+
+
+
Delta Chat setzt (und verschlüsselt!) die klassische E-Mail-Betreffzeile
+automatisch auf den Gruppennamen oder den Absendernamen.
+
+
Wenn Sie also den Betreff selbst festlegen möchten,
+zum Beispiel für eine formelle E-Mail an einen Geschäftskontakt,
+können Sie eine Gruppe erstellen
+erstellen, die nur Sie und den/die Empfänger enthält.
+Setzen Sie den Chat-Titel auf den von Ihnen gewünschten Betreff.
+Wenn die Empfänger Delta Chat nicht verwenden,
+wird sie wie eine normale,
+formelle E-Mail aussehen.
+Bonuspunkte für Professionalität gibt es,
+wenn Sie eine Signaturtext einfügen.
+
+
+
+
+ Was macht die Option “Kopie an mich selbst senden”?
+
+
+
+
+
Das Senden einer Kopie an Sie selbst stellt sicher, dass Sie Ihre eigenen Nachrichten auf all Ihren Geräten sehen. Wenn Sie mehrere Geräte nutzen, aber diese Option nicht eingeschaltet ist, sehen Sie nur die Nachrichten, die andere Ihnen geschickt haben, und die ausgehenden Nachrichten, die auf dem Gerät selbst verschickt wurden.
+
+
Die Kopie wird dabei an den Posteingang verschickt und von dort in den DeltaChat-Ordner verschoben. Delta Chat lädt niemals etwas in den Gesendet-Ordner hoch, weil dies bedeuten würde, dass eine Nachricht zweimal hochgeladen werden müsste (einmal durch SMTP und dann durch IMAP in den Gesendet-Ordner).
+
+
Die Standardeinstellung für “Kopie an mich selbst senden” ist “An”.
+
+
+
+
+ Warum gibt es die Funktion “Gesendet-Ordner beobachten”?
+
+
+
+
+
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.
+
+
Wir empfehlen für diesen Zweck aber “Delta Chat Desktop”; Sie können die App unter get.delta.chat herunterladen. Möglicherweise wird die Option “Gesendet-Ordner beobachten” zukünftig wegfallen; sie kommt aus einer Zeit, als Delta Chat Desktop noch nicht auf allen Plattformen zur Verfügung stand.
+
+
+
+
+ Warum kann ich “DeltaChat-Ordner beobachten” ausschalten?
+
+
+
+
+
Einige BenutzerInnen verwenden Delta Chat als reguläres E-Mail-Programm und möchten lieber den Posteingang anstatt des DeltaChat-Ordners verwenden. Wenn Sie “DeltaChat-Ordner beobachten” ausschalten, sollten Sie auch “Autom. Verschieben in den DeltaChat-Ordner” ausschalten. Andernfalls funktioniert die Verwendung auf mehreren Geräten möglicherweise nicht richtig.
+
@@ -1423,9 +1662,21 @@ Allerdings benötigen einige Anbieter besondere Einstellungen, um ordnungsgemä
Nein, Sie können sich nicht mit Delta Chat in ein Protonmail-, Tutanota- oder Criptext-Konto einloggen, da diese keinen Standard-E-Mail-Empfang über IMAP anbieten.
Ja, Sie können Delta Chat verwenden, um Nachrichten an Personen zu senden, die Protonmail, Tutanota oder Criptext verwenden. Diese Nachrichten werden jedoch nicht ende-zu-ende-verschlüsselt, da diese Anbieter keine mit dem Autocrypt-Standard kompatible Verschlüsselung verwenden.
Delta Chat kann Ende-zu-Ende-Verschlüsselung über jeden E-Mail-Anbieter mit jeder
-[Autocrypt-fähige E-Mail-Anwendung] (https://autocrypt.org/dev-status.html) herstellen
Da Sie ein E-Mail-Konto für Delta Chat 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.
+
+
Wenn Sie das Konto behalten, aber Delta Chat deinstallieren möchten, ist es ratsam, aktive Gruppen zu verlassen, bevor Sie Delta Chat deinstallieren.
+
@@ -1438,33 +1689,6 @@ Allerdings benötigen einige Anbieter besondere Einstellungen, um ordnungsgemä
-
-
- Wurde Delta Chat unabhängig auf Sicherheitslücken geprüft?
-
-
-
-
-
Das Delta-Chat-Projekt wurde in den letzten Jahren vier unabhängigen Sicherheitsprüfungen unterzogen:
-
-
-
-
Im Jahr 2019 analysierte Include Security die von Delta Chat verwendeten PGP und RSA Bibliotheken.
-Es wurden keine kritischen Probleme gefunden, aber zwei Probleme mit hohem Schweregrad, die wir anschließend behoben haben. Außerdem wurden ein mittelschweres und einige weniger schwerwiegende Probleme gefunden, aber es gab keine Möglichkeit, diese Schwachstellen in der Delta Chat-Implementierung auszunutzen. Einige dieser Schwachstellen haben wir dennoch nach Abschluss des Audits behoben. Sie können den [vollständigen Bericht hier] lesen (../assets/blog/2019-first-security-review.pdf).
-
-
-
Im Jahr 2020 analysierte Include Security Delta Chats Rust core, IMAP,SMTP, und TLS Bibliotheken.
-Es wurden keine kritischen oder hochgradig gefährlichen Probleme gefunden. Der Bericht wies auf einige Schwachstellen mittlerer Schwere hin - sie stellen für sich genommen keine Bedrohung für Delta Chat-Benutzer dar, da sie von der Umgebung abhängen, in der Delta Chat verwendet wird. Aus Gründen der Benutzerfreundlichkeit und der Kompatibilität können wir nicht alle Schwachstellen beseitigen und haben beschlossen, Sicherheitsempfehlungen für bedrohte Benutzer zu geben. Sie können den vollständigen Bericht hier lesen.
Anfang 2023 haben wir Sicherheits- und Datenschutzprobleme mit den “In Chats geteilten Apps”-Feature behoben, die mit Fehlern beim Sandboxing, insbesondere mit Chromium zusammenhängen. Wir haben daraufhin eine unabhängige Sicherheitsprüfung von Cure53 durchführen lassen, und alle gefundenen Probleme wurden mit den im April 2023 veröffentlichten 1.36 Releases behoben. Siehe hier für die vollständige Hintergrundgeschichte.
-
-
-
diff --git a/assets/help/delta-what-optim.png b/src/main/assets/help/delta-what-optim.png
similarity index 100%
rename from assets/help/delta-what-optim.png
rename to src/main/assets/help/delta-what-optim.png
diff --git a/assets/help/en/help.html b/src/main/assets/help/en/help.html
similarity index 79%
rename from assets/help/en/help.html
rename to src/main/assets/help/en/help.html
index e9f5b2935..fafa7fd24 100644
--- a/assets/help/en/help.html
+++ b/src/main/assets/help/en/help.html
@@ -4,17 +4,14 @@
Delta Chat is a new chat app that sends messages via e-mails, encrypted if possible, with Autocrypt.
-You do not have to sign up anywhere, just use your existing e-mail account with Delta Chat.
+
Delta Chat is a reliable, decentralized and secure messaging app,
+available for mobile and desktop platforms.
+
+
Delta Chat feels like Whatsapp or Telegram but you can also use and regard it as an e-mail app.
+You can signup anonymously to a variety of interoperable chatmail servers
+which are minimal e-mail servers optimized for fast and secure operations.
+Or you may use classic e-mail servers and an existing e-mail account
+in which case Delta Chat acts as an e-mail app.
@@ -117,9 +134,15 @@
-
With Delta Chat, you can write to every existing e-mail address - even
-if the recipient is not using the Delta Chat app. No need for the
-recipient to install the same app as yours, as with other messengers.
+
To securely setup contact with others scan an invite QR code
+or share an invite link.
+This is required when using a (default) chatmail-based chat profile
+because chatmail servers reject un-encrypted outgoing messages.
+
+
If you create a chat profile with a classic e-mail address
+you may manually create a contact if you know their e-mail address
+and then write a message to them
+even if the recipient is not using Delta Chat.
@@ -130,42 +153,25 @@ recipient to install the same app as yours, as with other messengers.
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
-
-
- Which messages do appear in Delta Chat?
-
-
-
-
-
By default, Delta Chat shows all e-mails.
-
-
At “Settings -> Chats &
-Media -> Show Classic E-Mails”, you can change this. You have these options:
-
-
-
“No, chats only”: Only messages sent by other Delta Chat users and replies to
-your Delta Chat messages are shown. This makes most sense if you use the same
-e-mail account for normal e-mails as well.
-
“All”: Delta Chat shows all e-mails that are sent to your email address. This
-makes sense if you want to use Delta Chat for all your e-mails, so no message
-gets lost. This is the default setting.
-
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
-you already have a chat, but new chats only pop up for Delta Chat messages.
-This helps to decide on a case-by-case basis whether you want to have a
-conversation in Delta Chat or in a “normal” e-mail app.
+
+
Anonymous chat profiles with fast, secure and interoperable chatmail servers
+which offer instant Push Notifications for iOS and Android devices.
+
+
+
Pervasive multi-profile and multi-device support on all platforms.
@@ -207,18 +213,25 @@ receive messages from this person, consider blocking them.
- How can I add or switch between multiple accounts?
+ What are profiles? How can I switch between them?
-
You can easily work with additional accounts on Delta Chat mobile and desktop clients by clicking either:
-
-
on the menu button and then ‘Switch Account’ (Android and desktop)
-
or the profile icon and then ‘Add Account’ (iOS)
-
+
A profile is a name, a picture and some additional information for encrypting messages.
+A profile lives on your device(s) only
+and uses a chatmail or a classic e-mail server to transport messages.
On first installation of Delta Chat a first profile is created.
+
+
Later, you can tap your profile image in the upper left corner to Add Profiles
+or to Switch Profiles.
+
+
You may want to use separate profiles for political, family or work related activities,
+or e. g. for a dedicated “spam-profile” with which you register at websites and platforms
+that tend to cause unsolicited messages (“spam”) sooner or later.
- Does Delta Chat support HTML e-mails?
+ Can I set a Signature Text/Status/Motto with Delta Chat?
-
Yes, incoming HTML messages come with a “Show full message” button.
-Outgoing messages always use plain text.
+
Yes,
+you can do so under “Settings > Profile > Signature Text”.
+Your contacts who use Delta Chat will see it
+when they view your contact details.
+To everyone else,
+It will appear as an e-mail signature
+below the text of all your messages.
-
+
- Why do I have to enter my E-Mail password into Delta Chat? Is this secure?
-
-
-
-
-
As with other E-Mail programs like Thunderbird, K9-Mail, or Outlook, the
-program needs the password so you can use it to send mails. Of course, the
-password is stored only on your device. The password is only transmitted to
-your E-Mail provider (when you login), which has access to your mails anyway.
-
-
If you use an E-Mail provider with OAuth2 support like gmail.com or yandex.ru,
-there is no need to store your password on the device. In this case, only an
-access token is used.
-
-
As Delta Chat is Open Source, you can check the Source
-Code
-if you want to verify that your credentials are handled securely. We are happy
-about feedback which makes the app more secure for all of our users.
-
-
-
-
- Which permissions does Delta Chat need?
-
-
-
-
-
Depending on the operating system in use,
-you may be asked to grant permissions to the app.
-This is what Delta Chat does with these permissions:
-
-
-
Camera (can be disallowed)
-
-
take pictures and videos: for sending Photos
-
-
-
Contacts (can be disallowed)
-
-
read your contacts: to discover contacts to chat with
-
-
-
Location (can be disallowed)
-
-
access approximate location (network location sources): for the location streaming feature
-
access precise location (GPS and network location sources): for the location streaming feature
-
-
-
Microphone (can be disallowed)
-
-
record audio: for audio messages
-
-
-
Storage (can be disallowed)
-
-
modify or delete the contents of your SD card: to download message attachments
-
read the contents of your SD card: to share files with your contacts
-
-
-
Other app capabilities
-
-
change your audio settings: so you can choose ring tones and volume for notifications and audio messages
-
run at startup: so you don’t have to start Delta Chat manually
-
control vibration: for notifications
-
view network connections: to connect to your E-Mail provider
-
prevent phone from sleeping: so you can easier copy the security code during the Autocrypt Setup Message
-
have full network access: to connect to your E-Mail provider
-
view Wi-Fi connections: to connect to your E-Mail provider
-
ask to ignore battery optimisations: for users who want to receive messages all the time
-
-
-
-
-
-
-
- What means Pinning, Muting, Archiving?
+ What do Pinning, Muting and Archiving mean?
@@ -393,22 +335,40 @@ have turned off read receipts, they will not see the green dot until you
message them or write to a group they’re in as well.
-
+
- How can I delete my account?
+ How do disappearing messages work?
-
As you use an e-mail account for Delta Chat,
-how you can delete your account depends on your e-mail provider.
-We don’t have any control over your e-mail account,
-so unfortunately we can’t help you with that.
+
You can turn on “disappearing messages”
+in the settings of a chat,
+at the top right of the chat window,
+by selecting a time span
+between 1 minute and 5 weeks.
-
If you want to keep the account,
-but uninstall Delta Chat,
-it is recommended to leave any group chat before uninstalling Delta Chat.
+
Until the setting is turned off again,
+each chat member’s Delta Chat app takes care
+of deleting the messages
+after the selected time span.
+The time span begins
+when the receiver first sees the message in Delta Chat.
+The messages are deleted
+both in each email account on the server,
+and in the app itself.
+
+
Note that you can rely on disappearing messages
+only as long as you trust your chat partners;
+malicious chat partners can take photos,
+or otherwise save, copy or forward messages before deletion.
+
+
Apart from that,
+if one chat partner uninstalls Delta Chat,
+the messages will not get deleted from their email account.
+They will most likely also not be decryptable anymore
+(as long as they were encrypted in the first place).
@@ -541,6 +501,170 @@ this way, all messages will be deleted from your device as soon as they
older than that.
+
+
+
+ What are Push Notifications? How can I get instant message delivery?
+
+
+
+
+
Push Notifications are sent by Apple and Google “Push services” to a user’s device
+so that an inactive Delta Chat app can fetch messages in the background
+and show notifications on a user’s phone if needed.
+
+
Push Notifications work with all chatmail servers on
+
+
+
+
iOS devices, by integrating with Apple Push services.
+
+
+
Android devices, by integrating with the Google FCM Push service,
+including on devices that use microG
+instead of proprietary Google code on the phone.
+
+
+
+
As of May 2024, classic e-mail servers do not support Push Notifications
+for Delta Chat users.
+
+
+
+
+ Are Push Notifications enabled on iOS devices? Is there an alternative?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Are Push notifications enabled / needed on Android devices?
+
+
+
+
+
If a “Push Service” is available, Delta Chat enables Push Notifications
+to achieve instant message delivery for all chatmail users.
+If you are using a classic e-mail provider instead of chatmail servers,
+Push Notifications are not available.
+
+
In the Delta Chat “Notifications” settings for “Instant delivery”
+you can change the following settings effecting all chat profiles:
+
+
+
+
Use Push Service: the default when using chatmail profiles and if
+a Push service is available on the phone.
+If you have both chatmail and classic e-mail profiles,
+then Push Notification will only work
+for incoming messages on chatmail profiles.
+
+
+
Use Background Connection: If you are not using a Push service,
+you may disable “battery optimizations” for Delta Chat,
+allowing it to fetch messages in the background.
+However, there could be delays from minutes to hours.
+Some Android vendors even restrict apps completely
+(see dontkillmyapp.com)
+and Delta Chat might not show incoming messages
+until you manually open the app again.
+
+
+
Force Background Connection: This is the fallback option
+if the previous options are not available or do not achieve “instant delivery”.
+Enabling it causes a permanent notification on your phone
+which may sometimes be “minified” with recent Android phones.
+
+
+
+
Both “Background Connection” options are energy-efficient and
+safe to try if you experience messages arrive only with long delays.
+
+
+
+
+ How private are Delta Chat Push Notifications?
+
+
+
+
+
Delta Chat Push Notification support avoids leakage of private information.
+It does not leak e-mail, IP address or message content (not even encrypted)
+to any system involved in the delivery of Push Notifications.
+
+
Here is how Delta Chat apps perform Push Notification delivery:
+
+
+
+
A Delta Chat app obtains a “device token” locally and stores it
+on the chatmail server.
+
+
+
When a chatmail server receives an e-mail for a Delta Chat user
+it forwards the “device token” to the central Delta Chat notification proxy.
+
+
+
The central Delta Chat notification proxy forwards
+the “device token” to the respective Push service (Apple, Google, etc.),
+without ever knowing the IP or e-mail address of Delta Chat users.
+
+
+
The central Push Service (Apple, Google, etc.)
+wakes up the Delta Chat app on your device
+to check for new messages in the background.
+It does not know about the chatmail or e-mail address of the device it wakes up.
+The central Apple/Google Push services never see an e-mail address (sender or receiver)
+and also never see any message content (also not in encrypted forms).
+
+
+
+
As of May 2024, chatmail servers know about “device tokens”
+but we plan to encrypt this information to the notification proxy
+such that the chatmail server never learns the device token.
+
+
The central Delta Chat notification proxy is small and fully implemented in Rust
+and forgets about device-tokens as soon as Apple/Google/etc processed them,
+usually in a matter of milliseconds.
+
+
Resulting from this overall privacy design, even the seizure of a chatmail server,
+or the full seizure of the central Delta Chat notification proxy
+would not reveal private information that Push services do not already have.
+
+
+
+
+ Why does Delta Chat integrate with centralized proprietary Apple/Google push services?
+
+
+
+
+
Delta Chat is a free and open source decentralized messenger with free server choice,
+but we want users to reliably experience “instant delivery” of messages,
+like they experience from Whatsapp, Signal or Telegram apps,
+without asking questions up-front that are more suited to expert users or developers.
Secure-Join protocols
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
@@ -594,49 +718,32 @@ guarantee end-to-end encrypted messages.
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
+
If you have a second communication channel with your chat partner,
+like a video chat or a different messenger,
+you can generate an invite link.
-
Inviter side:
+
If you are together in person,
+you can show a QR code to your chat partner.
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
+
For Group invitations,
+tap the chat group title to see its member list,
+and select “QR Invite code”.
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
+
For direct 1:1 chat invitations,
+tap the QR Code icon
+on the Delta Chat app main screen.
-
Joiner side:
+
Let your chat partner scan the QR image
+with their Delta Chat app,
+or click “Copy” or “Share” to create an invite link
+and share it with your chat partner.
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
@@ -690,7 +797,7 @@ but there is no green checkmark in the profile title.
This usually means that the contact “sent a message from another device”.
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
+please see Secure-Join protocols
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
@@ -718,7 +825,7 @@ even if the contact is a member there.
Your contact is using Delta Chat on a second device (phone or laptop)
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
+they should remove the profile from the new device
and add it as a second device as described here.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.
@@ -726,8 +833,8 @@ and guaranteed encryption is established with both devices of your contact.
Your contact reinstalled Delta Chat using their old account login
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
+they should remove the profile from the new device
+and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.
@@ -748,7 +855,7 @@ guaranteed end-to-end encryption will be automatically re-established.
Sometimes remaining in contact is more important than end-to-end encryption.
“Transport Layer Encryption” (TLS) may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
+But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.
In any case, you can not do much else than accept the warning.
@@ -914,12 +1021,12 @@ deliver messages to recipient’s devices.
Both for protecting against metadata-collecting e-mail servers
as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
+we recommend to use a chatmail server
+to create pseudonymous temporary profiles through QR-code scans.
+Note that Delta Chat apps on all platforms support multiple profiles
+so you can easily use situation-specific profiles next to your “main” profile
+with the knowledge that all their data, along with all metadata, will be deleted.
+Moreover, if a device is seized then contacts using temporary profiles
can not be identified easily, as compared to messengers which reveal
phone numbers in chat groups which in turn are often associated with legal identities.
@@ -978,7 +1085,7 @@ and their non-Autocrypt e-mail app.
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
+who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
it’s best to setup guaranteed end-to-end encryption with them
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
@@ -996,10 +1103,10 @@ even if the direct chat between you two has a
The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
+
Guaranteed end-to-end encrypted chats protect against MITM attacks
+and turning on disappearing messages deletes the messages
on the server after a user-configured time.
If you don’t need a longer-lived copy of your messages on the server,
@@ -1078,11 +1185,12 @@ Caution: Make sure the key is not protected by a password, or remove the passwor
-
The most likely cause is that your key is encrypted and/or uses
-a password. Such keys are not supported by Delta Chat. You could remove the
-passphrase encryption and the password and try the import again. If you want
-to keep your passphrase you’ll have to create an e-mail alias for use
-with Delta Chat such that Delta Chat’s key is tied to this e-mail alias.
+
The most likely cause is that your key is encrypted and/or uses a password.
+Such keys are not supported by Delta Chat.
+You could remove the passphrase encryption and the password and try the import again.
+
+
Another common error is having the wrong file ending.
+Use the ASCII armored format and an .asc file ending.
The Delta Chat project underwent four independent security audits and one
+independent security analysis, from most recent to older:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
2023 April, we fixed security and privacy issues with the “web
+apps shared in a chat” feature, related to failures of sandboxing
+especially with Chromium. We subsequently got an independent security
+audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
+See here for the full background story on end-to-end security in the web.
+
+
+
2023 March, Cure53 analyzed both the transport encryption of
+Delta Chat’s network connections and a reproducible mail server setup as
+recommended on this site.
+You can read more about the audit on our blog
+or read the full report here.
+
+
+
2020, Include Security analyzed Delta
+Chat’s Rust core,
+IMAP,
+SMTP, and
+TLS libraries.
+It did not find any critical or high-severity issues.
+The report raised a few medium-severity weaknesses -
+they are no threat to Delta Chat users on their own
+because they depend on the environment in which Delta Chat is used.
+For usability and compatibility reasons,
+we can not mitigate all of them
+and decided to provide security recommendations to threatened users.
+You can read the full report here.
+
+
+
2019, Include Security analyzed Delta
+Chat’s PGP and
+RSA libraries.
+It found no critical issues,
+but two high-severity issues that we subsequently fixed.
+It also revealed one medium-severity and some less severe issues,
+but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
+Some of them we nevertheless fixed since the audit was concluded.
+You can read the full report here.
+
+
+
@@ -1113,7 +1282,7 @@ For other programs, you should be able to find a solution online.
-
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
+
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
@@ -1151,10 +1320,19 @@ One device is not needed for the other to work.
Double-check both devices are in the same Wi-Fi or network
+
+
On Windows, go to Control Panel / Network and Internet
+and make sure, Private Network is selected as “Network profile type”
+(after transfer, you can change back to the original value)
+
Your system might have a “personal firewall”,
which is known to cause problems (especially on Windows).
Disable the personal firewall for Delta Chat on both ends and try again
+
+
+
Guest Networks may not allow devices to communicate with each other.
+If possible, use a non-guest network.
Ensure there is enough storage on the destination device
@@ -1166,7 +1344,7 @@ Do not exit Delta Chat.
Delta Chat is already logged in on the destination device?
-You can use multiple accounts per device, just add another account
If you still have problems or if you cannot scan a QR code
@@ -1189,8 +1367,8 @@ try the manual transfer described below
screen unlock PIN, pattern, or password. Then you can click on “Start
Backup”. This saves the backup file to your device. Now you have to transfer
it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
+
On the new device, in the “I already have a profile” menu,
+choose “restore from backup”. After import, your conversations, encryption
keys, and media should be copied to the new device.
If you use iOS: and you encounter difficulties, maybe
@@ -1221,56 +1399,6 @@ or the AppImage for Linux. You can find them on
get.delta.chat.
-
-
-
- What is the “Send Copy to Self” setting good for?
-
-
-
-
-
Sending a copy of your messages to yourself ensures that you receive your own
-messages on all devices. If you have multiple devices and don’t turn it on, you
-see only the messages from other people, and the messages you send from the
-current device.
-
-
The copy is sent to the Inbox, and then moved to the DeltaChat folder; it’s not
-put into the “Sent” folder. Delta Chat never uploads anything to the Sent
-folder because this would mean uploading a message twice (once through SMTP,
-and once through IMAP to Sent folder).
-
-
The default setting for copy-to-self is “no”.
-
-
-
-
- Why can I choose to watch the “Sent” folder?
-
-
-
-
-
The only reason one wants to watch the Sent folder is if you are using another
-mail program (like Thunderbird) next to your Delta Chat app, and want your MUA
-to participate in chat conversations.
-
-
However, we recommend using the Delta Chat Desktop Client; you can download it
-on get.delta.chat. The option to watch the “Sent”
-folder might go away in the future. It was introduced at a time where there was
-no Delta Chat Desktop client available on all platforms.
-
-
-
-
- Why can I choose not to watch the DeltaChat folder?
-
-
-
-
-
Some people use Delta Chat as a regular email client, and want to use the Inbox
-folder for their mail, instead of the DeltaChat folder. If you disable “Watch
-DeltaChat folder”, you should also disable “move chat messages to DeltaChat”.
-Otherwise, deleting messages or multi-device setups might not work properly.
-
@@ -1417,11 +1545,8 @@ streamed to your chat partners, between 5 minutes and 6 hours.
the chat.
To see the map and view locations of others, you need to turn on the feature
in the advanced settings.
-
This feature will not share your location with anyone except your chat
-partners. But: to show the map, we need to download map tiles from
-mapbox.com, so if you view the map, mapbox.com is asked for the map of a
-specific area. If this is a privacy risk for you, this feature might not be
-for you. We are working on finding a decentralized alternative for Mapbox.
+
This feature will not share your location with anyone except your chat partners.
+Map tiles are downloaded from OpenStreetMap.
On desktop, the OS typically can’t determine your location. Instead you can
right click on the map and describe a location, which is sent to the chat as
a message, but also appears on the map.
@@ -1472,18 +1597,18 @@ would be done by the Delta Chat app.
In this case, Delta Chat doesn’t need to watch the Inbox, and it’s enough to only watch the DeltaChat folder.
-
+
- How can I change my account to a different e-mail address?
+ How can I use a different e-mail address with my profile?
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
+
Change your address in “Settings → Advanced → Password and Account” and
+enter the password of your new e-mail account (and if necessary, server settings).
You will get an information notice about the fact that you are moving to a new address.
An additional notice will also show up in your “Device messages” chat.
@@ -1514,6 +1639,60 @@ it
.
+
+
+
+ Which permissions does Delta Chat need?
+
+
+
+
+
Depending on the operating system in use,
+you may be asked to grant permissions to the app.
+This is what Delta Chat does with these permissions:
+
+
+
Camera (can be disallowed)
+
+
take pictures and videos: for sending Photos
+
+
+
Contacts (can be disallowed)
+
+
read your contacts: to discover contacts to chat with
+
+
+
Location (can be disallowed)
+
+
access approximate location (network location sources): for the location streaming feature
+
access precise location (GPS and network location sources): for the location streaming feature
+
+
+
Microphone (can be disallowed)
+
+
record audio: for audio messages
+
+
+
Storage (can be disallowed)
+
+
modify or delete the contents of your SD card: to download message attachments
+
read the contents of your SD card: to share files with your contacts
+
+
+
Other app capabilities
+
+
change your audio settings: so you can choose ring tones and volume for notifications and audio messages
+
run at startup: so you don’t have to start Delta Chat manually
+
control vibration: for notifications
+
view network connections: to connect to your E-Mail provider
+
prevent phone from sleeping: so you can easier copy the security code during the Autocrypt Setup Message
+
have full network access: to connect to your E-Mail provider
+
view Wi-Fi connections: to connect to your E-Mail provider
+
ask to ignore battery optimisations: for achieving “instant message delivery”
- If Delta Chat uses E-Mail, is it really an Instant Messenger?
+ Why do I have to enter my E-Mail password into Delta Chat? Is this secure?
+
As with other E-Mail programs like Thunderbird, K9-Mail, or Outlook, the
+program needs the password so you can use it to send and receive mails. Of course, the
+password is stored only on your device. The password is only transmitted to
+your E-Mail provider (when you login), which has access to your mails anyway.
+
+
If you use an E-Mail provider with OAuth2 support like gmail.com or yandex.ru,
+there is no need to store your password on the device. In this case, only an
+access token is used.
+
+
As Delta Chat is Open Source, you can check the Source
+Code
+if you want to verify that your credentials are handled securely. We are happy
+about feedback which makes the app more secure for all of our users.
+
+
+
+
+ Which messages do appear in Delta Chat?
+
+
+
+
+
By default, Delta Chat shows all e-mails.
+
+
At “Settings → Advanced → Show Classic E-Mails”,
+you can change this. You have these options:
+
-
Sending and receiving messages takes a few seconds, typically. Sometimes
-there are cases where it takes longer but that is arguably true as well for
-any other messenger.
-
Instant chatting works fast if both parties are actively using the app. It’s
-sometimes slower if the app is running in the background.
-
Receiving messages then can take minutes because both Android and iOS often
-stop Delta Chat from running in the background, and only wake it up
-occasionally. This artificial delay is usually worse on iOS than on Android.
-
However, Android and iOS kill apps running in the background is a
-problem for many legitimate apps. For more information, see
-dontkillmyapp.com.
+
“No, chats only”: Only messages sent by other Delta Chat users and replies to
+your Delta Chat messages are shown. This makes most sense if you use the same
+e-mail account for normal e-mails as well.
+
“All”: Delta Chat shows all e-mails that are sent to your email address. This
+makes sense if you want to use Delta Chat for all your e-mails, so no message
+gets lost. This is the default setting.
+
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
+you already have a chat, but new chats only pop up for Delta Chat messages.
+This helps to decide on a case-by-case basis whether you want to have a
+conversation in Delta Chat or in a “normal” e-mail app.
+
+
+
+ Does Delta Chat support HTML e-mails?
+
+
+
+
+
Yes, incoming HTML messages come with a “Show full message” button.
+Outgoing messages always use plain text.
+
+
+
+
+ Can I set the E-Mail Subject with Delta Chat?
+
+
+
+
+
Delta Chat sets (and encrypts!) the classic e-mail subject
+automatically to the group name or to the sender name.
+
+
So if you want to set the subject yourself,
+for example for a formal e-mail to a business contact,
+you can create a group
+with only yourself and the recipient(s).
+Set the Chat Title to the Subject you want,
+and then send your e-mail as the first message.
+If the recipients don’t use Delta Chat,
+it will look like a normal,
+formal e-mail to them.
+You will get bonus professionalism points
+if you set a signature text.
+
+
+
+
+ What is the “Send Copy to Self” setting good for?
+
+
+
+
+
Sending a copy of your messages to yourself ensures that you receive your own
+messages on all devices. If you have multiple devices and don’t turn it on, you
+see only the messages from other people, and the messages you send from the
+current device.
+
+
The copy is sent to the Inbox, and then moved to the DeltaChat folder; it’s not
+put into the “Sent” folder. Delta Chat never uploads anything to the Sent
+folder because this would mean uploading a message twice (once through SMTP,
+and once through IMAP to Sent folder).
+
+
The default setting for “Send Copy to Self” is “on”.
+
+
+
+
+ Why can I choose to watch the “Sent” folder?
+
+
+
+
+
The only reason one wants to watch the Sent folder is if you are using another
+mail program (like Thunderbird) next to your Delta Chat app, and want your MUA
+to participate in chat conversations.
+
+
However, we recommend using the Delta Chat Desktop Client; you can download it
+on get.delta.chat. The option to watch the “Sent”
+folder might go away in the future. It was introduced at a time where there was
+no Delta Chat Desktop client available on all platforms.
+
+
+
+
+ Why can I choose not to watch the DeltaChat folder?
+
+
+
+
+
Some people use Delta Chat as a regular email client, and want to use the Inbox
+folder for their mail, instead of the DeltaChat folder. If you disable “Watch
+DeltaChat folder”, you should also disable “move chat messages to DeltaChat”.
+Otherwise, deleting messages or multi-device setups might not work properly.
As you use an e-mail account for Delta Chat,
+how you can delete your account depends on your e-mail provider.
+We don’t have any control over your e-mail account,
+so unfortunately we can’t help you with that.
+
+
If you want to keep the account,
+but uninstall Delta Chat,
+it is recommended to leave any group chat before uninstalling Delta Chat.
-
-
- Was Delta Chat independently audited for security vulnerabilities?
-
-
-
-
-
The Delta Chat project underwent four independent security audits in the last years:
-
-
-
-
In 2019, Include Security analyzed Delta
-Chat’s PGP and
-RSA libraries.
-It found no critical issues,
-but two high-severity issues that we subsequently fixed.
-It also revealed one medium-severity and some less severe issues,
-but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
-Some of them we nevertheless fixed since the audit was concluded.
-You can read the full report here.
-
-
-
In 2020, Include Security analyzed Delta
-Chat’s Rust core,
-IMAP,
-SMTP, and
-TLS libraries.
-It did not find any critical or high-severity issues.
-The report raised a few medium-severity weaknesses -
-they are no threat to Delta Chat users on their own
-because they depend on the environment in which Delta Chat is used.
-For usability and compatibility reasons,
-we can not mitigate all of them
-and decided to provide security recommendations to threatened users.
-You can read the full report here.
-
-
-
Beginning 2023, Cure53 analyzed both the transport encryption of
-Delta Chat’s network connections and a reproducible mail server setup as
-recommended on this site.
-You can read more about the audit on our blog
-or read the full report here.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
@@ -1691,7 +1944,7 @@ completing Rust/Python bindings and instigating a Chat-bot eco-system.
In 2021 we received further EU funding for two Next-Generation-Internet
-proposals, namely for EPPD - e-mail provider portability directory (~97K EUR) and AEAP - email address porting (~90K EUR) which resulted in better multi-account support, improved QR-code contact and group setups and many networking improvements on all platforms.
From End 2021 till March 2023 we received Internet Freedom funding (500K USD) from the
diff --git a/assets/help/es/help.html b/src/main/assets/help/es/help.html
similarity index 76%
rename from assets/help/es/help.html
rename to src/main/assets/help/es/help.html
index 25be0540b..b1bf44fd2 100644
--- a/assets/help/es/help.html
+++ b/src/main/assets/help/es/help.html
@@ -4,17 +4,14 @@
Delta Chat es una nueva aplicación de chat que envía mensajes por correo electrónico, encriptados si es posible, con Autocrypt.
-No tiene que registrarse en ningún lugar, solo use su cuenta de correo electrónico existente con Delta Chat.
+
Delta Chat is a reliable, decentralized and secure messaging app,
+available for mobile and desktop platforms.
+
+
Delta Chat feels like Whatsapp or Telegram but you can also use and regard it as an e-mail app.
+You can signup anonymously to a variety of interoperable chatmail servers
+which are minimal e-mail servers optimized for fast and secure operations.
+Or you may use classic e-mail servers and an existing e-mail account
+in which case Delta Chat acts as an e-mail app.
@@ -117,9 +134,15 @@
-
Con Delta Chat, puede escribir en cada dirección de correo electrónico existente - incluso
-si el destinatario no está utilizando la aplicación Delta Chat. No es necesario que el
-destinatario instale la misma aplicación que usted, como ocurre con otros mensajeros.
+
To securely setup contact with others scan an invite QR code
+or share an invite link.
+This is required when using a (default) chatmail-based chat profile
+because chatmail servers reject un-encrypted outgoing messages.
+
+
If you create a chat profile with a classic e-mail address
+you may manually create a contact if you know their e-mail address
+and then write a message to them
+even if the recipient is not using Delta Chat.
@@ -130,42 +153,25 @@ destinatario instale la misma aplicación que usted, como ocurre con otros mensa
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
-
-
- ¿Qué mensajes se muestran en Delta Chat?
-
-
-
-
-
Por defecto, Delta Chat muestra todos los e-mail
-
-
At “Settings -> Chats &
-Media -> Show Classic E-Mails”, you can change this. You have these options:
-
-
-
“No, chats only”: Only messages sent by other Delta Chat users and replies to
-your Delta Chat messages are shown. This makes most sense if you use the same
-e-mail account for normal e-mails as well.
-
“All”: Delta Chat shows all e-mails that are sent to your email address. This
-makes sense if you want to use Delta Chat for all your e-mails, so no message
-gets lost. This is the default setting.
-
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
-you already have a chat, but new chats only pop up for Delta Chat messages.
-This helps to decide on a case-by-case basis whether you want to have a
-conversation in Delta Chat or in a “normal” e-mail app.
+
+
Anonymous chat profiles with fast, secure and interoperable chatmail servers
+which offer instant Push Notifications for iOS and Android devices.
+
+
+
Pervasive multi-profile and multi-device support on all platforms.
@@ -202,18 +208,25 @@ conversation in Delta Chat or in a “normal” e-mail app.
- ¿Cómo puedo agregar o cambiar entre múltiples cuentas?
+ What are profiles? How can I switch between them?
-
Puedes trabajar fácilmente con cuentas adicionales en los clientes móviles y de escritorio de Delta Chat haciendo clic en cualquiera de las siguientes opciones:
-
-
en el botón de menú y luego en ‘Cambiar cuenta’ (Android y escritorio)
-
o en el icono de perfil y luego en ‘Agregar cuenta’ (iOS)
-
+
A profile is a name, a picture and some additional information for encrypting messages.
+A profile lives on your device(s) only
+and uses a chatmail or a classic e-mail server to transport messages.
On first installation of Delta Chat a first profile is created.
+
+
Later, you can tap your profile image in the upper left corner to Add Profiles
+or to Switch Profiles.
+
+
You may want to use separate profiles for political, family or work related activities,
+or e. g. for a dedicated “spam-profile” with which you register at websites and platforms
+that tend to cause unsolicited messages (“spam”) sooner or later.
- ¿Delta Chat soporta mensajes con formato HTML?
+ Can I set a Signature Text/Status/Motto with Delta Chat?
-
Sí, los mensajes HTML entrantes vienen con un botón “Mostrar mensaje completo”. Los mensajes salientes siempre usan texto plano.
-
-
-
-
- ¿Por qué debo ingresar mi contraseña de correo electrónico en Delta Chat? ¿Es esto seguro?
-
-
-
-
-
Al igual que con otros programas de correo electrónico como Thunderbird, K9-Mail o Outlook, el
-programa necesita la contraseña para que pueda usarla para enviar correos. Por supuesto, la
-contraseña se almacena solo en su dispositivo. La contraseña solo se transmite a
-su proveedor de correo electrónico (cuando inicia sesión), que tiene acceso a sus correos de todos modos.
-
-
Si utiliza un proveedor de correo electrónico con soporte de OAuth2 como gmail.com o yandex.ru,
-no es necesario almacenar su contraseña en el dispositivo. En este caso, solo se usa un
-token de acceso.
-
-
Como Delta Chat es de Código Abierto, puedes investigar el Código Fuente si quieres verificar que tus credenciales son gestionadas de manera segura.
-Estamos felices de recibir críticas que hagan la aplicación más segura para todos los usuarios.
-
-
-
-
- ¿Qué permisos necesita Delta Chat?
-
-
-
-
-
Dependiendo del sistema operativo en uso,
-quizás se te solicite garantizar permisos a la app.
-Esto es lo que hace Delta Chat con esos permisos:
-
-
-
Camera (puede ser desactivada)
-
-
tomar fotos y videos: para enviar fotos
-
-
-
Contactos (puede ser desactivado)
-
-
lectura de tus contactos: para descubrir con que contactos chatear
-
-
-
Ubicación (puede ser desactivada)
-
-
acceder a la ubicación aproximada (recursos de localización en red): para la función de transmitir ubicación
-
acceder a la ubicación precisa (recursos de ubicación en red y GPS): para la función de transmitir ubicación
-
-
-
Micrófono (puede ser desactivado)
-
-
grabar audio: para mensajes de audio
-
-
-
Almacenamiento (puede ser desactivado)
-
-
modificar o borrar el contenido de tu tarjeta SD: para descargar los adjuntos de los mensajes
-
leer el contenido de tu tarjeta SD: para compartir archivos con tus contactos
-
-
-
Otras capacidades de la app
-
-
modificar los ajustes de audio: así puedas elegir los ringtones y volumen para las notificaciones y mensajes de audio
-
lanzarse al inicio: así no tengas que iniciar Delta Chat de forma manual
-
control de vibración: para notificaciones
-
observar las conexiones de red: para conectarte a tu proveedor de correo electrónico
-
evitar que el teléfono duerma: así puedes copiar de forma sencilla el código de seguridad durante el mensaje de configuración de autoencriptación
-
tener acceso completo a la red: para conectarse a tu servidor de correo electrónico
-
mirar las conexiones de Wi-Fi: para conectarse a tu servidor de correo electrónico
-
ignorar optimizaciones de batería: para los usuarios que deseen recibir notificaciones en todo momento
-
-
-
+
Yes,
+you can do so under “Settings > Profile > Signature Text”.
+Your contacts who use Delta Chat will see it
+when they view your contact details.
+To everyone else,
+It will appear as an e-mail signature
+below the text of all your messages.
@@ -353,8 +298,8 @@ Los chats silenciados permanecen archivados hasta que los desar
-
To archive or pin a chat, long tap (Android), use the chat’s menu (Android/Desktop) or swipe to the left (iOS);
-to mute a chat, use the chat’s menu (Android/Desktop) or the chat’s profile (iOS).
+
Para archivar o fijar un chat, toque prolongadamente (Android), use el menú del chat (Android/Escritorio) o deslícese hacia la izquierda (iOS);
+para silenciar un chat, use el menú del chat (Android/Escritorio) o el perfil del chat (iOS).
@@ -384,20 +329,40 @@ have turned off read receipts, they will not see the green dot until you
message them or write to a group they’re in as well.
-
+
- ¿Cómo puedo eliminar mi cuenta?
+ ¿Cómo funciona la desaparición de mensajes?
-
As you use an e-mail account for Delta Chat,
-how you can delete your account depends on your e-mail provider.
-We don’t have any control over your e-mail account,
-so unfortunately we can’t help you with that.
+
Puedes activar “desaparición de mensajes”
+en la configuración de un chat,
+en la parte superior derecha de la ventana de chat,
+seleccionando un lapso de tiempo
+entre 1 minuto y 5 semanas.
-
Si quieres mantener la cuenta, pero desinstalar Delta Chat, se recomienda salir de cualquier chat grupal antes de desinstalar Delta Chat.
+
Hasta que la configuración se desactive nuevamente,
+La aplicación Delta Chat de cada miembro del chat se encarga
+de borrar los mensajes
+después del lapso de tiempo seleccionado.
+Comienza el lapso de tiempo
+cuando el receptor ve por primera vez el mensaje en Delta Chat.
+Los mensajes se eliminan.
+tanto en cada cuenta de correo electrónico en el servidor,
+y en la propia aplicación.
+
+
Tenga en cuenta que puede confiar en los mensajes que desaparecen
+sólo mientras confíes en tus compañeros de chat;
+compañeros de chat maliciosos pueden tomar fotos,
+o guardar, copiar o reenviar mensajes antes de eliminarlos.
+
+
Aparte de eso,
+si un compañero de chat desinstala Delta Chat,
+los mensajes no se eliminarán de su cuenta de correo electrónico.
+Lo más probable es que ya no sean descifrables.
+(siempre que estuvieran cifrados en primer lugar).
@@ -493,11 +458,11 @@ por lo que aunque sólo veas una marca, el mensaje puede haber sido leído.
-
By default, Delta Chat stores all messages locally on your device.
-If you e.g. want to save storage space at your mail provider,
-you can configure Delta Chat
-to delete old already-received messages on the server automatically.
-They still remain on your device until you delete them there, too.
+
De forma predeterminada, Delta Chat almacena todos los mensajes localmente en su dispositivo.
+Si por ej. desea ahorrar espacio de almacenamiento en su proveedor de correo,
+puedes configurar Delta Chat
+para eliminar automáticamente los mensajes antiguos ya recibidos en el servidor.
+Aún permanecen en su dispositivo hasta que los elimine allí también.
To turn it on, go to Delete Old Messages → Delete Messages from Server
@@ -506,9 +471,9 @@ You can set a timeframe between “At once” and “After 1 year”.
All e-mails received by Delta Chat will be deleted from the server after this timeframe.
-
Note that if you use Delta Chat on more than one device,
-you need to leave the message on the server with a sufficient timeframe
-so that the other device(s) can download them, too.
+
Tenga en cuenta que si utiliza Delta Chat en más de un dispositivo,
+debes dejar el mensaje en el servidor con un plazo de tiempo suficiente
+para que los otros dispositivos también puedan descargarlos.
@@ -529,6 +494,170 @@ this way, all messages will be deleted from your device as soon as they
older than that.
+
+
+
+ What are Push Notifications? How can I get instant message delivery?
+
+
+
+
+
Push Notifications are sent by Apple and Google “Push services” to a user’s device
+so that an inactive Delta Chat app can fetch messages in the background
+and show notifications on a user’s phone if needed.
+
+
Push Notifications work with all chatmail servers on
+
+
+
+
iOS devices, by integrating with Apple Push services.
+
+
+
Android devices, by integrating with the Google FCM Push service,
+including on devices that use microG
+instead of proprietary Google code on the phone.
+
+
+
+
As of May 2024, classic e-mail servers do not support Push Notifications
+for Delta Chat users.
+
+
+
+
+ Are Push Notifications enabled on iOS devices? Is there an alternative?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Are Push notifications enabled / needed on Android devices?
+
+
+
+
+
If a “Push Service” is available, Delta Chat enables Push Notifications
+to achieve instant message delivery for all chatmail users.
+If you are using a classic e-mail provider instead of chatmail servers,
+Push Notifications are not available.
+
+
In the Delta Chat “Notifications” settings for “Instant delivery”
+you can change the following settings effecting all chat profiles:
+
+
+
+
Use Push Service: the default when using chatmail profiles and if
+a Push service is available on the phone.
+If you have both chatmail and classic e-mail profiles,
+then Push Notification will only work
+for incoming messages on chatmail profiles.
+
+
+
Use Background Connection: If you are not using a Push service,
+you may disable “battery optimizations” for Delta Chat,
+allowing it to fetch messages in the background.
+However, there could be delays from minutes to hours.
+Some Android vendors even restrict apps completely
+(see dontkillmyapp.com)
+and Delta Chat might not show incoming messages
+until you manually open the app again.
+
+
+
Force Background Connection: This is the fallback option
+if the previous options are not available or do not achieve “instant delivery”.
+Enabling it causes a permanent notification on your phone
+which may sometimes be “minified” with recent Android phones.
+
+
+
+
Both “Background Connection” options are energy-efficient and
+safe to try if you experience messages arrive only with long delays.
+
+
+
+
+ How private are Delta Chat Push Notifications?
+
+
+
+
+
Delta Chat Push Notification support avoids leakage of private information.
+It does not leak e-mail, IP address or message content (not even encrypted)
+to any system involved in the delivery of Push Notifications.
+
+
Here is how Delta Chat apps perform Push Notification delivery:
+
+
+
+
A Delta Chat app obtains a “device token” locally and stores it
+on the chatmail server.
+
+
+
When a chatmail server receives an e-mail for a Delta Chat user
+it forwards the “device token” to the central Delta Chat notification proxy.
+
+
+
The central Delta Chat notification proxy forwards
+the “device token” to the respective Push service (Apple, Google, etc.),
+without ever knowing the IP or e-mail address of Delta Chat users.
+
+
+
The central Push Service (Apple, Google, etc.)
+wakes up the Delta Chat app on your device
+to check for new messages in the background.
+It does not know about the chatmail or e-mail address of the device it wakes up.
+The central Apple/Google Push services never see an e-mail address (sender or receiver)
+and also never see any message content (also not in encrypted forms).
+
+
+
+
As of May 2024, chatmail servers know about “device tokens”
+but we plan to encrypt this information to the notification proxy
+such that the chatmail server never learns the device token.
+
+
The central Delta Chat notification proxy is small and fully implemented in Rust
+and forgets about device-tokens as soon as Apple/Google/etc processed them,
+usually in a matter of milliseconds.
+
+
Resulting from this overall privacy design, even the seizure of a chatmail server,
+or the full seizure of the central Delta Chat notification proxy
+would not reveal private information that Push services do not already have.
+
+
+
+
+ Why does Delta Chat integrate with centralized proprietary Apple/Google push services?
+
+
+
+
+
Delta Chat is a free and open source decentralized messenger with free server choice,
+but we want users to reliably experience “instant delivery” of messages,
+like they experience from Whatsapp, Signal or Telegram apps,
+without asking questions up-front that are more suited to expert users or developers.
Protocolos de Secure-Join
se utilizan para establecer chats con cifrado de extremo a extremo garantizado
que protege contra ataques de red y servidores comprometidos.
Los chats marcados con una estampilla verde
@@ -582,45 +711,32 @@ garantizan mensajes cifrados de extremo a extremo.
-
Encuentrate con tu compañero de chat fuera de Delta Chat, preferiblemente en persona, pero también está bien utilizar un segundo canal como una videollamada o una applicaciónde chat diferente. Realiza el siguiente procedimiento de mostrar/escanear QR con tu compañero de chat.
+
If you have a second communication channel with your chat partner,
+like a video chat or a different messenger,
+you can generate an invite link.
-
Inviter side:
+
If you are together in person,
+you can show a QR code to your chat partner.
-
Invitación de grupo:
-Toca el título del grupo de chat para ver la lista de miembros y selecciona “Código de invitación QR”.
-Comparte la imagen del código QR con la otra persona, ya sea en persona o a través de otro canal de comunicación.
+
For Group invitations,
+tap the chat group title to see its member list,
+and select “QR Invite code”.
-
Invitación de chat directo:
-Toca el ícono del código QR
-en la pantalla principal de la aplicación Delta Chat –
-en el escritorio, el ícono del QR está en el menú de sándwich del lado izquierdo.
-Comparte la imagen del QR con la otra persona, ya sea en persona o a través de otro canal de comunicación.
+
For direct 1:1 chat invitations,
+tap the QR Code icon
+on the Delta Chat app main screen.
-
Joiner side:
+
Let your chat partner scan the QR image
+with their Delta Chat app,
+or click “Copy” or “Share” to create an invite link
+and share it with your chat partner.
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
-
-
-
Tap “OK”
-
-
-
-
Both Inviter and Joiner:
-
-
Espere mientras se intercambian los mensajes de Secure-Join entre ambos dispositivos.
@@ -669,7 +785,7 @@ hasta llegar al que hizo un escaneo directo de QR conti
Ten en cuenta que en un perfil de contacto puedes ver y tocar a las personas que te presentaron a ese contacto, pero puede pasar que no haya una estampilla verde en el título del perfil. Esto generalmente significa que el contacto “envió un mensaje desde otro dispositivo”.
-
Para obtener una discusión más detallada sobre “cifrado de extremo a extremo garantizado”, por favor consulta los protocolos Secure-Join y lee específicamente sobre “Grupos Verificados”, el término técnico de lo que aquí se llama chats “marcados con una estampilla verde” o “cifrados de extremo a extremo garantizado”.
+
Para obtener una discusión más detallada sobre “cifrado de extremo a extremo garantizado”, por favor consulta los protocolos Secure-Join y lee específicamente sobre “Grupos Verificados”, el término técnico de lo que aquí se llama chats “marcados con una estampilla verde” o “cifrados de extremo a extremo garantizado”.
@@ -863,11 +979,11 @@ even if the message was not end-to-end encrypted.
WebRTC room URL
-
E-Mail servers do not get access to this protected metadata
-but they do see the message date as well as the message size,
-and, more importantly, the sender and receiver addresses.
-E-mail servers need receiver addresses to route and
-deliver messages to recipient’s devices.
+
Los servidores de correo electrónico no obtienen acceso a estos metadatos protegidos
+pero sí ven la fecha del mensaje así como el tamaño del mensaje,
+y, lo que es más importante, las direcciones del remitente y del destinatario.
+Los servidores de correo electrónico necesitan direcciones de destinatarios para enrutar y
+entregar mensajes a los dispositivos del destinatario.
@@ -879,12 +995,12 @@ deliver messages to recipient’s devices.
Both for protecting against metadata-collecting e-mail servers
as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
+we recommend to use a chatmail server
+to create pseudonymous temporary profiles through QR-code scans.
+Note that Delta Chat apps on all platforms support multiple profiles
+so you can easily use situation-specific profiles next to your “main” profile
+with the knowledge that all their data, along with all metadata, will be deleted.
+Moreover, if a device is seized then contacts using temporary profiles
can not be identified easily, as compared to messengers which reveal
phone numbers in chat groups which in turn are often associated with legal identities.
@@ -947,7 +1063,7 @@ and their non-Autocrypt e-mail app.
Los chats con cifrado de extremo a extremo garantizado protegen contra ataques MITM
y al activar “mensajes efímeros” se borran los mensajes
@@ -1012,12 +1128,14 @@ which has been .asc.
The Delta Chat project underwent four independent security audits and one
+independent security analysis, from most recent to older:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
2023 April, we fixed security and privacy issues with the “web
+apps shared in a chat” feature, related to failures of sandboxing
+especially with Chromium. We subsequently got an independent security
+audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
+See here for the full background story on end-to-end security in the web.
+
+
+
2023 March, Cure53 analyzed both the transport encryption of
+Delta Chat’s network connections and a reproducible mail server setup as
+recommended on this site.
+You can read more about the audit on our blog
+or read the full report here.
+
+
+
2020, Include Security analyzed Delta
+Chat’s Rust core,
+IMAP,
+SMTP, and
+TLS libraries.
+It did not find any critical or high-severity issues.
+The report raised a few medium-severity weaknesses -
+they are no threat to Delta Chat users on their own
+because they depend on the environment in which Delta Chat is used.
+For usability and compatibility reasons,
+we can not mitigate all of them
+and decided to provide security recommendations to threatened users.
+You can read the full report here.
+
+
+
2019, Include Security analyzed Delta
+Chat’s PGP and
+RSA libraries.
+It found no critical issues,
+but two high-severity issues that we subsequently fixed.
+It also revealed one medium-severity and some less severe issues,
+but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
+Some of them we nevertheless fixed since the audit was concluded.
+You can read the full report here.
+
+
+
@@ -1081,14 +1261,14 @@ and wait a moment until a QR code is shown
On the second device, start Delta Chat, select Add as Second Device, and scan the QR code from the old device
-
Transfer should start after a few seconds and during transfer both devices will show the progress.
-Wait until it is finished on both devices.
+
La transferencia debería comenzar después de unos segundos y durante la transferencia ambos dispositivos mostrarán el progreso.
+Espere hasta que termine en ambos dispositivos.
-
In contrast to many other messengers, after successful transfer,
-both devices are completely independent.
-One device is not needed for the other to work.
+
A diferencia de muchas otras aplicaciones de mensajería, después de una transferencia exitosa,
+ambos dispositivos son completamente independientes.
+No es necesario un dispositivo para que el otro funcione.
@@ -1102,10 +1282,19 @@ One device is not needed for the other to work.
Vuelve a verificar que ambos dispositivos estén en la misma Wi-Fi o red
+
+
On Windows, go to Control Panel / Network and Internet
+and make sure, Private Network is selected as “Network profile type”
+(after transfer, you can change back to the original value)
+
Your system might have a “personal firewall”,
which is known to cause problems (especially on Windows).
Disable the personal firewall for Delta Chat on both ends and try again
+
+
+
Guest Networks may not allow devices to communicate with each other.
+If possible, use a non-guest network.
Asegurate que haya suficiente espacio en el dispositivo destino
@@ -1117,7 +1306,7 @@ Do not exit Delta Chat.
Delta Chat is already logged in on the destination device?
-You can use multiple accounts per device, just add another account
If you still have problems or if you cannot scan a QR code
@@ -1140,8 +1329,8 @@ try the manual transfer described below
screen unlock PIN, pattern, or password. Then you can click on “Start
Backup”. This saves the backup file to your device. Now you have to transfer
it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
+
On the new device, in the “I already have a profile” menu,
+choose “restore from backup”. After import, your conversations, encryption
keys, and media should be copied to the new device.
If you use iOS: and you encounter difficulties, maybe
@@ -1172,48 +1361,6 @@ o el AppImage para Linux. Puedes encontrarlos en
get.delta.chat.
Enviar una copia de sus mensajes a usted mismo asegura que recibirá sus propios mensajes en todos los dispositivos. Si tiene varios dispositivos y no habilita esta opción, solo verá los mensajes de otras personas y los mensajes que envíe desde el dispositivo actual.
-
-
La copia se envía a la bandeja de entrada y luego se mueve a la carpeta DeltaChat; no se coloca en la carpeta “Enviados”. Delta Chat nunca carga nada en la carpeta Enviados porque esto significaría cargar un mensaje dos veces (una a través de SMTP y otra a través de IMAP en la carpeta Enviados).
-
-
La configuración predeterminada para “Enviar autocopia” es “no”.
La única razón por la que uno quiere ver la carpeta Enviados es si está utilizando otro
-programa de correo (como Thunderbird) a la vez que su aplicación Delta Chat, y desea que su MUA
-también participe en conversaciones de chat.
-
-
No obstante, recomendamos utilizar el cliente de escritorio Delta Chat; puede descargarlo
-en get.delta.chat. 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 Delta Chat Desktop disponible en todas las plataformas.
-
-
-
-
- ¿Por qué puedo elegir no monitorear la carpeta DeltaChat?
-
-
-
-
-
Algunas personas usan Delta Chat como un cliente de correo electrónico normal y desean mantener los correos en la bandeja de entrada, en lugar de la carpeta DeltaChat. Si deshabilita “Monitorear carpeta DeltaChat”, también debe deshabilitar “mover automáticamente a la carpeta DeltaChat”.
-De lo contrario, eliminar mensajes o configuraciones de dispositivos múltiples podría no funcionar correctamente.
-
@@ -1235,15 +1382,15 @@ extendable messenger.
-
webxdc apps can not send data to the Internet, or download anything.
-
A webxdc app can only exchange data within a Delta Chat chat, with its
-copies on the devices of your chat partners. Other than that, it’s completely
-isolated from the Internet.
-
The privacy a webxdc app offers is the privacy of your chat - as long as you
-trust the people you chat with, you can trust the webxdc app as well.
-
This also means: it can be a privacy risk to open webxdc apps in chats where
-you don’t trust the members - as you know it from e-mail attachments, where
-you only open attachments from senders you trust, and not from spammers.
+
Las aplicaciones webxdc no pueden enviar datos a Internet ni descargar nada.
+
Una aplicación webxdc solo puede intercambiar datos dentro de un chat de Delta Chat, con su
+copias en los dispositivos de tus compañeros de chat. Aparte de eso, es completamente
+aislado de Internet.
+
La privacidad que ofrece una aplicación webxdc es la privacidad de tu chat, siempre y cuando
+confíe en las personas con las que chateas, también puedes confiar en la aplicación webxdc.
+
Esto también significa: puede suponer un riesgo para la privacidad abrir aplicaciones webxdc en chats donde
+no confías en los miembros, como lo sabes por los archivos adjuntos de correos electrónicos, donde
+solo abre archivos adjuntos de remitentes en los que confía y no de spammers.
@@ -1360,11 +1507,8 @@ streamed to your chat partners, between 5 minutes and 6 hours.
the chat.
To see the map and view locations of others, you need to turn on the feature
in the advanced settings.
-
This feature will not share your location with anyone except your chat
-partners. But: to show the map, we need to download map tiles from
-mapbox.com, so if you view the map, mapbox.com is asked for the map of a
-specific area. If this is a privacy risk for you, this feature might not be
-for you. We are working on finding a decentralized alternative for Mapbox.
+
This feature will not share your location with anyone except your chat partners.
+Map tiles are downloaded from OpenStreetMap.
On desktop, the OS typically can’t determine your location. Instead you can
right click on the map and describe a location, which is sent to the chat as
a message, but also appears on the map.
@@ -1422,7 +1566,10 @@ platforms.
-
Cambia tu dirección en “Configuración - Contraseña y cuenta” e ingresa la contraseña de tu nueva cuenta (y si es necesario, la configuración del servidor). Recibirás un aviso informativo sobre el hecho de que te estás mudando a una nueva dirección. También aparecerá un aviso adicional en tu chat de “Mensajes del dispositivo”.
+
Change your address in “Settings → Advanced → Password and Account” and
+enter the password of your new e-mail account (and if necessary, server settings).
+You will get an information notice about the fact that you are moving to a new address.
+An additional notice will also show up in your “Device messages” chat.
Si es posible, permite que tu antiguo proveedor de correo electrónico reenvíe todos los mensajes a tu nueva dirección.
@@ -1448,6 +1595,60 @@ it.
+
+
+
+ ¿Qué permisos necesita Delta Chat?
+
+
+
+
+
Dependiendo del sistema operativo en uso,
+quizás se te solicite garantizar permisos a la app.
+Esto es lo que hace Delta Chat con esos permisos:
+
+
+
Camera (can be disallowed)
+
+
take pictures and videos: for sending Photos
+
+
+
Contacts (can be disallowed)
+
+
read your contacts: to discover contacts to chat with
+
+
+
Location (can be disallowed)
+
+
access approximate location (network location sources): for the location streaming feature
+
access precise location (GPS and network location sources): for the location streaming feature
+
+
+
Microphone (can be disallowed)
+
+
record audio: for audio messages
+
+
+
Storage (can be disallowed)
+
+
modify or delete the contents of your SD card: to download message attachments
+
read the contents of your SD card: to share files with your contacts
+
+
+
Other app capabilities
+
+
change your audio settings: so you can choose ring tones and volume for notifications and audio messages
+
run at startup: so you don’t have to start Delta Chat manually
+
control vibration: for notifications
+
view network connections: to connect to your E-Mail provider
+
prevent phone from sleeping: so you can easier copy the security code during the Autocrypt Setup Message
+
have full network access: to connect to your E-Mail provider
+
view Wi-Fi connections: to connect to your E-Mail provider
+
ask to ignore battery optimisations: for achieving “instant message delivery”
- Si Delta Chat utiliza el correo electrónico, ¿es realmente una aplicación de mensajería instantánea?
+ ¿Por qué debo ingresar mi contraseña de correo electrónico en Delta Chat? ¿Es esto seguro?
+
Al igual que con otros programas de correo electrónico como Thunderbird, K9-Mail o Outlook, el
+programa necesita la contraseña para que pueda usarla para enviar correos. Por supuesto, la
+contraseña se almacena solo en su dispositivo. La contraseña solo se transmite a
+su proveedor de correo electrónico (cuando inicia sesión), que tiene acceso a sus correos de todos modos.
+
+
Si utiliza un proveedor de correo electrónico con soporte de OAuth2 como gmail.com o yandex.ru,
+no es necesario almacenar su contraseña en el dispositivo. En este caso, solo se usa un
+token de acceso.
+
+
Como Delta Chat es de Código Abierto, puedes investigar el Código Fuente si quieres verificar que tus credenciales son gestionadas de manera segura.
+Estamos felices de recibir críticas que hagan la aplicación más segura para todos los usuarios.
+
+
+
+
+ ¿Qué mensajes se muestran en Delta Chat?
+
+
+
+
+
Por defecto, Delta Chat muestra todos los e-mail
+
+
At “Settings → Advanced → Show Classic E-Mails”,
+you can change this. You have these options:
+
-
Sending and receiving messages takes a few seconds, typically. Sometimes
-there are cases where it takes longer but that is arguably true as well for
-any other messenger.
-
Instant chatting works fast if both parties are actively using the app. It’s
-sometimes slower if the app is running in the background.
-
Receiving messages then can take minutes because both Android and iOS often
-stop Delta Chat from running in the background, and only wake it up
-occasionally. This artificial delay is usually worse on iOS than on Android.
-
However, Android and iOS kill apps running in the background is a
-problem for many legitimate apps. For more information, see
-dontkillmyapp.com.
+
“No, chats only”: Only messages sent by other Delta Chat users and replies to
+your Delta Chat messages are shown. This makes most sense if you use the same
+e-mail account for normal e-mails as well.
+
“All”: Delta Chat shows all e-mails that are sent to your email address. This
+makes sense if you want to use Delta Chat for all your e-mails, so no message
+gets lost. This is the default setting.
+
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
+you already have a chat, but new chats only pop up for Delta Chat messages.
+This helps to decide on a case-by-case basis whether you want to have a
+conversation in Delta Chat or in a “normal” e-mail app.
Sí, los mensajes HTML entrantes vienen con un botón “Mostrar mensaje completo”. Los mensajes salientes siempre usan texto plano.
+
+
+
+
+ Can I set the E-Mail Subject with Delta Chat?
+
+
+
+
+
Delta Chat sets (and encrypts!) the classic e-mail subject
+automatically to the group name or to the sender name.
+
+
So if you want to set the subject yourself,
+for example for a formal e-mail to a business contact,
+you can create a group
+with only yourself and the recipient(s).
+Set the Chat Title to the Subject you want,
+and then send your e-mail as the first message.
+If the recipients don’t use Delta Chat,
+it will look like a normal,
+formal e-mail to them.
+You will get bonus professionalism points
+if you set a signature text.
Enviar una copia de sus mensajes a usted mismo asegura que recibirá sus propios mensajes en todos los dispositivos. Si tiene varios dispositivos y no habilita esta opción, solo verá los mensajes de otras personas y los mensajes que envíe desde el dispositivo actual.
+
+
La copia se envía a la bandeja de entrada y luego se mueve a la carpeta DeltaChat; no se coloca en la carpeta “Enviados”. Delta Chat nunca carga nada en la carpeta Enviados porque esto significaría cargar un mensaje dos veces (una a través de SMTP y otra a través de IMAP en la carpeta Enviados).
+
+
The default setting for “Send Copy to Self” is “on”.
La única razón por la que uno quiere ver la carpeta Enviados es si está utilizando otro
+programa de correo (como Thunderbird) a la vez que su aplicación Delta Chat, y desea que su MUA
+también participe en conversaciones de chat.
+
+
No obstante, recomendamos utilizar el cliente de escritorio Delta Chat; puede descargarlo
+en get.delta.chat. 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 Delta Chat Desktop disponible en todas las plataformas.
+
+
+
+
+ ¿Por qué puedo elegir no monitorear la carpeta DeltaChat?
+
+
+
+
+
Algunas personas usan Delta Chat como un cliente de correo electrónico normal y desean mantener los correos en la bandeja de entrada, en lugar de la carpeta DeltaChat. Si deshabilita “Monitorear carpeta DeltaChat”, también debe deshabilitar “mover automáticamente a la carpeta DeltaChat”.
+De lo contrario, eliminar mensajes o configuraciones de dispositivos múltiples podría no funcionar correctamente.
Al utilizar una cuenta de correo electrónico para Delta Chat,
+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.
+
+
Si quieres mantener la cuenta, pero desinstalar Delta Chat, se recomienda salir de cualquier chat grupal antes de desinstalar Delta Chat.
-
-
- ¿Se auditó Delta Chat de forma independiente en busca de vulnerabilidades de seguridad?
-
-
-
-
-
The Delta Chat project underwent four independent security audits in the last years:
-
-
-
-
In 2019, Include Security analyzed Delta
-Chat’s PGP and
-RSA libraries.
-It found no critical issues,
-but two high-severity issues that we subsequently fixed.
-It also revealed one medium-severity and some less severe issues,
-but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
-Some of them we nevertheless fixed since the audit was concluded.
-You can read the full report here.
-
-
-
In 2020, Include Security analyzed Delta
-Chat’s Rust core,
-IMAP,
-SMTP, and
-TLS libraries.
-It did not find any critical or high-severity issues.
-The report raised a few medium-severity weaknesses -
-they are no threat to Delta Chat users on their own
-because they depend on the environment in which Delta Chat is used.
-For usability and compatibility reasons,
-we can not mitigate all of them
-and decided to provide security recommendations to threatened users.
-You can read the full report here.
-
-
-
Beginning 2023, Cure53 analyzed both the transport encryption of
-Delta Chat’s network connections and a reproducible mail server setup as
-recommended on this site.
-You can read more about the audit on our blog
-or read the full report here.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
@@ -1624,7 +1886,7 @@ completing Rust/Python bindings and instigating a Chat-bot eco-system.
In 2021 we received further EU funding for two Next-Generation-Internet
-proposals, namely for EPPD - e-mail provider portability directory (~97K EUR) and AEAP - email address porting (~90K EUR) which resulted in better multi-account support, improved QR-code contact and group setups and many networking improvements on all platforms.
From End 2021 till March 2023 we received Internet Freedom funding (500K USD) from the
diff --git a/assets/help/fr/help.html b/src/main/assets/help/fr/help.html
similarity index 79%
rename from assets/help/fr/help.html
rename to src/main/assets/help/fr/help.html
index 7c76be623..671e4bd23 100644
--- a/assets/help/fr/help.html
+++ b/src/main/assets/help/fr/help.html
@@ -4,17 +4,14 @@
Delta Chat est une application de clavardage qui utilise le courrier électronique pour délivrer ses messages et les chiffre avec Autocrypt lorsque c’est possible.
-Vous n’avez pas besoin de vous créer un nouveau compte, vous pouvez simplement utiliser votre compte courriel existant avec Delta Chat.
+
Delta Chat is a reliable, decentralized and secure messaging app,
+available for mobile and desktop platforms.
+
+
Delta Chat feels like Whatsapp or Telegram but you can also use and regard it as an e-mail app.
+You can signup anonymously to a variety of interoperable chatmail servers
+which are minimal e-mail servers optimized for fast and secure operations.
+Or you may use classic e-mail servers and an existing e-mail account
+in which case Delta Chat acts as an e-mail app.
@@ -117,7 +134,15 @@
-
Avec Delta Chat, vous pouvez écrire à toutes les adresses courriels existantes, même si le destinataire n’utilise pas l’application. Votre correspondant pourra simplement répondre au courriel qu’il aura reçu. Contrairement aux autres messageries instantanées, il n’est pas nécessaire que vos amis installent le même client pour discuter avec vous.
+
To securely setup contact with others scan an invite QR code
+or share an invite link.
+This is required when using a (default) chatmail-based chat profile
+because chatmail servers reject un-encrypted outgoing messages.
+
+
If you create a chat profile with a classic e-mail address
+you may manually create a contact if you know their e-mail address
+and then write a message to them
+even if the recipient is not using Delta Chat.
@@ -128,34 +153,25 @@
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
-
-
- Quels sont les messages qui apparaissent dans Delta Chat ?
-
-
-
-
-
Par défaut, Delta Chat affiche tous les courriels.
-
-
Vous pouvez changer cette préférence en vous rendant dans vos “Paramètres -> Discussions & fichiers multimédia -> Voir les courriels classiques”. Trois options sont disponibles :
-
-
-
“Non, seulement les discussions”: vous verrez seulement les messages envoyés par d’autres utilisateurs de Delta Chat et les réponses à vos messages Delta Chat. Cette option est recommandée si vous utilisez le même compte pour recevoir aussi des courriels normaux.
-
“Tout”: vous verrez dans Delta Chat tous les courriels envoyés à votre adresse. Cette option est recommandée si vous souhaitez utiliser Delta Chat pour tous vos courriels, afin de ne rater aucun message.
-
“Pour les contacts acceptés”: vous verrez dans Delta Chat tous les courriels envoyés par les personnes avec qui vous avez déjà ouvert une discussion, mais les notifications de nouvelles conversations ne s’afficheront que pour des messages envoyés via Delta Chat. Cette option vous permet de décider au cas par cas si vous souhaitez échanger via Delta Chat ou via une application de courriel “classique”.
+
+
Anonymous chat profiles with fast, secure and interoperable chatmail servers
+which offer instant Push Notifications for iOS and Android devices.
+
+
+
Pervasive multi-profile and multi-device support on all platforms.
@@ -194,18 +210,25 @@ recevoir de messages de cette personne, nous vous conseillons de la bloquer<
- Comment naviguer entre plusieurs comptes et comment en ajouter ?
+ What are profiles? How can I switch between them?
-
Vous pouvez facilement gérer des comptes supplémentaires sur les clients Delta Chat mobile ou de bureau en cliquant :
-
-
soit sur le bouton du menu, puis sur “Changer de compte” (Android et PC) ;
-
soit sur l’icône de profil, puis sur “Ajouter un compte” (iOS).
-
+
A profile is a name, a picture and some additional information for encrypting messages.
+A profile lives on your device(s) only
+and uses a chatmail or a classic e-mail server to transport messages.
On first installation of Delta Chat a first profile is created.
+
+
Later, you can tap your profile image in the upper left corner to Add Profiles
+or to Switch Profiles.
+
+
You may want to use separate profiles for political, family or work related activities,
+or e. g. for a dedicated “spam-profile” with which you register at websites and platforms
+that tend to cause unsolicited messages (“spam”) sooner or later.
@@ -230,86 +253,21 @@ recevoir de messages de cette personne, nous vous conseillons de la bloquer<
-
+
- Est-ce que Delta Chat gère les courriels en HTML ?
+ Can I set a Signature Text/Status/Motto with Delta Chat?
-
Yes, incoming HTML messages come with a “Show full message” button.
-Outgoing messages always use plain text.
-
-
-
-
- Pourquoi dois-je entrer le mot de passe de mon compte de courriel dans Delta Chat ? Est-ce sécurisé ?
-
-
-
-
-
Comme pour les autres clients de courriel, Thunderbird, FairEmail, K9-Mail, Outlook, etc, celui-ci a besoin des identifiants / mots de passe pour recevoir et envoyer des courriels.
-Bien sûr le mot de passe est uniquement stocké sur votre appareil. Et il est utilisé uniquement pour vous authentifier auprès de votre fournisseur de courriel, qui a, rappelons-le, accès à vos courriels non chiffrés.
-
-
Si vous utilisez un fournisseur de courriel qui prend en charge OAuth2, comme gmail.com ou yandex.ru,
-il n’est pas nécessaire de stocker votre mot de passe sur votre appareil. Dans ce cas, seul un jeton d’accès est utilisé.
-
-
Comme Delta Chat est un logiciel libre, vous pouvez étudier le code source pour vérifier que vos identifiants / mots de passe sont utilisés de façon sécurisée. Nous sommes très heureux d’avoir des retours pour renforcer la sécurité de l’application.
Selon le système d’exploitation utilisé,
-il vous sera peut-être demandé d’accorder des autorisations à l’application.
-Voici ce que fait Delta Chat avec ces autorisations:
-
-
-
Appareil photo * (peut être refusé) *
-
-
prendre des photos et des vidéos : pour envoyer des photos
-
-
-
Contacts * (peut être refusé) *
-
-
lire vos contacts : pour trouver des contacts avec lesquels discuter
-
-
-
Localisation * (peut être refusé) *
-
-
accéder à la localisation approximative (sources de localisation réseau) : pour la fonction de streaming de localisation
-
accéder à la localisation précise (GPS et sources de localisation réseau) : pour la fonction de localisation en continu
-
-
-
Microphone * (peut être refusé) *
-
-
enregistrement audio : pour les messages audio
-
-
-
Stockage * (peut être refusé) *
-
-
modifier ou supprimer le contenu de votre carte SD : pour télécharger les pièces jointes des messages
-
lire le contenu de votre carte SD : pour partager des fichiers avec vos contacts
-
-
-
Autres capacités de l’application
-
-
modifier vos paramètres audio : pour choisir les sonneries et le volume des notifications et des messages audio
-
s’exécuter au démarrage : pour ne pas avoir besoin de démarrer Delta Chat manuellement
-
contrôler les vibrations : pour les notifications
-
afficher les connexions réseau : pour se connecter au fournisseur de messagerie
-
empêcher la veille du téléphone : pour copier plus facilement le code de sécurité pendant le message de configuration Autocrypt
-
avoir un accès complet au réseau : pour se connecter au fournisseur de messagerie
-
afficher les connexions Wi-Fi : pour se connecter au fournisseur de messagerie
-
demander d’ignorer les optimisations de batterie : pour les utilisateurs qui souhaitent recevoir des messages tout le temps
-
-
-
+
Yes,
+you can do so under “Settings > Profile > Signature Text”.
+Your contacts who use Delta Chat will see it
+when they view your contact details.
+To everyone else,
+It will appear as an e-mail signature
+below the text of all your messages.
@@ -363,18 +321,40 @@ pour mettre une discussion en sourdine, ouvrez le menu de la conversation (Andro
D’un autre côté, vos contacts ne vous voient pas forcément “en ligne”. Si vous avez désactivé les accusés de lecture, ils ne verront pas de point vert tant que vous ne leur écrivez pas directement ou n’écrivez pas dans un groupe dont ils font aussi partie.
-
+
- Comment supprimer mon compte ?
+ How do disappearing messages work?
-
Étant donné que vous utilisez Delta Chat à 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.
+
You can turn on “disappearing messages”
+in the settings of a chat,
+at the top right of the chat window,
+by selecting a time span
+between 1 minute and 5 weeks.
-
Si vous souhaitez conserver votre compte mais désinstaller Delta Chat, nous vous recommandons de quitter toutes les discussions de groupe avant de procéder à la désinstallation.
+
Until the setting is turned off again,
+each chat member’s Delta Chat app takes care
+of deleting the messages
+after the selected time span.
+The time span begins
+when the receiver first sees the message in Delta Chat.
+The messages are deleted
+both in each email account on the server,
+and in the app itself.
+
+
Note that you can rely on disappearing messages
+only as long as you trust your chat partners;
+malicious chat partners can take photos,
+or otherwise save, copy or forward messages before deletion.
+
+
Apart from that,
+if one chat partner uninstalls Delta Chat,
+the messages will not get deleted from their email account.
+They will most likely also not be decryptable anymore
+(as long as they were encrypted in the first place).
@@ -495,6 +475,170 @@ Tous les courriels reçus sur Delta Chat seront supprimés du serveur une fois l
Pour activer cette option, ouvrez les paramètres des “Discussions et fichiers multimédias” et cliquez sur “Supprimer les anciens messages de l’appareil”. Vous pouvez définir le délai après lequel tous les messages seront supprimés de votre appareil, parmi plusieurs choix allant de “Immédiatement” à “Après 1 année”.
+
+
+ What are Push Notifications? How can I get instant message delivery?
+
+
+
+
+
Push Notifications are sent by Apple and Google “Push services” to a user’s device
+so that an inactive Delta Chat app can fetch messages in the background
+and show notifications on a user’s phone if needed.
+
+
Push Notifications work with all chatmail servers on
+
+
+
+
iOS devices, by integrating with Apple Push services.
+
+
+
Android devices, by integrating with the Google FCM Push service,
+including on devices that use microG
+instead of proprietary Google code on the phone.
+
+
+
+
As of May 2024, classic e-mail servers do not support Push Notifications
+for Delta Chat users.
+
+
+
+
+ Are Push Notifications enabled on iOS devices? Is there an alternative?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Are Push notifications enabled / needed on Android devices?
+
+
+
+
+
If a “Push Service” is available, Delta Chat enables Push Notifications
+to achieve instant message delivery for all chatmail users.
+If you are using a classic e-mail provider instead of chatmail servers,
+Push Notifications are not available.
+
+
In the Delta Chat “Notifications” settings for “Instant delivery”
+you can change the following settings effecting all chat profiles:
+
+
+
+
Use Push Service: the default when using chatmail profiles and if
+a Push service is available on the phone.
+If you have both chatmail and classic e-mail profiles,
+then Push Notification will only work
+for incoming messages on chatmail profiles.
+
+
+
Use Background Connection: If you are not using a Push service,
+you may disable “battery optimizations” for Delta Chat,
+allowing it to fetch messages in the background.
+However, there could be delays from minutes to hours.
+Some Android vendors even restrict apps completely
+(see dontkillmyapp.com)
+and Delta Chat might not show incoming messages
+until you manually open the app again.
+
+
+
Force Background Connection: This is the fallback option
+if the previous options are not available or do not achieve “instant delivery”.
+Enabling it causes a permanent notification on your phone
+which may sometimes be “minified” with recent Android phones.
+
+
+
+
Both “Background Connection” options are energy-efficient and
+safe to try if you experience messages arrive only with long delays.
+
+
+
+
+ How private are Delta Chat Push Notifications?
+
+
+
+
+
Delta Chat Push Notification support avoids leakage of private information.
+It does not leak e-mail, IP address or message content (not even encrypted)
+to any system involved in the delivery of Push Notifications.
+
+
Here is how Delta Chat apps perform Push Notification delivery:
+
+
+
+
A Delta Chat app obtains a “device token” locally and stores it
+on the chatmail server.
+
+
+
When a chatmail server receives an e-mail for a Delta Chat user
+it forwards the “device token” to the central Delta Chat notification proxy.
+
+
+
The central Delta Chat notification proxy forwards
+the “device token” to the respective Push service (Apple, Google, etc.),
+without ever knowing the IP or e-mail address of Delta Chat users.
+
+
+
The central Push Service (Apple, Google, etc.)
+wakes up the Delta Chat app on your device
+to check for new messages in the background.
+It does not know about the chatmail or e-mail address of the device it wakes up.
+The central Apple/Google Push services never see an e-mail address (sender or receiver)
+and also never see any message content (also not in encrypted forms).
+
+
+
+
As of May 2024, chatmail servers know about “device tokens”
+but we plan to encrypt this information to the notification proxy
+such that the chatmail server never learns the device token.
+
+
The central Delta Chat notification proxy is small and fully implemented in Rust
+and forgets about device-tokens as soon as Apple/Google/etc processed them,
+usually in a matter of milliseconds.
+
+
Resulting from this overall privacy design, even the seizure of a chatmail server,
+or the full seizure of the central Delta Chat notification proxy
+would not reveal private information that Push services do not already have.
+
+
+
+
+ Why does Delta Chat integrate with centralized proprietary Apple/Google push services?
+
+
+
+
+
Delta Chat is a free and open source decentralized messenger with free server choice,
+but we want users to reliably experience “instant delivery” of messages,
+like they experience from Whatsapp, Signal or Telegram apps,
+without asking questions up-front that are more suited to expert users or developers.
Secure-Join protocols
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
@@ -548,49 +692,32 @@ guarantee end-to-end encrypted messages.
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
+
If you have a second communication channel with your chat partner,
+like a video chat or a different messenger,
+you can generate an invite link.
-
Inviter side:
+
If you are together in person,
+you can show a QR code to your chat partner.
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
+
For Group invitations,
+tap the chat group title to see its member list,
+and select “QR Invite code”.
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
+
For direct 1:1 chat invitations,
+tap the QR Code icon
+on the Delta Chat app main screen.
-
Joiner side:
+
Let your chat partner scan the QR image
+with their Delta Chat app,
+or click “Copy” or “Share” to create an invite link
+and share it with your chat partner.
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
@@ -644,7 +771,7 @@ but there is no green checkmark in the profile title.
This usually means that the contact “sent a message from another device”.
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
+please see Secure-Join protocols
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
@@ -672,7 +799,7 @@ even if the contact is a member there.
Your contact is using Delta Chat on a second device (phone or laptop)
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
+they should remove the profile from the new device
and add it as a second device as described here.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.
@@ -680,8 +807,8 @@ and guaranteed encryption is established with both devices of your contact.
Your contact reinstalled Delta Chat using their old account login
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
+they should remove the profile from the new device
+and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.
@@ -702,7 +829,7 @@ guaranteed end-to-end encryption will be automatically re-established.
Sometimes remaining in contact is more important than end-to-end encryption.
“Transport Layer Encryption” (TLS) may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
+But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.
In any case, you can not do much else than accept the warning.
@@ -868,12 +995,12 @@ deliver messages to recipient’s devices.
Both for protecting against metadata-collecting e-mail servers
as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
+we recommend to use a chatmail server
+to create pseudonymous temporary profiles through QR-code scans.
+Note that Delta Chat apps on all platforms support multiple profiles
+so you can easily use situation-specific profiles next to your “main” profile
+with the knowledge that all their data, along with all metadata, will be deleted.
+Moreover, if a device is seized then contacts using temporary profiles
can not be identified easily, as compared to messengers which reveal
phone numbers in chat groups which in turn are often associated with legal identities.
@@ -932,7 +1059,7 @@ and their non-Autocrypt e-mail app.
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
+who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
it’s best to setup guaranteed end-to-end encryption with them
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
@@ -950,10 +1077,10 @@ even if the direct chat between you two has a
The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
+
Guaranteed end-to-end encrypted chats protect against MITM attacks
+and turning on disappearing messages deletes the messages
on the server after a user-configured time.
If you don’t need a longer-lived copy of your messages on the server,
@@ -1032,7 +1159,10 @@ Caution: Make sure the key is not protected by a password, or remove the passwor
-
L’origine la plus probable de ce problème est que votre clé est chiffrée ou requiert un mot de passe, ou les deux. Ce type de clés n’est pas géré par Delta Chat. Vous pouvez tenter de retirer le chiffrement et le mot de passe puis réessayer l’importation. Si vous voulez garder votre mot de passe, vous devez créer un alias de courriel que vous utiliserez avec Delta Chat, de sorte que la clé de Delta Chat soit liée à cet alias.
+
L’origine la plus probable de ce problème est que votre clé est chiffrée ou requiert un mot de passe, ou les deux. Ce type de clés n’est pas géré par Delta Chat. Vous pouvez tenter de retirer le chiffrement et le mot de passe puis réessayer l’importation.
+
+
Another common error is having the wrong file ending.
+Use the ASCII armored format and an .asc file ending.
Delta Chat gère les formats de clé privée OpenPGP les plus communs, néanmoins il
est peu probable que les clés privées générées par toutes les sources soient prises en charge. Mais l’objectif principal de Delta Chat n’est pas là. En pratique, la majorité des nouveaux utilisateurs ne possèdent pas de clés de chiffrement avant d’utiliser Delta Chat.
@@ -1041,6 +1171,50 @@ Néanmoins, nous essayons de gérer les clés privées d’autant de sources que
La méthode pour retirer le mot de passe de la clé privée dépend du logiciel que vous utilisez pour gérer vos clés GPG. Avec Enigmail, vous pouvez définir votre mot de passe en laissant le champ vide dans la fenêtre de Gestion des Clés. Avec GnuPG, vous pouvez le définir avec la ligne de commande.
Pour les autres programmes, vous devriez pouvoir trouver la solution en ligne.
+
+
+
+ Est-ce qu’un audit indépendant des failles de sécurité a été réalisé sur Delta Chat ?
+
+
+
+
+
The Delta Chat project underwent four independent security audits and one
+independent security analysis, from most recent to older:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
Début 2023, nous avons réparé les failles de sécurité et de confidentialité de la fonctionnalité “partage d’appli web dans une discussion” liées à des dysfonctionnements en mode bac à sable, en particulier avec Chromium. Après quoi, nous avons soumis Delta Chat à un nouvel audit de sécurité indépendant par Cure53, puis effectué les réparations de toutes les failles découvertes pour la version 1.36 de nos applications, publiée en avril 2023.
+Vous trouverez ici un article de fond complet à propos de la sécurité du chiffrement de bout-en-bout sur internet.
+
+
+
Début 2023, Cure53 a analysé le chiffrement d’acheminement des connexions réseau de Delta Chat et testé une configuration de serveur de courriel reproductible, telle que recommandée sur ce site.
+Vous trouverez plus d’informations sur cet audit sur notre blog ou dans le rapport complet ici.
+
+
+
En 2020, Include Security a analysé les bibliothèques principales Rust de Delta Chat, ainsi que ses bibliothèques IMAP, SMTP et TLS.
+Aucun problème grave ou critique n’a été découvert.
+Le rapport a tout de même révélé quelques vulnérabilités de gravité moyenne, qui ne représentent pas une menace en elles-mêmes pour les utilisateurs et les utilisatrices de Delta Chat, car elles dépendent de l’environnement dans lequel Delta Chat est utilisé.
+Pour des raison de compatibilité et de facilité d’utilisation, nous ne pouvons pas les pallier toutes et avons préféré fournir des préconisations de sécurité aux personnes exposées.
+Le rapport complet est consultable ici.
+
+
+
En 2019, Include Security a analysé les bibliothèques PGP et
+RSA de Delta Chat.
+Aucune faille critique n’a été trouvée, mais deux failles sévères ont été identifiées et immédiatement réparées par nos soins.
+Une faille de gravité moyenne ainsi que quelques failles de gravité moindre ont également été découvertes, sans qu’il soit toutefois possible de les exploiter dans le fonctionnement de Delta Chat.
+Nous en avons néanmoins réparées certaines depuis le rapport d’audit.
+Le rapport complet est consultable ici.
+
+
+
@@ -1057,7 +1231,7 @@ Pour les autres programmes, vous devriez pouvoir trouver la solution en ligne.
-
Oui. Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
+
Oui. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
@@ -1093,10 +1267,19 @@ L’un n’a pas besoin de l’autre pour pouvoir fonctionner.
Vérifier à nouveau que les deux appareils sont sur le même réseau ou le même Wi-Fi.
+
+
On Windows, go to Control Panel / Network and Internet
+and make sure, Private Network is selected as “Network profile type”
+(after transfer, you can change back to the original value)
+
Il se peut que votre système dispose d’un “pare-feu personnalisé”,
source bien connue de dysfonctionnements (en particulier sur Windows).
Désactivez le pare-feu personnalisé sur chaque appareil pour Delta Chat et réessayez.
+
+
+
Guest Networks may not allow devices to communicate with each other.
+If possible, use a non-guest network.
Assurez-vous de disposer d’un espace de stockage suffisant sur l’appareil de destination.
@@ -1130,8 +1313,8 @@ Vous pouvez utiliser plusieurs comptes par appareil : get.delta.chat.
-
-
-
- Quel est l’intérêt du paramètre “M’envoyer une copie”?
-
-
-
-
-
Envoyer une copie de vos messages à vous-même garantit que vous recevez vos propres
- messages sur tous les appareils. Si vous avez de multiples appareils et que vous ne l’activez pas, vous voyez seulement les messages des autres personnes et les messages que vous avez envoyé depuis l’appareil en cours.
-
-
La copie est envoyée dans la Boîte de réception puis déplacée dans le dossier DeltaChat; elle n’est pas mise dans le dossier “Envoyés”. Delta Chat ne téléverse jamais quelque chose dans le dossier Envoyés car ça signifierait de le téléverser deux fois (une fois via SMTP, puis une fois dans le dossier Envoyés via IMAP).
-
-
Le paramètre par défaut pour l’envoi à soi-même est “Non”.
-
-
-
-
- Pourquoi puis-je choisir de regarder le dossier “Envoyés”?
-
-
-
-
-
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 Delta Chat, et que vous voulez que votre client de messagerie participe aux discussions.
-
-
Cependant, nous recommandons d’utiliser le client de bureau Delta Chat; vous pouvez le télécharger sur get.delta.chat. 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 Delta Chat disponible sur toutes les plateformes.
-
-
-
-
- Pourquoi puis-je choisir de ne pas regarder le dossier Delta Chat?
-
-
-
-
-
Certaines personnes utilisent Delta Chat comme un client de messagerie normal, et veulent utiliser la Boîte de réception pour leurs mails au lieu d’utiliser le dossier DeltaChat. Si vous désactivez “Surveiller le dossier DeltaChat”, vous devriez aussi désactiver “déplacer les messages de discussions dans DeltaChat”.
-Sinon, la suppression de messages dans une configuration multi-appareils pourrait ne pas marcher correctement.
-
@@ -1327,12 +1472,20 @@ this way, you will have a new random jitsi room every time you call someone.
-
Vous pouvez activer l’envoi de la géolocalisation à la demande dans la section “Fonctionnalités expérimentales” des paramètres avancés.
-
Pour partager votre position dans une discussion, allez dans “Ajouter une pièce jointe” et sélectionnez “Position”. Vous pouvez alors choisir la durée pendant laquelle vous voulez partager votre position avec les membres de la discussion, de 5 minutes à 6 heures.
-
Quand vous vous déplacez, vos contacts voient votre position sur une carte dans la discussion.
-
Vous devez activer cette fonctionnalité dans les paramètres avancés pour pouvoir voir la carte et la position de vos contacts.
-
Cette fonctionnalité ne partage votre position avec personne d’autre que les membres de la discussion. Cependant, pour que la carte s’affiche, les tuiles de carte sont téléchargées depuis mapbox.com, donc si vous visualisez la carte, une requête pour afficher une zone spécifique est envoyée à mapbox.com. Si cela constitue un risque pour la protection de votre vie privée, cette fonctionnalité n’est probablement pas faite pour vous. Nous nous efforçons de trouver une alternative décentralisée à Mapbox.
-
Sur l’application de bureau, votre système d’exploitation ne peut généralement pas déterminer votre position. À la place, vous pouvez faire un clic droit sur la carte pour décrire votre position, qui sera ensuite envoyée dans la discussion en tant que message, tout en apparaissant sur la carte.
+
You can turn on location streaming in the “experimental features” section of
+the advanced settings.
+
Now, if you want to share your location in a chat, go to “attach” and select
+“location”. You can now set a time frame in which your location will be
+streamed to your chat partners, between 5 minutes and 6 hours.
+
When your location changes, the others in the chat can view it on a map in
+the chat.
+
To see the map and view locations of others, you need to turn on the feature
+in the advanced settings.
+
This feature will not share your location with anyone except your chat partners.
+Map tiles are downloaded from OpenStreetMap.
+
On desktop, the OS typically can’t determine your location. Instead you can
+right click on the map and describe a location, which is sent to the chat as
+a message, but also appears on the map.
@@ -1379,8 +1532,8 @@ this way, you will have a new random jitsi room every time you call someone.
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
+
Change your address in “Settings → Advanced → Password and Account” and
+enter the password of your new e-mail account (and if necessary, server settings).
You will get an information notice about the fact that you are moving to a new address.
An additional notice will also show up in your “Device messages” chat.
Selon le système d’exploitation utilisé,
+il vous sera peut-être demandé d’accorder des autorisations à l’application.
+Voici ce que fait Delta Chat avec ces autorisations:
+
+
+
Camera (can be disallowed)
+
+
take pictures and videos: for sending Photos
+
+
+
Contacts (can be disallowed)
+
+
read your contacts: to discover contacts to chat with
+
+
+
Location (can be disallowed)
+
+
access approximate location (network location sources): for the location streaming feature
+
access precise location (GPS and network location sources): for the location streaming feature
+
+
+
Microphone (can be disallowed)
+
+
record audio: for audio messages
+
+
+
Storage (can be disallowed)
+
+
modify or delete the contents of your SD card: to download message attachments
+
read the contents of your SD card: to share files with your contacts
+
+
+
Other app capabilities
+
+
change your audio settings: so you can choose ring tones and volume for notifications and audio messages
+
run at startup: so you don’t have to start Delta Chat manually
+
control vibration: for notifications
+
view network connections: to connect to your E-Mail provider
+
prevent phone from sleeping: so you can easier copy the security code during the Autocrypt Setup Message
+
have full network access: to connect to your E-Mail provider
+
view Wi-Fi connections: to connect to your E-Mail provider
+
ask to ignore battery optimisations: for achieving “instant message delivery”
+
+
+
+
@@ -1437,22 +1644,113 @@ Cependant, il faut activer des options spéciales pour que cela fonctionne corre
- Si Delta Chat se base sur le courrier électronique, est-ce vraiment une messagerie instantanée?
+ Pourquoi dois-je entrer le mot de passe de mon compte de courriel dans Delta Chat ? Est-ce sécurisé ?
+
Comme pour les autres clients de courriel, Thunderbird, FairEmail, K9-Mail, Outlook, etc, celui-ci a besoin des identifiants / mots de passe pour recevoir et envoyer des courriels.
+Bien sûr le mot de passe est uniquement stocké sur votre appareil. Et il est utilisé uniquement pour vous authentifier auprès de votre fournisseur de courriel, qui a, rappelons-le, accès à vos courriels non chiffrés.
+
+
Si vous utilisez un fournisseur de courriel qui prend en charge OAuth2, comme gmail.com ou yandex.ru,
+il n’est pas nécessaire de stocker votre mot de passe sur votre appareil. Dans ce cas, seul un jeton d’accès est utilisé.
+
+
Comme Delta Chat est un logiciel libre, vous pouvez étudier le code source pour vérifier que vos identifiants / mots de passe sont utilisés de façon sécurisée. Nous sommes très heureux d’avoir des retours pour renforcer la sécurité de l’application.
+
+
+
+
+ Quels sont les messages qui apparaissent dans Delta Chat ?
+
+
+
+
+
Par défaut, Delta Chat affiche tous les courriels.
+
+
At “Settings → Advanced → Show Classic E-Mails”,
+you can change this. You have these options:
+
-
L’envoi et la réception de messages prennent généralement quelques secondes. Il arrive parfois que cela prenne plus de temps, mais c’est aussi le cas avec n’importe quelle autre messagerie.
-
La messagerie instantanée est rapide quand les deux parties utilisent activement l’application. Elle peut devenir plus lente si l’application fonctionne en arrière-plan.
-
La réception de messages peut alors prendre plusieurs minutes, car Android et iOS empêchent souvent Delta Chat de fonctionner en arrière-plan et ne le réveillent qu’occasionnellement. Ce délai artificiel est généralement pire sur iOS que sur Android.
-
Cependant, le fait qu’Android et iOS tuent les applications fonctionnant en arrière-plan constitue un problème pour de nombreuses applications reconnues.
-Pour plus d’informations, voir dontkillmyapp.com.
+
“Non, seulement les discussions”: vous verrez seulement les messages envoyés par d’autres utilisateurs de Delta Chat et les réponses à vos messages Delta Chat. Cette option est recommandée si vous utilisez le même compte pour recevoir aussi des courriels normaux.
+
“Tout”: vous verrez dans Delta Chat tous les courriels envoyés à votre adresse. Cette option est recommandée si vous souhaitez utiliser Delta Chat pour tous vos courriels, afin de ne rater aucun message.
+
“Pour les contacts acceptés”: vous verrez dans Delta Chat tous les courriels envoyés par les personnes avec qui vous avez déjà ouvert une discussion, mais les notifications de nouvelles conversations ne s’afficheront que pour des messages envoyés via Delta Chat. Cette option vous permet de décider au cas par cas si vous souhaitez échanger via Delta Chat ou via une application de courriel “classique”.
+
+
+
+ Est-ce que Delta Chat gère les courriels en HTML ?
+
+
+
+
+
Yes, incoming HTML messages come with a “Show full message” button.
+Outgoing messages always use plain text.
+
+
+
+
+ Can I set the E-Mail Subject with Delta Chat?
+
+
+
+
+
Delta Chat sets (and encrypts!) the classic e-mail subject
+automatically to the group name or to the sender name.
+
+
So if you want to set the subject yourself,
+for example for a formal e-mail to a business contact,
+you can create a group
+with only yourself and the recipient(s).
+Set the Chat Title to the Subject you want,
+and then send your e-mail as the first message.
+If the recipients don’t use Delta Chat,
+it will look like a normal,
+formal e-mail to them.
+You will get bonus professionalism points
+if you set a signature text.
+
+
+
+
+ Quel est l’intérêt du paramètre “M’envoyer une copie”?
+
+
+
+
+
Envoyer une copie de vos messages à vous-même garantit que vous recevez vos propres
+ messages sur tous les appareils. Si vous avez de multiples appareils et que vous ne l’activez pas, vous voyez seulement les messages des autres personnes et les messages que vous avez envoyé depuis l’appareil en cours.
+
+
La copie est envoyée dans la Boîte de réception puis déplacée dans le dossier DeltaChat; elle n’est pas mise dans le dossier “Envoyés”. Delta Chat ne téléverse jamais quelque chose dans le dossier Envoyés car ça signifierait de le téléverser deux fois (une fois via SMTP, puis une fois dans le dossier Envoyés via IMAP).
+
+
The default setting for “Send Copy to Self” is “on”.
+
+
+
+
+ Pourquoi puis-je choisir de regarder le dossier “Envoyés”?
+
+
+
+
+
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 Delta Chat, et que vous voulez que votre client de messagerie participe aux discussions.
+
+
Cependant, nous recommandons d’utiliser le client de bureau Delta Chat; vous pouvez le télécharger sur get.delta.chat. 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 Delta Chat disponible sur toutes les plateformes.
+
+
+
+
+ Pourquoi puis-je choisir de ne pas regarder le dossier Delta Chat?
+
+
+
+
+
Certaines personnes utilisent Delta Chat comme un client de messagerie normal, et veulent utiliser la Boîte de réception pour leurs mails au lieu d’utiliser le dossier DeltaChat. Si vous désactivez “Surveiller le dossier DeltaChat”, vous devriez aussi désactiver “déplacer les messages de discussions dans DeltaChat”.
+Sinon, la suppression de messages dans une configuration multi-appareils pourrait ne pas marcher correctement.
Étant donné que vous utilisez Delta Chat à 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.
+
+
Si vous souhaitez conserver votre compte mais désinstaller Delta Chat, nous vous recommandons de quitter toutes les discussions de groupe avant de procéder à la désinstallation.
-
-
- Est-ce qu’un audit indépendant des failles de sécurité a été réalisé sur Delta Chat ?
-
-
-
-
-
Quatre audits indépendants ont été réalisés sur le projet Delta Chat ces dernières années :
-
-
-
-
En 2019, Include Security a analysé les bibliothèques PGP et
-RSA de Delta Chat.
-Aucune faille critique n’a été trouvée, mais deux failles sévères ont été identifiées et immédiatement réparées par nos soins.
-Une faille de gravité moyenne ainsi que quelques failles de gravité moindre ont également été découvertes, sans qu’il soit toutefois possible de les exploiter dans le fonctionnement de Delta Chat.
-Nous en avons néanmoins réparées certaines depuis le rapport d’audit.
-Le rapport complet est consultable ici.
-
-
-
En 2020, Include Security a analysé les bibliothèques principales Rust de Delta Chat, ainsi que ses bibliothèques IMAP, SMTP et TLS.
-Aucun problème grave ou critique n’a été découvert.
-Le rapport a tout de même révélé quelques vulnérabilités de gravité moyenne, qui ne représentent pas une menace en elles-mêmes pour les utilisateurs et les utilisatrices de Delta Chat, car elles dépendent de l’environnement dans lequel Delta Chat est utilisé.
-Pour des raison de compatibilité et de facilité d’utilisation, nous ne pouvons pas les pallier toutes et avons préféré fournir des préconisations de sécurité aux personnes exposées.
-Le rapport complet est consultable ici.
-
-
-
Début 2023, Cure53 a analysé le chiffrement d’acheminement des connexions réseau de Delta Chat et testé une configuration de serveur de courriel reproductible, telle que recommandée sur ce site.
-Vous trouverez plus d’informations sur cet audit sur notre blog ou dans le rapport complet ici.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
diff --git a/assets/help/green-checkmark-screenshot.png b/src/main/assets/help/green-checkmark-screenshot.png
similarity index 100%
rename from assets/help/green-checkmark-screenshot.png
rename to src/main/assets/help/green-checkmark-screenshot.png
diff --git a/assets/help/green-checkmark.png b/src/main/assets/help/green-checkmark.png
similarity index 100%
rename from assets/help/green-checkmark.png
rename to src/main/assets/help/green-checkmark.png
diff --git a/assets/help/help.css b/src/main/assets/help/help.css
similarity index 100%
rename from assets/help/help.css
rename to src/main/assets/help/help.css
diff --git a/assets/help/id/help.html b/src/main/assets/help/id/help.html
similarity index 77%
rename from assets/help/id/help.html
rename to src/main/assets/help/id/help.html
index 8137d9706..db7fc9a2e 100644
--- a/assets/help/id/help.html
+++ b/src/main/assets/help/id/help.html
@@ -4,17 +4,14 @@
Delta Chat adalah aplikasi obrolan baru yang mengirim pesan melalui email, diekripsi jika memungkinkan, dengan Autocrypt
-Anda tidak harus mendaftar di mana saja, cukup gunakan akun email Anda yang ada dengan Delta Chat.
+
Delta Chat is a reliable, decentralized and secure messaging app,
+available for mobile and desktop platforms.
+
+
Delta Chat feels like Whatsapp or Telegram but you can also use and regard it as an e-mail app.
+You can signup anonymously to a variety of interoperable chatmail servers
+which are minimal e-mail servers optimized for fast and secure operations.
+Or you may use classic e-mail servers and an existing e-mail account
+in which case Delta Chat acts as an e-mail app.
@@ -117,9 +134,15 @@
-
Dengan Delta Chat, anda dapat mengetik ke semua alamat email yang ada - meskipun
-si penerima tidak menggunakan aplikasi Delta Chat. Tidak perlu bagi
-penerima untuk menginstal aplikasi yang sama seperti milik Anda, seperti halnya dengan messenger-messanger lain.
+
To securely setup contact with others scan an invite QR code
+or share an invite link.
+This is required when using a (default) chatmail-based chat profile
+because chatmail servers reject un-encrypted outgoing messages.
+
+
If you create a chat profile with a classic e-mail address
+you may manually create a contact if you know their e-mail address
+and then write a message to them
+even if the recipient is not using Delta Chat.
@@ -130,42 +153,25 @@ penerima untuk menginstal aplikasi yang sama seperti milik Anda, seperti halnya
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
Secara default, Delta Chat menampilkan semua email.
-
-
Pada “Pengaturan -> Obrolan &
-Media -> Tampilkan Email Klasik”, Anda dapat mengubahnya. Anda memiliki opsi-opsi ini:
-
-
-
“No, chats only”: Only messages sent by other Delta Chat users and replies to
-your Delta Chat messages are shown. This makes most sense if you use the same
-e-mail account for normal e-mails as well.
-
“All”: Delta Chat shows all e-mails that are sent to your email address. This
-makes sense if you want to use Delta Chat for all your e-mails, so no message
-gets lost. This is the default setting.
-
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
-you already have a chat, but new chats only pop up for Delta Chat messages.
-This helps to decide on a case-by-case basis whether you want to have a
-conversation in Delta Chat or in a “normal” e-mail app.
+
+
Anonymous chat profiles with fast, secure and interoperable chatmail servers
+which offer instant Push Notifications for iOS and Android devices.
+
+
+
Pervasive multi-profile and multi-device support on all platforms.
@@ -207,18 +213,25 @@ receive messages from this person, consider blocking them.
- How can I add or switch between multiple accounts?
+ What are profiles? How can I switch between them?
-
You can easily work with additional accounts on Delta Chat mobile and desktop clients by clicking either:
-
-
on the menu button and then ‘Switch Account’ (Android and desktop)
-
or the profile icon and then ‘Add Account’ (iOS)
-
+
A profile is a name, a picture and some additional information for encrypting messages.
+A profile lives on your device(s) only
+and uses a chatmail or a classic e-mail server to transport messages.
On first installation of Delta Chat a first profile is created.
+
+
Later, you can tap your profile image in the upper left corner to Add Profiles
+or to Switch Profiles.
+
+
You may want to use separate profiles for political, family or work related activities,
+or e. g. for a dedicated “spam-profile” with which you register at websites and platforms
+that tend to cause unsolicited messages (“spam”) sooner or later.
- Apakah Delta Chat mendukung email HTML?
+ Can I set a Signature Text/Status/Motto with Delta Chat?
-
Yes, incoming HTML messages come with a “Show full message” button.
-Outgoing messages always use plain text.
+
Yes,
+you can do so under “Settings > Profile > Signature Text”.
+Your contacts who use Delta Chat will see it
+when they view your contact details.
+To everyone else,
+It will appear as an e-mail signature
+below the text of all your messages.
-
+
- Mengapa saya harus memasukkan kata sandi E-Mail saya ke Delta Chat? Apakah ini aman?
-
-
-
-
-
Seperti program E-Mail lainnya seperti Thunderbird, K9-Mail, atau Outlook,
-program membutuhkan kata sandi sehingga Anda dapat menggunakannya untuk mengirim email. Tentu saja,
-kata sandi hanya disimpan di perangkat Anda. Kata sandi hanya dikirimkan ke
-penyedia E-Mail Anda (saat Anda login), yang tetap memiliki akses ke email Anda.
-
-
Jika Anda menggunakan penyedia E-Mail dengan dukungan OAuth2 seperti gmail.com atau yandex.ru,
-tidak perlu menyimpan kata sandi Anda di perangkat. Dalam hal ini, hanya
-token akses digunakan.
-
-
Karena Delta Chat adalah Open Source, Anda dapat memeriksa file Source
-Code
-jika Anda ingin memverifikasi bahwa kredensial Anda ditangani dengan aman. Kami bahagia
-tentang umpan balik yang membuat aplikasi lebih aman untuk semua pengguna kami.
-
-
-
-
- Izin apa yang dibutuhkan Delta Chat?
-
-
-
-
-
Tergantung operasi sistem yang digunakan,
-Anda mungkin diminta untuk memberikan izin ke aplikasi.
-Inilah yang dilakukan Delta Chat dengan izin ini:
-
-
-
Kamera (dapat dianulir)
-
ambil gambar dan video: untuk mengirim Foto
-
Kontak (dapat dianulir)
-
baca kontak Anda: untuk menemukan kontak untuk diajak ngobrol
-
Lokasi (dapat dianulir)
-
Akses perkiraan lokasi (sumber lokasi jaringan): untuk fitur streaming lokasi
-
Akses lokasi yang tepat (GPS dan sumber lokasi jaringan): untuk fitur streaming lokasi
-
Mikrofon (dapat dianulir)
-
rekam audio: untuk pesan audio
-
Penyimpanan (dapat dianulir)
-
memodifikasi atau menghapus isi kartu SD Anda: untuk mengunduh lampiran pesan
-
baca isi kartu SD Anda: untuk berbagi file dengan kontak Anda
-
Kemampuan aplikasi lainnya
-
ubah pengaturan audio Anda: sehingga Anda dapat memilih nada dering dan volume untuk pemberitahuan dan pesan audio
-
berjalan saat startup: jadi Anda tidak harus memulai Delta Chat secara manual
-
Kontrol getaran: untuk notifikasi
-
lihat koneksi jaringan: untuk terhubung ke penyedia E-Mail Anda
-
mencegah ponsel dari tidur: sehingga Anda dapat lebih mudah menyalin kode keamanan selama Pesan Pengaturan Autocrypt
-
memiliki akses jaringan penuh: untuk terhubung ke penyedia E-Mail Anda
-
lihat koneksi Wi-Fi: untuk terhubung ke penyedia E-Mail Anda
-
minta untuk mengabaikan optimisasi baterai: untuk pengguna yang ingin menerima pesan setiap saat
-
-
-
-
-
- What means Pinning, Muting, Archiving?
+ What do Pinning, Muting and Archiving mean?
@@ -375,22 +335,40 @@ have turned off read receipts, they will not see the green dot until you
message them or write to a group they’re in as well.
-
+
- How can I delete my account?
+ How do disappearing messages work?
-
As you use an e-mail account for Delta Chat,
-how you can delete your account depends on your e-mail provider.
-We don’t have any control over your e-mail account,
-so unfortunately we can’t help you with that.
+
You can turn on “disappearing messages”
+in the settings of a chat,
+at the top right of the chat window,
+by selecting a time span
+between 1 minute and 5 weeks.
-
If you want to keep the account,
-but uninstall Delta Chat,
-it is recommended to leave any group chat before uninstalling Delta Chat.
+
Until the setting is turned off again,
+each chat member’s Delta Chat app takes care
+of deleting the messages
+after the selected time span.
+The time span begins
+when the receiver first sees the message in Delta Chat.
+The messages are deleted
+both in each email account on the server,
+and in the app itself.
+
+
Note that you can rely on disappearing messages
+only as long as you trust your chat partners;
+malicious chat partners can take photos,
+or otherwise save, copy or forward messages before deletion.
+
+
Apart from that,
+if one chat partner uninstalls Delta Chat,
+the messages will not get deleted from their email account.
+They will most likely also not be decryptable anymore
+(as long as they were encrypted in the first place).
@@ -523,6 +501,170 @@ this way, all messages will be deleted from your device as soon as they
older than that.
+
+
+
+ What are Push Notifications? How can I get instant message delivery?
+
+
+
+
+
Push Notifications are sent by Apple and Google “Push services” to a user’s device
+so that an inactive Delta Chat app can fetch messages in the background
+and show notifications on a user’s phone if needed.
+
+
Push Notifications work with all chatmail servers on
+
+
+
+
iOS devices, by integrating with Apple Push services.
+
+
+
Android devices, by integrating with the Google FCM Push service,
+including on devices that use microG
+instead of proprietary Google code on the phone.
+
+
+
+
As of May 2024, classic e-mail servers do not support Push Notifications
+for Delta Chat users.
+
+
+
+
+ Are Push Notifications enabled on iOS devices? Is there an alternative?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Are Push notifications enabled / needed on Android devices?
+
+
+
+
+
If a “Push Service” is available, Delta Chat enables Push Notifications
+to achieve instant message delivery for all chatmail users.
+If you are using a classic e-mail provider instead of chatmail servers,
+Push Notifications are not available.
+
+
In the Delta Chat “Notifications” settings for “Instant delivery”
+you can change the following settings effecting all chat profiles:
+
+
+
+
Use Push Service: the default when using chatmail profiles and if
+a Push service is available on the phone.
+If you have both chatmail and classic e-mail profiles,
+then Push Notification will only work
+for incoming messages on chatmail profiles.
+
+
+
Use Background Connection: If you are not using a Push service,
+you may disable “battery optimizations” for Delta Chat,
+allowing it to fetch messages in the background.
+However, there could be delays from minutes to hours.
+Some Android vendors even restrict apps completely
+(see dontkillmyapp.com)
+and Delta Chat might not show incoming messages
+until you manually open the app again.
+
+
+
Force Background Connection: This is the fallback option
+if the previous options are not available or do not achieve “instant delivery”.
+Enabling it causes a permanent notification on your phone
+which may sometimes be “minified” with recent Android phones.
+
+
+
+
Both “Background Connection” options are energy-efficient and
+safe to try if you experience messages arrive only with long delays.
+
+
+
+
+ How private are Delta Chat Push Notifications?
+
+
+
+
+
Delta Chat Push Notification support avoids leakage of private information.
+It does not leak e-mail, IP address or message content (not even encrypted)
+to any system involved in the delivery of Push Notifications.
+
+
Here is how Delta Chat apps perform Push Notification delivery:
+
+
+
+
A Delta Chat app obtains a “device token” locally and stores it
+on the chatmail server.
+
+
+
When a chatmail server receives an e-mail for a Delta Chat user
+it forwards the “device token” to the central Delta Chat notification proxy.
+
+
+
The central Delta Chat notification proxy forwards
+the “device token” to the respective Push service (Apple, Google, etc.),
+without ever knowing the IP or e-mail address of Delta Chat users.
+
+
+
The central Push Service (Apple, Google, etc.)
+wakes up the Delta Chat app on your device
+to check for new messages in the background.
+It does not know about the chatmail or e-mail address of the device it wakes up.
+The central Apple/Google Push services never see an e-mail address (sender or receiver)
+and also never see any message content (also not in encrypted forms).
+
+
+
+
As of May 2024, chatmail servers know about “device tokens”
+but we plan to encrypt this information to the notification proxy
+such that the chatmail server never learns the device token.
+
+
The central Delta Chat notification proxy is small and fully implemented in Rust
+and forgets about device-tokens as soon as Apple/Google/etc processed them,
+usually in a matter of milliseconds.
+
+
Resulting from this overall privacy design, even the seizure of a chatmail server,
+or the full seizure of the central Delta Chat notification proxy
+would not reveal private information that Push services do not already have.
+
+
+
+
+ Why does Delta Chat integrate with centralized proprietary Apple/Google push services?
+
+
+
+
+
Delta Chat is a free and open source decentralized messenger with free server choice,
+but we want users to reliably experience “instant delivery” of messages,
+like they experience from Whatsapp, Signal or Telegram apps,
+without asking questions up-front that are more suited to expert users or developers.
Secure-Join protocols
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
@@ -576,49 +718,32 @@ guarantee end-to-end encrypted messages.
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
+
If you have a second communication channel with your chat partner,
+like a video chat or a different messenger,
+you can generate an invite link.
-
Inviter side:
+
If you are together in person,
+you can show a QR code to your chat partner.
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
+
For Group invitations,
+tap the chat group title to see its member list,
+and select “QR Invite code”.
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
+
For direct 1:1 chat invitations,
+tap the QR Code icon
+on the Delta Chat app main screen.
-
Joiner side:
+
Let your chat partner scan the QR image
+with their Delta Chat app,
+or click “Copy” or “Share” to create an invite link
+and share it with your chat partner.
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
@@ -672,7 +797,7 @@ but there is no green checkmark in the profile title.
This usually means that the contact “sent a message from another device”.
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
+please see Secure-Join protocols
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
@@ -700,7 +825,7 @@ even if the contact is a member there.
Your contact is using Delta Chat on a second device (phone or laptop)
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
+they should remove the profile from the new device
and add it as a second device as described here.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.
@@ -708,8 +833,8 @@ and guaranteed encryption is established with both devices of your contact.
Your contact reinstalled Delta Chat using their old account login
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
+they should remove the profile from the new device
+and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.
@@ -730,7 +855,7 @@ guaranteed end-to-end encryption will be automatically re-established.
Sometimes remaining in contact is more important than end-to-end encryption.
“Transport Layer Encryption” (TLS) may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
+But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.
In any case, you can not do much else than accept the warning.
@@ -896,12 +1021,12 @@ deliver messages to recipient’s devices.
Both for protecting against metadata-collecting e-mail servers
as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
+we recommend to use a chatmail server
+to create pseudonymous temporary profiles through QR-code scans.
+Note that Delta Chat apps on all platforms support multiple profiles
+so you can easily use situation-specific profiles next to your “main” profile
+with the knowledge that all their data, along with all metadata, will be deleted.
+Moreover, if a device is seized then contacts using temporary profiles
can not be identified easily, as compared to messengers which reveal
phone numbers in chat groups which in turn are often associated with legal identities.
@@ -960,7 +1085,7 @@ and their non-Autocrypt e-mail app.
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
+who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
it’s best to setup guaranteed end-to-end encryption with them
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
@@ -978,10 +1103,10 @@ even if the direct chat between you two has a
The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
+
Guaranteed end-to-end encrypted chats protect against MITM attacks
+and turning on disappearing messages deletes the messages
on the server after a user-configured time.
If you don’t need a longer-lived copy of your messages on the server,
@@ -1060,11 +1185,12 @@ Caution: Make sure the key is not protected by a password, or remove the passwor
-
The most likely cause is that your key is encrypted and/or uses
-a password. Such keys are not supported by Delta Chat. You could remove the
-passphrase encryption and the password and try the import again. If you want
-to keep your passphrase you’ll have to create an e-mail alias for use
-with Delta Chat such that Delta Chat’s key is tied to this e-mail alias.
+
The most likely cause is that your key is encrypted and/or uses a password.
+Such keys are not supported by Delta Chat.
+You could remove the passphrase encryption and the password and try the import again.
+
+
Another common error is having the wrong file ending.
+Use the ASCII armored format and an .asc file ending.
The Delta Chat project underwent four independent security audits and one
+independent security analysis, from most recent to older:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
2023 April, we fixed security and privacy issues with the “web
+apps shared in a chat” feature, related to failures of sandboxing
+especially with Chromium. We subsequently got an independent security
+audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
+See here for the full background story on end-to-end security in the web.
+
+
+
2023 March, Cure53 analyzed both the transport encryption of
+Delta Chat’s network connections and a reproducible mail server setup as
+recommended on this site.
+You can read more about the audit on our blog
+or read the full report here.
+
+
+
2020, Include Security analyzed Delta
+Chat’s Rust core,
+IMAP,
+SMTP, and
+TLS libraries.
+It did not find any critical or high-severity issues.
+The report raised a few medium-severity weaknesses -
+they are no threat to Delta Chat users on their own
+because they depend on the environment in which Delta Chat is used.
+For usability and compatibility reasons,
+we can not mitigate all of them
+and decided to provide security recommendations to threatened users.
+You can read the full report here.
+
+
+
2019, Include Security analyzed Delta
+Chat’s PGP and
+RSA libraries.
+It found no critical issues,
+but two high-severity issues that we subsequently fixed.
+It also revealed one medium-severity and some less severe issues,
+but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
+Some of them we nevertheless fixed since the audit was concluded.
+You can read the full report here.
+
+
+
@@ -1095,7 +1282,7 @@ For other programs, you should be able to find a solution online.
-
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
+
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
@@ -1133,10 +1320,19 @@ One device is not needed for the other to work.
Double-check both devices are in the same Wi-Fi or network
+
+
On Windows, go to Control Panel / Network and Internet
+and make sure, Private Network is selected as “Network profile type”
+(after transfer, you can change back to the original value)
+
Your system might have a “personal firewall”,
which is known to cause problems (especially on Windows).
Disable the personal firewall for Delta Chat on both ends and try again
+
+
+
Guest Networks may not allow devices to communicate with each other.
+If possible, use a non-guest network.
Ensure there is enough storage on the destination device
@@ -1148,7 +1344,7 @@ Do not exit Delta Chat.
Delta Chat is already logged in on the destination device?
-You can use multiple accounts per device, just add another account
If you still have problems or if you cannot scan a QR code
@@ -1171,8 +1367,8 @@ try the manual transfer described below
screen unlock PIN, pattern, or password. Then you can click on “Start
Backup”. This saves the backup file to your device. Now you have to transfer
it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
+
On the new device, in the “I already have a profile” menu,
+choose “restore from backup”. After import, your conversations, encryption
keys, and media should be copied to the new device.
If you use iOS: and you encounter difficulties, maybe
@@ -1203,56 +1399,6 @@ or the AppImage for Linux. You can find them on
get.delta.chat.
-
-
-
- What is the “Send Copy to Self” setting good for?
-
-
-
-
-
Sending a copy of your messages to yourself ensures that you receive your own
-messages on all devices. If you have multiple devices and don’t turn it on, you
-see only the messages from other people, and the messages you send from the
-current device.
-
-
The copy is sent to the Inbox, and then moved to the DeltaChat folder; it’s not
-put into the “Sent” folder. Delta Chat never uploads anything to the Sent
-folder because this would mean uploading a message twice (once through SMTP,
-and once through IMAP to Sent folder).
-
-
The default setting for copy-to-self is “no”.
-
-
-
-
- Why can I choose to watch the “Sent” folder?
-
-
-
-
-
The only reason one wants to watch the Sent folder is if you are using another
-mail program (like Thunderbird) next to your Delta Chat app, and want your MUA
-to participate in chat conversations.
-
-
However, we recommend using the Delta Chat Desktop Client; you can download it
-on get.delta.chat. The option to watch the “Sent”
-folder might go away in the future. It was introduced at a time where there was
-no Delta Chat Desktop client available on all platforms.
-
-
-
-
- Why can I choose not to watch the DeltaChat folder?
-
-
-
-
-
Some people use Delta Chat as a regular email client, and want to use the Inbox
-folder for their mail, instead of the DeltaChat folder. If you disable “Watch
-DeltaChat folder”, you should also disable “move chat messages to DeltaChat”.
-Otherwise, deleting messages or multi-device setups might not work properly.
-
@@ -1399,11 +1545,8 @@ streamed to your chat partners, between 5 minutes and 6 hours.
the chat.
To see the map and view locations of others, you need to turn on the feature
in the advanced settings.
-
This feature will not share your location with anyone except your chat
-partners. But: to show the map, we need to download map tiles from
-mapbox.com, so if you view the map, mapbox.com is asked for the map of a
-specific area. If this is a privacy risk for you, this feature might not be
-for you. We are working on finding a decentralized alternative for Mapbox.
+
This feature will not share your location with anyone except your chat partners.
+Map tiles are downloaded from OpenStreetMap.
On desktop, the OS typically can’t determine your location. Instead you can
right click on the map and describe a location, which is sent to the chat as
a message, but also appears on the map.
@@ -1454,18 +1597,18 @@ would be done by the Delta Chat app.
In this case, Delta Chat doesn’t need to watch the Inbox, and it’s enough to only watch the DeltaChat folder.
-
+
- How can I change my account to a different e-mail address?
+ How can I use a different e-mail address with my profile?
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
+
Change your address in “Settings → Advanced → Password and Account” and
+enter the password of your new e-mail account (and if necessary, server settings).
You will get an information notice about the fact that you are moving to a new address.
An additional notice will also show up in your “Device messages” chat.
@@ -1496,6 +1639,60 @@ it
.
+
+
+
+ Izin apa yang dibutuhkan Delta Chat?
+
+
+
+
+
Tergantung operasi sistem yang digunakan,
+Anda mungkin diminta untuk memberikan izin ke aplikasi.
+Inilah yang dilakukan Delta Chat dengan izin ini:
+
+
+
Camera (can be disallowed)
+
+
take pictures and videos: for sending Photos
+
+
+
Contacts (can be disallowed)
+
+
read your contacts: to discover contacts to chat with
+
+
+
Location (can be disallowed)
+
+
access approximate location (network location sources): for the location streaming feature
+
access precise location (GPS and network location sources): for the location streaming feature
+
+
+
Microphone (can be disallowed)
+
+
record audio: for audio messages
+
+
+
Storage (can be disallowed)
+
+
modify or delete the contents of your SD card: to download message attachments
+
read the contents of your SD card: to share files with your contacts
+
+
+
Other app capabilities
+
+
change your audio settings: so you can choose ring tones and volume for notifications and audio messages
+
run at startup: so you don’t have to start Delta Chat manually
+
control vibration: for notifications
+
view network connections: to connect to your E-Mail provider
+
prevent phone from sleeping: so you can easier copy the security code during the Autocrypt Setup Message
+
have full network access: to connect to your E-Mail provider
+
view Wi-Fi connections: to connect to your E-Mail provider
+
ask to ignore battery optimisations: for achieving “instant message delivery”
- If Delta Chat uses E-Mail, is it really an Instant Messenger?
+ Mengapa saya harus memasukkan kata sandi E-Mail saya ke Delta Chat? Apakah ini aman?
+
Seperti program E-Mail lainnya seperti Thunderbird, K9-Mail, atau Outlook,
+program membutuhkan kata sandi sehingga Anda dapat menggunakannya untuk mengirim email. Tentu saja,
+kata sandi hanya disimpan di perangkat Anda. Kata sandi hanya dikirimkan ke
+penyedia E-Mail Anda (saat Anda login), yang tetap memiliki akses ke email Anda.
+
+
Jika Anda menggunakan penyedia E-Mail dengan dukungan OAuth2 seperti gmail.com atau yandex.ru,
+tidak perlu menyimpan kata sandi Anda di perangkat. Dalam hal ini, hanya
+token akses digunakan.
+
+
Karena Delta Chat adalah Open Source, Anda dapat memeriksa file Source
+Code
+jika Anda ingin memverifikasi bahwa kredensial Anda ditangani dengan aman. Kami bahagia
+tentang umpan balik yang membuat aplikasi lebih aman untuk semua pengguna kami.
+
+
+
+
+ Pesan mana yang muncul di Delta Chat?
+
+
+
+
+
Secara default, Delta Chat menampilkan semua email.
+
+
At “Settings → Advanced → Show Classic E-Mails”,
+you can change this. You have these options:
+
-
Sending and receiving messages takes a few seconds, typically. Sometimes
-there are cases where it takes longer but that is arguably true as well for
-any other messenger.
-
Instant chatting works fast if both parties are actively using the app. It’s
-sometimes slower if the app is running in the background.
-
Receiving messages then can take minutes because both Android and iOS often
-stop Delta Chat from running in the background, and only wake it up
-occasionally. This artificial delay is usually worse on iOS than on Android.
-
However, Android and iOS kill apps running in the background is a
-problem for many legitimate apps. For more information, see
-dontkillmyapp.com.
+
“No, chats only”: Only messages sent by other Delta Chat users and replies to
+your Delta Chat messages are shown. This makes most sense if you use the same
+e-mail account for normal e-mails as well.
+
“All”: Delta Chat shows all e-mails that are sent to your email address. This
+makes sense if you want to use Delta Chat for all your e-mails, so no message
+gets lost. This is the default setting.
+
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
+you already have a chat, but new chats only pop up for Delta Chat messages.
+This helps to decide on a case-by-case basis whether you want to have a
+conversation in Delta Chat or in a “normal” e-mail app.
Yes, incoming HTML messages come with a “Show full message” button.
+Outgoing messages always use plain text.
+
+
+
+
+ Can I set the E-Mail Subject with Delta Chat?
+
+
+
+
+
Delta Chat sets (and encrypts!) the classic e-mail subject
+automatically to the group name or to the sender name.
+
+
So if you want to set the subject yourself,
+for example for a formal e-mail to a business contact,
+you can create a group
+with only yourself and the recipient(s).
+Set the Chat Title to the Subject you want,
+and then send your e-mail as the first message.
+If the recipients don’t use Delta Chat,
+it will look like a normal,
+formal e-mail to them.
+You will get bonus professionalism points
+if you set a signature text.
+
+
+
+
+ What is the “Send Copy to Self” setting good for?
+
+
+
+
+
Sending a copy of your messages to yourself ensures that you receive your own
+messages on all devices. If you have multiple devices and don’t turn it on, you
+see only the messages from other people, and the messages you send from the
+current device.
+
+
The copy is sent to the Inbox, and then moved to the DeltaChat folder; it’s not
+put into the “Sent” folder. Delta Chat never uploads anything to the Sent
+folder because this would mean uploading a message twice (once through SMTP,
+and once through IMAP to Sent folder).
+
+
The default setting for “Send Copy to Self” is “on”.
+
+
+
+
+ Why can I choose to watch the “Sent” folder?
+
+
+
+
+
The only reason one wants to watch the Sent folder is if you are using another
+mail program (like Thunderbird) next to your Delta Chat app, and want your MUA
+to participate in chat conversations.
+
+
However, we recommend using the Delta Chat Desktop Client; you can download it
+on get.delta.chat. The option to watch the “Sent”
+folder might go away in the future. It was introduced at a time where there was
+no Delta Chat Desktop client available on all platforms.
+
+
+
+
+ Why can I choose not to watch the DeltaChat folder?
+
+
+
+
+
Some people use Delta Chat as a regular email client, and want to use the Inbox
+folder for their mail, instead of the DeltaChat folder. If you disable “Watch
+DeltaChat folder”, you should also disable “move chat messages to DeltaChat”.
+Otherwise, deleting messages or multi-device setups might not work properly.
As you use an e-mail account for Delta Chat,
+how you can delete your account depends on your e-mail provider.
+We don’t have any control over your e-mail account,
+so unfortunately we can’t help you with that.
+
+
If you want to keep the account,
+but uninstall Delta Chat,
+it is recommended to leave any group chat before uninstalling Delta Chat.
-
-
- Was Delta Chat independently audited for security vulnerabilities?
-
-
-
-
-
The Delta Chat project underwent four independent security audits in the last years:
-
-
-
-
In 2019, Include Security analyzed Delta
-Chat’s PGP and
-RSA libraries.
-It found no critical issues,
-but two high-severity issues that we subsequently fixed.
-It also revealed one medium-severity and some less severe issues,
-but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
-Some of them we nevertheless fixed since the audit was concluded.
-You can read the full report here.
-
-
-
In 2020, Include Security analyzed Delta
-Chat’s Rust core,
-IMAP,
-SMTP, and
-TLS libraries.
-It did not find any critical or high-severity issues.
-The report raised a few medium-severity weaknesses -
-they are no threat to Delta Chat users on their own
-because they depend on the environment in which Delta Chat is used.
-For usability and compatibility reasons,
-we can not mitigate all of them
-and decided to provide security recommendations to threatened users.
-You can read the full report here.
-
-
-
Beginning 2023, Cure53 analyzed both the transport encryption of
-Delta Chat’s network connections and a reproducible mail server setup as
-recommended on this site.
-You can read more about the audit on our blog
-or read the full report here.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
@@ -1673,7 +1944,7 @@ completing Rust/Python bindings and instigating a Chat-bot eco-system.
In 2021 we received further EU funding for two Next-Generation-Internet
-proposals, namely for EPPD - e-mail provider portability directory (~97K EUR) and AEAP - email address porting (~90K EUR) which resulted in better multi-account support, improved QR-code contact and group setups and many networking improvements on all platforms.
From End 2021 till March 2023 we received Internet Freedom funding (500K USD) from the
diff --git a/assets/help/it/help.html b/src/main/assets/help/it/help.html
similarity index 78%
rename from assets/help/it/help.html
rename to src/main/assets/help/it/help.html
index ae0454b69..05cd7a136 100644
--- a/assets/help/it/help.html
+++ b/src/main/assets/help/it/help.html
@@ -4,17 +4,14 @@
Delta Chat è una nuova app di chat che invia messaggi tramite e-mail, se possibile crittografati, con Autocrypt.
-Non devi registrarti da nessuna parte, usa semplicemente il tuo account e-mail esistente con Delta Chat.
+
Delta Chat è un’app di messaggistica affidabile, decentralizzata e sicura,
+disponibile per piattaforme mobili e desktop.
+
+
Delta Chat sembra Whatsapp o Telegram ma puoi anche usarlo e considerarlo come un’app e-mail.
+Puoi iscriverti in modo anonimo a una varietà di server chatmail interoperabili
+che sono server e-mail minimi ottimizzati per operazioni veloci e sicure.
+Oppure puoi utilizzare i classici server e-mail e un profilo e-mail esistente
+nel qual caso Delta Chat funge da app e-mail.
@@ -117,9 +134,15 @@
-
Con Delta Chat puoi scrivere a qualsiasi indirizzo e-mail esistente, anche
-se il destinatario non sta utilizzando l’app Delta Chat. Non c’è bisogno per il
-destinatario di installare la tua stessa app, come con altri messenger.
+
Per impostare in modo sicuro il contatto con gli altri scansiona un codice QR di invito
+o condividi un link di invito.
+Ciò è necessario quando si utilizza un profilo chat basato su chatmail (predefinito).
+perché i server chatmail rifiutano i messaggi in uscita non crittografati.
+
+
Se crei un profilo di chat con un indirizzo e-mail classico
+puoi creare manualmente un contatto se conosci il loro indirizzo e-mail
+e poi scrivi loro un messaggio
+anche se il destinatario non utilizza Delta Chat.
@@ -130,42 +153,25 @@ destinatario di installare la tua stessa app, come con altri messenger.
-
Indipendente da qualsiasi azienda o servizio. Tu possiedi i tuoi dati.
-
I tuoi dati non vengono salvati su un server centrale a meno che non vengano utilizzati da tutti gli utenti
-gli stessi server e-mail
-
Non distribuisce la tua rubrica a nessuno.
-
Veloce grazie all’uso di Push-IMAP.
-
Base utenti più numerosa: è possibile raggiungere anche i destinatari che non utilizzano Delta Chat.
-
No Spam: per impostazione predefinita vengono visualizzati solo i messaggi di utenti conosciuti.
-
Crittografia end-to-end tramite Autocrypt.
-
Software libero basato su Copyleft e Standards.
-
Identità flessibile con supporto integrato per più account
-
-
-
-
-
- Quali messaggi vengono mostrati in Delta Chat?
-
-
-
-
-
Per impostazione predefinita, Delta Chat mostra tutte le e-mails.
-
-
In “Impostazioni -> Chat e
-Media -> Mostra E-mail Tradizionali”, puoi modificare questa impostazione. Hai queste opzioni:
-
-
-
“No, solo chat”: solo i messaggi inviati da altri utenti di Delta Chat e le “risposte a”
-vengono visualizzati i tuoi messaggi di Delta Chat. Questo ha più senso se usi lo stesso
-account di posta elettronica anche per le normali e-mail.
-
“Per i contatti accettati”: Delta Chat mostra tutte le e-mail dei contatti con cui
-hai già una chat, ma le nuove chat vengono visualizzate solo per i messaggi di Delta Chat.
-Questo aiuta a decidere caso per caso se si desidera avere una
-conversazione in Delta Chat o in una “normale” app di posta elettronica.
-
“Sì”: Delta Chat mostra tutte l’e-mail inviate al tuo indirizzo e-mail. Questo
-ha senso se vuoi usare Delta Chat per tutte le tue e-mail, quindi nessun messaggio
-si perde. Questa è l’impostazione predefinita.
+
+
Profili chat anonimi con [server chatmail] veloci, sicuri e interoperabili (https://delta.chat/chatmail)
+che offrono notifiche push istantanee per dispositivi iOS e Android.
+
+
+
Pervasivo multi-profilo e supporto multi-dispositivo su tutte le piattaforme.
@@ -207,18 +213,25 @@ messaggi da questa persona, prendete in considerazione la possibilità di bl
- Come posso aggiungere o passare da un account all'altro?
+ Cosa sono i profili? Come posso passare dall’uno all’altro?
-
Puoi facilmente lavorare con account aggiuntivi sui client mobili e desktop di Delta Chat facendo clic su:
-
-
sul pulsante del menu e poi su “Cambia Account” (Android e desktop)
-
o l’icona del profilo e poi ‘Aggiungi account’ (iOS)
-
+
Un profilo è un nome, un’immagine e alcune informazioni aggiuntive per crittografare i messaggi.
+Un profilo risiede solo sui tuoi dispositivo(i)
+e utilizza una chatmail o un classico server e-mail per trasportare i messaggi.
Alla prima installazione di Delta Chat viene creato un primo profilo.
+
+
Successivamente, puoi toccare l’immagine del tuo profilo nell’angolo in alto a sinistra per Aggiungere Profili
+o Cambiare Profili.
+
+
Potresti voler utilizzare profili separati per attività politiche, familiari o lavorative,
+o es. per un “profilo spam” dedicato con il quale ti registri su siti web e piattaforme
+che prima o poi tendono a causare messaggi non richiesti (“spam”).
- Delta Chat supporta le e-mail HTML?
+ Posso impostare una Firma Testo/Stato/Motto con Delta Chat?
-
Sì, i messaggi HTML in arrivo sono dotati di un pulsante “Mostra messaggio completo”.
-I messaggi in uscita utilizzano sempre testo normale.
-
-
-
-
- Perché devo inserire la mia password E-Mail in Delta Chat? È sicuro?
-
-
-
-
-
Come con altri programmi di posta elettronica quali Thunderbird, K9-Mail o Outlook,il
-programma ha bisogno della password in modo da poterla utilizzare per inviare mail. Naturalmente, la
-password è memorizzata solo sul tuo dispositivo. La password viene trasmessa solo a
-il tuo fornitore E-Mail (quando effettui il login), che ha comunque accesso alla tua posta.
-
-
Se utilizzi un provider E-Mail con supporto OAuth2 come gmail.com o yandex.ru,
-non è necessario memorizzare la password sul dispositivo. In questo caso, solo un
-token di accesso viene utilizzato.
-
-
Poiché Delta Chat è Open Source, puoi controllare il Codice
-Sorgente
-se vuoi verificare che le tue credenziali siano gestite in modo sicuro. Siamo felici dei feedback che rendono l’app più sicura per tutti i nostri utenti.
-
-
-
-
- Di quali autorizzazioni ha bisogno Delta Chat?
-
-
-
-
-
A seconda del sistema operativo in uso,
-potrebbe esserti chiesto di concedere le autorizzazioni all’app.
-Questo è ciò che fa Delta Chat con queste autorizzazioni:
-
-
-
Fotocamera (può essere disabilitata)
-
scattare foto e video: per l’invio di foto
-
Contatti (possono essere disabilitati)
-
leggi i tuoi contatti: per scoprire i contatti con cui chattare
-
Posizione (può essere non consentita)
-
accedere alla posizione approssimativa (fonti di posizione di rete): per la funzione di trasmissione della posizione
-
accedere alla posizione precisa (GPS e fonti di localizzazione di rete): per la funzione di trasmissione della posizione
-
Microfono (può essere disattivato)
-
registra audio: per i messaggi audio
-
Memoria (può essere disabilitata)
-
modificare o eliminare il contenuto della scheda SD: per scaricare gli allegati dei messaggi
-
leggere il contenuto della tua scheda SD: per condividere file con i tuoi contatti
-
Altre funzionalità dell’app
-
modificare le impostazioni audio: così puoi scegliere suonerie e volume per notifiche e messaggi audio
-
esegui all’avvio: così non devi avviare Delta Chat manualmente
-
controllo vibrazione: per le notifiche
-
visualizzare le connessioni di rete: per connettersi al proprio fornitore E-Mail
-
impedisce al telefono di andare in sospensione: così puoi copiare più facilmente il codice di sicurezza durante il messaggio di configurazione di Autocrypt
-
avere pieno accesso alla rete: per connettersi al proprio fornitore E-Mail
-
visualizzare le connessioni Wi-Fi: per connettersi al proprio fornitore E-Mail
-
chiedi di ignorare le ottimizzazioni della batteria: per gli utenti che vogliono ricevere immediatamente i messaggi
-
+
SÌ,
+puoi farlo in “Impostazioni > Profilo > Firma”.
+I tuoi contatti che utilizzano Delta Chat lo vedranno
+quando visualizzano i tuoi dettagli di contatto.
+A tutti gli altri,
+apparirà come una firma di posta elettronica
+sotto il testo di tutti i tuoi messaggi.
@@ -370,22 +331,40 @@ hai disattivato le conferme di lettura, non vedranno il punto verde finché non
invia loro un messaggio o scrivi anche a un gruppo a cui appartengono.
-
+
- Come posso eliminare il mio account?
+ Come funzionano i messaggi a scomparsa?
-
Poiché utilizzi un account e-mail per Delta Chat,
-il modo in cui puoi eliminare il tuo account dipende dal tuo provider e-mail.
-Non abbiamo alcun controllo sul tuo account e-mail,
-quindi purtroppo non possiamo aiutarti in questo.
+
Puoi attivare i “messaggi che scompaiono”
+nelle impostazioni di una chat,
+in alto a destra nella finestra della chat,
+selezionando un intervallo di tempo
+tra 1 minuto e 5 settimane.
-
Se vuoi mantenere l’account,
-ma disinstallare Delta Chat,
-si consiglia di uscire da qualsiasi chat di gruppo prima di disinstallare Delta Chat.
+
Fino a quando l’impostazione non viene nuovamente disattivata,
+l’app Delta Chat di ogni membro della chat si prende cura
+di eliminare i messaggi
+dopo l’intervallo di tempo selezionato.
+Inizia il lasso di tempo
+quando il destinatario vede per la prima volta il messaggio in Delta Chat.
+I messaggi vengono eliminati
+entrambi in ciascun profilo e-mail sul server,
+e nell’app stessa.
+
+
Tieni presente che puoi fare affidamento sui messaggi che scompaiono
+solo finché ti fidi dei tuoi partner di chat;
+i partner di chat dannosi possono scattare foto,
+o altrimenti salvare, copiare o inoltrare messaggi prima della cancellazione.
+
+
A parte quello,
+se un partner di chat disinstalla Delta Chat,
+i messaggi non verranno eliminati dal loro profilo e-mail.
+Molto probabilmente non saranno più decifrabili
+(a patto che siano stati crittografati in primo luogo).
@@ -515,6 +494,170 @@ in questo modo, tutti i messaggi saranno eliminati dal dispositivo non
più vecchi di quel periodo.
+
+
+
+ Cosa sono le Notifiche Push? Come posso ottenere la consegna dei messaggi istantanei?
+
+
+
+
+
Le Notifiche Push vengono inviate dai “Servizi push” di Apple e Google al dispositivo di un utente
+in modo che un’app Delta Chat inattiva possa recuperare i messaggi in background
+e mostrare le notifiche sul telefono di un utente, se necessario.
+
+
Le Notifiche Push funzionano con tutti i server chatmail attivi
+
+
+
+
Dispositivi iOS, attraverso l’integrazione con i servizi Push di Apple.
+
+
+
Dispositivi Android, attraverso l’integrazione con il servizio Google FCM Push,
+anche sui dispositivi che utilizzano microG
+invece del codice proprietario di Google sul telefono.
+
+
+
+
A partire da Maggio 2024, i server e-mail classici non supportano le Notifiche Push
+per gli utenti di Delta Chat.
+
+
+
+
+ Le Notifiche Push sono abilitate sui dispositivi iOS? Esiste un’alternativa?
+
+
+
+
+
Sì, Delta Chat utilizza automaticamente le notifiche push per i profili chatmail.
+E no, non esiste alcuna alternativa sui telefoni Apple per ottenere la consegna dei messaggi istantanei
+perché i dispositivi Apple non consentono a Delta Chat di recuperare i dati in background.
+Le notifiche push vengono attivate automaticamente per gli utenti iOS perché
+Sistema di notifiche push che tutela la privacy di Delta Chat
+non espone ad Apple i dati che non possiede già.
+
+
+
+
+ Le Notifiche Push sono abilitate / necessarie sui dispositivi Android?
+
+
+
+
+
Se è disponibile un “Servizio Push”, Delta Chat abilita le Notifiche Push
+per ottenere la consegna di messaggi istantanei a tutti gli utenti chatmail.
+Se utilizzi un provider e-mail classico anziché i server chatmail,
+Le notifiche push non sono disponibili.
+
+
Nelle impostazioni “Notifiche” di Delta Chat per “Consegna istantanea”
+puoi modificare le seguenti impostazioni che interessano tutti i profili chat:
+
+
+
+
Utilizza Servizio Push: l’impostazione predefinita quando si utilizzano i profili chatmail e se
+sul telefono è disponibile un servizio Push.
+Se disponi sia di profili chatmail che di e-mail classica,
+la Notifica Push funzionerà solo
+per i messaggi in arrivo sui profili chatmail.
+
+
+
Utilizza Connessione in Background: se non stai utilizzando un servizio Push,
+puoi disattivare le “ottimizzazioni della batteria” per Delta Chat,
+permettendogli di recuperare i messaggi in background.
+Tuttavia potrebbero verificarsi ritardi da minuti ad ore.
+Alcuni fornitori Android limitano addirittura completamente le app
+(vedi dontkillmyapp.com)
+e Delta Chat potrebbe non mostrare i messaggi in arrivo
+finché non riapri manualmente l’app.
+
+
+
Forza Connessione Background: questa è l’opzione di ripiego
+se le opzioni precedenti non sono disponibili o non raggiungono la “consegna immediata”.
+Abilitandolo si genera una notifica permanente sul tuo telefono
+che a volte può essere “minimizzato” con i recenti telefoni Android.
+
+
+
+
Entrambe le opzioni “Connessione in Background” sono efficienti dal punto di vista energetico ed
+è sicuro provarlo se riscontri che i messaggi arrivano solo con lunghi ritardi.
+
+
+
+
+ Quanto sono private le Notifiche Push di Delta Chat?
+
+
+
+
+
Il supporto delle Notifiche Push di Delta Chat evita la fuga di informazioni private.
+Non perde e-mail, indirizzo IP o contenuto dei messaggi (nemmeno crittografati)
+a qualsiasi sistema coinvolto nella consegna di Notifiche Push.
+
+
Ecco come le app Delta Chat eseguono l’invio delle Notifiche Push:
+
+
+
+
Un’app Delta Chat ottiene un “gettone del dispositivo” localmente e lo memorizza
+sul server chatmail.
+
+
+
Quando un server chatmail riceve un’e-mail per un utente Delta Chat
+inoltra il “gettone del dispositivo” al proxy di notifica centrale di Delta Chat.
+
+
+
Il proxy di notifica centrale di Delta Chat inoltra
+il “gettone del dispositivo” al rispettivo servizio Push (Apple, Google, ecc.),
+senza mai conoscere l’IP o l’indirizzo e-mail degli utenti Delta Chat.
+
+
+
Il Servizio Push centrale (Apple, Google, ecc.)
+attiva l’app Delta Chat sul tuo dispositivo
+per verificare la presenza di nuovi messaggi in background.
+Non conosce chatmail o l’indirizzo e-mail del dispositivo che si attiva.
+I servizi centrali Apple/Google Push non vedono mai un indirizzo e-mail (mittente o destinatario)
+e inoltre non vedono mai il contenuto del messaggio (anche non in forma crittografata).
+
+
+
+
A partire da Maggio 2024, i server chatmail conoscono i “gettoni del dispositivo”
+ma prevediamo di crittografare queste informazioni nel proxy di notifica
+in modo tale che il server chatmail non apprenda mai il gettone del dispositivo.
+
+
Il proxy di notifica centrale di Delta Chat è piccolo e completamente implementato in Rust
+e si dimentica dei gettoni del dispositivo non appena Apple/Google/ecc li elabora,
+di solito nel giro di pochi millisecondi.
+
+
Come risultato di questo disegno complessivo sulla riservatezza, anche il sequestro di un server chatmail,
+o il sequestro totale del proxy di notifica centrale di Delta Chat
+non rivelerebbe informazioni private che i servizi Push non abbiano già.
+
+
+
+
+ Perché Delta Chat si integra con i servizi push centralizzati proprietari di Apple/Google?
+
+
+
+
+
Delta Chat è un messenger decentralizzato gratuito e open source con scelta libera del server,
+ma vogliamo che gli utenti sperimentino in modo affidabile la “consegna istantanea” dei messaggi,
+come sperimentano dalle app Whatsapp, Signal o Telegram,
+senza porre domande in anticipo, più adatte a utenti esperti o sviluppatori.
Autocrypt viene utilizzato automaticamente per stabilire la crittografia end-to-end con contatti e chat di gruppo. Autocrypt utilizza un sottoinsieme limitato e sicuro dello standard OpenPGP. I messaggi crittografati end-to-end sono contrassegnati da un lucchetto
.
Protocolli Secure-Join
vengono utilizzati per stabilire chat con crittografia end-to-end garantita
che protegge dagli attacchi di rete e dai server compromessi.
Chat contrassegnata da un segno di spunta verde
@@ -565,49 +708,32 @@ garantisce messaggi crittografati end-to-end.
-
Incontra il tuo partner di chat fuori Delta Chat, preferibilmente di persona
-ma un secondo canale come una chat video
-oppure va bene anche un altro messenger.
-Esegui la seguente procedura di presentazione/scansione QR con il tuo partner di chat.
-Uno di voi è l’“Invitante”, l’altro è l’“Invitato”.
+
Se disponi di un secondo canale di comunicazione con il tuo partner di chat,
+come una chat video o un altro messenger,
+puoi generare un link d’invito.
-
Lato invito:
+
Se siete insieme di persona,
+puoi mostrare un codice QR al tuo partner di chat.
-
Invito di gruppo:
-Tocca il titolo del gruppo di chat per visualizzare l’elenco dei membri e seleziona “Codice QR di invito”.
-Condividi l’immagine QR con l’altra parte di persona o tramite un secondo canale.
+
Per Inviti di gruppo,
+tocca il titolo del gruppo di chat per vedere l’elenco dei membri,
+e seleziona “Codice QR di Invito”.
-
Invito diretto alla chat 1:1:
-Tocca l’icona del Codice QR
-nella schermata principale dell’app Delta Chat –
-sul desktop l’icona QR si trova nel menu a sandwich sul lato sinistro.
-Condividi l’immagine QR con l’altra parte di persona o tramite un secondo canale.
+
Per inviti diretti alla chat 1:1,
+tocca l’icona del codice QR
+nella schermata principale dell’app Delta Chat.
-
Lato invitato:
+
Lascia che il tuo partner di chat esegua la scansione dell’immagine QR
+con la loro app Delta Chat,
+oppure fai clic su “Copia” o “Condividi” per creare un collegamento di invito
+e condividilo con il tuo partner di chat.
-
-
-
Tocca l’icona del Codice QR
- nella schermata principale dell’app Delta Chat –
- sul desktop l’icona QR si trova nel menu a sandwich sul lato sinistro.
-
-
-
Scegli “SCANSIONE CODICE QR” e scansiona il Codice QR
-che vedi dal tuo partner di chat in un secondo canale.
@@ -652,14 +778,14 @@ o è stato presentato da un altro contatto contrassegnato da un segno di spunta
Le presentazioni avvengono automaticamente quando si aggiungono membri ai gruppi.
Chi aggiunge un contatto a un gruppo contrassegnato da un segno di spunta verde diventa un introduttore
a quei membri che non erano ancora a conoscenza del contatto aggiunto. In un profilo di contatto è possibile toccare ripetutamente il testo “Presentato da…”.
-fino ad arrivare a quello con cui hai effettuato direttamente una QR-scan.
+fino ad arrivare a quello con cui hai effettuato direttamente una scansione QR.
Tieni presente che nel profilo di un contatto potresti vedere e toccare gli introduttori
ma non c’è il segno di spunta verde nel titolo del profilo.
Questo di solito significa che il contatto “ha inviato un messaggio da un altro dispositivo”.
Per una discussione più approfondita sulla “crittografia end-to-end garantita”
-consultare Protocolli Secure-Join
+consultare Protocolli Secure-Join
e leggi nello specifico i “Gruppi Verificati”, il termine tecnico
di quelle che qui vengono chiamate chat “con segno di spunta verde” o “crittografate end-to-end garantite”.
@@ -687,16 +813,16 @@ anche se il contatto è un membro.
Il tuo contatto sta utilizzando Delta Chat su un secondo dispositivo (telefono o laptop)
Se hanno un altro dispositivo con l’app Delta Chat in esecuzione,
-dovrebbero rimuovere l’account dal nuovo dispositivo
+dovrebbero rimuovere il profilo dal nuovo dispositivo
e aggiungerlo come secondo dispositivo come descritto qui.
Non appena ti invieranno un messaggio, l’avviso scomparirà
e la crittografia garantita viene stabilita con entrambi i dispositivi del tuo contatto.
-
Il tuo contatto ha reinstallato Delta Chat utilizzando il vecchio login dell’account
+
Il tuo contatto ha reinstallato Delta Chat utilizzando il vecchio login del profilo
Se hanno un file di backup,
-dovrebbero rimuovere l’account dal nuovo dispositivo
-e piuttosto importare il file di backup per ricreare il proprio account.
+dovrebbero rimuovere il profilo dal nuovo dispositivo
+e piuttosto importare il file di backup per ricreare il proprio profilo.
Non appena ti invieranno un messaggio, l’avviso scomparirà
e la crittografia garantita viene ristabilita per questo contatto.
@@ -883,11 +1009,11 @@ consegnare messaggi ai dispositivi del destinatario.
Entrambi per la protezione dai server e-mail che raccolgono metadati
nonché contro il pericolo di sequestro del dispositivo
consigliamo di utilizzare un’istanza del server e-mail ottimizzata per Delta Chat
-per creare account temporanei pseudonimi tramite scansioni di codici QR.
-Tieni presente che le app Delta Chat su tutte le piattaforme supportano più account
-in questo modo puoi utilizzare facilmente account “1 settimana” o “1 mese” specifici per azioni accanto al tuo account “principale”.
-con la consapevolezza che tutti i dati temporanei dell’account, insieme a tutti i metadati, verranno cancellati.
-Inoltre, se un dispositivo viene sequestrato, i contatti utilizzano account di posta elettronica temporanei
+per creare profili temporanei pseudonimi tramite scansioni di codici QR.
+Tieni presente che le app Delta Chat su tutte le piattaforme supportano più profili
+in questo modo puoi utilizzare facilmente profili “1 settimana” o “1 mese” specifici per azioni accanto al tuo profilo “principale”.
+con la consapevolezza che tutti i dati temporanei del profilo, insieme a tutti i metadati, verranno cancellati.
+Inoltre, se un dispositivo viene sequestrato, i contatti utilizzano profili e-mail temporanei
non possono essere identificati facilmente, rispetto ai messaggeri che rivelano
numeri di telefono nei gruppi di chat che a loro volta sono spesso associati a identità legali.
@@ -930,8 +1056,8 @@ senza supporto per la crittografia end-to-end.
Se un contatto utilizza un’app e-mail non Autocrypt,
tutti i messaggi che coinvolgono questo contatto (in un gruppo o in una chat 1:1)
non sarà crittografato end-to-end e quindi non mostrerà un “lucchetto” con i messaggi.
-Tieni presente che anche se i tuoi contatti utilizzano Delta Chat sul proprio account,
-potrebbero anche utilizzare un’app di posta elettronica non Autocrypt su quell’account
+Tieni presente che anche se i tuoi contatti utilizzano Delta Chat sul proprio profilo,
+potrebbero anche utilizzare un’app di posta elettronica non Autocrypt su quel profilo
che quindi potrebbe causare messaggi non crittografati in modo intermittente.
La risposta non crittografata a messaggi non crittografati è richiesta da Autocrypt
per evitare messaggi illeggibili tra i tuoi contatti
@@ -946,7 +1072,7 @@ e la loro app e-mail non Autocrypt.
Se hai bisogno di una chat crittografata end-to-end sicura con un contatto
-chi utilizza il proprio account sia con Delta Chat che con app non Autocrypt (ad esempio webmail),
+chi utilizza il proprio profilo sia con Delta Chat che con app non Autocrypt (ad esempio webmail),
è meglio configurare la crittografia end-to-end garantita con loro
e quindi crea una chat di gruppo crittografata end-to-end garantita con voi due come membri.
In questa chat di gruppo tutti i messaggi verranno crittografati end-to-end
@@ -964,7 +1090,7 @@ anche se la chat diretta tra voi due ha a
Il modo migliore per garantire che ogni messaggio sia crittografato end-to-end,
e i metadati vengono eliminati il più rapidamente possibile
è utilizzare chat con crittografia end-to-end garantita
-e l’attivazione dei messaggi a scomparsa.
Le chat crittografate end-to-end garantiscono la protezione dagli attacchi MITM
e l’attivazione dei “messaggi che scompaiono” elimina i messaggi
@@ -1046,11 +1172,12 @@ Attenzione: assicurarsi che la chiave non sia protetta da password oppure rimuov
-
La causa più probabile è che la tua chiave sia crittografata e/o utilizzi
-una password. Tali chiavi non sono supportate da Delta Chat. Potresti rimuovere la
-crittografia della passphrase e la password e riprovare l’importazione. Se vuoi
-per mantenere la tua passphrase dovrai creare un alias e-mail per l’uso
-con Delta Chat in modo che la chiave di Delta Chat sia collegata a questo alias e-mail.
+
Con molta probabilità, il problema sta nel fatto che la tua chiave è cifata e/o usa
+una password. Queste chiavi non sono supportate da Delta Chat. Rimuovi la
+cifratura e la password e prova ad importarla nuovamente.
+
+
Un altro errore comune è avere la fine del file sbagliata.
+Utilizza il formato corazzato ASCII e l’estensione del file “.asc”.
Delta Chat supporta i formati di chiave privata OpenPGP comuni, tuttavia,
è improbabile che le chiavi private di tutte le fonti siano completamente supportate. Questo
@@ -1065,6 +1192,67 @@ password su un valore vuoto nella finestra Gestione chiavi. Con GnuPG puoi impos
di comando.
Per altri programmi, dovresti essere in grado di trovare una soluzione online.
+
+
+
+ Delta Chat è stata verificata in modo indipendente per le vulnerabilità di sicurezza?
+
+
+
+
+
Il progetto Delta Chat è stato sottoposto a quattro controlli di sicurezza indipendenti e
+un’analisi di sicurezza indipendente, dal più recente al più vecchio:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
A partire dal 2023, abbiamo risolto i problemi di sicurezza e privacy con il servizio “web
+app condivise in una chat”, relativa ai guasti del sandboxing
+soprattutto con Chromium. Successivamente abbiamo ottenuto una sicurezza indipendente
+audit da Cure53 e tutti i problemi rilevati sono stati risolti nella serie di app 1.36 rilasciata nell’aprile 2023.
+Vedi qui per la storia completa sulla sicurezza end-to-end nel web.
+
+
+
A partire dal 2023, Cure53 ha analizzato sia la crittografia del trasporto delle
+Connessioni di rete di Delta Chat e una configurazione del server di posta riproducibile come
+consigliato su questo sito.
+Puoi leggere ulteriori informazioni sull’audit sul nostro blog
+o leggere il rapporto completo qui.
+
+
+
Nel 2020, Include Security ha analizzato il Delta
+Chat’s Rust core,
+IMAP,
+SMTP e
+TLS librerie.
+Non ha rilevato problemi critici o di elevata gravità.
+Il rapporto ha sollevato alcuni punti deboli di media gravità:
+da soli non rappresentano una minaccia per gli utenti di Delta Chat
+perché dipendono dall’ambiente in cui viene utilizzato Delta Chat.
+Per motivi di usabilità e compatibilità,
+non possiamo mitigarli tutti
+e ha deciso di fornire consigli sulla sicurezza agli utenti minacciati.
+Puoi leggere il rapporto completo qui.
+
+
+
Nel 2019, Include Security ha analizzato le librerie
+PGP e
+RSA di Delta Chat.
+Non ha riscontrato criticità,
+ma due problemi di elevata gravità che abbiamo successivamente risolto.
+Ne sono emersi anche uno di media gravità e alcuni problemi meno gravi,
+ma non c’era modo di sfruttare queste vulnerabilità nell’implementazione di Delta Chat.
+Alcuni di essi sono stati comunque corretti dopo la conclusione dell’audit.
+Puoi leggere il rapporto completo qui.
+
+
+
@@ -1081,7 +1269,7 @@ Per altri programmi, dovresti essere in grado di trovare una soluzione online.
-
Sì. Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
+
Sì. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
@@ -1119,10 +1307,19 @@ Un dispositivo non è necessario perché l’altro funzioni.
Verificare che entrambi i dispositivi siano nella stessa rete o Wi-Fi.
+
+
Su Windows, vai su Pannello di controllo / Rete e Internet
+e assicurati che Rete Privata sia selezionata come “Tipo di profilo di rete”
+(dopo il trasferimento è possibile ripristinare il valore originale)
+
Il sistema potrebbe avere un “personal firewall”,
che è noto per causare problemi (soprattutto su Windows).
Disattivare il firewall personale per Delta Chat su entrambe le estremità e riprovare.
+
+
+
Reti Ospite potrebbero non consentire ai dispositivi di comunicare tra loro.
+Se possibile, utilizza una rete non ospite.
Assicurarsi che sul dispositivo di destinazione ci sia disponibilità di memoria sufficiente.
@@ -1134,7 +1331,7 @@ Non uscire da Delta Chat.
Delta Chat è già connesso sul dispositivo di destinazione?
-È possibile utilizzare più account per dispositivo, basta aggiungere un altro account
Se si riscontrano ancora problemi o se non si riesce a scansionare un codice QR
@@ -1157,8 +1354,8 @@ provate il trasferimento manuale descritto di seguito
PIN, sequenza o password di sblocco dello schermo. Quindi puoi fare clic su “Avvia
Backup”. Questo salva il file di backup sul tuo dispositivo. Ora devi trasferirlo
in qualche modo all’altro dispositivo.
-
Sul nuovo dispositivo, nella schermata di accesso, invece di accedere alla tua email
-account, seleziona “Importa backup”. Dopo l’importazione, le tue conversazioni, la crittografia
+
Sul nuovo dispositivo, nella schermata di accesso, invece di accedere al tuo profilo
+e-mail, seleziona “Importa backup”. Dopo l’importazione, le tue conversazioni, la crittografia
i tasti e i supporti devono essere copiati sul nuovo dispositivo.
Se usi iOS: e incontri difficoltà, forse
questa guida
@@ -1186,56 +1383,6 @@ o l’AppImage per Linux. Le trovi su
get.delta.chat.
-
-
-
- A cosa serve l’impostazione “Invia copia a se stessi”?
-
-
-
-
-
L’invio di una copia dei tuoi messaggi a te stesso ti assicura di ricevere i tuoi
-messaggi su tutti i dispositivi. Se disponi di più dispositivi e non lo attivi,
-vedrai solo i messaggi di altre persone e i messaggi che invii dal
-dispositivo attuale.
-
-
La copia viene inviata alla Posta in arrivo, quindi spostata nella cartella DeltaChat; non è
-messa nella cartella “Inviata”. Delta Chat non carica mai nulla su Posta
-Inviata perché questo significherebbe caricare un messaggio due volte (una volta tramite SMTP,
-e una volta tramite IMAP nella cartella Posta Inviata).
-
-
L’impostazione predefinita per la copia su se stesso è “no”.
-
-
-
-
- Perché posso scegliere di guardare la cartella “Inviata”?
-
-
-
-
-
L’unico motivo per cui si vuole guardare la cartella Inviata è se ne stai usando un’altro
-programma di posta (come Thunderbird) accanto alla tua app Delta Chat e desideri il tuo MUA
-per partecipare a conversazioni in chat.
-
-
Tuttavia, consigliamo di utilizzare il client desktop Delta Chat; puoi scaricarlo
-su get.delta.chat. L’opzione per guardare la cartella
-“Inviata” potrebbe scomparire in futuro. È stato introdotto in un momento in cui non c’era
-nessun client Delta Chat Desktop disponibile su tutte le piattaforme.
-
-
-
-
- Perché posso scegliere di non guardare la cartella DeltaChat?
-
-
-
-
-
Alcune persone usano Delta Chat come un normale client di posta elettronica e desiderano utilizzare la cartella Posta in arrivo
-per la loro posta, invece della cartella DeltaChat. Se disabiliti “Controlla
-cartella DeltaChat”, dovresti anche disabilitare “sposta messaggi chat in DeltaChat”.
-In caso contrario, l’eliminazione dei messaggi o configurazioni multi-dispositivo potrebbero non funzionare correttamente.
-
@@ -1370,22 +1517,19 @@ consumo di rete).
-
Puoi attivare la trasmissione della posizione nella sezione “Funzionalità Sperimentali” nelle
+
Puoi attivare lo streaming della posizione nella sezione “funzionalità sperimentali” di
impostazioni avanzate.
Ora, se vuoi condividere la tua posizione in una chat, vai su “allega” e seleziona
-“Posizione”. Ora puoi impostare un intervallo di tempo in cui verrà trasmessa la tua posizione
-ai tuoi partner di chat, tra 5 minuti e 6 ore.
-
Quando la tua posizione cambia, gli altri nella chat possono visualizzarla su una mappa nella
+“posizione”. Ora puoi impostare un intervallo di tempo in cui sarà la tua posizione
+trasmessa in streaming ai tuoi partner di chat, tra 5 minuti e 6 ore.
+
Quando la tua posizione cambia, gli altri nella chat possono visualizzarla su una mappa in
chat.
-
Per vedere la mappa e visualizzare le posizioni degli altri, devi attivare la funzione
+
Per vedere la mappa e visualizzare le posizioni degli altri, è necessario attivare la funzione
nelle impostazioni avanzate.
-
Questa funzione non condividerà la tua posizione con nessuno tranne che con i tuoi partner di chat.
-Ma: per mostrare la mappa, dobbiamo scaricare i riquadri della mappa da
-mapbox.com, quindi se visualizzi la mappa, a mapbox.com viene richiesta la mappa di un
-area specifica. Se questo è un rischio per la privacy per te, questa funzione potrebbe non esserlo più.
-Stiamo lavorando per trovare un’alternativa decentralizzata per Mapbox.
+
Questa funzione non condividerà la tua posizione con nessuno tranne i tuoi partner di chat.
+I riquadri della mappa vengono scaricati da OpenStreetMap.
Su desktop, il sistema operativo in genere non è in grado di determinare la tua posizione. Invece puoi
-fare clic con il tasto destro sulla mappa e descrivere una posizione, che viene inviata alla chat come
+fare clic con il tasto destro sulla mappa e descrivere una posizione, che verrà inviata alla chat come
un messaggio, ma appare anche sulla mappa.
In questo caso, Delta Chat non ha bisogno di guardare la Posta in arrivo ed è sufficiente guardare solo la cartella DeltaChat.
-
+
- Come posso cambiare il mio account con un indirizzo e-mail diverso?
+ Come posso cambiare il mio profilo con un indirizzo e-mail diverso?
-
Cambia il tuo indirizzo in “Impostazioni - Password e Account” e
-inserisci la password del tuo nuovo account (e se necessario, le impostazioni del server).
+
Cambia il tuo indirizzo in “Impostazioni → Avanzate → Password e Profilo” e
+inserisci la password del tuo nuovo profilo (e se necessario, le impostazioni del server).
Riceverai un avviso informativo sul fatto che ti trasferirai ad un nuovo indirizzo.
Un ulteriore avviso verrà visualizzato anche nella chat “Messaggi del dispositivo”.
@@ -1476,6 +1620,42 @@ it.
+
+
+
+ Di quali autorizzazioni ha bisogno Delta Chat?
+
+
+
+
+
A seconda del sistema operativo in uso,
+potrebbe esserti chiesto di concedere le autorizzazioni all’app.
+Questo è ciò che fa Delta Chat con queste autorizzazioni:
+
+
+
Fotocamera (può essere disabilitata)
+
scattare foto e video: per inviare foto
+
Contatti (può essere disabilitato)
+
leggi i tuoi contatti: per scoprire i contatti con cui chattare
+
Posizione (può essere disabilitato)
+
accedere alla posizione approssimativa (fonti di localizzazione della rete): per la funzione di streaming della posizione
+
accedere alla posizione precisa (fonti di localizzazione GPS e di rete): per la funzionalità di streaming della posizione
+
Microfono (può essere disattivato)
+
registra audio: per messaggi audio
+
Archiviazione (può essere disabilitato)
+
modificare o eliminare il contenuto della scheda SD: per scaricare gli allegati dei messaggi
+
leggere il contenuto della scheda SD: per condividere file con i tuoi contatti
+
Altre funzionalità dell’app
+
modificare le impostazioni audio: così puoi scegliere suonerie e volume per notifiche e messaggi audio
+
esegui all’avvio: quindi non è necessario avviare Delta Chat manualmente
+
controllo vibrazione: per le notifiche
+
visualizzare le connessioni di rete: per connettersi al proprio fornitore e-mail
+
impedisce al telefono di andare in stop: così puoi copiare più facilmente il codice di sicurezza durante il messaggio di configurazione di Autocrypt
+
avere accesso completo alla rete: per connettersi al proprio fornitore e-mail
+
visualizzare le connessioni Wi-Fi: per connettersi al proprio fornitore e-mail
+
chiedere di ignorare le ottimizzazioni della batteria: per ottenere la “consegna istantanea dei messaggi”
- Se Delta Chat utilizza l’ E-Mail, è davvero una Messaggistica Istantanea?
+ Perché devo inserire la mia password E-Mail in Delta Chat? È sicuro?
+
Come con altri programmi di posta elettronica quali Thunderbird, K9-Mail o Outlook,il
+programma ha bisogno della password in modo da poterla utilizzare per inviare mail. Naturalmente, la
+password è memorizzata solo sul tuo dispositivo. La password viene trasmessa solo a
+il tuo fornitore E-Mail (quando effettui il login), che ha comunque accesso alla tua posta.
+
+
Se utilizzi un provider E-Mail con supporto OAuth2 come gmail.com o yandex.ru,
+non è necessario memorizzare la password sul dispositivo. In questo caso, solo un
+token di accesso viene utilizzato.
+
+
Poiché Delta Chat è Open Source, puoi controllare il Codice
+Sorgente
+se vuoi verificare che le tue credenziali siano gestite in modo sicuro. Siamo felici dei feedback che rendono l’app più sicura per tutti i nostri utenti.
+
+
+
+
+ Quali messaggi vengono mostrati in Delta Chat?
+
+
+
+
+
Per impostazione predefinita, Delta Chat mostra tutte le e-mails.
+
+
In “Impostazioni → Avanzate → Mostra E-mail Classiche”,
+puoi cambiarlo. Hai queste opzioni:
+
-
L’invio e la ricezione dei messaggi richiedono generalmente alcuni secondi. Qualche volta
-ci sono casi in cui ci vuole più tempo, ma questo è probabilmente vero anche per
-qualsiasi altro messenger.
-
La chat istantanea funziona velocemente se entrambe le parti utilizzano attivamente l’app. È
-a volte più lento se l’app è in esecuzione in background.
-
La ricezione dei messaggi può richiedere minuti perché spesso sia Android che iOS
-interrompono l’esecuzione di Delta Chat in background e riattivandola solo
-occasionalmente. Questo ritardo artificiale è solitamente peggiore su iOS che su Android.
-
Tuttavia, Android e iOS uccidono le app in esecuzione in background ed è un
-problema per molte app legittime. Per ulteriori informazioni, vedi
-dontkillmyapp.com.
+
“No, solo chat”: solo i messaggi inviati da altri utenti di Delta Chat e le “risposte a”
+vengono visualizzati i tuoi messaggi di Delta Chat. Questo ha più senso se usi lo stesso
+profilo e-mail anche per le normali e-mail.
+
“Per i contatti accettati”: Delta Chat mostra tutte le e-mail dei contatti con cui
+hai già una chat, ma le nuove chat vengono visualizzate solo per i messaggi di Delta Chat.
+Questo aiuta a decidere caso per caso se si desidera avere una
+conversazione in Delta Chat o in una “normale” app di posta elettronica.
+
“Sì”: Delta Chat mostra tutte l’e-mail inviate al tuo indirizzo e-mail. Questo
+ha senso se vuoi usare Delta Chat per tutte le tue e-mail, quindi nessun messaggio
+si perde. Questa è l’impostazione predefinita.
+
+
+
+ Delta Chat supporta le e-mail HTML?
+
+
+
+
+
Sì, i messaggi HTML in arrivo sono dotati di un pulsante “Mostra messaggio completo”.
+I messaggi in uscita utilizzano sempre testo normale.
Delta Chat imposta (e crittografa!) il classico oggetto dell’e-mail
+automaticamente al nome del gruppo o al nome del mittente.
+
+
Quindi, se vuoi impostare tu stesso l’oggetto,
+ad esempio per un’e-mail formale a un contatto commerciale,
+puoi creare un gruppo
+solo con te stesso e il/i destinatario/(i).
+Imposta il titolo della chat sull’oggetto che desideri,
+e poi invia la tua email come primo messaggio.
+Se i destinatari non utilizzano Delta Chat,
+sembrerà come,
+un’e-mail formale.
+Otterrai punti professionalità bonus
+se imposti un testo della firma.
+
+
+
+
+ A cosa serve l’impostazione “Invia copia a se stessi”?
+
+
+
+
+
L’invio di una copia dei tuoi messaggi a te stesso ti assicura di ricevere i tuoi
+messaggi su tutti i dispositivi. Se disponi di più dispositivi e non lo attivi,
+vedrai solo i messaggi di altre persone e i messaggi che invii dal
+dispositivo attuale.
+
+
La copia viene inviata alla Posta in arrivo, quindi spostata nella cartella DeltaChat; non è
+messa nella cartella “Inviata”. Delta Chat non carica mai nulla su Posta
+Inviata perché questo significherebbe caricare un messaggio due volte (una volta tramite SMTP,
+e una volta tramite IMAP nella cartella Posta Inviata).
+
+
L’impostazione predefinita per “Auto-invia Copia” è “attivato”.
+
+
+
+
+ Perché posso scegliere di guardare la cartella “Inviata”?
+
+
+
+
+
L’unico motivo per cui si vuole guardare la cartella Inviata è se ne stai usando un’altro
+programma di posta (come Thunderbird) accanto alla tua app Delta Chat e desideri il tuo MUA
+per partecipare a conversazioni in chat.
+
+
Tuttavia, consigliamo di utilizzare il client desktop Delta Chat; puoi scaricarlo
+su get.delta.chat. L’opzione per guardare la cartella
+“Inviata” potrebbe scomparire in futuro. È stato introdotto in un momento in cui non c’era
+nessun client Delta Chat Desktop disponibile su tutte le piattaforme.
+
+
+
+
+ Perché posso scegliere di non guardare la cartella DeltaChat?
+
+
+
+
+
Alcune persone usano Delta Chat come un normale client di posta elettronica e desiderano utilizzare la cartella Posta in arrivo
+per la loro posta, invece della cartella DeltaChat. Se disabiliti “Controlla
+cartella DeltaChat”, dovresti anche disabilitare “sposta messaggi chat in DeltaChat”.
+In caso contrario, l’eliminazione dei messaggi o configurazioni multi-dispositivo potrebbero non funzionare correttamente.
+
@@ -1537,7 +1826,7 @@ problema per molte app legittime. Per ulteriori informazioni, vedi
Sì e no.
-
No, non puoi utilizzare il tuo account Protonmail, Tutanota o Criptext con Delta
+
No, non puoi utilizzare il tuo profilo Protonmail, Tutanota o Criptext con Delta
Chat; non offrono la ricezione di posta tramite IMAP.
In ogni caso puoi utilizzare Delta Chat per inviare messaggi alle persone che lo utilizzano
Protonmail, Tutanota o Criptext. Tali messaggi non saranno end-to-end
@@ -1548,6 +1837,23 @@ che usa.
Poiché utilizzi un profilo e-mail per Delta Chat,
+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.
+
+
Se vuoi mantenere il profilo,
+ma disinstallare Delta Chat,
+si consiglia di uscire da qualsiasi chat di gruppo prima di disinstallare Delta Chat.
-
-
- Delta Chat è stata verificata in modo indipendente per le vulnerabilità di sicurezza?
-
-
-
-
-
Il progetto Delta Chat è stato sottoposto a quattro verifiche di sicurezza indipendenti negli ultimi anni:
-
-
-
-
Nel 2019, Include Security ha analizzato le librerie
-PGP e
-RSA di Delta Chat.
-Non ha riscontrato criticità,
-ma due problemi di elevata gravità che abbiamo successivamente risolto.
-Ne sono emersi anche uno di media gravità e alcuni problemi meno gravi,
-ma non c’era modo di sfruttare queste vulnerabilità nell’implementazione di Delta Chat.
-Alcuni di essi sono stati comunque corretti dopo la conclusione dell’audit.
-Puoi leggere il rapporto completo qui.
-
-
-
Nel 2020, Include Security ha analizzato il Delta
-Chat’s Rust core,
-IMAP,
-SMTP e
-TLS librerie.
-Non ha rilevato problemi critici o di elevata gravità.
-Il rapporto ha sollevato alcuni punti deboli di media gravità:
-da soli non rappresentano una minaccia per gli utenti di Delta Chat
-perché dipendono dall’ambiente in cui viene utilizzato Delta Chat.
-Per motivi di usabilità e compatibilità,
-non possiamo mitigarli tutti
-e ha deciso di fornire consigli sulla sicurezza agli utenti minacciati.
-Puoi leggere il rapporto completo qui.
-
-
-
A partire dal 2023, Cure53 ha analizzato sia la crittografia del trasporto delle
-Connessioni di rete di Delta Chat e una configurazione del server di posta riproducibile come
-consigliato su questo sito.
-Puoi leggere ulteriori informazioni sull’audit sul nostro blog
-o leggere il rapporto completo qui.
-
-
-
A partire dal 2023, abbiamo risolto i problemi di sicurezza e privacy con il servizio “web
-app condivise in una chat”, relativa ai guasti del sandboxing
-soprattutto con Chromium. Successivamente abbiamo ottenuto una sicurezza indipendente
-audit da Cure53 e tutti i problemi rilevati sono stati risolti nella serie di app 1.36 rilasciata nell’aprile 2023.
-Vedi qui per la storia completa sulla sicurezza end-to-end nel web.
-
-
-
@@ -1653,7 +1906,7 @@ completando i collegamenti Rust/Python e avviando un ecosistema Chat-bot.
Dalla fine del 2021 fino a Marzo 2023 abbiamo ricevuto finanziamenti Internet Freedom (500.000 USD) dall’Ufficio per la democrazia, i diritti umani e il lavoro degli Stati Uniti (DRL). Questo finanziamento ha supportato i nostri obiettivi a lungo termine per rendere Delta Chat più utilizzabile e compatibile con un’ampia gamma di server di posta elettronica in tutto il mondo e più resiliente e sicuro in luoghi spesso colpiti dalla censura e dalla chiusura di Internet.
diff --git a/assets/help/lock-icon.png b/src/main/assets/help/lock-icon.png
similarity index 100%
rename from assets/help/lock-icon.png
rename to src/main/assets/help/lock-icon.png
diff --git a/assets/help/lock-screenshot.png b/src/main/assets/help/lock-screenshot.png
similarity index 100%
rename from assets/help/lock-screenshot.png
rename to src/main/assets/help/lock-screenshot.png
diff --git a/assets/help/nl/help.html b/src/main/assets/help/nl/help.html
similarity index 78%
rename from assets/help/nl/help.html
rename to src/main/assets/help/nl/help.html
index 1756a310b..4d6056f1d 100644
--- a/assets/help/nl/help.html
+++ b/src/main/assets/help/nl/help.html
@@ -4,17 +4,14 @@
Delta Chat is een nieuw soort gespreksapp waarmee je chat via e-mail, indien mogelijk extra versleuteld middels Autocrypt.
-Je hoeft je nergens te registreren - je kunt gewoon je bestaande e-mailaccount gebruiken.
+
Delta Chat is a reliable, decentralized and secure messaging app,
+available for mobile and desktop platforms.
+
+
Delta Chat feels like Whatsapp or Telegram but you can also use and regard it as an e-mail app.
+You can signup anonymously to a variety of interoperable chatmail servers
+which are minimal e-mail servers optimized for fast and secure operations.
+Or you may use classic e-mail servers and an existing e-mail account
+in which case Delta Chat acts as an e-mail app.
@@ -117,9 +134,15 @@
-
Met Delta Chat kun je berichten schrijven naar elk bestaand e-mailadres, zelfs
-als de ontvanger (nog) geen gebruik maakt van de Delta Chat-app. De ontvanger hoeft dus niet
-per se dezelfde app te gebruiken als jij zoals bij andere chatapps.
+
To securely setup contact with others scan an invite QR code
+or share an invite link.
+This is required when using a (default) chatmail-based chat profile
+because chatmail servers reject un-encrypted outgoing messages.
+
+
If you create a chat profile with a classic e-mail address
+you may manually create a contact if you know their e-mail address
+and then write a message to them
+even if the recipient is not using Delta Chat.
@@ -130,41 +153,25 @@ per se dezelfde app te gebruiken als jij zoals bij andere chatapps.
-
Onafhankelijk: niet verbonden aan een bedrijf of bepaalde diensten. Jij beschikt over jóuw gegevens.
-
Je gegevens worden niet opgeslagen op een centrale server. Op deze manier beschermt Delta Chat zélfs je metagegevens (wie verstuurt iets aan wie?).
-
Je deelt je adresboek met niets of niemand.
-
Snel, dankzij het gebruik van Push-IMAP.
-
Grootst aantal gebruikers: ontvangers hoeven Delta Chat niet te gebruiken.
-
Compatibel, en niet alleen met zichzelf.
-
Elegant, en eenvoudig te gebruiken.
-
Verspreid systeem.
-
Geen ongewenste berichten: standaard worden alleen berichten van bekenden getoond.
-
Eind-tot-eindversleuteling met behulp van Autocrypt.
-
-
- Welke berichten vind ik terug in Delta Chat?
-
-
-
-
-
Standaard toont Delta Chat alle e-mails.
-
-
Je kunt dit aanpassen via Instellingen → Gesprekken en media → Klassieke e-mails tonen. Vervolgens heb je keuze uit de volgende opties:
-
-
-
‘Alleen gesprekken’: er worden alleen berichten en antwoorden van andere
- Delta Chat-gebruikers getoond. Dit is handig als je hetzelfde account ook voor
- normale e-mails gebruikt en is de standaardinstelling.
-
‘Alles’: alle e-mails worden getoond. Dit is handig als je Delta Chat voor al je e-mails gebruikt, zodat je geen bericht hoeft te missen.
-
‘Alleen goedgekeurde contactpersonen’: Delta Chat toont alle e-mails van contactpersonen
- waarmee je al gecommuniceerd hebt. Nieuwe berichten verschijnen
- alleen als ze vanuit Delta Chat verstuurd zijn.
- Hiermee kun je per keer bepalen of je een gesprek in Delta Chat of je e-mailapp wilt voeren.
+
+
Anonymous chat profiles with fast, secure and interoperable chatmail servers
+which offer instant Push Notifications for iOS and Android devices.
+
+
+
Pervasive multi-profile and multi-device support on all platforms.
@@ -205,18 +212,25 @@ per se dezelfde app te gebruiken als jij zoals bij andere chatapps.
- Hoe kan ik wisselen van account?
+ What are profiles? How can I switch between them?
-
Je kunt meerdere accounts toevoegen, zowel in de mobiele als computerapp:
-
-
Via de menuknop → ‘Ander account’ (Android en computer);
-
Via je profielfoto → ‘Account toevoegen’ (iOS)
-
+
A profile is a name, a picture and some additional information for encrypting messages.
+A profile lives on your device(s) only
+and uses a chatmail or a classic e-mail server to transport messages.
On first installation of Delta Chat a first profile is created.
+
+
Later, you can tap your profile image in the upper left corner to Add Profiles
+or to Switch Profiles.
+
+
You may want to use separate profiles for political, family or work related activities,
+or e. g. for a dedicated “spam-profile” with which you register at websites and platforms
+that tend to cause unsolicited messages (“spam”) sooner or later.
@@ -245,88 +259,21 @@ Je contactpersonen ontvangen hem dan opnieuw, zelfs als ze een nieuw apparaat to
-
+
- Ondersteunt Delta Chat HTML-e-mails?
+ Can I set a Signature Text/Status/Motto with Delta Chat?
-
-
Ja. Indien nodig wordt er bij inkomende berichten een knop ‘Volledig bericht tonen’ getoond.
-Uitgaande e-mails gebruiken altijd platte tekst.
-
-
-
-
-
- Waarom moet ik mijn e-mailwachtwoord invoeren in Delta Chat? Is dat wel veilig?
-
-
-
-
-
Delta Chat heeft, net zoals andere e-mailprogramma’s (Thunderbird, K9-Mail, Outlook, etc.), je wachtwoord nodig om berichten te versturen. Het wordt alleen opgeslagen op je apparaat en alleen uitgewisseld met je e-mailprovider, die toch al toegang heeft tot je mails.
-
-
Als je een e-mailprovider gebruikt die OAuth2 ondersteunt, zoals Gmail of Yandex, dan hoeft je wachtwoord niet lokaal te worden opgeslagen. Er wordt dan alleen een toegangssleutel gebruikt.
-
-
Delta Chat is open source. Dit betekent dat je de bron-
-code
-kunt bekijken om er zeker van te zijn dat er veilig wordt omgegaan met je inloggegevens. We ontvangen graag feedback hierover.
Op bepaalde besturingssystemen kun je gevraagd
-worden bepaalde rechten toe te kennen aan de app.
-Delta Chat doet het volgende met deze rechten:
-
-
-
Camera (kan worden ingetrokken)
-
-
foto’s en video’s maken: voor het versturen van foto’s
-
-
-
Contactpersonen (kan worden ingetrokken
-
-
contactpersonen uitlezen: voor het vinden van gesprekspartners
-
-
-
Locatie (kan worden ingetrokken)
-
-
toegang tot je locatie, bij benadering (netwerklocatiebronnen): voor de locatie-streamingfunctie
-
toegang tot je precieze locatie (GPS en netwerklocatiebronnen): voor de locatie-streamingfunctie
-
-
-
Microfoon (kan worden ingetrokken)
-
-
audio opnemen: voor het versturen van audioberichten
-
-
-
Opslag (kan worden ingetrokken)
-
-
de inhoud van je sd-kaart aanpassen of wissen: om bijlagen op te slaan
-
de inhoud uitlezen van je sd-kaart: om bestanden te delen met je contactpersonen
-
-
-
Andere mogelijkheden:
-
-
je audio-instellingen aanpassen: zodat je beltonen en het meldingsvolume kunt aanpassen en audioberichten kunt ontvangen en versturen
-
automatisch opstarten: zodat je Delta Chat niet zelf hoeft op te starten
-
trillen beheren: voor meldingen
-
netwerkverbindingen bekijken: om je e-mailprovider te koppelen
-
slaapstand onderdrukken: zodat je de code van het Autocrypt-instelbericht eenvoudiger kunt overtypen
-
volledige netwerktoegang: om je e-mailprovider te koppelen
-
Wi-Fi-verbindingen bekijken: om je e-mailprovider te koppelen
-
vraag om accu-optimalisatie te negeren: voor gebruikers die continue berichten willen blijven ontvangen
-
-
-
+
Yes,
+you can do so under “Settings > Profile > Signature Text”.
+Your contacts who use Delta Chat will see it
+when they view your contact details.
+To everyone else,
+It will appear as an e-mail signature
+below the text of all your messages.
@@ -384,22 +331,40 @@ leesbevestigingen hebt uitgeschakeld, dan wordt er geen groen stipje getoond tot
iemand benaderd of iets in een groep plaatst..
-
+
- Hoe kan ik mijn account verwijderen?
+ How do disappearing messages work?
-
Delta Chat 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.
+
You can turn on “disappearing messages”
+in the settings of a chat,
+at the top right of the chat window,
+by selecting a time span
+between 1 minute and 5 weeks.
-
Als je je account wilt behouden maar Delta Chat
-niet wilt verwijderen, verlaat dan groeps-
-gesprekken voordat je Delta Chat verwijdert.
+
Until the setting is turned off again,
+each chat member’s Delta Chat app takes care
+of deleting the messages
+after the selected time span.
+The time span begins
+when the receiver first sees the message in Delta Chat.
+The messages are deleted
+both in each email account on the server,
+and in the app itself.
+
+
Note that you can rely on disappearing messages
+only as long as you trust your chat partners;
+malicious chat partners can take photos,
+or otherwise save, copy or forward messages before deletion.
+
+
Apart from that,
+if one chat partner uninstalls Delta Chat,
+the messages will not get deleted from their email account.
+They will most likely also not be decryptable anymore
+(as long as they were encrypted in the first place).
@@ -529,6 +494,170 @@ berichten automatisch te verwijderen.
‘na één uur’ en ‘na één jaar’ kiezen. *Alle berichten die ouder zijn, worden verwijderd.
+
+
+
+ What are Push Notifications? How can I get instant message delivery?
+
+
+
+
+
Push Notifications are sent by Apple and Google “Push services” to a user’s device
+so that an inactive Delta Chat app can fetch messages in the background
+and show notifications on a user’s phone if needed.
+
+
Push Notifications work with all chatmail servers on
+
+
+
+
iOS devices, by integrating with Apple Push services.
+
+
+
Android devices, by integrating with the Google FCM Push service,
+including on devices that use microG
+instead of proprietary Google code on the phone.
+
+
+
+
As of May 2024, classic e-mail servers do not support Push Notifications
+for Delta Chat users.
+
+
+
+
+ Are Push Notifications enabled on iOS devices? Is there an alternative?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Are Push notifications enabled / needed on Android devices?
+
+
+
+
+
If a “Push Service” is available, Delta Chat enables Push Notifications
+to achieve instant message delivery for all chatmail users.
+If you are using a classic e-mail provider instead of chatmail servers,
+Push Notifications are not available.
+
+
In the Delta Chat “Notifications” settings for “Instant delivery”
+you can change the following settings effecting all chat profiles:
+
+
+
+
Use Push Service: the default when using chatmail profiles and if
+a Push service is available on the phone.
+If you have both chatmail and classic e-mail profiles,
+then Push Notification will only work
+for incoming messages on chatmail profiles.
+
+
+
Use Background Connection: If you are not using a Push service,
+you may disable “battery optimizations” for Delta Chat,
+allowing it to fetch messages in the background.
+However, there could be delays from minutes to hours.
+Some Android vendors even restrict apps completely
+(see dontkillmyapp.com)
+and Delta Chat might not show incoming messages
+until you manually open the app again.
+
+
+
Force Background Connection: This is the fallback option
+if the previous options are not available or do not achieve “instant delivery”.
+Enabling it causes a permanent notification on your phone
+which may sometimes be “minified” with recent Android phones.
+
+
+
+
Both “Background Connection” options are energy-efficient and
+safe to try if you experience messages arrive only with long delays.
+
+
+
+
+ How private are Delta Chat Push Notifications?
+
+
+
+
+
Delta Chat Push Notification support avoids leakage of private information.
+It does not leak e-mail, IP address or message content (not even encrypted)
+to any system involved in the delivery of Push Notifications.
+
+
Here is how Delta Chat apps perform Push Notification delivery:
+
+
+
+
A Delta Chat app obtains a “device token” locally and stores it
+on the chatmail server.
+
+
+
When a chatmail server receives an e-mail for a Delta Chat user
+it forwards the “device token” to the central Delta Chat notification proxy.
+
+
+
The central Delta Chat notification proxy forwards
+the “device token” to the respective Push service (Apple, Google, etc.),
+without ever knowing the IP or e-mail address of Delta Chat users.
+
+
+
The central Push Service (Apple, Google, etc.)
+wakes up the Delta Chat app on your device
+to check for new messages in the background.
+It does not know about the chatmail or e-mail address of the device it wakes up.
+The central Apple/Google Push services never see an e-mail address (sender or receiver)
+and also never see any message content (also not in encrypted forms).
+
+
+
+
As of May 2024, chatmail servers know about “device tokens”
+but we plan to encrypt this information to the notification proxy
+such that the chatmail server never learns the device token.
+
+
The central Delta Chat notification proxy is small and fully implemented in Rust
+and forgets about device-tokens as soon as Apple/Google/etc processed them,
+usually in a matter of milliseconds.
+
+
Resulting from this overall privacy design, even the seizure of a chatmail server,
+or the full seizure of the central Delta Chat notification proxy
+would not reveal private information that Push services do not already have.
+
+
+
+
+ Why does Delta Chat integrate with centralized proprietary Apple/Google push services?
+
+
+
+
+
Delta Chat is a free and open source decentralized messenger with free server choice,
+but we want users to reliably experience “instant delivery” of messages,
+like they experience from Whatsapp, Signal or Telegram apps,
+without asking questions up-front that are more suited to expert users or developers.
Secure-Join protocols
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
@@ -582,49 +711,32 @@ guarantee end-to-end encrypted messages.
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
+
If you have a second communication channel with your chat partner,
+like a video chat or a different messenger,
+you can generate an invite link.
-
Inviter side:
+
If you are together in person,
+you can show a QR code to your chat partner.
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
+
For Group invitations,
+tap the chat group title to see its member list,
+and select “QR Invite code”.
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
+
For direct 1:1 chat invitations,
+tap the QR Code icon
+on the Delta Chat app main screen.
-
Joiner side:
+
Let your chat partner scan the QR image
+with their Delta Chat app,
+or click “Copy” or “Share” to create an invite link
+and share it with your chat partner.
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
@@ -678,7 +790,7 @@ but there is no green checkmark in the profile title.
This usually means that the contact “sent a message from another device”.
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
+please see Secure-Join protocols
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
@@ -706,7 +818,7 @@ even if the contact is a member there.
Your contact is using Delta Chat on a second device (phone or laptop)
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
+they should remove the profile from the new device
and add it as a second device as described here.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.
@@ -714,8 +826,8 @@ and guaranteed encryption is established with both devices of your contact.
Your contact reinstalled Delta Chat using their old account login
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
+they should remove the profile from the new device
+and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.
@@ -736,7 +848,7 @@ guaranteed end-to-end encryption will be automatically re-established.
Sometimes remaining in contact is more important than end-to-end encryption.
“Transport Layer Encryption” (TLS) may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
+But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.
In any case, you can not do much else than accept the warning.
@@ -902,12 +1014,12 @@ deliver messages to recipient’s devices.
Both for protecting against metadata-collecting e-mail servers
as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
+we recommend to use a chatmail server
+to create pseudonymous temporary profiles through QR-code scans.
+Note that Delta Chat apps on all platforms support multiple profiles
+so you can easily use situation-specific profiles next to your “main” profile
+with the knowledge that all their data, along with all metadata, will be deleted.
+Moreover, if a device is seized then contacts using temporary profiles
can not be identified easily, as compared to messengers which reveal
phone numbers in chat groups which in turn are often associated with legal identities.
@@ -966,7 +1078,7 @@ and their non-Autocrypt e-mail app.
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
+who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
it’s best to setup guaranteed end-to-end encryption with them
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
@@ -984,10 +1096,10 @@ even if the direct chat between you two has a
The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
+
Guaranteed end-to-end encrypted chats protect against MITM attacks
+and turning on disappearing messages deletes the messages
on the server after a user-configured time.
If you don’t need a longer-lived copy of your messages on the server,
@@ -1068,9 +1180,10 @@ Caution: Make sure the key is not protected by a password, or remove the passwor
Het is goed mogelijk dat je sleutel versleuteld is en/of een wachtwoord
vereist. Zulke sleutels worden niet ondersteund. Verwijder de versleuteling
-en het wachtwoord en probeer het opnieuw. Als je je wachtwoord
- koste wat kost wilt behouden, maak dan een e-mailalias aan
- die je alleen in Delta Chat gebruikt. Zo is de sleutel niet gekoppeld aan je hoofdadres.
+en het wachtwoord en probeer het opnieuw.
+
+
Another common error is having the wrong file ending.
+Use the ASCII armored format and an .asc file ending.
The Delta Chat project underwent four independent security audits and one
+independent security analysis, from most recent to older:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
Sinds begin 2023 hebben we diverse beveiligings- en privacyproblemen met ‘webapps
+gedeeld in een gesprek’. Deze waren allen te wijten aan fouten in de sandboxing,
+vooral die van Chromium. Daarna is er een beveiligings-
+onderzoek van Cure53 geweest en zijn alle problemen opgelost in versie 1.36 van de uit april 2023.
+Lees hier het volledige verhaal omtrent E2E-beveiliging op het web.
+
+
+
Aan het begin van 2023 heeft Cure53 de transportversleuteling van
+Delta Chats netwerkverbindingen getest, evenals de e-mailserveropzet zoals
+beschreven op onze site.
+Meer informatie over deze test is te lezen op ons blog
+of in het volledige verslag.
+
+
+
In 2020 heeft Include Security Delta Chats
+Rust-kern,
+imap-,
+smtp- en
+tls-bibliotheken geanalyseerd.
+Er werden geen grote problemen aangetroffen.
+Wél werden er een paar redelijk belangrijke zwakheden aangetroffen,
+maar geen die de meeste Delta Chat-gebruikers direct trof
+omdat ze afhankelijk waren van de gebruikte omgeving.
+Omwille van gebruiks- en compatibiliteitsredenen,
+konden we ze niet allemaal oplossen
+en besloten we om beveiligingsaanbevelingen aan getroffen gebruikers te doen.
+Het volledige verslag is hier na te lezen.
+
+
+
In 2019 heeft Include Security Delta Chats
+PGP- en
+RSA-bibliotheken geanalyseerd.
+Er werden geen grote problemen aangetroffen,
+maar wel twee belangrijke die nadien werden opgelost.
+Ook werden enkele redelijk belangrijke en minder belangrijke aan het licht gebracht,
+maar die konden in Delta Chats specifieke implementatie niet worden misbruikt.
+Ondanks dat zijn enkele daarvan nadien alsnog opgelost.
+Het volledige verslag is hier na te lezen.
+
+
+
@@ -1137,10 +1311,19 @@ op beide apparaten. Hierdoor hoef je niet het ene apparaat bij de hand
Controleer of beide apparaten verbonden zijn met hetzelfde (wifi)netwerk
+
+
On Windows, go to Control Panel / Network and Internet
+and make sure, Private Network is selected as “Network profile type”
+(after transfer, you can change back to the original value)
+
Wellicht is een firewall actief op je apparaat,
welke problemen kan veroorzaken (met name op Windows).
Schakel de firewall op beide apparaten uit of voeg een uitzondering voor Delta Chat toe en probeer het opnieuw.
+
+
+
Guest Networks may not allow devices to communicate with each other.
+If possible, use a non-guest network.
Zorg voor voldoende ruimte op het bestemmingsapparaat
@@ -1175,8 +1358,8 @@ volg dan onderstaande stappen omtrent handmatige overzetting
screen unlock PIN, pattern, or password. Then you can click on “Start
Backup”. This saves the backup file to your device. Now you have to transfer
it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
+
On the new device, in the “I already have a profile” menu,
+choose “restore from backup”. After import, your conversations, encryption
keys, and media should be copied to the new device.
If you use iOS: and you encounter difficulties, maybe
@@ -1207,55 +1390,6 @@ of de AppImage van de Linux-client. Deze kun je downloaden op
get.delta.chat.
-
-
-
- Waarvoor dient de optie ‘Kopie versturen aan mijzelf’?
-
-
-
-
-
Door een kopie aan jezelf te sturen, weet je zeker dat je je eigen berichten
-op alle apparaten ontvangt. Als je meerdere apparaten hebt en dit niet
-inschakelt, dan zie je alleen berichten van anderen en de berichten die je vanaf het
-huidige apparaat verstuurt.
-
-
De kopie wordt verstuurd naar je Postvak IN en vervolgens verplaatst naar de DeltaChat-map -
-het verschijnt nooit in de map ‘Verzonden’. Delta Chat werkt zo omdat het bericht
-anders twee keer verstuurd zou worden (eenmaal middels smtp,
-en eenmaal middels imap naar de map ‘Verzonden’).
-
-
Standaard is deze optie uitgeschakeld.
-
-
-
-
- Waarom kan ik kiezen om de map ‘Verzonden’ te controleren?
-
-
-
-
-
Dit is alleen nuttig als een ander e-mailprogramma (zoals Thunderbird) naast de
-Delta Chat-app gebruikt en wilt dat je andere apparaten deel uitmaken van gesprekken.
-
-
Wij raden echter aan om in dat geval de Delta Chat-app te installeren op je computer:
-get.delta.chat. 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 Delta Chat-client beschikbaar was.
-
-
-
-
- Waarom kan ik kiezen om de DeltaChat-map te negeren?
-
-
-
-
-
Sommige mensen gebruiken Delta Chat als een normale e-mailclient en willen daarom Postvak IN
-gebruiken voor hun e-mail in plaats van de DeltaChat-map. Als je deze optie uitschakelt,
-schakel dan ook de optie ‘Berichten verplaatsen naar de DeltaChat-map’ uit.
-Anders kun je mogelijk geen berichten verwijderen of problemen ervaren op andere apparaten.
-
@@ -1393,23 +1527,20 @@ netwerkverbruik).
-
Je kunt locatiedeling inschakelen in de sectie ‘experimentele functies’ in
-de geavanceerde instellingen.
-
Als je vervolgens een locatie wilt delen, dan kun je dat doen door ‘locatie’ te kiezen als
-“bijlage”. Vervolgens kun je een tijdspanne kiezen zodat je locatie niet onbeperkt
-wordt gedeeld met gesprekspartners. De tijdspanne ligt tussen 5 minuten en 6 uur.
-
Als je locatie wijzigt, dan zien anderen dat op de kaart in het
-gesprek.
-
Als je kaarten en locaties van anderen wilt bekijken, schakel deze functie dan ook in
-in de geavanceerde instellingen.
-
Let op: met deze functie deel je je locatie met iedereen.
-Om de kaart te tonen worden er kaartdelen opgehaald van
-mapbox.com. Als je dus de kaart bekijkt, dan wordt aan mapbox.com gevraagd om een kaart van een
-bepaald gebied te tonen. Als je dit privacygevoelig vindt, dan kun je deze functie beter niet gebruiken.
-We zijn echter hard aan het zoeken naar een gedecentraliseerd alternatief voor Mapbox!
-
Op computers kan je locatie doorgaans niet worden bepaald. In zulke gevallen kun je
-rechts klikken op de kaart en handmatig een locatie aangeven, welke vervolgens als bericht met kaart
-wordt verstuurd.
+
You can turn on location streaming in the “experimental features” section of
+the advanced settings.
+
Now, if you want to share your location in a chat, go to “attach” and select
+“location”. You can now set a time frame in which your location will be
+streamed to your chat partners, between 5 minutes and 6 hours.
+
When your location changes, the others in the chat can view it on a map in
+the chat.
+
To see the map and view locations of others, you need to turn on the feature
+in the advanced settings.
+
This feature will not share your location with anyone except your chat partners.
+Map tiles are downloaded from OpenStreetMap.
+
On desktop, the OS typically can’t determine your location. Instead you can
+right click on the map and describe a location, which is sent to the chat as
+a message, but also appears on the map.
@@ -1464,8 +1595,8 @@ Normaal doet de Delta Chat-app dit uit zichzelf.
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
+
Change your address in “Settings → Advanced → Password and Account” and
+enter the password of your new e-mail account (and if necessary, server settings).
You will get an information notice about the fact that you are moving to a new address.
An additional notice will also show up in your “Device messages” chat.
- Delta Chat gebruik e-mail. Is het dan wel een Instant Messenger?
+ Waarom moet ik mijn e-mailwachtwoord invoeren in Delta Chat? Is dat wel veilig?
+
+
+
+
+
Delta Chat heeft, net zoals andere e-mailprogramma’s (Thunderbird, K9-Mail, Outlook, etc.), je wachtwoord nodig om berichten te versturen. Het wordt alleen opgeslagen op je apparaat en alleen uitgewisseld met je e-mailprovider, die toch al toegang heeft tot je mails.
+
+
Als je een e-mailprovider gebruikt die OAuth2 ondersteunt, zoals Gmail of Yandex, dan hoeft je wachtwoord niet lokaal te worden opgeslagen. Er wordt dan alleen een toegangssleutel gebruikt.
+
+
Delta Chat is open source. Dit betekent dat je de bron-
+code
+kunt bekijken om er zeker van te zijn dat er veilig wordt omgegaan met je inloggegevens. We ontvangen graag feedback hierover.
+
+
+
+
+ Welke berichten vind ik terug in Delta Chat?
+
+
+
+
+
Standaard toont Delta Chat alle e-mails.
+
+
At “Settings → Advanced → Show Classic E-Mails”,
+you can change this. You have these options:
+
+
+
‘Alleen gesprekken’: er worden alleen berichten en antwoorden van andere
+ Delta Chat-gebruikers getoond. Dit is handig als je hetzelfde account ook voor
+ normale e-mails gebruikt en is de standaardinstelling.
+
‘Alles’: alle e-mails worden getoond. Dit is handig als je Delta Chat voor al je e-mails gebruikt, zodat je geen bericht hoeft te missen.
+
‘Alleen goedgekeurde contactpersonen’: Delta Chat toont alle e-mails van contactpersonen
+ waarmee je al gecommuniceerd hebt. Nieuwe berichten verschijnen
+ alleen als ze vanuit Delta Chat verstuurd zijn.
+ Hiermee kun je per keer bepalen of je een gesprek in Delta Chat of je e-mailapp wilt voeren.
+
+
+
+
+
+ Ondersteunt Delta Chat HTML-e-mails?
-
Het versturen en ontvangen van berichten gebeurt doorgaans binnen enkele seconden. Soms
-duurt het iets langer, maar dat komt ook wel eens voor bij
-andere IM’s.
-
Het werkt het snelst als beide partijen de app actief gebruiken. Soms duurt het
-iets langer als de app op de achtergrond draait.
-
Het ontvangen van berichten kan dan enkele minuten duren omdat zowel Android als iOS Delta Chat
-regelmatig onderbreken, en slecht soms weer
-hervatten. Deze vertraging is doorgaans merkbaarder op iOS dan op Android.
-
Let op: Delta Chat maakt geen gebruik van Google Cloud Messaging (GCM) of Apple’s
-Push Notification Service (APNS) omdat deze gebruikersacties bijhouden en
-centraal beheer vereisen, wat Delta Chat zoveel mogelijk wil voorkomen.
-
Maar dat Android en iOS achtergrondapps onderbreken is een
-algemeen probleem waar veel apps last van hebben. Ga naar
-dontkillmyapp.com voor meer informatie hieromtrent.
+
Ja. Indien nodig wordt er bij inkomende berichten een knop ‘Volledig bericht tonen’ getoond.
+Uitgaande e-mails gebruiken altijd platte tekst.
+
+
+
+ Can I set the E-Mail Subject with Delta Chat?
+
+
+
+
+
Delta Chat sets (and encrypts!) the classic e-mail subject
+automatically to the group name or to the sender name.
+
+
So if you want to set the subject yourself,
+for example for a formal e-mail to a business contact,
+you can create a group
+with only yourself and the recipient(s).
+Set the Chat Title to the Subject you want,
+and then send your e-mail as the first message.
+If the recipients don’t use Delta Chat,
+it will look like a normal,
+formal e-mail to them.
+You will get bonus professionalism points
+if you set a signature text.
+
+
+
+
+ Waarvoor dient de optie ‘Kopie versturen aan mijzelf’?
+
+
+
+
+
Door een kopie aan jezelf te sturen, weet je zeker dat je je eigen berichten
+op alle apparaten ontvangt. Als je meerdere apparaten hebt en dit niet
+inschakelt, dan zie je alleen berichten van anderen en de berichten die je vanaf het
+huidige apparaat verstuurt.
+
+
De kopie wordt verstuurd naar je Postvak IN en vervolgens verplaatst naar de DeltaChat-map -
+het verschijnt nooit in de map ‘Verzonden’. Delta Chat werkt zo omdat het bericht
+anders twee keer verstuurd zou worden (eenmaal middels smtp,
+en eenmaal middels imap naar de map ‘Verzonden’).
+
+
The default setting for “Send Copy to Self” is “on”.
+
+
+
+
+ Waarom kan ik kiezen om de map ‘Verzonden’ te controleren?
+
+
+
+
+
Dit is alleen nuttig als een ander e-mailprogramma (zoals Thunderbird) naast de
+Delta Chat-app gebruikt en wilt dat je andere apparaten deel uitmaken van gesprekken.
+
+
Wij raden echter aan om in dat geval de Delta Chat-app te installeren op je computer:
+get.delta.chat. 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 Delta Chat-client beschikbaar was.
+
+
+
+
+ Waarom kan ik kiezen om de DeltaChat-map te negeren?
+
+
+
+
+
Sommige mensen gebruiken Delta Chat als een normale e-mailclient en willen daarom Postvak IN
+gebruiken voor hun e-mail in plaats van de DeltaChat-map. Als je deze optie uitschakelt,
+schakel dan ook de optie ‘Berichten verplaatsen naar de DeltaChat-map’ uit.
+Anders kun je mogelijk geen berichten verwijderen of problemen ervaren op andere apparaten.
Delta Chat 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.
+
+
Als je je account wilt behouden maar Delta Chat
+niet wilt verwijderen, verlaat dan groeps-
+gesprekken voordat je Delta Chat verwijdert.
Delta Chat onderging al drie onafhankelijke beveiligingscontroles:
-
-
-
-
In 2019 heeft Include Security Delta Chats
-PGP- en
-RSA-bibliotheken geanalyseerd.
-Er werden geen grote problemen aangetroffen,
-maar wel twee belangrijke die nadien werden opgelost.
-Ook werden enkele redelijk belangrijke en minder belangrijke aan het licht gebracht,
-maar die konden in Delta Chats specifieke implementatie niet worden misbruikt.
-Ondanks dat zijn enkele daarvan nadien alsnog opgelost.
-Het volledige verslag is hier na te lezen.
-
-
-
In 2020 heeft Include Security Delta Chats
-Rust-kern,
-imap-,
-smtp- en
-tls-bibliotheken geanalyseerd.
-Er werden geen grote problemen aangetroffen.
-Wél werden er een paar redelijk belangrijke zwakheden aangetroffen,
-maar geen die de meeste Delta Chat-gebruikers direct trof
-omdat ze afhankelijk waren van de gebruikte omgeving.
-Omwille van gebruiks- en compatibiliteitsredenen,
-konden we ze niet allemaal oplossen
-en besloten we om beveiligingsaanbevelingen aan getroffen gebruikers te doen.
-Het volledige verslag is hier na te lezen.
-
-
-
Aan het begin van 2023 heeft Cure53 de transportversleuteling van
-Delta Chats netwerkverbindingen getest, evenals de e-mailserveropzet zoals
-beschreven op onze site.
-Meer informatie over deze test is te lezen op ons blog
-of in het volledige verslag.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
diff --git a/src/main/assets/help/pl/help.html b/src/main/assets/help/pl/help.html
new file mode 100644
index 000000000..3a0d2cae2
--- /dev/null
+++ b/src/main/assets/help/pl/help.html
@@ -0,0 +1,1433 @@
+
+
Delta Chat to niezawodna, zdecentralizowana i bezpieczna aplikacja do przesyłania wiadomości, dostępna na platformy mobilne i stacjonarne.
+
+
Delta Chat przypomina Whatsapp lub Telegram, ale możesz go również używać i traktować jako aplikację e-mail. Możesz zarejestrować się anonimowo na różnych interoperacyjnych serwerach chatmail, które są minimalnymi serwerami poczty e-mail zoptymalizowanymi pod kątem szybkich i bezpiecznych operacji. Możesz też skorzystać z klasycznych serwerów pocztowych i istniejącego konta e-mail, w którym to przypadku Delta Chat będzie pełnić funkcję aplikacji pocztowej.
+
+
+
+
+
+
+ Jak mogę znaleźć ludzi, z którymi mogę czatować?
+
+
+
+
+
Aby bezpiecznie skonfigurować kontakt z innymi, zeskanuj kod QR zaproszenia lub udostępnij link zaproszenia. Jest to wymagane w przypadku korzystania z (domyślnego) profilu czatu opartego na poczcie chatmail, ponieważ serwery chatmail odrzucają niezaszyfrowane wiadomości wychodzące.
+
+
Jeśli utworzysz profil czatu z klasycznym adresem e-mail, możesz ręcznie utworzyć kontakt, jeśli znasz jego adres e-mail, a następnie napisać do niego wiadomość, nawet jeśli odbiorca nie korzysta z Delta Chat.
+
+
+
+
+ Jakie są zalety Delta Chat w porównaniu z innymi komunikatorami?
+
+
+
+
+
Anonimowe profile czatów z szybkimi, bezpiecznymi i interoperacyjnymi serwerami chatmail, które oferują natychmiastowe powiadomienia push dla urządzeń iOS i Android.
+
+
+
+
Wszechstronna obsługa wielu profili i wielu urządzeń na wszystkich platformach.
+
+
+ Co zrobić, jeśli oczekuję wiadomości od osoby, do której nie pisałem w przeszłości?
+
+
+
+
+
+
Jeśli wiadomość przychodzi od nieznanego kontaktu, pojawia się jako prośba. Musisz zaakceptować prośbę, zanim będziesz mógł odpowiedzieć.
+
Możesz również „usunąć” ją, jeśli nie chcesz na razie z nią rozmawiać. To nie usuwa wiadomości na serwerze, tylko na Twoim urządzeniu. Możesz więc nadal zajmować się tą wiadomością w innej aplikacji pocztowej.
+
Jeśli usuniesz prośbę, przyszłe wiadomości od tego kontaktu będą nadal wyświetlane jako prośba o wiadomość, więc możesz zmienić zdanie. Jeśli naprawdę nie chcesz otrzymywać wiadomości od tej osoby, rozważ zablokowanie jej.
+
+
+
+
+
+ Czy Delta Chat obsługuje obrazy, filmy i inne załączniki?
+
+
+
+
+
+
+
Tak. Oprócz zwykłego tekstu wszystkie załączniki wiadomości e-mail są wyświetlane jako oddzielne wiadomości. Wiadomości wychodzące automatycznie otrzymują załączniki w razie potrzeby.
+
+
+
Ze względu na wydajność obrazy są domyślnie optymalizowane i wysyłane w mniejszym rozmiarze, ale można je wysłać jako „plik”, aby zachować oryginał.
+
+
+
+
+
+
+ Czym są profile? Jak mogę przełączać się między nimi?
+
+
+
+
+
Profil to nazwa, zdjęcie i dodatkowe informacje umożliwiające szyfrowanie wiadomości. Profil znajduje się wyłącznie na twoim urządzeniu (urządzeniach) i do przesyłania wiadomości wykorzystuje chatmail lub klasyczny serwer e-mail.
+
+
Podczas pierwszej instalacji Delta Chat tworzony jest pierwszy profil.
+
+
Później możesz dotknąć swojego zdjęcia profilowego w lewym górnym rogu, aby Dodać profile lub Przełączyć profile.
+
+
Możesz chcieć używać oddzielnych profili do działań związanych z polityką, rodziną lub pracą, lub np. dla dedykowanego „profilu spamowego”, za pomocą którego rejestrujesz się na stronach internetowych i platformach, które prędzej czy później generują niechciane wiadomości („spam”).
Możesz dodać zdjęcie profilowe w swoich ustawieniach. Jeśli napiszesz do swoich kontaktów lub dodasz je za pomocą kodu QR, automatycznie zobaczą je jako Twoje zdjęcie profilowe.
+
+
+
Kontakty, które nie korzystają z Delta Chat nie widzą zdjęcia profilowego (jednak oczywiście mogą zainstalować Delta Chat :)
+
+
+
Ze względów prywatności nikt nie widzi Twojego zdjęcia profilowego, dopóki nie napiszesz do niego wiadomości.
+
+
+
Twoje zdjęcie profilowe nie jest wysyłane z każdą wiadomością, ale wystarczająco regularnie, aby kontakty ponownie otrzymały Twoje zdjęcie profilowe, nawet jeśli dodadzą nowe urządzenie.
+
+
+
+
+
+
+ Czy w Delta Chat mogę ustawić tekst podpisu/status/motto?
+
+
+
+
+
Tak, możesz to zrobić w „Ustawienia » Profil » Tekst podpisu”. Twoje kontakty korzystające z Delta Chat, zobaczą go, przeglądając twoje dane kontaktowe. Dla wszystkich innych będzie on widoczny jako podpis e-mail pod tekstem wszystkich twoich wiadomości.
+
+
+
+
+ Co oznacza przypinanie, wyciszanie i archiwizowanie?
+
+
+
+
+
Użyj tych narzędzi, aby uporządkować swoje czaty i mieć wszystko na swoim miejscu:
+
+
+
+
Przypięte czaty zawsze pozostają na szczycie listy czatów. Możesz ich używać, aby szybko lub tymczasowo uzyskać dostęp do swoich ulubionych czatów, aby o czymś nie zapomnieć.
+
+
+
Wycisz czaty, jeśli nie chcesz otrzymywać z nich powiadomień. Wyciszone czaty pozostają na swoim miejscu i możesz też przypiąć wyciszony czat.
+
+
+
Archiwizuj czaty, jeśli nie chcesz ich już widzieć na liście czatów. Zarchiwizowane czaty pozostają dostępne nad listą czatów lub poprzez wyszukiwanie.
+
+
+
Gdy zarchiwizowany czat otrzyma nową wiadomość, o ile nie zostanie wyciszony, wyskoczy z archiwum i wróci na twoją listę czatów.
+Wyciszone czaty pozostają zarchiwizowane do czasu ich ręcznego przywrócenia.
+
+
+
+
Aby zarchiwizować lub przypiąć czat, dotknij i przytrzymaj (Android), użyj menu czatu (Android/Desktop) lub przesuń palcem w lewo (iOS);
+aby wyciszyć czat, użyj menu czatu (Android/Desktop) lub profilu czatu (iOS).
+
+
+
+
+ Co oznacza zielona kropka?
+
+
+
+
+
+
Od wersji Delta Chat 1.34 czasami można zobaczyć „zieloną kropkę” obok awatara kontaktu. Oznacza to, że był on „niedawno widziany”.
+
Dokładnie oznacza to, że w ciągu ostatnich 10 minut Delta Chat widział go:
+
dlatego, że wysłał Ci bezpośrednio wiadomość,
+
ponieważ napisał coś do grupy, której oboje jesteście członkami,
+
ponieważ wysłał Ci potwierdzenie przeczytania napisanej przez Ciebie wiadomości,
+
lub dlatego, że wysłał dane do Twojej aplikacji Delta Chat za pomocą Webxdc aplikacji.
+
Nie jest to więc status online w czasie rzeczywistym – a jeśli ktoś nie odpowie od razu, mimo że wydaje się, że jest online, nie martw się i daj mu trochę miejsca ;-)
+
Z drugiej strony inni nie zawsze „zobaczą, że jesteś online”. Jeśli wyłączyłeś potwierdzenia odczytu, nie zobaczą oni zielonej kropki, dopóki nie wyślesz do nich wiadomości lub nie napiszesz do grupy, w której również się znajdują.
+
+
+
+
+
+ Jak działają znikające wiadomości?
+
+
+
+
+
Możesz włączyć „znikające wiadomości” w ustawieniach czatu, w prawym górnym rogu okna czatu, wybierając przedział czasu od 1 minuty do 5 tygodni.
+
+
Dopóki ustawienie nie zostanie ponownie wyłączone, aplikacja Delta Chat u każdego członka czatu zajmie się usuwaniem wiadomości po wybranym okresie. Przedział czasu rozpoczyna się w momencie, gdy odbiorca po raz pierwszy zobaczy wiadomość w Delta Chat. Wiadomości są usuwane zarówno na każdym koncie e-mail na serwerze, jak i w samej aplikacji.
+
+
Pamiętaj, że na znikających wiadomościach możesz polegać tylko wtedy, gdy ufasz swoim partnerom czatu; złośliwi partnerzy czatu mogą robić zdjęcia lub w inny sposób zapisywać, kopiować lub przesyłać dalej wiadomości przed usunięciem.
+
+
Poza tym, jeśli jeden z partnerów czatu odinstaluje Delta Chat, wiadomości nie zostaną usunięte z jego konta e-mail. Najprawdopodobniej nie będzie już można ich odszyfrować (o ile zostały najpierw zaszyfrowane).
+
+
+
+
+ Grupy
+
+
+
+
+
+
+
+ Tworzenie grupy
+
+
+
+
+
+
Wybierz Nowy czat, a następnie Nowa grupa z menu w prawym górnym rogu lub naciśnij odpowiedni przycisk na Androidzie / iOS.
+
Na następnym ekranie wybierz członków grupy i zdefiniuj nazwę grupy. Możesz też wybrać awatar grupy.
+
Zaraz po napisaniu pierwszej wiadomości w grupie wszyscy członkowie zostaną poinformowani o nowej grupie i mogą odpowiedzieć w grupie (jeżeli nie napiszesz wiadomości w grupie, grupa jest niewidoczna dla członków).
+
+
+
+
+
+ Dodanie członków do grupy
+
+
+
+
+
+
Każdy członek grupy ma takie same prawa jak każdy inny. Z tego powodu każdy może usunąć każdego członka lub dodać nowego.
+
Aby dodać lub usunąć członków, kliknij nazwę grupy na czacie.
+
+
+
+
+
+ Usunąłem się przez przypadek.
+
+
+
+
+
+
Ponieważ nie jesteś członkiem grupy, nie możesz dodać siebie ponownie.
+Jednak nie ma problemu, po prostu poproś dowolnego członka grupy na normalnym czacie, aby dodał cię ponownie.
+
+
+
+
+
+ Nie chcę już otrzymywać wiadomości od grupy.
+
+
+
+
+
+
+
Usuń siebie z listy członków lub usuń cały czat.
+Jeśli później będziesz chciał ponownie dołączyć do grupy, poproś innego członka grupy, aby dodał cię do grupy.
+
+
+
Alternatywnie możesz też „Wyłączyć powiadomienia” dla grupy dzięki temu otrzymasz wszystkie wiadomości i
+nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych nowych wiadomościach.
+
+
+
+
+
+
+ Co oznaczają znaczniki wyświetlane obok wiadomości wychodzących?
+
+
+
+
+
+
Jeden znacznik oznacza, że wiadomość została pomyślnie wysłana do Twojego dostawcy.
+
Dwa znaczniki oznaczają, że co najmniej jedno urządzenie odbiorcy zgłosiło otrzymanie wiadomości.
+
Odbiorcy mogli wyłączyć potwierdzenia odczytu, więc nawet jeśli widzisz tylko jeden znacznik, wiadomość mogła zostać przeczytana.
+
Odwrotnie, dwa znaczniki nie oznaczają automatycznie, że człowiek przeczytał lub zrozumiał wiadomość ;)
+
+
+
+
+
+ Co się stanie, jeśli włączę opcję „Usuń wiadomości z serwera”?
+
+
+
+
+
+
+
Domyślnie Delta Chat przechowuje wszystkie wiadomości lokalnie na Twoim urządzeniu. Jeśli np. chcesz zaoszczędzić miejsce u swojego dostawcy poczty, możesz wybrać automatyczne usuwanie starych wiadomości. Pozostają one nadal na Twoim urządzeniu, dopóki nie usuniesz ich również tam.
+
+
+
Aby ją włączyć, w ustawieniach „Czaty i media” przejdź do Usuwanie starych wiadomości → Usuń wiadomości z serwera. Możesz ustawić przedział czasowy pomiędzy „Od razu” a „Po 1 roku”. Wszystkie e-maile otrzymane przez Delta Chat zostaną usunięte z serwera po tym czasie.
+
+
+
Zauważ, że jeśli używasz Delta Chat na więcej niż jednym urządzeniu, powinieneś pozostawić wiadomości na serwerze, do czasu, aż inne urządzenie/urządzenia będzie mogło je pobrać.
+
+
+
+
+
+
+ Co się stanie, jeśli włączę opcję „Usuń wiadomości z urządzenia”?
+
+
+
+
+
+
Jeśli chcesz zaoszczędzić miejsce na urządzeniu, możesz wybrać opcję automatycznego usuwania starych wiadomości.
+
Aby ją włączyć, przejdź do „Usuń wiadomości z urządzenia” w ustawieniach w sekcji „Czaty i media”. Możesz ustawić przedział czasowy pomiędzy „po 1 godzinie” a „po 1 roku”; w ten sposób wszystkie wiadomości zostaną usunięte z urządzenia, gdy tylko staną się starsze.
+
+
+ Co to są powiadomienia push? Jak mogę uzyskać natychmiastowe dostarczenie wiadomości?
+
+
+
+
+
Powiadomienia push są wysyłane przez „usługi push” Apple i Google do urządzenia użytkownika, dzięki czemu nieaktywna aplikacja Delta Chat może pobierać wiadomości w tle i w razie potrzeby wyświetlać powiadomienia na telefonie użytkownika.
+
+
Powiadomienia push działają na wszystkich włączonych serwerach chatmail
+
+
+
+
Urządzeń z iOS, poprzez integrację z usługami Apple Push.
+
+
+
Urządzenia z Androidem, poprzez integrację z usługą Google FCM Push, w tym na urządzeniach korzystających z microG zamiast autorskiego kodu Google w telefonie.
+
+
+
+
Od maja 2024 r. klasyczne serwery poczty e-mail nie obsługują powiadomień push dla użytkowników Delta Chat.
+
+
+
+
+ Czy powiadomienia push są włączone na urządzeniach z iOS? Czy istnieje alternatywa?
+
+
+
+
+
Tak, Delta Chat automatycznie korzysta z powiadomień push dla profili chatmail
+. I nie, w telefonach Apple nie ma alternatywy umożliwiającej natychmiastowe dostarczanie wiadomości, ponieważ urządzenia Apple nie pozwalają Delta Chat na pobieranie danych w tle. Powiadomienia push są automatycznie aktywowane dla użytkowników iOS, ponieważ system prywatności powiadomień Delta Chat nie udostępnia Apple danych, których jeszcze nie posiada.
+
+
+
+
+ Czy powiadomienia Push są włączone/potrzebne na urządzeniach z Androidem?
+
+
+
+
+
Jeśli dostępna jest „Usługa Push”, Delta Chat włącza Powiadomienia Push w celu zapewnienia natychmiastowego dostarczania wiadomości dla wszystkich użytkowników chatmail. Jeśli zamiast serwerów chatmail korzystasz z klasycznego dostawcy poczty e-mail, powiadomienia push nie są dostępne.
+
+
W ustawieniach „Powiadomień” Delta Chat dla „Natychmiastowej dostawy” możesz zmienić następujące ustawienia wpływające na wszystkie profile czatu:
+
+
+
+
Użyj usługi Push: ustawienie domyślne podczas korzystania z profili czatu i jeśli w telefonie dostępna jest usługa Push. Jeśli masz zarówno chatmail, jak i klasyczny profil e-mail, powiadomienie push będzie działać tylko w przypadku wiadomości przychodzących z profili chatmail.
+
+
+
Użyj połączenia w tle: Jeśli nie korzystasz z usługi Push, możesz wyłączyć „optymalizację baterii” dla Delta Chat, umożliwiając mu pobieranie wiadomości w tle. Mogą jednak wystąpić opóźnienia od minut do godzin. Niektórzy dostawcy Androida nawet całkowicie ograniczają aplikacje (zobacz dontkillmyapp.com), a Delta Chat może nie wyświetlać wiadomości przychodzących, dopóki ręcznie ponownie nie otworzysz aplikacji.
+
+
+
+
Wymuś połączenie w tle: Jest to opcja awaryjna, jeśli poprzednie opcje nie są dostępne lub nie zapewniają „natychmiastowej dostawy”. Włączenie tej opcji powoduje stałe powiadomienie na twoim telefonie, które czasami może zostać „minifikowane” w przypadku najnowszych telefonów z Androidem.
+
+
Obie opcje „Połączenia w tle” są energooszczędne i można je bezpiecznie wypróbować, jeśli wiadomości docierają do ciebie z dużym opóźnieniem.
+
+
+
+
+ Jak prywatne są powiadomienia push na Delta Chat?
+
+
+
+
+
Obsługa powiadomień push w Delta Chat pozwala uniknąć wycieku prywatnych informacji. Nie powoduje wycieku wiadomości e-mail, adresu IP ani zawartości wiadomości (nawet niezaszyfrowanej) do żadnego systemu zaangażowanego w dostarczanie powiadomień push.
+
+
Oto jak aplikacje Delta Chat realizują dostarczanie powiadomień push:
+
+
+
+
Aplikacja Delta Chat uzyskuje lokalnie „token urządzenia” i przechowuje go na serwerze chatmail.
+
+
+
Kiedy serwer chatmail odbierze wiadomość e-mail od użytkownika Delta Chat, przekazuje „token urządzenia” do centralnego serwera proxy powiadomień Delta Chat.
+
+
+
Centralny serwer proxy powiadomień Delta Chat przekazuje „token urządzenia” do odpowiedniej usługi Push (Apple, Google itp.), nie znając nawet adresu IP ani adresu e-mail użytkowników Delta Chat.
+
+
+
Centralna usługa Push (Apple, Google itp.) budzi aplikację Delta Chat na twoim urządzeniu, aby sprawdzić w tle nowe wiadomości. Nie zna chatmaila ani adresu e-mail urządzenia, na którym się budzi. Centralne usługi push Apple/Google nigdy nie widzą adresu e-mail (nadawcy ani odbiorcy), a także nigdy nie widzą treści wiadomości (również w formie zaszyfrowanej).
+
+
+
+
Od maja 2024 r. serwery chatmail znają „tokeny urządzenia”, ale planujemy szyfrować te informacje na serwerze proxy powiadomień, tak aby serwer chatmail nigdy nie poznał tokena urządzenia.
+
+
Centralny serwer proxy powiadomień Delta Chat jest mały i w pełni zaimplementowany w Rust i zapomina o tokenach urządzeń zaraz po ich przetworzeniu przez Apple/Google/itp, zwykle w ciągu kilku milisekund.
+
+
W wyniku tego ogólnego projektu ochrony prywatności nawet przejęcie serwera chatmail lub pełne przejęcie centralnego serwera proxy powiadomień Delta Chat nie spowodowałoby ujawnienia prywatnych informacji, których usługi Push jeszcze nie posiadają.
+
+
+
+
+ Dlaczego Delta Chat integruje się ze scentralizowanymi, zastrzeżonymi usługami push Apple/Google?
+
+
+
+
+
Delta Chat to darmowy i otwartoźródłowy zdecentralizowany komunikator z możliwością wyboru serwera, ale chcemy, aby użytkownicy mogli niezawodnie doświadczać „natychmiastowego dostarczania” wiadomości, tak jak w przypadku aplikacji Whatsapp, Signal lub Telegram, bez zadawania z góry pytań, które są bardziej odpowiednie dla doświadczonych użytkowników lub programistów.
+
+
+ Jakie standardy są stosowane do szyfrowania end-to-end?
+
+
+
+
+
Autocrypt służy do automatycznego ustanawiania szyfrowania end-to-end kontaktów i czatów grupowych. Autocrypt wykorzystuje ograniczony i bezpieczny podzbiór standardu OpenPGP. W pełni zaszyfrowane wiadomości są oznaczone kłódką .
+
+
Protokoły Secure-Join służą do nawiązywania rozmów z gwarantowanym szyfrowaniem typu end-to-end, które chroni przed atakami sieciowymi i zagrożonymi serwerami. Czaty oznaczone zielonym znacznikiem wyboru gwarantują szyfrowanie end-to-end wiadomości.
+
+
+
+
+ Skąd mogę wiedzieć, czy wiadomości są szyfrowane metodą e2e?
+
+
+
+
+
Wszystkie całkowicie zaszyfrowane wiadomości są oznaczone kłódką:
+
+
+
+
Pełne szyfrowanie jest gwarantowane, jeśli obok tytułu czatu znajduje się zielony znacznik wyboru:
+
+
+
+
+
+
+ Jak mogę uzyskać gwarancję kompleksowego szyfrowania i zielone znaczniki wyboru?
+
+
+
+
+
Jeśli masz drugi kanał komunikacji ze swoim partnerem na czacie, np. czat wideo lub inny komunikator, możesz wygenerować link zaproszenia.
+
+
Jeśli jesteście razem osobiście, możesz pokazać kod QR swojemu rozmówcy.
+
+
+
+
W przypadku zaproszeń grupowych dotknij tytułu czatu grupy, aby wyświetlić listę jej członków, i wybierz „Kod QR zaproszenia”.
+
+
+
Aby uzyskać bezpośrednie zaproszenia na czat 1:1, dotknij ikony kodu QR na ekranie głównym aplikacji Delta Chat.
+
+
+
+
Pozwól swojemu partnerowi czatu zeskanować obraz QR za pomocą aplikacji Delta Chat lub dotknij „Kopiuj” lub „Udostępnij”, aby utworzyć link zaproszenia i udostępnić go swojemu partnerowi czatu.
Jeśli oba urządzenia są w trybie online, obie strony ostatecznie zobaczą czat (grupowy lub bezpośredni) z zielonym znacznikiem wyboru obok tytułu.
+
+
+
Jeśli jedno z urządzeń jest w trybie offline, zielone znaczniki wyboru pojawią się później, dopiero gdy urządzenie zostanie ponownie połączone z Internetem i zostanie zrealizowany protokół sieciowy Secure-Join.
+
+
+
+
Gratulacje! Teraz będziecie automatycznie korzystać z gwarantowanego kompleksowego szyfrowania tego kontaktu i oboje będziecie mogli dodawać się nawzajem do grup oznaczonych zielonym znacznikiem wyboru , w ten sposób automatycznie rozpowszechniając gwarantowane kompleksowe szyfrowanie wśród swoich członków.
+
+
+
+
+ Co oznacza zielony znacznik wyboru i „gwarantowane kompleksowe szyfrowanie”?
+
+
+
+
+
Tytuły czatów z zielonymi znacznikami wyboru oznaczają, że wszystkie wiadomości na czacie będą w pełni szyfrowane i nie będą mogły zostać odczytane ani zmodyfikowane przez zhakowane serwery poczty e-mail lub dostawców Internetu. Dołączanie do czatów grupowych oznaczonych zielonym znacznikiem bezpiecznie rozpowszechnia informacje o szyfrowaniu wszystkich osób (i zielone znaczniki wyboru) w sposób gwarantujący kompleksowe szyfrowanie w grupie i pomiędzy członkami.
+
+
Profile kontaktów z zielonymi znacznikami wyboru oznaczają, że obecnie gwarantujemy, że wiadomości kontaktu będą szyfrowane metodą end-to-end. Każdy kontakt oznaczony zielonym znacznikiem albo wykonał z tobą bezpośrednie skanowanie QR, albo został zweryfikowany przez inny kontakt oznaczony zielonym znacznikiem. Weryfikacje odbywają się automatycznie podczas dodawania członków do grup. Ktokolwiek doda kontakt do grupy oznaczonej zielonym znacznikiem, staje się osobą weryfikującą dla tych członków, którzy jeszcze nie wiedzieli o dodanym kontakcie. W profilu kontaktu możesz wielokrotnie dotykać tekstu „Zweryfikowano przez…”, aż dojdziesz do osoby, z którą bezpośrednio wykonałeś skanowanie QR.
+
+
Pamiętaj, że w profilu kontaktu możesz widzieć i klikać osoby weryfikujące, ale w tytule profilu nie ma zielonego znacznika wyboru. Zwykle oznacza to, że kontakt „wysłał wiadomość z innego urządzenia”.
+
+
Aby uzyskać bardziej szczegółowe omówienie „gwarantowanego szyfrowania typu end-to-end”, zobacz Protokoły Secure-Join, a w szczególności przeczytaj o „zweryfikowanych grupach”, technicznym określeniu tak zwanego tutaj „zielonego znacznika wyboru” lub „gwarantowanego szyfrowania end-to-end” czatów.
+
+
+
+
+ Kontakt „wysłał wiadomość z innego urządzenia”, co mogę zrobić?
+
+
+
+
+
Twój czat z kontaktem utracił gwarantowane szyfrowanie typu end-to-end. Gdy zobaczysz to ostrzeżenie, zielony znacznik wyboru dla tego czatu i kontaktu został usunięty. Jeśli zdziwi cię nagły spadek gwarantowanego szyfrowania end-to-end tego kontaktu, nie akceptuj ostrzeżenia! Zamiast tego skontaktuj się ze swoim kontaktem za pośrednictwem drugiego kanału, takiego jak rozmowa wideo, inny komunikator lub rozmowa telefoniczna, aby dowiedzieć się, co się stało.
+
+
Jeśli twój kontakt rzeczywiście spowodował spadek gwarantowanego szyfrowania typu end-to-end, zapoznaj się z kolejnymi akapitami, aby poznać typowe przyczyny i sposoby ich łagodzenia. Niezależnie od tego, wszystkie inne czaty oznaczone zielonym znacznikiem są w pełni szyfrowane, nawet jeśli kontakt jest ich członkiem.
+
+
Twój kontakt korzysta z Delta Chat na drugim urządzeniu (telefonie lub laptopie)
+
+
Jeśli ma inne urządzenie z uruchomioną aplikacją Delta Chat, powinien usunąć konto z nowego urządzenia i dodać je jako drugie urządzenie zgodnie z opisem tutaj. Gdy tylko skontaktuje się z tobą później, ostrzeżenie zniknie, a na obu urządzeniach twojego kontaktu zostanie ustanowione gwarantowane szyfrowanie.
+
+
Twój kontakt ponownie zainstalował Delta Chat, używając swojego starego loginu do konta
+
+
Jeśli ma plik kopii zapasowej, powinien usunąć konto z nowego urządzenia i zamiast tego zaimportować plik kopii zapasowej, aby ponownie utworzyć konto. Gdy tylko skontaktuje się z tobą później, ostrzeżenie zniknie, a dla tego kontaktu zostanie przywrócone gwarantowane szyfrowanie.
+
+
Jeśli nie ma pliku kopii zapasowej, najlepiej wykonać skanowanie QR ze swoim partnerem czatu, aby przywrócić gwarantowane szyfrowanie end-to-end.
+
+
Twój kontakt wysłał wiadomość e-mail za pośrednictwem interfejsu poczty internetowej lub innej aplikacji e-mail i wkrótce ponownie zacznie korzystać z Delta Chat.
+
+
Jeśli masz pewność, że kontakt czasami korzysta z poczty internetowej lub innej aplikacji pocztowej, która nie zapewnia szyfrowania end-to-end, możesz zaakceptować ostrzeżenie. Gdy tylko twój kontakt ponownie skorzysta z Delta Chat, gwarantowane szyfrowanie end-to-end zostanie automatycznie przywrócone.
+
+
Twój kontakt całkowicie przestał korzystać z Delta Chat
+
+
Czasami utrzymanie kontaktu jest ważniejsze niż szyfrowanie end-to-end. „Szyfrowanie warstwy transportowej” (TLS) może w dalszym ciągu w znaczący sposób chronić poufność wiadomości przesyłanych między urządzeniem a serwerem poczty e-mail. Jednak bez kompleksowego szyfrowania Ty i Twój kontakt ufacie swojemu serwerowi poczty e-mail, że nie będzie czytać ani manipulować waszymi wiadomościami i nie będzie przekazywać ich osobom trzecim.
+
+
W każdym razie nie możesz zrobić nic innego, jak zaakceptować ostrzeżenie. Usuń także kontakt z aktywnej grupy oznaczonej zielonym znacznikiem, którą znajdziesz w sekcji „Współdzielone czaty” w profilu kontaktu. Dzięki temu twój kontakt nie otrzyma „nieczytelnych” wiadomości.
+
+
Jeśli kontakt usunął Delta Chat z powodu błędów lub niepożądanego zachowania, rozważ opublikowanie postu na naszym forum pomocy, aby pomóc nam zidentyfikować i rozwiązać typowe problemy. Dzięki!
+
+
+
+
+ Czy załączniki (zdjęcia, pliki, pliki audio itp.) są szyfrowane metodą end-to-end?
+
+
+
+
+
Tak.
+
+
Kiedy mówimy o „wiadomości zaszyfrowanej metodą end-to-end”, zawsze mamy na myśli, że zaszyfrowana jest cała wiadomość, łącznie ze wszystkimi załącznikami i metadanymi załączników, takimi jak nazwy plików.
+
+
+
+
+ Czy OpenPGP jest bezpieczny?
+
+
+
+
+
Tak, Delta Chat korzysta z bezpiecznego podzbioru OpenPGP i wyświetla wskaźnik bezpieczeństwa kłódki na wiadomości tylko wtedy, gdy cała wiadomość jest prawidłowo zaszyfrowana i podpisana. Na przykład „Odłączone podpisy” nie są traktowane jako bezpieczne.
+
+
OpenPGP samo w sobie nie jest niebezpieczne. Większość publicznie omawianych problemów związanych z bezpieczeństwem OpenPGP tak naprawdę wynika ze złej użyteczności lub złej implementacji narzędzi, lub aplikacji (lub obu). Szczególnie ważne jest rozróżnienie pomiędzy OpenPGP, standardem szyfrowania IETF, a GnuPG (GPG), narzędziem wiersza poleceń implementującym OpenPGP. Wiele publicznych komentarzy krytycznych na temat OpenPGP tak naprawdę omawia GnuPG, którego Delta Chat nigdy nie używał. Delta Chat korzysta raczej z implementacji OpenPGP Rust rPGP, dostępnej jako niezależny pakiet „pgp” i poddanej audytowi bezpieczeństwa w 2019 roku.
+
+
Naszym celem, wraz z innymi wdrażającymi OpenPGP, jest dalsza poprawa parametrów bezpieczeństwa poprzez wdrożenie nowego IETF OpenPGP Crypto-Refresh, który na szczęście został przyjęty latem 2023 roku.
+
+
+
+
+ Czy rozważałeś użycie alternatyw dla OpenPGP do szyfrowania typu end-to-end?
+
+
+
+
+
Tak, podążamy za rozwiązaniami takimi jak MLS lub Saltpack, ale przyjęcie ich oznaczałoby zerwanie kompleksowej interoperacyjności szyfrowania ze wszystkimi innymi aplikacjami e-mail, które zazwyczaj obsługują szyfrowanie OpenPGP. Nie byłaby to więc łatwa decyzja i użytkownicy muszą wprowadzić wymierne ulepszenia.
+
+
Delta Chat przyjmuje holistyczne podejście do „użytecznego bezpieczeństwa” i współpracuje z szeroką gamą grup aktywistów, a także renomowanymi badaczami, takimi jak TeamUSEC, aby poprawić rzeczywiste wyniki użytkowników przed zagrożeniami bezpieczeństwa. Protokół przewodowy i standard ustanawiania szyfrowania end-to-end to tylko jedna część „wyników użytkownika”. Zobacz także nasze odpowiedzi na pytania dotyczące przejęcia urządzenia i metadanych wiadomości.
+
+
+
+
+ Czy Delta Chat jest podatny na EFAIL?
+
+
+
+
+
Nie, Delta Chat nigdy nie był podatny na atak EFAIL, ponieważ jego implementacja OpenPGP rPGP używa kodu wykrywania modyfikacji podczas szyfrowania wiadomości i zwraca błąd, jeśli kod wykrywania modyfikacji jest nieprawidłowy.
+
+
Delta Chat również nigdy nie był podatny na atak EFAIL „Direct Exfiltration”, ponieważ odszyfrowuje jedynie wiadomości multipart/encrypted, które zawierają dokładnie jedną zaszyfrowaną i podpisaną część, zgodnie ze specyfikacją Autocrypt Level 1.
+
+
+
+
+ Czy wiadomość jest udostępniana w postaci zwykłego tekstu, jeśli szyfrowanie end-to-end nie jest dostępne?
+
+
+
+
+
Nawet jeśli nie ma gwarancji, że twoje wiadomości będą zaszyfrowane metodą end-to-end, nadal są chronione przed dostawcami Internetu, takimi jak operatorzy komórkowi lub telewizji kablowej. Jednakże dostawcy poczty e-mail zarówno twoi, jak i twojego odbiorcy mogą czytać, analizować, a nawet modyfikować twoje wiadomości, w tym wszelkie załączniki, jeśli nie są one w pełni zaszyfrowane.
+
+
Delta Chat domyślnie korzysta ze ścisłego szyfrowania TLS, które zabezpiecza połączenia pomiędzy twoim urządzeniem a dostawcą poczty e-mail. Cała obsługa TLS Delta Chat została poddana niezależnemu audytowi bezpieczeństwa. Co więcej, połączenie między tobą a dostawcą poczty e-mail odbiorcy będzie zazwyczaj również szyfrowane. Jeśli zaangażowane serwery poczty e-mail obsługują MTA-STS, pomiędzy dostawcami poczty e-mail będzie egzekwowane szyfrowanie transportu. W takim przypadku komunikacja Delta Chat nigdy nie będzie udostępniana w Internecie w postaci zwykłego tekstu, nawet jeśli wiadomość nie została zaszyfrowana metodą end-to-end.
+
+
Pamiętaj, że utrzymywanie gwarantowanego szyfrowania typu end-to-end oprócz szyfrowania TLS zapewnia wszechstronne bezpieczeństwo między urządzeniami twoimi i odbiorców. Nawet twój dostawca poczty e-mail lub Internetu nie będzie w stanie przeczytać ani zmodyfikować twoich wiadomości.
+
+
+
+
+ W jaki sposób Delta Chat chroni metadane w wiadomościach?
+
+
+
+
+
Delta Chat chroni większość metadanych wiadomości, umieszczając następujące informacje w całkowicie zaszyfrowanej części wiadomości:
Powiadomienie o włączeniu przesyłania strumieniowego lokalizacji
+
Adres URL pokoju WebRTC
+
+
+
Serwery poczty e-mail nie mają dostępu do chronionych metadanych, ale widzą datę wiadomości, jej rozmiar oraz, co ważniejsze, adresy nadawcy i odbiorcy. Serwery poczty e-mail potrzebują adresów odbiorców, aby kierować i dostarczać wiadomości do urządzeń odbiorców.
+
+
+
+
+ Jak chronić metadane i kontakty w przypadku przejęcia urządzenia?
+
+
+
+
+
Zarówno w celu ochrony przed serwerami poczty e-mail gromadzącymi metadane, jak i przed zagrożeniem przejęcia urządzenia, zalecamy użycie zoptymalizowanej instancji serwera poczty e-mail Delta Chat w celu tworzenia pseudonimowych kont tymczasowych poprzez skanowanie kodów QR. Pamiętaj, że aplikacje Delta Chat na wszystkich platformach obsługują wiele kont, dzięki czemu możesz z łatwością korzystać z kont „1-tygodniowych” lub „1-miesięcznych” związanych z konkretnymi działaniami obok konta „głównego”, wiedząc, że wszystkie tymczasowe dane konta wraz ze wszystkimi metadanymi zostaną usunięte. Co więcej, jeśli urządzenie zostanie przejęte, nie będzie można łatwo zidentyfikować kontaktów korzystających z tymczasowych kont e-mail, w porównaniu z komunikatorami, które ujawniają numery telefonów w grupach czatów, które z kolei często są powiązane z tożsamością prawną.
+
+
+
+
+ Jak mogę sprawdzić informacje o szyfrowaniu?
+
+
+
+
+
Możesz sprawdzić stan szyfrowania end-to-end ręcznie w oknie dialogowym „Szyfrowanie” (profil użytkownika w systemie Android/iOS lub kliknij prawym przyciskiem myszy element listy czatu użytkownika na komputerze). Delta Chat pokazuje tam dwa odciski palców. Jeśli te same odciski palców pojawią się u ciebie i urządzeniu twojego kontaktu, połączenie jest bezpieczne.
+
+
+
+
+ Jak mogę sprawdzić stan szyfrowania wiadomości?
+
+
+
+
+
Mała kłódka w dymku wiadomości oznacza, że wiadomość od danego nadawcy została prawidłowo zaszyfrowana. Jeśli nie ma kłódki, wiadomość nie została prawidłowo zaszyfrowana metodą end-to-end, najprawdopodobniej dlatego, że nadawca korzysta z aplikacji lub interfejsu poczty internetowej bez obsługi szyfrowania typu end-to-end.
Jeśli kontakt korzysta z aplikacji e-mail bez Autocrypt, wszystkie wiadomości od tego kontaktu (w czacie grupowym lub 1:1) nie będą w pełni szyfrowane, w związku z czym nie będą wyświetlane z „kłódką” przy wiadomościach. Pamiętaj, że nawet jeśli twoje kontakty korzystają z Delta Chat na swoim koncie, mogą również używać na tym koncie aplikacji e-mail bez Autocrypt, co może powodować sporadyczne wysyłanie niezaszyfrowanych wiadomości. Odpowiadanie niezaszyfrowanych wiadomości na niezaszyfrowane wiadomości jest wymagane przez funkcję Autocrypt, aby zapobiec nieczytelnym wiadomościom po stronie twoich kontaktów i ich aplikacji e-mail bez Autocrypt.
+
+
+
+
+ Jak mogę uzyskać zaszyfrowany ened-to-end czat z kontaktem Delta Chat, który czasami korzysta z poczty internetowej lub innej aplikacji e-mail bez Autocrypt?
+
+
+
+
+
Jeśli potrzebujesz bezpiecznie, kompleksowo zaszyfrowanego czatu z kontaktem, który korzysta ze swojego konta zarówno w Delta Chat, jak i w aplikacjach bez Autocrypt (np. poczta internetowa), najlepiej skonfigurować z nim gwarantowane szyfrowanie typu end-to-end, a następnie utworzyć gwarantowany zaszyfrowany end-to-end czat grupowy z wami dwoma jako członkami. W tym czacie grupowym wszystkie wiadomości będą w pełni szyfrowane, nawet jeśli bezpośredni czat między wami zawiera ostrzeżenie „…wysłano wiadomość z innego urządzenia”.
+
+
+
+
+ Jak mogę zapewnić kompleksowe szyfrowanie i usuwanie wiadomości?
+
+
+
Gwarantowane szyfrowane metodą end-to-end czaty chronią przed atakami MITM attacks, a włączenie znikających wiadomości powoduje usunięcie wiadomości z serwera po upływie czasu skonfigurowanego przez użytkownika.
+
+
+ Czy Delta Chat obsługuje funkcję Perfect Forward Secrecy?
+
+
+
+
+
Nie, Delta Chat nie obsługuje funkcji Perfect Forward Secrecy (PFS). Oznacza to, że jeśli twój prywatny klucz deszyfrujący Delta Chat wycieknie i ktoś zdobędzie twoje wcześniejsze wiadomości w trakcie przesyłania, będzie mógł je odszyfrować i odczytać przy użyciu ujawnionego klucza deszyfrowania.
+
+
Należy jednak pamiętać, że jeśli ktoś zdobędzie twoje klucze deszyfrujące, zazwyczaj będzie mógł również uzyskać twoje wiadomości, niezależnie od tego, czy obowiązuje zasada Perfect Forward Secrecy, czy nie. Typową sytuacją w świecie rzeczywistym w przypadku wycieku kluczy deszyfrujących jest przejęcie urządzenia, które omawiamy w naszej odpowiedzi na temat przejęcia metadanych i urządzenia.
+
+
Możliwe, że Delta Chat ewoluuje, aby wspierać Perfect Forward Secrecy, ponieważ OpenPGP to tylko kontener na zaszyfrowane wiadomości, ale zarządzanie kluczami szyfrowania (a tym samym rotacja kluczy lub „zapadanie kluczy”) mogłoby być zorganizowane w elastyczny sposób. Zobacz prototyp PFS firmy Seqouia, aby zapoznać się z istniejącymi eksperymentami w społeczności implementatorów OpenPGP.
+
+
+
+
+ Czy szyfrowanie end-to-end Delta Chat jest tak samo bezpieczne jak Signal?
+
+
+
+
+
To zależy od tego, co jest dla ciebie ważne. Delta Chat nie obsługuje PFS tak jak Signal, ale zapewnia gwarantowane szyfrowane end-to-end czatów, które jest zabezpieczeniem przed zaatakowanymi serwerami lub uszkodzonymi sieciami. Signal i większość innych komunikatorów obsługujących PFS nie zapewniają praktycznego schematu ochrony czatów grupowych przed atakami sieciowymi, które są prawdopodobnie bardziej niepokojące niż potencjalny atakujący, który przejmuje twój telefon i prywatne ustawienia szyfrowania i w ten sposób nie twoje wiadomości i mimo to ma pełny zapis wszystkich poprzednio zaszyfrowanych wiadomości.
+
+
+ Czy mogę ponownie wykorzystać mój istniejący klucz prywatny?
+
+
+
+
+
Tak.
+The best way is to send an Autocrypt Setup Message from the other e-mail client.
+Look for something like Start Autocrypt Setup Transfer in the settings of the other client and follow the instructions shown there.
+
+
Alternatywnie możesz zaimportować klucz ręcznie w „Ustawienia » Zaawansowane » Importuj tajne klucze”. Uwaga: Upewnij się, że klucz nie jest chroniony hasłem lub wcześniej usuń hasło.
+
+
Jeśli nie masz klucza lub nawet nie wiesz, że go potrzebujesz nie przejmuj się: Delta Chat generuje go w razie potrzeby, nie trzeba naciskać przycisku, aby to zrobić.
+
+
+
+
+ Nie mogę zaimportować istniejącego klucza PGP do Delta Chat.
+
+
+
+
+
Jest wielce prawdopodobne, że problemem jest klucz, który jest zaszyfrowany i/lub używa hasła. Takie klucze nie są obsługiwane przez Delta Chat. Usuń szyfrowanie i hasło i spróbować ponownie zaimportować klucz.
+
+
Innym częstym błędem jest nieprawidłowe zakończenie pliku.
+Użyj opancerzonego formatu ASCII i końcówki pliku .asc.
+
+
Rozsądny format, Delta Chat obsługuje popularne formaty kluczy prywatnych OpenPGP, jednak jest mało prawdopodobne, że będziemy obsługiwać 100% wszystkich kluczy prywatnych z dowolnych źródeł. To również nie jest głównym celem Delta Chat (w rzeczywistości, znaczna większość użytkowników Delta Chat nie będzie miała żadnego klucza przed rozpoczęciem korzystania z Delta). Jednak staramy się wspierać klucze prywatne z innych źródeł tak dobrze jak to tylko możliwe.
+
+
Usunięcie hasła z klucza prywatnego będzie się różnić w zależności od
+oprogramowania używanego do zarządzania kluczami PGP. Za pomocą programu Enigmail można ustawić
+hasło na pustą wartość w oknie zarządzania kluczami. Z GnuPG możesz ustawić je z linii poleceń.
+W przypadku innych programów można znaleźć rozwiązanie online.
+
+
+
+
+ Czy Delta Chat był niezależnie kontrolowany pod kątem luk w zabezpieczeniach?
+
+
+
+
+
Projekt Delta Chat przeszedł cztery niezależne audyty bezpieczeństwa i jedną niezależną analizę bezpieczeństwa, od najnowszego do najstarszego:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
W kwietniu 2023 r. naprawiliśmy problemy z bezpieczeństwem i prywatnością w funkcji „aplikacje internetowe udostępniane na czacie”, związane z awariami piaskownicy, szczególnie w przypadku Chromium. Następnie przeprowadziliśmy niezależny audyt bezpieczeństwa od Cure53 i wszystkie wykryte problemy zostały naprawione w aplikacji z serii 1.36 wydanej w kwietniu 2023 r. Pełną historię bezpieczeństwa end-to-end w sieci można znaleźć tutaj.
+
+
+
W marcu 2023 r. firma Cure53 przeanalizowała zarówno szyfrowanie transportu połączeń sieciowych Delta Chat, jak i powtarzalną konfigurację serwera pocztowego zgodnie z zaleceniami na tej stronie. Możesz przeczytać więcej o audycie na naszym blogu lub przeczytać pełny raport tutaj.
+
+
+
W 2020 r. firma Include Security przeanalizowała biblioteki Rust core, IMAP, SMTP i TLS Delta Chat. Nie znalazła żadnych problemów krytycznych ani poważnych. W raporcie zwrócono uwagę na kilka słabych punktów o średniej wadze – same w sobie nie stanowią zagrożenia dla użytkowników Delta Chat, ponieważ zależą od środowiska, w którym używany jest Delta Chat. Ze względu na użyteczność i kompatybilność nie możemy złagodzić wszystkich z nich i zdecydowaliśmy się przedstawić zalecenia dotyczące bezpieczeństwa zagrożonym użytkownikom. Pełny raport można przeczytać tutaj.
+
+
+
W 2019 r. firma Include Security przeanalizowała biblioteki PGP i RSA Delta Chat. Nie znaleziono żadnych krytycznych problemów, ale dwa poważne problemy, które później naprawiliśmy. Ujawniła również jeden problem o średniej wadze i kilka mniej poważnych, ale nie było możliwości wykorzystania tych luk w implementacji Delta Chat. Niektóre z nich jednak naprawiliśmy od czasu zakończenia kontroli. Pełny raport można przeczytać tutaj.
+
+
+
+
+
+
+ Multi-klient
+
+
+
+
+
+
+
+ Czy mogę korzystać z Delta Chat na wielu urządzeniach w tym samym czasie?
+
+
+
+
+
Tak. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
+
+
+
+
Upewnij się, że oba urządzenia są połączone z tego samego Wi-Fi lub sieci
+
+
+
Na pierwszym urządzeniu przejdź do Ustawienia → Dodaj kolejne urządzenie, w razie potrzeby odblokuj ekran i poczekaj chwilę, aż pojawi się kod QR
Na drugim urządzeniu uruchom Delta Chat, wybierz Dodaj jako kolejne urządzenie i zeskanuj kod QR z pierwszego urządzenia
+
+
+
+
Przenoszenie powinno rozpocząć się po kilku sekundach, a podczas przenoszenia oba urządzenia będą pokazywać postęp. Poczekaj, aż zakończy się na obu urządzeniach.
+
+
W przeciwieństwie do wielu innych komunikatorów, po udanym przenoszeniu oba urządzenia są całkowicie niezależne. Jedno urządzenie nie jest potrzebne do działania drugiego.
+
+
+
+
+ Rozwiązywanie problemów
+
+
+
+
+
+
+
Sprawdź dokładnie, czy oba urządzenia są w tym samym Wi-Fi lub tej samej sieci
+
+
+
Na Windowsie, przejdź do Panel sterowania / Sieć i internet i upewnij się, że Sieć prywatna jest wybrana jako “Typ profilu sieci”
+(po przeniesieniu możesz wrócić do pierwotnej wartości)
+
+
+
Twój system może mieć „zaporę ogniową”, o której wiadomo, że powoduje problemy (szczególnie w systemie Windows).
+Wyłącz zaporę dla Delta Chat po obu stronach i spróbuj ponownie
+
+
+
Sieci dla gości mogą nie pozwalać urządzeniom na komunikację między sobą. Jeśli to możliwe, korzystaj z sieci innej niż gość.
+
+
+
Upewnij się, że na urządzeniu docelowym jest wystarczająca ilość miejsca
+
+
+
Jeśli przenoszenie się rozpoczęło, upewnij się, że urządzenia pozostają aktywne i nie zasypiają. Nie wychodź z Delta Chat. (dokładamy wszelkich starań, aby aplikacja działała w tle, ale systemy mają tendencję do ubijania aplikacji, niestety)
+
+
+
Delta Chat jest już zalogowany na urządzeniu docelowym? Możesz używać wielu kont na urządzeniu, po prostu dodaj kolejne konto
+
+
+
Jeśli nadal masz problemy lub nie możesz zeskanować kodu QR, wypróbuj ręczne przenoszenie opisane poniżej
+
+
+
+
+
+
+ Ręczny transfer
+
+
+
+
+
Ta metoda jest zalecana tylko wtedy, gdy opisana powyżej opcja „Dodaj kolejne urządzenie” nie działa.
+
+
+
Na starym urządzeniu przejdź do „Ustawienia » Czaty i media » Eksport kopii zapasowej”. Wprowadź swój PIN odblokowania ekranu, wzór lub hasło. Następnie możesz nacisnąć „Utwórz kopię”. Spowoduje to zapisanie pliku kopii zapasowej na urządzeniu. Teraz musisz jakoś przenieść go na inne urządzenie.
+
Na nowym urządzeniu, na ekranie logowania, zamiast logować się na swoje konto e-mail, wybierz „Przywróć z kopii zapasowej”. Po zaimportowaniu Twoje rozmowy, klucze szyfrujące i multimedia powinny zostać skopiowane na nowe urządzenie.
+
+
Jeśli korzystasz z iOS i napotykasz trudności, może ten poradnik Ci pomoże.
+
+
+
Jesteś teraz zsynchronizowany i możesz używać obu urządzeń do wysyłania i odbierania wiadomości zaszyfrowanych end-to-end w komunikacji ze swoimi partnerami.
+
+
+
+
+
+ Czy są jakieś plany wprowadzenia klienta Web Delta Chat?
+
+
+
+
+
+
Nie ma bezpośrednich planów, ale wstępne przemyślenia.
+
Istnieją 2-3 możliwości wprowadzenia klienta Web Delta Chat, 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.
+
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 get.delta.chat.
+
+
+
+
+
+ Aplikacje webxdc
+
+
+
+
+
W Delta Chat możesz udostępniać aplikacje webxdc i załączniki z rozszerzeniem pliku .xdc. Mogą robić bardzo różne rzeczy i uczynić Delta Chat naprawdę rozszerzalnym komunikatorem.
+
+
+
+
+ Jak prywatne są aplikacje webxdc?
+
+
+
+
+
+
Aplikacje webxdc nie mogą wysyłać danych do Internetu ani niczego pobierać.
+
Aplikacja webxdc może wymieniać dane wyłącznie w ramach czatu Delta Chat, a ich kopie znajdują się na urządzeniach twoich partnerów czatu. Poza tym jest całkowicie odizolowana od Internetu.
+
Prywatność, jaką oferuje aplikacja webxdc, to prywatność twojego czatu – jeśli ufasz osobom, z którymi rozmawiasz, możesz ufać także aplikacji webxdc.
+
Oznacza to również: otwieranie aplikacji webxdc na czatach, w przypadku których nie ufa się członkom, może stanowić ryzyko dla prywatności – tak jak załączniki do wiadomości e-mail, gdzie otwiera się tylko załączniki od nadawców, którym ufasz, a nie od spamerów.
+
+
+
+
+
+ Gdzie mogę zdobyć aplikacje webxdc?
+
+
+
+
+
+
Ogólnie rzecz biorąc, każdy może udostępniać sobie aplikacje webxdc bez ograniczeń.
+
Możesz wysłać „hi” na adres xstore@testrun.org, aby zobaczyć eksperymentalny sklep z aplikacjami webxdc. Wszystkie aplikacje są otwarto źródłowe i są bezpłatne.
+
Wiele osób pisze własne, aplikacje webxdc i publikuje je na forum Delta Chat.
+
+
+
+
+
+ Jak mogę tworzyć własne aplikacje webxdc?
+
+
+
+
+
+
Aplikacje webxdc to po prostu pliki ZIP zawierające kod html, css i javascript.
Wszystko, co musisz wiedzieć, jest napisane w dokumentacji.
+
Jeśli masz pytania, możesz zadać je innym osobom z doświadczeniem na forum Delta Chat.
+
+
+
+
+
+ Funkcje eksperymentalne
+
+
+
+
+
Jesteśmy bardzo wdzięczni za opinie na temat tych funkcji — chcesz podzielić się swoimi pomysłami? Dołącz do forum, aby wnieść swój wkład. Możesz wygodnie zalogować się za pośrednictwem Delta Chat i skanowaniu kodu QR, co jest kolejnym dość stabilnym eksperymentem, który przeprowadzamy na boku (sic!).
+
+
+
+
+ Jak mogę korzystać z połączeń audio/wideo z Delta Chat?
+
+
+
+
+
+
Aby włączyć połączenia audio/wideo, przejdź do sekcji „Funkcje eksperymentalne” w ustawieniach zaawansowanych i wybierz „Instancja czatu wideo”.
+
Kiedy zapraszasz innych do czatu wideo, jest on od razu otwierany w Twojej przeglądarce/aplikacji. Inne osoby otrzymują e-mail z linkiem do twojego czatu wideo. W ten sposób jest to kompatybilne również wtedy, gdy partnerzy czatu nie używają Delta Chat.
+
Zwróć uwagę, że po drugiej stronie nie ma dzwonka, a Twoim rozmówcom nie zostanie przerwana praca przez zaproszenie do czatu wideo.
+
Możesz użyć dowolnej usługi czatu wideo, która pozwala na dołączenie przez link. Wystarczy dodać link w ustawieniach.
+
Na przykład, aby użyć flagowej instancji Jitsi Meet, możesz wpisać https://meet.jit.si/$ROOM. Zmienna $ROOM będzie wartością losową; w ten sposób będziesz miał nowy losowy pokój jitsi za każdym razem, gdy do kogoś zadzwonisz.
+
+
+
+
+
+ Co to są Listy rozgłoszeniowe i jak mogę ich używać?
+
+
+
+
+
+
Dzięki liście rozgłoszeniowej możesz wysłać wiadomość do wielu odbiorców jednocześnie; kiedy ci odpowiedzą, otrzymasz odpowiedź w bezpośrednim czacie 1: 1 z nimi. Odbiorcy nie widzą siebie nawzajem.
+
Technicznie, jest to e-mail z wieloma odbiorcami w „ukrytej kopii”.
+
Możesz włączyć tę funkcję w sekcji „Funkcje eksperymentalne” w ustawieniach zaawansowanych. Następnie możesz utworzyć listę rozgłoszeniową z okna dialogowego „Nowy czat”.
+
Jeśli używasz więcej niż jednego urządzenia, listy rozgłoszeniowe nie są obecnie synchronizowane między nimi.
+
Wiadomości wysyłane do list rozgłoszeniowych nie są szyfrowane. Szyfrowanie złamałoby anonimowość, ponieważ wtedy wszyscy odbiorcy wiedzieliby, kto jeszcze je otrzymał (wysyłanie indywidualnych wiadomości do wszystkich byłoby gorsze z powodu limitu prędkości i zużycia sieci).
+
+
+
+
+
+ Jak mogę udostępnić swoją lokalizację moim rozmówcom?
+
+
+
+
+
+
Możesz włączyć przesyłanie strumieniowe lokalizacji w sekcji „Funkcje eksperymentalne” w ustawieniach zaawansowanych.
+
Teraz, jeśli chcesz udostępnić swoją lokalizację na czacie, przejdź do „załącz” i wybierz „Lokalizacja”. Możesz teraz ustawić przedział czasowy, w którym Twoja lokalizacja będzie przesyłana strumieniowo do rozmówców, od 5 minut do 6 godzin.
+
Gdy twoja lokalizacja się zmienia, inni uczestnicy czatu mogą ją zobaczyć na mapie w czacie.
+
Aby zobaczyć mapę i wyświetlić lokalizacje innych osób, musisz włączyć tę funkcję w ustawieniach zaawansowanych.
+
Ta funkcja nie będzie udostępniać twojej lokalizacji nikomu poza partnerami czatu. Mapy są pobierane z OpenStreetMap.
+
Na komputerze system operacyjny zwykle nie może określić twojej lokalizacji. Zamiast tego możesz kliknąć prawym przyciskiem myszy na mapie i opisać lokalizację, która jest wysyłana do czatu jako wiadomość, ale także pojawia się na mapie.
+
+
+
+
+
+ Co właściwie chroni eksperymentalne szyfrowanie bazy danych?
+
+
+
+
+
+
W tej chwili szyfrowanie bazy danych jest jeszcze bardzo eksperymentalne. Nie polegaj na nim w kwestii ochrony, powinieneś dodatkowo użyć szyfrowania systemu operacyjnego, jeśli takie zapewnia.
+
Szyfrowanie bazy danych nie szyfruje jeszcze obiektów blob, tylko wiersze i kolumny bazy danych. Oznacza to mniej więcej tyle, że Twoje wiadomości są bezpieczne, ale nie załączniki.
+
W systemach iOS i Android klucze szyfrujące są przechowywane w pęku kluczy systemowych. Oznacza to, że szyfrowanie jest tak bezpieczne, jak system operacyjny, na którym działa.
+
Klient Delta Chat na komputer nie oferuje jeszcze szyfrowania bazy danych, ponieważ nie ma standardowego sposobu przechowywania kluczy szyfrowania na różnych obsługiwanych platformach.
+
+
+
+
+
+ Dlaczego mogę wybrać, aby widzieć tylko folder DeltaChat?
+
+
+
+
+
To jest ustawienie eksperymentalne dla niektórych osób, które eksperymentują z regułami po stronie serwera. Nie wszyscy dostawcy to obsługują, ale w przypadku niektórych możesz przenieść wszystkie wiadomości z nagłówkiem „Chat-Version” do folderu DeltaChat. Zwykle byłoby to zrobione przez aplikację Delta Chat.
+
+
Włączenie „Pobieraj tylko z folderu DeltaChat” ma sens, jeśli masz:
+
+
+
włączoną regułę po stronie serwera, aby przenosić wszystkie wiadomości z nagłówkiem Chat-Version do folderu DeltaChat i,
+
ustawioną opcję „Pokaż klasyczne e-maile” na „Nie, tylko czaty”.
+
+
+
W tym przypadku Delta Chat nie musi obserwować skrzynki odbiorczej, a wystarczy, że będzie obserwować tylko folder DeltaChat.
+
+
+
+
+ Jak mogę zmienić moje konto na inny adres e-mail?
+
+
+
+
+
+
+
Zmień swój adres w „Ustawienia → Zaawansowane → Hasło i konto” i wprowadź hasło do swojego nowego konta (i jeśli to konieczne, ustawienia serwera). Otrzymasz informację o przeniesieniu na nowy adres. Dodatkowe powiadomienie pojawi się również na czacie „Komunikaty urządzenia”.
+
+
+
Jeśli to możliwe, pozwól, aby twój stary dostawca poczty e-mail przekazywał wszystkie wiadomości na twój nowy adres.
+
+
+
Poinformuj swoje kontakty, że zmieniłeś adres. Pisanie do gwarantowanych szyfrowaniem end-to-end czatów i grup sprawi, że automatycznie zauważą twoją przenosiny i będą kontynuować rozmowę z tobą, korzystając z twojego nowego adresu.
+
+
+
+
Pamiętaj, że Delta Chat nie będzie już pobierać wiadomości od twojego starego dostawcy poczty e-mail. Jeśli nie skonfigurowałeś swojego dostawcy poczty e-mail do przekazywania wiadomości (krok 2.), tylko te kontakty, do których wysłałeś wiadomość w gwarantowanym szyfrowaniem end-to-end czacie, wyślą wiadomości na twój nowy adres.
W zależności od używanego systemu operacyjnego możesz
+zostać poproszony o przyznanie uprawnień aplikacji.
+Oto, co robi Delta Chat z tymi uprawnieniami:
+
+
+
Aparat (można zablokować)
+
robi zdjęcia i filmy: do wysyłania zdjęć
+
Kontakty (można zablokować)
+
czyta twoje kontakty: aby znaleźć kontakty do czatu
+
Lokalizacja (można zablokować)
+
dostęp do przybliżonej lokalizacji (sieciowe źródła lokalizacji): dla funkcji przesyłania strumieniowego lokalizacji
+
dostęp do dokładnej lokalizacji (GPS i sieciowe źródła lokalizacji): dla funkcji przesyłania strumieniowego lokalizacji
+
Mikrofon (można zablokować)
+
nagrywanie dźwięku: dla wiadomości audio
+
Przechowywanie (można zablokować)
+
modyfikowanie lub usuwanie zawartości karty SD: pobieranie załączników do wiadomości
+
czytanie zawartość twojej karty SD: aby udostępniać pliki swoim kontaktom
+
Inne możliwości aplikacji
+
zmiana ustawienia dźwięku: możesz wybrać dzwonki i głośność dla powiadomień i wiadomości audio
+
uruchamianie przy starcie: więc nie musisz ręcznie uruchamiać Delta Chat
+
kontrola wibracji: do powiadomień
+
przeglądanie połączenia sieciowych: aby połączyć się z dostawcą poczty e-mail
+
zapobieganie uśpieniu telefonu: dzięki czemu możesz łatwiej skopiować kod zabezpieczający podczas komunikatu konfiguracyjnego Autocrypt
+
pełny dostęp do sieci: aby połączyć się z dostawcą poczty e-mail
+
wyświetlanie połączenia Wi-Fi: aby połączyć się z dostawcą poczty e-mail
+
prośba o zignorowanie optymalizacji baterii: w celu osiągnięcia „natychmiastowego dostarczania wiadomości”
+
+
+
+
+
+ Czy Delta Chat działa z moim dostawcą poczty e-mail?
+
+
+
+
+
+
Z dość dużym prawdopodobieństwem: Tak :)
+Jednak niektórzy dostawcy potrzebują specjalnych opcji, aby działać poprawnie, zobacz Przegląd dostawców
+
+
+
+
+
+ Chcę zarządzać własnym serwerem e-mail dla Delta Chat. Co polecacie?
+
+
+
+
+
+
Większość serwerów pocztowych będzie działać dobrze. Ale to, co osobiście polecamy, to połączenie mailcow i mailadm, jak opisano w tym poście na blogu.
+
+
+ Dlaczego muszę wpisać moje hasło e-mail do Delta Chat? Czy to jest bezpieczne?
+
+
+
+
+
Podobnie jak w przypadku innych programów pocztowych, takich jak Thunderbird, K9-Mail lub Outlook, program potrzebuje hasła, aby można było go używać do wysyłania i odbierania e-maili. Oczywiście hasło jest przechowywane tylko na Twoim urządzeniu. Hasło jest przesyłane tylko do Twojego dostawcy poczty e-mail (po zalogowaniu), który i tak ma dostęp do Twojej poczty
+
+
Jeśli korzystasz z dostawcy poczty e-mail z obsługą OAuth2, takiego jak gmail.com lub yandex.ru, nie musisz przechowywać hasła na urządzeniu. W takim przypadku używany jest tylko token dostępu.
+
+
Ponieważ Delta Chat jest Open Source, możesz sprawdzić Kod źródłowy
+jeśli chcesz sprawdzić, czy Twoje poświadczenia są przetwarzane w bezpieczny sposób. Cieszymy się z opinii, które sprawiają, że aplikacja jest bezpieczniejsza dla wszystkich naszych użytkowników.
+
+
+
+
+ Jakie wiadomości pojawiają się w Delta Chat?
+
+
+
+
+
Domyślnie Delta Chat pokazuje wszystkie e-maile.
+
+
Możesz to zmienić w „Ustawienia → Zaawansowane → Pokaż klasyczne e-maile”. Masz następujące opcje:
+
+
+
„Nie, tylko czaty”: Wyświetlane są tylko wiadomości wysłane przez innych użytkowników Delta Chat i odpowiedzi na Twoje wiadomości Delta Chat. Ma to największy sens, jeśli używasz tego samego konta e-mail również do wysyłania zwykłych wiadomości e-mail. To jest ustawienie domyślne.
+
„Wszystkie”: Delta Chat pokazuje wszystkie e-maile, które są wysyłane na Twój adres e-mail. Ma to sens, jeśli chcesz używać Delta Chat do wszystkich swoich e-maili, więc żadna wiadomość nie zostanie utracona. To jest ustawienie domyślne.
+
„Dla zaakceptowanych kontaktów”: Delta Chat pokazuje wszystkie e-maile od kontaktów, z którymi już prowadzisz czat, ale nowe czaty pojawiają się tylko dla wiadomości Delta Chat. Pomaga to zdecydować indywidualnie dla każdego przypadku, czy chcesz prowadzić rozmowę w Delta Chat, czy w „normalnej” aplikacji e-mail.
+
+
+
+
+
+ Czy Delta Chat obsługuje wiadomości e-mail w formacie HTML?
+
+
+
+
+
Tak, przychodzące wiadomości HTML otrzymują przycisk „Pokaż całą wiadomość”. Wychodzące wiadomości zawsze zawierają zwykły tekst.
+
+
+
+
+ Czy w Delta Chat mogę ustawić temat wiadomości e-mail?
+
+
+
+
+
Delta Chat automatycznie ustawia (i szyfruje!) klasyczny temat wiadomości e-mail na nazwę grupy lub nazwę nadawcy.
+
+
Jeśli więc chcesz samodzielnie ustawić temat, na przykład w przypadku oficjalnego e-maila do kontaktu biznesowego, możesz utworzyć grupę składającą się tylko z ciebie i odbiorców. Ustaw tytuł czatu na żądany temat, a następnie wyślij swój e-mail jako pierwszą wiadomość. Jeśli odbiorcy nie korzystają z Delta Chat, będzie to dla nich wyglądać jak zwykły, formalny e-mail. Jeśli ustawisz tekst podpisu, otrzymasz dodatkowe punkty profesjonalizmu.
+
+
+
+
+ Do czego służy ustawienie „Wyślij kopię do siebie”?
+
+
+
+
+
Wysłanie kopii wiadomości do siebie zapewnia otrzymywanie własnych wiadomości na wszystkich urządzeniach. Jeśli masz wiele urządzeń i jej nie włączysz, zobaczysz tylko wiadomości od innych osób oraz wiadomości, które wysyłasz z bieżącego urządzenia.
+
+
Kopia jest wysyłana do skrzynki odbiorczej, a następnie przenoszona do folderu DeltaChat; nie jest umieszczana w folderze „Wysłane”. Delta Chat nigdy nie przesyła niczego do folderu Wysłane, ponieważ oznaczałoby to dwukrotne przesłanie wiadomości (raz przez SMTP i raz przez IMAP do folderu Wysłane).
+
+
Domyślne ustawienie „Wyślij kopię do siebie” jest „włączone”.
+
+
+
+
+ Po co mam wybrać opcję oglądania folderu „Wysłane”?
+
+
+
+
+
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ą Delta Chat i chce, aby jego program pocztowy „uczestniczył” w rozmowach na czacie.
+
+
Jednak zalecamy używanie klienta Delta Chat Desktop; możesz go pobrać z get.delta.chat. 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 Delta Chat Desktop.
Niektórzy używają Delta Chat jako zwykłego klienta poczty e-mail i chcą używać folderu Skrzynka odbiorcza dla swojej poczty zamiast folderu DeltaChat. Jeśli wyłączysz opcję „Oglądaj folder DeltaChat”, powinieneś również wyłączyć opcję „Automatyczne przenoszenie do folderu DeltaChat”. W przeciwnym razie usuwanie wiadomości lub konfiguracja wielu urządzeń może nie działać poprawnie.
+
+
+
+
+ Czy Delta Chat jest kompatybilny z Protonmail / Tutanota / Criptext?
+
+
+
+
+
+
I tak i nie.
+
Nie, nie możesz używać swojego konta Protonmail, Tutanota lub Criptext z Delta Chat; nie oferują one odbierania poczty przez IMAP.
+
W każdym przypadku możesz użyć Delta Chat do wysyłania wiadomości do osób, które używają Protonmail, Tutanota lub Criptext. Te wiadomości nie będą jednak szyfrowane metodą end-to-end. Szyfrowanie typu end-to-end, które oferują ci dostawcy, nie jest kompatybilne z Autocrypt stosowanym standardowo w Delta Chat.
Gdy korzystasz z konta e-mail w Delta Chat, 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.
+
+
Jeśli chcesz zachować konto, ale odinstalować Delta Chat, zaleca się opuszczenie każdego czatu grupowego przed odinstalowaniem Delta Chat.
+
+
+ W jaki sposób finansowany jest rozwój Delta Chat?
+
+
+
+
+
Delta Chat nie otrzymuje żadnego kapitału wysokiego ryzyka, nie jest zadłużony i nie jest pod presją generowania ogromnych zysków lub sprzedawania reklamodawcom użytkowników i ich przyjaciół oraz rodziny (lub gorzej).
+Raczej korzystamy z publicznych źródeł finansowania, jak dotąd pochodzących z UE i USA, aby wspomóc nasze wysiłki w inicjowaniu zdecentralizowanego i zróżnicowanego ekosystemu komunikatora, opartego na rozwoju społeczności Free i Open-Source.
+
+
Konkretnie, rozwój Delta Chat był dotychczas finansowany z tych źródeł:
+
+
+
+
Unijny projekt NEXTLEAP sfinansował badania i wdrożenie zweryfikowanych grup i ustawień protokołów kontaktowych w latach 2017 i 2018, a także pomógł zintegrować szyfrowanie end-to-end poprzez Autocrypt.
+
+
+
Open Technology Fund przyznał nam pierwszy grant w 2018/2019 (~200 000 $), dzięki któremu znacznie ulepszyliśmy aplikację na Androida i wydaliśmy pierwszą wersję beta aplikacji na komputery stacjonarne, a także ugruntował rozwój naszych funkcji w badaniach UX w kontekście praw człowieka, zobacz nasz końcowy raport Needfinding and UX.
+Druga dotacja w 2019/2020 (~300 000 4) pomogła nam wydać wersje Delta/iOS, przekonwertować naszą podstawową bibliotekę na Rust i zapewnić nowe funkcje dla wszystkich platform.
+
+
+
Fundacja NLnet przekazała w latach 2019/2020 kwotę 46 tys. EUR na wykonanie wiązań Rust/Python i uruchomienie ekosystemu Chat-bot.
+
+
+
W 2021 r. otrzymaliśmy kolejne dofinansowanie z UE na dwie propozycje dotyczące Internetu nowej generacji, a mianowicie na EPPD – katalog przenośności dostawcy poczty e-mail ( ~97 tys. EUR) i AEAP – przenoszenie adresu e-mail (~90 tys. EUR), co zaowocowało lepszą obsługą wielu kont, ulepszonymi kontaktami i ustawieniami grup za pomocą kodów QR oraz wieloma ulepszeniami sieciowymi na wszystkich platformach.
+
+
+
Od końca 2021 do marca 2023 otrzymaliśmy dofinansowanie Wolność Internetu (~500 tys. $) z amerykańskiego Biura Demokracji, Praw Człowieka i Pracy (DRL).
+Fundusze te wspierają nasze długofalowe cele, aby uczynić Delta Chat bardziej użytecznym i kompatybilnym z szeroką gamą serwerów e-mail na całym świecie, a także bardziej odpornym i bezpiecznym w miejscach często dotkniętych cenzurą i wyłączeniami Internetu.
+
+
+
Od 2023 roku zostaliśmy zaakceptowani w programie Next Generation Internet (NGI) Entrust dla naszych propozycji „Prywatnych zdecentralizowanych aplikacji”. Dokładna kwota do ustalenia (około 100 tys. EUR). Finansowanie to wspiera dalszy rozwój „aplikacji udostępnianych na czacie” webxdc.
+
+
+
Czasami otrzymujemy jednorazowe darowizny od osób prywatnych. Na przykład w 2021 roku pewna hojna osoba przekazała nam 4K EUR w formie przelewu bankowego tytułem “kontynuujcie dobry rozwój!”. 💜 Takie pieniądze przeznaczamy na finansowanie spotkań rozwojowych lub na doraźne wydatki, których nie da się łatwo przewidzieć lub zrefundować z publicznych dotacji. Otrzymywanie większej ilości darowizn pomaga nam również stać się bardziej niezależnymi i długoterminowo rentownymi jako społeczność współpracowników.
+
+
+
+
+
+
+
Wreszcie, ale zdecydowanie nie najmniej ważne, kilku ekspertów i entuzjastów pro-bono wniosło wkład i przyczyniło się do rozwoju Delta Chat bez otrzymywania pieniędzy lub tylko niewielkich kwot. Bez nich Delta Chat nie byłby tam, gdzie jest dzisiaj, nawet w pobliżu.
+
+
+
Wspomniane powyżej finansowanie pieniężne jest w większości organizowane przez merlinux GmbH we Freiburgu (Niemcy) i jest dystrybuowane do kilkunastu podmiotów na całym świecie.
+
+
Zapoznaj się z kanałami wpłat dla Delta Chat, aby uzyskać informacje o możliwościach wpłat zarówno pieniężnych, jak i innych.
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/help/pt/help.html b/src/main/assets/help/pt/help.html
similarity index 78%
rename from assets/help/pt/help.html
rename to src/main/assets/help/pt/help.html
index f69911dcf..f7d33226b 100644
--- a/assets/help/pt/help.html
+++ b/src/main/assets/help/pt/help.html
@@ -4,17 +4,14 @@
O Delta Chat é um novo aplicativo de bate-papo que envia mensagens por e-mail, criptografadas se possível, com o Autocrypt.
-** Você não precisa se inscrever em nenhum lugar, basta usar sua conta de e-mail existente no Delta Chat. **
+
Delta Chat is a reliable, decentralized and secure messaging app,
+available for mobile and desktop platforms.
+
+
Delta Chat feels like Whatsapp or Telegram but you can also use and regard it as an e-mail app.
+You can signup anonymously to a variety of interoperable chatmail servers
+which are minimal e-mail servers optimized for fast and secure operations.
+Or you may use classic e-mail servers and an existing e-mail account
+in which case Delta Chat acts as an e-mail app.
@@ -117,10 +134,15 @@
-
Com Delta Chat, você pode escrever para todos os emails existentes -
-mesmo que o destinatário não esteja usando o aplicativo do Delta Chat.
-Diferente do que acontece com os outros mensageiros, não é preciso
-que o destinatário instale o mesmo aplicativo que você.
+
To securely setup contact with others scan an invite QR code
+or share an invite link.
+This is required when using a (default) chatmail-based chat profile
+because chatmail servers reject un-encrypted outgoing messages.
+
+
If you create a chat profile with a classic e-mail address
+you may manually create a contact if you know their e-mail address
+and then write a message to them
+even if the recipient is not using Delta Chat.
@@ -131,42 +153,25 @@ que o destinatário instale o mesmo aplicativo que você.
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
-
-
- Quais mensagens aparecem no Delta Chat?
-
-
-
-
-
By default, Delta Chat shows all e-mails.
-
-
At “Settings -> Chats &
-Media -> Show Classic E-Mails”, you can change this. You have these options:
-
-
-
“No, chats only”: Only messages sent by other Delta Chat users and replies to
-your Delta Chat messages are shown. This makes most sense if you use the same
-e-mail account for normal e-mails as well.
-
“All”: Delta Chat shows all e-mails that are sent to your email address. This
-makes sense if you want to use Delta Chat for all your e-mails, so no message
-gets lost. This is the default setting.
-
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
-you already have a chat, but new chats only pop up for Delta Chat messages.
-This helps to decide on a case-by-case basis whether you want to have a
-conversation in Delta Chat or in a “normal” e-mail app.
+
+
Anonymous chat profiles with fast, secure and interoperable chatmail servers
+which offer instant Push Notifications for iOS and Android devices.
+
+
+
Pervasive multi-profile and multi-device support on all platforms.
@@ -208,18 +213,25 @@ receive messages from this person, consider blocking them.
- How can I add or switch between multiple accounts?
+ What are profiles? How can I switch between them?
-
You can easily work with additional accounts on Delta Chat mobile and desktop clients by clicking either:
-
-
on the menu button and then ‘Switch Account’ (Android and desktop)
-
or the profile icon and then ‘Add Account’ (iOS)
-
+
A profile is a name, a picture and some additional information for encrypting messages.
+A profile lives on your device(s) only
+and uses a chatmail or a classic e-mail server to transport messages.
On first installation of Delta Chat a first profile is created.
+
+
Later, you can tap your profile image in the upper left corner to Add Profiles
+or to Switch Profiles.
+
+
You may want to use separate profiles for political, family or work related activities,
+or e. g. for a dedicated “spam-profile” with which you register at websites and platforms
+that tend to cause unsolicited messages (“spam”) sooner or later.
@@ -245,87 +257,26 @@ receive messages from this person, consider blocking them.
-
+
- O Delta Chat suporta emails HTML?
+ Can I set a Signature Text/Status/Motto with Delta Chat?
-
Yes, incoming HTML messages come with a “Show full message” button.
-Outgoing messages always use plain text.
+
Yes,
+you can do so under “Settings > Profile > Signature Text”.
+Your contacts who use Delta Chat will see it
+when they view your contact details.
+To everyone else,
+It will appear as an e-mail signature
+below the text of all your messages.
-
+
- Por que preciso entrar com a senha do meu email no Delta Chat? Isso é seguro?
-
-
-
-
-
Como acontece em qualquer outro programa de comunicação que usa email, como Thunderbird, K9-Mail ou Outlook, sua senha é necessária para poder receber e enviar emails. Obviamente, sua senha fica guardada no seu dispositivo. E ela só é transmitida para o seu provedor de email (no momento que você faz login), que é quem já tem inevitavelmente acesso aos seus emails.
-
-
Se você usa um provedor de email com suporte para OAuth2 como gmail.com ou yandex.ru, não é preciso guardar sua senha no dispositivo. Neste caso, somente um token de acesso é usado.
-
-
Como o Delta Chat é um programa de Código Aberto, você pode revisar seu Código Fonte se você quiser verificar que as suas credenciais estão sendo manuseadas de forma segura. Ficaremos felizes de receber comentários que contribuam para fazer o aplicativo mais seguro para todos os nossos usuários.
-
-
-
-
- Quais permissões o Delta Chat precisa?
-
-
-
-
-
Dependendo do sistema operacional usado, é possível que você precise autorizar algumas permissões. O seguinte é o que o Delta Chat faz com essas permissões:
-
-
-
Câmera (pode ser rejeitada)
-
-
para enviar fotos
-
-
-
Contatos (pode ser rejeitada)
-
-
ler seus contatos: para encontrar pessoas para conversar
-
-
-
Localização (pode ser rejeitada)
-
-
acesso à localização aproximada (das fontes de localização de rede): para usar a funcionalidade de streaming de localização
-
acesso à localização precisa (GPS e fontes de localização de rede): para usar a funcionalidade de streaming de localização
-
-
-
Microfone (pode ser rejeitada)
-
-
gravar áudio: para mensagens de áudio
-
-
-
Armazenamento (pode ser rejeitada)
-
-
modificar ou apagar conteúdo do seu cartão SD: para baixar os anexos das mensagens
-
ler o conteúdo do seu cartão SD: para compartilhar arquivos com seus contatos
-
-
-
Outras capacidades do aplicativo
-
-
mudar as configurações de áudio: para que você possa escolher o som da chamada e o volume das notificações e das mensagens de áudio
-
rodar ao iniciar: para que você não precise ligar o Delta Chat manualmente
-
controlar a vibração: para as notificações
-
ver as conexões de rede: para se conectar ao seu provedor de email
-
evitar que o telefone durma: para que você possa copiar facilmente o código de segurança durante a Mensagem de Configuração do Autocrypt
-
ter acesso total à rede: para se conectar ao seu provedor de email
-
ver as conexões Wi-Fi: para se conectar ao seu provedor de email
-
perguntar sobre ignorar as otimizações de bateria: para usuários que querem receber mensagens a todo momento
-
-
-
-
-
-
-
- What means Pinning, Muting, Archiving?
+ What do Pinning, Muting and Archiving mean?
@@ -380,22 +331,40 @@ have turned off read receipts, they will not see the green dot until you
message them or write to a group they’re in as well.
-
+
- How can I delete my account?
+ How do disappearing messages work?
-
As you use an e-mail account for Delta Chat,
-how you can delete your account depends on your e-mail provider.
-We don’t have any control over your e-mail account,
-so unfortunately we can’t help you with that.
+
You can turn on “disappearing messages”
+in the settings of a chat,
+at the top right of the chat window,
+by selecting a time span
+between 1 minute and 5 weeks.
-
If you want to keep the account,
-but uninstall Delta Chat,
-it is recommended to leave any group chat before uninstalling Delta Chat.
+
Until the setting is turned off again,
+each chat member’s Delta Chat app takes care
+of deleting the messages
+after the selected time span.
+The time span begins
+when the receiver first sees the message in Delta Chat.
+The messages are deleted
+both in each email account on the server,
+and in the app itself.
+
+
Note that you can rely on disappearing messages
+only as long as you trust your chat partners;
+malicious chat partners can take photos,
+or otherwise save, copy or forward messages before deletion.
+
+
Apart from that,
+if one chat partner uninstalls Delta Chat,
+the messages will not get deleted from their email account.
+They will most likely also not be decryptable anymore
+(as long as they were encrypted in the first place).
@@ -526,6 +495,170 @@ this way, all messages will be deleted from your device as soon as they
older than that.
+
+
+
+ What are Push Notifications? How can I get instant message delivery?
+
+
+
+
+
Push Notifications are sent by Apple and Google “Push services” to a user’s device
+so that an inactive Delta Chat app can fetch messages in the background
+and show notifications on a user’s phone if needed.
+
+
Push Notifications work with all chatmail servers on
+
+
+
+
iOS devices, by integrating with Apple Push services.
+
+
+
Android devices, by integrating with the Google FCM Push service,
+including on devices that use microG
+instead of proprietary Google code on the phone.
+
+
+
+
As of May 2024, classic e-mail servers do not support Push Notifications
+for Delta Chat users.
+
+
+
+
+ Are Push Notifications enabled on iOS devices? Is there an alternative?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Are Push notifications enabled / needed on Android devices?
+
+
+
+
+
If a “Push Service” is available, Delta Chat enables Push Notifications
+to achieve instant message delivery for all chatmail users.
+If you are using a classic e-mail provider instead of chatmail servers,
+Push Notifications are not available.
+
+
In the Delta Chat “Notifications” settings for “Instant delivery”
+you can change the following settings effecting all chat profiles:
+
+
+
+
Use Push Service: the default when using chatmail profiles and if
+a Push service is available on the phone.
+If you have both chatmail and classic e-mail profiles,
+then Push Notification will only work
+for incoming messages on chatmail profiles.
+
+
+
Use Background Connection: If you are not using a Push service,
+you may disable “battery optimizations” for Delta Chat,
+allowing it to fetch messages in the background.
+However, there could be delays from minutes to hours.
+Some Android vendors even restrict apps completely
+(see dontkillmyapp.com)
+and Delta Chat might not show incoming messages
+until you manually open the app again.
+
+
+
Force Background Connection: This is the fallback option
+if the previous options are not available or do not achieve “instant delivery”.
+Enabling it causes a permanent notification on your phone
+which may sometimes be “minified” with recent Android phones.
+
+
+
+
Both “Background Connection” options are energy-efficient and
+safe to try if you experience messages arrive only with long delays.
+
+
+
+
+ How private are Delta Chat Push Notifications?
+
+
+
+
+
Delta Chat Push Notification support avoids leakage of private information.
+It does not leak e-mail, IP address or message content (not even encrypted)
+to any system involved in the delivery of Push Notifications.
+
+
Here is how Delta Chat apps perform Push Notification delivery:
+
+
+
+
A Delta Chat app obtains a “device token” locally and stores it
+on the chatmail server.
+
+
+
When a chatmail server receives an e-mail for a Delta Chat user
+it forwards the “device token” to the central Delta Chat notification proxy.
+
+
+
The central Delta Chat notification proxy forwards
+the “device token” to the respective Push service (Apple, Google, etc.),
+without ever knowing the IP or e-mail address of Delta Chat users.
+
+
+
The central Push Service (Apple, Google, etc.)
+wakes up the Delta Chat app on your device
+to check for new messages in the background.
+It does not know about the chatmail or e-mail address of the device it wakes up.
+The central Apple/Google Push services never see an e-mail address (sender or receiver)
+and also never see any message content (also not in encrypted forms).
+
+
+
+
As of May 2024, chatmail servers know about “device tokens”
+but we plan to encrypt this information to the notification proxy
+such that the chatmail server never learns the device token.
+
+
The central Delta Chat notification proxy is small and fully implemented in Rust
+and forgets about device-tokens as soon as Apple/Google/etc processed them,
+usually in a matter of milliseconds.
+
+
Resulting from this overall privacy design, even the seizure of a chatmail server,
+or the full seizure of the central Delta Chat notification proxy
+would not reveal private information that Push services do not already have.
+
+
+
+
+ Why does Delta Chat integrate with centralized proprietary Apple/Google push services?
+
+
+
+
+
Delta Chat is a free and open source decentralized messenger with free server choice,
+but we want users to reliably experience “instant delivery” of messages,
+like they experience from Whatsapp, Signal or Telegram apps,
+without asking questions up-front that are more suited to expert users or developers.
Secure-Join protocols
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
@@ -579,49 +712,32 @@ guarantee end-to-end encrypted messages.
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
+
If you have a second communication channel with your chat partner,
+like a video chat or a different messenger,
+you can generate an invite link.
-
Inviter side:
+
If you are together in person,
+you can show a QR code to your chat partner.
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
+
For Group invitations,
+tap the chat group title to see its member list,
+and select “QR Invite code”.
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
+
For direct 1:1 chat invitations,
+tap the QR Code icon
+on the Delta Chat app main screen.
-
Joiner side:
+
Let your chat partner scan the QR image
+with their Delta Chat app,
+or click “Copy” or “Share” to create an invite link
+and share it with your chat partner.
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
@@ -675,7 +791,7 @@ but there is no green checkmark in the profile title.
This usually means that the contact “sent a message from another device”.
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
+please see Secure-Join protocols
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
@@ -703,7 +819,7 @@ even if the contact is a member there.
Your contact is using Delta Chat on a second device (phone or laptop)
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
+they should remove the profile from the new device
and add it as a second device as described here.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.
@@ -711,8 +827,8 @@ and guaranteed encryption is established with both devices of your contact.
Your contact reinstalled Delta Chat using their old account login
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
+they should remove the profile from the new device
+and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.
@@ -733,7 +849,7 @@ guaranteed end-to-end encryption will be automatically re-established.
Sometimes remaining in contact is more important than end-to-end encryption.
“Transport Layer Encryption” (TLS) may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
+But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.
In any case, you can not do much else than accept the warning.
@@ -899,12 +1015,12 @@ deliver messages to recipient’s devices.
Both for protecting against metadata-collecting e-mail servers
as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
+we recommend to use a chatmail server
+to create pseudonymous temporary profiles through QR-code scans.
+Note that Delta Chat apps on all platforms support multiple profiles
+so you can easily use situation-specific profiles next to your “main” profile
+with the knowledge that all their data, along with all metadata, will be deleted.
+Moreover, if a device is seized then contacts using temporary profiles
can not be identified easily, as compared to messengers which reveal
phone numbers in chat groups which in turn are often associated with legal identities.
@@ -963,7 +1079,7 @@ and their non-Autocrypt e-mail app.
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
+who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
it’s best to setup guaranteed end-to-end encryption with them
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
@@ -981,10 +1097,10 @@ even if the direct chat between you two has a
The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
+
Guaranteed end-to-end encrypted chats protect against MITM attacks
+and turning on disappearing messages deletes the messages
on the server after a user-configured time.
If you don’t need a longer-lived copy of your messages on the server,
@@ -1065,9 +1181,10 @@ Caution: Make sure the key is not protected by a password, or remove the passwor
A causa mais provável é que sua chave está criptografada e/ou usa
uma senha. Tais chaves não são suportadas pelo Delta Chat. Você poderia remover a
-criptografia por senha e a senha e tentar a importação novamente. Se você quiser
-para manter sua senha, você terá que criar um e-mail para uso
-com o Delta Chat de tal forma que a chave do Delta Chat está vinculada a este e-mail.
+criptografia por senha e a senha e tentar a importação novamente.
+
+
Another common error is having the wrong file ending.
+Use the ASCII armored format and an .asc file ending.
The Delta Chat project underwent four independent security audits and one
+independent security analysis, from most recent to older:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
2023 April, we fixed security and privacy issues with the “web
+apps shared in a chat” feature, related to failures of sandboxing
+especially with Chromium. We subsequently got an independent security
+audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
+See here for the full background story on end-to-end security in the web.
+
+
+
2023 March, Cure53 analyzed both the transport encryption of
+Delta Chat’s network connections and a reproducible mail server setup as
+recommended on this site.
+You can read more about the audit on our blog
+or read the full report here.
+
+
+
2020, Include Security analyzed Delta
+Chat’s Rust core,
+IMAP,
+SMTP, and
+TLS libraries.
+It did not find any critical or high-severity issues.
+The report raised a few medium-severity weaknesses -
+they are no threat to Delta Chat users on their own
+because they depend on the environment in which Delta Chat is used.
+For usability and compatibility reasons,
+we can not mitigate all of them
+and decided to provide security recommendations to threatened users.
+You can read the full report here.
+
+
+
2019, Include Security analyzed Delta
+Chat’s PGP and
+RSA libraries.
+It found no critical issues,
+but two high-severity issues that we subsequently fixed.
+It also revealed one medium-severity and some less severe issues,
+but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
+Some of them we nevertheless fixed since the audit was concluded.
+You can read the full report here.
+
+
+
@@ -1098,7 +1276,7 @@ Para outros programas, você deveria achar uma solução online.
-
Sim. Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
+
Sim. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
@@ -1136,10 +1314,19 @@ One device is not needed for the other to work.
Double-check both devices are in the same Wi-Fi or network
+
+
On Windows, go to Control Panel / Network and Internet
+and make sure, Private Network is selected as “Network profile type”
+(after transfer, you can change back to the original value)
+
Your system might have a “personal firewall”,
which is known to cause problems (especially on Windows).
Disable the personal firewall for Delta Chat on both ends and try again
+
+
+
Guest Networks may not allow devices to communicate with each other.
+If possible, use a non-guest network.
Ensure there is enough storage on the destination device
@@ -1151,7 +1338,7 @@ Do not exit Delta Chat.
Delta Chat is already logged in on the destination device?
-You can use multiple accounts per device, just add another account
If you still have problems or if you cannot scan a QR code
@@ -1174,8 +1361,8 @@ try the manual transfer described below
screen unlock PIN, pattern, or password. Then you can click on “Start
Backup”. This saves the backup file to your device. Now you have to transfer
it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
+
On the new device, in the “I already have a profile” menu,
+choose “restore from backup”. After import, your conversations, encryption
keys, and media should be copied to the new device.
If you use iOS: and you encounter difficulties, maybe
@@ -1206,56 +1393,6 @@ ou o AppImage para Linux. Você pode encontrá-los em
get.delta.chat.
-
-
-
- Para que serve o ajuste “Enviar cópia para si mesmo”?
-
-
-
-
-
O envio de uma cópia de suas mensagens para você mesmo garante que você receba suas próprias mensagens
-mensagens em todos os dispositivos. Se você tem vários dispositivos e não activar isso, você
-ver apenas as mensagens de outras pessoas, e as mensagens que você envia do
-dispositivo atual.
-
-
A cópia é enviada para a caixa de entrada e depois movida para a pasta DeltaChat; não é
-colocado na pasta “Enviado”. Delta Chat nunca carrega qualquer coisa para a pasta “Enviados
-porque isso significaria carregar uma mensagem duas vezes (uma vez através do SMTP,
-e uma vez através do IMAP para a pasta Enviada).
-
-
A configuração padrão para copy-to-self é “não”.
-
-
-
-
- Por que eu posso escolher assistir à pasta “Enviado”?
-
-
-
-
-
A única razão pela qual se quer ver a pasta Enviada é se você estiver usando outra
-programa de correio (como Thunderbird) ao lado de seu aplicativo Delta Chat, e quer seu MUA
-para participar numa conversa de chat.
-
-
No entanto, recomendamos o uso do Delta Chat cliente Desktop; você pode baixá-lo
-no get.delta.chat. A opção de observar o “Enviado
-pasta pode ir embora no futuro. Ela foi introduzida num momento em que havia
-nenhum cliente Delta Chat no desktop disponível em todas as plataformas.
-
-
-
-
- Por que eu posso escolher não observar a pasta DeltaChat?
-
-
-
-
-
Algumas pessoas usam o Delta Chat como um cliente regular de e-mail, e querem usar a Caixa de Entrada
-pasta para seus correios, em vez da pasta DeltaChat. Se você desativar o “Observar
-pasta DeltaChat”, você também deve desativar “mover mensagens de conversa para DeltaChat”.
-Caso contrário, apagar mensagens ou configurações de vários dispositivos pode não funcionar corretamente.
-
@@ -1402,11 +1539,8 @@ streamed to your chat partners, between 5 minutes and 6 hours.
the chat.
To see the map and view locations of others, you need to turn on the feature
in the advanced settings.
-
This feature will not share your location with anyone except your chat
-partners. But: to show the map, we need to download map tiles from
-mapbox.com, so if you view the map, mapbox.com is asked for the map of a
-specific area. If this is a privacy risk for you, this feature might not be
-for you. We are working on finding a decentralized alternative for Mapbox.
+
This feature will not share your location with anyone except your chat partners.
+Map tiles are downloaded from OpenStreetMap.
On desktop, the OS typically can’t determine your location. Instead you can
right click on the map and describe a location, which is sent to the chat as
a message, but also appears on the map.
@@ -1457,18 +1591,18 @@ seria feito pelo aplicativo Delta Chat.
In this case, Delta Chat doesn’t need to watch the Inbox, and it’s enough to only watch the DeltaChat folder.
-
+
- How can I change my account to a different e-mail address?
+ How can I use a different e-mail address with my profile?
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
+
Change your address in “Settings → Advanced → Password and Account” and
+enter the password of your new e-mail account (and if necessary, server settings).
You will get an information notice about the fact that you are moving to a new address.
An additional notice will also show up in your “Device messages” chat.
@@ -1499,6 +1633,58 @@ it
.
+
+
+
+ Quais permissões o Delta Chat precisa?
+
+
+
+
+
Dependendo do sistema operacional usado, é possível que você precise autorizar algumas permissões. O seguinte é o que o Delta Chat faz com essas permissões:
+
+
+
Camera (can be disallowed)
+
+
take pictures and videos: for sending Photos
+
+
+
Contacts (can be disallowed)
+
+
read your contacts: to discover contacts to chat with
+
+
+
Location (can be disallowed)
+
+
access approximate location (network location sources): for the location streaming feature
+
access precise location (GPS and network location sources): for the location streaming feature
+
+
+
Microphone (can be disallowed)
+
+
record audio: for audio messages
+
+
+
Storage (can be disallowed)
+
+
modify or delete the contents of your SD card: to download message attachments
+
read the contents of your SD card: to share files with your contacts
+
+
+
Other app capabilities
+
+
change your audio settings: so you can choose ring tones and volume for notifications and audio messages
+
run at startup: so you don’t have to start Delta Chat manually
+
control vibration: for notifications
+
view network connections: to connect to your E-Mail provider
+
prevent phone from sleeping: so you can easier copy the security code during the Autocrypt Setup Message
+
have full network access: to connect to your E-Mail provider
+
view Wi-Fi connections: to connect to your E-Mail provider
+
ask to ignore battery optimisations: for achieving “instant message delivery”
- Se o Delta Chat usa o E-Mail, ela é realmente um Instant Messenger?
+ Por que preciso entrar com a senha do meu email no Delta Chat? Isso é seguro?
+
Como acontece em qualquer outro programa de comunicação que usa email, como Thunderbird, K9-Mail ou Outlook, sua senha é necessária para poder receber e enviar emails. Obviamente, sua senha fica guardada no seu dispositivo. E ela só é transmitida para o seu provedor de email (no momento que você faz login), que é quem já tem inevitavelmente acesso aos seus emails.
+
+
Se você usa um provedor de email com suporte para OAuth2 como gmail.com ou yandex.ru, não é preciso guardar sua senha no dispositivo. Neste caso, somente um token de acesso é usado.
+
+
Como o Delta Chat é um programa de Código Aberto, você pode revisar seu Código Fonte se você quiser verificar que as suas credenciais estão sendo manuseadas de forma segura. Ficaremos felizes de receber comentários que contribuam para fazer o aplicativo mais seguro para todos os nossos usuários.
+
+
+
+
+ Quais mensagens aparecem no Delta Chat?
+
+
+
+
+
By default, Delta Chat shows all e-mails.
+
+
At “Settings → Advanced → Show Classic E-Mails”,
+you can change this. You have these options:
+
-
Sending and receiving messages takes a few seconds, typically. Sometimes
-there are cases where it takes longer but that is arguably true as well for
-any other messenger.
-
Instant chatting works fast if both parties are actively using the app. It’s
-sometimes slower if the app is running in the background.
-
Receiving messages then can take minutes because both Android and iOS often
-stop Delta Chat from running in the background, and only wake it up
-occasionally. This artificial delay is usually worse on iOS than on Android.
-
However, Android and iOS kill apps running in the background is a
-problem for many legitimate apps. For more information, see
-dontkillmyapp.com.
+
“No, chats only”: Only messages sent by other Delta Chat users and replies to
+your Delta Chat messages are shown. This makes most sense if you use the same
+e-mail account for normal e-mails as well.
+
“All”: Delta Chat shows all e-mails that are sent to your email address. This
+makes sense if you want to use Delta Chat for all your e-mails, so no message
+gets lost. This is the default setting.
+
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
+you already have a chat, but new chats only pop up for Delta Chat messages.
+This helps to decide on a case-by-case basis whether you want to have a
+conversation in Delta Chat or in a “normal” e-mail app.
+
+
+
+ O Delta Chat suporta emails HTML?
+
+
+
+
+
Yes, incoming HTML messages come with a “Show full message” button.
+Outgoing messages always use plain text.
+
+
+
+
+ Can I set the E-Mail Subject with Delta Chat?
+
+
+
+
+
Delta Chat sets (and encrypts!) the classic e-mail subject
+automatically to the group name or to the sender name.
+
+
So if you want to set the subject yourself,
+for example for a formal e-mail to a business contact,
+you can create a group
+with only yourself and the recipient(s).
+Set the Chat Title to the Subject you want,
+and then send your e-mail as the first message.
+If the recipients don’t use Delta Chat,
+it will look like a normal,
+formal e-mail to them.
+You will get bonus professionalism points
+if you set a signature text.
+
+
+
+
+ Para que serve o ajuste “Enviar cópia para si mesmo”?
+
+
+
+
+
O envio de uma cópia de suas mensagens para você mesmo garante que você receba suas próprias mensagens
+mensagens em todos os dispositivos. Se você tem vários dispositivos e não activar isso, você
+ver apenas as mensagens de outras pessoas, e as mensagens que você envia do
+dispositivo atual.
+
+
A cópia é enviada para a caixa de entrada e depois movida para a pasta DeltaChat; não é
+colocado na pasta “Enviado”. Delta Chat nunca carrega qualquer coisa para a pasta “Enviados
+porque isso significaria carregar uma mensagem duas vezes (uma vez através do SMTP,
+e uma vez através do IMAP para a pasta Enviada).
+
+
The default setting for “Send Copy to Self” is “on”.
+
+
+
+
+ Por que eu posso escolher assistir à pasta “Enviado”?
+
+
+
+
+
A única razão pela qual se quer ver a pasta Enviada é se você estiver usando outra
+programa de correio (como Thunderbird) ao lado de seu aplicativo Delta Chat, e quer seu MUA
+para participar numa conversa de chat.
+
+
No entanto, recomendamos o uso do Delta Chat cliente Desktop; você pode baixá-lo
+no get.delta.chat. A opção de observar o “Enviado
+pasta pode ir embora no futuro. Ela foi introduzida num momento em que havia
+nenhum cliente Delta Chat no desktop disponível em todas as plataformas.
+
+
+
+
+ Por que eu posso escolher não observar a pasta DeltaChat?
+
+
+
+
+
Algumas pessoas usam o Delta Chat como um cliente regular de e-mail, e querem usar a Caixa de Entrada
+pasta para seus correios, em vez da pasta DeltaChat. Se você desativar o “Observar
+pasta DeltaChat”, você também deve desativar “mover mensagens de conversa para DeltaChat”.
+Caso contrário, apagar mensagens ou configurações de vários dispositivos pode não funcionar corretamente.
As you use an e-mail account for Delta Chat,
+how you can delete your account depends on your e-mail provider.
+We don’t have any control over your e-mail account,
+so unfortunately we can’t help you with that.
+
+
If you want to keep the account,
+but uninstall Delta Chat,
+it is recommended to leave any group chat before uninstalling Delta Chat.
-
-
- Was Delta Chat independently audited for security vulnerabilities?
-
-
-
-
-
The Delta Chat project underwent four independent security audits in the last years:
-
-
-
-
In 2019, Include Security analyzed Delta
-Chat’s PGP and
-RSA libraries.
-It found no critical issues,
-but two high-severity issues that we subsequently fixed.
-It also revealed one medium-severity and some less severe issues,
-but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
-Some of them we nevertheless fixed since the audit was concluded.
-You can read the full report here.
-
-
-
In 2020, Include Security analyzed Delta
-Chat’s Rust core,
-IMAP,
-SMTP, and
-TLS libraries.
-It did not find any critical or high-severity issues.
-The report raised a few medium-severity weaknesses -
-they are no threat to Delta Chat users on their own
-because they depend on the environment in which Delta Chat is used.
-For usability and compatibility reasons,
-we can not mitigate all of them
-and decided to provide security recommendations to threatened users.
-You can read the full report here.
-
-
-
Beginning 2023, Cure53 analyzed both the transport encryption of
-Delta Chat’s network connections and a reproducible mail server setup as
-recommended on this site.
-You can read more about the audit on our blog
-or read the full report here.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
@@ -1676,7 +1928,7 @@ completing Rust/Python bindings and instigating a Chat-bot eco-system.
In 2021 we received further EU funding for two Next-Generation-Internet
-proposals, namely for EPPD - e-mail provider portability directory (~97K EUR) and AEAP - email address porting (~90K EUR) which resulted in better multi-account support, improved QR-code contact and group setups and many networking improvements on all platforms.
From End 2021 till March 2023 we received Internet Freedom funding (500K USD) from the
diff --git a/assets/help/qr-icon.png b/src/main/assets/help/qr-icon.png
similarity index 100%
rename from assets/help/qr-icon.png
rename to src/main/assets/help/qr-icon.png
diff --git a/src/main/assets/help/ru/help.html b/src/main/assets/help/ru/help.html
new file mode 100644
index 000000000..1f8812bb1
--- /dev/null
+++ b/src/main/assets/help/ru/help.html
@@ -0,0 +1,1956 @@
+
+
Delta Chat — надежное, децентрализованное и безопасное приложение для обмена сообщениями.
+доступен для мобильных и ПК.
+
+
Delta Chat похож на WhatsApp или Telegram, но вы также можете использовать его как приложение электронной почты.
+Вы можете анонимно зарегистрироваться на различных совместимых с chatmail серверах
+которые представляют собой минимальные серверы эл. почты, оптимизированные для быстрых и безопасных операций.
+Или вы можете использовать классические почтовые серверы и существующую учетную запись электронной почты.
+в этом случае Delta Chat действует как приложение электронной почты.
Если вы создаете профиль чата с классическим адресом эл.почты
+вы можете вручную создать контакт, если знаете его адрес эл.почты
+а потом напиши им сообщение
+даже если получатель не использует Delta Chat.
+
+
+
+
+ Каковы преимущества Delta Chat по сравнению с другими мессенджерами?
+
+
+
+
+
+
+
Анонимные профили чата с быстрыми, безопасными и совместимыми серверами чата
+которые предлагают мгновенные push-уведомления для устройств iOS и Android.
+
+
+
Повсеместная многопрофильность и поддержка нескольких устройств на всех платформах.
+
+
+ Что если я ожидаю сообщение от кого-то кому я ранее не писал?
+
+
+
+
+
+
Если сообщение приходит от неизвестного контакта, оно отображается как запрос. Вам
+необходимо принять запрос, чтобы ответить.
+
Вы также можете “удалить” его, если не хотите общаться с ним в данный момент. Это
+не удаляет сообщение на сервере, а только на вашем устройстве. Таким образом, вы можете
+по-прежнему работать с сообщением в другом почтовом приложении.
+
Если вы удалите запрос, будущие сообщения от этого контакта по-прежнему будут отображаться
+как запрос сообщения, так что вы можете передумать. Если вы действительно не хотите
+получать сообщения от этого человека, подумайте о том, чтобы заблокировать его.
+
+
+
+
+
+ Поддерживает ли Delta Chat вложения фото, видео или другие?
+
+
+
+
+
+
+
Да. Помимо обычного текста, все вложения электронной почты отображаются в виде отдельных сообщений. В исходящие сообщения вложения встраиваются по мере необходимости автоматически.
+
+
+
Для лучшей производительности изображения по умолчанию оптимизируются и отправляются в меньшем размере, но вы можете отправить его в виде “файла”, чтобы сохранить оригинал.
+
+
+
+
+
+
+ Что такое профили? Как я могу переключатся между ними?
+
+
+
+
+
Профиль это имя, изображения и некоторая другая информация для шифрования сообщений.
+Профиль живёт только на вашем устройстве(ах)
+и пользователи chatmail и серверы классической почты передают сообщения.
+
+
При первой установке Delta Chat создаётся первый профиль.
+
+
Позже вы можете нажать на изображение своего профиля в левом верхнем углу, чтобы Добавить Профили
+или Переключить Профили.
+
+
Возможно, вы захотите использовать отдельные профили для политической, семейной или профессиональной деятельности
+или например, для специального “спам-профиля”, с помощью которого вы регистрируетесь на веб-сайтах и платформах
+которые рано или поздно приводят к появлению нежелательных сообщений (“спама”).
Вы можете добавить изображение профиля в настройках. Если вы пишете своим
+ контактам или добавляете их с помощью QR-кода, они автоматически видят его как
+ изображение вашего профиля.
+
+
+
Контакты, которые не используют Delta Chat не видят ваше изображение профиля
+(однако, конечно, они могут установить Delta Chat :)
+
+
+
Из соображений конфиденциальности никто не увидит ваше изображение
+ в профиле, пока вы не напишете им сообщение.
+
+
+
Изображение вашего профиля отправляется не с каждым сообщением, но достаточно
+регулярно, чтобы ваши контакты снова его получили, даже если они добавят
+ новое устройство.
+
+
+
+
+
+
+ Могу ли я установить текст подписи/статус/девиз в Delta Chat?
+
+
+
+
+
Да,
+вы можете сделать это в разделе “Настройки > Профиль > Текст подписи”.
+Ваши собеседники, использующие Delta Chat, увидят его
+когда будут просматривать ваши контактные данные.
+Для всех остальных,
+Он будет отображаться в виде подписи
+под текстом всех ваших сообщений.
+
+
+
+
+ Что означают Прикрепить, Заглушить и Архивировать?
+
+
+
+
+
Используйте эти инструменты чтобы организовать ваши чаты:
+
+
+
+
Закрепленные чаты всегда находятся наверху списка чатов. Вы можете использовать их чтобы быстро получать доступ к вашим любимым чатам или чтобы не забыть о важных вещах.
+
+
+
Заглушить чаты, если не хотите получать звуки и уведомления от них. Заглушённые чаты остаются на месте, и вы также можете закрепить заглушённый чат.
+
+
+
Архивировать чаты, если не хотите больше видеть их в списке чатов.
+Заархивированные чаты остаются доступными в списке чатов или через поиск.
+
+
+
Когда в архивированный чат приходит новое сообщение, если он не отключен, он выходит из архива и возвращается в ваш список чатов.
+Заглушённые чаты остаются в архиве до тех пор, пока вы не разархивируете их вручную.
+
+
+
+
Чтобы заархивировать или закрепить чат, нажмите на него долгим нажатием (Android), воспользуйтесь меню чата (Android/Desktop) или проведите пальцем влево (iOS);
+чтобы заглушить чат, воспользуйтесь меню чата (Android/Desktop) или профиль чата (iOS).
+
+
+
+
+ Что означает зеленая точка?
+
+
+
+
+
+
Начиная с версии Delta Chat 1.34 вы можете иногда видеть “зеленую точку” рядом с аватаром
+контакта. Это означает, что они были “недавно замечены”.
+
Подробнее: это значит, что за последние 10 минут Delta Chat видел их:
+
+
либо потому, что они написали вам прямое сообщение,
+
потому что они написали что-то в группу, в которой вы обое состоите,
+
потому что они отправили вам подтверждения о прочтении сообщения, которое вы написали,
+
или потому, что они отправили данные в ваше приложение Delta Chat, используя
+webxdc app.
+
+
+
Таким образом, это не онлайн-статус в реальном времени - и если кто-то не отвечает
+сразу, даже если кажется, что он в сети, не волнуйтесь и дайте ему немного
+пространства ;-)
+
С другой стороны, другие не всегда будут “видеть, что вы в сети”. Если вы
+отключены подтверждения о прочтении, они не увидят зеленую точку, пока вы не
+пока вы не напишете им сообщение или не напишете в группу, в которой они тоже находятся.
+
+
+
+
+
+ Как работают исчезающие сообщения?
+
+
+
+
+
Вы можете включить “исчезающие сообщения”
+в настройках чата,
+в правом верхнем углу окна чата,
+выбрав временной интервал
+от 1 минуты до 5 недель.
+
+
Пока настройка не будет снова отключена,
+приложение Delta Chat каждого участника чата позаботится
+об удалении сообщений
+по истечении выбранного периода времени.
+Отсчет времени начинается
+когда получатель впервые видит сообщение в Delta Chat.
+Сообщения удаляются
+как в каждой учетной записи электронной почты на сервере,
+и в самом приложении.
+
+
Обратите внимание, что на исчезающие сообщения можно полагаться
+только до тех пор, пока вы доверяете своим собеседникам;
+злонамеренные собеседники могут делать фотографии,
+или иным образом сохранить, скопировать или переслать сообщения перед удалением.
+
+
Кроме того,
+если один из партнеров по чату удалит Delta Chat,
+сообщения не будут удалены из его почтового ящика.
+Скорее всего, их также нельзя будет расшифровать.
+(при условии, что они были зашифрованы изначально).
+
+
+
+
+ Группы
+
+
+
+
+
+
+
+ Создание группы
+
+
+
+
+
+
Выберите Новый чат, а затем Новая группа из меню в правом верхнем углу или нажмите соответствующую кнопку на Android/iOS.
+
На следующем экране выберите участников и придумайте название группы. Вы также можете выбрать изображение группы.
+
Как только вы напишете первое сообщение в группе, все участники будут проинформированы о новой группе и смогут ответить (до тех пор, пока вы не напишете сообщение в группе, группа будет невидима для участников).
+
+
+
+
+
+ Добавление участников в группу
+
+
+
+
+
+
Каждый участник группы имеет те же права, что и любой другой. По этой причине каждый может удалить любого участника или добавить нового.
+
Чтобы добавить или удалить участников, нажмите на название группы в чате.
+
+
+
+
+
+ Я случайно себя удалил.
+
+
+
+
+
+
Поскольку вы больше не являетесь членом группы, вы не можете добавлять себя снова.
+Тем не менее, проблемы нет, просто попросите любого другого члена группы в обычном чате повторно добавить вас.
+
+
+
+
+
+ Я больше не хочу получать сообщения группы.
+
+
+
+
+
+
+
Либо удалите себя из списка участников, либо удалите весь чат.
+Если позже вы снова захотите присоединиться к группе, попросите другого члена группы добавить вас.
+
+
+
Или, в качестве альтернативы, вы также можете отключить уведомления для группы - это означает, что вы будете получать все сообщения и сможете их писать, но больше не будете получать уведомления о новых сообщениях.
+
+
+
+
+
+
+ Что означают галочки рядом с исходящими сообщениями?
+
+
+
+
+
+
Одна галочка означает, что сообщение было успешно отправлено вашему провайдеру.
+
Две галочки означают, что хотя бы одно устройство получателя
+сообщило о получении сообщения.
+
Получатели могут отключить функцию чтения сообщений,
+поэтому даже если вы видите только одну галочку, сообщение может быть прочитано.
+
И наоборот, две галочки не означают,
+ что человек прочитал или понял сообщение ;)
+
+
+
+
+
+ Что произойдет, если я включу функцию “Удалять старые сообщения с сервера”?
+
+
+
+
+
+
+
По умолчанию Delta Chat хранит все сообщения локально на вашем устройстве.
+Если вы, например, хотите сэкономить место у своего почтового провайдера,
+вы можете настроить Delta Chat
+автоматически удалять старые, уже полученные сообщения на сервере.
+Они по-прежнему остаются на вашем устройстве, пока вы не удалите их там же.
+
+
+
Чтобы включить эту функцию, перейдите в раздел Удаление старых сообщений → Удаление сообщений с сервера
+в настройках “Чаты и медиа”.
+Вы можете установить срок между “Сразу” и “Через 1 год”.
+По истечении этого срока все сообщения, полученные Delta Chat, будут удалены с сервера.
+
+
+
Обратите внимание, что если вы используете Delta Chat на нескольких устройствах,
+необходимо оставлять сообщения на сервере с достаточным временным интервалом
+чтобы другое устройство(а) тоже смогло их загрузить.
+
+
+
+
+
+
+ Что произойдет, если я включу функцию “Удалять старые сообщения с устройства”?
+
+
+
+
+
+
Если вы хотите сэкономить место на устройстве,
+можно выбрать функцию автоматического удаления старых сообщений.
+
Чтобы включить эту функцию, перейдите к пункту “Удалять старые сообщения с устройства” в настройках “Чаты и медиа”.
+ Вы можете установить временной интервал от “через час” до “через год”;
+таким образом, все сообщения будут удаляться с устройства,
+как только они станут старше этого срока.
+
+
+ Что такое Push-уведомления? Как я могу получить мгновенную доставку сообщений?
+
+
+
+
+
Push-уведомления отправляются “Push-сервисами” Apple и Google на устройство пользователя чтобы неактивное приложение Delta Chat могло получать сообщения в фоновом режиме
+и при необходимости показывать уведомления на телефоне пользователя.
+
+
Push-уведомления работают со всеми chatmail серверами на
+
+
+
+
iOS устройствах, путем интеграции с сервисами Apple Push.
+
+
+
Android устройствах, путем интеграции с сервисом Google FCM Push,
+в том числе на устройствах, использующих microG
+вместо проприетарного кода Google на телефоне.
+
+
+
+
По состоянию на май 2024 г. классические почтовые серверы не поддерживают push-уведомления.
+для пользователей Delta Chat.
+
+
+
+
+ Включены ли Push-уведомления на устройствах iOS? Есть ли альтернатива?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Включены / нужны ли Push-уведомления на устройствах Android?
+
+
+
+
+
Если доступна “Push-служба”, Delta Chat включает Push-уведомления.
+обеспечивая мгновенную доставку сообщений всем пользователям чата.
+Если вы используете классический поставщик электронной почты вместо сервера chatmail,
+Push-уведомления недоступны.
+
+
В Delta Chat “Уведомления” опцию “Мгновенной доставки”
+вы можете изменить в следующих настройках, влияющие на все профили чата:
+
+
+
+
Использовать службу Push: значение по умолчанию при использовании профилей chatmail и если
+на телефоне доступна служба Push.
+Если у вас есть как chatmail, так и классический профиль электронной почты,
+тогда Push-уведомление будет работать только
+для входящих сообщений в профилях chatmail.
+
+
+
Использовать Фоновое Соединение: если вы не используете службу Push,
+вы можете отключить “оптимизацию заряда батареи” для Delta Chat,
+позволяя ему получать сообщения в фоновом режиме.
+Однако могут быть задержки от минут до часов.
+Некоторые производители Android даже полностью ограничивают приложения
+ (смотрите dontkillmyapp.com)
+и Delta Chat может не отображать входящие сообщения.
+пока вы снова не откроете приложение вручную.
+
+
+
Принудительное фоновое подключение: это запасной вариант
+если предыдущие варианты недоступны или не удается добиться “мгновенной доставки”.
+Включение этого параметра приводит к постоянному уведомлению на вашем телефоне
+который иногда может быть “минимизирован” на последних телефонах Android.
+
+
+
+
Оба варианта “Фонового подключения” являются энергоэффективными и
+безопасно попробовать, если вы заметили, что сообщения приходят только с большой задержкой.
Поддержка Push-уведомлений Delta Chat позволяет избежать утечки личной информации.
+Они не передают эл. почту, IP-адрес или содержимое сообщения (даже не зашифрованное)
+в любую систему, участвующую в доставке Push-уведомлений.
+
+
Вот как приложения Delta Chat выполняют доставку Push-уведомлений:
+
+
+
+
Приложение Delta Chat локально получает “токен устройства” и сохраняет его
+на сервере chatmail server.
+
+
+
Когда chatmail сервер получает эл. почту для пользователя Delta Chat
+ он пересылает «токен устройства» центральному прокси-серверу уведомлений Delta Chat.
+
+
+
Центральный прокси-сервер уведомлений Delta Chat пересылает
+“токен устройства” для соответствующей службы Push (Apple, Google и т. д.),
+даже не зная IP-адреса или адреса эл.почты пользователей Delta Chat.
+
+
+
Центральный Push-сервис (Apple, Google и т. д.)
+пробуждает приложение Delta Chat на вашем устройстве
+для проверки новых сообщений в фоновом режиме.
+Он не знает о chatmail или адреса эл.почты устройства, на котором просыпается.
+Центральные службы Apple/Google Push никогда не видят адрес эл.почты (отправителя или получателя).
+а также никогда не видят содержимого сообщения (даже в незашифрованном виде).
+
+
+
+
По состоянию на май 2024 года chatmail серверы знают о «токенах устройств»
+но мы планируем зашифровать эту информацию для прокси-сервера уведомлений
+так что сервер chatmail никогда не узнает токен устройства.
+
+
Центральный прокси-сервер уведомлений Delta Chat небольшой и полностью реализован на Rust
+и забывает о токенах устройств, как только Apple/Google/и т. д. их обработает,
+обычно в течение миллисекунд.
+
+
В результате такого общего подхода к обеспечению конфиденциальности даже захват почтового сервера chatmail,
+или полный захват центрального прокси-сервера уведомлений Delta Chat
+не раскроет личную информацию, которой нет в службах Push.
+
+
+
+
+ Почему Delta Chat интегрируется с централизованными проприетарными Push-сервисами Apple/Google?
+
+
+
+
+
Delta Chat бесплатный децентрализованный мессенджер с открытым исходным кодом и с свободным выбором сервера,
+но мы хотим, чтобы пользователи гарантированно получали “мгновенную доставку” сообщений,
+такую же, что и в приложениях WhatsApp, Signal или Telegram,
+не задавая вопросов, которые больше подходят опытным пользователям или разработчикам.
+
+
+ Какие стандарты используются для сквозного шифрования?
+
+
+
+
+
Autocrypt используется для автоматической
+установки сквозного шифрования при работе с контактами и групповыми чатами.
+Autocrypt использует ограниченное и подмножество стандарта OpenPGP.
+Зашифрованные сообщения помечаются замком
+.
+
+
Secure-Join protocols
+используются для создания чатов с гарантированным сквозным шифрованием.
+что защищает от сетевых атак и взлома серверов.
+Чаты, отмеченные зелёной галочкой
+
+гарантируют сквозное шифрование сообщений.
+
+
+
+
+ Как узнать зашифрованы ли сообщения сквозным шифрованием?
+
+
+
+
+
Все сквозные зашифрованные сообщения отображаются с замком:
+
+
+
+
Сквозное шифрование гарантировано, если рядом с заголовком чата стоит зелёная галочка:
+
+
+
+
+
+
+ Как получить гарантированное сквозное шифрование и зелёные галочки?
+
+
+
+
+
Если у вас есть второй канал связи с вашим собеседником,
+например видеочат или другой мессенджер,
+вы можете создать ссылку для приглашения.
+
+
Если вы встретились лично с собеседником,
+вы можете показать ему свой QR-код.
+
+
+
+
Для Групповых Приглашений:
+коснитесь названия чат группы, чтобы просмотреть список её участников,
+и выберите “QR-код приглашения”.
Позвольте вашему чат собеседнику отсканировать QR-изображение
+с помощью его приложения Delta Chat,
+или нажмите “Копировать” или “Поделиться”, чтобы создать ссылку для приглашения.
+и поделитесь с ним.
Если оба устройства находятся в сети,
+обе стороны в конечном итоге увидят (групповой или прямой) чат с зелёной галочкой
+
+рядом с названием.
+
+
+
Если одно из устройств находится в автономном режиме, зелёные галочки появятся позже только
+когда устройство снова будет подключено к Интернету
+и сетевой протокол Secure-Join будет завершён.
+
+
+
+
Поздравляем!
+Теперь вы будете автоматически использовать гарантированное сквозное шифрование
+с этим контактом и вы оба сможете добавлять друг друга в группы, отмеченные зелёной галочкой
+,
+тем самым автоматически распространяя гарантированное сквозное шифрование среди её членов.
+
+
+
+
+ Что означает зелёная галочка и “гарантированное сквозное шифрование”?
+
+
+
+
+
Чаты помеченные зелёными галочками
+
+означают, что все сообщения в чате будут зашифрованы сквозным шифрованием
+и не могут быть прочитаны или изменены если серверы эл.почты или интернет-провайдер скомпрометированы.
+Присоединение к групповым чатам с зелёными галочками
+безопасно распространяет информацию о шифровании (и зелёные галочки)
+таким образом, чтобы гарантировать сквозное шифрование в группе и между её участниками.
+
+
Профили контактов с зелёными галочками
+
+означают, что обмен сообщениями с контактом в настоящее время гарантированно зашифрован.
+Каждый контакт с зелёной галочкой либо совершил с вами прямое QR-сканирование
+либо был представлен другим контактом с зеленой галочкой.
+Знакомство происходит автоматически при добавлении участников в группы.
+Тот, кто добавляет контакт в группу, отмеченную зелёной галочкой, становится представителем
+для тех участников, которые еще не знают о добавленном контакте.
+В профиле контакта можно несколько раз нажать на текст “Представлен …”
+пока не дойдете до того, с кем вы непосредственно провели QR-сканирование.
+
+
Обратите внимание, что в профиле контакта вы можете увидеть и присоеденённых знакомых
+но в заголовке профиля нет зелёной галочки.
+Обычно это означает, что контакт “отправил сообщение с другого устройства”.
+
+
Для более подробного обсуждения “гарантированного сквозного шифрования”
+пожалуйста, смотрите Secure-Join protocols
+и в частности, читайте о “Проверенных Группах”, техническом термине,
+означающем что здесь называется “чатами с зелёными галочками” или “чатами с гарантированным сквозным шифрованием”.
+
+
+
+
+ Контакт “отправил сообщение с другого устройства”, что делать?
+
+
+
+
+
Ваш чат с контактом утратил гарантированное сквозное шифрование.
+Зеленая галочка была удалёна для этого чата и контакта и когда вы увидели предупреждение.
+Если вы обнаружили внезапное прекращение гарантированного сквозного шифрования
+необычного для этого контакта, не принимайте предупреждение!
+Вместо этого свяжитесь со своим контактом по второму каналу
+например видеозвонок, другой мессенджер или телефонный звонок,
+чтобы узнать, что произошло.
+
+
Если ваш контакт действительно привел к снижению уровня гарантированного сквозного шифрования
+пожалуйста, ознакомьтесь с распространёнными причинами и способами их устранения в следующих параграфах.
+Независимо от этого, все остальные чаты, отмеченные зелёной галочкой, остаются гарантированно зашифрованными
+даже если контакт является его участником.
+
+
Ваш контакт использует Delta Chat на втором устройстве (телефоне или ноутбуке)
+
+
Если у них есть другое устройство с запущенным приложением Delta Chat,
+им следует удалить учётную запись с нового устройства
+и добавить как второе устройство, как описано здесь.
+Как только они сообщат вам об этом, предупреждение исчезнет
+и гарантированное шифрование будет установлено на обоих устройствах вашего собеседника.
+
+
Ваш контакт переустановил Delta Chat, используя старый логин учетной записи
+
+
Если у них есть файл резервной копии,
+им следует удалить профиль с нового устройства
+и вместо этого импортировать файл резервной копии, чтобы воссоздать свой профиль.
+Как только они отправят вам сообщение, предупреждение исчезнет
+и для этого контакта восстанавливается гарантированное шифрование.
+
+
Если у них нет файла резервной копии, лучше всего выполнить QR-сканирование
+со своим партнёром по чату, чтобы восстановить гарантированное сквозное шифрование.
+
+
Ваш контакт отправил письмо через интерфейс веб-почты или другое приложение эл.почты
+и снова вернулся к использованию Delta Chat.
+
+
Если вы уверены, что контакт иногда пользуется веб-почтой,
+или другим почтовым приложением , в котором отсутствует сквозное шифрование,
+тогда вы можете принять предупреждение.
+Как только ваш контакт снова воспользуется Delta Chat,
+гарантированное сквозное шифрование будет автоматически восстановлено.
+
+
Ваш контакт полностью прекратил использование Delta Chat
+
+
Иногда оставаться на связи важнее, чем сквозное шифрование.
+“Протокол защиты транспортного уровня” (TLS) все еще может существенно защитить
+конфиденциальность ваших сообщений между вашим устройством и сервером электронной почты.
+Но без сквозного шифрования вы и ваш контакт доверяете своему почтовому серверу,
+не читать и не манипулировать вашими сообщениями, а также не передавать их третьим лицам.
+
+
В любом случае, вы ничего не можете сделать, кроме как принять предупреждение.
+Также удалите контакт из любой активной группы, отмеченной зелёной галочкой
+который вы можете найти в разделе “Общие чаты” в профиле Контакта.
+Это избавит ваш контакт от получения “не читаемых” сообщений.
+
+
Если контакт удалил Delta Chat из-за ошибок или нежелательного поведения,
+пожалуйста, рассмотрите возможность публикации на нашем форуме поддержки
+чтобы помочь нам выявить и решить общие проблемы. Спасибо!
+
+
+
+
+ Зашифрованы ли вложения (изображения, файлы, аудио и т. д.) сквозным шифрованием?
+
+
+
+
+
Да.
+
+
Когда мы говорим о “сквозном зашифрованном сообщении”
+мы всегда имеем в виду, что всё сообщение зашифровано,
+включая все вложения
+и метаданные вложений, такие как имена файлов.
+
+
+
+
+ OpenPGP безопасен?
+
+
+
+
+
Да, Delta Chat использует безопасное подмножество OpenPGP
+и отображает только замок, как индикатор безопасности в сообщении
+если всё сообщение правильно зашифровано и подписано.
+Например, “Отдельные подписи” не считаются безопасными.
+
+
OpenPGP сам по себе не является небезопасным.
+Наиболее публично обсуждаемые проблемы безопасности OpenPGP
+на самом деле возникают из-за плохого удобства использования или плохой реализации инструментов или приложений (или того и другого).
+Особенно важно различать OpenPGP, стандарт шифрования IETF,
+и GnuPG (GPG), инструмент командной строки, реализующий OpenPGP.
+Многие публичные критики OpenPGP на самом деле обсуждают GnuPG, который Delta Chat никогда не использовал.
+Delta Chat скорее использует реализацию OpenPGP Rust rPGP,
+доступен как независимый пакет “pgp”,
+и проверен на безопасность в 2019 году.
+
+
Вместе с другими разработчиками OpenPGP мы стремимся,
+улучшить характеристики в дальнейшем, за счёт безопасности
+нового IETF OpenPGP Crypto-RefreshP
+который, к счастью, был принят летом 2023 года.
+
+
+
+
+ Рассматривали ли вы возможность использования альтернатив OpenPGP для сквозного шифрования?
+
+
+
+
+
Да, мы следим за такими усилиями, как MLS
+или Saltpack
+но их принятие означало бы нарушение совместимости сквозного шифрования.
+со всеми другими приложениями эл.почты, которые обычно поддерживают шифрование OpenPGP.
+Так что это было бы непростое решение
+и для пользователей должны быть представлены действительно ощутимые улучшения.
+
+
Delta Chat использует целостный подход “полезной безопасности”
+и работает с широким кругом групп активистов, а также
+известных исследователей, таких как TeamUSEC
+для улучшения реальных результатов пользователей в борьбе с угрозами безопасности.
+Проводной протокол и стандарт для установления сквозного шифрования:
+только одна часть “результатов пользователя”,
+см. также наши ответы на захват устройства
+и метаданные сообщения questions.
+
+
+
+
+ Уязвим ли Delta Chat для EFAIL?
+
+
+
+
+
Нет, Delta Chat никогда не был уязвим для EFAIL
+потому что его реализация OpenPGP rPGP
+использует код обнаружения модификации при шифровании сообщений
+и возвращает ошибку
+если Код Обнаружения Модификации неверен.
+
+
Delta Chat также никогда не был уязвим для “Direct Exfiltration” EFAIL атак
+потому что он расшифровывает только многочастные/зашифрованные сообщения
+которые содержат ровно одну зашифрованную и подписанную часть,
+как определено спецификацией Autocrypt Level 1.
+
+
+
+
+ Выдается ли сообщение в открытом виде, если сквозное шифрование недоступно?
+
+
+
+
+
Даже если не гарантируется сквозное шифрование ваших сообщений,
+они все равно защищены от интернет-провайдеров, таких как сотовые или кабельные компании.
+Однако провайдеры эл. почты, как ваши, так и ваших получателей
+могут читать, анализировать или даже изменять ваши сообщения,
+включая любые вложения,
+если они без сквозного шифрования.
+
+
Delta Chat по умолчанию использует строгое
+TLS-шифрование
+которое защищает соединения между вашим устройством и поставщиком эл. почты.
+Вся обработка TLS в Delta Chat прошла независимый аудит безопасности.
+Более того, соединение между вашим устройством и поставщиком эл. почты получателя
+как правило, также шифруется Протоколом защиты транспортного уровня.
+Если задействованные серверы эл. почты поддерживают MTA-STS
+то между провайдерами эл. почты будет применяться Протокол защиты транспортного уровня
+В этом случае сообщения Delta Chat никогда не будут открыты для Интернета в даже если сообщение без сквозного шифрования.
+
+
Обратите внимание, что поддержание гарантированного сквозного шифрования поверх шифрования TLS
+обеспечивает повсеместную безопасность между вашими устройствами и устройствами получателя.
+Даже ваш провайдер эл. почты или Интернета не сможет прочитать или изменить ваши сообщения.
+
+
+
+
+ Как Delta Chat защищает метаданные в сообщениях?
+
+
+
+
+
Delta Chat защищает большинство метаданных сообщений, помещая следующую информацию:
+в сквозную зашифрованную часть сообщений:
+
+
+
Тема письма
+
Аватар и название группы
+
Запросы MDN (уведомление о прочтении) (Chat-Disposition-Notification-To)
Заголовок Secure-Join, содержащий команды безопасного соединения
+
Уведомление о включении потоковой передачи местоположения
+
URL-адрес комнаты WebRTC
+
+
+
Серверы эл.почты не получают доступа к этим защищенным метаданным
+но они видят дату сообщения, а также его размер,
+и что более важно, адреса отправителя и получателя.
+Серверам эл.почты нужны адреса получателей для маршрутизации и
+доставки сообщения на устройства получателя.
+
+
+
+
+ Как защитить метаданные и контакты при захвате устройства?
+
+
+
+
+
Оба для защиты от серверов эл.почты, собирающих метаданные.
+а также от угрозы захвата устройства
+мы рекомендуем использовать chatmail сервер
+создавать псевдонимные временные профили посредством сканирования QR-кода.
+Обратите внимание, что приложения Delta Chat на всех платформах поддерживают несколько профилей
+поэтому вы можете легко использовать профили для конкретной ситуации рядом с вашим “основным” профилем.
+зная, что все их данные вместе со всеми метаданными будут удалены.
+Более того, если устройство захвачено, то контакты осуществляются с использованием временных профилей
+и не могут быть легко идентифицированы по сравнению с мессенджерами, которые раскрывают
+номера телефонов в чат-группах, которые, в свою очередь, часто связаны с юридическую идентичность.
+
+
+
+
+ Как я могу проверить информацию о шифровании?
+
+
+
+
+
Вы можете проверить статус сквозного шифрования вручную в диалоговом окне «Шифрование»
+(профиль пользователя на Android/iOS или щелкните правой кнопкой мыши элемент списка чата пользователя в приложении для ПК).
+Delta Chat показывает там два отпечатка пальца.
+Если на вашем устройстве и на устройстве вашего контакта появляются одинаковые отпечатки пальцев,
+соединение безопасно.
+
+
+
+
+ Как я могу проверить статус шифрования сообщений?
+
+
+
+
+
Маленький замочек в пузыре сообщения означает, что
+что сообщение было правильно зашифровано от данного отправителя.
+Если нет замка, сообщение не было должным образом зашифровано
+скорее всего, потому что отправитель использует приложение или интерфейс веб-почты
+без поддержки сквозного шифрования.
+
+
+
+
+ Почему я вижу незашифрованные сообщения?
+
+
+
+
+
Если контакт использует приложение эл.почты, не поддерживающее Autocrypt,
+все сообщения с участием этого контакта (в группе или чате 1:1)
+не будет подвергаться сквозному шифрованию и, следовательно, не будет отображать “замок” в сообщениях.
+Обратите внимание: даже если ваши контакты используют Delta Chat в своей учётной записи,
+они также могут использовать приложение эл.почты без Autocrypt для этой учётной записи
+это может привести к периодическим незашифрованным сообщениям.
+Ответ на незашифрованные сообщения на незашифрованные сообщения предусмотрен функцией Autocrypt
+чтобы предотвратить не читаемые сообщения на стороне ваших контактов
+и их почтовое приложение, не поддерживающее Autocrypt.
+
+
+
+
+ Как я могу получить сквозной зашифрованный чат с контактом Delta Chat, который иногда использует веб-почту или другое приложение эл.почты, не поддерживающее Autocrypt?
+
+
+
+
+
Если вам нужен безопасный сквозной зашифрованный чат с контактом
+который использует свою учётную запись эл.почты как с Delta Chat, так и с приложениями, не поддерживающими Autocrypt (например, веб-почту),
+лучше всего установить с ними гарантированное сквозное шифрование
+а затем создайте групповой чат с гарантированным сквозным шифрованием, в котором вы оба будете участниками.
+В этом групповом чате все сообщения будут зашифрованы сквозным шифрованием
+даже если в прямом чате между вами есть предупреждение
+“… отправил сообщение с другого устройства”
+
+
+
+
+ Как я могу обеспечить сквозное шифрование и удаление сообщений?
+
+
+
Гарантированные сквозные зашифрованные чаты защищают от MITM атак
+и включение исчезающих сообщений удаляет сообщения
+на сервере через заданное пользователем время.
+
+
+ Поддерживает ли Delta Chat Совершенную Прямую Секретность?
+
+
+
+
+
Нет, Delta Chat не поддерживает Совершенную Прямую Секретность (СПС).
+Это означает, что если ваш личный ключ расшифровки Delta Chat станет известен,
+и кто-то собрал ваши предыдущие сообщения в пути,
+они смогут расшифровать и прочитать их, используя утёкший ключ дешифрования.
+
+
Однако учтите, что если кто-нибудь получит ваши ключи дешифрования,
+они, как правило, также смогут получить ваши сообщения,
+независимо от того, присутствует Совершенная Прямая Секретность или нет.
+Типичной реальной ситуацией утечки ключей дешифрования является захват устройства,
+который мы обсуждаем в нашем ответе о метаданных и изъятии устройства.
+
+
Вполне возможно, что Delta Chat будет развиваться для поддержки Совершенной Прямой Секретности
+потому что OpenPGP это лишь контейнер для зашифрованных сообщений,
+но управление ключами шифрования (и, следовательно, ротация ключей или “храповик”)
+могут быть организованы гибким образом.
+См. Прототип PFS Seqouia
+для существующих экспериментов в сообществе разработчиков OpenPGP.
+
+
+
+
+ Является ли сквозное шифрование Delta Chat таким же безопасным как Signal?
+
+
+
+
+
Это зависит от того, что для вас важно.
+Delta Chat не поддерживает PFS как это делает Signal
+но он обеспечивает гарантированные сквозные зашифрованные чаты
+которые защищены от скомпрометированных серверов или поврежденных сетей.
+Signal и большинство других мессенджеров, поддерживающих PFS, не предоставляют
+практическая схема защиты чат-групп от сетевых атак
+которые, возможно, вызывают больше беспокойства
+чем потенциальный злоумышленник, который завладев вашим телефоном и настройками частного шифрования
+но почему-то не ваши сообщения, но есть полная запись всех
+прошлых зашифрованных сообщений.
+
+
+ Можно ли повторно использовать существующий секретный ключ?
+
+
+
+
+
Да.
+The best way is to send an Autocrypt Setup Message from the other e-mail client.
+Look for something like Start Autocrypt Setup Transfer in the settings of the other client and follow the instructions shown there.
+
+
Альтернативно, вы можете импортировать ключ вручную в “Настройки -> Дополнительные настройки -> Импортировать секретные ключи”.
+Внимание: Убедитесь, что ключ не защищён паролем, или заранее удалите пароль.
+
+
Если у вас нет ключа или вы даже не знаете, что он вам понадобится, не волнуйтесь: Delta Chat генерирует ключи по мере необходимости, вам не нужно для этого нажимать кнопку.
+
+
+
+
+ Я не могу импортировать мой существующий ключ PGP в Delta Chat.
+
+
+
+
+
С очень большой вероятностью проблема заключается в том, что ваш ключ зашифрован и/или использует пароль. Такие ключи не поддерживаются Delta Chat. Пожалуйста, удалите шифрование и пароль, после чего повторите попытку импорта.
+
+
Другая распространенная ошибка, неправильное окончание файла.
+Используйте бронированный формат ASCII и в окончании файла .asc.
+
+
Delta Chat поддерживает расспространённые форматы закрытых ключей OpenPGP, однако
+маловероятно, что мы будем поддерживать все закрытые ключи из любых источников. Это
+ не является главным фокусом Delta Chat. На самом деле, подавляющее большинство
+пользователей Delta Chat не будут иметь никакого ключа, прежде чем они начнут использовать его.
+Однако мы стараемся поддерживать закрытые ключи из как можно большего числа источников.
+
+
Удаление пароля закрытого ключа будет отличаться в зависимости от программного обеспечения, используемого для управления ключами PGP.
+В Enigmail вы можете установить пустой пароль в окне управления ключами.
+В GnuPG вы можете установить его через командную строку.
+Для других программ ищите решение в интернете.
+
+
+
+
+ Проходил ли Delta Chat независимую проверку на наличие уязвимостей безопасности?
+
+
+
+
+
Проект Delta Chat прошёл четыре независимых аудита безопасности и один
+независимый анализ безопасности, от самого последнего к более старому:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
В Апреле 2023 г. мы исправили проблемы безопасности и конфиденциальности в веб-интерфейсе,
+функция “приложения, которыми делятся в чате”, связанная со сбоями в песочнице
+особенно с Chromium. Впоследствии мы получили независимую охранный
+аудит от Cure53 и все обнаруженные проблемы были исправлены в серии приложений 1.36, выпущенных в апреле 2023 года.
+См. здесь полная информацию о безопасности сквозного шифрования в Интернете.
+
+
+
Март 2023 г. Cure53 проанализировал Протокол защиты транспортного уровня
+ сетевого соединения Delta Chat и воспроизводимой настройка почтового сервера, как
+рекомендуется на этом сайте.
+Подробнее об аудите можно прочитать в нашем блоге
+или прочитайте полный отчёт здесь.
+
+
+
2020 г., Include Security проанализировала Delta
+Chat Rust ядро,
+IMAP,
+SMTP и
+Библиотеки TLS.
+Никаких критических или серьёзных проблем обнаружено не было.
+В отчете выявлено несколько слабых мест средней серьёзности:
+они сами по себе не представляют угрозы для пользователей Delta Chat
+поскольку они зависят от среды, в которой используется Delta Chat.
+По соображениям удобства использования и совместимости,
+мы не можем смягчить их все
+и решили предоставить рекомендации по безопасности пользователям, находящимся под угрозой.
+Вы можете прочитать полный отчет здесь.
+
+
+
2019 г. Include Security проанализировало Delta
+Чат PGP и
+Библиотеки RSA.
+Критических проблем не обнаружено,
+но были две серьёзные проблемы, которые мы впоследствии исправили.
+Также были выявлены, одна проблема средней серьёзности и несколько менее серьёзных проблем,
+но в реализации Delta Chat не было возможности использовать эти уязвимости.
+Некоторые из них мы всё же исправили после завершения проверки.
+Вы можете прочитать полный отчет здесь.
+
+
+
+
+
+
+ Мультиклиент
+
+
+
+
+
+
+
+ Можно ли использовать Delta Chat на нескольких устройствах одновременно?
+
+
+
+
+
Да. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
+
+
+
+
Убедитесь, что оба устройства подключены к одному и тому же Wi-Fi или сети.
+
+
+
На первом устройстве перейдите в Настройки → Добавить второе устройство, при необходимости разблокируйте экран
+и подождите немного, пока не появится QR-код
На втором устройстве запустите Delta Chat, выберите Добавить как второе устройство и отсканируйте QR-код со старого устройства
+
+
+
Передача должна начаться через несколько секунд и во время передачи на обоих устройствах будет отображаться прогресс.
+Подождите пока он не завершится на обоих устройствах.
+
+
+
+
В отличие от многих других мессенджеров, после успешного перевода
+оба устройства полностью независимы.
+Одно устройство не обязательно для работы другого.
+
+
+
+
+ Устранение неполадок
+
+
+
+
+
+
+
Перепроверьте, что оба устройства находятся в в одной Wi-Fi или сети.
+
+
+
В Windows перейдите в Панель управления / Сеть и Интернет
+и убедитесь, что в качестве “Типа сетевого профиля” выбрана Частная сеть.
+(после переноса можно вернуть исходное значение)
+
+
+
В вашей системе может быть установлен “персональный брандмауэр”,
+который, как известно, вызывает проблемы (особенно в Windows).
+Отключите персональный брандмауэр для Delta Chat на обоих сторонах и попробуйте снова
+
+
+
Гостевые Сети не позволяют устройствам взаимодействовать друг с другом.
+По возможности используйте сеть не для гостей.
+
+
+
Убедитесь, что на устройстве имеется достаточно места
+
+
+
Если передача началась, убедитесь, что устройства остаются активными и не засыпают.
+Не выходите из Delta Chat.
+(мы стараемся сделать так, чтобы приложение работало в фоновом режиме, но системы склонны убивать приложения, к сожалению)
+
+
+
Delta Chat уже вошёл в систему на заданном устройстве?
+Вы можете использовать несколько учётных записей на одном устройстве, просто добавьте еще одну учётную запись
+
+
+
Если у вас все еще возникают проблемы или вы не можете отсканировать QR-код
+попробуйте воспользоваться ручной передачей, описанной ниже
+
+
+
+
+
+
+ Ручная передача
+
+
+
+
+
Этот метод рекомендуется только в том случае, если «Добавить Второе Устройство», как описано выше, не работает.
+
+
+
На старом устройстве зайдите в «Настройки -> Чаты и медиа -> Экспортировать Резервную Копию». Введите ваш
+PIN-код разблокировки экрана, графический ключ или пароль. Затем вы можете нажать «Начать резервное копирование».
+Резервное копирование». При этом файл резервной копии сохраняется на вашем устройстве. Теперь вам нужно
+его каким-то образом перенесите на другое устройство.
+
На новом устройстве в меню “У меня уже есть профиль”,
+выберите «восстановить из резервной копии». После импорта, ваши разговоры, ключи шифрования, медиа файлы
+будут скопированы на новое устройство.
+
Если вы используете iOS: и у вас возникли трудности, возможно,
+это руководство поможет.
+
Теперь вы синхронизированы и можете использовать оба устройства для отправки и получения
+сообщений со сквозным шифрованием с вашими партнерами по связи.
+
+
+
+
+
+ Есть ли какие-либо планы по внедрению веб-клиента Delta Chat?
+
+
+
+
+
+
Ближайших планов нет, но есть некоторые предварительные идеи.
+
Существуют 2-3 способа внедрения веб-клиента Delta Chat, но все
+они требуют значительных усилий. На данный момент мы сосредоточены на выпуске стабильных релизов во всех
+магазинах приложений (Google Play/iOS/Windows/macOS/Linux).
+
Если вам нужен веб-клиент, поскольку вы не можете устанавливать программное обеспечение на
+компьютере, на которым вы работаете, вы можете использовать портативный настольный клиент Windows
+или AppImage для Linux. Вы можете найти их на
+get.delta.chat.
+
+
+
+
+
+ Приложения webxdc
+
+
+
+
+
В Delta Chat вы можете делиться webxdc-приложениями, вложениями с расширением файла .xdc. Они могут делать совершенно разные вещи и делают Delta Chat по-настоящему
+расширяемым мессенджером.
Приложения webxdc не могут отправлять данные в Интернет или скачивать что-либо.
+
Приложение webxdc может обмениваться данными только в чате Delta Chat, причем его
+копиями на устройствах ваших партнеров по чату. В остальном оно полностью
+изолировано от Интернета.
+
Конфиденциальность, которую обеспечивает приложение webxdc - это конфиденциальность вашего чата: пока
+вы доверяете людям, с которыми общаетесь, вы можете доверять и приложению webxdc.
+
Это также означает, что открытие приложений webxdc в чатах с участниками которым вы не доверяете, тоже самое что и с вложениями электронной почты, когда вы открываете вложения только от тех отправителей, которым доверяете, а не от спамеров.
+
+
+
+
+
+ Где я могу взять приложения webxdc?
+
+
+
+
+
+
В общем, все желающие могут делиться друг с другом приложениями webxdc
+друг с другом без ограничений.
Все остальное, что вам нужно знать, написано в
+документация.
+
Если у вас есть вопросы, вы можете задать их опытным людям на форуме Delta Chat.
+
+
+
+
+
+ Экспериментальные Возможности
+
+
+
+
+
Мы очень признательны за отзывы и функционале - хотите поделиться
+вашими идеями? Присоединяйтесь к Форуму, чтобы внести свой вклад.
+Вы можете удобно войти в систему через Delta Chat и отсканировав QR-код,
+еще один довольно стабильный эксперимент, который мы проводим на стороне (sic!).
+
+
+
+
+ Как использовать аудио и видео звонки в Delta Chat?
+
+
+
+
+
+
Чтобы включить аудио/видео звонки, перейдите в раздел “Экспериментальные возможности” в
+расширенных настройках и выберите “Сервер видеочата”.
+
Когда вы приглашаете других в видеочат, он сразу открывается в вашем браузере/приложении. Остальные получают электронное письмо со ссылкой на видеочат.
+Таким образом, видеочат можно использовать и в том случае, если ваши собеседники не пользуются Delta Chat.
+
Обратите внимание, что на другой стороне нет звука звонка, и ваши собеседники
+не будут прерваны приглашением в видеочат.
+
Вы можете использовать любой сервис видеочата, который позволяет присоединиться по ссылке. Просто добавьте
+ссылку в настройках.
+
Например, чтобы использовать сервер Jitsi Meet, вы можете ввести
+https://meet.jit.si/$ROOM. Переменная $ROOM будет случайным идентификатором комнаты;
+Таким образом, каждый раз, когда вы будете кого-то вызывать, у вас будет новая случайная комната Jitsi.
+
+
+
+
+
+ Что такое Списки Рассылок и как их использовать?
+
+
+
+
+
+
С помощью Списка Рассылки вы можете отправить сообщение множеству получателей одновременно; когда
+они отвечают вам, вы получаете ответ в прямом чате с ними 1:1.
+получатели не могут видеть друг друга.
+
Технически это эл.письмо со многими получателями в скрытой копии.
+
Включить функцию можно в разделе “экспериментальные функции” в разделе
+расширенные настройки. Затем вы можете создать Список Рассылки в диалоге «Нового чата».
+
Если вы используете более одного устройства, Списки Рассылки в настоящее время не синхронизируются между ними.
+
Сообщения, отправляемые в Списки Рассылки, не шифруются. Шифрование лишает
+анонимность, потому что тогда все получатели будут знать, кто ещё получил это письмо.
+(Отправка отдельных писем всем будет хуже из-за ограничения скорости и из за причины потребления сети).
+
+
+
+
+
+ Как я могу поделиться своим местоположением с партнерами по чату?
+
+
+
+
+
В- Вы можете включить потоковую передачу местоположения в разделе «экспериментальные функции»
+расширенные настройки.
+
+
Теперь, если вы хотите поделиться своим местоположением в чате, перейдите в “Прикрепить” и выберите
+“местоположение”. Теперь вы можете установить временной интервал, в течение которого ваше местоположение будет
+транслироватся вашим партнерам по чату в течение от 5 минут до 6 часов.
+
Когда ваше местоположение изменится, другие участники чата смогут увидеть его на карте в
+чате.
+
Чтобы видеть карту и просматривать местоположения других людей, вам необходимо включить эту функцию
+в расширенных настройках.
+
Эта функция не будет передавать ваше местоположение никому, кроме ваших собеседников.
+Фрагменты карты загружаются с сайта OpenStreetMap.
+
На настольном ПК ОС обычно не может определить ваше местоположение. Вместо этого вы можете
+щелкните правой кнопкой мыши “Вставить” и опишите локацию, которая будет отправлена в чат как
+сообщение, но также появляется на карте.
+
+
+
+
+
+ Что на самом деле защищает экспериментальное шифрование базы данных?
+
+
+
+
+
+
На данный момент шифрование базы данных все еще находится на стадии эксперимента. Не полагайтесь на
+неё, для защиты вам следует дополнительно использовать шифрование вашей операционной
+система, если она её предоставляет.
+
Шифрование базы данных пока не шифрует большие двоичные объекты, а только строки и
+столбцы базы данных. Это более или менее означает, что ваши сообщения в безопасности,
+но не ваши прикреплённые файлы.
+
Для iOS и Android ключи шифрования хранятся в системной связке ключей.
+Это означает, что шифрование так же безопасно, как и операционная система, на которой оно работает
+
Настольный клиент Delta Chat пока не поддерживает шифрование базы данных, так как
+не существует стандартного способа хранения ключей шифрования на различных поддерживаемых
+платформах.
+
+
+
+
+
+ Почему я могу выбрать слежение только папки DeltaChat?
+
+
+
+
+
Это экспериментальная функция для некоторых людей, которые экспериментируют с
+правилами на стороне сервера. Не все провайдеры поддерживают это, но с некоторыми вы можете переместить
+все письма с заголовком “Chat-Version” в папку DeltaChat. Обычно это
+делается с помощью приложения Delta Chat.
+
+
Включение «Извлекать Только из Папки DeltaChat» имеет смысл, если у вас есть оба:
+
+
+
включено правило на стороне сервера для перемещения всех сообщений с заголовком “Chat-Version” в папку Delta Chat, и
+
установлен параметр “Показывать классические электронные письма” со значеним “Нет, только чаты”.
+
+
+
В этом случае Delta Chat не нужно смотреть папку Входящие и этого достаточно чтобы просмотреть только папку DeltaChat.
+
+
+
+
+ Как я могу изменить свою учётную запись на другой адрес эл.почты?
+
+
+
+
+
+
+
Изменение вашего адреса в “Настройки → Дополнительные параметры → Пароль и Учётная запись” и
+введите пароль для вашей новой учётной записи эл.почты (и при необходимости в настройках Сервер).
+Вы получите информационное уведомление о том, что переезжаете на новый адрес.
+Дополнительное уведомление также появится в вашем чате “Сообщения устройства”.
+
+
+
Если возможно, позвольте своему старому провайдеру эл.почты пересылать все сообщения на ваш новый адрес.
+
+
+
Сообщите своим контактам, что вы изменили адрес.
+Запись гарантирует сквозное шифрование в чатах и группах,
+заставит их автоматически отметить переезд и
+они продолжат общаться с вами, используя ваш новый адрес.
+
+
+
+
Обратите внимание, что Delta Chat больше не будет получать сообщения от вашего старого поставщика эл.почты.
+Если вы не настроили для своего провайдера электронной почты пересылку сообщений (шаг 2.)
+только те контакты, которым вы отправили сообщение в гарантированным сквозным шифрованием чате
+будет отправлять сообщения на ваш новый адрес.
В зависимости от используемой операционной системы
+вам может быть предложено предоставить разрешения для приложения.
+Вот что делает Delta Chat с этими разрешениями:
+
+
+
Камера (может быть запрещена)
+
фотографировать и снимать видео: для отправки фотографий
+
Контакты (можно запретить)
+
читать свои контакты: чтобы найти контакты для общения
+
Местоположение (можно запретить)
+
доступ к приблизительному местоположению (сетевые источники местоположения): для функции потоковой передачи местоположения.
+
доступ к точному местоположению (GPS и сетевые источники местоположения): для функции потоковой передачи местоположения
+
Микрофон (можно запретить)
+
запись аудио: для аудиосообщений
+
Хранение (можно запретить)
+
изменить или удалить содержимое вашей SD-карты: для загрузки вложений к сообщениям
+
прочитать содержимое вашей SD-карты: чтобы поделиться файлами со своими контактами
+
Другие возможности приложения
+
измените настройки звука: чтобы вы могли выбирать мелодии звонка и громкость уведомлений и аудиосообщений
+
запускать при запуске: вам не придется запускать Delta Chat вручную
+
управление вибрацией: для уведомлений
+
просмотр сетевых подключений: для подключения к вашему провайдеру электронной почты.
+
запретить переход телефона в спящий режим: чтобы вам было проще скопировать код безопасности во время сообщения о настройке Autocrypt.
+
иметь полный доступ к сети: для подключения к вашему провайдеру эл.почты.
+
просмотр подключений Wi-Fi: для подключения к вашему провайдеру эл.почты.
+
попросить игнорировать оптимизацию батареи: для достижения “мгновенной доставки сообщений”
+
+
+
+
+
+ Поддерживает ли Delta Chat работу с моим провайдером электронной почты?
+
+
+
+
+
+
В большинстве случаев - да :)
+Тем не менее, для корректной работы некоторых почтовых служб (провайдеров)
+требуются специфические настройки;
+смотрите Обзор провайдеров
+
+
+
+
+
+ Я хочу управлять собственным сервером эл. почты для Delta Chat. Что вы посоветуете?
+
+
+
+
+
+
Большинство почтовых серверов будут работать хорошо. Но лично мы рекомендуем
+комбинации mailcow и mailadm, как описано в этом
+блоге.
+
+
+ Почему я должен вводить свой пароль от электронной почты в Delta Chat? Это безопасно?
+
+
+
+
+
Как и в случае других программ электронной почты, таких как Thunderbird,
+ K9-Mail или Outlook, программе необходим пароль, чтобы использовать его
+ для отправки почты. Конечно, пароль хранится только на вашем устройстве.
+ Пароль передаётся только вашему провайдеру электронной почты (при входе
+ в систему), который в любом случае имеет доступ к вашей почте.
+
+
Если вы используете провайдера электронной почты с поддержкой OAuth2,
+ например, gmail.com или yandex.ru, нет необходимости хранить пароль на
+ устройстве, так как в этом случае используется токен доступа.
+
+
Поскольку Delta Chat является программой открытым исходным кодом, вы
+ можете изучить исходный код, если хотите убедиться, что ваши
+ учётные данные обрабатываются безопасно. Мы будем рады вашим отзывам
+ и предложениям, которые сделают приложение более безопасным для всех.
+
+
+
+
+ Какие сообщения отображаются в Delta Chat?
+
+
+
+
+
По умолчанию Delta Chat показывает все сообщения электронной почты.
+
+
В “Настройки → Дополнительные настройки → Показывать Обычную эл.почту”
+вы можете это изменить. У вас есть следующие варианты:
+
+
+
“Нет, только чаты”: Отображаются только сообщения и ответы отправленные другими пользователями Delta Chat.
+Это наиболее целесообразно, если вы используете одну и ту же
+учётную запись эл. почты и для обычной почты.
+
“Все”: Delta Chat показывает все сообщения, отправленные на ваш электронный адрес.
+Это имеет смысл, если вы хотите использовать Delta Chat для всех своих писем,
+чтобы ни одно сообщение не было потеряно. Это настройка по умолчанию.
+
“Для принятых контактов”: Delta Chat показывает все сообщения эл. почты от контактов,
+с которыми у вас уже есть чат, но новые чаты появляются только для сообщений Delta Chat.
+Это помогает в каждом конкретном случае решить, хотите ли вы вести разговор
+в Delta Chat или в “обычном” приложении эл. почты.
+
+
+
+
+
+ Поддерживает ли Delta Chat электронную почту в формате HTML?
+
+
+
+
+
Да, входящие HTML-сообщения сопровождаются кнопкой “Показать сообщение полностью”.
+Исходящие сообщения всегда используют простой текст.
+
+
+
+
+ Могу ли я установить тему письма в Delta Chat?
+
+
+
+
+
Delta Chat устанавливает (и шифрует!) тему классического письма
+автоматически к названию группы или имени отправителя.
+
+
Поэтому, если вы хотите задать тему самостоятельно,
+например, для официального письма деловому контакту,
+вы можете создать группу
+в которой будут только вы и получатель(и).
+Установите в заголовке чата нужную тему,
+а затем отправьте свое письмо первым сообщением.
+Если получатели не используют Delta Chat,
+оно будет выглядеть как обычное,
+эл. письмо.
+Вы получите бонусные очки профессионализма
+если вы установите текст подписи.
+
+
+
+
+ Для чего нужен параметр “Отправить копию себе”?
+
+
+
+
+
Отправка копии ваших сообщений себе гарантирует, что вы получите свои собственные
+сообщения на всех устройствах. Если у вас есть несколько устройств и вы не включили его, вы
+увидите только сообщения от других людей и сообщения, которые вы отправляете с
+текущего устройства.
+
+
Копия отправляется в папку “Входящие”, а затем перемещается в папку DeltaChat; она не
+помещается в папку “Отправлено”. Delta Chat никогда ничего не загружает в папку Отправлено
+, потому что это означало бы загрузку сообщения дважды (один раз через SMTP
+и один раз через IMAP в папку Отправлено).
+
+
По умолчанию для параметра “Отправить Копию Себе” установлено значение “Включено”.
+
+
+
+
+ Для чего нужен параметр “следить за папкой Отправлено”?
+
+
+
+
+
Этот параметр, важен для тех, кто использует другую
+почтовую программу (например, Thunderbird) вместе с приложением Delta Chat.
+
+
Однако мы рекомендуем использовать настольный клиент Delta Chat; вы можете скачать его
+на get.delta.chat. Опция для слежения за папкой “Отправлено”
+может быть убрана в будущем. Эта функция была представлена в то время, когда не было
+ настольного клиента Delta Chat доступного на всех платформах.
+
+
+
+
+ Почему я могу отключить “следить за папкой Delta Chat”?
+
+
+
+
+
Некоторые люди используют Delta Chat в качестве обычного почтового клиента и хотят использовать папку “Входящие”
+для своей почты вместо папки DeltaChat. Если вы отключите функцию “следить за
+папкой DeltaChat”, вы также должны отключить “переместить сообщения чата в DeltaChat”.
+В противном случае удаление сообщений или настройки могут работать неправильно.
+
+
+
+
+ Совместим ли Delta Chat с Protonmail / Tutanota / Criptext?
+
+
+
+
+
+
И да и нет.
+
Нет, вы не можете использовать свою учётную запись Protonmail, Tutanota или Criptext с Delta Chat; они не предлагают получать почту через IMAP.
+
В любом случае вы можете использовать Delta Chat для отправки сообщений людям, которые используют
+Protonmail, Tutanota или Criptext. Однако, эти сообщения не будут
+зашифрованы сквозным шифрованием. Сквозное шифрование, предлагаемое этими поставщиками, не
+совместимо с используемым Autocrypt, стандартом в Delta Chat
Поскольку вы используете учётную запись эл.почты для Delta Chat,
+способ удаления своей учетной записи зависит от вашего провайдера эл.почты.
+Мы не имеем никакого контроля над вашей учётной записью эл.почты,
+поэтому, к сожалению, мы не можем вам с этим помочь.
+
+
Если вы хотите сохранить учётную запись,
+но удаляете Delta Chat,
+перед удалением Delta Chat рекомендуется выйти из группового чата.
+
+
+ Как финансируются разработки Delta Chat?
+
+
+
+
+
Delta Chat не получает никакого венчурного капитала,
+не имеет долгов, и не ставит целью заработать огромную прибыль или
+продавать пользователей, их друзей и семью рекламодателям (или ещё кому-либо).
+Мы предпочитаем использовать государственные источники финансирования далёкие от Евросоюза и США, чтобы
+продолжить создавать децентрализованную экосистему обмена сообщениями,
+основанную на Свободном и Открытом исходном коде.
+
+
Конкретно до этого момента, разработки Delta Chat финансировались из этих источников:
+
+
+
+
Проект ЕС NEXTLEAP финансировал исследование
+и внедрение проверенных групп и настройку протоколов контактов
+в 2017 и 2018 годах, а также помог интегрировать сквозное шифрование
+через Autocrypt.
+
+
+
Фонд открытых технологий предоставил нам
+два гранта. Первый грант 2018/2019 года (~$200 тыс.) помог значительно улучшить Android приложение
+и выпустить бета-версию настольного клиента, кроме того
+закрепил наши разработки в области исследований UX в контексте прав человека,
+смотрите наш отчёт Needfinding and UX report.
+Второй грант 2019/2020 года (~$300 тыс.) помог нам
+выпустить Delta/iOS версии, преобразовать нашу основную библиотеку Rust, а также
+предоставить новые функции для всех платформ.
+
+
+
Фонд NLnet выделил в 2019/2020 году 46 тыс. евро на
+завершение привязки Rust/Python и создание экосистемы чат-ботов.
+
+
+
В 2021 г. мы получили дополнительное финансирование из ЕС для двух Next-Generation-Internet
+целей, а именно для EPPD - e-mail provider portability directory (~97 тыс. евро) и AEAP - email address porting (~90 тыс. евро). Это привело к улучшению поддержки мультиклиентности, QR-кодов, настройки контактов и групп и множеству улучшений в работе сети для всех платформ.
+
+
+
С конца 2021 года по март 2023 года мы получили финансирование Свобода Интернета (500 тысяч долларов США) от
+
+
+
+
Бюро демократии, прав человека и труда США (DRL).
+Это финансирование поддержало наши долгосрочные цели, сделать Delta Chat более удобным для использования.
+и совместимость с широким спектром серверов эл. почты по всему миру, а также большую отказоустойчивость и безопасеность
+в местах, часто подвергающихся интернет-цензуре и отключениям.
+
+
+
+
С 2023 года нас приняли в Интернет Следующего Поколения (NGI).
+Программа доверия для наших предложений «Частные Децентрализованные Приложения».
+Точная сумма еще не определена (около 100 тыс. евро).
+Это финансирование поддерживает дальнейшее развитие webxdc “приложений, которыми можно делиться в чате”.
+
+
+
Иногда мы получаем разовые пожертвования от физических лиц.
+Например, в 2021 году щедрый индивидуальный банк перевел нам 4 тыс. евро.
+с темой «Так держать!». 💜
+Мы используем эти деньги для финансирования встреч разработчиков или для покрытия специальных расходов
+это нелегко предсказать или возместить за счет государственных грантов.
+Получение большего количества пожертвований также помогает нам стать более независимыми и жизнеспособными в долгосрочной перспективе
+как сообщество участников.
+
+
+
+
+
И последнее, но далеко не менее важное: несколько экспертов и энтузиастов на общественных началах внесли
+ и вносят свой вклад в развитие Delta Chat, не получая денег, а только
+небольшие суммы. Без них Delta Chat не был бы там, где он есть сегодня,
+даже близко.
+
+
+
+
Упомянутые выше денежные сборы было организованы компанией merlinux GmbH в городе
+Фрайбург (Германия), и распределяются среди более чем дюжины участников по всему миру.
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/help/sk/help.html b/src/main/assets/help/sk/help.html
similarity index 78%
rename from assets/help/sk/help.html
rename to src/main/assets/help/sk/help.html
index 2b3938229..08ab17561 100644
--- a/assets/help/sk/help.html
+++ b/src/main/assets/help/sk/help.html
@@ -4,17 +4,14 @@
Delta Chat je nová chatovacia aplikácia, ktorá odosiela správy prostredníctvom e-mailov, ak je to možné, šifrované pomocou funkcie Autocrypt.
-*Nemusíte sa nikde prihlasovať, stačí použiť svoj existujúci e-mailový účet s Delta Chat.
+
Delta Chat is a reliable, decentralized and secure messaging app,
+available for mobile and desktop platforms.
+
+
Delta Chat feels like Whatsapp or Telegram but you can also use and regard it as an e-mail app.
+You can signup anonymously to a variety of interoperable chatmail servers
+which are minimal e-mail servers optimized for fast and secure operations.
+Or you may use classic e-mail servers and an existing e-mail account
+in which case Delta Chat acts as an e-mail app.
@@ -117,9 +134,15 @@
-
S Delta Chatom môžete písať na každú existujúcu e-mailovú adresu – dokonca
-aj ak príjemca nepoužíva aplikáciu Delta Chat. Nie je potrebné
-pre príjemcu, aby si nainštaloval rovnakú aplikáciu, ako je tá vaša, ako pri iných messengeroch.
+
To securely setup contact with others scan an invite QR code
+or share an invite link.
+This is required when using a (default) chatmail-based chat profile
+because chatmail servers reject un-encrypted outgoing messages.
+
+
If you create a chat profile with a classic e-mail address
+you may manually create a contact if you know their e-mail address
+and then write a message to them
+even if the recipient is not using Delta Chat.
@@ -130,42 +153,25 @@ pre príjemcu, aby si nainštaloval rovnakú aplikáciu, ako je tá vaša, ako p
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
-
-
- Ktoré správy sa zobrazujú v Delta Chate?
-
-
-
-
-
By default, Delta Chat shows all e-mails.
-
-
At “Settings -> Chats &
-Media -> Show Classic E-Mails”, you can change this. You have these options:
-
-
-
“No, chats only”: Only messages sent by other Delta Chat users and replies to
-your Delta Chat messages are shown. This makes most sense if you use the same
-e-mail account for normal e-mails as well.
-
“All”: Delta Chat shows all e-mails that are sent to your email address. This
-makes sense if you want to use Delta Chat for all your e-mails, so no message
-gets lost. This is the default setting.
-
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
-you already have a chat, but new chats only pop up for Delta Chat messages.
-This helps to decide on a case-by-case basis whether you want to have a
-conversation in Delta Chat or in a “normal” e-mail app.
+
+
Anonymous chat profiles with fast, secure and interoperable chatmail servers
+which offer instant Push Notifications for iOS and Android devices.
+
+
+
Pervasive multi-profile and multi-device support on all platforms.
@@ -207,18 +213,25 @@ receive messages from this person, consider blocking them.
- How can I add or switch between multiple accounts?
+ What are profiles? How can I switch between them?
-
You can easily work with additional accounts on Delta Chat mobile and desktop clients by clicking either:
-
-
on the menu button and then ‘Switch Account’ (Android and desktop)
-
or the profile icon and then ‘Add Account’ (iOS)
-
+
A profile is a name, a picture and some additional information for encrypting messages.
+A profile lives on your device(s) only
+and uses a chatmail or a classic e-mail server to transport messages.
On first installation of Delta Chat a first profile is created.
+
+
Later, you can tap your profile image in the upper left corner to Add Profiles
+or to Switch Profiles.
+
+
You may want to use separate profiles for political, family or work related activities,
+or e. g. for a dedicated “spam-profile” with which you register at websites and platforms
+that tend to cause unsolicited messages (“spam”) sooner or later.
- Podporuje Delta Chat e-maily HTML?
+ Can I set a Signature Text/Status/Motto with Delta Chat?
-
Yes, incoming HTML messages come with a “Show full message” button.
-Outgoing messages always use plain text.
+
Yes,
+you can do so under “Settings > Profile > Signature Text”.
+Your contacts who use Delta Chat will see it
+when they view your contact details.
+To everyone else,
+It will appear as an e-mail signature
+below the text of all your messages.
-
+
- Prečo musím zadávať svoje e-mailové heslo do Delta Chat? Je to bezpečné?
-
-
-
-
-
Rovnako ako v prípade iných e-mailových programov, ako sú Thunderbird, K9-Mail alebo Outlook,
-program potrebuje heslo, aby ste ho mohli používať na odosielanie e-mailov. Samozrejme,
-heslo je uložené iba vo vašom zariadení. Heslo sa prenáša iba na vášho poskytovateľa e-mailu (keď sa prihlásite), ktorý má aj tak prístup k vašim e-mailom.
-
-
Ak používate poskytovateľa e-mailu s podporou OAuth2, ako je gmail.com alebo yandex.ru,
-nie je potrebné ukladať heslo do zariadenia. V tomto prípade iba
-používa sa prístupový token.
-
-
Keďže Delta Chat je Open Source, môžete skontrolovať Zdrojový
-Kód
-ak chcete overiť, že vaše poverenia sú spracované bezpečne. Sme radi
-o spätnej väzbe, vďaka ktorej je aplikácia bezpečnejšia pre všetkých našich používateľov.
-
-
-
-
- Aké povolenia potrebuje Delta Chat?
-
-
-
-
-
V závislosti od používaného operačného systému
-môžete byť požiadaní o udelenie povolení aplikácii.
-Delta Chat robí toto s týmito povoleniami:
-
-
-
Fotoaparát (možno zakázať)
-
-
fotografujte a natáčajte videá: na odosielanie fotografií
-
-
-
Kontakty (možno zakázať)
-
-
prehliadnite si svoje kontakty: objavte kontakty, s ktorými môžete chatovať
-
-
-
Poloha (možno zakázať)
-
-
prístup k približnej polohe (zdrojom polohy v sieti): pre funkciu streamovania polohy
-
prístup k presnej polohe (GPS a sieťové zdroje polohy): pre funkciu streamovania polohy
-
-
-
Mikrofón (možno zakázať)
-
-
nahrávať zvuk: pre zvukové správy
-
-
-
Úložisko (možno zakázať)
-
-
upraviť alebo odstrániť obsah vašej SD karty: na stiahnutie príloh správ
-
čítať obsah SD karty: zdieľať súbory so svojimi kontaktmi
-
-
-
Ďalšie možnosti aplikácie
-
-
zmeniť nastavenia zvuku: aby ste si mohli si vybrať vyzváňacie tóny a hlasitosť pre upozornenia a zvukové správy
-
spustiť pri štarte: takže nemusíte spúšťať Delta Chat manuálne
-
ovládanie vibrácií: pre upozornenia
-
zobraziť sieťové pripojenia: na pripojenie k vášmu poskytovateľovi e-mailu
-
zabrániť spánku telefónu: takže môžete jednoduchšie skopírovať bezpečnostný kód počas správy nastavenia automatického šifrovania
-
mať úplný prístup k sieti: na pripojenie k vášmu poskytovateľovi e-mailu
-
zobraziť pripojenia Wi-Fi: na pripojenie k poskytovateľovi e-mailu
-
požiadať o ignorovanie optimalizácie batérie: pre používateľov, ktorí chcú neustále dostávať správy
-
-
-
-
-
-
-
- What means Pinning, Muting, Archiving?
+ What do Pinning, Muting and Archiving mean?
@@ -392,22 +335,40 @@ have turned off read receipts, they will not see the green dot until you
message them or write to a group they’re in as well.
-
+
- How can I delete my account?
+ How do disappearing messages work?
-
As you use an e-mail account for Delta Chat,
-how you can delete your account depends on your e-mail provider.
-We don’t have any control over your e-mail account,
-so unfortunately we can’t help you with that.
+
You can turn on “disappearing messages”
+in the settings of a chat,
+at the top right of the chat window,
+by selecting a time span
+between 1 minute and 5 weeks.
-
If you want to keep the account,
-but uninstall Delta Chat,
-it is recommended to leave any group chat before uninstalling Delta Chat.
+
Until the setting is turned off again,
+each chat member’s Delta Chat app takes care
+of deleting the messages
+after the selected time span.
+The time span begins
+when the receiver first sees the message in Delta Chat.
+The messages are deleted
+both in each email account on the server,
+and in the app itself.
+
+
Note that you can rely on disappearing messages
+only as long as you trust your chat partners;
+malicious chat partners can take photos,
+or otherwise save, copy or forward messages before deletion.
+
+
Apart from that,
+if one chat partner uninstalls Delta Chat,
+the messages will not get deleted from their email account.
+They will most likely also not be decryptable anymore
+(as long as they were encrypted in the first place).
@@ -540,6 +501,170 @@ this way, all messages will be deleted from your device as soon as they
older than that.
+
+
+
+ What are Push Notifications? How can I get instant message delivery?
+
+
+
+
+
Push Notifications are sent by Apple and Google “Push services” to a user’s device
+so that an inactive Delta Chat app can fetch messages in the background
+and show notifications on a user’s phone if needed.
+
+
Push Notifications work with all chatmail servers on
+
+
+
+
iOS devices, by integrating with Apple Push services.
+
+
+
Android devices, by integrating with the Google FCM Push service,
+including on devices that use microG
+instead of proprietary Google code on the phone.
+
+
+
+
As of May 2024, classic e-mail servers do not support Push Notifications
+for Delta Chat users.
+
+
+
+
+ Are Push Notifications enabled on iOS devices? Is there an alternative?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Are Push notifications enabled / needed on Android devices?
+
+
+
+
+
If a “Push Service” is available, Delta Chat enables Push Notifications
+to achieve instant message delivery for all chatmail users.
+If you are using a classic e-mail provider instead of chatmail servers,
+Push Notifications are not available.
+
+
In the Delta Chat “Notifications” settings for “Instant delivery”
+you can change the following settings effecting all chat profiles:
+
+
+
+
Use Push Service: the default when using chatmail profiles and if
+a Push service is available on the phone.
+If you have both chatmail and classic e-mail profiles,
+then Push Notification will only work
+for incoming messages on chatmail profiles.
+
+
+
Use Background Connection: If you are not using a Push service,
+you may disable “battery optimizations” for Delta Chat,
+allowing it to fetch messages in the background.
+However, there could be delays from minutes to hours.
+Some Android vendors even restrict apps completely
+(see dontkillmyapp.com)
+and Delta Chat might not show incoming messages
+until you manually open the app again.
+
+
+
Force Background Connection: This is the fallback option
+if the previous options are not available or do not achieve “instant delivery”.
+Enabling it causes a permanent notification on your phone
+which may sometimes be “minified” with recent Android phones.
+
+
+
+
Both “Background Connection” options are energy-efficient and
+safe to try if you experience messages arrive only with long delays.
+
+
+
+
+ How private are Delta Chat Push Notifications?
+
+
+
+
+
Delta Chat Push Notification support avoids leakage of private information.
+It does not leak e-mail, IP address or message content (not even encrypted)
+to any system involved in the delivery of Push Notifications.
+
+
Here is how Delta Chat apps perform Push Notification delivery:
+
+
+
+
A Delta Chat app obtains a “device token” locally and stores it
+on the chatmail server.
+
+
+
When a chatmail server receives an e-mail for a Delta Chat user
+it forwards the “device token” to the central Delta Chat notification proxy.
+
+
+
The central Delta Chat notification proxy forwards
+the “device token” to the respective Push service (Apple, Google, etc.),
+without ever knowing the IP or e-mail address of Delta Chat users.
+
+
+
The central Push Service (Apple, Google, etc.)
+wakes up the Delta Chat app on your device
+to check for new messages in the background.
+It does not know about the chatmail or e-mail address of the device it wakes up.
+The central Apple/Google Push services never see an e-mail address (sender or receiver)
+and also never see any message content (also not in encrypted forms).
+
+
+
+
As of May 2024, chatmail servers know about “device tokens”
+but we plan to encrypt this information to the notification proxy
+such that the chatmail server never learns the device token.
+
+
The central Delta Chat notification proxy is small and fully implemented in Rust
+and forgets about device-tokens as soon as Apple/Google/etc processed them,
+usually in a matter of milliseconds.
+
+
Resulting from this overall privacy design, even the seizure of a chatmail server,
+or the full seizure of the central Delta Chat notification proxy
+would not reveal private information that Push services do not already have.
+
+
+
+
+ Why does Delta Chat integrate with centralized proprietary Apple/Google push services?
+
+
+
+
+
Delta Chat is a free and open source decentralized messenger with free server choice,
+but we want users to reliably experience “instant delivery” of messages,
+like they experience from Whatsapp, Signal or Telegram apps,
+without asking questions up-front that are more suited to expert users or developers.
Secure-Join protocols
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
@@ -593,49 +718,32 @@ guarantee end-to-end encrypted messages.
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
+
If you have a second communication channel with your chat partner,
+like a video chat or a different messenger,
+you can generate an invite link.
-
Inviter side:
+
If you are together in person,
+you can show a QR code to your chat partner.
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
+
For Group invitations,
+tap the chat group title to see its member list,
+and select “QR Invite code”.
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
+
For direct 1:1 chat invitations,
+tap the QR Code icon
+on the Delta Chat app main screen.
-
Joiner side:
+
Let your chat partner scan the QR image
+with their Delta Chat app,
+or click “Copy” or “Share” to create an invite link
+and share it with your chat partner.
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
@@ -689,7 +797,7 @@ but there is no green checkmark in the profile title.
This usually means that the contact “sent a message from another device”.
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
+please see Secure-Join protocols
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
@@ -717,7 +825,7 @@ even if the contact is a member there.
Your contact is using Delta Chat on a second device (phone or laptop)
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
+they should remove the profile from the new device
and add it as a second device as described here.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.
@@ -725,8 +833,8 @@ and guaranteed encryption is established with both devices of your contact.
Your contact reinstalled Delta Chat using their old account login
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
+they should remove the profile from the new device
+and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.
@@ -747,7 +855,7 @@ guaranteed end-to-end encryption will be automatically re-established.
Sometimes remaining in contact is more important than end-to-end encryption.
“Transport Layer Encryption” (TLS) may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
+But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.
In any case, you can not do much else than accept the warning.
@@ -913,12 +1021,12 @@ deliver messages to recipient’s devices.
Both for protecting against metadata-collecting e-mail servers
as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
+we recommend to use a chatmail server
+to create pseudonymous temporary profiles through QR-code scans.
+Note that Delta Chat apps on all platforms support multiple profiles
+so you can easily use situation-specific profiles next to your “main” profile
+with the knowledge that all their data, along with all metadata, will be deleted.
+Moreover, if a device is seized then contacts using temporary profiles
can not be identified easily, as compared to messengers which reveal
phone numbers in chat groups which in turn are often associated with legal identities.
@@ -977,7 +1085,7 @@ and their non-Autocrypt e-mail app.
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
+who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
it’s best to setup guaranteed end-to-end encryption with them
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
@@ -995,10 +1103,10 @@ even if the direct chat between you two has a
The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
+
Guaranteed end-to-end encrypted chats protect against MITM attacks
+and turning on disappearing messages deletes the messages
on the server after a user-configured time.
If you don’t need a longer-lived copy of your messages on the server,
@@ -1079,9 +1187,10 @@ Caution: Make sure the key is not protected by a password, or remove the passwor
Najpravdepodobnejšou príčinou je, že váš kľúč je zašifrovaný a/alebo používa
heslo. Delta Chat takéto kľúče nepodporuje. Mohli by ste odstrániť
-zašifrovanie prístupovej frázy a heslo a skúsiť import znova. Ak chcete
-aby ste si zachovali svoju prístupovú frázu, budete si musieť vytvoriť e-mailový alias
-s Delta Chatom tak, že kľúč Delta Chat je zviazaný s týmto e-mailovým aliasom.
+zašifrovanie prístupovej frázy a heslo a skúsiť import znova.
+
+
Another common error is having the wrong file ending.
+Use the ASCII armored format and an .asc file ending.
Delta Chat podporuje bežné formáty súkromných kľúčov OpenPGP
avšak je nepravdepodobné, že budú plne podporované súkromné kľúče zo všetkých zdrojov. Toto
@@ -1096,6 +1205,67 @@ heslo na prázdnu hodnotu v okne Key Management. Pomocou GnuPG to môžete nasta
riadok
.
Pre iné programy by ste mali vedieť nájsť riešenie online.
+
+
+
+ Was Delta Chat independently audited for security vulnerabilities?
+
+
+
+
+
The Delta Chat project underwent four independent security audits and one
+independent security analysis, from most recent to older:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
2023 April, we fixed security and privacy issues with the “web
+apps shared in a chat” feature, related to failures of sandboxing
+especially with Chromium. We subsequently got an independent security
+audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
+See here for the full background story on end-to-end security in the web.
+
+
+
2023 March, Cure53 analyzed both the transport encryption of
+Delta Chat’s network connections and a reproducible mail server setup as
+recommended on this site.
+You can read more about the audit on our blog
+or read the full report here.
+
+
+
2020, Include Security analyzed Delta
+Chat’s Rust core,
+IMAP,
+SMTP, and
+TLS libraries.
+It did not find any critical or high-severity issues.
+The report raised a few medium-severity weaknesses -
+they are no threat to Delta Chat users on their own
+because they depend on the environment in which Delta Chat is used.
+For usability and compatibility reasons,
+we can not mitigate all of them
+and decided to provide security recommendations to threatened users.
+You can read the full report here.
+
+
+
2019, Include Security analyzed Delta
+Chat’s PGP and
+RSA libraries.
+It found no critical issues,
+but two high-severity issues that we subsequently fixed.
+It also revealed one medium-severity and some less severe issues,
+but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
+Some of them we nevertheless fixed since the audit was concluded.
+You can read the full report here.
+
+
+
@@ -1112,7 +1282,7 @@ Pre iné programy by ste mali vedieť nájsť riešenie online.
-
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
+
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
@@ -1150,10 +1320,19 @@ One device is not needed for the other to work.
Double-check both devices are in the same Wi-Fi or network
+
+
On Windows, go to Control Panel / Network and Internet
+and make sure, Private Network is selected as “Network profile type”
+(after transfer, you can change back to the original value)
+
Your system might have a “personal firewall”,
which is known to cause problems (especially on Windows).
Disable the personal firewall for Delta Chat on both ends and try again
+
+
+
Guest Networks may not allow devices to communicate with each other.
+If possible, use a non-guest network.
Ensure there is enough storage on the destination device
@@ -1165,7 +1344,7 @@ Do not exit Delta Chat.
Delta Chat is already logged in on the destination device?
-You can use multiple accounts per device, just add another account
If you still have problems or if you cannot scan a QR code
@@ -1188,8 +1367,8 @@ try the manual transfer described below
screen unlock PIN, pattern, or password. Then you can click on “Start
Backup”. This saves the backup file to your device. Now you have to transfer
it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
+
On the new device, in the “I already have a profile” menu,
+choose “restore from backup”. After import, your conversations, encryption
keys, and media should be copied to the new device.
If you use iOS: and you encounter difficulties, maybe
@@ -1220,53 +1399,6 @@ alebo AppImage pre Linux. Nájdete ich na
get.delta.chat.
-
-
-
- Na čo je dobré nastavenie „Odoslať kópiu sebe“?
-
-
-
-
-
Odoslaním kópie správ sebe samému zaistíte, že dostanete svoje vlastné
-správy na všetkých zariadeniach. Ak máte viacero zariadení a nezapnete ich, vy
-uvidíte iba správy od iných ľudí a správy, ktoré vy odošlete z
- aktuálneho zariadenia.
-
-
Kópia sa odošle do priečinka Doručená pošta a potom sa presunie do priečinka DeltaChat; nie je vložená do priečinka „Odoslané“. Delta Chat nikdy nič neodovzdáva do priečinka “Odoslané”, pretože by to znamenalo nahrať správu dvakrát (raz cez SMTP, a raz cez IMAP do priečinka Odoslané).
-
-
Predvolené nastavenie pre kópia pre seba je “nie”.
-
-
-
-
- Prečo si môžem vybrať sledovanie priečinka „Odoslané“?
-
-
-
-
-
Jediný dôvod, prečo chcete sledovať priečinok Odoslané, je, ak používate iný
-poštový program (napríklad Thunderbird) vedľa vašej aplikácie Delta Chat a chcete svoj MUA
- aby sa zúčastňoval chatových konverzácií.
-
-
Odporúčame však použiť Delta Chat Desktop Client; môžete si ho stiahnuť
-na get.delta.chat. Možnosť sledovať „Odoslané“
-priečinok môže v budúcnosti zmiznúť. Bolo to zavedené v čase, kedy nebol
-Delta Chat Desktop dostupný na všetkých platformách.
-
-
-
-
- Prečo sa môžem rozhodnúť nesledovať priečinok DeltaChat?
-
-
-
-
-
Niektorí ľudia používajú Delta Chat ako bežný e-mailový klient a chcú používať priečinok Doručená pošta
-pre ich mail, namiesto priečinku DeltaChat. Ak zakážete „Sledovať
-priečinok DeltaChat“, mali by ste tiež zakázať „presunúť chatové správy do DeltaChat“.
-V opačnom prípade nemusí odstraňovanie správ alebo nastavenia viacerých zariadení fungovať správne.
-
@@ -1413,11 +1545,8 @@ streamed to your chat partners, between 5 minutes and 6 hours.
the chat.
To see the map and view locations of others, you need to turn on the feature
in the advanced settings.
-
This feature will not share your location with anyone except your chat
-partners. But: to show the map, we need to download map tiles from
-mapbox.com, so if you view the map, mapbox.com is asked for the map of a
-specific area. If this is a privacy risk for you, this feature might not be
-for you. We are working on finding a decentralized alternative for Mapbox.
+
This feature will not share your location with anyone except your chat partners.
+Map tiles are downloaded from OpenStreetMap.
On desktop, the OS typically can’t determine your location. Instead you can
right click on the map and describe a location, which is sent to the chat as
a message, but also appears on the map.
@@ -1468,18 +1597,18 @@ vykonáva aplikácia Delta Chat.
In this case, Delta Chat doesn’t need to watch the Inbox, and it’s enough to only watch the DeltaChat folder.
-
+
- How can I change my account to a different e-mail address?
+ How can I use a different e-mail address with my profile?
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
+
Change your address in “Settings → Advanced → Password and Account” and
+enter the password of your new e-mail account (and if necessary, server settings).
You will get an information notice about the fact that you are moving to a new address.
An additional notice will also show up in your “Device messages” chat.
@@ -1510,6 +1639,60 @@ it.
+
+
+
+ Aké povolenia potrebuje Delta Chat?
+
+
+
+
+
V závislosti od používaného operačného systému
+môžete byť požiadaní o udelenie povolení aplikácii.
+Delta Chat robí toto s týmito povoleniami:
+
+
+
Camera (can be disallowed)
+
+
take pictures and videos: for sending Photos
+
+
+
Contacts (can be disallowed)
+
+
read your contacts: to discover contacts to chat with
+
+
+
Location (can be disallowed)
+
+
access approximate location (network location sources): for the location streaming feature
+
access precise location (GPS and network location sources): for the location streaming feature
+
+
+
Microphone (can be disallowed)
+
+
record audio: for audio messages
+
+
+
Storage (can be disallowed)
+
+
modify or delete the contents of your SD card: to download message attachments
+
read the contents of your SD card: to share files with your contacts
+
+
+
Other app capabilities
+
+
change your audio settings: so you can choose ring tones and volume for notifications and audio messages
+
run at startup: so you don’t have to start Delta Chat manually
+
control vibration: for notifications
+
view network connections: to connect to your E-Mail provider
+
prevent phone from sleeping: so you can easier copy the security code during the Autocrypt Setup Message
+
have full network access: to connect to your E-Mail provider
+
view Wi-Fi connections: to connect to your E-Mail provider
+
ask to ignore battery optimisations: for achieving “instant message delivery”
- Ak Delta Chat používa e-mail, je to naozaj Instantný Messenger?
+ Prečo musím zadávať svoje e-mailové heslo do Delta Chat? Je to bezpečné?
+
Rovnako ako v prípade iných e-mailových programov, ako sú Thunderbird, K9-Mail alebo Outlook,
+program potrebuje heslo, aby ste ho mohli používať na odosielanie e-mailov. Samozrejme,
+heslo je uložené iba vo vašom zariadení. Heslo sa prenáša iba na vášho poskytovateľa e-mailu (keď sa prihlásite), ktorý má aj tak prístup k vašim e-mailom.
+
+
Ak používate poskytovateľa e-mailu s podporou OAuth2, ako je gmail.com alebo yandex.ru,
+nie je potrebné ukladať heslo do zariadenia. V tomto prípade iba
+používa sa prístupový token.
+
+
Keďže Delta Chat je Open Source, môžete skontrolovať Zdrojový
+Kód
+ak chcete overiť, že vaše poverenia sú spracované bezpečne. Sme radi
+o spätnej väzbe, vďaka ktorej je aplikácia bezpečnejšia pre všetkých našich používateľov.
+
+
+
+
+ Ktoré správy sa zobrazujú v Delta Chate?
+
+
+
+
+
By default, Delta Chat shows all e-mails.
+
+
At “Settings → Advanced → Show Classic E-Mails”,
+you can change this. You have these options:
+
-
Odosielanie a prijímanie správ zvyčajne trvá niekoľko sekúnd. Niekedy
- existujú prípady, keď to trvá dlhšie, ale to platí pravdepodobne aj pre
- akýkoľvek iný messenger.
-
Okamžité chatovanie funguje rýchlo, ak obe strany aktívne používajú aplikáciu. to je
-niekedy pomalšie, ak aplikácia beží na pozadí.
-
Prijímanie správ potom môže trvať niekoľko minút, pretože Android aj iOS často
-zastavia spustenie Delta Chatu na pozadí a iba príležitostne ho prebudia. Toto umelé oneskorenie je zvyčajne horšie na iOS ako na Androide.
-
Avšak, Android a iOS killne aplikácie bežiace na pozadí
-je to
-problém mnohých legitímnych aplikácií. Ďalšie informácie nájdete v časti
-dontkillmyapp.com.
+
“No, chats only”: Only messages sent by other Delta Chat users and replies to
+your Delta Chat messages are shown. This makes most sense if you use the same
+e-mail account for normal e-mails as well.
+
“All”: Delta Chat shows all e-mails that are sent to your email address. This
+makes sense if you want to use Delta Chat for all your e-mails, so no message
+gets lost. This is the default setting.
+
“For accepted contacts”: Delta Chat shows all e-mails from contacts with whom
+you already have a chat, but new chats only pop up for Delta Chat messages.
+This helps to decide on a case-by-case basis whether you want to have a
+conversation in Delta Chat or in a “normal” e-mail app.
+
+
+
+ Podporuje Delta Chat e-maily HTML?
+
+
+
+
+
Yes, incoming HTML messages come with a “Show full message” button.
+Outgoing messages always use plain text.
+
+
+
+
+ Can I set the E-Mail Subject with Delta Chat?
+
+
+
+
+
Delta Chat sets (and encrypts!) the classic e-mail subject
+automatically to the group name or to the sender name.
+
+
So if you want to set the subject yourself,
+for example for a formal e-mail to a business contact,
+you can create a group
+with only yourself and the recipient(s).
+Set the Chat Title to the Subject you want,
+and then send your e-mail as the first message.
+If the recipients don’t use Delta Chat,
+it will look like a normal,
+formal e-mail to them.
+You will get bonus professionalism points
+if you set a signature text.
+
+
+
+
+ Na čo je dobré nastavenie „Odoslať kópiu sebe“?
+
+
+
+
+
Odoslaním kópie správ sebe samému zaistíte, že dostanete svoje vlastné
+správy na všetkých zariadeniach. Ak máte viacero zariadení a nezapnete ich, vy
+uvidíte iba správy od iných ľudí a správy, ktoré vy odošlete z
+ aktuálneho zariadenia.
+
+
Kópia sa odošle do priečinka Doručená pošta a potom sa presunie do priečinka DeltaChat; nie je vložená do priečinka „Odoslané“. Delta Chat nikdy nič neodovzdáva do priečinka “Odoslané”, pretože by to znamenalo nahrať správu dvakrát (raz cez SMTP, a raz cez IMAP do priečinka Odoslané).
+
+
The default setting for “Send Copy to Self” is “on”.
+
+
+
+
+ Prečo si môžem vybrať sledovanie priečinka „Odoslané“?
+
+
+
+
+
Jediný dôvod, prečo chcete sledovať priečinok Odoslané, je, ak používate iný
+poštový program (napríklad Thunderbird) vedľa vašej aplikácie Delta Chat a chcete svoj MUA
+ aby sa zúčastňoval chatových konverzácií.
+
+
Odporúčame však použiť Delta Chat Desktop Client; môžete si ho stiahnuť
+na get.delta.chat. Možnosť sledovať „Odoslané“
+priečinok môže v budúcnosti zmiznúť. Bolo to zavedené v čase, kedy nebol
+Delta Chat Desktop dostupný na všetkých platformách.
+
+
+
+
+ Prečo sa môžem rozhodnúť nesledovať priečinok DeltaChat?
+
+
+
+
+
Niektorí ľudia používajú Delta Chat ako bežný e-mailový klient a chcú používať priečinok Doručená pošta
+pre ich mail, namiesto priečinku DeltaChat. Ak zakážete „Sledovať
+priečinok DeltaChat“, mali by ste tiež zakázať „presunúť chatové správy do DeltaChat“.
+V opačnom prípade nemusí odstraňovanie správ alebo nastavenia viacerých zariadení fungovať správne.
As you use an e-mail account for Delta Chat,
+how you can delete your account depends on your e-mail provider.
+We don’t have any control over your e-mail account,
+so unfortunately we can’t help you with that.
+
+
If you want to keep the account,
+but uninstall Delta Chat,
+it is recommended to leave any group chat before uninstalling Delta Chat.
-
-
- Was Delta Chat independently audited for security vulnerabilities?
-
-
-
-
-
The Delta Chat project underwent four independent security audits in the last years:
-
-
-
-
In 2019, Include Security analyzed Delta
-Chat’s PGP and
-RSA libraries.
-It found no critical issues,
-but two high-severity issues that we subsequently fixed.
-It also revealed one medium-severity and some less severe issues,
-but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
-Some of them we nevertheless fixed since the audit was concluded.
-You can read the full report here.
-
-
-
In 2020, Include Security analyzed Delta
-Chat’s Rust core,
-IMAP,
-SMTP, and
-TLS libraries.
-It did not find any critical or high-severity issues.
-The report raised a few medium-severity weaknesses -
-they are no threat to Delta Chat users on their own
-because they depend on the environment in which Delta Chat is used.
-For usability and compatibility reasons,
-we can not mitigate all of them
-and decided to provide security recommendations to threatened users.
-You can read the full report here.
-
-
-
Beginning 2023, Cure53 analyzed both the transport encryption of
-Delta Chat’s network connections and a reproducible mail server setup as
-recommended on this site.
-You can read more about the audit on our blog
-or read the full report here.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
@@ -1687,7 +1940,7 @@ completing Rust/Python bindings and instigating a Chat-bot eco-system.
In 2021 we received further EU funding for two Next-Generation-Internet
-proposals, namely for EPPD - e-mail provider portability directory (~97K EUR) and AEAP - email address porting (~90K EUR) which resulted in better multi-account support, improved QR-code contact and group setups and many networking improvements on all platforms.
From End 2021 till March 2023 we received Internet Freedom funding (500K USD) from the
diff --git a/assets/help/sq/help.html b/src/main/assets/help/sq/help.html
similarity index 78%
rename from assets/help/sq/help.html
rename to src/main/assets/help/sq/help.html
index fe8c18656..90059c89b 100644
--- a/assets/help/sq/help.html
+++ b/src/main/assets/help/sq/help.html
@@ -4,17 +4,14 @@
Delta Chat është një aplikacion i ri bisedash që i dërgon mesazhet përmes email-i, të fshehtëzuar, nëse është e mundur, me Autocrypt.
-Nuk ju duhet të regjistroheni gjëkundi, thjesht përdorni me Delta Chat-in llogarinë tuaj ekzistuese email.
+
Delta Chat is a reliable, decentralized and secure messaging app,
+available for mobile and desktop platforms.
+
+
Delta Chat feels like Whatsapp or Telegram but you can also use and regard it as an e-mail app.
+You can signup anonymously to a variety of interoperable chatmail servers
+which are minimal e-mail servers optimized for fast and secure operations.
+Or you may use classic e-mail servers and an existing e-mail account
+in which case Delta Chat acts as an e-mail app.
@@ -117,9 +134,15 @@
-
Me Delta Chat-in, mund t’i shkruani cilësdo adresë email ekzistuese - madje
-edhe kur marrësi nuk përdor aplikacionin Delta Chat. Për marrësin s’është
-e nevojshme të instalojë të njëjtin aplikacion me ju, si me programe të tjera.
+
To securely setup contact with others scan an invite QR code
+or share an invite link.
+This is required when using a (default) chatmail-based chat profile
+because chatmail servers reject un-encrypted outgoing messages.
+
+
If you create a chat profile with a classic e-mail address
+you may manually create a contact if you know their e-mail address
+and then write a message to them
+even if the recipient is not using Delta Chat.
@@ -130,45 +153,25 @@ e nevojshme të instalojë të njëjtin aplikacion me ju, si me programe të tje
-
Independent of any company or services. You own your data.
-
Your data is not saved on a central server unless all users are using
-the same e-mail servers
-
You do not distribute your address book to anyone.
-
Fast by the use of Push-IMAP.
-
Largest userbase - recipients not using Delta Chat can be reached as well.
-
No Spam - only messages of known users are shown by default.
Si parazgjedhje, Delta Chat i shfaq krejt email-et.
-
-
Këtë mund ta ndryshoni te
-“Rregullime -> Fjalosje & Media -> Shfaq Email-e Klasikë. Keni këto mundësi:
-
-
-
“Jo, vetëm fjalosje”: Shfaqen vetëm mesazhe dërguar nga përdorues të tjerë
-të Delta Chat-it dhe përgjigje për ta në mesazhet tuaj Delta Chat. Kjo ka kuptim
-nëse përdorni të njëjtën llogari email edhe për email të zakonshëm.
-
“Krejt”: Delta Chat-i i shfaq krejt email-et që janë dërguar te adresa juaj. Kjo
-ka kuptim nëse e përdorni Delta Chat-in për krejt email-et tuaj, që kështu të mos
-humbin mesazhe.
- Kjo është parazgjedhja për këtë rregullim.
+
Anonymous chat profiles with fast, secure and interoperable chatmail servers
+which offer instant Push Notifications for iOS and Android devices.
+
+
+
Pervasive multi-profile and multi-device support on all platforms.
“Për kontakte të pranuar”: Delta Chat-i shfaq krejt email-et prej kontaktesh me
-të cilët keni tashmë një fjalosje, por fjalosje të reja shfaqen vetëm për mesazhe
-Delta Chat. Kjo ndihmon të vendoset për çdo rast nëse doni të keni një bisedë
-në Delta Chat, apo në një aplikacion të zakonshëm email-esh.
@@ -210,18 +213,25 @@ s’doni të merrni mesazhe prej këtij personi, shihni mundësinë e blloki
- Si mund të shtoj shumë llogari, ose të kaloj nga njëra te tjetra?
+ What are profiles? How can I switch between them?
-
Mundeni të punoni kollaj me llogari shtesë në klientët Delta Chat për celular dhe desktop, duke klikuar:
-
-
mbi butonin e menusë dhe mandej “Ndërroni Llogari” (Android dhe desktop)
-
ose mbi ikonën e profilit dhe mandej “Shtoni Llogari” (iOS)
-
+
A profile is a name, a picture and some additional information for encrypting messages.
+A profile lives on your device(s) only
+and uses a chatmail or a classic e-mail server to transport messages.
On first installation of Delta Chat a first profile is created.
+
+
Later, you can tap your profile image in the upper left corner to Add Profiles
+or to Switch Profiles.
+
+
You may want to use separate profiles for political, family or work related activities,
+or e. g. for a dedicated “spam-profile” with which you register at websites and platforms
+that tend to cause unsolicited messages (“spam”) sooner or later.
- A mbulon Delta Chat-i email-e HTML?
+ Can I set a Signature Text/Status/Motto with Delta Chat?
-
Yes, incoming HTML messages come with a “Show full message” button.
-Outgoing messages always use plain text.
-
-
-
-
- Pse më duhet të jap fjalëkalimin e email-it tim në Delta Chat? A është e sigurt kjo?
-
-
-
-
-
Si edhe me programe të tjerë email-i, bie fjala, Thunderbird-i, K9-Mail-i, ose
-Outlook-u, programit i duhet fjalëkalimi, që kështu të mund të dërgoni email-e.
-Sigurisht, fjalëkalimi depozitohet vetëm në pajisjen tuaj. Fjalëkalimi i transmetohet
-vetëm furnizuesit të email-it tuaj (kur bëni hyrjen), i cili mund të hyjë te email-et
-tuaj, sido qoftë.
-
-
Nëse përdorni një furnizues email-i që mbulon OAuth2, bie fjala gmail.com ose
-yandex.ru, s’ka nevojë të depozitoni fjalëkalimin tuaj në pajisje. Në këtë rast
-do të përdoret vetëm një token hyrjesh.
-
-
Ngaqë Delta Chat-i është Me Burim të Hapur, mund të kontrolloni Kodin
-Burim,
-nëse doni të verifikoni se a trajtohen me siguri kredencialet tuaja. Na gëzojnë
-përshtypjet që e bëjn aplikacionin më të sigurt për krejt përdoruesit tanë.
-
-
-
-
- Ç’leje lyp Delta Chat-i?
-
-
-
-
-
Në varësi të sistemit operativ në përdorim, mund
-t’ju kërkohet t’i akordoni leje aplikacionit.
-Ja se ç’bën Delta Chat-i me këto leje:
-
-
-
Mbi kamerën (mund të çaktivizohet)
-
-
të bëjë foto dhe video: për dërgim Fotosh
-
-
-
Mbi kontaktet (mund të çaktivizohet)
-
-
të lexojë kontaktet tuaja: për të zbuluar kontakte për bisedë
-
-
-
Mbi vendndodhjen (mund të çaktivizohet)
-
-
të njohë vendndodhjen me përafërsi (burime vendndodhjeje rrjeti): për veçorinë e transmetimit të vendndodhjesh
-
të njohë vendndodhjen e përpiktë (GPS dhe burime vendndodhjeje rrjeti): për veçorinë e transmetimit të vendndodhjesh
-
-
-
Mbi mikrofonin (mund të çaktivizohet)
-
-
të incizojë audio: për mesazhe audio
-
-
-
Mbi depozitimin (mund të çaktivizohet)
-
-
të ndryshojë ose fshijë lëndën në kartën tuaj SD: për shkarkim bashkëngjitjesh mesazhesh
-
të lexojë lëndën e kartës tuaj SD: për të ndarë kartela me kontaktet tuaj
-
-
-
Aftësi të tjera të aplikacionit
-
-
të ndryshojë rregullimet tuaja mbi audion: që të mund të zgjidhni zile dhe volum për njoftime dhe mesazhe audio
-
të xhirojë gjatë nisjes së sistemit: që të mos ju duhet ta nisni Delta Chat-in dorazi
-
të kontrollojë dridhjen: për njoftime
-
të shohë lidhje në rrjet: për t’u lidhur me furnizuesin e shërbimit tuaj email
-
të pengojë telefonin tuaj të flejë: që të mund ta kopjoni më kollaj kodin e sigurisë gjatë Mesazhit të Ujdisjes së Autocrypt-it
-
të ketë hyrje të plotë në rrjet: për t’u lidhur me furnizuesin e shërbimit tuaj email
-
të shohë lidhjet Wi-Fi: për t’u lidhur me furnizuesin e shërbimit tuaj email
-
të kërkojë shpërfillje të optimizimeve për baterinë: për përdoruesit që duan t’i marrin mesazhet gjatë gjithë kohës
-
-
-
+
Yes,
+you can do so under “Settings > Profile > Signature Text”.
+Your contacts who use Delta Chat will see it
+when they view your contact details.
+To everyone else,
+It will appear as an e-mail signature
+below the text of all your messages.
@@ -397,22 +335,40 @@ u merakosni dhe lëruni ca kohë ;-)
t’u dërgoni një mesazh, ose të shkruani te një grup ku bëjnë pjesë edhe ata.
-
+
- Si mund ta fshij llogarinë time?
+ How do disappearing messages work?
-
Ngaqë për Delta Chat-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ë.
+
You can turn on “disappearing messages”
+in the settings of a chat,
+at the top right of the chat window,
+by selecting a time span
+between 1 minute and 5 weeks.
-
Nëse doni ta mbani llogarinë,
-por të çinstaloni Delta Chat-in,
-rekomandohet të braktisni çfarëdo grupi fjalosjeje, para çinstalimit të Delta Chat-it.
+
Until the setting is turned off again,
+each chat member’s Delta Chat app takes care
+of deleting the messages
+after the selected time span.
+The time span begins
+when the receiver first sees the message in Delta Chat.
+The messages are deleted
+both in each email account on the server,
+and in the app itself.
+
+
Note that you can rely on disappearing messages
+only as long as you trust your chat partners;
+malicious chat partners can take photos,
+or otherwise save, copy or forward messages before deletion.
+
+
Apart from that,
+if one chat partner uninstalls Delta Chat,
+the messages will not get deleted from their email account.
+They will most likely also not be decryptable anymore
+(as long as they were encrypted in the first place).
@@ -546,6 +502,170 @@ automatikisht mesazhe të vjetër.
sapo të jenë më të vjetër se aq.
+
+
+
+ What are Push Notifications? How can I get instant message delivery?
+
+
+
+
+
Push Notifications are sent by Apple and Google “Push services” to a user’s device
+so that an inactive Delta Chat app can fetch messages in the background
+and show notifications on a user’s phone if needed.
+
+
Push Notifications work with all chatmail servers on
+
+
+
+
iOS devices, by integrating with Apple Push services.
+
+
+
Android devices, by integrating with the Google FCM Push service,
+including on devices that use microG
+instead of proprietary Google code on the phone.
+
+
+
+
As of May 2024, classic e-mail servers do not support Push Notifications
+for Delta Chat users.
+
+
+
+
+ Are Push Notifications enabled on iOS devices? Is there an alternative?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Are Push notifications enabled / needed on Android devices?
+
+
+
+
+
If a “Push Service” is available, Delta Chat enables Push Notifications
+to achieve instant message delivery for all chatmail users.
+If you are using a classic e-mail provider instead of chatmail servers,
+Push Notifications are not available.
+
+
In the Delta Chat “Notifications” settings for “Instant delivery”
+you can change the following settings effecting all chat profiles:
+
+
+
+
Use Push Service: the default when using chatmail profiles and if
+a Push service is available on the phone.
+If you have both chatmail and classic e-mail profiles,
+then Push Notification will only work
+for incoming messages on chatmail profiles.
+
+
+
Use Background Connection: If you are not using a Push service,
+you may disable “battery optimizations” for Delta Chat,
+allowing it to fetch messages in the background.
+However, there could be delays from minutes to hours.
+Some Android vendors even restrict apps completely
+(see dontkillmyapp.com)
+and Delta Chat might not show incoming messages
+until you manually open the app again.
+
+
+
Force Background Connection: This is the fallback option
+if the previous options are not available or do not achieve “instant delivery”.
+Enabling it causes a permanent notification on your phone
+which may sometimes be “minified” with recent Android phones.
+
+
+
+
Both “Background Connection” options are energy-efficient and
+safe to try if you experience messages arrive only with long delays.
+
+
+
+
+ How private are Delta Chat Push Notifications?
+
+
+
+
+
Delta Chat Push Notification support avoids leakage of private information.
+It does not leak e-mail, IP address or message content (not even encrypted)
+to any system involved in the delivery of Push Notifications.
+
+
Here is how Delta Chat apps perform Push Notification delivery:
+
+
+
+
A Delta Chat app obtains a “device token” locally and stores it
+on the chatmail server.
+
+
+
When a chatmail server receives an e-mail for a Delta Chat user
+it forwards the “device token” to the central Delta Chat notification proxy.
+
+
+
The central Delta Chat notification proxy forwards
+the “device token” to the respective Push service (Apple, Google, etc.),
+without ever knowing the IP or e-mail address of Delta Chat users.
+
+
+
The central Push Service (Apple, Google, etc.)
+wakes up the Delta Chat app on your device
+to check for new messages in the background.
+It does not know about the chatmail or e-mail address of the device it wakes up.
+The central Apple/Google Push services never see an e-mail address (sender or receiver)
+and also never see any message content (also not in encrypted forms).
+
+
+
+
As of May 2024, chatmail servers know about “device tokens”
+but we plan to encrypt this information to the notification proxy
+such that the chatmail server never learns the device token.
+
+
The central Delta Chat notification proxy is small and fully implemented in Rust
+and forgets about device-tokens as soon as Apple/Google/etc processed them,
+usually in a matter of milliseconds.
+
+
Resulting from this overall privacy design, even the seizure of a chatmail server,
+or the full seizure of the central Delta Chat notification proxy
+would not reveal private information that Push services do not already have.
+
+
+
+
+ Why does Delta Chat integrate with centralized proprietary Apple/Google push services?
+
+
+
+
+
Delta Chat is a free and open source decentralized messenger with free server choice,
+but we want users to reliably experience “instant delivery” of messages,
+like they experience from Whatsapp, Signal or Telegram apps,
+without asking questions up-front that are more suited to expert users or developers.
Secure-Join protocols
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
@@ -599,49 +719,32 @@ guarantee end-to-end encrypted messages.
-
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
+
If you have a second communication channel with your chat partner,
+like a video chat or a different messenger,
+you can generate an invite link.
-
Inviter side:
+
If you are together in person,
+you can show a QR code to your chat partner.
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
+
For Group invitations,
+tap the chat group title to see its member list,
+and select “QR Invite code”.
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
+
For direct 1:1 chat invitations,
+tap the QR Code icon
+on the Delta Chat app main screen.
-
Joiner side:
+
Let your chat partner scan the QR image
+with their Delta Chat app,
+or click “Copy” or “Share” to create an invite link
+and share it with your chat partner.
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
@@ -695,7 +798,7 @@ but there is no green checkmark in the profile title.
This usually means that the contact “sent a message from another device”.
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
+please see Secure-Join protocols
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
@@ -723,7 +826,7 @@ even if the contact is a member there.
Your contact is using Delta Chat on a second device (phone or laptop)
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
+they should remove the profile from the new device
and add it as a second device as described here.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.
@@ -731,8 +834,8 @@ and guaranteed encryption is established with both devices of your contact.
Your contact reinstalled Delta Chat using their old account login
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
+they should remove the profile from the new device
+and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.
@@ -753,7 +856,7 @@ guaranteed end-to-end encryption will be automatically re-established.
Sometimes remaining in contact is more important than end-to-end encryption.
“Transport Layer Encryption” (TLS) may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
+But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.
In any case, you can not do much else than accept the warning.
@@ -919,12 +1022,12 @@ deliver messages to recipient’s devices.
Both for protecting against metadata-collecting e-mail servers
as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
+we recommend to use a chatmail server
+to create pseudonymous temporary profiles through QR-code scans.
+Note that Delta Chat apps on all platforms support multiple profiles
+so you can easily use situation-specific profiles next to your “main” profile
+with the knowledge that all their data, along with all metadata, will be deleted.
+Moreover, if a device is seized then contacts using temporary profiles
can not be identified easily, as compared to messengers which reveal
phone numbers in chat groups which in turn are often associated with legal identities.
@@ -983,7 +1086,7 @@ and their non-Autocrypt e-mail app.
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
+who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
it’s best to setup guaranteed end-to-end encryption with them
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
@@ -1001,10 +1104,10 @@ even if the direct chat between you two has a
The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
+
Guaranteed end-to-end encrypted chats protect against MITM attacks
+and turning on disappearing messages deletes the messages
on the server after a user-configured time.
Nëse s’ju duhet te shërbyesi një kopje jetëgjatë e mesazheve tuaj,
@@ -1083,11 +1186,12 @@ Kujdes: Sigurohuni se kyçi s’është i mbrojtur me fjalëkalim, ose hiqeni fj
-
Ka një mundësi të mirë që problemi të jetë se kyçi juaj është fshehtëzuar
-dhe/ose përdor një fjalëkalim. Kyçe të tillë nuk mbulohen nga Delta Chat-i. Mund
-të hiqni fshehtëzimin me frazëkalim dhe fjalëkalimin dhe të riprovoni. Nëse doni
-të mbani frazëkalimin tuaj, do t’ju duhet të krijoni një alias email-i për ta përdorur
-me Delta Chat-in, që kyçi i Delta Chat-it të jetë i lidhur me këtë alias email-i.
+
Ka shumë mundësi që problemi të jetë se kyçi juaj është i fshehtëzuar dhe/ose
+përdor një fjalëkalim. Kyçe të tillë nuk mbulohen nga Delta Chat. Ju lutemi,
+hiqeni fshehtëzimin dhe fjalëkalimin dhe riprovoni importimin.
+
+
Another common error is having the wrong file ending.
+Use the ASCII armored format and an .asc file ending.
Për sa u takon formateve, Delta Chat-i mbulon formate të rëndomtë OpenPGP
kyçesh private, megjithatë, ka pak gjasa që të mbulojmë 100% të krejt kyçeve
@@ -1102,6 +1206,66 @@ fjalëkalimit tuaj një vlerë të zbrazët, që nga dritarja Administrim Kyçes
GnuPG-në mund ta bëni përmes rreshti urdhrash.
Për programe të tjera, mund të gjeni një zgjidhje në internet.
+
+
+
+ A është bërë auditim i pavarur i Delta Chat-it për cenueshmëri sigurie?
+
+
+
+
+
The Delta Chat project underwent four independent security audits and one
+independent security analysis, from most recent to older:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
Në fillim të 2023-shit, ndreqëm probleme sigurie dhe privatësie me
+veçorinë “aplikacione web dhënë në një fjalosje”, të lidhura me dështime
+në izolimin e tyre, veçanërisht nën Chromium. Në vazhdim kaluam një auditim
+të pavarur sigurie prej Cure53 dhe krejt problemet e gjetura u ndreqën në
+seritë 1.36 të hedhura në qarkullim në prill të 2023-shit.
+Shihni këtu, për shpjegim të plotë të sfondit për sigurinë lidhur me E2E në web.
+
+
+
Në fillim të 2023-it, Cure53 analizoi qoftë fshehtëzimin
+e transporteve për lidhje rrjeti të Delta Chat-it, qoftë një formësim të riprodhueshëm
+shërbyesi poste si të rekomanduarin në këtë sajt.
+Mund të lexoni më tepër rreth auditimit në blogun tonë,
+ose të lexoni raportin e plotë këtu.
+
+
+
Më 2020-n, Include Security analizoi bazën
+në Rust të Delta Chat-it, si dhe bibliotekat IMAP, SMTP
+dhe TLS.
+S’gjeti ndonjë problem kritik apo të rëndësisë së madhe.
+Raporti ngriti pak dobësi të rëndësisë mesatare -
+ato në vetvete s’përbëjnë kërcënim për përdoruesit e Delta Chat-it
+ngaqë varen në mjedisin në të cilin përdoret Delta Chat-i.
+Për arsye përputhjeje dhe përdorimi,
+s’mund t’i shmangim krejt ato
+dhe vendosëm të ofrojmë rekomandime sigurie për përdoruesit e kërcënuar.
+Mund të lexoni raportin e plotë këtu.
+
+
+
Më 2019-n, Include Security analizoi libraritë
+PGP dhe
+RSA të Delta Chat-it.
+S’gjeti probleme kritike,
+por dy çështje me rëndësi të lartë që i ndreqim në vazhdim.
+Nxori gjithashtu një çështje të rëndësisë mesatare dhe disa çështje me më pak rëndësi,
+por s’kishte ndonjë rrugë për t’i shfrytëzuar këto cenueshmëri në sendërtimin e Delta Chat-it.
+Pavarësisht, disa nga këto i ndreqëm që kur përfundoi auditimi.
+Mund të lexoni raportin e plotë këtu.
+
+
+
@@ -1118,7 +1282,7 @@ Për programe të tjera, mund të gjeni një zgjidhje në internet.
-
Po Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
+
Po Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
@@ -1156,10 +1320,19 @@ Njëra pajisja s’ka nevojë për tjetrën që të funksionojë.
Kontrolloni sërish që të dyja pajisjet të gjenden në të njëjtin rrjet Wi-Fi ose klasik
+
+
On Windows, go to Control Panel / Network and Internet
+and make sure, Private Network is selected as “Network profile type”
+(after transfer, you can change back to the original value)
+
Sistemi juaj mund të ketë një “firewall personal”,
që dihet se shkakton probleme (veçanërisht në Windows).
Çaktivizoni firewall-in personal për Delta Chat-in në të dy anët dhe riprovoni
+
+
+
Guest Networks may not allow devices to communicate with each other.
+If possible, use a non-guest network.
Garantoni se ka depozitë të mjaftueshme te pajisja vendmbërritje
@@ -1194,8 +1367,8 @@ provoni shpërnguljen dorazi të përshkruar më poshtë
screen unlock PIN, pattern, or password. Then you can click on “Start
Backup”. This saves the backup file to your device. Now you have to transfer
it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
+
On the new device, in the “I already have a profile” menu,
+choose “restore from backup”. After import, your conversations, encryption
keys, and media should be copied to the new device.
If you use iOS: and you encounter difficulties, maybe
@@ -1228,57 +1401,6 @@ Windows Desktop, ose AppImage për Linux. Mund t’i gjeni te
get.delta.chat.
-
-
-
- Përse hyn në punë rregullimi “Dërgojini Vetes Një Kopje”?
-
-
-
-
-
Dërgimi vetes i një kopjeje të mesazheve tuaj siguron marrjen e mesazheve tuaj
-në krejt pajisjet. Nëse keni disa pajisje dhe nuk i mbani ndezur, shihni vetëm
-mesazhet prej të tjerëve, dhe mesazhet që dërgoni prej pajisjes që keni hapur
-në atë çast.
-
-
Kopja dërgohet te Të marrët, dhe mandej kalohet te dosja DeltaChat; nuk vendoset
-te dosja “Të dërguar”. Delta Chat-i nuk ngarkon kurrë ndonjë gjë te dosja
-Të dërguar, ngaqë kjo do të thoshte ngarkim dy herë të një mesazhi (një herë
-përmes SMTP-s, dhe një herë përmes IMAP-it në dosjen Të dërguar).
-
-
Parazgjedhja për rregullimin dërgoja-vetes është “jo”.
-
-
-
-
- Pse mund të zgjedh të vëzhgoj dosjen “Të dërguar”?
-
-
-
-
-
Arsyeja e vetme pse dikush mund të dojë të vëzhgojë dosjen Të marrë është kur
-përdoret tjetër program email-sh (bie fjala, Thunderbird-i) në krah të
-aplikacionit tuaj Delta Chat, dhe doni që MUA juaj të marrë pjesë në biseda.
-
-
Sidoqoftë, rekomandojmë të përdoret Klienti Desktop i Delta Chat-it; mund ta
-shkarkoni që nga get.delta.chat. 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 Delta Chat për krejt platformat.
-
-
-
-
- Pse mund të zgjedh të mos e vëzhgoj dosjen DeltaChat?
-
-
-
-
-
Disa e përdorin Delta Chat-in si një klient të rregullt email, dhe duan
-ta përdorin dosjen Të marrë për email-in e tyre, në vend se dosjen DeltaChat.
-Nëse çaktivizoni “Vëzhgo dosjen DeltaChat”, duhet të çaktivizoni edhe “kalo
-mesazhe bisedash te DeltaChat”. Përndryshe, fshirja e mesazheve në instalime me
-shumë pajisje mund të mos punojë si duhet.
-
@@ -1416,26 +1538,20 @@ kufizimesh sasie email-esh që dërgohen dhe konsum trafiku në rrjet).
-
Dhënien e vendndodhjes mund ta aktivizoni te ndarja “veçori eksperimentale”
-e rregullimeve të mëtejshme.
-
Nëse doni të jepni vendndodhjen tuaj në një fjalosje, kaloni te “bashkëngjit” dhe
-përzgjidhni “vendndodhje”. Tanimë mund të caktoni një interval kohor gjatë
-të cilit vendndodhja juaj do t’u tregohet partnerëve të fjalosjes tuaj, nga 5 minuta
-deri në 6 orë.
-
Kur ndryshon vendndodhja juaj, të tjerët në fjalosje mund ta shohin te një hartë
-te fjalosja.
-
Që të shihni hartën dhe shihni vendndodhjen e të tjerëve, lypset ta aktivizoni
-veçorinë te rregullimet e mëtejshme.
-
Kjo veçori s’do t’i tregojë vendndodhjen tuaj tjetërkujt nga partnerët e fjalosjes
-tuaj. Por: që të shfaqin hartën, na duhet të shkarkojmë pjesë harte nga
-mapbox.com, ndaj, nëse shihni hartën, mapbox.com i kërkohet harta e
-një zone të caktuar. Nëse kjo përbën rrezik privatësie për ju, kjo veçori s’bën
-për ju. Po punojmë për të gjetur një alternativë të decentralizuar në vend të
-Mapbox-it.
-
Në desktop, OS më vete s’mund të përcaktojë vendndodhjen tuaj. Në vend
-të kësaj, mund të djathtasklikoni mbi hartën dhe të përshkruani një
-vendndodhje, e cila dërgohet te fjalosja si një mesazh, por që shfaqet edhe
-te harta.
+
You can turn on location streaming in the “experimental features” section of
+the advanced settings.
+
Now, if you want to share your location in a chat, go to “attach” and select
+“location”. You can now set a time frame in which your location will be
+streamed to your chat partners, between 5 minutes and 6 hours.
+
When your location changes, the others in the chat can view it on a map in
+the chat.
+
To see the map and view locations of others, you need to turn on the feature
+in the advanced settings.
+
This feature will not share your location with anyone except your chat partners.
+Map tiles are downloaded from OpenStreetMap.
+
On desktop, the OS typically can’t determine your location. Instead you can
+right click on the map and describe a location, which is sent to the chat as
+a message, but also appears on the map.
@@ -1492,8 +1608,8 @@ DeltaChat. Zakonisht kjo do të bëhej nga aplikacioni Delta Chat.
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
+
Change your address in “Settings → Advanced → Password and Account” and
+enter the password of your new e-mail account (and if necessary, server settings).
You will get an information notice about the fact that you are moving to a new address.
An additional notice will also show up in your “Device messages” chat.
@@ -1524,6 +1640,60 @@ it.
+
+
+
+ Ç’leje lyp Delta Chat-i?
+
+
+
+
+
Në varësi të sistemit operativ në përdorim, mund
+t’ju kërkohet t’i akordoni leje aplikacionit.
+Ja se ç’bën Delta Chat-i me këto leje:
+
+
+
Camera (can be disallowed)
+
+
take pictures and videos: for sending Photos
+
+
+
Contacts (can be disallowed)
+
+
read your contacts: to discover contacts to chat with
+
+
+
Location (can be disallowed)
+
+
access approximate location (network location sources): for the location streaming feature
+
access precise location (GPS and network location sources): for the location streaming feature
+
+
+
Microphone (can be disallowed)
+
+
record audio: for audio messages
+
+
+
Storage (can be disallowed)
+
+
modify or delete the contents of your SD card: to download message attachments
+
read the contents of your SD card: to share files with your contacts
+
+
+
Other app capabilities
+
+
change your audio settings: so you can choose ring tones and volume for notifications and audio messages
+
run at startup: so you don’t have to start Delta Chat manually
+
control vibration: for notifications
+
view network connections: to connect to your E-Mail provider
+
prevent phone from sleeping: so you can easier copy the security code during the Autocrypt Setup Message
+
have full network access: to connect to your E-Mail provider
+
view Wi-Fi connections: to connect to your E-Mail provider
+
ask to ignore battery optimisations: for achieving “instant message delivery”
- Sa kohë që Delta Chat-i përdor email, a është vërtet një Shkëmbyes Mesazhesh të Atypëratyshme?
+ Pse më duhet të jap fjalëkalimin e email-it tim në Delta Chat? A është e sigurt kjo?
+
Si edhe me programe të tjerë email-i, bie fjala, Thunderbird-i, K9-Mail-i, ose
+Outlook-u, programit i duhet fjalëkalimi, që kështu të mund të dërgoni email-e.
+Sigurisht, fjalëkalimi depozitohet vetëm në pajisjen tuaj. Fjalëkalimi i transmetohet
+vetëm furnizuesit të email-it tuaj (kur bëni hyrjen), i cili mund të hyjë te email-et
+tuaj, sido qoftë.
+
+
Nëse përdorni një furnizues email-i që mbulon OAuth2, bie fjala gmail.com ose
+yandex.ru, s’ka nevojë të depozitoni fjalëkalimin tuaj në pajisje. Në këtë rast
+do të përdoret vetëm një token hyrjesh.
+
+
Ngaqë Delta Chat-i është Me Burim të Hapur, mund të kontrolloni Kodin
+Burim,
+nëse doni të verifikoni se a trajtohen me siguri kredencialet tuaja. Na gëzojnë
+përshtypjet që e bëjn aplikacionin më të sigurt për krejt përdoruesit tanë.
+
+
+
+
+ Cilat mesazhe shfaqen në Delta Chat?
+
+
+
+
+
Si parazgjedhje, Delta Chat i shfaq krejt email-et.
+
+
At “Settings → Advanced → Show Classic E-Mails”,
+you can change this. You have these options:
+
-
Normalisht, dërgimi dhe marrja e mesazheve ha ca sekonda. Ndonjëherë ka raste
-kur kjo zgjat pak më shumë, por mund të thuhet se kjo është e vërtetë edhe për
-çfarëdo shkëmbyesi tjetër mesazhesh.
-
Biseda e atypëratyshme funksionon shpejt, nëse të dy palët përdorin aktivisht
-aplikacionin. Ndonjëherë është më e ngadaltë, nëse aplikacioni xhiron në
-prapaskenë.
-
Në raste të tilla, marrja e mesazheve mund të dojë minuta, ngaqë si Android-i,
-ashtu edhe iOS-i shpesh e ndalin funksionimin në prapaskenë të Delta Chat-it,
-dhe e zgjojnë vetëm me raste. Kjo vonesë artificiale zakonisht është më keq në
-iOS, se sa në Android.
-
Sido qoftë, fakti që Android-i dhe iOS-i asgjësojnë aplikacione që xhirojnë në
-prapaskenë është një problem për mjaft aplikaicone të ligjshme. Për më tepër
-të dhëna, shihni dontkillmyapp.com.
+
“Jo, vetëm fjalosje”: Shfaqen vetëm mesazhe dërguar nga përdorues të tjerë
+të Delta Chat-it dhe përgjigje për ta në mesazhet tuaj Delta Chat. Kjo ka kuptim
+nëse përdorni të njëjtën llogari email edhe për email të zakonshëm.
+
+
“Krejt”: Delta Chat-i i shfaq krejt email-et që janë dërguar te adresa juaj. Kjo
+ka kuptim nëse e përdorni Delta Chat-in për krejt email-et tuaj, që kështu të mos
+humbin mesazhe.
+ Kjo është parazgjedhja për këtë rregullim.
+
+
“Për kontakte të pranuar”: Delta Chat-i shfaq krejt email-et prej kontaktesh me
+të cilët keni tashmë një fjalosje, por fjalosje të reja shfaqen vetëm për mesazhe
+Delta Chat. Kjo ndihmon të vendoset për çdo rast nëse doni të keni një bisedë
+në Delta Chat, apo në një aplikacion të zakonshëm email-esh.
+
+
+
+ A mbulon Delta Chat-i email-e HTML?
+
+
+
+
+
Yes, incoming HTML messages come with a “Show full message” button.
+Outgoing messages always use plain text.
+
+
+
+
+ Can I set the E-Mail Subject with Delta Chat?
+
+
+
+
+
Delta Chat sets (and encrypts!) the classic e-mail subject
+automatically to the group name or to the sender name.
+
+
So if you want to set the subject yourself,
+for example for a formal e-mail to a business contact,
+you can create a group
+with only yourself and the recipient(s).
+Set the Chat Title to the Subject you want,
+and then send your e-mail as the first message.
+If the recipients don’t use Delta Chat,
+it will look like a normal,
+formal e-mail to them.
+You will get bonus professionalism points
+if you set a signature text.
+
+
+
+
+ Përse hyn në punë rregullimi “Dërgojini Vetes Një Kopje”?
+
+
+
+
+
Dërgimi vetes i një kopjeje të mesazheve tuaj siguron marrjen e mesazheve tuaj
+në krejt pajisjet. Nëse keni disa pajisje dhe nuk i mbani ndezur, shihni vetëm
+mesazhet prej të tjerëve, dhe mesazhet që dërgoni prej pajisjes që keni hapur
+në atë çast.
+
+
Kopja dërgohet te Të marrët, dhe mandej kalohet te dosja DeltaChat; nuk vendoset
+te dosja “Të dërguar”. Delta Chat-i nuk ngarkon kurrë ndonjë gjë te dosja
+Të dërguar, ngaqë kjo do të thoshte ngarkim dy herë të një mesazhi (një herë
+përmes SMTP-s, dhe një herë përmes IMAP-it në dosjen Të dërguar).
+
+
The default setting for “Send Copy to Self” is “on”.
+
+
+
+
+ Pse mund të zgjedh të vëzhgoj dosjen “Të dërguar”?
+
+
+
+
+
Arsyeja e vetme pse dikush mund të dojë të vëzhgojë dosjen Të marrë është kur
+përdoret tjetër program email-sh (bie fjala, Thunderbird-i) në krah të
+aplikacionit tuaj Delta Chat, dhe doni që MUA juaj të marrë pjesë në biseda.
+
+
Sidoqoftë, rekomandojmë të përdoret Klienti Desktop i Delta Chat-it; mund ta
+shkarkoni që nga get.delta.chat. 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 Delta Chat për krejt platformat.
+
+
+
+
+ Pse mund të zgjedh të mos e vëzhgoj dosjen DeltaChat?
+
+
+
+
+
Disa e përdorin Delta Chat-in si një klient të rregullt email, dhe duan
+ta përdorin dosjen Të marrë për email-in e tyre, në vend se dosjen DeltaChat.
+Nëse çaktivizoni “Vëzhgo dosjen DeltaChat”, duhet të çaktivizoni edhe “kalo
+mesazhe bisedash te DeltaChat”. Përndryshe, fshirja e mesazheve në instalime me
+shumë pajisje mund të mos punojë si duhet.
Ngaqë për Delta Chat-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ë.
+
+
Nëse doni ta mbani llogarinë,
+por të çinstaloni Delta Chat-in,
+rekomandohet të braktisni çfarëdo grupi fjalosjeje, para çinstalimit të Delta Chat-it.
-
-
- A është bërë auditim i pavarur i Delta Chat-it për cenueshmëri sigurie?
-
-
-
-
-
Projekti Delta Chat ka pasur katër auditime të pavarur sigurie gjatë viteve të fundit:
-
-
-
-
Më 2019-n, Include Security analizoi libraritë
-PGP dhe
-RSA të Delta Chat-it.
-S’gjeti probleme kritike,
-por dy çështje me rëndësi të lartë që i ndreqim në vazhdim.
-Nxori gjithashtu një çështje të rëndësisë mesatare dhe disa çështje me më pak rëndësi,
-por s’kishte ndonjë rrugë për t’i shfrytëzuar këto cenueshmëri në sendërtimin e Delta Chat-it.
-Pavarësisht, disa nga këto i ndreqëm që kur përfundoi auditimi.
-Mund të lexoni raportin e plotë këtu.
-
-
-
Më 2020-n, Include Security analizoi bazën
-në Rust të Delta Chat-it, si dhe bibliotekat IMAP, SMTP
-dhe TLS.
-S’gjeti ndonjë problem kritik apo të rëndësisë së madhe.
-Raporti ngriti pak dobësi të rëndësisë mesatare -
-ato në vetvete s’përbëjnë kërcënim për përdoruesit e Delta Chat-it
-ngaqë varen në mjedisin në të cilin përdoret Delta Chat-i.
-Për arsye përputhjeje dhe përdorimi,
-s’mund t’i shmangim krejt ato
-dhe vendosëm të ofrojmë rekomandime sigurie për përdoruesit e kërcënuar.
-Mund të lexoni raportin e plotë këtu.
-
-
-
Në fillim të 2023-it, Cure53 analizoi qoftë fshehtëzimin
-e transporteve për lidhje rrjeti të Delta Chat-it, qoftë një formësim të riprodhueshëm
-shërbyesi poste si të rekomanduarin në këtë sajt.
-Mund të lexoni më tepër rreth auditimit në blogun tonë,
-ose të lexoni raportin e plotë këtu.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
-
-
-
diff --git a/src/main/assets/help/uk/help.html b/src/main/assets/help/uk/help.html
new file mode 100644
index 000000000..72962b014
--- /dev/null
+++ b/src/main/assets/help/uk/help.html
@@ -0,0 +1,1458 @@
+
+
Delta Chat - це надійний, децентралізований та безпечний додаток для обміну повідомленнями, доступний для мобільних і десктопних платформ.
+
+
Delta Chat схожий на Whatsapp або Telegram, але ви також можете використовувати його як додаток електронної пошти. Ви можете анонімно зареєструватися на різних сумісних chatmail-серверах які є мінімальними поштовими серверами, оптимізованими для швидкої та безпечної роботи. Або ви можете використовувати класичні поштові сервери та існуючий обліковий запис електронної пошти в цьому випадку Delta Chat буде працювати як поштовий додаток.
Якщо ви створюєте профіль чату з класичною адресою електронної пошти ви можете створити контакт вручну, якщо знаєте його електронну адресу а потім написати йому повідомлення навіть якщо одержувач не використовує Delta Chat.
+
+
+
+
+ Які переваги Delta Chat у порівнянні з іншими месенджерами?
+
+
+
+
+
+
+
Анонімні профілі чату з швидкими, безпечними та сумісними chatmail-серверами які пропонують миттєві Push-сповіщення для пристроїв iOS та Android.
+
+
+
Повсюдна підтримка декількох профілів та декількох пристроїв на всіх платформах.
+
+
+ Що робити, якщо я очікую повідомлення від когось, кому раніше не писав?
+
+
+
+
+
+
Якщо повідомлення приходить від невідомого контакту, воно відображається як запит. ви потрібно прийняти запит, перш ніж ви зможете відповісти.
+
Ви також можете “видалити” його, якщо ви не хочете зараз спілкуватися з ними. Це не видаляє повідомлення на сервері, лише на вашому пристрої. Отже, ви можете як і раніше обробляти повідомлення в іншій поштовій програмі.
+
Якщо ви видалите запит, майбутні повідомлення від цього контакту все одно відображатимуться як запит на повідомлення, щоб ви могли змінити свою думку. Якщо дуже не хочеться отримувати повідомлення від цієї особи, подумайте про її блокування.
+
+
+
+
+
+ Чи підтримує Delta Chat вкладення у вигляді фото, відео тощо?
+
+
+
+
+
+
+
Так. Крім звичайного тексту, всі вкладення електронної пошти відображаються у вигляді окремих повідомлень. Вихідні повідомлення автоматично отримують вкладення.
+
+
+
З міркувань продуктивності, зображення оптимізовані та надсилаються в меншому розмірі за замовчуванням, але ви можете надіслати їх як «файл», щоб зберегти оригінал.
+
+
+
+
+
+
+ Що таке профілі? Як я можу перемикатися між ними?
+
+
+
+
+
Профіль - це ім’я, зображення і деяка додаткова інформація для шифрування повідомлень. Профіль існує лише на вашому пристрої (пристроях) і використовує чат або класичний поштовий сервер для передачі повідомлень.
+
+
Під час першого встановлення Delta Chat створюється перший профіль.
+
+
Пізніше ви можете натиснути на зображення вашого профілю у верхньому лівому кутку, щоб вибрати Додати профілі або Переключити профілі.
+
+
Ви можете використовувати окремі профілі для політичної, сімейної або робочої діяльності, або, наприклад, для спеціального “спам-профілю”, з яким ви реєструєтесь на веб-сайтах і платформах які рано чи пізно починають надсилати небажані повідомлення (“спам”).
Ви можете додати зображення профілю в ваших налаштуваннях. Якщо ви пишете комусь із ваших контактів чи додаєте їх через QR код, вони автоматично побачать ваше зображення профілю.
+
+
+
Контакти, які не використовують Delta Chat, не бачать зображення профілю (однак, звичайно, вони можуть встановити Delta Chat :)
+
+
+
Із міркувань приватності, ніхто не бачить ваше зображення профілю доки ви їм не напишете.
+
+
+
Ваше зображення профілю не надсилається із кожним повідомленням, але достатньо регулярно для того щоб ваші контакти заново отримували ваше зображення профілю, навіть якщо вони додали новий пристрій.
+
+
+
+
+
+
+ Чи можу я встановити текст підпису/статусу/девізу у Delta Chat?
+
+
+
+
+
Так, ви можете зробити це в розділі “Налаштування > Профіль > Текст підпису”. Ваші контакти, які використовують Delta Chat, побачать його коли переглядатимуть ваші контактні дані. Для всіх інших, він з’явиться як підпис в електронному листі під текстом усіх ваших повідомлень.
Використовуйте ці інструменти, щоб організувати ваші чати і тримати все на своєму місці:
+
+
+
+
Закріплені чати завжди залишаються першими в списку чатів. Ви можете використовувати їх, щоб мати швидкий доступ до ваших найулюбленіших чат або тимчасово аби про щось не забути.
+
+
+
Приглушіть чати якщо ви не хочете отримувати сповіщення для них. Приглушені чати залишаються на місці і ви також можете закріпити приглушений чат.
+
+
+
Архівуйте чати, якщо ви більше не хочете бачити їх у своєму списку чатів.
+Заархівовані чати залишаються доступними над списком чатів або через пошук.
+
+
+
Коли архівний чат отримує нове повідомлення, якщо не приглушений, він вискочить з архіву і повернеться у ваш список чатів.
+Приглушені чати залишаються заархівованим доки ви не розархівуєте їх вручну.
+
+
+
+
Щоб заархівувати або закріпити чат, довго торкніться (Android), скористайтеся меню чату (Android/комп’ютер) або проведіть пальцем ліворуч (iOS); щоб вимкнути звук чату, скористайтеся меню чату (Android/комп’ютер) або профілем чату (iOS).
+
+
+
+
+ Що означає зелена точка?
+
+
+
+
+
+
Починаючи з Delta Chat 1.34, ви іноді можете бачити “зелену крапку” поруч із аватаром контакту. Це означає, що контакт «нещодавно бачили».
+
Детально: це означає, що за останні 10 хвилин Delta Chat бачив їх:
+
або тому, що вони надіслали вам повідомлення безпосередньо,
+
тому що вони написали щось групі, учасником якої є ви обоє,
+
тому що вони надіслали вам сповіщення про прочитання повідомлення, яке ви написали,
+
або тому, що вони надіслали дані до вашої програми Delta Chat за допомогою a приватна програма.
+– Отже, це не онлайн-статус у реальному часі – і якщо хтось не відповідає відразу, навіть якщо вони, здаються, онлайн, не хвилюйтесь і дайте їм трохи простору ;-)
+– З іншого боку, інші не завжди «побачать, що ви онлайн». Якщо ви вимкнули сповіщення про прочитання, вони не побачать зелену крапку, доки ви не надішлете їм повідомлення або напишете у групу, до якої вони входять.
+
+
+
+
+
+ Як працюють повідомлення, що зникають?
+
+
+
+
+
Увімкнути “повідомлення, що зникають” можна в налаштуваннях чату, у верхньому правому куті вікна чату, вибравши проміжок часу від 1 хвилини до 5 тижнів.
+
+
Доки налаштування не буде знову вимкнено, додаток Delta Chat кожного учасника чату піклується про видалення повідомлень через вибраний проміжок часу. Проміжок часу починається коли одержувач вперше побачив повідомлення в Delta Chat. Повідомлення видаляються як з кожної поштової скриньки на сервері, так і в самому додатку.
+
+
Зверніть увагу, що ви можете покладатися на зникнення повідомлень лише доти, доки ви довіряєте своїм співрозмовникам; зловмисники можуть робити фотографії, або іншим чином зберігати, копіювати або пересилати повідомлення перед видаленням.
+
+
Крім того, якщо один із співрозмовників видаляє Delta Chat, повідомлення не будуть видалені з його поштової скриньки. Швидше за все, їх також більше не можна буде розшифрувати (якщо вони були зашифровані).
+
+
+
+
+ Групи
+
+
+
+
+
+
+
+ Створення групи
+
+
+
+
+
+
Оберіть Новий чат, потім Нова групи у меню в верхньому правому кутку або натисніть відповідну кнопку у Android/iOS.
+
На наступному екрані виберіть учасники групи та встановіть назву групи. Ви також можете обрати аватар групи.
+
Як тільки ви напишете перше повідомлення у групу, усі учасники будуть проінформовані про нову групу і зможуть відповісти у нову групу (доки ви не напишете повідомлення у групі, група залишатиметься невидимою для учасників).
+
+
+
+
+
+ Додавання учасників групи
+
+
+
+
+
+
Кожен учасник групи має ті ж самі права, що і будь-який інший. З цієї причини кожен може видалити будь-якого учасника або додати нового.
+
Щоб додати або видалити учасників, натисніть на назву групи в чаті.
+
+
+
+
+
+ Я випадково себе видалив
+
+
+
+
+
+
Оскільки ви більше не учасник групи, ви не зможете додати себе знову. Однак, це не проблема, просто попросіть будь-якого іншого учасника групи в звичайному чаті додати вас знову.
+
+
+
+
+
+ Я більше не хочу отримувати повідомлення групи.
+
+
+
+
+
+
+
Або видаліть себе із списку учасників групи, або видаліть весь чат. Якщо ви хочете повернутись до чату пізніше, попросіть іншого учасника групи додати вас знову.
+
+
+
Ви також можете “Заглушити” групу - це означає, що ви будете отримувати усі повідомлення та можете писати у групу, але ви більше не будете отримувати сповіщення про нові повідомлення.
+
+
+
+
+
+
+ Що означають галочки біля вихідних повідомлень?
+
+
+
+
+
+
Одна галочка означає, що повідомлення було успішно надіслано вашому провайдеру.
+
Дві галочки означають, що принаймні один пристрій одержувача повідомив про отримання повідомлення.
+
Одержувачі могли вимкнути звіти про прочитання, тож навіть якщо ви бачите лише одну галочку, можливо, повідомлення прочитане.
+
Навпаки, дві галочки не означають автоматично, що людина прочитала або зрозуміла повідомлення ;)
+
+
+
+
+
+ Що станеться, якщо я ввімкну «Видаляти старі повідомлення з сервера»?
+
+
+
+
+
+
+
За умовчанням Delta Chat зберігає всі повідомлення локально на вашому пристрої. Якщо ви, наприклад, бажаєте заощадити місце для зберігання у свого провайдера електронної пошти, ви можете вибрати автоматичне видалення старих повідомлень. Вони все ще залишаються на вашому пристрої, поки ви видалите їх і там.
+
+
+
Щоб увімкнути його, перейдіть до Видалити старі повідомлення → Видалити повідомлення з сервера в налаштуваннях «Чати та медіа». Ви можете встановити часові рамки між «Одразу» та «Через 1 рік». Усі електронні листи, отримані Delta Chat, будуть видалені з сервера після закінчення цього терміну.
+
+
+
Зауважте, що якщо ви використовуєте Delta Chat на кількох пристроях, вам слід залишити повідомлення на сервері, доки інший пристрій не зможе завантажити їх. У цьому випадку вам слід встановити для автоматичного видалення значення «через день» або щось подібне, залежно від того, як часто ви вмикаєте інший пристрій.
+
+
+
+
+
+
+ Що станеться, якщо я ввімкну «Видаляти старі повідомлення з пристрою»?
+
+
+
+
+
+
Якщо ви хочете заощадити пам’ять на своєму пристрої, ви можете видалити старе повідомлення автоматично.
+
Щоб увімкнути його, перейдіть до «видалити старі повідомлення з пристрою» в налаштуваннях «Чатів та медіа» . Ви можете встановити часові рамки від «через годину» до «через рік»;
+Таким чином, усі повідомлення будуть видалені з вашого пристрою, як тільки вони будуть старішими за це.
+
+
+ Що таке push-сповіщення? Як отримати миттєву доставку повідомлень?
+
+
+
+
+
Push-повідомлення надсилаються “Push-сервісами” Apple та Google на пристрій користувача щоб неактивний додаток Delta Chat міг отримувати повідомлення у фоновому режимі і показувати сповіщення на телефоні користувача, якщо це необхідно.
+
+
Push-сповіщення працюють з усіма chatmail-серверами на
+
+
+
+
iOS-пристроях, інтегруючись із сервісами Apple Push.
+
+
+
Android-пристроях, шляхом інтеграції з сервісом Google FCM Push, в тому числі на пристроях, які використовують microG замість пропрієтарного коду Google на телефоні.
+
+
+
+
Станом на травень 2024 року класичні сервери електронної пошти не підтримують Push-повідомлення для користувачів Delta Chat.
+
+
+
+
+ Чи ввімкнено Push-сповіщення на пристроях iOS? Чи є альтернатива?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Чи ввімкнені/потрібні Push-сповіщення на пристроях Android?
+
+
+
+
+
Якщо доступний “Push-сервіс”, Delta Chat вмикає Push-сповіщення щоб забезпечити миттєву доставку повідомлень для всіх користувачів чату. Якщо ви використовуєте класичний провайдер електронної пошти замість серверів chatmail, Push-сповіщення недоступні.
+
+
У налаштуваннях “Сповіщення” Delta Chat для “Миттєва доставка” ви можете змінити наступні налаштування, які впливають на всі профілі чату:
+
+
+
+
Використовувати Push-сервіс: за замовчуванням при використанні профілів чату і якщо на телефоні доступна послуга Push. Якщо у вас є профілі чату та класичної електронної пошти, то Push-сповіщення працюватимуть лише для вхідних повідомлень для вхідних повідомлень у профілях чату.
+
+
+
Використовувати фонове підключення: Якщо ви не використовуєте Push-сервіс, ви можете вимкнути “оптимізацію батареї” для Delta Chat, що дозволить йому отримувати повідомлення у фоновому режимі. Однак це може призвести до затримок від декількох хвилин до декількох годин. Деякі постачальники Android навіть повністю обмежують додатки (див. dontkillmyapp.com) і Delta Chat може не показувати вхідні повідомлення доки ви не відкриєте програму вручну.
+
+
+
Примусове фонове підключення: Це запасний варіант якщо попередні опції недоступні або не досягають “миттєвої доставки”. Увімкнення цієї опції спричиняє постійне сповіщення на вашому телефоні яке іноді може бути “мінімізоване” на останніх версіях телефонів Android.
+
+
+
+
Обидва варіанти “Фонового з’єднання” є енергоефективними та безпечні, якщо ви відчуваєте, що повідомлення надходять із великими затримками.
Підтримка push-сповіщень Delta Chat дозволяє уникнути витоку приватної інформації. Вона не передає електронну пошту, IP-адресу або вміст повідомлень (навіть зашифрованих) до будь-якої системи, яка бере участь у доставці push-сповіщень.
+
+
Ось як програми Delta Chat здійснюють доставку push-сповіщень:
+
+
+
+
Додаток Delta Chat отримує “токен пристрою” локально і зберігає його на сервері chatmail.
+
+
+
Коли chatmail-сервер отримує електронний лист від користувача Delta Chat він пересилає “токен пристрою” до центрального проксі-сповіщення Delta Chat.
+
+
+
Центральний проксі-сервер сповіщень Delta Chat пересилає “токен пристрою” до відповідного Push-сервісу (Apple, Google тощо), навіть не знаючи IP-адреси чи електронної пошти користувачів Delta Chat.
+
+
+
Центральний Push-сервіс (Apple, Google тощо) запускає додаток Delta Chat на вашому пристрої щоб перевірити наявність нових повідомлень у фоновому режимі. Він не знає про пошту чату або адресу електронної пошти пристрою, який він пробуджує. Центральні служби Apple/Google Push ніколи не бачать адресу електронної пошти (відправника або одержувача) а також ніколи не бачать жодного вмісту повідомлення (навіть в зашифрованому вигляді).
+
+
+
+
Станом на травень 2024 року chatmail-сервери знають про “токени пристроїв” але ми плануємо зашифрувати цю інформацію для проксі-сповіщень таким чином, щоб сервер чату ніколи не дізнався токен пристрою.
+
+
Центральний проксі для сповіщень Delta Chat невеликий і повністю реалізований на Rust забуває про токени пристроїв, як тільки Apple/Google/etc обробили їх, зазвичай за лічені мілісекунди.
+
+
В результаті цього загального дизайну конфіденційності, навіть захоплення chatmail-сервера, або повне вилучення центрального проксі-сервера повідомлень Delta Chat не призведе до розкриття приватної інформації, якої ще не мають Push-сервіси.
+
+
+
+
+ Чому Delta Chat інтегрується з централізованими пропрієтарними push-сервісами Apple/Google?
+
+
+
+
+
Delta Chat - це безкоштовний децентралізований месенджер з відкритим вихідним кодом і вільним вибором сервера, але ми хочемо, щоб користувачі отримували надійну “миттєву доставку” повідомлень, як у додатках Whatsapp, Signal або Telegram, без попередніх запитань, які більше підходять для досвідчених користувачів або розробників.
+
+
+ Які стандарти використовуються для наскрізного шифрування?
+
+
+
+
+
Autocrypt використовується для автоматичного встановлення наскрізного шифрування з контактами та груповими чатами.
+Autocrypt використовує обмежену і безпечну підмножину стандарту OpenPGP. Зашифровані наскрізним шифруванням повідомлення позначаються замком .
+
+
Протоколи Secure-Join використовуються для створення чатів з гарантованим наскрізним шифруванням що захищає від мережевих атак і скомпрометованих серверів. Чати, відмічені зеленою галочкою гарантують наскрізне шифрування повідомлень.
+
+
+
+
+ Як дізнатися, чи повідомлення зашифровано наскрізним шифруванням?
+
+
+
+
+
Всі наскрізні зашифровані повідомлення мають навісний замок:
+
+
+
+
Наскрізне шифрування гарантується, якщо поруч із заголовком чату стоїть зелена галочка:
+
+
+
+
+
+
+ Як отримати гарантоване наскрізне шифрування та зелені галочки?
+
+
+
+
+
Якщо у вас є другий канал зв’язку з вашим партнером по чату, наприклад, відеочат або інший месенджер, ви можете згенерувати посилання-запрошення.
+
+
Якщо ви разом особисто, ви можете показати QR-код своєму співрозмовнику.
+
+
+
+
Для Запрошення до групи, торкніться назви групи чату, щоб побачити список її учасників, і виберіть “QR-код запрошення”.
+
+
+
Для прямих запрошень у чат 1:1, торкніться іконки QR-коду на головному екрані програми Delta Chat.
+
+
+
+
Дозвольте вашому партнеру по чату відсканувати QR-зображення
+у своєму додатку Delta Chat, або натисніть “Копіювати” чи “Поділитися”, щоб створити посилання-запрошення і поділитися ним з вашим співрозмовником.
Якщо обидва пристрої онлайн, обидві сторони зрештою побачать (груповий або прямий) чат із зеленою галочкою поруч із заголовком.
+
+
+
Якщо один з пристроїв не в мережі, зелені галочки з’являться пізніше, коли пристрій знову буде підключено до Інтернету а мережевий протокол Secure-Join буде завершено.
+
+
+
+
Вітаємо! Тепер ви автоматично використовуватимете гарантоване наскрізне шифрування з цим контактом, і ви обидва можете додавати один одного в групи, позначені зеленою галочкою , таким чином автоматично поширюючи гарантоване наскрізне шифрування серед її членів.
+
+
+
+
+ Що означає зелена галочка і “гарантоване наскрізне шифрування”?
+
+
+
+
+
Назви чатів із зеленими галочками означають, що всі повідомлення в чаті будуть наскрізно зашифровані і не можуть бути прочитані або змінені скомпрометованими поштовими серверами або інтернет-провайдерами.
+Приєднання до групових чатів із зеленими галочками безпечно поширює інформацію про шифрування (і зелені галочки) всіх учасників таким чином, що гарантує наскрізне шифрування в групі та між її учасниками.
+
+
Профілі контактів із зеленими галочками означають, що повідомлення контакту наразі гарантовано зашифровані наскрізним шифруванням. Кожен контакт із зеленою галочкою або зробив пряме QR-сканування з вами або був представлений іншим контактом, позначеним зеленою галочкою. Знайомство відбувається автоматично під час додавання учасників до груп. Той, хто додає контакт до групи, позначеної зеленою галочкою, стає представником для тих учасників, які ще не знали про доданий контакт. У профілі контакту ви можете кілька разів натиснути на текст “Представлений …” поки не потрапите до того, з ким ви безпосередньо зробили QR-сканування.
+
+
Зверніть увагу, що в профілі контакту ви можете бачити і натискати рекомендувачів але в заголовку профілю немає зеленої галочки. Зазвичай це означає, що контакт “надіслав повідомлення з іншого пристрою”.
+
+
Для більш детального обговорення “гарантованого наскрізного шифрування” будь ласка, перегляньте Протоколи безпечного приєднання і, зокрема, прочитайте про “Перевірені групи”, технічний термін того, що тут називається чатами з “зеленою галочкою” або “гарантованим наскрізним шифруванням”.
+
+
+
+
+ Контакт “надіслав повідомлення з іншого пристрою”, що робити?
+
+
+
+
+
Ваш чат з контактом втратив гарантоване наскрізне шифрування. Зелену галочку було знято для цього чату та контакту, коли ви побачили це попередження. **Якщо ви вважаєте раптове зникнення гарантованого наскрізного шифрування несподіваним для цього контакту, не приймайте попередження! Замість цього зв’яжіться з контактом через другий канал наприклад, відеодзвінок, інший месенджер або телефонний дзвінок, щоб з’ясувати, що сталося.
+
+
Якщо ваш контакт дійсно спричинив втрату гарантованого наскрізного шифрування будь ласка, зверніться до наступних параграфів, щоб дізнатися про типові причини та способи їх усунення. Незважаючи на це, всі інші чати, позначені зеленою галочкою, залишаються гарантовано зашифрованими з кінця в кінець навіть якщо контакт є їхнім учасником.
+
+
Ваш контакт використовує Delta Chat на другому пристрої (телефоні або ноутбуці).
+
+
Якщо у них є інший пристрій із запущеним додатком Delta Chat, вони повинні видалити обліковий запис з нового пристрою і додати його як другий пристрій, як описано тут. Як тільки вони напишуть вам повідомлення, попередження зникне і гарантоване шифрування буде встановлено на обох пристроях вашого контакту.
+
+
Ваш контакт перевстановив Delta Chat, використовуючи свій старий логін
+
+
Якщо у них є файл резервної копії, вони повинні видалити обліковий запис з нового пристрою і, замість цього, імпортувати файл резервної копії для відновлення свого облікового запису. Як тільки вони напишуть вам повідомлення, попередження зникне і гарантоване шифрування буде відновлено для цього контакту.
+
+
Якщо у них немає резервної копії файлу, найкраще виконати QR-сканування з вашим співрозмовником, щоб відновити гарантоване кінцеве шифрування.
+
+
Ваш контакт надіслав листа через веб-інтерфейс або іншу поштову програму і незабаром повернеться до використання Delta Chat.
+
+
Якщо ви впевнені, що контакт іноді користується веб-поштою, або іншу поштову програму без наскрізного шифрування, ви можете прийняти попередження. Як тільки ваш контакт знову скористається Delta Chat, гарантоване наскрізне шифрування буде автоматично відновлено.
+
+
Ваш контакт повністю припинив користуватися Delta Chat.
+
+
Іноді залишатися на зв’язку важливіше, ніж наскрізне шифрування. “Шифрування на транспортному рівні” (TLS) все ще може ефективно захищати конфіденційність ваших повідомлень між вашим пристроєм і сервером електронної пошти. Але без наскрізного шифрування ви та ваш контакт довіряєте серверу електронної пошти не читати і не маніпулювати вашими повідомленнями, а також не передавати їх третім особам.
+
+
У будь-якому випадку, ви не можете зробити нічого іншого, окрім як прийняти попередження. Будь ласка, також видаліть контакт з будь-якої активної групи, позначеної зеленою галочкою які ви можете знайти в розділі “Загальні чати” в профілі контакту. Це позбавить ваш контакт від отримання “нечитабельних” повідомлень.
+
+
Якщо контакт видалив Delta Chat через помилки або небажану поведінку, будь ласка, розгляньте можливість написати повідомлення на нашому форумі підтримки щоб допомогти нам виявити та вирішити загальні проблеми. Дякуємо!
Коли ми говоримо про “наскрізно зашифроване повідомлення” ми завжди маємо на увазі, що зашифровано все повідомлення, включно з усіма вкладеннями і метадані вкладень, такі як імена файлів.
+
+
+
+
+ Чи безпечний OpenPGP?
+
+
+
+
+
Так, Delta Chat використовує безпечну підмножину OpenPGP і відображає індикатор безпеки у вигляді замка в повідомленні лише тоді, коли все повідомлення належним чином зашифровано і підписано. Наприклад, “Відокремлені підписи” не вважаються безпечними.
+
+
OpenPGP не є небезпечним сам по собі. Більшість публічно обговорюваних проблем безпеки OpenPGP насправді виникають через погане використання або погану реалізацію інструментів або програм (або і те, і інше). Особливо важливо розрізняти OpenPGP, стандарт шифрування IETF, і GnuPG (GPG), інструментом командного рядка, що реалізує OpenPGP. Багато публічних критиків OpenPGP насправді обговорюють GnuPG, який Delta Chat ніколи не використовував. Натомість Delta Chat використовує реалізацію OpenPGP на Rust rPGP, доступну як незалежний пакет “pgp”, і пройшов аудит безпеки у 2019 році.
+
+
Ми прагнемо, разом з іншими розробниками OpenPGP, подальше покращення характеристик безпеки шляхом впровадження нового IETF OpenPGP Crypto-Refresh який, на щастя, був прийнятий влітку 2023 року.
+
+
+
+
+ Чи розглядали ви можливість використання альтернатив OpenPGP для наскрізного шифрування?
+
+
+
+
+
Так, ми стежимо за такими ініціативами, як MLS або Saltpack але їх прийняття означатиме порушення наскрізної сумісності шифрування з усіма іншими поштовими програмами, які зазвичай підтримують шифрування OpenPGP. Отже, це не буде легким рішенням і воно повинно принести користувачам відчутні покращення.
+
+
Delta Chat застосовує цілісний підхід “корисної безпеки” і працює з широким спектром активістських груп, а також відомими дослідниками, такими як TeamUSEC щоб покращити реальний захист користувачів від загроз безпеці. Протокол і стандарт для створення наскрізного шифрування - це лише одна частина “результатів для користувача”, див. також наші відповіді на вилучення пристрою та метадані повідомлення.
Delta Chat також ніколи не був вразливим до EFAIL-атаки “Пряма ексфільтрація” тому що він розшифровує лише “багатокомпонентні/зашифровані” повідомлення, які містять рівно одну зашифровану і підписану частину, як визначено специфікацією Autocrypt Level 1.
+
+
+
+
+ Чи буде показано повідомлення відкритим текстом, якщо наскрізне шифрування недоступне?
+
+
+
+
+
Навіть якщо ваші повідомлення не гарантовано зашифровані наскрізним шифруванням, вони все одно захищені від інтернет-провайдерів, таких як мобільні або кабельні компанії. Однак, ваші провайдери та провайдери електронної пошти одержувача можуть читати, аналізувати або навіть змінювати ваші повідомлення, включаючи будь-які вкладення, якщо вони не зашифровані наскрізним шифруванням.
+
+
За замовчуванням Delta Chat використовує суворе TLS-шифрування яке захищає з’єднання між вашим пристроєм і провайдером електронної пошти. Вся робота з TLS-шифруванням Delta Chat пройшла незалежний аудит безпеки. Крім того, з’єднання між вашим провайдером та провайдером електронної пошти одержувача зазвичай також шифрується при передачі даних. Якщо задіяні поштові сервери підтримують MTA-STS то між провайдерами електронної пошти буде застосовуватися транспортне шифрування в цьому випадку повідомлення Delta Chat ніколи не будуть доступні в Інтернеті у вигляді відкритого тексту навіть якщо повідомлення не було наскрізь зашифровано.
+
+
Зверніть увагу, що підтримка гарантованого наскрізного шифрування, на додаток до шифрування TLS, забезпечує повну безпеку між вашим пристроєм і пристроєм одержувача. Навіть ваш провайдер електронної пошти або інтернет-провайдер не зможуть прочитати або змінити ваші повідомлення.
+
+
+
+
+ Як Delta Chat захищає метадані у повідомленнях?
+
+
+
+
+
Delta Chat захищає більшість метаданих повідомлень, поміщаючи наступну інформацію в наскрізно зашифровану частину повідомлень:
Заголовок Secure-Join, що містить команди безпечного приєднання
+
Сповіщення про увімкнення потокового передавання місцезнаходження
+
URL-адреса кімнати WebRTC
+
+
+
Поштові сервери не мають доступу до цих захищених метаданих але вони бачать дату і розмір повідомлення, і, що важливіше, адреси відправника та отримувача. Поштовим серверам потрібні адреси одержувачів, щоб маршрутизувати і доставляти повідомлення на пристрої одержувача.
+
+
+
+
+ Як захистити метадані та контакти якщо пристрій вилучено?
+
+
+
+
+
Як для захисту від поштових серверів, що збирають метадані, так і для захисту від загрози вилучення пристрою ми рекомендуємо використовувати оптимізований для Delta Chat екземпляр поштового сервера для створення псевдонімних тимчасових акаунтів за допомогою сканування QR-коду. Зверніть увагу, що додатки Delta Chat на всіх платформах підтримують кілька облікових записів тому ви можете легко використовувати “1-тижневі” або “1-місячні” акаунти поруч з вашим “основним” акаунтом знаючи, що всі дані тимчасових акаунтів разом з усіма метаданими будуть видалені. Більше того, якщо пристрій вилучається, то контакти, які використовують тимчасові електронні скриньки, не можуть бути легко ідентифіковані, на відміну від месенджерів, які розкривають телефонні номери в групах чату, які, в свою чергу, часто пов’язані з юридичними особами.
+
+
+
+
+ Як перевірити інформацію про шифрування?
+
+
+
+
+
Ви можете перевірити стан наскрізного шифрування вручну в діалоговому вікні “Шифрування” (профіль користувача на Android/iOS або клацніть правою кнопкою миші на елементі списку чату користувача на робочому столі). Delta Chat показує там два відбитки. Якщо на вашому пристрої та пристрої вашого співрозмовника з’являються однакові відбитки, з’єднання безпечне.
+
+
+
+
+ Як перевірити стан шифрування повідомлень?
+
+
+
+
+
Маленький замок в бульбашці повідомлення позначає, що повідомлення було належним чином наскрізно зашифроване від відправника. Якщо немає замка, повідомлення не було належним чином наскрізно зашифровано, найімовірніше, тому що відправник використовує додаток або інтерфейс веб-пошти без підтримки кінцевого шифрування.
+
+
+
+
+ Чому я бачу незашифровані повідомлення?
+
+
+
+
+
Якщо контакт використовує поштову програму, яка не підтримує Autocrypt всі повідомлення за участю цього контакту (в групі або чаті 1:1) не будуть наскрізно зашифровані, а отже, не показуватимуть “висячого замка” з повідомленнями. Зверніть увагу, що навіть якщо ваші контакти використовують Delta Chat у своєму акаунті, вони також можуть використовувати програму електронної пошти без функції шифрування, що може спричинити періодичні незашифровані повідомлення. Відповідати незашифрованими на незашифровані повідомлення вимагає Autocrypt щоб запобігти отриманню нечитабельних повідомлень на стороні ваших контактів та їхніх поштових програм, які не підтримують Autocrypt.
+
+
+
+
+ Як я можу отримати наскрізно зашифрований чат з контактом Delta Chat, який іноді користується веб-поштою або іншим додатком електронної пошти, що не підтримує Autocrypt?
+
+
+
+
+
Якщо вам потрібен безпечний наскрізно зашифрований чат з контактом який використовує свій акаунт як у Delta Chat, так і в інших додатках (наприклад, веб-пошті), що не підтримують автошифрування, найкраще налаштувати гарантоване наскрізне шифрування з ними, а потім створити груповий чат з гарантованим наскрізним шифруванням, учасниками якого будете ви двоє. У цьому груповому чаті всі повідомлення будуть наскрізно зашифровані навіть якщо в прямому чаті між вами буде “… надіслано повідомлення з іншого пристрою”.
+
+
+
+
+ Як забезпечити наскрізне шифрування та видалення повідомлень?
+
+
+
Гарантований наскрізно шифрований чат захищає від MITM-атак, а увімкнення функції зникнення повідомлень видаляє повідомлення на сервері через певний час, налаштований користувачем.
+
+
+ Чи підтримує Delta Chat цілковиту пряму секретність (Perfect Forward Secrecy)?
+
+
+
+
+
Ні, Delta Chat не підтримує ідеальну пряму секретність (PFS). Це означає, що якщо ваш приватний ключ дешифрування Delta Chat витік, і хтось зібрав ваші попередні транзитні повідомлення, він зможе розшифрувати і прочитати їх за допомогою витоку ключа розшифрування.
+
+
Зауважте, однак, що якщо хтось отримає ваші ключі розшифрування, вони, як правило, також зможуть отримати ваші повідомлення, незалежно від того, чи працює Perfect Forward Secrecy чи ні. Типовою реальною ситуацією для витоку ключів дешифрування є вилучення пристрою яку ми обговорюємо в нашій відповіді про метадані та вилучення пристрою.
+
+
Можливо, що Delta Chat розвивається для підтримки Perfect Forward Secrecy, тому що OpenPGP - це лише контейнер для зашифрованих повідомлень, але керування ключами шифрування (і, відповідно, ротація ключів або “храповик” ключів) може бути організоване у гнучкий спосіб. Дивіться Прототип PFS від Seqouia щодо існуючих експериментів у спільноті реалізаторів OpenPGP.
+
+
+
+
+ Чи є наскрізне шифрування Delta Chat таким же безпечним, як Signal?
+
+
+
+
+
Це залежить від того, що для вас важливо. Delta Chat не підтримує PFS, як Signal але він забезпечує гарантовано наскрізні зашифровані чати які захищені від скомпрометованих серверів або пошкоджених мереж. Signal та більшість інших месенджерів, що підтримують PFS, не надають практичної схеми захисту чат-груп від мережевих атак які, можливо, викликають більше занепокоєння ніж потенційний зловмисник, який заволодіє вашим телефоном і приватними налаштуваннями шифрування, але чомусь не ваші повідомлення, але має повний запис усіх минулих зашифрованих повідомлень.
+
+
+ Чи можна повторно використовувати існуючий закритий ключ?
+
+
+
+
+
Так.
+The best way is to send an Autocrypt Setup Message from the other e-mail client.
+Look for something like Start Autocrypt Setup Transfer in the settings of the other client and follow the instructions shown there.
+
+
Крім того, ви можете імпортувати ключ вручну в “Налаштування -> Додаткові налаштування -> Імпорт секретних ключів”. Застереження: Переконайтеся, що ключ не захищено паролем, або видаліть його заздалегідь.
+
+
Якщо у вас немає ключа або ви навіть не знаєте, що він вам знадобиться – не хвилюйтеся: Delta Chat генерує ключі в міру необхідності, вам не потрібно натискати кнопку для цього.
+
+
+
+
+ Я не можу імпортувати свій існуючий PGP ключ у Delta Chat.
+
+
+
+
+
Найімовірнішою причиною є те, що ваш ключ зашифрований та/або використовується пароль. Такі ключі не підтримуються Delta Chat. Ви можете видалити шифрування парольної фрази та пароль і спробувати імпорт знову.
+
+
Ще одна поширена помилка – неправильне закінчення файлу. Використовуйте захищений формат ASCII і закінчення файлу .asc.
+
+
Delta Chat підтримує поширені формати приватних ключів OpenPGP, однак навряд чи приватні ключі з усіх джерел будуть повністю підтримуватися. Це не головна мета Delta Chat. Фактично, більшість нових користувачів не матимуть жодного ключа до використання Delta Chat. Однак ми намагаємось підтримувати приватні ключі з якомога більшої кількості джерел.
+
+
Видалення пароля з приватного ключа буде залежати від програмного забезпечення, яке використовується для управління ключами PGP. За допомогою Enigmail ви можете встановити для порожній пароль у вікні Керування ключами. За допомогою GnuPG ви можете встановити його через командний рядок. Для інших програм ви зможете знайти рішення в інтернеті.
+
+
+
+
+ Чи проходив Delta Chat незалежний аудит на наявність вразливостей у безпеці?
+
+
+
+
+
Проект Delta Chat пройшов чотири незалежні аудити безпеки та один незалежний аналіз безпеки, від найновіших до найстаріших:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
Починаючи з 2023 року, ми виправили проблеми з безпекою та конфіденційністю у функції “веб застосунків, що поширені у чаті”, пов’язані зі збоями в роботі пісочниці особливо в Chromium. Згодом ми отримали незалежний аудит безпеки аудит безпеки від Cure53, і всі знайдені проблеми були виправлені в серії додатків 1.36, випущених у квітні 2023 року. Повну історію про наскрізну безпеку в Інтернеті дивіться тут.
+
+
+
Починаючи з 2023 року Cure53 проаналізував транспортне шифрування мережевих з’єднань Delta Chat і відтворюване налаштування поштового сервера як рекомендовано на цьому сайті. Ви можете прочитати більше про аудит у нашому блозі або прочитайте повний звіт тут.
+
+
+
У 2020 році Include Security проаналізувала Rust-ядро Delta Chat і бібліотеки IMAP, SMTP та TLS. Він не виявив критичних або серйозних проблем. У звіті виявлено кілька слабких місць середнього ступеня тяжкості – вони самі по собі не становлять загрози для користувачів Delta Chat оскільки вони залежать від середовища, у якому використовується Delta Chat. З міркувань зручності використання та сумісності ми не можемо пом’якшити їх усі тому вирішили надати рекомендації щодо безпеки користувачам, яким загрожує небезпека. Ви можете прочитати повний звіт тут.
+
+
+
У 2019 році Include Security проаналізувала бібліотеки PGP і RSA із Delta Chat. Він не виявив критичних проблем, лише дві серйозні проблеми, які ми згодом виправили. Він також виявив одну проблему середньої тяжкості та кілька менш серйозних, але не було можливості використати ці вразливості в реалізації Delta Chat. Деякі з них ми все ж усунули після завершення аудиту. Ви можете прочитати повний звіт тут.
+
+
+
+
+
+
+ Мульти-клієнт
+
+
+
+
+
+
+
+ Чи можна використовувати Delta Chat на декількох пристроях одночасно?
+
+
+
+
+
Так. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
+
+
+
+
Упевніться, що обидва пристрої підключені до одного Wi-Fi або мережі
+
+
+
На першому пристрої перейдіть до Налаштування → Додати другий пристрій, розблокуйте екран, якщо потрібно і трохи зачекайте, поки не з’явиться QR-код
На другому пристрої запустіть Delta Chat, виберіть Додати як другий пристрій і відскануйте QR-код зі старого пристрою
+
+
+
Передача має розпочатися через кілька секунд, і під час передачі обидва пристрої відображатимуть прогрес. Дочекайтеся завершення на обох пристроях.
+
+
+
+
На відміну від багатьох інших месенджерів, після успішної передачі, обидва пристрої повністю незалежні. Один пристрій не потрібен для роботи іншого.
+
+
+
+
+ Вирішення проблем
+
+
+
+
+
+
+
Ще раз упевніться, що обидва пристрої підключені до одного Wi-Fi або мережі
+
+
+
У Windows перейдіть до Панель керування / Мережа та Інтернет і переконайтеся, що Приватна мережа вибрано як “Тип мережевого профілю” (після перенесення ви можете повернути початкове значення)
+
+
+
Ваша система може мати “персональний брандмауер”, який, як відомо, викликає проблеми (особливо у Windows). Вимкніть персональний брандмауер для Delta Chat на обох кінцях і повторіть спробу
+
+
+
Гостьові мережі можуть не дозволяти пристроям зв’язуватися один з одним. Якщо можливо, використовуйте негостьову мережу.
+
+
+
Переконайтеся, що на цільовому пристрої достатньо пам’яті
+
+
+
Якщо передача почалася, переконайтеся, що пристрої залишаються активними і не засинають. Не виходьте з Delta Chat. (ми докладаємо всіх зусиль, щоб програма працювала у фоновому режимі, але системи, як правило, вбивають програми, на жаль)
+
+
+
Delta Chat уже ввійшов на цільовому пристрої? Ви можете використовувати кілька облікових записів на одному пристрої, просто додайте інший обліковий запис
+
+
+
Якщо у вас усе ще виникають проблеми або якщо ви не можете відсканувати QR-код спробуйте перенесення вручну, описане нижче
+
+
+
+
+
+
+ Ручне перенесення
+
+
+
+
+
Цей спосіб рекомендований, лише якщо «Додати другий пристрій», як описано вище, не працює.
+
+
+
На старому пристрої перейдіть до “Налаштування -> Чати та медіа -> Експортувати резервну копію”. Введіть свій PIN-код, графічний ключ або пароль розблокування екрана. Потім ви можете натиснути на “Почати Резервне копіювання”. Це збереже файл резервної копії на вашому пристрої. Тепер вам потрібно якось перенести його на інший пристрій.
+
На новому пристрої на екрані входу замість того, щоб увійти до свого облікового запису електронної пошти, виберіть “Імпортувати резервну копію” виберіть “Імпортувати резервну копію”. Після імпорту ваші листування, ключі шифрування ключі шифрування та медіа повинні бути скопійовані на новий пристрій.
+
+
Якщо ви користуєтеся iOS:** і у вас виникли труднощі, можливо цей посібник допоможе вам.
+
+
+
Тепер ви синхронізовані і можете використовувати обидва пристрої для надсилання та отримання наскрізно зашифрованих повідомлень зі своїми партнерами по спілкуванню.
+
+
+
+
+
+ Чи планується впровадження веб-клієнта Delta Chat?
+
+
+
+
+
+
Немає найближчих планів, крім попередніх думок.
+
Є 2-3 способи створити веб-клієнт Delta Chat, але всі вони вимагають значної роботи. На даний момент ми зосереджені на отриманні стабільних релізів в усіх магазини додатків (Google Play / IOS / Windows / MacOS / репозитаріїв Linux), як нативних додатків.
+
Якщо вам потрібен веб-клієнт, через заборону встановлювати програмне забезпечення на комп’ютері, з яким ви працюєте, ви можете використовувати портативний клієнт Windows Desktop або AppImage для Linux. Ви можете знайти їх на get.delta.chat.
+
+
+
+
+
+ webxdc-додатки
+
+
+
+
+
У Delta Chat ви можете ділитися webxdc-додатками, вкладеннями з розширенням .xdc. Вони можуть робити дуже різні речі, і роблять Delta Chat справді розширюваним месенджером.
Додатки webxdc не можуть надсилати дані в Інтернет або завантажувати щось.
+
Програма webxdc може обмінюватися даними лише в межах чату Delta Chat з її копіями на пристроях ваших партнерів по чату. В іншому, вони повністю ізольовані від Інтернету.
+
Конфіденційність, яку пропонує додаток webxdc, є конфіденційністю вашого чату - доки ви довіряєте людям, з якими ви спілкуєтеся, ви можете довіряти і додатку webxdc.
+
Це також означає, що відкриття додатків webxdc в чатах, де ви не довіряєте учасникам, як ви знаєте з вкладень в електронній пошті, де ви відкриваєте вкладення тільки від відправників, яким довіряєте, а не від спамерів.
+
+
+
+
+
+ Де я можу отримати webxdc-додатки?
+
+
+
+
+
+
Загалом, будь-хто може ділитися додатками webxdc один з одним один з одним без обмежень.
+
Ви можете надіслати “hi” на xstore@testrun.org щоб побачити експериментальний магазин додатків webxdc. Всі програми мають відкритий вихідний код і є безкоштовними.
+
Багато людей пишуть власні програми для webxdc і публікують їх на форумі Delta Chat.
+
+
+
+
+
+ Як я можу створювати власні програми webxdc?
+
+
+
+
+
+
Програми webxdc - це просто zip-файли, що містять код html, css і javascript.
Все інше, що вам потрібно знати, описано у документації.
+
Якщо у вас є запитання, ви можете задати їх іншим користувачам на форумі Delta Chat.
+
+
+
+
+
+ Експериментальні функції
+
+
+
+
+
Ми дуже вдячні за відгуки про ці функції – ви хочете поділитися своїми ідеями? Приєднуйтесь до Форуму, щоб зробити свій внесок. Ви можете зручно увійти за допомогою Delta Chat та сканування QR-коду, ще один досить стабільний експеримент, який ми проводимо на стороні (sic!).
+
+
+
+
+ Як я можу робити аудіо/відеодзвінки з Delta Chat?
+
+
+
+
+
+
Щоб увімкнути аудіо/відеодзвінки, перейдіть до розділу “Експериментальні функції” в додаткових налаштуваннях і виберіть “Екземпляр відеочату”.
+
Коли ви запрошуєте інших до відеочату, він відкривається у вашому браузері/додатку одразу. Інші користувачі отримують електронний лист із посиланням на відеочат. Таким чином, він також сумісний, якщо ваші партнери по чату не використовують Delta Chat.
+
Зверніть увагу, що на іншій стороні немає мелодії дзвінка, і ваші партнери по чату не будуть перервані запрошенням до відеочату.
+
Ви можете використовувати будь-який сервіс відеочату, який дозволяє приєднуватися за посиланням. Просто додайте посилання в налаштуваннях.
+
Наприклад, щоб використовувати флагманський екземпляр Jitsi Meet, ви можете ввести https://meet.jit.si/$ROOM. Змінна $ROOM буде випадковою величиною; таким чином, ви матимете нову випадкову кімнату jitsi щоразу, коли телефонуватимете комусь.
+
+
+
+
+
+ Що таке списки широкомовлення та як ними користуватися?
+
+
+
+
+
+
За допомогою списку розсилки ви можете надіслати повідомлення багатьом одержувачам одночасно; коли вони відповідають вам, ви отримуєте відповідь у своєму прямому чаті 1:1 з ними. Одержувачі не бачать один одного.
+
Технічно це електронний лист із багатьма одержувачами в BCC.
+
Ви можете ввімкнути функцію в розділі «експериментальні функції» в розширених налаштуваннях. Потім ви можете створити список трансляцій у діалоговому вікні «Новий чат».
+
Якщо ви використовуєте більше ніж один пристрій, списки трансляцій наразі не синхронізуються між ними.
+
Повідомлення, надіслані до списків розсилки, не шифруються. Шифрування порушило б анонімність, оскільки тоді всі одержувачі знали б, хто ще його отримав (надсилання окремих листів усім було б гіршим через обмеження швидкості та споживання мережі).
+
+
+
+
+
+ Як я можу поділитися своїм місцезнаходженням зі своїми співрозмовниками в чаті?
+
+
+
+
+
+
Ви можете ввімкнути трансляцію локацій у розділі “експериментальні функції” в розширених налаштуваннях.
+
Тепер, якщо ви хочете поділитися своїм місцезнаходженням в чаті, перейдіть до “прикріпити” і виберіть “місцезнаходження”. Тепер ви можете встановити часовий проміжок, протягом якого ваше місцезнаходження буде транслюватися вашим співрозмовникам, від 5 хвилин до 6 годин.
+
Коли ваше місцезнаходження зміниться, інші учасники чату зможуть побачити його на карті в чаті.
+
Щоб бачити мапу і переглядати місцезнаходження інших, вам потрібно увімкнути функцію в додаткових налаштуваннях.
+
Ця функція не буде показувати ваше місцезнаходження нікому, крім ваших партнерів по чату. Картографічні плитки завантажуються з OpenStreetMap.
+
На десктопі операційна система зазвичай не може визначити ваше місцезнаходження. Замість цього ви можете клацнути правою кнопкою миші на карті і описати місцезнаходження, яке буде надіслано в чат у вигляді повідомлення, але також з’явиться на карті.
+
+
+
+
+
+ Що насправді захищає експериментальне шифрування бази даних?
+
+
+
+
+
+
На даний момент шифрування бази даних все ще є експериментальним. Не покладайтеся на нього для захисту, ви повинні додатково використовувати шифрування вашої операційної системи, якщо воно передбачає таке.
+
Шифрування бази даних ще не шифрує блоби, лише рядки та стовпці бази даних. Це більш-менш означає, що ваші повідомлення в безпеці, але не вкладені файли.
+
Для iOS і Android ключі шифрування зберігаються в системному брелоку. Це означає, що шифрування настільки ж безпечно, як і операційна система, на якій воно працює.
+
Настільний клієнт Delta Chat поки що не пропонує шифрування бази даних, оскільки немає стандартного способу зберігання ключів шифрування на різних підтримуваних платформах.
+
+
+
+
+
+ Чому я можу вибрати лише стеження за папкою DeltaChat?
+
+
+
+
+
Це експериментальне налаштування для деяких людей, які експериментують з правилами на стороні сервера. Не всі провайдери підтримують це, але деякі дозволятимуть перемістити всі листи із заголовком “Chat-Version” до папки DeltaChat. Зазвичай це робиться додатком Delta Chat.
+
+
Увімкнення «Отримувати лише з папки DeltaChat» має сенс, якщо у вас є обидва:
+
+
+
увімкнене правило на стороні сервера для переміщення всіх повідомлень із заголовком Chat-Version до папки DeltaChat та
+
встановлено параметр “Показувати класичні електронні листи” у значення “ні, лише чати”.
+
+
+
У цьому випадку Delta Chat не потрібно стежити за папкою «Вхідні», а достатньо лише стежити за папкою DeltaChat.
+
+
+
+
+ Як я можу змінити мій обліковий запис на іншу адресу електронної пошти?
+
+
+
+
+
+
+
Змініть свою адресу в розділі “Налаштування → Додатково → Пароль та обліковий запис” та введіть пароль вашого нового облікового запису (і, за необхідності, налаштування сервера). Ви отримаєте інформаційне повідомлення про те, що ви переїжджаєте на нову адресу. Додаткове повідомлення також з’явиться у вашому чаті “Повідомлення пристрою”.
+
+
+
Якщо можливо, нехай ваш старий провайдер електронної пошти пересилає всі повідомлення на вашу нову адресу.
+
+
+
Повідомте своїм контактам, що ви змінили адресу. Пишіть у гарантовані наскрізні зашифровані чати та групи, вони автоматично помітять ваш переїзд і вони продовжать спілкуватися з вами, використовуючи вашу нову адресу.
+
+
+
+
Зверніть увагу, що Delta Chat більше не буде отримувати повідомлення від вашого старого провайдера електронної пошти. Якщо ви не налаштували пересилання повідомлень (крок 2) тільки ті контакти, яким ви надіслали повідомлення в гарантованому наскрізному зашифрованому чаті отримуватимуть повідомлення на вашу нову адресу.
+
+
+ Чому я маю вводити пароль до моєї електронної пошти у Delta Chat? Чи це безпечно?
+
+
+
+
+
Як і інші поштові програми, такі як Thunderbird, K9-Mail або Outlook, програма програма потребує пароля, щоб ви могли використовувати її для надсилання листів. Звичайно, пароль пароль зберігається лише на вашому пристрої. Пароль передається лише вашому поштовому провайдеру (коли ви входите в систему), який і так має доступ до вашої пошти.
+
+
Якщо ваш провайдер електронної пошти підтримує OAuth2, як gmail.com чи yandex.ru, то немає необхідності зберігати пароль на пристрої. В цьому випадку використовується лише токен доступу.
+
+
Оскільки Delta Chat має відкритий код, ви можете ознайомитись із початковим кодом якщо бажаєте перевірити що ваші дані для авторизації надійно зберігаються. Ми будемо раді вашим пропозиціям, які зроблять додаток більш безпечним для всіх користувачів.
+
+
+
+
+ Які повідомлення відображаються у Delta Chat?
+
+
+
+
+
За замовчуванням Delta Chat відображає всі електронні листи.
+
+
У “Налаштування → Додатково → Показувати класичні електронні листи”, ви можете змінити цей параметр. У вас є такі варіанти:
+
+
+
«Ні, лише чати»: лише повідомлення, надіслані іншими користувачами Delta Chat, і відповіді на них відображаються ваші повідомлення Delta Chat. Це має найбільший сенс, якщо ви використовуєте той самий обліковий запис електронної пошти також для звичайної електронної пошти.
+
«Усі»: Delta Chat показує всі електронні листи, надіслані на вашу електронну адресу. Це має сенс, якщо ви хочете використовувати Delta Chat для всіх ваших електронних листів, тому жодних повідомлень не губиться. Це налаштування за замовчуванням.
+
«Для прийнятих контактів»: Delta Chat показує всі електронні листи від контактів, з ким у вас уже є чат, але нові чати з’являються лише для повідомлень Delta Chat. Це допоможе вирішити в кожному конкретному випадку, чи бажаєте ви мати a розмова в Delta Chat або в «звичайній» програмі електронної пошти.
+
+
+
+
+
+ Чи підтримує Delta Chat HTML-листи?
+
+
+
+
+
Так, вхідні HTML-повідомлення мають кнопку «Показати повне повідомлення». Вихідні повідомлення завжди містять звичайний текст.
+
+
+
+
+ Чи можу я встановити тему листа в Delta Chat?
+
+
+
+
+
Delta Chat встановлює (і шифрує!) класичну тему електронного листа автоматично на назву групи або на ім’я відправника.
+
+
Тож якщо ви хочете встановити тему самостійно, наприклад, для офіційного електронного листа діловому контакту, ви можете створити групу в якій будете лише ви та одержувач(і). Встановіть у заголовку чату потрібну тему, а потім надішліть свій електронний лист як перше повідомлення. Якщо одержувачі не використовують Delta Chat, він буде виглядати як звичайний формальний електронний лист. Ви отримаєте бонусні бали за професіоналізм якщо ви встановите текст підпису.
+
+
+
+
+ Для чого потрібне налаштування “Відправити копію собі”?
+
+
+
+
+
Надсилаючи собі копію своїх повідомлень, ви отримуєте власні повідомлення на всіх пристроях. Якщо у вас кілька пристроїв, і ви не вмикаєте це налаштування, ви бачите лише повідомлення інших людей та повідомлення, які ви надсилаєте з поточного пристрою.
+
+
Копія надсилається у папку Вхідні, а потім переміщується до папки DeltaChat; вона не поміщається в папку «Відправлені». Delta Chat ніколи не завантажує нічого в папку Надіслане, оскільки це означало б завантаження повідомлень двічі (один раз через SMTP і один раз через IMAP до папки Надіслані).
+
+
За замовчуванням для параметра “Надіслати копію собі” встановлено значення “увімкнено”.
+
+
+
+
+ Чому я можу обрати стеження за папкою “Надіслані”?
+
+
+
+
+
Єдина причина, через яку захочеться стежити за папкою Надіслане, полягає в тому, що якщо ви використовуєте іншу поштову програму (наприклад, Thunderbird) разом із вашим додатком Delta Chat і хочете, щоб ваш поштовий клієнт брав участь у розмовах.
+
+
Однак ми рекомендуємо використовувати клієнт Delta Chat Desktop; Ви можете завантажити його на get.delta.chat. Можливість стеження папки “Надіслане” може зникнути в майбутньому. Вона був представлена у той час, коли на всіх платформах ще не було клієнта Delta Chat Desktop.
+
+
+
+
+ Чому я можу відмовитись від стеження за папкою DeltaChat?
+
+
+
+
+
Деякі люди використовують Delta Chat як звичайний поштовий клієнт і хочуть використовувати папку Вхідні для своєї пошти замість папки DeltaChat. Якщо ви вимкнете “Перегляд папки DeltaChat”, вам слід також вимкнути “переміщення повідомлень чату до DeltaChat”.
+В іншому випадку видалення повідомлень або налаштування декількох пристроїв може не працювати належним чином.
+
+
+
+
+ Чи сумісний Delta Chat із Protonmail / Tutanota / Criptext?
+
+
+
+
+
+
Так і ні.
+
Ні, ви не можете використовувати свій обліковий запис Protonmail, Tutanota або Criptext у Delta Chat; вони не пропонують отримання листів через IMAP.
+
У будь-якому випадку, ви можете використовувати Delta Chat для надсилання повідомлень людям, які користуються Protonmail, Tutanota або Criptext. Ці повідомлення не будуть наскрізно зашифрованими. Наскрізне шифрування, яке пропонують ці провайдери, не є сумісним з Autocrypt, стандартним шифруванням, яке використовує Delta Chat.
+
+
+ Як мені видалити свій обліковий запис?
+
+
+
+
+
Оскільки ви використовуєте обліковий запис електронної пошти для Delta Chat, спосіб видалення облікового запису залежить від вашого постачальника послуг електронної пошти. Ми не маємо жодного контролю над вашим обліковим записом електронної пошти, тому, на жаль, ми не можемо вам у цьому допомогти.
+
+
Якщо ви хочете зберегти обліковий запис, але видалити Delta Chat, перед видаленням Delta Chat рекомендується покинути будь-які групові чати.
+
+
+
+
+ Мене цікавлять технічні деталі. Можете розповісти більше?
+
+
+
Delta Chat не отримує жодного Венчурного Капіталу і не є в боргу, не знаходиться під тиском отримання значних прибутків, або продажу користувачів і їхніх друзів з родиною рекламодавцям (або гірше). Ми скоріше використовуємо джерела державного фінансування поки що від ЄС та США, щоб допомогти нашим зусиллям у створенні децентралізованої та різноманітної екосистеми обміну повідомленнями на основі вільного та відкритого коду спільноти розробників
+
+
Конкретно, розробки Delta Chat поки що фінансуються з цих джерел:
+
+
+
+
Проект ЄС NEXTLEAP фінансував дослідження та впровадження верифікованих груп і протоколів встановлення контактів у 2017 та 2018 роках, а також допоміг інтегрувати наскрізне шифрування через Autocrypt.
+
+
+
Open Technology Fund надав нам два гранти.
+Перший грант 2018/2019 року (~$200K), допоміг значно покращили додаток для Android
+і випустили першу бета-версію додатка для ПК, і який до того ж
+закріпив наші розробки функцій у дослідженнях UX у контексті прав людини,
+дивіться наш підсумковий звіт Needfinding and UX report.
+Другий грант 2019/2020 року (~$300K) допоміг нам
+випустити Delta/iOS версію, конвертувати нашу основному бібліотеку на Rust,
+і додати нові функції для всіх платформ.
+
+
+
Фонд NLnet виділив у 2019/2020 роках 46 тисяч євро на
+завершення прив’язок Rust/Python та запуск екосистеми чат-ботів.
+
+
+
+
– У 2021 році ми отримали подальше фінансування ЄС для двох Інтернет-технологій наступного покоління пропозиції, а саме для EPPD - каталог перенесення електронної пошти (~97 тис. євро) та AEAP - перенесення електронної адреси (~90 тис. євро), що призвело до кращої підтримки кількох облікових записів, покращеного QR-коду контактів і налаштувань груп, а також багатьох покращень роботи мережі на всіх платформах.
+
+
+
+
З кінця 2021 до березня 2023 року ми отримували фінансування Internet Freedom (500 тис. дол. США) від Бюро США з питань демократії, прав людини та праці (DRL). Це фінансування підтримало наші довгострокові цілі зробити Delta Chat більш зручним для використання і сумісним з широким спектром серверів електронної пошти по всьому світу, більш стійким і безпечним в місцях, які постраждали від інтернет-цензури та відключення інтернету.
+
+
+
На початку 2023 року нас прийняли в Next Generation Internet (NGI)
+Entrust program для наших пропозицій щодо «Приватних децентралізованих додатків». Точна сума буде визначена (близько 100 тис. євро). Це фінансування підтримує подальший розвиток webxdc “додатків, якими діляться в чаті”.
+
+
+
+
– Іноді ми отримуємо одноразові пожертви від приватних осіб. Наприклад, у 2021 році щедра приватна особа перерахував нам 4 тис. євро з повідомленням «так тримати!». 💜 Ми використовуємо такі пожертви для фінансування зборів на розвиток або для тимчасових витрат, які важко передбачити або відшкодувати за рахунок грантів державного фінансування. Отримання більшої кількості пожертв також допомагає нам стати більш незалежними та довгостроково життєздатними як спільнота контриб’юторів.
+
+
+
+
+
Кілька експертів та ентузіастів, які працюють на громадських засадах, сприяли розробці програми Delta Chat, не отримуючи грошей або лише невеликі суми. Без них Delta Chat не був би там, де є сьогодні, навіть близько.
+
+
+
Зазначене вище грошове фінансування в основному організовано компанією merlinux GmbH у Фрайбурзі (Німеччина) і розподілено між більше ніж дюжиною розробників по всьому світу.
+
+
+
+
+
\ No newline at end of file
diff --git a/assets/help/zh_CN/help.html b/src/main/assets/help/zh_CN/help.html
similarity index 72%
rename from assets/help/zh_CN/help.html
rename to src/main/assets/help/zh_CN/help.html
index 2b5c26a34..02ef59f16 100644
--- a/assets/help/zh_CN/help.html
+++ b/src/main/assets/help/zh_CN/help.html
@@ -4,17 +4,14 @@
because they wrote something to a group you are both a member of,
-
because they sent you a read receipt for a message you wrote,
-
or because they sent data to your Delta Chat app by using a
-webxdc app.
+
因为他们直接给你发了消息、
+
因为他们在你们都是成员的群组里写了什么、
+
因为他们向您发送了您所写信息的读取回执、
-
So this is not a real time online status - and if someone doesn’t answer
-right away even though they seem to be online, don’t worry and give them some
-space ;-)
-
On the other hand, others will not always “see that you are online”. If you
-have turned off read receipts, they will not see the green dot until you
-message them or write to a group they’re in as well.
As you use an e-mail account for Delta Chat,
-how you can delete your account depends on your e-mail provider.
-We don’t have any control over your e-mail account,
-so unfortunately we can’t help you with that.
+
您可以在聊天窗口右上角的聊天设置中通过选择 1 分钟到 5 周之间的时间跨度打开“消息定时销毁”。
-
If you want to keep the account,
-but uninstall Delta Chat,
-it is recommended to leave any group chat before uninstalling Delta Chat.
+
Until the setting is turned off again,
+each chat member’s Delta Chat app takes care
+of deleting the messages
+after the selected time span.
+The time span begins
+when the receiver first sees the message in Delta Chat.
+The messages are deleted
+both in each email account on the server,
+and in the app itself.
+
+
Note that you can rely on disappearing messages
+only as long as you trust your chat partners;
+malicious chat partners can take photos,
+or otherwise save, copy or forward messages before deletion.
+
+
Apart from that,
+if one chat partner uninstalls Delta Chat,
+the messages will not get deleted from their email account.
+They will most likely also not be decryptable anymore
+(as long as they were encrypted in the first place).
@@ -468,16 +438,18 @@ it is recommended to leave any group chat before uninstalling Delta Chat.
To turn it on, go to Delete Old Messages → Delete Messages from Server
-in the “Chats and Media” settings.
-You can set a timeframe between “At once” and “After 1 year”.
-All e-mails received by Delta Chat will be deleted from the server after this timeframe.
- Encryption and Security
+ Instant message delivery and Push Notifications
-
+
- Which standards are used for end-to-end encryption?
+ What are Push Notifications? How can I get instant message delivery?
+
+
+
+
+
Push Notifications are sent by Apple and Google “Push services” to a user’s device
+so that an inactive Delta Chat app can fetch messages in the background
+and show notifications on a user’s phone if needed.
+
+
Push Notifications work with all chatmail servers on
+
+
+
+
iOS devices, by integrating with Apple Push services.
+
+
+
Android devices, by integrating with the Google FCM Push service,
+including on devices that use microG
+instead of proprietary Google code on the phone.
+
+
+
+
As of May 2024, classic e-mail servers do not support Push Notifications
+for Delta Chat users.
+
+
+
+
+ Are Push Notifications enabled on iOS devices? Is there an alternative?
+
+
+
+
+
Yes, Delta Chat automatically uses Push Notifications for chatmail profiles.
+And no, there is no alternative on Apple’s phones to achieve instant message delivery
+because Apple devices do not allow Delta Chat to fetch data in the background.
+Push notifications are automatically activated for iOS users because
+Delta Chat’s privacy-preserving Push Notification system
+does not expose data to Apple that it doesn’t already have.
+
+
+
+
+ Are Push notifications enabled / needed on Android devices?
+
+
+
+
+
If a “Push Service” is available, Delta Chat enables Push Notifications
+to achieve instant message delivery for all chatmail users.
+If you are using a classic e-mail provider instead of chatmail servers,
+Push Notifications are not available.
+
+
In the Delta Chat “Notifications” settings for “Instant delivery”
+you can change the following settings effecting all chat profiles:
+
+
+
+
Use Push Service: the default when using chatmail profiles and if
+a Push service is available on the phone.
+If you have both chatmail and classic e-mail profiles,
+then Push Notification will only work
+for incoming messages on chatmail profiles.
+
+
+
Use Background Connection: If you are not using a Push service,
+you may disable “battery optimizations” for Delta Chat,
+allowing it to fetch messages in the background.
+However, there could be delays from minutes to hours.
+Some Android vendors even restrict apps completely
+(see dontkillmyapp.com)
+and Delta Chat might not show incoming messages
+until you manually open the app again.
+
+
+
Force Background Connection: This is the fallback option
+if the previous options are not available or do not achieve “instant delivery”.
+Enabling it causes a permanent notification on your phone
+which may sometimes be “minified” with recent Android phones.
+
+
+
+
Both “Background Connection” options are energy-efficient and
+safe to try if you experience messages arrive only with long delays.
+
+
+
+
+ How private are Delta Chat Push Notifications?
+
+
+
+
+
Delta Chat Push Notification support avoids leakage of private information.
+It does not leak e-mail, IP address or message content (not even encrypted)
+to any system involved in the delivery of Push Notifications.
+
+
Here is how Delta Chat apps perform Push Notification delivery:
+
+
+
+
A Delta Chat app obtains a “device token” locally and stores it
+on the chatmail server.
+
+
+
When a chatmail server receives an e-mail for a Delta Chat user
+it forwards the “device token” to the central Delta Chat notification proxy.
+
+
+
The central Delta Chat notification proxy forwards
+the “device token” to the respective Push service (Apple, Google, etc.),
+without ever knowing the IP or e-mail address of Delta Chat users.
+
+
+
The central Push Service (Apple, Google, etc.)
+wakes up the Delta Chat app on your device
+to check for new messages in the background.
+It does not know about the chatmail or e-mail address of the device it wakes up.
+The central Apple/Google Push services never see an e-mail address (sender or receiver)
+and also never see any message content (also not in encrypted forms).
+
+
+
+
As of May 2024, chatmail servers know about “device tokens”
+but we plan to encrypt this information to the notification proxy
+such that the chatmail server never learns the device token.
+
+
The central Delta Chat notification proxy is small and fully implemented in Rust
+and forgets about device-tokens as soon as Apple/Google/etc processed them,
+usually in a matter of milliseconds.
+
+
Resulting from this overall privacy design, even the seizure of a chatmail server,
+or the full seizure of the central Delta Chat notification proxy
+would not reveal private information that Push services do not already have.
+
+
+
+
+ Why does Delta Chat integrate with centralized proprietary Apple/Google push services?
+
+
+
+
+
Delta Chat is a free and open source decentralized messenger with free server choice,
+but we want users to reliably experience “instant delivery” of messages,
+like they experience from Whatsapp, Signal or Telegram apps,
+without asking questions up-front that are more suited to expert users or developers.
Secure-Join protocols
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
guarantee end-to-end encrypted messages.
-
+
- How can i know if messages are end-to-end encrypted?
+ 我如何知道信息是否经过端到端加密?{#whene2e}
Meet your chat partner outside Delta Chat, preferably in person
-but a second channel like a video chat
-or a different messenger is fine as well.
-Perform the following QR show/scan procedure with your chat partner.
-One of you is the “Inviter”, the other is the “Joiner”.
+
If you have a second communication channel with your chat partner,
+like a video chat or a different messenger,
+you can generate an invite link.
-
Inviter side:
+
If you are together in person,
+you can show a QR code to your chat partner.
-
Group invitation:
-Tap the chat group title to see its member list, and select “QR Invite code”.
-Share the QR image with the other side either in person or through a second channel.
+
For Group invitations,
+tap the chat group title to see its member list,
+and select “QR Invite code”.
-
Direct 1:1 chat invitation:
-Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-Share the QR image with the other side either in person or through a second channel.
+
For direct 1:1 chat invitations,
+tap the QR Code icon
+on the Delta Chat app main screen.
-
Joiner side:
+
Let your chat partner scan the QR image
+with their Delta Chat app,
+or click “Copy” or “Share” to create an invite link
+and share it with your chat partner.
-
-
-
Tap the QR Code icon
-on the Delta Chat app main screen –
-on Desktop the QR Icon is in the left-side sandwich menu.
-
-
-
Choose “SCAN QR CODE” and scan the QR Code
-that you see from your chat partner in a second channel.
@@ -643,7 +762,7 @@ but there is no green checkmark in the profile title.
This usually means that the contact “sent a message from another device”.
For more in-depth discussion of “guaranteed end-to-end encryption”
-please see Secure-Join protocols
+please see Secure-Join protocols
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.
@@ -671,7 +790,7 @@ even if the contact is a member there.
Your contact is using Delta Chat on a second device (phone or laptop)
If they have another device with a Delta Chat app running,
-they should remove the account from the new device
+they should remove the profile from the new device
and add it as a second device as described here.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.
@@ -679,8 +798,8 @@ and guaranteed encryption is established with both devices of your contact.
Your contact reinstalled Delta Chat using their old account login
If they have a backup file,
-they should remove the account from the new device
-and rather import the backup file to re-create their account.
+they should remove the profile from the new device
+and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.
@@ -701,7 +820,7 @@ guaranteed end-to-end encryption will be automatically re-established.
Sometimes remaining in contact is more important than end-to-end encryption.
“Transport Layer Encryption” (TLS) may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
-But without end-to-end encryption you and your contract are trusting your e-mail server
+But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.
In any case, you can not do much else than accept the warning.
@@ -867,12 +986,12 @@ deliver messages to recipient’s devices.
Both for protecting against metadata-collecting e-mail servers
as well as against the threat of device seizure
-we recommend to use a Delta Chat optimized e-mail server instance
-to create pseudonymous temporary accounts through QR-code scans.
-Note that Delta Chat apps on all platforms support multiple accounts
-so you can easily use action-specific “1-week” or “1-month” accounts next to your “main” account
-with the knowledge that all temporary account data, along with all metadata, will be deleted.
-Moreover, if a device is seized then contacts using temporary e-mail accounts
+we recommend to use a chatmail server
+to create pseudonymous temporary profiles through QR-code scans.
+Note that Delta Chat apps on all platforms support multiple profiles
+so you can easily use situation-specific profiles next to your “main” profile
+with the knowledge that all their data, along with all metadata, will be deleted.
+Moreover, if a device is seized then contacts using temporary profiles
can not be identified easily, as compared to messengers which reveal
phone numbers in chat groups which in turn are often associated with legal identities.
@@ -931,7 +1050,7 @@ and their non-Autocrypt e-mail app.
If you need a safely end-to-end encrypted chat with a contact
-who is using their account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
+who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
it’s best to setup guaranteed end-to-end encryption with them
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
@@ -949,10 +1068,10 @@ even if the direct chat between you two has a
The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is using chats with guaranteed end-to-end encryption
-and turning on disappearing messages.
Guranteed end-to-end encrypted chats protect against MITM attacks
-and turning on “disappearing messages” deletes the messages
+
Guaranteed end-to-end encrypted chats protect against MITM attacks
+and turning on disappearing messages deletes the messages
on the server after a user-configured time.
If you don’t need a longer-lived copy of your messages on the server,
@@ -1031,12 +1150,77 @@ Caution: Make sure the key is not protected by a password, or remove the passwor
-
+
+
+ Was Delta Chat independently audited for security vulnerabilities?
+
+
+
+
+
The Delta Chat project underwent four independent security audits and one
+independent security analysis, from most recent to older:
+
+
+
+
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 Hardening Guaranteed End-to-End encryption for more detailed information and the
+Cryptographic Analysis of Delta Chat
+research paper published afterwards.
+
+
+
2023 April, we fixed security and privacy issues with the “web
+apps shared in a chat” feature, related to failures of sandboxing
+especially with Chromium. We subsequently got an independent security
+audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
+See here for the full background story on end-to-end security in the web.
+
+
+
2023 March, Cure53 analyzed both the transport encryption of
+Delta Chat’s network connections and a reproducible mail server setup as
+recommended on this site.
+You can read more about the audit on our blog
+or read the full report here.
+
+
+
2020, Include Security analyzed Delta
+Chat’s Rust core,
+IMAP,
+SMTP, and
+TLS libraries.
+It did not find any critical or high-severity issues.
+The report raised a few medium-severity weaknesses -
+they are no threat to Delta Chat users on their own
+because they depend on the environment in which Delta Chat is used.
+For usability and compatibility reasons,
+we can not mitigate all of them
+and decided to provide security recommendations to threatened users.
+You can read the full report here.
+
+
+
2019, Include Security analyzed Delta
+Chat’s PGP and
+RSA libraries.
+It found no critical issues,
+but two high-severity issues that we subsequently fixed.
+It also revealed one medium-severity and some less severe issues,
+but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
+Some of them we nevertheless fixed since the audit was concluded.
+You can read the full report here.
+
+
+
@@ -1053,7 +1237,7 @@ Caution: Make sure the key is not protected by a password, or remove the passwor
-
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same account on different devices:
+
Yes. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:
@@ -1091,10 +1275,19 @@ One device is not needed for the other to work.
Double-check both devices are in the same Wi-Fi or network
+
+
On Windows, go to Control Panel / Network and Internet
+and make sure, Private Network is selected as “Network profile type”
+(after transfer, you can change back to the original value)
+
Your system might have a “personal firewall”,
which is known to cause problems (especially on Windows).
Disable the personal firewall for Delta Chat on both ends and try again
+
+
+
Guest Networks may not allow devices to communicate with each other.
+If possible, use a non-guest network.
Ensure there is enough storage on the destination device
@@ -1106,7 +1299,7 @@ Do not exit Delta Chat.
Delta Chat is already logged in on the destination device?
-You can use multiple accounts per device, just add another account
If you still have problems or if you cannot scan a QR code
@@ -1129,8 +1322,8 @@ try the manual transfer described below
screen unlock PIN, pattern, or password. Then you can click on “Start
Backup”. This saves the backup file to your device. Now you have to transfer
it to the other device somehow.
-
On the new device, on the login screen, instead of logging into your email
-account, choose “Import Backup”. After import, your conversations, encryption
+
On the new device, in the “I already have a profile” menu,
+choose “restore from backup”. After import, your conversations, encryption
keys, and media should be copied to the new device.
If you use iOS: and you encounter difficulties, maybe
@@ -1156,42 +1349,6 @@ end-to-end encrypted messages with your communication partners.
如果是因为不能在工作的电脑上安装软件而需要一个 Web 客户端,您可以使用便携版的 Windows 桌面客户端,或者在 Linux 上使用 AppImage 版。您可以在 get.delta.chat 找到它们。
You can turn on location streaming in the “experimental features” section of
+the advanced settings.
+
Now, if you want to share your location in a chat, go to “attach” and select
+“location”. You can now set a time frame in which your location will be
+streamed to your chat partners, between 5 minutes and 6 hours.
+
When your location changes, the others in the chat can view it on a map in
+the chat.
+
To see the map and view locations of others, you need to turn on the feature
+in the advanced settings.
+
This feature will not share your location with anyone except your chat partners.
+Map tiles are downloaded from OpenStreetMap.
+
On desktop, the OS typically can’t determine your location. Instead you can
+right click on the map and describe a location, which is sent to the chat as
+a message, but also appears on the map.
@@ -1373,8 +1538,8 @@ this way, you will have a new random jitsi room every time you call someone.
-
Change your address in “Settings - Password and Account” and
-enter the password of your new account (and if necessary, server settings).
+
Change your address in “Settings → Advanced → Password and Account” and
+enter the password of your new e-mail account (and if necessary, server settings).
You will get an information notice about the fact that you are moving to a new address.
An additional notice will also show up in your “Device messages” chat.
+
+
+ Can I set the E-Mail Subject with Delta Chat?
+
+
+
+
+
Delta Chat sets (and encrypts!) the classic e-mail subject
+automatically to the group name or to the sender name.
+
+
So if you want to set the subject yourself,
+for example for a formal e-mail to a business contact,
+you can create a group
+with only yourself and the recipient(s).
+Set the Chat Title to the Subject you want,
+and then send your e-mail as the first message.
+If the recipients don’t use Delta Chat,
+it will look like a normal,
+formal e-mail to them.
+You will get bonus professionalism points
+if you set a signature text.
As you use an e-mail account for Delta Chat,
+how you can delete your account depends on your e-mail provider.
+We don’t have any control over your e-mail account,
+so unfortunately we can’t help you with that.
+
+
If you want to keep the account,
+but uninstall Delta Chat,
+it is recommended to leave any group chat before uninstalling Delta Chat.
-
-
- Was Delta Chat independently audited for security vulnerabilities?
-
-
-
-
-
The Delta Chat project underwent four independent security audits in the last years:
-
-
-
-
In 2019, Include Security analyzed Delta
-Chat’s PGP and
-RSA libraries.
-It found no critical issues,
-but two high-severity issues that we subsequently fixed.
-It also revealed one medium-severity and some less severe issues,
-but there was no way to exploit these vulnerabilities in the Delta Chat implementation.
-Some of them we nevertheless fixed since the audit was concluded.
-You can read the full report here.
-
-
-
In 2020, Include Security analyzed Delta
-Chat’s Rust core,
-IMAP,
-SMTP, and
-TLS libraries.
-It did not find any critical or high-severity issues.
-The report raised a few medium-severity weaknesses -
-they are no threat to Delta Chat users on their own
-because they depend on the environment in which Delta Chat is used.
-For usability and compatibility reasons,
-we can not mitigate all of them
-and decided to provide security recommendations to threatened users.
-You can read the full report here.
-
-
-
Beginning 2023, Cure53 analyzed both the transport encryption of
-Delta Chat’s network connections and a reproducible mail server setup as
-recommended on this site.
-You can read more about the audit on our blog
-or read the full report here.
-
-
-
Beginning 2023, we fixed security and privacy issues with the “web
-apps shared in a chat” feature, related to failures of sandboxing
-especially with Chromium. We subsequently got an independent security
-audit from Cure53 and all issues found were fixed in the 1.36 app series released in April 2023.
-See here for the full background story on end-to-end security in the web.
The NEXTLEAP EU project funded the research
-and implementation of verified groups and setup contact protocols
-in 2017 and 2018 and also helped to integrate end-to-end Encryption
-through Autocrypt.
From End 2021 till March 2023 we received Internet Freedom funding (500K USD) from the
-U.S. Bureau of Democracy, Human Rights and Labor (DRL).
-This funding supported our long-running goals to make Delta Chat more usable
-and compatible with a wide range of e-mail servers world-wide, and more resilient and secure
-in places often affected by internet censorship and shutdowns.
Beginning 2023 we got accepted in the Next Generation Internet (NGI)
-Entrust program for our “Private Decentralized Apps” proposals.
-Exact amount is to be determined (around 100K EUR).
-This funding supports further developments of webxdc “apps shared in a chat”.
Sometimes we receive one-time donations from private individuals.
-For example, in 2021 a generous individual bank-wired us 4K EUR
-with the subject “keep up the good developments!”. 💜
-We use such money to fund development gatherings or to care for ad-hoc expenses
-that can not easily be predicted for, or reimbursed from, public funding grants.
-Receiving more donations also helps us to become more independent and long-term viable
-as a contributor community.
diff --git a/src/main/assets/webxdc/maps.xdc b/src/main/assets/webxdc/maps.xdc
new file mode 100644
index 000000000..2fb5ca191
Binary files /dev/null and b/src/main/assets/webxdc/maps.xdc differ
diff --git a/src/com/b44t/messenger/DcAccounts.java b/src/main/java/com/b44t/messenger/DcAccounts.java
similarity index 96%
rename from src/com/b44t/messenger/DcAccounts.java
rename to src/main/java/com/b44t/messenger/DcAccounts.java
index c959ff69e..afe6b5041 100644
--- a/src/com/b44t/messenger/DcAccounts.java
+++ b/src/main/java/com/b44t/messenger/DcAccounts.java
@@ -24,6 +24,7 @@ public class DcAccounts {
public native void startIo ();
public native void stopIo ();
public native void maybeNetwork ();
+ public native void setPushDeviceToken (String token);
public native int addAccount ();
public native int addClosedAccount ();
diff --git a/src/com/b44t/messenger/DcBackupProvider.java b/src/main/java/com/b44t/messenger/DcBackupProvider.java
similarity index 100%
rename from src/com/b44t/messenger/DcBackupProvider.java
rename to src/main/java/com/b44t/messenger/DcBackupProvider.java
diff --git a/src/com/b44t/messenger/DcChat.java b/src/main/java/com/b44t/messenger/DcChat.java
similarity index 100%
rename from src/com/b44t/messenger/DcChat.java
rename to src/main/java/com/b44t/messenger/DcChat.java
diff --git a/src/com/b44t/messenger/DcChatlist.java b/src/main/java/com/b44t/messenger/DcChatlist.java
similarity index 100%
rename from src/com/b44t/messenger/DcChatlist.java
rename to src/main/java/com/b44t/messenger/DcChatlist.java
diff --git a/src/com/b44t/messenger/DcContact.java b/src/main/java/com/b44t/messenger/DcContact.java
similarity index 97%
rename from src/com/b44t/messenger/DcContact.java
rename to src/main/java/com/b44t/messenger/DcContact.java
index 91afae6f0..0f61d9107 100644
--- a/src/com/b44t/messenger/DcContact.java
+++ b/src/main/java/com/b44t/messenger/DcContact.java
@@ -6,7 +6,7 @@ public class DcContact {
public final static int DC_CONTACT_ID_INFO = 2;
public final static int DC_CONTACT_ID_DEVICE = 5;
public final static int DC_CONTACT_ID_LAST_SPECIAL = 9;
- public final static int DC_CONTACT_ID_NEW_CONTACT = -1; // used by the UI, not valid to the core
+ public final static int DC_CONTACT_ID_NEW_CLASSIC_CONTACT= -1; // used by the UI, not valid to the core
public final static int DC_CONTACT_ID_NEW_GROUP = -2; // - " -
public final static int DC_CONTACT_ID_ADD_MEMBER = -3; // - " -
public final static int DC_CONTACT_ID_QR_INVITE = -4; // - " -
diff --git a/src/com/b44t/messenger/DcContext.java b/src/main/java/com/b44t/messenger/DcContext.java
similarity index 93%
rename from src/com/b44t/messenger/DcContext.java
rename to src/main/java/com/b44t/messenger/DcContext.java
index 33736f654..8813385d0 100644
--- a/src/com/b44t/messenger/DcContext.java
+++ b/src/main/java/com/b44t/messenger/DcContext.java
@@ -29,6 +29,8 @@ public class DcContext {
public final static int DC_EVENT_CONNECTIVITY_CHANGED = 2100;
public final static int DC_EVENT_SELFAVATAR_CHANGED = 2110;
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_IMEX_EXPORT_SELF_KEYS = 1;
public final static int DC_IMEX_IMPORT_SELF_KEYS = 2;
@@ -136,8 +138,6 @@ public class DcContext {
public native boolean setConfigFromQr (String qr);
public native String getConfig (String key);
public int getConfigInt (String key) { try{return Integer.parseInt(getConfig(key));} catch(Exception e) {} return 0; }
- @Deprecated public String getConfig (String key, String def) { return getConfig(key); }
- @Deprecated public int getConfigInt (String key, int def) { return getConfigInt(key); }
public native String getInfo ();
public native int getConnectivity ();
public native String getConnectivityHtml ();
@@ -202,6 +202,8 @@ public class DcContext {
public native int sendVideochatInvitation(int chat_id);
public native boolean sendWebxdcStatusUpdate(int msg_id, String payload, String descr);
public native String getWebxdcStatusUpdates(int msg_id, int last_known_serial);
+ public native void setWebxdcIntegration (String file);
+ public native int initWebxdcIntegration(int chat_id);
public native int addDeviceMsg (String label, DcMsg msg);
public native boolean wasDeviceMsgEverAdded(String label);
public DcLot checkQr (String qr) { return new DcLot(checkQrCPtr(qr)); }
@@ -210,8 +212,6 @@ public class DcContext {
public native int joinSecurejoin (String qr);
public native void sendLocationsToChat (int chat_id, int seconds);
public native boolean isSendingLocationsToChat(int chat_id);
- public DcArray getLocations (int chat_id, int contact_id, long timestamp_start, long timestamp_end) { return new DcArray(getLocationsCPtr(chat_id, contact_id, timestamp_start, timestamp_end)); }
- public native void deleteAllLocations ();
public DcProvider getProviderFromEmailWithDns (String email) { long cptr = getProviderFromEmailWithDnsCPtr(email); return cptr!=0 ? new DcProvider(cptr) : null; }
public String getNameNAddr() {
@@ -232,6 +232,25 @@ public class DcContext {
return ret.trim();
}
+ public boolean isChatmail() {
+ return getConfigInt("is_chatmail") == 1;
+ }
+
+ // 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*/);
+ }
+ }
+
/**
* @return true if at least one chat has location streaming enabled
*/
@@ -248,7 +267,6 @@ public class DcContext {
private native long getMsgCPtr (int id);
private native long getDraftCPtr (int id);
private native long getContactCPtr (int id);
- private native long getLocationsCPtr (int chat_id, int contact_id, long timestamp_start, long timestamp_end);
private native long checkQrCPtr (String qr);
private native long getProviderFromEmailWithDnsCPtr (String addr);
private native long newBackupProviderCPtr();
diff --git a/src/com/b44t/messenger/DcEvent.java b/src/main/java/com/b44t/messenger/DcEvent.java
similarity index 93%
rename from src/com/b44t/messenger/DcEvent.java
rename to src/main/java/com/b44t/messenger/DcEvent.java
index a2970b908..1acfc2ee0 100644
--- a/src/com/b44t/messenger/DcEvent.java
+++ b/src/main/java/com/b44t/messenger/DcEvent.java
@@ -16,6 +16,7 @@ public class DcEvent {
public native int getData1Int ();
public native int getData2Int ();
public native String getData2Str ();
+ public native byte[] getData2Blob();
public native int getAccountId();
// working with raw c-data
diff --git a/src/com/b44t/messenger/DcEventEmitter.java b/src/main/java/com/b44t/messenger/DcEventEmitter.java
similarity index 100%
rename from src/com/b44t/messenger/DcEventEmitter.java
rename to src/main/java/com/b44t/messenger/DcEventEmitter.java
diff --git a/src/com/b44t/messenger/DcJsonrpcInstance.java b/src/main/java/com/b44t/messenger/DcJsonrpcInstance.java
similarity index 100%
rename from src/com/b44t/messenger/DcJsonrpcInstance.java
rename to src/main/java/com/b44t/messenger/DcJsonrpcInstance.java
diff --git a/src/com/b44t/messenger/DcLot.java b/src/main/java/com/b44t/messenger/DcLot.java
similarity index 100%
rename from src/com/b44t/messenger/DcLot.java
rename to src/main/java/com/b44t/messenger/DcLot.java
diff --git a/src/com/b44t/messenger/DcMediaGalleryElement.java b/src/main/java/com/b44t/messenger/DcMediaGalleryElement.java
similarity index 100%
rename from src/com/b44t/messenger/DcMediaGalleryElement.java
rename to src/main/java/com/b44t/messenger/DcMediaGalleryElement.java
diff --git a/src/com/b44t/messenger/DcMsg.java b/src/main/java/com/b44t/messenger/DcMsg.java
similarity index 98%
rename from src/com/b44t/messenger/DcMsg.java
rename to src/main/java/com/b44t/messenger/DcMsg.java
index 7f783441b..52a4c110d 100644
--- a/src/com/b44t/messenger/DcMsg.java
+++ b/src/main/java/com/b44t/messenger/DcMsg.java
@@ -20,6 +20,7 @@ public class DcMsg {
public final static int DC_MSG_FILE = 60;
public final static int DC_MSG_VIDEOCHAT_INVITATION = 70;
public final static int DC_MSG_WEBXDC = 80;
+ public final static int DC_MSG_VCARD = 90;
public final static int DC_INFO_UNKNOWN = 0;
public final static int DC_INFO_GROUP_NAME_CHANGED = 2;
@@ -33,6 +34,7 @@ public class DcMsg {
public final static int DC_INFO_EPHEMERAL_TIMER_CHANGED = 10;
public final static int DC_INFO_PROTECTION_ENABLED = 11;
public final static int DC_INFO_PROTECTION_DISABLED = 12;
+ public final static int DC_INFO_INVALID_UNENCRYPTED_MAIL = 13;
public final static int DC_INFO_WEBXDC_INFO_MESSAGE = 32;
public final static int DC_STATE_UNDEFINED = 0;
diff --git a/src/com/b44t/messenger/DcProvider.java b/src/main/java/com/b44t/messenger/DcProvider.java
similarity index 100%
rename from src/com/b44t/messenger/DcProvider.java
rename to src/main/java/com/b44t/messenger/DcProvider.java
diff --git a/src/com/b44t/messenger/rpc/HttpResponse.java b/src/main/java/com/b44t/messenger/rpc/HttpResponse.java
similarity index 100%
rename from src/com/b44t/messenger/rpc/HttpResponse.java
rename to src/main/java/com/b44t/messenger/rpc/HttpResponse.java
diff --git a/src/com/b44t/messenger/rpc/Reaction.java b/src/main/java/com/b44t/messenger/rpc/Reaction.java
similarity index 100%
rename from src/com/b44t/messenger/rpc/Reaction.java
rename to src/main/java/com/b44t/messenger/rpc/Reaction.java
diff --git a/src/com/b44t/messenger/rpc/Reactions.java b/src/main/java/com/b44t/messenger/rpc/Reactions.java
similarity index 100%
rename from src/com/b44t/messenger/rpc/Reactions.java
rename to src/main/java/com/b44t/messenger/rpc/Reactions.java
diff --git a/src/com/b44t/messenger/rpc/Rpc.java b/src/main/java/com/b44t/messenger/rpc/Rpc.java
similarity index 75%
rename from src/com/b44t/messenger/rpc/Rpc.java
rename to src/main/java/com/b44t/messenger/rpc/Rpc.java
index 33e9e1f21..e7ae1b9e3 100644
--- a/src/com/b44t/messenger/rpc/Rpc.java
+++ b/src/main/java/com/b44t/messenger/rpc/Rpc.java
@@ -8,6 +8,7 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
@@ -95,6 +96,20 @@ public class Rpc {
return gson.fromJson(getResult("get_system_info"), mapType.getType());
}
+ public List parseVcard(String path) throws RpcException {
+ TypeToken> listType = new TypeToken>(){};
+ return gson.fromJson(getResult("parse_vcard", path), listType.getType());
+ }
+
+ public String makeVcard(int accountId, int... contacts) throws RpcException {
+ return gson.fromJson(getResult("make_vcard", accountId, contacts), String.class);
+ }
+
+ public List importVcard(int accountId, String path) throws RpcException {
+ TypeToken> listType = new TypeToken>(){};
+ return gson.fromJson(getResult("import_vcard", accountId, path), listType.getType());
+ }
+
public HttpResponse getHttpResponse(int accountId, String url) throws RpcException {
return gson.fromJson(getResult("get_http_response", accountId, url), HttpResponse.class);
}
@@ -107,6 +122,22 @@ public class Rpc {
return getResult("send_reaction", accountId, msgId, reaction).getAsInt();
}
+ public int draftSelfReport(int accountId) throws RpcException {
+ return getResult("draft_self_report", accountId).getAsInt();
+ }
+
+ public void sendWebxdcRealtimeData(Integer accountId, Integer instanceMsgId, List data) throws RpcException {
+ getResult("send_webxdc_realtime_data", accountId, instanceMsgId, data);
+ }
+
+ public void sendWebxdcRealtimeAdvertisement(Integer accountId, Integer instanceMsgId) throws RpcException {
+ getResult("send_webxdc_realtime_advertisement", accountId, instanceMsgId);
+ }
+
+ public void leaveWebxdcRealtime(Integer accountId, Integer instanceMessageId) throws RpcException {
+ getResult("leave_webxdc_realtime", accountId, instanceMessageId);
+ }
+
private static class Request {
private final String jsonrpc = "2.0";
public final String method;
diff --git a/src/com/b44t/messenger/rpc/RpcException.java b/src/main/java/com/b44t/messenger/rpc/RpcException.java
similarity index 100%
rename from src/com/b44t/messenger/rpc/RpcException.java
rename to src/main/java/com/b44t/messenger/rpc/RpcException.java
diff --git a/src/main/java/com/b44t/messenger/rpc/VcardContact.java b/src/main/java/com/b44t/messenger/rpc/VcardContact.java
new file mode 100644
index 000000000..75c47ea0a
--- /dev/null
+++ b/src/main/java/com/b44t/messenger/rpc/VcardContact.java
@@ -0,0 +1,60 @@
+package com.b44t.messenger.rpc;
+
+import android.util.Base64;
+
+public class VcardContact {
+ // Email address.
+ private final String addr;
+
+ // The contact's name, or the email address if no name was given.
+ private final String displayName;
+
+ // Public PGP key in Base64.
+ private final String key;
+
+ // Profile image in Base64.
+ private final String profileImage;
+
+ // Contact color in HTML color format.
+ private final String color;
+
+ // Last update timestamp.
+ private final int timestamp;
+
+ public VcardContact(String addr, String displayName, String key, String profileImage, String color, int timestamp) {
+ this.addr = addr;
+ this.displayName = displayName;
+ this.key = key;
+ this.profileImage = profileImage;
+ this.color = color;
+ this.timestamp = timestamp;
+ }
+
+ public String getAddr() {
+ return addr;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public byte[] getKey() {
+ return key == null? null : Base64.decode(key, Base64.NO_WRAP | Base64.NO_PADDING);
+ }
+
+ public boolean hasProfileImage() {
+ return profileImage != null;
+ }
+
+ public byte[] getProfileImage() {
+ return profileImage == null? null : Base64.decode(profileImage, Base64.NO_WRAP | Base64.NO_PADDING);
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public int getTimestamp() {
+ return timestamp;
+ }
+}
diff --git a/src/com/b44t/messenger/util/concurrent/ListenableFuture.java b/src/main/java/com/b44t/messenger/util/concurrent/ListenableFuture.java
similarity index 100%
rename from src/com/b44t/messenger/util/concurrent/ListenableFuture.java
rename to src/main/java/com/b44t/messenger/util/concurrent/ListenableFuture.java
diff --git a/src/com/b44t/messenger/util/concurrent/SettableFuture.java b/src/main/java/com/b44t/messenger/util/concurrent/SettableFuture.java
similarity index 100%
rename from src/com/b44t/messenger/util/concurrent/SettableFuture.java
rename to src/main/java/com/b44t/messenger/util/concurrent/SettableFuture.java
diff --git a/src/org/thoughtcrime/securesms/ApplicationContext.java b/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
similarity index 96%
rename from src/org/thoughtcrime/securesms/ApplicationContext.java
rename to src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
index c1c00e3a6..6d78be0dc 100644
--- a/src/org/thoughtcrime/securesms/ApplicationContext.java
+++ b/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
@@ -39,6 +39,7 @@ import org.thoughtcrime.securesms.crypto.DatabaseSecretProvider;
import org.thoughtcrime.securesms.crypto.PRNGFixes;
import org.thoughtcrime.securesms.geolocation.DcLocationManager;
import org.thoughtcrime.securesms.jobmanager.JobManager;
+import org.thoughtcrime.securesms.notifications.FcmReceiveService;
import org.thoughtcrime.securesms.notifications.InChatSounds;
import org.thoughtcrime.securesms.notifications.NotificationCenter;
import org.thoughtcrime.securesms.util.AndroidSignalProtocolLogger;
@@ -54,7 +55,7 @@ import java.util.concurrent.TimeUnit;
public class ApplicationContext extends MultiDexApplication {
private static final String TAG = ApplicationContext.class.getSimpleName();
- public DcAccounts dcAccounts;
+ public static DcAccounts dcAccounts;
public Rpc rpc;
public DcContext dcContext;
public DcLocationManager dcLocationManager;
@@ -223,6 +224,16 @@ public class ApplicationContext extends MultiDexApplication {
ExistingPeriodicWorkPolicy.KEEP,
fetchWorkRequest);
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
+
+ if (BuildConfig.USE_PLAY_SERVICES) {
+ if (Prefs.isPushEnabled(this)) {
+ FcmReceiveService.register(this);
+ } else {
+ Log.i(TAG, "FCM disabled in user settings");
+ }
+ } else {
+ Log.i(TAG, "FCM disabled at build time");
+ }
}
public JobManager getJobManager() {
diff --git a/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java b/src/main/java/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
similarity index 99%
rename from src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
rename to src/main/java/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
index 75e96d619..3898bb68e 100644
--- a/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
@@ -17,7 +17,6 @@
*/
package org.thoughtcrime.securesms;
-import android.Manifest;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
diff --git a/src/main/java/org/thoughtcrime/securesms/AttachContactActivity.java b/src/main/java/org/thoughtcrime/securesms/AttachContactActivity.java
new file mode 100644
index 000000000..fcacec7b5
--- /dev/null
+++ b/src/main/java/org/thoughtcrime/securesms/AttachContactActivity.java
@@ -0,0 +1,19 @@
+package org.thoughtcrime.securesms;
+
+import android.content.Intent;
+
+import org.thoughtcrime.securesms.connect.DcHelper;
+
+public class AttachContactActivity extends ContactSelectionActivity {
+
+ public static final String CONTACT_ID_EXTRA = "contact_id_extra";
+
+ @Override
+ public void onContactSelected(int specialId, String addr) {
+ Intent intent = new Intent();
+ int contactId = DcHelper.getContext(this).lookupContactIdByAddr(addr);
+ intent.putExtra(CONTACT_ID_EXTRA, contactId);
+ setResult(RESULT_OK, intent);
+ finish();
+ }
+}
diff --git a/src/org/thoughtcrime/securesms/BaseActionBarActivity.java b/src/main/java/org/thoughtcrime/securesms/BaseActionBarActivity.java
similarity index 96%
rename from src/org/thoughtcrime/securesms/BaseActionBarActivity.java
rename to src/main/java/org/thoughtcrime/securesms/BaseActionBarActivity.java
index 6297cd58c..487be89bb 100644
--- a/src/org/thoughtcrime/securesms/BaseActionBarActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/BaseActionBarActivity.java
@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms;
import android.content.res.Configuration;
-import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
@@ -75,9 +74,7 @@ public abstract class BaseActionBarActivity extends AppCompatActivity {
}
private void initializeScreenshotSecurity() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH &&
- Prefs.isScreenSecurityEnabled(this))
- {
+ if (Prefs.isScreenSecurityEnabled(this)) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
}
diff --git a/src/org/thoughtcrime/securesms/BaseActivity.java b/src/main/java/org/thoughtcrime/securesms/BaseActivity.java
similarity index 78%
rename from src/org/thoughtcrime/securesms/BaseActivity.java
rename to src/main/java/org/thoughtcrime/securesms/BaseActivity.java
index 7dee2e786..319d3d56c 100644
--- a/src/org/thoughtcrime/securesms/BaseActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/BaseActivity.java
@@ -23,8 +23,6 @@ public abstract class BaseActivity extends FragmentActivity {
}
public static boolean isMenuWorkaroundRequired() {
- return VERSION.SDK_INT < VERSION_CODES.KITKAT &&
- VERSION.SDK_INT > VERSION_CODES.GINGERBREAD_MR1 &&
- ("LGE".equalsIgnoreCase(Build.MANUFACTURER) || "E6710".equalsIgnoreCase(Build.DEVICE));
+ return VERSION.SDK_INT < VERSION_CODES.KITKAT && ("LGE".equalsIgnoreCase(Build.MANUFACTURER) || "E6710".equalsIgnoreCase(Build.DEVICE));
}
}
diff --git a/src/org/thoughtcrime/securesms/BaseConversationItem.java b/src/main/java/org/thoughtcrime/securesms/BaseConversationItem.java
similarity index 94%
rename from src/org/thoughtcrime/securesms/BaseConversationItem.java
rename to src/main/java/org/thoughtcrime/securesms/BaseConversationItem.java
index 17d311ecf..106896be5 100644
--- a/src/org/thoughtcrime/securesms/BaseConversationItem.java
+++ b/src/main/java/org/thoughtcrime/securesms/BaseConversationItem.java
@@ -83,7 +83,8 @@ public abstract class BaseConversationItem extends LinearLayout
return batchSelected.isEmpty()
&& (messageRecord.isFailed()
|| messageRecord.getInfoType() == DcMsg.DC_INFO_PROTECTION_DISABLED
- || messageRecord.getInfoType() == DcMsg.DC_INFO_PROTECTION_ENABLED);
+ || messageRecord.getInfoType() == DcMsg.DC_INFO_PROTECTION_ENABLED
+ || messageRecord.getInfoType() == DcMsg.DC_INFO_INVALID_UNENCRYPTED_MAIL);
}
protected void onAccessibilityClick() {}
@@ -133,6 +134,8 @@ public abstract class BaseConversationItem extends LinearLayout
DcHelper.showVerificationBrokenDialog(context, conversationRecipient.getName());
} else if (messageRecord.getInfoType() == DcMsg.DC_INFO_PROTECTION_ENABLED) {
DcHelper.showProtectionEnabledDialog(context);
+ } else if (messageRecord.getInfoType() == DcMsg.DC_INFO_INVALID_UNENCRYPTED_MAIL) {
+ DcHelper.showInvalidUnencryptedDialog(context);
}
}
}
diff --git a/src/main/java/org/thoughtcrime/securesms/BaseConversationListAdapter.java b/src/main/java/org/thoughtcrime/securesms/BaseConversationListAdapter.java
new file mode 100644
index 000000000..3114c3524
--- /dev/null
+++ b/src/main/java/org/thoughtcrime/securesms/BaseConversationListAdapter.java
@@ -0,0 +1,32 @@
+package org.thoughtcrime.securesms;
+
+import androidx.recyclerview.widget.RecyclerView;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+public abstract class BaseConversationListAdapter extends RecyclerView.Adapter {
+ protected final Set batchSet = Collections.synchronizedSet(new HashSet());
+ protected boolean batchMode = false;
+
+ public abstract void selectAllThreads();
+
+ public void initializeBatchMode(boolean toggle) {
+ batchMode = toggle;
+ batchSet.clear();
+ notifyDataSetChanged();
+ }
+
+ public void toggleThreadInBatchSet(long threadId) {
+ if (batchSet.contains(threadId)) {
+ batchSet.remove(threadId);
+ } else if (threadId != -1) {
+ batchSet.add(threadId);
+ }
+ }
+
+ public Set getBatchSelections() {
+ return batchSet;
+ }
+}
diff --git a/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java b/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
new file mode 100644
index 000000000..4ae6de962
--- /dev/null
+++ b/src/main/java/org/thoughtcrime/securesms/BaseConversationListFragment.java
@@ -0,0 +1,397 @@
+package org.thoughtcrime.securesms;
+
+import static org.thoughtcrime.securesms.util.RelayUtil.acquireRelayMessageContent;
+import static org.thoughtcrime.securesms.util.RelayUtil.getSharedText;
+import static org.thoughtcrime.securesms.util.RelayUtil.getSharedUris;
+import static org.thoughtcrime.securesms.util.RelayUtil.isForwarding;
+import static org.thoughtcrime.securesms.util.RelayUtil.isRelayingMessageContent;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.TypedArray;
+import android.graphics.Color;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Build;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.view.ActionMode;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
+
+import com.b44t.messenger.DcChat;
+import com.b44t.messenger.DcContext;
+import com.google.android.material.snackbar.Snackbar;
+
+import org.thoughtcrime.securesms.components.registration.PulsingFloatingActionButton;
+import org.thoughtcrime.securesms.connect.DcHelper;
+import org.thoughtcrime.securesms.connect.DirectShareUtil;
+import org.thoughtcrime.securesms.util.SendRelayedMessageUtil;
+import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask;
+import org.thoughtcrime.securesms.util.views.ProgressDialog;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Set;
+
+public abstract class BaseConversationListFragment extends Fragment implements ActionMode.Callback {
+ protected ActionMode actionMode;
+ protected PulsingFloatingActionButton fab;
+
+ protected abstract boolean offerToArchive();
+ protected abstract void setFabVisibility(boolean isActionMode);
+ protected abstract BaseConversationListAdapter getListAdapter();
+
+ protected void onItemClick(long chatId) {
+ if (actionMode == null) {
+ ((ConversationSelectedListener) requireActivity()).onCreateConversation((int)chatId);
+ } else {
+ BaseConversationListAdapter adapter = getListAdapter();
+ adapter.toggleThreadInBatchSet(chatId);
+
+ if (adapter.getBatchSelections().isEmpty()) {
+ actionMode.finish();
+ } else {
+ updateActionModeItems(actionMode.getMenu());
+ actionMode.setTitle(String.valueOf(adapter.getBatchSelections().size()));
+ }
+
+ adapter.notifyDataSetChanged();
+ }
+ }
+ public void onItemLongClick(long chatId) {
+ actionMode = ((AppCompatActivity)requireActivity()).startSupportActionMode(this);
+
+ if (actionMode != null) {
+ getListAdapter().initializeBatchMode(true);
+ getListAdapter().toggleThreadInBatchSet(chatId);
+ getListAdapter().notifyDataSetChanged();
+ Menu menu = actionMode.getMenu();
+ if (menu != null) {
+ updateActionModeItems(menu);
+ }
+ }
+ }
+
+ protected void initializeFabClickListener(boolean isActionMode) {
+ Intent intent = new Intent(getActivity(), NewConversationActivity.class);
+ if (isRelayingMessageContent(getActivity())) {
+ if (isActionMode) {
+ fab.setOnClickListener(v -> {
+ final Set selectedChats = getListAdapter().getBatchSelections();
+ ArrayList uris = getSharedUris(getActivity());
+ String message;
+ if (isForwarding(getActivity())) {
+ message = String.format(Locale.getDefault(), getString(R.string.ask_forward_multiple), selectedChats.size());
+ } else if (!uris.isEmpty()) {
+ message = String.format(Locale.getDefault(), getString(R.string.share_multiple_attachments_multiple_chats), uris.size(), selectedChats.size());
+ } else {
+ message = String.format(Locale.getDefault(), getString(R.string.share_text_multiple_chats), selectedChats.size(), getSharedText(getActivity()));
+ }
+ Context context = getContext();
+ if (context != null) {
+ new AlertDialog.Builder(context)
+ .setMessage(message)
+ .setCancelable(false)
+ .setNegativeButton(android.R.string.cancel, ((dialog, which) -> {}))
+ .setPositiveButton(R.string.menu_send, (dialog, which) -> {
+ SendRelayedMessageUtil.immediatelyRelay(getActivity(), selectedChats.toArray(new Long[selectedChats.size()]));
+ actionMode.finish();
+ actionMode = null;
+ getActivity().finish();
+ })
+ .show();
+ }
+ });
+ } else {
+ acquireRelayMessageContent(getActivity(), intent);
+ fab.setOnClickListener(v -> requireActivity().startActivity(intent));
+ }
+ } else {
+ fab.setOnClickListener(v -> startActivity(intent));
+ }
+ }
+
+ private boolean areSomeSelectedChatsUnpinned() {
+ DcContext dcContext = DcHelper.getContext(requireActivity());
+ final Set selectedChats = getListAdapter().getBatchSelections();
+ for (long chatId : selectedChats) {
+ DcChat dcChat = dcContext.getChat((int)chatId);
+ if (dcChat.getVisibility()!=DcChat.DC_CHAT_VISIBILITY_PINNED) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean areSomeSelectedChatsUnmuted() {
+ DcContext dcContext = DcHelper.getContext(requireActivity());
+ final Set selectedChats = getListAdapter().getBatchSelections();
+ for (long chatId : selectedChats) {
+ DcChat dcChat = dcContext.getChat((int)chatId);
+ if (!dcChat.isMuted()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void handlePinAllSelected() {
+ final DcContext dcContext = DcHelper.getContext(requireActivity());
+ final Set selectedConversations = new HashSet(getListAdapter().getBatchSelections());
+ boolean doPin = areSomeSelectedChatsUnpinned();
+ for (long chatId : selectedConversations) {
+ dcContext.setChatVisibility((int)chatId,
+ doPin? DcChat.DC_CHAT_VISIBILITY_PINNED : DcChat.DC_CHAT_VISIBILITY_NORMAL);
+ }
+ if (actionMode != null) {
+ actionMode.finish();
+ actionMode = null;
+ }
+ }
+
+ private void handleMuteAllSelected() {
+ final DcContext dcContext = DcHelper.getContext(requireActivity());
+ final Set selectedConversations = new HashSet(getListAdapter().getBatchSelections());
+ if (areSomeSelectedChatsUnmuted()) {
+ MuteDialog.show(getActivity(), duration -> {
+ for (long chatId : selectedConversations) {
+ dcContext.setChatMuteDuration((int)chatId, duration);
+ }
+
+ if (actionMode != null) {
+ actionMode.finish();
+ actionMode = null;
+ }
+ });
+ } else {
+ // unmute
+ for (long chatId : selectedConversations) {
+ dcContext.setChatMuteDuration((int)chatId, 0);
+ }
+
+ if (actionMode != null) {
+ actionMode.finish();
+ actionMode = null;
+ }
+ }
+ }
+
+ private void handleMarknoticedSelected() {
+ final DcContext dcContext = DcHelper.getContext(requireActivity());
+ final Set selectedConversations = new HashSet(getListAdapter().getBatchSelections());
+ for (long chatId : selectedConversations) {
+ dcContext.marknoticedChat((int)chatId);
+ }
+ if (actionMode != null) {
+ actionMode.finish();
+ actionMode = null;
+ }
+ }
+
+ @SuppressLint("StaticFieldLeak")
+ private void handleArchiveAllSelected() {
+ final DcContext dcContext = DcHelper.getContext(requireActivity());
+ final Set selectedConversations = new HashSet(getListAdapter().getBatchSelections());
+ final boolean archive = offerToArchive();
+
+ int snackBarTitleId;
+
+ if (archive) snackBarTitleId = R.plurals.chat_archived;
+ else snackBarTitleId = R.plurals.chat_unarchived;
+
+ int count = selectedConversations.size();
+ String snackBarTitle = getResources().getQuantityString(snackBarTitleId, count, count);
+
+ new SnackbarAsyncTask(getView(), snackBarTitle,
+ getString(R.string.undo),
+ Snackbar.LENGTH_LONG, true)
+ {
+
+ @Override
+ protected void onPostExecute(Void result) {
+ super.onPostExecute(result);
+
+ if (actionMode != null) {
+ actionMode.finish();
+ actionMode = null;
+ }
+ }
+
+ @Override
+ protected void executeAction(@Nullable Void parameter) {
+ for (long chatId : selectedConversations) {
+ dcContext.setChatVisibility((int)chatId,
+ archive? DcChat.DC_CHAT_VISIBILITY_ARCHIVED : DcChat.DC_CHAT_VISIBILITY_NORMAL);
+ }
+ }
+
+ @Override
+ protected void reverseAction(@Nullable Void parameter) {
+ for (long threadId : selectedConversations) {
+ dcContext.setChatVisibility((int)threadId,
+ archive? DcChat.DC_CHAT_VISIBILITY_NORMAL : DcChat.DC_CHAT_VISIBILITY_ARCHIVED);
+ }
+ }
+ }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ }
+
+ @SuppressLint("StaticFieldLeak")
+ private void handleDeleteAllSelected() {
+ final DcContext dcContext = DcHelper.getContext(requireActivity());
+ int conversationsCount = getListAdapter().getBatchSelections().size();
+ AlertDialog.Builder alert = new AlertDialog.Builder(requireActivity());
+ alert.setMessage(requireActivity().getResources().getQuantityString(R.plurals.ask_delete_chat,
+ conversationsCount, conversationsCount));
+ alert.setCancelable(true);
+
+ alert.setPositiveButton(R.string.delete, (dialog, which) -> {
+ final Set selectedConversations = getListAdapter().getBatchSelections();
+
+ if (!selectedConversations.isEmpty()) {
+ new AsyncTask() {
+ private ProgressDialog dialog;
+
+ @Override
+ protected void onPreExecute() {
+ dialog = ProgressDialog.show(getActivity(),
+ "",
+ requireActivity().getString(R.string.one_moment),
+ true, false);
+ }
+
+ @Override
+ protected Void doInBackground(Void... params) {
+ int accountId = dcContext.getAccountId();
+ for (long chatId : selectedConversations) {
+ DcHelper.getNotificationCenter(requireContext()).removeNotifications(accountId, (int) chatId);
+ dcContext.deleteChat((int) chatId);
+ DirectShareUtil.clearShortcut(requireContext(), (int) chatId);
+ }
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ dialog.dismiss();
+ if (actionMode != null) {
+ actionMode.finish();
+ actionMode = null;
+ }
+ }
+ }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ }
+ });
+
+ alert.setNegativeButton(android.R.string.cancel, null);
+ alert.show();
+ }
+
+ private void handleSelectAllThreads() {
+ getListAdapter().selectAllThreads();
+ actionMode.setTitle(String.valueOf(getListAdapter().getBatchSelections().size()));
+ updateActionModeItems(actionMode.getMenu());
+ }
+
+ private void updateActionModeItems(Menu menu) {
+ // We do not show action mode icons when relaying (= sharing or forwarding).
+ if (!isRelayingMessageContent(requireActivity())) {
+ MenuItem archiveItem = menu.findItem(R.id.menu_archive_selected);
+ if (offerToArchive()) {
+ archiveItem.setIcon(R.drawable.ic_archive_white_24dp);
+ archiveItem.setTitle(R.string.menu_archive_chat);
+ } else {
+ archiveItem.setIcon(R.drawable.ic_unarchive_white_24dp);
+ archiveItem.setTitle(R.string.menu_unarchive_chat);
+ }
+ MenuItem pinItem = menu.findItem(R.id.menu_pin_selected);
+ if (areSomeSelectedChatsUnpinned()) {
+ pinItem.setIcon(R.drawable.ic_pin_white);
+ pinItem.setTitle(R.string.pin_chat);
+ } else {
+ pinItem.setIcon(R.drawable.ic_unpin_white);
+ pinItem.setTitle(R.string.unpin_chat);
+ }
+ MenuItem muteItem = menu.findItem(R.id.menu_mute_selected);
+ if (areSomeSelectedChatsUnmuted()) {
+ muteItem.setTitle(R.string.menu_mute);
+ } else {
+ muteItem.setTitle(R.string.menu_unmute);
+ }
+ }
+ }
+
+ @Override
+ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
+ if (isRelayingMessageContent(getActivity())) {
+ Context context = getContext();
+ if (context != null) {
+ fab.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_send_sms_white_24dp));
+ }
+ setFabVisibility(true);
+ initializeFabClickListener(true);
+ } else {
+
+ MenuInflater inflater = requireActivity().getMenuInflater();
+ inflater.inflate(R.menu.conversation_list, menu);
+ }
+
+ mode.setTitle("1");
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ requireActivity().getWindow().setStatusBarColor(getResources().getColor(R.color.action_mode_status_bar));
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
+ return false;
+ }
+
+ @Override
+ public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.menu_select_all: handleSelectAllThreads(); return true;
+ case R.id.menu_delete_selected: handleDeleteAllSelected(); return true;
+ case R.id.menu_pin_selected: handlePinAllSelected(); return true;
+ case R.id.menu_archive_selected: handleArchiveAllSelected(); return true;
+ case R.id.menu_mute_selected: handleMuteAllSelected(); return true;
+ case R.id.menu_marknoticed_selected: handleMarknoticedSelected(); return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ public void onDestroyActionMode(ActionMode mode) {
+ actionMode = null;
+ getListAdapter().initializeBatchMode(false);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ TypedArray color = requireActivity().getTheme().obtainStyledAttributes(new int[] {android.R.attr.statusBarColor});
+ requireActivity().getWindow().setStatusBarColor(color.getColor(0, Color.BLACK));
+ color.recycle();
+ }
+
+ Context context = getContext();
+ if (context != null) {
+ fab.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_add_white_24dp));
+ }
+ setFabVisibility(false);
+ initializeFabClickListener(false);
+ }
+
+ public interface ConversationSelectedListener {
+ void onCreateConversation(int chatId);
+ void onSwitchToArchive();
+ }
+}
diff --git a/src/org/thoughtcrime/securesms/BindableConversationItem.java b/src/main/java/org/thoughtcrime/securesms/BindableConversationItem.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/BindableConversationItem.java
rename to src/main/java/org/thoughtcrime/securesms/BindableConversationItem.java
diff --git a/src/org/thoughtcrime/securesms/BindableConversationListItem.java b/src/main/java/org/thoughtcrime/securesms/BindableConversationListItem.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/BindableConversationListItem.java
rename to src/main/java/org/thoughtcrime/securesms/BindableConversationListItem.java
diff --git a/src/org/thoughtcrime/securesms/BlockedContactsActivity.java b/src/main/java/org/thoughtcrime/securesms/BlockedContactsActivity.java
similarity index 99%
rename from src/org/thoughtcrime/securesms/BlockedContactsActivity.java
rename to src/main/java/org/thoughtcrime/securesms/BlockedContactsActivity.java
index 1abd9027c..6b2fdf505 100644
--- a/src/org/thoughtcrime/securesms/BlockedContactsActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/BlockedContactsActivity.java
@@ -86,7 +86,7 @@ public class BlockedContactsActivity extends PassphraseRequiredActionBarActivity
@Override
public Loader onCreateLoader(int id, Bundle args) {
- return new DcContactsLoader(getActivity(), -1, null, false, false, true);
+ return new DcContactsLoader(getActivity(), -1, null, false, false, false, true);
}
@Override
diff --git a/src/org/thoughtcrime/securesms/ConnectivityActivity.java b/src/main/java/org/thoughtcrime/securesms/ConnectivityActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ConnectivityActivity.java
rename to src/main/java/org/thoughtcrime/securesms/ConnectivityActivity.java
diff --git a/src/org/thoughtcrime/securesms/ContactMultiSelectionActivity.java b/src/main/java/org/thoughtcrime/securesms/ContactMultiSelectionActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ContactMultiSelectionActivity.java
rename to src/main/java/org/thoughtcrime/securesms/ContactMultiSelectionActivity.java
diff --git a/src/org/thoughtcrime/securesms/ContactSelectionActivity.java b/src/main/java/org/thoughtcrime/securesms/ContactSelectionActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ContactSelectionActivity.java
rename to src/main/java/org/thoughtcrime/securesms/ContactSelectionActivity.java
diff --git a/src/org/thoughtcrime/securesms/ContactSelectionListFragment.java b/src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java
similarity index 94%
rename from src/org/thoughtcrime/securesms/ContactSelectionListFragment.java
rename to src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java
index 8d5fe1768..4dd91ebf3 100644
--- a/src/org/thoughtcrime/securesms/ContactSelectionListFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/ContactSelectionListFragment.java
@@ -116,11 +116,13 @@ public class ContactSelectionListFragment extends Fragment
public void onStart() {
super.onStart();
this.getLoaderManager().initLoader(0, null, this);
- Permissions.with(this)
- .request(Manifest.permission.READ_CONTACTS)
- .ifNecessary()
- .onAllGranted(this::handleContactPermissionGranted)
- .execute();
+ if (dcContext.getConfigInt("ui.android.show_system_contacts") != 0 && !dcContext.isChatmail()) {
+ Permissions.with(this)
+ .request(Manifest.permission.READ_CONTACTS)
+ .ifNecessary()
+ .onAllGranted(this::handleContactPermissionGranted)
+ .execute();
+ }
}
@Override
@@ -281,12 +283,13 @@ public class ContactSelectionListFragment extends Fragment
@Override
public Loader onCreateLoader(int id, Bundle args) {
- boolean allowCreation = getActivity().getIntent().getBooleanExtra(ALLOW_CREATION, true);
- boolean addCreateContactLink = allowCreation && !isSelectVerfied();
- boolean addCreateGroupLinks = allowCreation && !isRelayingMessageContent(getActivity()) && !isMulti();
+ final boolean allowCreation = getActivity().getIntent().getBooleanExtra(ALLOW_CREATION, true);
+ final boolean addCreateContactLink = allowCreation && !isSelectVerfied();
+ final boolean addCreateGroupLinks = allowCreation && !isRelayingMessageContent(getActivity()) && !isMulti();
+ final boolean addScanQRLink = allowCreation && !isMulti();
- int listflags = DcContext.DC_GCL_ADD_SELF;
- return new DcContactsLoader(getActivity(), listflags, cursorFilter, addCreateGroupLinks, addCreateContactLink, false);
+ final int listflags = DcContext.DC_GCL_ADD_SELF;
+ return new DcContactsLoader(getActivity(), listflags, cursorFilter, addCreateGroupLinks, addCreateContactLink, addScanQRLink, false);
}
@Override
@@ -347,7 +350,7 @@ public class ContactSelectionListFragment extends Fragment
int specialId = contact.getSpecialId();
String addr = contact.getNumber();
if (!isMulti() || !selectedContacts.contains(addr)) {
- if (specialId == DcContact.DC_CONTACT_ID_NEW_CONTACT) {
+ if (specialId == DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT) {
Intent intent = new Intent(getContext(), NewContactActivity.class);
if (dcContext.mayBeValidAddr(cursorFilter)) {
intent.putExtra(NewContactActivity.ADDR_EXTRA, cursorFilter);
diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java
similarity index 95%
rename from src/org/thoughtcrime/securesms/ConversationActivity.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationActivity.java
index 0761260e7..fdbeaf1ec 100644
--- a/src/org/thoughtcrime/securesms/ConversationActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java
@@ -16,6 +16,11 @@
*/
package org.thoughtcrime.securesms;
+import static org.thoughtcrime.securesms.TransportOption.Type;
+import static org.thoughtcrime.securesms.util.RelayUtil.getSharedText;
+import static org.thoughtcrime.securesms.util.RelayUtil.isForwarding;
+import static org.thoughtcrime.securesms.util.RelayUtil.isSharing;
+
import android.Manifest;
import android.annotation.SuppressLint;
import android.content.ActivityNotFoundException;
@@ -50,7 +55,6 @@ import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.ImageButton;
import android.widget.ImageView;
-import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
@@ -67,6 +71,8 @@ import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcMsg;
+import com.b44t.messenger.rpc.Rpc;
+import com.b44t.messenger.rpc.RpcException;
import com.b44t.messenger.util.concurrent.ListenableFuture;
import com.b44t.messenger.util.concurrent.SettableFuture;
@@ -96,7 +102,6 @@ import org.thoughtcrime.securesms.mms.AttachmentManager.MediaType;
import org.thoughtcrime.securesms.mms.AudioSlide;
import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.mms.GlideRequests;
-import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.mms.QuoteModel;
import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.permissions.Permissions;
@@ -118,20 +123,10 @@ import org.thoughtcrime.securesms.video.recode.VideoRecoder;
import org.thoughtcrime.securesms.videochat.VideochatUtil;
import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
import java.util.concurrent.ExecutionException;
-import static org.thoughtcrime.securesms.TransportOption.Type;
-import static org.thoughtcrime.securesms.util.RelayUtil.getSharedText;
-import static org.thoughtcrime.securesms.util.RelayUtil.isForwarding;
-import static org.thoughtcrime.securesms.util.RelayUtil.isSharing;
-
/**
* Activity for displaying a message thread, as well as
* composing/sending a new message into that thread.
@@ -189,6 +184,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private ApplicationContext context;
private Recipient recipient;
private DcContext dcContext;
+ private Rpc rpc;
private DcChat dcChat = new DcChat(0, 0);
private int chatId;
private final boolean isSecureText = true;
@@ -200,6 +196,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
protected void onCreate(Bundle state, boolean ready) {
this.context = ApplicationContext.getInstance(getApplicationContext());
this.dcContext = DcHelper.getContext(context);
+ this.rpc = DcHelper.getRpc(context);
supportRequestWindowFeature(WindowCompat.FEATURE_ACTION_BAR_OVERLAY);
setContentView(R.layout.conversation_activity);
@@ -243,8 +240,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (!isMultiUser()) {
eventCenter.addObserver(DcContext.DC_EVENT_INCOMING_MSG, this);
eventCenter.addObserver(DcContext.DC_EVENT_MSG_READ, this);
- // handle DC_EVENT_MSG_DELIVERED to hide the seen-recently indicator if needed:
- eventCenter.addObserver(DcContext.DC_EVENT_MSG_DELIVERED, this);
}
handleRelaying();
@@ -525,7 +520,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
case R.id.menu_clear_chat: fragment.handleClearChat(); return true;
case R.id.menu_delete_chat: handleDeleteChat(); return true;
case R.id.menu_mute_notifications: handleMuteNotifications(); return true;
- case R.id.menu_show_map: handleShowMap(); return true;
+ case R.id.menu_show_map: WebxdcActivity.openMaps(this, chatId); return true;
case R.id.menu_search_up: handleMenuSearchNext(false); return true;
case R.id.menu_search_down: handleMenuSearchNext(true); return true;
case android.R.id.home: handleReturnToConversationList(); return true;
@@ -577,9 +572,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
new VideochatUtil().invite(this, chatId);
}
- private void handleShowMap() {
- }
-
private void handleReturnToConversationList() {
handleReturnToConversationList(null);
}
@@ -742,7 +734,9 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
}
DcMsg quote = draft.getQuotedMsg();
- if (quote != null) {
+ if (quote == null) {
+ inputPanel.clearQuoteWithoutAnimation();
+ } else {
handleReplyMessage(quote);
}
@@ -911,13 +905,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
recipient = new Recipient(this, dcChat);
glideRequests = GlideApp.with(this);
-
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
- LinearLayout conversationContainer = ViewUtil.findById(this, R.id.conversation_container);
- conversationContainer.setClipChildren(true);
- conversationContainer.setClipToPadding(true);
- }
-
setComposePanelVisibility();
initializeContactRequest();
}
@@ -979,9 +966,18 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
}
private void addAttachmentContactInfo(Intent data) {
- String name = data.getStringExtra(AttachContactActivity.NAME_EXTRA);
- String mail = data.getStringExtra(AttachContactActivity.ADDR_EXTRA);
- composeText.append(name + "\n" + mail);
+ int contactId = data.getIntExtra(AttachContactActivity.CONTACT_ID_EXTRA, 0);
+ if (contactId == 0) {
+ return;
+ }
+
+ try {
+ byte[] vcard = rpc.makeVcard(dcContext.getAccountId(), contactId).getBytes();
+ String mimeType = "application/octet-stream";
+ setMedia(PersistentBlobProvider.getInstance().create(this, vcard, mimeType, "vcard.vcf"), MediaType.DOCUMENT);
+ } catch (RpcException e) {
+ Log.e(TAG, "makeVcard() failed", e);
+ }
}
private boolean isMultiUser() {
@@ -992,39 +988,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
return dcChat.getVisibility() == DcChat.DC_CHAT_VISIBILITY_ARCHIVED;
}
- public static String getRealPathFromAttachment(Context context, Attachment attachment) {
- try {
- // get file in the blobdir as `/[-].`
- String filename = attachment.getFileName();
- String ext = "";
- if(filename==null) {
- filename = new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date());
- ext = "." + MediaUtil.getExtensionFromMimeType(attachment.getContentType());
- }
- else {
- int i = filename.lastIndexOf(".");
- if(i>=0) {
- ext = filename.substring(i);
- filename = filename.substring(0, i);
- }
- }
- String path = DcHelper.getBlobdirFile(DcHelper.getContext(context), filename, ext);
-
- // copy content to this file
- if(path!=null) {
- InputStream inputStream = PartAuthority.getAttachmentStream(context, attachment.getDataUri());
- OutputStream outputStream = new FileOutputStream(path);
- Util.copy(inputStream, outputStream);
- }
-
- return path;
- }
- catch(Exception e) {
- e.printStackTrace();
- return null;
- }
- }
-
//////// send message or save draft
protected static final int ACTION_SEND_OUT = 1;
@@ -1077,7 +1040,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
} else {
msg = new DcMsg(dcContext, DcMsg.DC_MSG_FILE);
}
- String path = getRealPathFromAttachment(this, attachment);
+ String path = attachment.getRealPath(this);
msg.setFile(path, null);
}
}
@@ -1193,6 +1156,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
@Override
public void onRecorderStarted() {
+ fragment.hideAddReactionView();
Vibrator vibrator = ServiceUtil.getVibrator(this);
vibrator.vibrate(20);
@@ -1299,7 +1263,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private void sendSticker(@NonNull Uri uri, String contentType) {
Attachment attachment = new UriAttachment(uri, null, contentType,
AttachmentDatabase.TRANSFER_PROGRESS_STARTED, 0, 0, 0, null, null, false);
- String path = getRealPathFromAttachment(this, attachment);
+ String path = attachment.getRealPath(this);
Optional quote = inputPanel.getQuote();
inputPanel.clearQuote();
@@ -1368,6 +1332,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private class AttachButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
+ fragment.hideAddReactionView();
handleAddAttachment();
}
}
@@ -1461,8 +1426,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
setComposePanelVisibility();
initializeContactRequest();
} else if ((eventId == DcContext.DC_EVENT_INCOMING_MSG
- || eventId == DcContext.DC_EVENT_MSG_READ
- || eventId == DcContext.DC_EVENT_MSG_DELIVERED)
+ || eventId == DcContext.DC_EVENT_MSG_READ)
&& event.getData1Int() == chatId) {
DcContact contact = recipient.getDcContact();
titleView.setSeenRecently(contact!=null? dcContext.getContact(contact.getId()).wasSeenRecently() : false);
diff --git a/src/org/thoughtcrime/securesms/ConversationAdapter.java b/src/main/java/org/thoughtcrime/securesms/ConversationAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ConversationAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationAdapter.java
diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/main/java/org/thoughtcrime/securesms/ConversationFragment.java
similarity index 99%
rename from src/org/thoughtcrime/securesms/ConversationFragment.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationFragment.java
index aa32e02c8..cb3793564 100644
--- a/src/org/thoughtcrime/securesms/ConversationFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationFragment.java
@@ -43,7 +43,6 @@ import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;
@@ -138,7 +137,6 @@ public class ConversationFragment extends MessageSelectorFragment
}, 60 * 1000, 60 * 1000);
}
- @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle bundle) {
final View view = inflater.inflate(R.layout.conversation_fragment, container, false);
@@ -271,6 +269,10 @@ public class ConversationFragment extends MessageSelectorFragment
}
}
+ public void hideAddReactionView() {
+ addReactionView.hide();
+ }
+
private void initializeResources() {
this.chatId = this.getActivity().getIntent().getIntExtra(ConversationActivity.CHAT_ID_EXTRA, -1);
this.recipient = Recipient.from(getActivity(), Address.fromChat((int)this.chatId));
@@ -779,7 +781,7 @@ public class ConversationFragment extends MessageSelectorFragment
if (getListAdapter().getSelectedItems().size() == 0) {
actionMode.finish();
} else {
- addReactionView.hide();
+ hideAddReactionView();
Menu menu = actionMode.getMenu();
setCorrectMenuVisibility(menu);
ConversationAdaptiveActionsToolbar.adjustMenuActions(menu, 10, requireActivity().getWindow().getDecorView().getMeasuredWidth());
@@ -921,12 +923,12 @@ public class ConversationFragment extends MessageSelectorFragment
}
actionMode = null;
- addReactionView.hide();
+ hideAddReactionView();
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- addReactionView.hide();
+ hideAddReactionView();
switch(item.getItemId()) {
case R.id.menu_context_copy:
handleCopyMessage(getListAdapter().getSelectedItems());
diff --git a/src/org/thoughtcrime/securesms/ConversationItem.java b/src/main/java/org/thoughtcrime/securesms/ConversationItem.java
similarity index 88%
rename from src/org/thoughtcrime/securesms/ConversationItem.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationItem.java
index 243a3efe1..34d6ab91e 100644
--- a/src/org/thoughtcrime/securesms/ConversationItem.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationItem.java
@@ -32,16 +32,19 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
+import android.widget.Toast;
import androidx.annotation.DimenRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcMsg;
import com.b44t.messenger.rpc.Reactions;
import com.b44t.messenger.rpc.RpcException;
+import com.b44t.messenger.rpc.VcardContact;
import org.thoughtcrime.securesms.audio.AudioSlidePlayer;
import org.thoughtcrime.securesms.components.AudioView;
@@ -51,6 +54,7 @@ import org.thoughtcrime.securesms.components.ConversationItemFooter;
import org.thoughtcrime.securesms.components.ConversationItemThumbnail;
import org.thoughtcrime.securesms.components.DocumentView;
import org.thoughtcrime.securesms.components.QuoteView;
+import org.thoughtcrime.securesms.components.VcardView;
import org.thoughtcrime.securesms.components.WebxdcView;
import org.thoughtcrime.securesms.components.emoji.EmojiTextView;
import org.thoughtcrime.securesms.connect.DcHelper;
@@ -62,6 +66,7 @@ import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.SlideClickListener;
import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.mms.StickerSlide;
+import org.thoughtcrime.securesms.mms.VcardSlide;
import org.thoughtcrime.securesms.reactions.ReactionsConversationView;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.LongClickMovementMethod;
@@ -71,6 +76,7 @@ import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.views.Stub;
+import java.util.List;
import java.util.Locale;
import java.util.Set;
@@ -113,6 +119,7 @@ public class ConversationItem extends BaseConversationItem
private @NonNull Stub documentViewStub;
private @NonNull Stub webxdcViewStub;
private Stub stickerStub;
+ private Stub vcardViewStub;
private @Nullable EventListener eventListener;
private int measureCalls;
@@ -146,6 +153,7 @@ public class ConversationItem extends BaseConversationItem
this.documentViewStub = new Stub<>(findViewById(R.id.document_view_stub));
this.webxdcViewStub = new Stub<>(findViewById(R.id.webxdc_view_stub));
this.stickerStub = new Stub<>(findViewById(R.id.sticker_view_stub));
+ this.vcardViewStub = new Stub<>(findViewById(R.id.vcard_view_stub));
this.groupSenderHolder = findViewById(R.id.group_sender_holder);
this.quoteView = findViewById(R.id.quote_view);
this.container = findViewById(R.id.container);
@@ -172,9 +180,9 @@ public class ConversationItem extends BaseConversationItem
bind(messageRecord, dcChat, batchSelected, pulseHighlight, recipients);
this.locale = locale;
this.glideRequests = glideRequests;
- this.showSender = dcChat.isMultiUser() || messageRecord.getOverrideSenderName() != null;
+ this.showSender = (dcChat.isMultiUser() && !messageRecord.isOutgoing()) || messageRecord.getOverrideSenderName() != null;
- if (showSender && !messageRecord.isOutgoing()) {
+ if (showSender) {
this.dcContact = dcContext.getContact(messageRecord.getFromId());
}
@@ -301,6 +309,11 @@ public class ConversationItem extends BaseConversationItem
webxdcViewStub.get().setFocusable(!shouldInterceptClicks(messageRecord) && batchSelected.isEmpty());
webxdcViewStub.get().setClickable(batchSelected.isEmpty());
}
+
+ if (vcardViewStub.resolved()) {
+ vcardViewStub.get().setFocusable(!shouldInterceptClicks(messageRecord) && batchSelected.isEmpty());
+ vcardViewStub.get().setClickable(batchSelected.isEmpty());
+ }
}
private void setContentDescription() {
@@ -315,6 +328,8 @@ public class ConversationItem extends BaseConversationItem
desc += documentViewStub.get().getDescription() + "\n";
} else if (webxdcViewStub.resolved() && webxdcViewStub.get().getVisibility() == View.VISIBLE) {
desc += webxdcViewStub.get().getDescription() + "\n";
+ } else if (vcardViewStub.resolved() && vcardViewStub.get().getVisibility() == View.VISIBLE) {
+ desc += vcardViewStub.get().getDescription() + "\n";
} else if (mediaThumbnailStub.resolved() && mediaThumbnailStub.get().getVisibility() == View.VISIBLE) {
desc += mediaThumbnailStub.get().getDescription() + "\n";
} else if (stickerStub.resolved() && stickerStub.get().getVisibility() == View.VISIBLE) {
@@ -362,6 +377,10 @@ public class ConversationItem extends BaseConversationItem
return dcMsg.getType()==DcMsg.DC_MSG_WEBXDC;
}
+ private boolean hasVcard(DcMsg dcMsg) {
+ return dcMsg.getType()==DcMsg.DC_MSG_VCARD;
+ }
+
private boolean hasDocument(DcMsg dcMsg) {
return dcMsg.getType()==DcMsg.DC_MSG_FILE && !dcMsg.isSetupMessage();
}
@@ -463,6 +482,7 @@ public class ConversationItem extends BaseConversationItem
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (webxdcViewStub.resolved()) webxdcViewStub.get().setVisibility(View.GONE);
if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE);
+ if (vcardViewStub.resolved()) vcardViewStub.get().setVisibility(View.GONE);
//noinspection ConstantConditions
int duration = messageRecord.getDuration();
@@ -489,6 +509,7 @@ public class ConversationItem extends BaseConversationItem
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
if (webxdcViewStub.resolved()) webxdcViewStub.get().setVisibility(View.GONE);
if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE);
+ if (vcardViewStub.resolved()) vcardViewStub.get().setVisibility(View.GONE);
//noinspection ConstantConditions
documentViewStub.get().setDocument(new DocumentSlide(context, messageRecord));
@@ -508,6 +529,7 @@ public class ConversationItem extends BaseConversationItem
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE);
+ if (vcardViewStub.resolved()) vcardViewStub.get().setVisibility(View.GONE);
webxdcViewStub.get().setWebxdc(messageRecord, context.getString(R.string.webxdc_app));
webxdcViewStub.get().setWebxdcClickListener(new ThumbnailClickListener());
@@ -520,12 +542,33 @@ public class ConversationItem extends BaseConversationItem
ViewUtil.updateLayoutParams(groupSenderHolder, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
footer.setVisibility(VISIBLE);
}
+ else if (hasVcard(messageRecord)) {
+ vcardViewStub.get().setVisibility(View.VISIBLE);
+ if (mediaThumbnailStub.resolved()) mediaThumbnailStub.get().setVisibility(View.GONE);
+ if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
+ if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
+ if (webxdcViewStub.resolved()) webxdcViewStub.get().setVisibility(View.GONE);
+ if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE);
+
+ vcardViewStub.get().setVcard(glideRequests, new VcardSlide(context, messageRecord), rpc);
+ vcardViewStub.get().setVcardClickListener(new ThumbnailClickListener());
+ vcardViewStub.get().setOnLongClickListener(passthroughClickListener);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+ vcardViewStub.get().setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS);
+ }
+
+ ViewUtil.updateLayoutParams(bodyText, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ ViewUtil.updateLayoutParams(groupSenderHolder, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ footer.setVisibility(VISIBLE);
+ }
else if (hasThumbnail(messageRecord)) {
mediaThumbnailStub.get().setVisibility(View.VISIBLE);
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (webxdcViewStub.resolved()) webxdcViewStub.get().setVisibility(View.GONE);
if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE);
+ if (vcardViewStub.resolved()) vcardViewStub.get().setVisibility(View.GONE);
Slide slide = MediaUtil.getSlideForMsg(context, messageRecord);
@@ -566,6 +609,7 @@ public class ConversationItem extends BaseConversationItem
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (webxdcViewStub.resolved()) webxdcViewStub.get().setVisibility(View.GONE);
if (mediaThumbnailStub.resolved()) mediaThumbnailStub.get().setVisibility(View.GONE);
+ if (vcardViewStub.resolved()) vcardViewStub.get().setVisibility(View.GONE);
bodyBubble.setBackgroundColor(Color.TRANSPARENT);
@@ -587,6 +631,7 @@ public class ConversationItem extends BaseConversationItem
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (webxdcViewStub.resolved()) webxdcViewStub.get().setVisibility(View.GONE);
+ if (vcardViewStub.resolved()) vcardViewStub.get().setVisibility(View.GONE);
ViewUtil.updateLayoutParams(bodyText, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ViewUtil.updateLayoutParams(groupSenderHolder, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
@@ -609,7 +654,7 @@ public class ConversationItem extends BaseConversationItem
bottomRight = 0;
}
- if ((!current.isOutgoing() && showSender)
+ if (showSender
|| current.isForwarded()
|| hasQuote(current)) {
topLeft = 0;
@@ -631,7 +676,7 @@ public class ConversationItem extends BaseConversationItem
private void setContactPhoto() {
if (contactPhoto == null) return;
- if (messageRecord.isOutgoing() || !showSender || dcContact ==null) {
+ if (!showSender || dcContact ==null) {
contactPhoto.setVisibility(View.GONE);
} else {
contactPhoto.setAvatar(glideRequests, new Recipient(context, dcContact), true);
@@ -757,14 +802,14 @@ public class ConversationItem extends BaseConversationItem
}
if (messageRecord.isForwarded()) {
- if (showSender && !messageRecord.isOutgoing() && dcContact !=null) {
+ if (showSender && dcContact !=null) {
this.groupSender.setText(context.getString(R.string.forwarded_by, messageRecord.getSenderName(dcContact, false)));
} else {
this.groupSender.setText(context.getString(R.string.forwarded_message));
}
this.groupSender.setTextColor(context.getResources().getColor(R.color.unknown_sender));
}
- else if (showSender && !messageRecord.isOutgoing() && dcContact !=null) {
+ else if (showSender && dcContact !=null) {
this.groupSender.setText(messageRecord.getSenderName(dcContact, true));
this.groupSender.setTextColor(Util.rgbToArgbColor(dcContact.getColor()));
}
@@ -772,12 +817,12 @@ public class ConversationItem extends BaseConversationItem
private void setAuthor(@NonNull DcMsg current, boolean showSender) {
int groupSenderHolderVisibility = GONE;
- if (showSender && !current.isOutgoing()) {
+ if (showSender) {
if (contactPhotoHolder != null) {
contactPhotoHolder.setVisibility(VISIBLE);
+ contactPhoto.setVisibility(VISIBLE);
}
groupSenderHolderVisibility = VISIBLE;
- contactPhoto.setVisibility(VISIBLE);
} else {
if (contactPhotoHolder != null) {
contactPhotoHolder.setVisibility(GONE);
@@ -839,6 +884,7 @@ public class ConversationItem extends BaseConversationItem
else if (audioViewStub.resolved()) audioViewStub.get().togglePlay();
else if (documentViewStub.resolved()) documentViewStub.get().performClick();
else if (webxdcViewStub.resolved()) webxdcViewStub.get().performClick();
+ else if (vcardViewStub.resolved()) vcardViewStub.get().performClick();
}
/// Event handlers
@@ -847,8 +893,37 @@ public class ConversationItem extends BaseConversationItem
public void onClick(final View v, final Slide slide) {
if (shouldInterceptClicks(messageRecord) || !batchSelected.isEmpty()) {
performClick();
- } else if (messageRecord.getType() == DcMsg.DC_MSG_WEBXDC) {
+ } else if (slide.isWebxdcDocument()) {
WebxdcActivity.openWebxdcActivity(context, messageRecord);
+ } else if (slide.isVcard()) {
+ try {
+ String path = slide.asAttachment().getRealPath(context);
+ VcardContact vcardContact = rpc.parseVcard(path).get(0);
+ new AlertDialog.Builder(context)
+ .setMessage(context.getString(R.string.ask_start_chat_with, vcardContact.getDisplayName()))
+ .setPositiveButton(android.R.string.ok, (dialog, which) -> {
+ try {
+ List contactIds = rpc.importVcard(dcContext.getAccountId(), path);
+ if (contactIds.size() > 0) {
+ int chatId = dcContext.createChatByContactId(contactIds.get(0));
+ if (chatId != 0) {
+ Intent intent = new Intent(context, ConversationActivity.class);
+ intent.putExtra(ConversationActivity.CHAT_ID_EXTRA, chatId);
+ context.startActivity(intent);
+ return;
+ }
+ }
+ } catch (RpcException e) {
+ Log.e(TAG, "failed to import vCard", e);
+ }
+ Toast.makeText(context, context.getResources().getString(R.string.error), Toast.LENGTH_SHORT).show();
+ })
+ .setNegativeButton(R.string.cancel, null)
+ .show();
+ } catch (RpcException e) {
+ Log.e(TAG, "failed to parse vCard", e);
+ Toast.makeText(context, context.getResources().getString(R.string.error), Toast.LENGTH_SHORT).show();
+ }
} else if (MediaPreviewActivity.isTypeSupported(slide) && slide.getUri() != null) {
Intent intent = new Intent(context, MediaPreviewActivity.class);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
diff --git a/src/org/thoughtcrime/securesms/ConversationItemSwipeCallback.java b/src/main/java/org/thoughtcrime/securesms/ConversationItemSwipeCallback.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ConversationItemSwipeCallback.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationItemSwipeCallback.java
diff --git a/src/org/thoughtcrime/securesms/ConversationItemTouchListener.java b/src/main/java/org/thoughtcrime/securesms/ConversationItemTouchListener.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ConversationItemTouchListener.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationItemTouchListener.java
diff --git a/src/org/thoughtcrime/securesms/ConversationListActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java
similarity index 84%
rename from src/org/thoughtcrime/securesms/ConversationListActivity.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java
index 8e8321654..4c9d48d3b 100644
--- a/src/org/thoughtcrime/securesms/ConversationListActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationListActivity.java
@@ -27,6 +27,7 @@ import static org.thoughtcrime.securesms.util.RelayUtil.isRelayingMessageContent
import static org.thoughtcrime.securesms.util.RelayUtil.resetRelayingMessageContent;
import android.content.Intent;
+import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
@@ -45,6 +46,8 @@ import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.widget.TooltipCompat;
+import com.amulyakhare.textdrawable.TextDrawable;
+import com.b44t.messenger.DcAccounts;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcMsg;
@@ -67,9 +70,7 @@ import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.SendRelayedMessageUtil;
import org.thoughtcrime.securesms.util.Util;
-
-import java.io.FileOutputStream;
-import java.io.InputStream;
+import org.thoughtcrime.securesms.util.ViewUtil;
public class ConversationListActivity extends PassphraseRequiredActionBarActivity
implements ConversationListFragment.ConversationSelectedListener
@@ -79,14 +80,17 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
private static final String NDK_ARCH_WARNED = "ndk_arch_warned";
public static final String CLEAR_NOTIFICATIONS = "clear_notifications";
public static final String ACCOUNT_ID_EXTRA = "account_id";
+ public static final String FROM_WELCOME = "from_welcome";
private ConversationListFragment conversationListFragment;
public TextView title;
private AvatarImageView selfAvatar;
+ private ImageView unreadIndicator;
private SearchFragment searchFragment;
private SearchToolbar searchToolbar;
private ImageView searchAction;
private ViewGroup fragmentContainer;
+ private ViewGroup selfAvatarContainer;
@Override
protected void onPreCreate() {
@@ -100,17 +104,28 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
// it is not needed to keep all past update messages, however, when deleted, also the strings should be deleted.
try {
DcContext dcContext = DcHelper.getContext(this);
- final String deviceMsgId = "update_1_42ai_android";
- if (!dcContext.wasDeviceMsgEverAdded(deviceMsgId)) {
- DcMsg msg = new DcMsg(dcContext, DcMsg.DC_MSG_IMAGE);
+ final String deviceMsgLabel = "update_1_46_0l_android";
+ if (!dcContext.wasDeviceMsgEverAdded(deviceMsgLabel)) {
+ DcMsg msg = null;
+ if (!getIntent().getBooleanExtra(FROM_WELCOME, false)) {
+ msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
- InputStream inputStream = getResources().getAssets().open("device-messages/green-checkmark.jpg");
- String outputFile = DcHelper.getBlobdirFile(dcContext, "green-checkmark", ".jpg");
- Util.copy(inputStream, new FileOutputStream(outputFile));
- msg.setFile(outputFile, "image/jpeg");
+ // InputStream inputStream = getResources().getAssets().open("device-messages/green-checkmark.jpg");
+ // String outputFile = DcHelper.getBlobdirFile(dcContext, "green-checkmark", ".jpg");
+ // Util.copy(inputStream, new FileOutputStream(outputFile));
+ // msg.setFile(outputFile, "image/jpeg");
- msg.setText(getString(R.string.update_1_42_common) + "\n\n" + getString(R.string.update_1_42_android, "https://get.delta.chat/#changelogs"));
- dcContext.addDeviceMsg(deviceMsgId, msg);
+ msg.setText(getString(R.string.update_1_46_android, "https://get.delta.chat/#changelogs"));
+ }
+ dcContext.addDeviceMsg(deviceMsgLabel, msg);
+
+ if (Prefs.getStringPreference(this, Prefs.LAST_DEVICE_MSG_LABEL, "").equals(deviceMsgLabel)) {
+ int deviceChatId = dcContext.getChatIdByContactId(DcContact.DC_CONTACT_ID_DEVICE);
+ if (deviceChatId != 0) {
+ dcContext.marknoticedChat(deviceChatId);
+ }
+ }
+ Prefs.setStringPreference(this, Prefs.LAST_DEVICE_MSG_LABEL, deviceMsgLabel);
}
} catch(Exception e) {
e.printStackTrace();
@@ -122,6 +137,8 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
selfAvatar = findViewById(R.id.self_avatar);
+ selfAvatarContainer = findViewById(R.id.self_avatar_container);
+ unreadIndicator = findViewById(R.id.unread_indicator);
title = findViewById(R.id.toolbar_title);
searchToolbar = findViewById(R.id.search_toolbar);
searchAction = findViewById(R.id.search_action);
@@ -218,10 +235,11 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
DcHelper.getNotificationCenter(this).removeAllNotifiations(accountId);
}
if (accountId != dcContext.getAccountId()) {
- AccountManager.getInstance().switchAccountAndStartActivity(this, accountId, null);
+ AccountManager.getInstance().switchAccountAndStartActivity(this, accountId);
}
refreshAvatar();
+ refreshUnreadIndicator();
refreshTitle();
handleOpenpgp4fpr();
if (isDirectSharing(this)) {
@@ -250,9 +268,9 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
public void refreshAvatar() {
if (isRelayingMessageContent(this)) {
- selfAvatar.setVisibility(View.GONE);
+ selfAvatarContainer.setVisibility(View.GONE);
} else {
- selfAvatar.setVisibility(View.VISIBLE);
+ selfAvatarContainer.setVisibility(View.VISIBLE);
DcContext dcContext = DcHelper.getContext(this);
DcContact self = dcContext.getContact(DcContact.DC_CONTACT_ID_SELF);
String name = dcContext.getConfig("displayname");
@@ -263,6 +281,31 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
}
}
+ public void refreshUnreadIndicator() {
+ int unreadCount = 0;
+ DcAccounts dcAccounts = DcHelper.getAccounts(this);
+ int skipId = dcAccounts.getSelectedAccount().getAccountId();
+ for (int accountId : dcAccounts.getAll()) {
+ if (accountId != skipId) {
+ unreadCount += dcAccounts.getAccount(accountId).getFreshMsgs().length;
+ }
+ }
+
+ if(unreadCount == 0) {
+ unreadIndicator.setVisibility(View.GONE);
+ } else {
+ unreadIndicator.setImageDrawable(TextDrawable.builder()
+ .beginConfig()
+ .width(ViewUtil.dpToPx(this, 24))
+ .height(ViewUtil.dpToPx(this, 24))
+ .textColor(Color.WHITE)
+ .bold()
+ .endConfig()
+ .buildRound(String.valueOf(unreadCount), getResources().getColor(R.color.unread_count)));
+ unreadIndicator.setVisibility(View.VISIBLE);
+ }
+ }
+
@Override
public void onResume() {
super.onResume();
@@ -344,7 +387,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
new IntentIntegrator(this).setCaptureActivity(QrActivity.class).initiateScan();
return true;
case R.id.menu_global_map:
- handleShowMap();
+ WebxdcActivity.openMaps(this, 0);
return true;
case R.id.menu_switch_account:
AccountManager.getInstance().showSwitchAccountMenu(this);
@@ -364,11 +407,13 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
if (getIntent() != null &&
Intent.ACTION_VIEW.equals(getIntent().getAction())) {
Uri uri = getIntent().getData();
- if (uri != null && uri.getScheme().equalsIgnoreCase(OPENPGP4FPR)) {
- String uriString = uri.toString();
- uriString = uriString.replaceFirst(OPENPGP4FPR, OPENPGP4FPR.toUpperCase());
+ if (uri == null) {
+ return;
+ }
+
+ if (uri.getScheme().equalsIgnoreCase(OPENPGP4FPR) || Util.isInviteURL(uri)) {
QrCodeHandler qrCodeHandler = new QrCodeHandler(this);
- qrCodeHandler.handleQrData(uriString);
+ qrCodeHandler.handleQrData(uri.toString());
}
}
}
@@ -376,15 +421,11 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
private void handleResetRelaying() {
resetRelayingMessageContent(this);
refreshTitle();
- selfAvatar.setVisibility(View.VISIBLE);
+ selfAvatarContainer.setVisibility(View.VISIBLE);
conversationListFragment.onNewIntent();
invalidateOptionsMenu();
}
- private void handleShowMap() {
- }
-
-
@Override
public void onCreateConversation(int chatId) {
openConversation(chatId, -1);
diff --git a/src/org/thoughtcrime/securesms/ConversationListAdapter.java b/src/main/java/org/thoughtcrime/securesms/ConversationListAdapter.java
similarity index 83%
rename from src/org/thoughtcrime/securesms/ConversationListAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationListAdapter.java
index 4b502a301..176cdb0b9 100644
--- a/src/org/thoughtcrime/securesms/ConversationListAdapter.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationListAdapter.java
@@ -35,17 +35,14 @@ import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.util.ViewUtil;
import java.lang.ref.WeakReference;
-import java.util.Collections;
-import java.util.HashSet;
import java.util.Locale;
-import java.util.Set;
/**
* A CursorAdapter for building a list of conversation threads.
*
* @author Moxie Marlinspike
*/
-class ConversationListAdapter extends RecyclerView.Adapter {
+class ConversationListAdapter extends BaseConversationListAdapter {
private static final int MESSAGE_TYPE_SWITCH_ARCHIVE = 1;
private static final int MESSAGE_TYPE_THREAD = 2;
@@ -59,9 +56,6 @@ class ConversationListAdapter extends RecyclerView.Adapter {
private final @NonNull LayoutInflater inflater;
private final @Nullable ItemClickListener clickListener;
- private final Set batchSet = Collections.synchronizedSet(new HashSet());
- private boolean batchMode = false;
-
protected static class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(final @NonNull V itemView)
{
@@ -99,8 +93,9 @@ class ConversationListAdapter extends RecyclerView.Adapter {
setHasStableIds(true);
}
+ @NonNull
@Override
- public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == MESSAGE_TYPE_SWITCH_ARCHIVE) {
final ConversationListItem item = (ConversationListItem)inflater.inflate(R.layout.conversation_list_item_view, parent, false);
item.getLayoutParams().height = ViewUtil.dpToPx(54);
@@ -131,16 +126,15 @@ class ConversationListAdapter extends RecyclerView.Adapter {
}
@Override
- public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int i) {
+ public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
Context context = this.context.get();
if (context == null) {
return;
}
- ViewHolder holder = (ViewHolder)viewHolder;
DcChat chat = dcContext.getChat(dcChatlist.getChatId(i));
DcLot summary = dcChatlist.getSummary(i, chat);
- holder.getItem().bind(DcHelper.getThreadRecord(context, summary, chat), dcChatlist.getMsgId(i), summary, glideRequests, locale, batchSet, batchMode);
+ viewHolder.getItem().bind(DcHelper.getThreadRecord(context, summary, chat), dcChatlist.getMsgId(i), summary, glideRequests, locale, batchSet, batchMode);
}
@Override
@@ -156,36 +150,15 @@ class ConversationListAdapter extends RecyclerView.Adapter {
}
}
- void toggleThreadInBatchSet(long threadId) {
- if (batchSet.contains(threadId)) {
- batchSet.remove(threadId);
- } else if (threadId != -1) {
- batchSet.add(threadId);
- }
- }
-
- Set getBatchSelections() {
- return batchSet;
- }
-
- void initializeBatchMode(boolean toggle) {
- this.batchMode = toggle;
- unselectAllThreads();
- }
-
- private void unselectAllThreads() {
- this.batchSet.clear();
- this.notifyDataSetChanged();
- }
-
- void selectAllThreads() {
+ @Override
+ public void selectAllThreads() {
for (int i = 0; i < dcChatlist.getCnt(); i++) {
long threadId = dcChatlist.getChatId(i);
if (threadId > DcChat.DC_CHAT_ID_LAST_SPECIAL) {
batchSet.add(threadId);
}
}
- this.notifyDataSetChanged();
+ notifyDataSetChanged();
}
interface ItemClickListener {
diff --git a/src/org/thoughtcrime/securesms/ConversationListArchiveActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationListArchiveActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ConversationListArchiveActivity.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationListArchiveActivity.java
diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationListFragment.java b/src/main/java/org/thoughtcrime/securesms/ConversationListFragment.java
new file mode 100644
index 000000000..566735f6b
--- /dev/null
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationListFragment.java
@@ -0,0 +1,356 @@
+/*
+ * Copyright (C) 2015 Open Whisper Systems
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package org.thoughtcrime.securesms;
+
+import android.Manifest;
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Context;
+import android.os.AsyncTask;
+import android.os.Build;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.b44t.messenger.DcChatlist;
+import com.b44t.messenger.DcContext;
+import com.b44t.messenger.DcEvent;
+import com.b44t.messenger.DcMsg;
+
+import org.thoughtcrime.securesms.ConversationListAdapter.ItemClickListener;
+import org.thoughtcrime.securesms.components.recyclerview.DeleteItemAnimator;
+import org.thoughtcrime.securesms.components.reminder.DozeReminder;
+import org.thoughtcrime.securesms.connect.DcEventCenter;
+import org.thoughtcrime.securesms.connect.DcHelper;
+import org.thoughtcrime.securesms.mms.GlideApp;
+import org.thoughtcrime.securesms.notifications.FcmReceiveService;
+import org.thoughtcrime.securesms.permissions.Permissions;
+import org.thoughtcrime.securesms.util.Prefs;
+import org.thoughtcrime.securesms.util.RelayUtil;
+import org.thoughtcrime.securesms.util.Util;
+import org.thoughtcrime.securesms.util.ViewUtil;
+
+import java.util.Locale;
+import java.util.Timer;
+import java.util.TimerTask;
+
+
+public class ConversationListFragment extends BaseConversationListFragment
+ implements ItemClickListener, DcEventCenter.DcEventDelegate {
+ public static final String ARCHIVE = "archive";
+ public static final String RELOAD_LIST = "reload_list";
+
+ private static final String TAG = ConversationListFragment.class.getSimpleName();
+
+ private RecyclerView list;
+ private View emptyState;
+ private TextView emptySearch;
+ private Locale locale;
+ private final String queryFilter = "";
+ private boolean archive;
+ private Timer reloadTimer;
+ private boolean chatlistJustLoaded;
+ private boolean reloadTimerInstantly;
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ locale = (Locale) getArguments().getSerializable(PassphraseRequiredActionBarActivity.LOCALE_EXTRA);
+ archive = getArguments().getBoolean(ARCHIVE, false);
+
+ DcEventCenter eventCenter = DcHelper.getEventCenter(requireActivity());
+ eventCenter.addMultiAccountObserver(DcContext.DC_EVENT_INCOMING_MSG, this);
+ eventCenter.addMultiAccountObserver(DcContext.DC_EVENT_MSGS_NOTICED, this);
+ eventCenter.addObserver(DcContext.DC_EVENT_CHAT_MODIFIED, this);
+ eventCenter.addObserver(DcContext.DC_EVENT_CONTACTS_CHANGED, this);
+ eventCenter.addObserver(DcContext.DC_EVENT_MSGS_CHANGED, this);
+ eventCenter.addObserver(DcContext.DC_EVENT_MSG_DELIVERED, this);
+ eventCenter.addObserver(DcContext.DC_EVENT_MSG_FAILED, this);
+ eventCenter.addObserver(DcContext.DC_EVENT_MSG_READ, this);
+ eventCenter.addObserver(DcContext.DC_EVENT_REACTIONS_CHANGED, this);
+ eventCenter.addObserver(DcContext.DC_EVENT_CONNECTIVITY_CHANGED, this);
+ eventCenter.addObserver(DcContext.DC_EVENT_SELFAVATAR_CHANGED, this);
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ DcHelper.getEventCenter(requireActivity()).removeObservers(this);
+ }
+
+ @SuppressLint("RestrictedApi")
+ @Override
+ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle bundle) {
+ final View view = inflater.inflate(R.layout.conversation_list_fragment, container, false);
+
+ list = ViewUtil.findById(view, R.id.list);
+ fab = ViewUtil.findById(view, R.id.fab);
+ emptyState = ViewUtil.findById(view, R.id.empty_state);
+ emptySearch = ViewUtil.findById(view, R.id.empty_search);
+
+ if (archive) {
+ fab.setVisibility(View.GONE);
+ TextView emptyTitle = ViewUtil.findById(view, R.id.empty_title);
+ emptyTitle.setText(R.string.archive_empty_hint);
+ } else {
+ fab.setVisibility(View.VISIBLE);
+ }
+
+ list.setHasFixedSize(true);
+ list.setLayoutManager(new LinearLayoutManager(getActivity()));
+ list.setItemAnimator(new DeleteItemAnimator());
+
+ return view;
+ }
+
+ @Override
+ public void onActivityCreated(Bundle bundle) {
+ super.onActivityCreated(bundle);
+
+ setHasOptionsMenu(true);
+ initializeFabClickListener(false);
+ list.setAdapter(new ConversationListAdapter(requireActivity(), GlideApp.with(this), locale, this));
+ loadChatlistAsync();
+ chatlistJustLoaded = true;
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ updateReminders();
+
+ if (requireActivity().getIntent().getIntExtra(RELOAD_LIST, 0) == 1
+ && !chatlistJustLoaded) {
+ Log.i(TAG, "🤠 resuming chatlist: loading chatlist");
+ loadChatlist();
+ reloadTimerInstantly = false;
+ }
+ chatlistJustLoaded = false;
+
+ Log.i(TAG, "🤠 resuming chatlist: starting update timer");
+ reloadTimer = new Timer();
+ reloadTimer.scheduleAtFixedRate(new TimerTask() {
+ @Override
+ public void run() {
+ Util.runOnMain(() -> {
+ Log.i(TAG, "🤠 update timer: refreshing chatlist");
+ list.getAdapter().notifyDataSetChanged();
+ });
+ }
+ }, reloadTimerInstantly? 0 : 60 * 1000, 60 * 1000);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+
+ Log.i(TAG, "🤠 pausing chatlist: cancel update timer");
+ reloadTimer.cancel();
+ reloadTimerInstantly = true;
+
+ fab.stopPulse();
+ }
+
+ public void onNewIntent() {
+ initializeFabClickListener(actionMode != null);
+ }
+
+ @Override
+ public BaseConversationListAdapter getListAdapter() {
+ return (BaseConversationListAdapter) list.getAdapter();
+ }
+
+ @SuppressLint({"StaticFieldLeak", "NewApi"})
+ private void updateReminders() {
+ // by the time onPostExecute() is asynchronously run, getActivity() might return null, so get the activity here:
+ Activity activity = requireActivity();
+ new AsyncTask() {
+ @Override
+ protected Void doInBackground(Context... params) {
+ final Context context = params[0];
+ try {
+ if (DozeReminder.isEligible(context)) {
+ DozeReminder.addDozeReminderDeviceMsg(context);
+ }
+ FcmReceiveService.waitForRegisterFinished();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ @Override
+ protected void onPostExecute(Void result) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
+ if (!Prefs.getBooleanPreference(activity, Prefs.ASKED_FOR_NOTIFICATION_PERMISSION, false)) {
+ Prefs.setBooleanPreference(activity, Prefs.ASKED_FOR_NOTIFICATION_PERMISSION, true);
+ Permissions.with(activity)
+ .request(Manifest.permission.POST_NOTIFICATIONS)
+ .ifNecessary()
+ .onAllGranted(() -> {
+ DozeReminder.maybeAskDirectly(activity);
+ })
+ .onAnyDenied(() -> {
+ final DcContext dcContext = DcHelper.getContext(activity);
+ DcMsg msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
+ msg.setText("\uD83D\uDC49 "+activity.getString(R.string.notifications_disabled)+" \uD83D\uDC48\n\n"
+ +activity.getString(R.string.perm_explain_access_to_notifications_denied));
+ dcContext.addDeviceMsg("android.notifications-disabled", msg);
+ })
+ .execute();
+ } else {
+ DozeReminder.maybeAskDirectly(activity);
+ }
+ } else {
+ DozeReminder.maybeAskDirectly(activity);
+ }
+ }
+ }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, activity);
+ }
+
+ private final Object loadChatlistLock = new Object();
+ private boolean inLoadChatlist;
+ private boolean needsAnotherLoad;
+ private void loadChatlistAsync() {
+ synchronized (loadChatlistLock) {
+ needsAnotherLoad = true;
+ if (inLoadChatlist) {
+ Log.i(TAG, "chatlist loading debounced");
+ return;
+ }
+ inLoadChatlist = true;
+ }
+
+ Util.runOnAnyBackgroundThread(() -> {
+ while(true) {
+ synchronized (loadChatlistLock) {
+ if (!needsAnotherLoad) {
+ inLoadChatlist = false;
+ return;
+ }
+ needsAnotherLoad = false;
+ }
+
+ Log.i(TAG, "executing debounced chatlist loading");
+ loadChatlist();
+ Util.sleep(100);
+ }
+ });
+ }
+
+ private void loadChatlist() {
+ int listflags = 0;
+ if (archive) {
+ listflags |= DcContext.DC_GCL_ARCHIVED_ONLY;
+ } else if (RelayUtil.isRelayingMessageContent(getActivity())) {
+ listflags |= DcContext.DC_GCL_FOR_FORWARDING;
+ } else {
+ listflags |= DcContext.DC_GCL_ADD_ALLDONE_HINT;
+ }
+
+ Context context = getContext();
+ if (context == null) {
+ // can't load chat list at this time, see: https://github.com/deltachat/deltachat-android/issues/2012
+ Log.w(TAG, "Ignoring call to loadChatlist()");
+ return;
+ }
+ DcChatlist chatlist = DcHelper.getContext(context).getChatlist(listflags, queryFilter.isEmpty() ? null : queryFilter, 0);
+
+ Util.runOnMain(() -> {
+ if (chatlist.getCnt() <= 0 && TextUtils.isEmpty(queryFilter)) {
+ list.setVisibility(View.INVISIBLE);
+ emptyState.setVisibility(View.VISIBLE);
+ emptySearch.setVisibility(View.INVISIBLE);
+ fab.startPulse(3 * 1000);
+ } else if (chatlist.getCnt() <= 0 && !TextUtils.isEmpty(queryFilter)) {
+ list.setVisibility(View.INVISIBLE);
+ emptyState.setVisibility(View.GONE);
+ emptySearch.setVisibility(View.VISIBLE);
+ emptySearch.setText(getString(R.string.search_no_result_for_x, queryFilter));
+ } else {
+ list.setVisibility(View.VISIBLE);
+ emptyState.setVisibility(View.GONE);
+ emptySearch.setVisibility(View.INVISIBLE);
+ fab.stopPulse();
+ }
+
+ ((ConversationListAdapter)list.getAdapter()).changeData(chatlist);
+ });
+ }
+
+ @Override
+ protected boolean offerToArchive() {
+ return !archive;
+ }
+
+ @Override
+ protected void setFabVisibility(boolean isActionMode) {
+ fab.setVisibility((isActionMode || !archive)? View.VISIBLE : View.GONE);
+ }
+
+ @Override
+ public void onItemClick(ConversationListItem item) {
+ onItemClick(item.getChatId());
+ }
+
+ @Override
+ public void onItemLongClick(ConversationListItem item) {
+ onItemLongClick(item.getChatId());
+ }
+
+ @Override
+ public void onSwitchToArchive() {
+ ((ConversationSelectedListener)requireActivity()).onSwitchToArchive();
+ }
+
+ @Override
+ public void handleEvent(@NonNull DcEvent event) {
+ if (event.getAccountId() != DcHelper.getContext(requireActivity()).getAccountId()) {
+ Activity activity = getActivity();
+ if (activity instanceof ConversationListActivity) {
+ ((ConversationListActivity) activity).refreshUnreadIndicator();
+ }
+
+ } else if (event.getId() == DcContext.DC_EVENT_CONNECTIVITY_CHANGED) {
+ Activity activity = getActivity();
+ if (activity instanceof ConversationListActivity) {
+ ((ConversationListActivity) activity).refreshTitle();
+ }
+
+ } else if (event.getId() == DcContext.DC_EVENT_SELFAVATAR_CHANGED) {
+ Activity activity = getActivity();
+ if (activity instanceof ConversationListActivity) {
+ ((ConversationListActivity) activity).refreshAvatar();
+ }
+
+ } else {
+ loadChatlistAsync();
+ }
+ }
+
+}
+
+
diff --git a/src/org/thoughtcrime/securesms/ConversationListItem.java b/src/main/java/org/thoughtcrime/securesms/ConversationListItem.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/ConversationListItem.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationListItem.java
index 1cbd7eff7..5c4e21956 100644
--- a/src/org/thoughtcrime/securesms/ConversationListItem.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationListItem.java
@@ -154,8 +154,8 @@ public class ConversationListItem extends RelativeLayout
}
dateView.setCompoundDrawablesWithIntrinsicBounds(
- thread.getVisibility()==DcChat.DC_CHAT_VISIBILITY_PINNED? R.drawable.ic_pinned_chatlist : 0, 0,
- thread.isSendingLocations()? R.drawable.ic_location_chatlist : 0, 0
+ thread.isSendingLocations()? R.drawable.ic_location_chatlist : 0, 0,
+ thread.getVisibility()==DcChat.DC_CHAT_VISIBILITY_PINNED? R.drawable.ic_pinned_chatlist : 0, 0
);
setStatusIcons(thread.getVisibility(), state, unreadCount, thread.isContactRequest(), thread.isMuted() || chatId == DcChat.DC_CHAT_ID_ARCHIVED_LINK);
diff --git a/src/org/thoughtcrime/securesms/ConversationListItemInboxZero.java b/src/main/java/org/thoughtcrime/securesms/ConversationListItemInboxZero.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ConversationListItemInboxZero.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationListItemInboxZero.java
diff --git a/src/org/thoughtcrime/securesms/ConversationListRelayingActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationListRelayingActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ConversationListRelayingActivity.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationListRelayingActivity.java
diff --git a/src/org/thoughtcrime/securesms/ConversationSwipeAnimationHelper.java b/src/main/java/org/thoughtcrime/securesms/ConversationSwipeAnimationHelper.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ConversationSwipeAnimationHelper.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationSwipeAnimationHelper.java
diff --git a/src/org/thoughtcrime/securesms/ConversationTitleView.java b/src/main/java/org/thoughtcrime/securesms/ConversationTitleView.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/ConversationTitleView.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationTitleView.java
index f3a0dd14e..7e8fe5ee9 100644
--- a/src/org/thoughtcrime/securesms/ConversationTitleView.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationTitleView.java
@@ -103,13 +103,13 @@ public class ConversationTitleView extends RelativeLayout {
}
else {
DcContact dcContact = dcContext.getContact(chatContacts[0]);
- subtitleStr = dcContact.getAddr();
+ if (profileView || !dcChat.isProtected()) {
+ subtitleStr = dcContact.getAddr();
+ }
isOnline = dcContact.wasSeenRecently();
}
}
- subtitle.setText(subtitleStr);
-
avatar.setAvatar(glideRequests, new Recipient(getContext(), dcChat), false);
avatar.setSeenRecently(isOnline);
title.setCompoundDrawablesWithIntrinsicBounds(imgLeft, 0, imgRight, 0);
diff --git a/src/org/thoughtcrime/securesms/ConversationUpdateItem.java b/src/main/java/org/thoughtcrime/securesms/ConversationUpdateItem.java
similarity index 95%
rename from src/org/thoughtcrime/securesms/ConversationUpdateItem.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationUpdateItem.java
index 6025336e3..55997db08 100644
--- a/src/org/thoughtcrime/securesms/ConversationUpdateItem.java
+++ b/src/main/java/org/thoughtcrime/securesms/ConversationUpdateItem.java
@@ -53,6 +53,9 @@ public class ConversationUpdateItem extends BaseConversationItem
bodyText.setOnLongClickListener(passthroughClickListener);
bodyText.setOnClickListener(passthroughClickListener);
+ // info messages do not contain links but domains (eg. invalid_unencrypted_tap_to_learn_more),
+ // however, they should not be linkified to not disturb eg. "Tap to learn more".
+ bodyText.setAutoLinkMask(0);
}
@Override
diff --git a/src/org/thoughtcrime/securesms/ConversationVideochatItem.java b/src/main/java/org/thoughtcrime/securesms/ConversationVideochatItem.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ConversationVideochatItem.java
rename to src/main/java/org/thoughtcrime/securesms/ConversationVideochatItem.java
diff --git a/src/org/thoughtcrime/securesms/CreateProfileActivity.java b/src/main/java/org/thoughtcrime/securesms/CreateProfileActivity.java
similarity index 92%
rename from src/org/thoughtcrime/securesms/CreateProfileActivity.java
rename to src/main/java/org/thoughtcrime/securesms/CreateProfileActivity.java
index b9098e614..cb833e5e0 100644
--- a/src/org/thoughtcrime/securesms/CreateProfileActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/CreateProfileActivity.java
@@ -108,7 +108,7 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
onBackPressed();
return true;
case R.id.menu_create_profile:
- handleUpload();
+ updateProfile();
break;
}
@@ -120,8 +120,7 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
if (container.isInputOpen()) {
container.hideCurrentInput(name);
} else if (fromWelcome) {
- startActivity(new Intent(getApplicationContext(), ConversationListActivity.class));
- finish();
+ updateProfile();
} else {
super.onBackPressed();
}
@@ -199,7 +198,6 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
}
private void initializeResources() {
- TextView passwordAccountSettings = ViewUtil.findById(this, R.id.password_account_settings_button);
TextView loginSuccessText = ViewUtil.findById(this, R.id.login_success_text);
this.avatar = ViewUtil.findById(this, R.id.avatar);
this.name = ViewUtil.findById(this, R.id.name_text);
@@ -207,17 +205,11 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
this.container = ViewUtil.findById(this, R.id.container);
this.statusView = ViewUtil.findById(this, R.id.status_text);
- passwordAccountSettings.setOnClickListener(view -> {
- Intent intent = new Intent(this, RegistrationActivity.class);
- startActivity(intent);
- });
-
if (fromWelcome) {
String addr = DcHelper.get(this, "addr");
- loginSuccessText.setText(getString(R.string.qraccount_success_enter_name, addr));
+ loginSuccessText.setText(R.string.set_name_and_avatar_explain);
ViewUtil.findById(this, R.id.status_text_layout).setVisibility(View.GONE);
ViewUtil.findById(this, R.id.information_label).setVisibility(View.GONE);
- passwordAccountSettings.setVisibility(View.GONE);
} else {
loginSuccessText.setVisibility(View.GONE);
}
@@ -281,11 +273,12 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
statusView.setText(status);
}
- private void handleUpload() {
- final String name;
-
- if (TextUtils.isEmpty(this.name.getText().toString())) name = null;
- else name = this.name.getText().toString();
+ private void updateProfile() {
+ if (TextUtils.isEmpty(this.name.getText())) {
+ Toast.makeText(this, R.string.please_enter_name, Toast.LENGTH_LONG).show();
+ return;
+ }
+ final String name = this.name.getText().toString();
new AsyncTask() {
@Override
@@ -314,7 +307,9 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
if (result) {
attachmentManager.cleanup();
if (fromWelcome) {
- startActivity(new Intent(getApplicationContext(), ConversationListActivity.class));
+ Intent intent = new Intent(getApplicationContext(), ConversationListActivity.class);
+ intent.putExtra(ConversationListActivity.FROM_WELCOME, true);
+ startActivity(intent);
}
finish();
} else {
diff --git a/src/org/thoughtcrime/securesms/DummyActivity.java b/src/main/java/org/thoughtcrime/securesms/DummyActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/DummyActivity.java
rename to src/main/java/org/thoughtcrime/securesms/DummyActivity.java
diff --git a/src/org/thoughtcrime/securesms/EphemeralMessagesDialog.java b/src/main/java/org/thoughtcrime/securesms/EphemeralMessagesDialog.java
similarity index 95%
rename from src/org/thoughtcrime/securesms/EphemeralMessagesDialog.java
rename to src/main/java/org/thoughtcrime/securesms/EphemeralMessagesDialog.java
index 235527664..12b09669d 100644
--- a/src/org/thoughtcrime/securesms/EphemeralMessagesDialog.java
+++ b/src/main/java/org/thoughtcrime/securesms/EphemeralMessagesDialog.java
@@ -11,6 +11,7 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.core.widget.TextViewCompat;
+import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.util.ViewUtil;
import java.util.concurrent.TimeUnit;
@@ -69,7 +70,8 @@ public class EphemeralMessagesDialog {
default: burnAfter = 0; break;
}
listener.onTimeSelected(burnAfter);
- });
+ })
+ .setNeutralButton(R.string.learn_more, (d, w) -> DcHelper.openHelp(context, "#ephemeralmsgs"));
builder.show();
}
diff --git a/src/org/thoughtcrime/securesms/FullMsgActivity.java b/src/main/java/org/thoughtcrime/securesms/FullMsgActivity.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/FullMsgActivity.java
rename to src/main/java/org/thoughtcrime/securesms/FullMsgActivity.java
index d5ed6f1e4..dd8e5c4d1 100644
--- a/src/org/thoughtcrime/securesms/FullMsgActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/FullMsgActivity.java
@@ -36,6 +36,12 @@ public class FullMsgActivity extends WebViewActivity
ALWAYS
}
+ @Override
+ protected void onPreCreate() {
+ super.onPreCreate();
+ toggleFakeProxy(true);
+ }
+
@Override
protected void onCreate(Bundle state, boolean ready) {
super.onCreate(state, ready);
diff --git a/src/org/thoughtcrime/securesms/GroupCreateActivity.java b/src/main/java/org/thoughtcrime/securesms/GroupCreateActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/GroupCreateActivity.java
rename to src/main/java/org/thoughtcrime/securesms/GroupCreateActivity.java
diff --git a/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java
new file mode 100644
index 000000000..17f4fdb8d
--- /dev/null
+++ b/src/main/java/org/thoughtcrime/securesms/InstantOnboardingActivity.java
@@ -0,0 +1,514 @@
+package org.thoughtcrime.securesms;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.text.util.Linkify;
+import android.util.Log;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.activity.OnBackPressedCallback;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.loader.app.LoaderManager;
+
+import com.b44t.messenger.DcContext;
+import com.b44t.messenger.DcEvent;
+import com.b44t.messenger.DcLot;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.request.target.CustomTarget;
+import com.bumptech.glide.request.transition.Transition;
+import com.google.zxing.integration.android.IntentIntegrator;
+import com.google.zxing.integration.android.IntentResult;
+import com.soundcloud.android.crop.Crop;
+
+import org.thoughtcrime.securesms.components.AvatarSelector;
+import org.thoughtcrime.securesms.connect.AccountManager;
+import org.thoughtcrime.securesms.connect.DcEventCenter;
+import org.thoughtcrime.securesms.connect.DcHelper;
+import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto;
+import org.thoughtcrime.securesms.mms.AttachmentManager;
+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.qr.RegistrationQrActivity;
+import org.thoughtcrime.securesms.scribbles.ScribbleActivity;
+import org.thoughtcrime.securesms.util.Prefs;
+import org.thoughtcrime.securesms.util.Util;
+import org.thoughtcrime.securesms.util.views.ProgressDialog;
+
+import java.io.File;
+import java.io.IOException;
+import java.security.SecureRandom;
+import java.util.Objects;
+
+public class InstantOnboardingActivity extends BaseActionBarActivity implements DcEventCenter.DcEventDelegate {
+
+ private static final String TAG = InstantOnboardingActivity.class.getSimpleName();
+ private static final String DCACCOUNT = "dcaccount";
+ private static final String DCLOGIN = "dclogin";
+ private static final String INSTANCES_URL = "https://delta.chat/chatmail";
+ private static final String DEFAULT_CHATMAIL_HOST = "nine.testrun.org";
+
+ public static final String QR_ACCOUNT_EXTRA = "qr_account_extra";
+ public static final String FROM_WELCOME = "from_welcome";
+ private static final int REQUEST_CODE_AVATAR = 1;
+
+ private ImageView avatar;
+ private EditText name;
+ private TextView privacyPolicyBtn;
+ private Button signUpBtn;
+
+ private boolean avatarChanged;
+ private boolean imageLoaded;
+ private String providerHost;
+ private String providerQrData;
+ private boolean isDcLogin;
+
+ private AttachmentManager attachmentManager;
+ private Bitmap avatarBmp;
+ private ProgressDialog progressDialog;
+ private DcContext dcContext;
+
+ @Override
+ public void onCreate(Bundle bundle) {
+ super.onCreate(bundle);
+
+ setContentView(R.layout.instant_onboarding_activity);
+
+ Objects.requireNonNull(getSupportActionBar()).setTitle(R.string.onboarding_create_instant_account);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+
+ boolean fromWelcome = getIntent().getBooleanExtra(FROM_WELCOME, false);
+ if (DcHelper.getContext(this).isConfigured() == 1) {
+ // if account is configured it means we didn't come from Welcome screen nor from QR scanner,
+ // instead, user clicked a dcaccount:// URI directly, so we need to switch to a new account:
+ AccountManager.getInstance().beginAccountCreation(this);
+ }
+ getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(!fromWelcome) {
+ @Override
+ public void handleOnBackPressed() {
+ AccountManager accountManager = AccountManager.getInstance();
+ if (accountManager.canRollbackAccountCreation(InstantOnboardingActivity.this)) {
+ accountManager.rollbackAccountCreation(InstantOnboardingActivity.this);
+ } else {
+ finish();
+ }
+ }
+ });
+
+ isDcLogin = false;
+ providerHost = DEFAULT_CHATMAIL_HOST;
+ providerQrData = DCACCOUNT + ":https://" + providerHost + "/new";
+ attachmentManager = new AttachmentManager(this, () -> {});
+ avatarChanged = false;
+ registerForEvents();
+ initializeResources();
+ initializeProfile();
+ handleIntent();
+ updateProvider();
+ }
+
+ @Override
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ setIntent(intent);
+ handleIntent();
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(@NonNull MenuItem item) {
+ super.onOptionsItemSelected(item);
+ if (item.getItemId() == android.R.id.home) {
+ getOnBackPressedDispatcher().onBackPressed();
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ if (resultCode != RESULT_OK) {
+ return;
+ }
+
+ switch (requestCode) {
+ case REQUEST_CODE_AVATAR:
+ Uri inputFile = (data != null ? data.getData() : null);
+ onFileSelected(inputFile);
+ break;
+
+ case ScribbleActivity.SCRIBBLE_REQUEST_CODE:
+ setAvatarView(data.getData());
+ break;
+
+ case Crop.REQUEST_CROP:
+ setAvatarView(Crop.getOutput(data));
+ break;
+
+ case IntentIntegrator.REQUEST_CODE:
+ IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
+ if (scanResult != null && scanResult.getFormatName() != null) {
+ setProviderFromQr(scanResult.getContents());
+ }
+ break;
+ }
+ }
+
+ private void setProviderFromQr(String rawQr) {
+ DcLot qrParsed = dcContext.checkQr(rawQr);
+ boolean isDcLogin = qrParsed.getState() == DcContext.DC_QR_LOGIN;
+ if (isDcLogin || qrParsed.getState() == DcContext.DC_QR_ACCOUNT) {
+ this.isDcLogin = isDcLogin;
+ providerHost = qrParsed.getText1();
+ providerQrData = rawQr;
+ updateProvider();
+ } else {
+ new AlertDialog.Builder(this)
+ .setMessage(R.string.qraccount_qr_code_cannot_be_used)
+ .setPositiveButton(R.string.ok, null)
+ .show();
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ String accountQr = getIntent().getStringExtra(QR_ACCOUNT_EXTRA);
+ if (accountQr != null) {
+ getIntent().removeExtra(QR_ACCOUNT_EXTRA);
+ setProviderFromQr(accountQr);
+ }
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+
+ final String displayName = name.getText().toString();
+ DcHelper.set(this, DcHelper.CONFIG_DISPLAY_NAME, TextUtils.isEmpty(displayName)? null : displayName);
+
+ if (avatarChanged) {
+ try {
+ AvatarHelper.setSelfAvatar(InstantOnboardingActivity.this, avatarBmp);
+ Prefs.setProfileAvatarId(InstantOnboardingActivity.this, new SecureRandom().nextInt());
+ avatarChanged = false;
+ } catch (IOException e) {
+ Log.e(TAG, "Failed to save avatar", e);
+ }
+ }
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ DcHelper.getEventCenter(this).removeObservers(this);
+ }
+
+ private void handleIntent() {
+ if (getIntent() != null && Intent.ACTION_VIEW.equals(getIntent().getAction())) {
+ Uri uri = getIntent().getData();
+ if (uri == null) return;
+
+ if (uri.getScheme().equalsIgnoreCase(DCACCOUNT) || uri.getScheme().equalsIgnoreCase(DCLOGIN)) {
+ setProviderFromQr(uri.toString());
+ }
+ }
+ }
+
+ private void setAvatarView(Uri output) {
+ final ProfileMediaConstraints constraints = new ProfileMediaConstraints();
+ GlideApp.with(this)
+ .asBitmap()
+ .load(output)
+ .skipMemoryCache(true)
+ .diskCacheStrategy(DiskCacheStrategy.NONE)
+ .centerCrop()
+ .override(constraints.getImageMaxWidth(this), constraints.getImageMaxHeight(this))
+ .into(new CustomTarget() {
+ @Override
+ public void onResourceReady(@NonNull Bitmap resource, Transition super Bitmap> transition) {
+ avatarChanged = true;
+ imageLoaded = true;
+ avatarBmp = resource;
+ }
+
+ @Override
+ public void onLoadCleared(@Nullable Drawable placeholder) {}
+ });
+ GlideApp.with(this)
+ .load(output)
+ .circleCrop()
+ .skipMemoryCache(true)
+ .diskCacheStrategy(DiskCacheStrategy.NONE)
+ .into(avatar);
+ }
+
+ private void onFileSelected(Uri inputFile) {
+ if (inputFile == null) {
+ inputFile = attachmentManager.getImageCaptureUri();
+ }
+
+ AvatarHelper.cropAvatar(this, inputFile);
+ }
+
+ private void initializeResources() {
+ this.avatar = findViewById(R.id.avatar);
+ this.name = findViewById(R.id.name_text);
+ this.privacyPolicyBtn = findViewById(R.id.privacy_policy_button);
+ this.signUpBtn = findViewById(R.id.signup_button);
+
+ privacyPolicyBtn.setOnClickListener(view -> {
+ if (!isDcLogin) {
+ WebViewActivity.openUrlInBrowser(this, "https://" + providerHost + "/privacy.html");
+ }
+ });
+
+ 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) -> {
+ WebViewActivity.openUrlInBrowser(this, INSTANCES_URL);
+ signUpDialog.dismiss();
+ });
+ view.findViewById(R.id.login_button).setOnClickListener((v) -> {
+ startRegistrationActivity();
+ signUpDialog.dismiss();
+ });
+ view.findViewById(R.id.scan_qr_button).setOnClickListener((v) -> {
+ new IntentIntegrator(this).setCaptureActivity(RegistrationQrActivity.class).initiateScan();
+ signUpDialog.dismiss();
+ });
+
+ signUpDialog.show();
+ }
+
+ private void startRegistrationActivity() {
+ Intent intent = new Intent(this, RegistrationActivity.class);
+ startActivity(intent);
+ }
+
+ private void updateProvider() {
+ if (isDcLogin) {
+ signUpBtn.setText(R.string.login_title);
+ privacyPolicyBtn.setTextColor(getResources().getColor(R.color.gray50));
+ privacyPolicyBtn.setText(getString(R.string.qrlogin_ask_login, providerHost));
+ } else {
+ signUpBtn.setText(R.string.instant_onboarding_create);
+ privacyPolicyBtn.setTextColor(getResources().getColor(R.color.delta_accent));
+ if (DEFAULT_CHATMAIL_HOST.equals(providerHost)) {
+ privacyPolicyBtn.setText(getString(R.string.instant_onboarding_agree_default2, providerHost));
+ } else {
+ privacyPolicyBtn.setText(getString(R.string.instant_onboarding_agree_instance, providerHost));
+ }
+ }
+ }
+
+ private void initializeProfile() {
+ File avatarFile = AvatarHelper.getSelfAvatarFile(this);
+ if (avatarFile.exists() && avatarFile.length() > 0) {
+ imageLoaded = true;
+ GlideApp.with(this).load(avatarFile).circleCrop().into(avatar);
+ } else {
+ imageLoaded = false;
+ avatar.setImageDrawable(new ResourceContactPhoto(R.drawable.ic_camera_alt_white_24dp).asDrawable(this, getResources().getColor(R.color.grey_400)));
+ }
+ avatar.setOnClickListener(view ->
+ new AvatarSelector(this, LoaderManager.getInstance(this), new AvatarSelectedListener(), imageLoaded).show(this, avatar)
+ );
+
+ name.setText(DcHelper.get(this, DcHelper.CONFIG_DISPLAY_NAME));
+ }
+
+ private void registerForEvents() {
+ dcContext = DcHelper.getContext(this);
+ DcEventCenter eventCenter = DcHelper.getEventCenter(this);
+ eventCenter.addObserver(DcContext.DC_EVENT_CONFIGURE_PROGRESS, this);
+ }
+
+ @Override
+ public void handleEvent(@NonNull DcEvent event) {
+ int eventId = event.getId();
+
+ if (eventId == DcContext.DC_EVENT_CONFIGURE_PROGRESS) {
+ long progress = event.getData1Int();
+ if (progress==0/*error/aborted*/) {
+ progressError(event.getData2Str());
+ } else if (progress<1000/*progress in permille*/) {
+ progressUpdate((int)progress);
+ } else if (progress==1000/*done*/) {
+ DcHelper.getAccounts(this).startIo();
+ dcContext.assumeSingleDevice();
+ progressSuccess();
+ }
+ }
+ }
+
+ private void progressUpdate(int progress) {
+ int percent = progress / 10;
+ progressDialog.setMessage(getResources().getString(R.string.one_moment)+String.format(" %d%%", percent));
+ }
+
+ private void progressError(String data2) {
+ progressDialog.dismiss();
+ maybeShowConfigurationError(this, data2);
+ }
+
+ private void progressSuccess() {
+ DcHelper.getEventCenter(this).endCaptureNextError();
+ progressDialog.dismiss();
+
+ Intent intent = new Intent(getApplicationContext(), ConversationListActivity.class);
+ intent.putExtra(ConversationListActivity.FROM_WELCOME, true);
+ startActivity(intent);
+ 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())) {
+ Toast.makeText(this, R.string.please_enter_name, Toast.LENGTH_LONG).show();
+ return;
+ }
+ final String name = this.name.getText().toString();
+
+ new AsyncTask() {
+ @Override
+ protected Boolean doInBackground(Void... params) {
+ Context context = InstantOnboardingActivity.this;
+ DcHelper.set(context, DcHelper.CONFIG_DISPLAY_NAME, name);
+
+ if (avatarChanged) {
+ try {
+ AvatarHelper.setSelfAvatar(InstantOnboardingActivity.this, avatarBmp);
+ Prefs.setProfileAvatarId(InstantOnboardingActivity.this, new SecureRandom().nextInt());
+ } catch (IOException e) {
+ Log.w(TAG, e);
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ @Override
+ public void onPostExecute(Boolean result) {
+ super.onPostExecute(result);
+
+ if (result) {
+ attachmentManager.cleanup();
+ startQrAccountCreation(providerQrData);
+ } else {
+ Toast.makeText(InstantOnboardingActivity.this, R.string.error, Toast.LENGTH_LONG).show();
+ }
+ }
+ }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ }
+
+ private void startQrAccountCreation(String qrCode)
+ {
+ if (progressDialog != null) {
+ progressDialog.dismiss();
+ progressDialog = null;
+ }
+
+ progressDialog = new ProgressDialog(this);
+ progressDialog.setMessage(getResources().getString(R.string.one_moment));
+ progressDialog.setCanceledOnTouchOutside(false);
+ progressDialog.setCancelable(false);
+ progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getResources().getString(android.R.string.cancel), (dialog, which) -> {
+ dcContext.stopOngoingProcess();
+ });
+ progressDialog.show();
+
+ DcHelper.getEventCenter(this).captureNextError();
+
+ new Thread(() -> {
+ if (!dcContext.setConfigFromQr(qrCode)) {
+ Util.runOnMain(() -> {
+ progressError(dcContext.getLastError());
+ });
+ return;
+ }
+ DcHelper.getAccounts(this).stopIo();
+ dcContext.configure();
+ }).start();
+ }
+
+ private class AvatarSelectedListener implements AvatarSelector.AttachmentClickedListener {
+ @Override
+ public void onClick(int type) {
+ switch (type) {
+ case AvatarSelector.ADD_GALLERY:
+ AttachmentManager.selectImage(InstantOnboardingActivity.this, REQUEST_CODE_AVATAR);
+ break;
+ case AvatarSelector.REMOVE_PHOTO:
+ avatarBmp = null;
+ imageLoaded = false;
+ avatarChanged = true;
+ avatar.setImageDrawable(new ResourceContactPhoto(R.drawable.ic_camera_alt_white_24dp).asDrawable(InstantOnboardingActivity.this, getResources().getColor(R.color.grey_400)));
+ break;
+ case AvatarSelector.TAKE_PHOTO:
+ attachmentManager.capturePhoto(InstantOnboardingActivity.this, REQUEST_CODE_AVATAR);
+ break;
+ }
+ }
+
+ @Override
+ public void onQuickAttachment(Uri inputFile) {
+ onFileSelected(inputFile);
+ }
+ }
+
+}
diff --git a/src/org/thoughtcrime/securesms/LocalHelpActivity.java b/src/main/java/org/thoughtcrime/securesms/LocalHelpActivity.java
similarity index 94%
rename from src/org/thoughtcrime/securesms/LocalHelpActivity.java
rename to src/main/java/org/thoughtcrime/securesms/LocalHelpActivity.java
index 513bee046..346b74195 100644
--- a/src/org/thoughtcrime/securesms/LocalHelpActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/LocalHelpActivity.java
@@ -12,6 +12,9 @@ public class LocalHelpActivity extends WebViewActivity
{
public static final String SECTION_EXTRA = "section_extra";
+ @Override
+ protected boolean allowInLockedMode() { return true; }
+
@Override
protected void onCreate(Bundle state, boolean ready) {
super.onCreate(state, ready);
@@ -19,7 +22,7 @@ public class LocalHelpActivity extends WebViewActivity
getSupportActionBar().setTitle(getString(R.string.menu_help));
String section = getIntent().getStringExtra(SECTION_EXTRA);
- String helpPath = "help/LANG/help.html" + (section!=null? section : "");
+ String helpPath = "help/LANG/help.html";
String helpLang = "en";
try {
Locale locale = dynamicLanguage.getCurrentLocale();
@@ -39,7 +42,7 @@ public class LocalHelpActivity extends WebViewActivity
e.printStackTrace();
}
- webView.loadUrl("file:///android_asset/" + helpPath.replace("LANG", helpLang));
+ webView.loadUrl("file:///android_asset/" + helpPath.replace("LANG", helpLang) + (section!=null? section : ""));
}
@Override
diff --git a/src/org/thoughtcrime/securesms/LogViewActivity.java b/src/main/java/org/thoughtcrime/securesms/LogViewActivity.java
similarity index 73%
rename from src/org/thoughtcrime/securesms/LogViewActivity.java
rename to src/main/java/org/thoughtcrime/securesms/LogViewActivity.java
index db725e87a..4b6da2d17 100644
--- a/src/org/thoughtcrime/securesms/LogViewActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/LogViewActivity.java
@@ -1,18 +1,23 @@
package org.thoughtcrime.securesms;
import android.Manifest;
+import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
+import android.os.Environment;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentTransaction;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.widget.Toast;
import org.thoughtcrime.securesms.permissions.Permissions;
-import org.thoughtcrime.securesms.util.Util;
+import org.thoughtcrime.securesms.util.FileProviderUtil;
+
+import java.io.File;
public class LogViewActivity extends BaseActionBarActivity {
@@ -59,7 +64,8 @@ public class LogViewActivity extends BaseActionBarActivity {
.alwaysGrantOnSdk30()
.ifNecessary()
.onAllGranted(() -> {
- boolean success = logViewFragment.saveLogFile();
+ File outputDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
+ boolean success = logViewFragment.saveLogFile(outputDir) != null;
new AlertDialog.Builder(this)
.setMessage(success? R.string.pref_saved_log : R.string.pref_save_log_failed)
.setPositiveButton(android.R.string.ok, null)
@@ -67,9 +73,8 @@ public class LogViewActivity extends BaseActionBarActivity {
})
.execute();
return true;
- case R.id.copy_log_to_clipboard:
- Util.writeTextToClipboard(this, logViewFragment.getLogText());
- Toast.makeText(getApplicationContext(), R.string.done, Toast.LENGTH_SHORT).show();
+ case R.id.share_log:
+ shareLog();
return true;
case R.id.log_zoom_in:
newSize = logViewFragment.getLogTextSize() + 2.0f;
@@ -90,6 +95,20 @@ public class LogViewActivity extends BaseActionBarActivity {
return false;
}
+ public void shareLog() {
+ try {
+ File logFile = logViewFragment.saveLogFile(getExternalCacheDir());
+ Uri uri = FileProviderUtil.getUriFor(this, logFile);
+ Intent intent = new Intent(Intent.ACTION_SEND);
+ intent.setType("text/plain");
+ intent.putExtra(Intent.EXTRA_STREAM, uri);
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ startActivity(Intent.createChooser(intent, getString(R.string.chat_share_with_title)));
+ } catch (Exception e) {
+ Log.e(TAG, "failed to share log", e);
+ }
+ }
+
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
diff --git a/src/org/thoughtcrime/securesms/LogViewFragment.java b/src/main/java/org/thoughtcrime/securesms/LogViewFragment.java
similarity index 87%
rename from src/org/thoughtcrime/securesms/LogViewFragment.java
rename to src/main/java/org/thoughtcrime/securesms/LogViewFragment.java
index ce9567dd5..4293353b4 100644
--- a/src/org/thoughtcrime/securesms/LogViewFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/LogViewFragment.java
@@ -26,10 +26,8 @@ import android.os.Build;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
-import android.os.Environment;
import android.os.PowerManager;
import android.text.TextUtils;
-import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
@@ -42,9 +40,9 @@ import androidx.fragment.app.Fragment;
import com.b44t.messenger.DcContext;
import org.thoughtcrime.securesms.connect.DcHelper;
+import org.thoughtcrime.securesms.notifications.FcmReceiveService;
import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.Prefs;
-import org.thoughtcrime.securesms.util.Scrubber;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@@ -75,12 +73,11 @@ public class LogViewFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- // Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_view_log, container, false);
}
@Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
+ public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
logPreview = (EditText) getView().findViewById(R.id.log_preview);
@@ -107,19 +104,16 @@ public class LogViewFragment extends Fragment {
logPreview.setSelection(0);
}
- public boolean saveLogFile() {
-
- File outputDir = null;
+ public File saveLogFile(File outputDir) {
+ File logFile = null;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-HHmmss");
Date now = new Date();
String logFileName = "deltachat-log-" + dateFormat.format(now) + ".txt";
try {
- outputDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
String logText = logPreview.getText().toString();
if(!logText.trim().equals("")){
- File logFile = new File(outputDir + "/" + logFileName);
-
+ logFile = new File(outputDir + "/" + logFileName);
if(!logFile.exists()) logFile.createNewFile();
FileWriter logFileWriter = new FileWriter(logFile, false);
@@ -129,27 +123,35 @@ public class LogViewFragment extends Fragment {
}
} catch (IOException e) {
e.printStackTrace();
- return false;
}
- return true;
+ return logFile;
}
- private static String grabLogcat() {
+ private static String grabLogcat(LogViewFragment fragment) {
try {
final Process process = Runtime.getRuntime().exec("logcat -v threadtime -d");
final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
final StringBuilder log = new StringBuilder();
final String separator = System.getProperty("line.separator");
+ final boolean devMode = Prefs.isDeveloperModeEnabled(fragment.getActivity());
String line;
while ((line = bufferedReader.readLine()) != null) {
- log.append(line);
- log.append(separator);
+ line = line.replaceFirst(" (\\d+) E ", " $1 \uD83D\uDD34 ");
+ line = line.replaceFirst(" (\\d+) W ", " $1 \uD83D\uDFE0 ");
+ line = line.replaceFirst(" (\\d+) I ", " $1 \uD83D\uDD35 ");
+ String debugLine = line.replaceFirst(" (\\d+) D ", " $1 \uD83D\uDFE2 ");
+ if (debugLine.equals(line)) { // not a debug entry
+ log.append(line);
+ log.append(separator);
+ } else if (devMode) {
+ log.append(debugLine);
+ log.append(separator);
+ }
}
return log.toString();
- } catch (IOException ioe) {
- Log.w(TAG, "IOException when trying to read logcat.", ioe);
- return null;
+ } catch (Exception e) {
+ return "Error grabbing log: " + e;
}
}
@@ -166,7 +168,7 @@ public class LogViewFragment extends Fragment {
if (fragment == null) return null;
return "**This log may contain sensitive information. If you want to post it publicly you may examine and edit it beforehand.**\n\n" +
- buildDescription(fragment) + "\n" + new Scrubber().scrub(grabLogcat());
+ buildDescription(fragment) + "\n" + grabLogcat(fragment);
}
@Override
@@ -261,6 +263,9 @@ public class LogViewFragment extends Fragment {
builder.append("rtl=").append(isRtl).append("\n");
}
+ final String token = FcmReceiveService.getToken();
+ builder.append("push-enabled=").append(Prefs.isPushEnabled(context)).append("\n");
+ builder.append("push-token=").append(token == null ? "" : token).append("\n");
} catch (Exception e) {
builder.append("Unknown\n");
}
diff --git a/src/org/thoughtcrime/securesms/MediaPreviewActivity.java b/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/MediaPreviewActivity.java
rename to src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java
index 664f878e8..0eff0dd91 100644
--- a/src/org/thoughtcrime/securesms/MediaPreviewActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/MediaPreviewActivity.java
@@ -19,13 +19,10 @@ package org.thoughtcrime.securesms;
import android.app.Activity;
import android.Manifest;
import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -142,11 +139,8 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
- @TargetApi(VERSION_CODES.JELLY_BEAN)
private void setFullscreenIfPossible() {
- if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
- }
+ getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
}
@Override
diff --git a/src/org/thoughtcrime/securesms/MessageSelectorFragment.java b/src/main/java/org/thoughtcrime/securesms/MessageSelectorFragment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/MessageSelectorFragment.java
rename to src/main/java/org/thoughtcrime/securesms/MessageSelectorFragment.java
diff --git a/src/org/thoughtcrime/securesms/MuteDialog.java b/src/main/java/org/thoughtcrime/securesms/MuteDialog.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/MuteDialog.java
rename to src/main/java/org/thoughtcrime/securesms/MuteDialog.java
diff --git a/src/org/thoughtcrime/securesms/NewConversationActivity.java b/src/main/java/org/thoughtcrime/securesms/NewConversationActivity.java
similarity index 78%
rename from src/org/thoughtcrime/securesms/NewConversationActivity.java
rename to src/main/java/org/thoughtcrime/securesms/NewConversationActivity.java
index a33e4a61b..3ec60d656 100644
--- a/src/org/thoughtcrime/securesms/NewConversationActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/NewConversationActivity.java
@@ -28,8 +28,12 @@ import androidx.appcompat.app.AlertDialog;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
+import com.google.zxing.integration.android.IntentIntegrator;
+import com.google.zxing.integration.android.IntentResult;
import org.thoughtcrime.securesms.connect.DcHelper;
+import org.thoughtcrime.securesms.qr.QrActivity;
+import org.thoughtcrime.securesms.qr.QrCodeHandler;
import org.thoughtcrime.securesms.util.MailtoUtil;
import static org.thoughtcrime.securesms.ConversationActivity.CHAT_ID_EXTRA;
@@ -70,7 +74,7 @@ public class NewConversationActivity extends ContactSelectionActivity {
if (!textToShare.isEmpty()) {
getIntent().putExtra(TEXT_EXTRA, textToShare);
}
- onContactSelected(DcContact.DC_CONTACT_ID_NEW_CONTACT, recipientsArray[0]);
+ onContactSelected(DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT, recipientsArray[0]);
} else {
Intent shareIntent = new Intent(this, ShareActivity.class);
shareIntent.putExtra(Intent.EXTRA_TEXT, textToShare);
@@ -95,11 +99,13 @@ public class NewConversationActivity extends ContactSelectionActivity {
Intent intent = new Intent(this, GroupCreateActivity.class);
intent.putExtra(GroupCreateActivity.CREATE_BROADCAST, true);
startActivity(intent);
+ } else if (specialId == DcContact.DC_CONTACT_ID_QR_INVITE) {
+ new IntentIntegrator(this).setCaptureActivity(QrActivity.class).initiateScan();
}
else {
int contactId = dcContext.lookupContactIdByAddr(addr);
if (contactId!=0 && dcContext.getChatIdByContactId(contactId)!=0) {
- openConversation(dcContext.createChatByContactId(contactId));
+ openConversation(dcContext.getChatIdByContactId(contactId));
} else {
String nameNAddr = contactId == 0 ? addr : dcContext.getContact(contactId).getNameNAddr();
new AlertDialog.Builder(this)
@@ -107,10 +113,13 @@ public class NewConversationActivity extends ContactSelectionActivity {
.setCancelable(true)
.setNegativeButton(android.R.string.cancel, null)
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
- int contactId1 = dcContext.createContact(null, addr);
+ int contactId1 = dcContext.lookupContactIdByAddr(addr);
if (contactId1 == 0) {
- Toast.makeText(NewConversationActivity.this, R.string.bad_email_address, Toast.LENGTH_LONG).show();
- return;
+ contactId1 = dcContext.createContact(null, addr);
+ if (contactId1 == 0) {
+ Toast.makeText(NewConversationActivity.this, R.string.bad_email_address, Toast.LENGTH_LONG).show();
+ return;
+ }
}
openConversation(dcContext.createChatByContactId(contactId1));
}).show();
@@ -118,6 +127,20 @@ public class NewConversationActivity extends ContactSelectionActivity {
}
}
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ switch (requestCode) {
+ case IntentIntegrator.REQUEST_CODE:
+ IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
+ QrCodeHandler qrCodeHandler = new QrCodeHandler(this);
+ qrCodeHandler.onScanPerformed(scanResult);
+ break;
+ default:
+ break;
+ }
+ }
+
private void openConversation(int chatId) {
Intent intent = new Intent(this, ConversationActivity.class);
intent.putExtra(TEXT_EXTRA, getIntent().getStringExtra(TEXT_EXTRA));
diff --git a/src/org/thoughtcrime/securesms/PassphraseRequiredActionBarActivity.java b/src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActionBarActivity.java
similarity index 65%
rename from src/org/thoughtcrime/securesms/PassphraseRequiredActionBarActivity.java
rename to src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActionBarActivity.java
index d01cf6faf..c043a046b 100644
--- a/src/org/thoughtcrime/securesms/PassphraseRequiredActionBarActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/PassphraseRequiredActionBarActivity.java
@@ -14,6 +14,12 @@ public abstract class PassphraseRequiredActionBarActivity extends BaseActionBarA
protected final void onCreate(Bundle savedInstanceState) {
Log.w(TAG, "onCreate(" + savedInstanceState + ")");
+ if (allowInLockedMode()) {
+ super.onCreate(savedInstanceState);
+ onCreate(savedInstanceState, true);
+ return;
+ }
+
if (GenericForegroundService.isForegroundTaskStarted()) {
// this does not prevent intent set by onNewIntent(),
// however, at least during onboarding,
@@ -38,4 +44,13 @@ public abstract class PassphraseRequiredActionBarActivity extends BaseActionBarA
}
protected void onCreate(Bundle savedInstanceState, boolean ready) {}
+
+ // "Locked Mode" is when the account is not configured (Welcome screen)
+ // or when sharing a backup (Add second device).
+ // The app is "locked" to an activity if you will.
+ // In "Locked Mode" the user should not leave that activity otherwise the state would be lost -
+ // so eg. tapping app icon or notifications MUST NOT replace activity stack.
+ // However, sometimes it is fine to allow to pushing activities in these situations,
+ // like to see the logs or offline help.
+ protected boolean allowInLockedMode() { return false; }
}
diff --git a/src/org/thoughtcrime/securesms/ProfileActivity.java b/src/main/java/org/thoughtcrime/securesms/ProfileActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ProfileActivity.java
rename to src/main/java/org/thoughtcrime/securesms/ProfileActivity.java
diff --git a/src/org/thoughtcrime/securesms/ProfileDocumentsAdapter.java b/src/main/java/org/thoughtcrime/securesms/ProfileDocumentsAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ProfileDocumentsAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/ProfileDocumentsAdapter.java
diff --git a/src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java b/src/main/java/org/thoughtcrime/securesms/ProfileDocumentsFragment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ProfileDocumentsFragment.java
rename to src/main/java/org/thoughtcrime/securesms/ProfileDocumentsFragment.java
diff --git a/src/org/thoughtcrime/securesms/ProfileGalleryAdapter.java b/src/main/java/org/thoughtcrime/securesms/ProfileGalleryAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ProfileGalleryAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/ProfileGalleryAdapter.java
diff --git a/src/org/thoughtcrime/securesms/ProfileGalleryFragment.java b/src/main/java/org/thoughtcrime/securesms/ProfileGalleryFragment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ProfileGalleryFragment.java
rename to src/main/java/org/thoughtcrime/securesms/ProfileGalleryFragment.java
diff --git a/src/org/thoughtcrime/securesms/ProfileSettingsAdapter.java b/src/main/java/org/thoughtcrime/securesms/ProfileSettingsAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ProfileSettingsAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/ProfileSettingsAdapter.java
diff --git a/src/org/thoughtcrime/securesms/ProfileSettingsFragment.java b/src/main/java/org/thoughtcrime/securesms/ProfileSettingsFragment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ProfileSettingsFragment.java
rename to src/main/java/org/thoughtcrime/securesms/ProfileSettingsFragment.java
diff --git a/src/org/thoughtcrime/securesms/ProfileSettingsItem.java b/src/main/java/org/thoughtcrime/securesms/ProfileSettingsItem.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ProfileSettingsItem.java
rename to src/main/java/org/thoughtcrime/securesms/ProfileSettingsItem.java
diff --git a/src/org/thoughtcrime/securesms/ProfileStatusItem.java b/src/main/java/org/thoughtcrime/securesms/ProfileStatusItem.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ProfileStatusItem.java
rename to src/main/java/org/thoughtcrime/securesms/ProfileStatusItem.java
diff --git a/src/org/thoughtcrime/securesms/RegistrationActivity.java b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/RegistrationActivity.java
rename to src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java
index 857cd3e2f..d84a83c0f 100644
--- a/src/org/thoughtcrime/securesms/RegistrationActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java
@@ -64,7 +64,6 @@ import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.IntentUtils;
import org.thoughtcrime.securesms.util.Util;
-import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask;
import org.thoughtcrime.securesms.util.views.ProgressDialog;
import java.lang.ref.WeakReference;
@@ -170,13 +169,6 @@ public class RegistrationActivity extends BaseActionBarActivity implements DcEve
viewLogText.setOnClickListener((view) -> showLog());
boolean isConfigured = DcHelper.isConfigured(getApplicationContext());
if (isConfigured) {
- TextInputLayout passwordLayout = findViewById(R.id.password);
- passwordLayout.setPasswordVisibilityToggleEnabled(false);
- TextInputLayout smtpPasswordLayout = findViewById(R.id.smtp_password);
- smtpPasswordLayout.setPasswordVisibilityToggleEnabled(false);
- TextInputLayout proxyPasswordLayout = findViewById(R.id.socks5_password);
- proxyPasswordLayout.setPasswordVisibilityToggleEnabled(false);
-
TextInputEditText imapLoginInput = findViewById(R.id.imap_login_text);
String email = DcHelper.get(this, CONFIG_ADDRESS);
diff --git a/src/org/thoughtcrime/securesms/ResolveMediaTask.java b/src/main/java/org/thoughtcrime/securesms/ResolveMediaTask.java
similarity index 76%
rename from src/org/thoughtcrime/securesms/ResolveMediaTask.java
rename to src/main/java/org/thoughtcrime/securesms/ResolveMediaTask.java
index 3bf5c6d09..8ade92314 100644
--- a/src/org/thoughtcrime/securesms/ResolveMediaTask.java
+++ b/src/main/java/org/thoughtcrime/securesms/ResolveMediaTask.java
@@ -4,22 +4,21 @@ import android.app.Activity;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
-import android.os.Process;
import android.provider.OpenableColumns;
import android.util.Log;
import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
-import org.thoughtcrime.securesms.util.FileUtils;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
+import java.io.FileNotFoundException;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.util.HashSet;
import static org.thoughtcrime.securesms.util.MediaUtil.getMimeType;
+import de.cketti.safecontentresolver.SafeContentResolver;
+import de.cketti.safecontentresolver.SafeContentResolverCompat;
+
public class ResolveMediaTask extends AsyncTask {
private static final String TAG = ResolveMediaTask.class.getSimpleName();
@@ -51,16 +50,8 @@ public class ResolveMediaTask extends AsyncTask {
String fileName = null;
Long fileSize = null;
- if (hasFileScheme(uri)) {
- inputStream = this.openFileUri(uri);
- if (uri.getPath() != null) {
- File file = new File(uri.getPath());
- fileName = file.getName();
- fileSize = file.length();
- }
- } else {
- inputStream = contextRef.get().getContentResolver().openInputStream(uri);
- }
+ SafeContentResolver safeContentResolver = SafeContentResolverCompat.newInstance(contextRef.get());
+ inputStream = safeContentResolver.openInputStream(uri);
if (inputStream == null) {
return null;
@@ -87,7 +78,7 @@ public class ResolveMediaTask extends AsyncTask {
String mimeType = getMimeType(contextRef.get(), uri);
return PersistentBlobProvider.getInstance().create(contextRef.get(), inputStream, mimeType, fileName, fileSize);
- } catch (NullPointerException | IOException ioe) {
+ } catch (NullPointerException | FileNotFoundException ioe) {
Log.w(TAG, ioe);
return null;
}
@@ -119,20 +110,6 @@ public class ResolveMediaTask extends AsyncTask {
}
}
- private InputStream openFileUri(Uri uri) throws IOException {
- FileInputStream fin = new FileInputStream(uri.getPath());
- int owner = FileUtils.getFileDescriptorOwner(fin.getFD());
-
-
- if (owner == -1 || owner == Process.myUid()) {
- fin.close();
- throw new IOException("File owned by application");
- }
-
- return fin;
- }
-
-
private boolean hasFileScheme(Uri uri) {
if (uri == null) {
return false;
diff --git a/src/org/thoughtcrime/securesms/SetStartingPositionLinearLayoutManager.java b/src/main/java/org/thoughtcrime/securesms/SetStartingPositionLinearLayoutManager.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/SetStartingPositionLinearLayoutManager.java
rename to src/main/java/org/thoughtcrime/securesms/SetStartingPositionLinearLayoutManager.java
diff --git a/src/org/thoughtcrime/securesms/ShareActivity.java b/src/main/java/org/thoughtcrime/securesms/ShareActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ShareActivity.java
rename to src/main/java/org/thoughtcrime/securesms/ShareActivity.java
diff --git a/src/org/thoughtcrime/securesms/ShareLocationDialog.java b/src/main/java/org/thoughtcrime/securesms/ShareLocationDialog.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/ShareLocationDialog.java
rename to src/main/java/org/thoughtcrime/securesms/ShareLocationDialog.java
diff --git a/src/org/thoughtcrime/securesms/TransportOption.java b/src/main/java/org/thoughtcrime/securesms/TransportOption.java
similarity index 83%
rename from src/org/thoughtcrime/securesms/TransportOption.java
rename to src/main/java/org/thoughtcrime/securesms/TransportOption.java
index 69d868f6c..50b190afd 100644
--- a/src/org/thoughtcrime/securesms/TransportOption.java
+++ b/src/main/java/org/thoughtcrime/securesms/TransportOption.java
@@ -11,7 +11,6 @@ public class TransportOption {
private final int drawable;
private final @NonNull String text;
- private final @NonNull Type type;
private final @NonNull String composeHint;
public TransportOption(@NonNull Type type,
@@ -19,18 +18,13 @@ public class TransportOption {
@NonNull String text,
@NonNull String composeHint)
{
- this.type = type;
this.drawable = drawable;
this.text = text;
this.composeHint = composeHint;
}
public @NonNull Type getType() {
- return type;
- }
-
- public boolean isType(Type type) {
- return this.type == type;
+ return Type.NORMAL_MAIL;
}
public @DrawableRes int getDrawable() {
diff --git a/src/org/thoughtcrime/securesms/TransportOptions.java b/src/main/java/org/thoughtcrime/securesms/TransportOptions.java
similarity index 81%
rename from src/org/thoughtcrime/securesms/TransportOptions.java
rename to src/main/java/org/thoughtcrime/securesms/TransportOptions.java
index 5e9d1a5db..d2bbe33c9 100644
--- a/src/org/thoughtcrime/securesms/TransportOptions.java
+++ b/src/main/java/org/thoughtcrime/securesms/TransportOptions.java
@@ -12,9 +12,6 @@ import java.util.List;
import static org.thoughtcrime.securesms.TransportOption.Type;
public class TransportOptions {
-
- private static final String TAG = TransportOptions.class.getSimpleName();
-
private final List listeners = new LinkedList<>();
private final Context context;
private final List enabledTransports;
@@ -55,10 +52,6 @@ public class TransportOptions {
notifyTransportChangeListeners();
}
- public boolean isManualSelection() {
- return this.selectedOption.isPresent();
- }
-
public @NonNull TransportOption getSelectedTransport() {
if (selectedOption.isPresent()) return selectedOption.get();
@@ -71,18 +64,6 @@ public class TransportOptions {
throw new AssertionError("No options of default type!");
}
- public void disableTransport(Type type) {
- Optional option = find(type);
-
- if (option.isPresent()) {
- enabledTransports.remove(option.get());
-
- if (selectedOption.isPresent() && selectedOption.get().getType() == type) {
- setSelectedTransport(null);
- }
- }
- }
-
public List getEnabledTransports() {
return enabledTransports;
}
@@ -107,16 +88,6 @@ public class TransportOptions {
}
}
- private Optional find(Type type) {
- for (TransportOption option : enabledTransports) {
- if (option.isType(type)) {
- return Optional.of(option);
- }
- }
-
- return Optional.absent();
- }
-
private boolean isEnabled(TransportOption transportOption) {
for (TransportOption option : enabledTransports) {
if (option.equals(transportOption)) return true;
diff --git a/src/org/thoughtcrime/securesms/TransportOptionsAdapter.java b/src/main/java/org/thoughtcrime/securesms/TransportOptionsAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/TransportOptionsAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/TransportOptionsAdapter.java
diff --git a/src/org/thoughtcrime/securesms/TransportOptionsPopup.java b/src/main/java/org/thoughtcrime/securesms/TransportOptionsPopup.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/TransportOptionsPopup.java
rename to src/main/java/org/thoughtcrime/securesms/TransportOptionsPopup.java
diff --git a/src/org/thoughtcrime/securesms/Unbindable.java b/src/main/java/org/thoughtcrime/securesms/Unbindable.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/Unbindable.java
rename to src/main/java/org/thoughtcrime/securesms/Unbindable.java
diff --git a/src/org/thoughtcrime/securesms/WebViewActivity.java b/src/main/java/org/thoughtcrime/securesms/WebViewActivity.java
similarity index 93%
rename from src/org/thoughtcrime/securesms/WebViewActivity.java
rename to src/main/java/org/thoughtcrime/securesms/WebViewActivity.java
index 676b83794..c1b118f4e 100644
--- a/src/org/thoughtcrime/securesms/WebViewActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/WebViewActivity.java
@@ -27,8 +27,6 @@ import androidx.webkit.ProxyConfig;
import org.thoughtcrime.securesms.util.DynamicTheme;
-import java.util.concurrent.Executor;
-
public class WebViewActivity extends PassphraseRequiredActionBarActivity
implements SearchView.OnQueryTextListener,
WebView.FindListener
@@ -37,31 +35,20 @@ public class WebViewActivity extends PassphraseRequiredActionBarActivity
protected WebView webView;
- @Override
- protected void onPreCreate() {
- super.onPreCreate();
-
+ protected void toggleFakeProxy(boolean enable) {
if (WebViewFeature.isFeatureSupported(WebViewFeature.PROXY_OVERRIDE)) {
- // Set proxy to non-routable address.
- ProxyConfig proxyConfig = new ProxyConfig.Builder()
+ if (enable) {
+ // Set proxy to non-routable address.
+ ProxyConfig proxyConfig = new ProxyConfig.Builder()
.removeImplicitRules()
.addProxyRule("0.0.0.0")
.build();
- Executor executor = new Executor() {
- @Override
- public void execute(Runnable command) {
- command.run();
- }
- };
- Runnable listener = new Runnable() {
- @Override
- public void run() {
- Log.i(TAG, "Successfully set WebView proxy.");
- }
- };
- ProxyController.getInstance().setProxyOverride(proxyConfig, executor, listener);
+ ProxyController.getInstance().setProxyOverride(proxyConfig, Runnable::run, () -> Log.i(TAG, "Set WebView proxy."));
+ } else {
+ ProxyController.getInstance().clearProxyOverride(Runnable::run, () -> Log.i(TAG, "Cleared WebView proxy."));
+ }
} else {
- Log.w(TAG, "Cannot set WebView proxy.");
+ Log.w(TAG, "Cannot " + (enable? "set": "clear") + " WebView proxy.");
}
}
@@ -75,6 +62,7 @@ public class WebViewActivity extends PassphraseRequiredActionBarActivity
webView = findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient() {
+ // IMPORTANT: this is will likely not be called inside iframes.
// `shouldOverrideUrlLoading()` is called when the user clicks a URL,
// returning `true` causes the WebView to abort loading the URL,
// returning `false` causes the WebView to continue loading the URL as usual.
diff --git a/src/org/thoughtcrime/securesms/WebxdcActivity.java b/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
similarity index 76%
rename from src/org/thoughtcrime/securesms/WebxdcActivity.java
rename to src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
index 6c2e4e410..b126d0c10 100644
--- a/src/org/thoughtcrime/securesms/WebxdcActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/WebxdcActivity.java
@@ -37,6 +37,8 @@ import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcMsg;
+import com.b44t.messenger.rpc.Rpc;
+import com.b44t.messenger.rpc.RpcException;
import org.json.JSONObject;
import org.thoughtcrime.securesms.connect.AccountManager;
@@ -48,40 +50,74 @@ import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.Util;
import java.io.ByteArrayInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
import java.io.InputStream;
-
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcEventDelegate {
private static final String TAG = WebxdcActivity.class.getSimpleName();
+ private static final String EXTRA_ACCOUNT_ID = "accountId";
+ private static final String EXTRA_APP_MSG_ID = "appMessageId";
+ private static final String EXTRA_HIDE_ACTION_BAR = "hideActionBar";
private static final int REQUEST_CODE_FILE_PICKER = 51426;
+
private ValueCallback filePathCallback;
private DcContext dcContext;
+ private Rpc rpc;
private DcMsg dcAppMsg;
private String baseURL;
private String sourceCodeUrl = "";
private boolean internetAccess = false;
+ private boolean hideActionBar = false;
+
+ public static void openMaps(Context context, int chatId) {
+ DcContext dcContext = DcHelper.getContext(context);
+ int msgId = dcContext.initWebxdcIntegration(chatId);
+ if (msgId == 0) {
+ try {
+ InputStream inputStream = context.getResources().getAssets().open("webxdc/maps.xdc");
+ String outputFile = DcHelper.getBlobdirFile(dcContext, "maps", ".xdc");
+ Util.copy(inputStream, new FileOutputStream(outputFile));
+ dcContext.setWebxdcIntegration(outputFile);
+ msgId = dcContext.initWebxdcIntegration(chatId);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ if (msgId == 0) {
+ Toast.makeText(context, "Cannot get maps.xdc, see log for details.", Toast.LENGTH_LONG).show();
+ return;
+ }
+ }
+ openWebxdcActivity(context, msgId, true);
+ }
public static void openWebxdcActivity(Context context, DcMsg instance) {
+ openWebxdcActivity(context, instance.getId(), false);
+ }
+
+ public static void openWebxdcActivity(Context context, int msgId, boolean hideActionBar) {
if (!Util.isClickedRecently()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (Prefs.isDeveloperModeEnabled(context)) {
WebView.setWebContentsDebuggingEnabled(true);
}
- context.startActivity(getWebxdcIntent(context, instance.getId()));
+ context.startActivity(getWebxdcIntent(context, msgId, hideActionBar));
} else {
Toast.makeText(context, "At least Android 5.0 (Lollipop) required for Webxdc.", Toast.LENGTH_LONG).show();
}
}
}
- private static Intent getWebxdcIntent(Context context, int msgId) {
+ private static Intent getWebxdcIntent(Context context, int msgId, boolean hideActionBar) {
DcContext dcContext = DcHelper.getContext(context);
Intent intent = new Intent(context, WebxdcActivity.class);
intent.setAction(Intent.ACTION_VIEW);
- intent.putExtra("accountId", dcContext.getAccountId());
- intent.putExtra("appMessageId", msgId);
+ intent.putExtra(EXTRA_ACCOUNT_ID, dcContext.getAccountId());
+ intent.putExtra(EXTRA_APP_MSG_ID, msgId);
+ intent.putExtra(EXTRA_HIDE_ACTION_BAR, hideActionBar);
return intent;
}
@@ -92,7 +128,7 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
.putExtra(ConversationActivity.CHAT_ID_EXTRA, dcContext.getMsg(msgId).getChatId())
.setAction(Intent.ACTION_VIEW);
- final Intent webxdcIntent = getWebxdcIntent(context, msgId);
+ final Intent webxdcIntent = getWebxdcIntent(context, msgId, false);
return TaskStackBuilder.create(context)
.addNextIntentWithParentStack(chatIntent)
@@ -103,6 +139,10 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
@Override
protected void onCreate(Bundle state, boolean ready) {
super.onCreate(state, ready);
+ rpc = DcHelper.getRpc(this);
+
+ Bundle b = getIntent().getExtras();
+ hideActionBar = b.getBoolean(EXTRA_HIDE_ACTION_BAR, false);
// enter fullscreen mode if necessary,
// this is needed here because if the app is opened while already in landscape mode, onConfigurationChanged() is not triggered
@@ -128,11 +168,10 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
DcEventCenter eventCenter = DcHelper.getEventCenter(WebxdcActivity.this.getApplicationContext());
eventCenter.addObserver(DcContext.DC_EVENT_WEBXDC_STATUS_UPDATE, this);
eventCenter.addObserver(DcContext.DC_EVENT_MSGS_CHANGED, this);
+ eventCenter.addObserver(DcContext.DC_EVENT_WEBXDC_REALTIME_DATA, this);
- Bundle b = getIntent().getExtras();
- int appMessageId = b.getInt("appMessageId");
-
- int accountId = b.getInt("accountId");
+ int appMessageId = b.getInt(EXTRA_APP_MSG_ID);
+ int accountId = b.getInt(EXTRA_ACCOUNT_ID);
this.dcContext = DcHelper.getContext(getApplicationContext());
if (accountId != dcContext.getAccountId()) {
AccountManager.getInstance().switchAccount(getApplicationContext(), accountId);
@@ -155,6 +194,8 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
final JSONObject info = this.dcAppMsg.getWebxdcInfo();
internetAccess = JsonUtils.optBoolean(info, "internet_access");
+ toggleFakeProxy(!internetAccess);
+
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAllowFileAccess(false);
@@ -168,7 +209,7 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
webView.setNetworkAvailable(internetAccess); // this does not block network but sets `window.navigator.isOnline` in js land
webView.addJavascriptInterface(new InternalJSApi(), "InternalJSApi");
- webView.loadUrl(this.baseURL + "/webxdc_bootstrap324567869.html");
+ webView.loadUrl(this.baseURL + (internetAccess? "/index.html" : "/webxdc_bootstrap324567869.html"));
Util.runOnAnyBackgroundThread(() -> {
final DcChat chat = dcContext.getChat(dcAppMsg.getChatId());
@@ -181,6 +222,7 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
@Override
protected void onDestroy() {
DcHelper.getEventCenter(this.getApplicationContext()).removeObservers(this);
+ leaveRealtimeChannel();
super.onDestroy();
}
@@ -222,7 +264,7 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
getWindow().getDecorView().setSystemUiVisibility(enable? View.SYSTEM_UI_FLAG_FULLSCREEN : 0);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
- if (enable) {
+ if (hideActionBar || enable) {
actionBar.hide();
} else {
actionBar.show();
@@ -230,14 +272,16 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
}
}
+ // This is usually only called when internetAccess == true or for mailto/openpgp4fpr scheme,
+ // because when internetAccess == false, the page is loaded inside an iframe,
+ // and WebViewClient.shouldOverrideUrlLoading is not called for HTTP(S) links inside the iframe
@Override
protected boolean openOnlineUrl(String url) {
- if (url.startsWith("mailto:")) {
+ Log.i(TAG, "openOnlineUrl: " + url);
+ if (url.startsWith("mailto:") || url.startsWith("openpgp4fpr:")) {
return super.openOnlineUrl(url);
}
-
- Toast.makeText(this, "Please embed needed resources.", Toast.LENGTH_LONG).show();
- return true; // returning `true` causes the WebView to abort loading
+ return !internetAccess; // returning `false` continues loading in WebView; returning `true` let WebView abort loading
}
@Override
@@ -285,7 +329,7 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
res = new WebResourceResponse("text/plain", "UTF-8", targetStream);
}
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !internetAccess) {
Map headers = new HashMap<>();
headers.put("Content-Security-Policy",
"default-src 'self'; "
@@ -303,12 +347,29 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
return res;
}
+ private void callJavaScriptFunction(String func) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+ if (internetAccess) {
+ webView.evaluateJavascript("window." + func + ";", null);
+ } else {
+ webView.evaluateJavascript("document.getElementById('frame').contentWindow." + func + ";", null);
+ }
+ }
+ }
+
@Override
public void handleEvent(@NonNull DcEvent event) {
int eventId = event.getId();
if ((eventId == DcContext.DC_EVENT_WEBXDC_STATUS_UPDATE && event.getData1Int() == dcAppMsg.getId())) {
- Log.i(TAG, "handleEvent");
- webView.loadUrl("javascript:document.getElementById('frame').contentWindow.__webxdcUpdate();");
+ Log.i(TAG, "handling status update event");
+ callJavaScriptFunction("__webxdcUpdate()");
+ } else if ((eventId == DcContext.DC_EVENT_WEBXDC_REALTIME_DATA && event.getData1Int() == dcAppMsg.getId())) {
+ Log.i(TAG, "handling realtime data event");
+ StringBuilder data = new StringBuilder();
+ for (byte b : event.getData2Blob()) {
+ data.append(((int) b) + ",");
+ }
+ callJavaScriptFunction("__webxdcRealtimeData([" + data + "])");
} else if ((eventId == DcContext.DC_EVENT_MSGS_CHANGED && event.getData2Int() == dcAppMsg.getId())) {
this.dcAppMsg = this.dcContext.getMsg(event.getData2Int()); // msg changed, reload data from db
Util.runOnAnyBackgroundThread(() -> {
@@ -352,9 +413,8 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
.setIntents(getWebxdcIntentWithParentStack(context, msgId))
.build();
- if (ShortcutManagerCompat.requestPinShortcut(context, shortcutInfoCompat, null)) {
- Toast.makeText(context, R.string.done, Toast.LENGTH_SHORT).show();
- } else {
+ Toast.makeText(context, R.string.one_moment, Toast.LENGTH_SHORT).show();
+ if (!ShortcutManagerCompat.requestPinShortcut(context, shortcutInfoCompat, null)) {
Toast.makeText(context, "ErrAddToHomescreen: requestPinShortcut() failed", Toast.LENGTH_LONG).show();
}
} catch(Exception e) {
@@ -387,12 +447,23 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
super.onActivityResult(reqCode, resultCode, data);
}
+ private void leaveRealtimeChannel() {
+ int accountId = dcContext.getAccountId();
+ int msgId = dcAppMsg.getId();
+ try {
+ rpc.leaveWebxdcRealtime(accountId, msgId);
+ } catch (RpcException e) {
+ e.printStackTrace();
+ }
+ }
+
class InternalJSApi {
@JavascriptInterface
public String selfAddr() {
return WebxdcActivity.this.dcContext.getConfig("addr");
}
+ /** @noinspection unused*/
@JavascriptInterface
public String selfName() {
String name = WebxdcActivity.this.dcContext.getConfig("displayname");
@@ -402,6 +473,7 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
return name;
}
+ /** @noinspection unused*/
@JavascriptInterface
public boolean sendStatusUpdate(String payload, String descr) {
Log.i(TAG, "sendStatusUpdate");
@@ -417,12 +489,14 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
return true;
}
+ /** @noinspection unused*/
@JavascriptInterface
public String getStatusUpdates(int lastKnownSerial) {
Log.i(TAG, "getStatusUpdates");
return WebxdcActivity.this.dcContext.getWebxdcStatusUpdates(WebxdcActivity.this.dcAppMsg.getId(), lastKnownSerial );
}
+ /** @noinspection unused*/
@JavascriptInterface
public String sendToChat(String message) {
Log.i(TAG, "sendToChat");
@@ -451,5 +525,36 @@ public class WebxdcActivity extends WebViewActivity implements DcEventCenter.DcE
return e.toString();
}
}
+
+ /** @noinspection unused*/
+ @JavascriptInterface
+ public void sendRealtimeAdvertisement() {
+ int accountId = WebxdcActivity.this.dcContext.getAccountId();
+ int msgId = WebxdcActivity.this.dcAppMsg.getId();
+ try {
+ WebxdcActivity.this.rpc.sendWebxdcRealtimeAdvertisement(accountId, msgId);
+ } catch (RpcException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /** @noinspection unused*/
+ @JavascriptInterface
+ public void leaveRealtimeChannel() {
+ WebxdcActivity.this.leaveRealtimeChannel();
+ }
+
+ /** @noinspection unused*/
+ @JavascriptInterface
+ public void sendRealtimeData(String jsonData) {
+ int accountId = WebxdcActivity.this.dcContext.getAccountId();
+ int msgId = WebxdcActivity.this.dcAppMsg.getId();
+ try {
+ Integer[] data = JsonUtils.fromJson(jsonData, Integer[].class);
+ WebxdcActivity.this.rpc.sendWebxdcRealtimeData(accountId, msgId, Arrays.asList(data));
+ } catch (IOException | RpcException e) {
+ e.printStackTrace();
+ }
+ }
}
}
diff --git a/src/org/thoughtcrime/securesms/WelcomeActivity.java b/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java
similarity index 71%
rename from src/org/thoughtcrime/securesms/WelcomeActivity.java
rename to src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java
index 2f0f2344a..d2bc31923 100644
--- a/src/org/thoughtcrime/securesms/WelcomeActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/WelcomeActivity.java
@@ -12,6 +12,7 @@ import android.os.Build;
import android.os.Bundle;
import android.text.util.Linkify;
import android.util.Log;
+import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
@@ -19,6 +20,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import com.b44t.messenger.DcContext;
@@ -33,11 +35,9 @@ import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.mms.AttachmentManager;
import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.qr.BackupTransferActivity;
-import org.thoughtcrime.securesms.qr.QrCodeHandler;
import org.thoughtcrime.securesms.qr.RegistrationQrActivity;
import org.thoughtcrime.securesms.service.GenericForegroundService;
import org.thoughtcrime.securesms.service.NotificationController;
-import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
import org.thoughtcrime.securesms.util.StorageUtil;
import org.thoughtcrime.securesms.util.StreamUtil;
import org.thoughtcrime.securesms.util.Util;
@@ -50,42 +50,45 @@ import java.io.InputStream;
import java.io.OutputStream;
public class WelcomeActivity extends BaseActionBarActivity implements DcEventCenter.DcEventDelegate {
- public static final String QR_ACCOUNT_EXTRA = "qr_account_extra";
- private static final String DCACCOUNT = "dcaccount";
- private static final String DCLOGIN = "dclogin";
+ public static final String BACKUP_QR_EXTRA = "backup_qr_extra";
public static final int PICK_BACKUP = 20574;
private final static String TAG = WelcomeActivity.class.getSimpleName();
public static final String TMP_BACKUP_FILE = "tmp-backup-file";
public static final String DC_REQUEST_ACCOUNT_DATA = "chat.delta.DC_REQUEST_ACCOUNT_DATA";
- private boolean manualConfigure = true; // false: configure by QR account creation
private ProgressDialog progressDialog = null;
private boolean imexUserAborted;
DcContext dcContext;
private NotificationController notificationController;
- @Override
- protected void onPreCreate() {
- dynamicTheme = new DynamicNoActionBarTheme();
- super.onPreCreate();
- }
-
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(R.layout.welcome_activity);
- Button loginButton = findViewById(R.id.login_button);
- View addAsSecondDeviceButton = findViewById(R.id.add_as_second_device_button);
- View scanQrButton = findViewById(R.id.scan_qr_button);
- View backupButton = findViewById(R.id.backup_button);
+ Button signUpButton = findViewById(R.id.signup_button);
+ Button signInButton = findViewById(R.id.signin_button);
- loginButton.setOnClickListener((view) -> startRegistrationActivity());
- addAsSecondDeviceButton.setOnClickListener((view) -> startAddAsSecondDeviceActivity());
- scanQrButton.setOnClickListener((view) -> startRegistrationQrActivity());
- backupButton.setOnClickListener((view) -> startImportBackup());
+ 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());
registerForEvents();
+ initializeActionBar();
if (!DcHelper.hasAnyConfiguredContext(this)) {
Intent intent = new Intent();
@@ -96,44 +99,48 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen
intent.setAction(DC_REQUEST_ACCOUNT_DATA);
sendBroadcast(intent);
}
+ }
- handleIntent();
+ protected void initializeActionBar() {
+ ActionBar supportActionBar = getSupportActionBar();
+ if (supportActionBar == null) throw new AssertionError();
+
+ boolean canGoBack = AccountManager.getInstance().canRollbackAccountCreation(this);
+ supportActionBar.setDisplayHomeAsUpEnabled(canGoBack);
+ getSupportActionBar().setTitle(canGoBack? R.string.add_account : R.string.welcome_desktop);
}
private void registerForEvents() {
dcContext = DcHelper.getContext(this);
- DcEventCenter eventCenter = DcHelper.getEventCenter(this);
- eventCenter.addObserver(DcContext.DC_EVENT_CONFIGURE_PROGRESS, this);
- eventCenter.addObserver(DcContext.DC_EVENT_IMEX_PROGRESS, this);
+ DcHelper.getEventCenter(this).addObserver(DcContext.DC_EVENT_IMEX_PROGRESS, this);
}
- private void handleIntent() {
- if (getIntent() != null && Intent.ACTION_VIEW.equals(getIntent().getAction())) {
- Uri uri = getIntent().getData();
- if (uri == null) return;
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ super.onOptionsItemSelected(item);
- if (uri.getScheme().equalsIgnoreCase(DCACCOUNT) || uri.getScheme().equalsIgnoreCase(DCLOGIN)) {
- QrCodeHandler qrCodeHandler = new QrCodeHandler(this);
- qrCodeHandler.handleQrData(uri.toString());
- }
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ onBackPressed();
+ return true;
}
+
+ return false;
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
- handleIntent();
}
@Override
public void onStart() {
super.onStart();
- String qrAccount = getIntent().getStringExtra(QR_ACCOUNT_EXTRA);
- if (qrAccount!=null) {
- getIntent().removeExtra(QR_ACCOUNT_EXTRA);
- manualConfigure = false;
- startQrAccountCreation(qrAccount);
+ String backupQr = getIntent().getStringExtra(BACKUP_QR_EXTRA);
+ if (backupQr != null) {
+ getIntent().removeExtra(BACKUP_QR_EXTRA);
+ startBackupTransfer(backupQr);
}
}
@@ -148,19 +155,13 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen
Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
- private void startRegistrationActivity() {
- manualConfigure = true;
- Intent intent = new Intent(this, RegistrationActivity.class);
+ private void startInstantOnboardingActivity() {
+ Intent intent = new Intent(this, InstantOnboardingActivity.class);
+ intent.putExtra(InstantOnboardingActivity.FROM_WELCOME, true);
startActivity(intent);
}
- private void startRegistrationQrActivity() {
- manualConfigure = false;
- new IntentIntegrator(this).setCaptureActivity(RegistrationQrActivity.class).initiateScan();
- }
-
private void startAddAsSecondDeviceActivity() {
- manualConfigure = false;
new IntentIntegrator(this).setCaptureActivity(RegistrationQrActivity.class)
.addExtra(RegistrationQrActivity.ADD_AS_SECOND_DEVICE_EXTRA, true)
.initiateScan();
@@ -293,38 +294,17 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen
}
}
- private void startQrAccountCreation(String qrCode)
+ private void startBackupTransfer(String qrCode)
{
if (progressDialog!=null) {
progressDialog.dismiss();
progressDialog = null;
}
- if (dcContext.checkQr(qrCode).getState() == DcContext.DC_QR_BACKUP) {
- Intent intent = new Intent(this, BackupTransferActivity.class);
- intent.putExtra(BackupTransferActivity.TRANSFER_MODE, BackupTransferActivity.TransferMode.RECEIVER_SCAN_QR.getInt());
- intent.putExtra(BackupTransferActivity.QR_CODE, qrCode);
- startActivity(intent);
- return;
- }
-
- progressDialog = new ProgressDialog(this);
- progressDialog.setMessage(getResources().getString(R.string.one_moment));
- progressDialog.setCanceledOnTouchOutside(false);
- progressDialog.setCancelable(false);
- progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getResources().getString(android.R.string.cancel), (dialog, which) -> {
- dcContext.stopOngoingProcess();
- });
- progressDialog.show();
-
- DcHelper.getEventCenter(this).captureNextError();
-
- if (!dcContext.setConfigFromQr(qrCode)) {
- progressError(dcContext.getLastError());
- return;
- }
- DcHelper.getAccounts(this).stopIo();
- dcContext.configure();
+ Intent intent = new Intent(this, BackupTransferActivity.class);
+ intent.putExtra(BackupTransferActivity.TRANSFER_MODE, BackupTransferActivity.TransferMode.RECEIVER_SCAN_QR.getInt());
+ intent.putExtra(BackupTransferActivity.QR_CODE, qrCode);
+ startActivity(intent);
}
private void progressError(String data2) {
@@ -337,17 +317,12 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen
progressDialog.setMessage(getResources().getString(R.string.one_moment)+String.format(" %d%%", percent));
}
- private void progressSuccess(boolean enterDisplayname) {
+ private void progressSuccess() {
DcHelper.getEventCenter(this).endCaptureNextError();
progressDialog.dismiss();
-
- if (enterDisplayname) {
- Intent intent = new Intent(getApplicationContext(), CreateProfileActivity.class);
- intent.putExtra(CreateProfileActivity.FROM_WELCOME, true);
- startActivity(intent);
- } else {
- startActivity(new Intent(getApplicationContext(), ConversationListActivity.class));
- }
+ Intent intent = new Intent(getApplicationContext(), ConversationListActivity.class);
+ intent.putExtra(ConversationListActivity.FROM_WELCOME, true);
+ startActivity(intent);
finish();
}
@@ -393,31 +368,12 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen
}
else if (progress==1000/*done*/) {
DcHelper.getAccounts(this).startIo();
- progressSuccess(false);
+ progressSuccess();
+ dcContext.assumeMultiDevice();
notificationController.close();
cleanupTempBackupFile();
}
}
- else if (manualConfigure && eventId==DcContext.DC_EVENT_CONFIGURE_PROGRESS) {
- long progress = event.getData1Int();
- if (progress==1000/*done*/) {
- DcHelper.getAccounts(this).startIo();
- finish(); // remove ourself from the activity stack (finishAffinity is available in API 16, we're targeting API 14)
- }
- }
- else if (!manualConfigure && eventId==DcContext.DC_EVENT_CONFIGURE_PROGRESS) {
- long progress = event.getData1Int();
- if (progress==0/*error/aborted*/) {
- progressError(event.getData2Str());
- }
- else if (progress<1000/*progress in permille*/) {
- progressUpdate((int)progress);
- }
- else if (progress==1000/*done*/) {
- DcHelper.getAccounts(this).startIo();
- progressSuccess(true);
- }
- }
}
@Override
@@ -431,31 +387,11 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen
String qrRaw = scanResult.getContents();
DcLot qrParsed = dcContext.checkQr(qrRaw);
switch (qrParsed.getState()) {
- case DcContext.DC_QR_LOGIN:
- String address = qrParsed.getText1();
- new AlertDialog.Builder(this)
- .setMessage(getString(R.string.qrlogin_ask_login, address))
- .setPositiveButton(R.string.ok, (dialog, which) -> startQrAccountCreation(qrRaw))
- .setNegativeButton(R.string.cancel, null)
- .setCancelable(false)
- .show();
- break;
-
- case DcContext.DC_QR_ACCOUNT:
- String domain = qrParsed.getText1();
- new AlertDialog.Builder(this)
- .setMessage(getString(R.string.qraccount_ask_create_and_login, domain))
- .setPositiveButton(R.string.ok, (dialog, which) -> startQrAccountCreation(qrRaw))
- .setNegativeButton(R.string.cancel, null)
- .setCancelable(false)
- .show();
- break;
-
case DcContext.DC_QR_BACKUP:
new AlertDialog.Builder(this)
.setTitle(R.string.multidevice_receiver_title)
.setMessage(R.string.multidevice_receiver_scanning_ask)
- .setPositiveButton(R.string.perm_continue, (dialog, which) -> startQrAccountCreation(qrRaw))
+ .setPositiveButton(R.string.perm_continue, (dialog, which) -> startBackupTransfer(qrRaw))
.setNegativeButton(R.string.cancel, null)
.setCancelable(false)
.show();
diff --git a/src/org/thoughtcrime/securesms/accounts/AccountSelectionListAdapter.java b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/accounts/AccountSelectionListAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListAdapter.java
diff --git a/src/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java
rename to src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java
index e7a94351c..a1085d39d 100644
--- a/src/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListFragment.java
@@ -75,9 +75,9 @@ public class AccountSelectionListFragment extends DialogFragment
AccountSelectionListFragment.this.dismiss();
int accountId = contact.getAccountId();
if (accountId == DC_CONTACT_ID_ADD_ACCOUNT) {
- AccountManager.getInstance().switchAccountAndStartActivity(activity, 0, null);
+ AccountManager.getInstance().switchAccountAndStartActivity(activity, 0);
} else if (accountId != DcHelper.getAccounts(activity).getSelectedAccount().getAccountId()) {
- AccountManager.getInstance().switchAccountAndStartActivity(activity, accountId, null);
+ AccountManager.getInstance().switchAccountAndStartActivity(activity, accountId);
}
}
diff --git a/src/org/thoughtcrime/securesms/accounts/AccountSelectionListItem.java b/src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListItem.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/accounts/AccountSelectionListItem.java
rename to src/main/java/org/thoughtcrime/securesms/accounts/AccountSelectionListItem.java
diff --git a/src/org/thoughtcrime/securesms/animation/AnimationCompleteListener.java b/src/main/java/org/thoughtcrime/securesms/animation/AnimationCompleteListener.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/animation/AnimationCompleteListener.java
rename to src/main/java/org/thoughtcrime/securesms/animation/AnimationCompleteListener.java
diff --git a/src/org/thoughtcrime/securesms/attachments/Attachment.java b/src/main/java/org/thoughtcrime/securesms/attachments/Attachment.java
similarity index 57%
rename from src/org/thoughtcrime/securesms/attachments/Attachment.java
rename to src/main/java/org/thoughtcrime/securesms/attachments/Attachment.java
index 593aface7..daec88d9c 100644
--- a/src/org/thoughtcrime/securesms/attachments/Attachment.java
+++ b/src/main/java/org/thoughtcrime/securesms/attachments/Attachment.java
@@ -1,9 +1,21 @@
package org.thoughtcrime.securesms.attachments;
+import android.content.Context;
import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import org.thoughtcrime.securesms.connect.DcHelper;
+import org.thoughtcrime.securesms.mms.PartAuthority;
+import org.thoughtcrime.securesms.util.MediaUtil;
+import org.thoughtcrime.securesms.util.Util;
+
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
public abstract class Attachment {
@NonNull
@@ -88,4 +100,35 @@ public abstract class Attachment {
public int getHeight() {
return height;
}
+
+ public String getRealPath(Context context) {
+ try {
+ // get file in the blobdir as `/[-].`
+ String filename = getFileName();
+ String ext = "";
+ if(filename==null) {
+ filename = new SimpleDateFormat("yyyy-MM-dd-HH-mm").format(new Date());
+ ext = "." + MediaUtil.getExtensionFromMimeType(getContentType());
+ }
+ else {
+ int i = filename.lastIndexOf(".");
+ if(i>=0) {
+ ext = filename.substring(i);
+ filename = filename.substring(0, i);
+ }
+ }
+ String path = DcHelper.getBlobdirFile(DcHelper.getContext(context), filename, ext);
+
+ // copy content to this file
+ InputStream inputStream = PartAuthority.getAttachmentStream(context, getDataUri());
+ OutputStream outputStream = new FileOutputStream(path);
+ Util.copy(inputStream, outputStream);
+
+ return path;
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
}
diff --git a/src/org/thoughtcrime/securesms/attachments/DcAttachment.java b/src/main/java/org/thoughtcrime/securesms/attachments/DcAttachment.java
similarity index 88%
rename from src/org/thoughtcrime/securesms/attachments/DcAttachment.java
rename to src/main/java/org/thoughtcrime/securesms/attachments/DcAttachment.java
index 779f127d7..ce5164ad4 100644
--- a/src/org/thoughtcrime/securesms/attachments/DcAttachment.java
+++ b/src/main/java/org/thoughtcrime/securesms/attachments/DcAttachment.java
@@ -1,6 +1,8 @@
package org.thoughtcrime.securesms.attachments;
import java.io.File;
+
+import android.content.Context;
import android.net.Uri;
import androidx.annotation.Nullable;
@@ -35,4 +37,9 @@ public class DcAttachment extends Attachment {
}
return getDataUri();
}
+
+ @Override
+ public String getRealPath(Context context) {
+ return dcMsg.getFile();
+ }
}
diff --git a/src/org/thoughtcrime/securesms/attachments/UriAttachment.java b/src/main/java/org/thoughtcrime/securesms/attachments/UriAttachment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/attachments/UriAttachment.java
rename to src/main/java/org/thoughtcrime/securesms/attachments/UriAttachment.java
diff --git a/src/org/thoughtcrime/securesms/audio/AudioCodec.java b/src/main/java/org/thoughtcrime/securesms/audio/AudioCodec.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/audio/AudioCodec.java
rename to src/main/java/org/thoughtcrime/securesms/audio/AudioCodec.java
index fa7c5c4a3..c4ce87f50 100644
--- a/src/org/thoughtcrime/securesms/audio/AudioCodec.java
+++ b/src/main/java/org/thoughtcrime/securesms/audio/AudioCodec.java
@@ -1,6 +1,5 @@
package org.thoughtcrime.securesms.audio;
-import android.annotation.TargetApi;
import android.content.Context;
import android.media.AudioFormat;
import android.media.AudioRecord;
@@ -8,7 +7,6 @@ import android.media.MediaCodec;
import android.media.MediaCodecInfo;
import android.media.MediaFormat;
import android.media.MediaRecorder;
-import android.os.Build;
import android.util.Log;
import org.thoughtcrime.securesms.util.Prefs;
@@ -18,7 +16,6 @@ import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
-@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public class AudioCodec {
private static final String TAG = AudioCodec.class.getSimpleName();
diff --git a/src/org/thoughtcrime/securesms/audio/AudioRecorder.java b/src/main/java/org/thoughtcrime/securesms/audio/AudioRecorder.java
similarity index 96%
rename from src/org/thoughtcrime/securesms/audio/AudioRecorder.java
rename to src/main/java/org/thoughtcrime/securesms/audio/AudioRecorder.java
index 776888bfb..826511012 100644
--- a/src/org/thoughtcrime/securesms/audio/AudioRecorder.java
+++ b/src/main/java/org/thoughtcrime/securesms/audio/AudioRecorder.java
@@ -1,9 +1,7 @@
package org.thoughtcrime.securesms.audio;
-import android.annotation.TargetApi;
import android.content.Context;
import android.net.Uri;
-import android.os.Build;
import android.os.ParcelFileDescriptor;
import androidx.annotation.NonNull;
import android.util.Log;
@@ -20,7 +18,6 @@ import org.thoughtcrime.securesms.util.Util;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
-@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public class AudioRecorder {
private static final String TAG = AudioRecorder.class.getSimpleName();
diff --git a/src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java b/src/main/java/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java
rename to src/main/java/org/thoughtcrime/securesms/audio/AudioSlidePlayer.java
diff --git a/src/org/thoughtcrime/securesms/components/AnimatingToggle.java b/src/main/java/org/thoughtcrime/securesms/components/AnimatingToggle.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/AnimatingToggle.java
rename to src/main/java/org/thoughtcrime/securesms/components/AnimatingToggle.java
diff --git a/src/org/thoughtcrime/securesms/components/AttachmentTypeSelector.java b/src/main/java/org/thoughtcrime/securesms/components/AttachmentTypeSelector.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/components/AttachmentTypeSelector.java
rename to src/main/java/org/thoughtcrime/securesms/components/AttachmentTypeSelector.java
index 930521977..1312615ab 100644
--- a/src/org/thoughtcrime/securesms/components/AttachmentTypeSelector.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/AttachmentTypeSelector.java
@@ -1,6 +1,5 @@
package org.thoughtcrime.securesms.components;
-import android.Manifest;
import android.animation.Animator;
import android.annotation.TargetApi;
import android.app.Activity;
@@ -96,10 +95,6 @@ public class AttachmentTypeSelector extends PopupWindow {
setLocationButtonImage(context);
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
- ViewUtil.findById(layout, R.id.location_linear_layout).setVisibility(View.INVISIBLE);
- }
-
setContentView(layout);
setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
setHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
diff --git a/src/org/thoughtcrime/securesms/components/AudioView.java b/src/main/java/org/thoughtcrime/securesms/components/AudioView.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/components/AudioView.java
rename to src/main/java/org/thoughtcrime/securesms/components/AudioView.java
index e99c19dcc..6c7bc406f 100644
--- a/src/org/thoughtcrime/securesms/components/AudioView.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/AudioView.java
@@ -12,7 +12,6 @@ import android.media.AudioManager;
import android.os.Build;
import android.util.AttributeSet;
import android.util.Log;
-import android.view.MotionEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
@@ -203,9 +202,7 @@ public class AudioView extends FrameLayout implements AudioSlidePlayer.Listener
this.seekBar.getProgressDrawable().setColorFilter(foregroundTint, PorterDuff.Mode.SRC_IN);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
- this.seekBar.getThumb().setColorFilter(foregroundTint, PorterDuff.Mode.SRC_IN);
- }
+ this.seekBar.getThumb().setColorFilter(foregroundTint, PorterDuff.Mode.SRC_IN);
}
public void getSeekBarGlobalVisibleRect(@NonNull Rect rect) {
diff --git a/src/org/thoughtcrime/securesms/components/AvatarImageView.java b/src/main/java/org/thoughtcrime/securesms/components/AvatarImageView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/AvatarImageView.java
rename to src/main/java/org/thoughtcrime/securesms/components/AvatarImageView.java
diff --git a/src/org/thoughtcrime/securesms/components/AvatarSelector.java b/src/main/java/org/thoughtcrime/securesms/components/AvatarSelector.java
similarity index 99%
rename from src/org/thoughtcrime/securesms/components/AvatarSelector.java
rename to src/main/java/org/thoughtcrime/securesms/components/AvatarSelector.java
index 89f6336e7..257009602 100644
--- a/src/org/thoughtcrime/securesms/components/AvatarSelector.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/AvatarSelector.java
@@ -1,6 +1,5 @@
package org.thoughtcrime.securesms.components;
-import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
diff --git a/src/org/thoughtcrime/securesms/components/AvatarView.java b/src/main/java/org/thoughtcrime/securesms/components/AvatarView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/AvatarView.java
rename to src/main/java/org/thoughtcrime/securesms/components/AvatarView.java
diff --git a/src/org/thoughtcrime/securesms/components/BorderlessImageView.java b/src/main/java/org/thoughtcrime/securesms/components/BorderlessImageView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/BorderlessImageView.java
rename to src/main/java/org/thoughtcrime/securesms/components/BorderlessImageView.java
diff --git a/src/org/thoughtcrime/securesms/components/CircleColorImageView.java b/src/main/java/org/thoughtcrime/securesms/components/CircleColorImageView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/CircleColorImageView.java
rename to src/main/java/org/thoughtcrime/securesms/components/CircleColorImageView.java
diff --git a/src/org/thoughtcrime/securesms/components/ComposeText.java b/src/main/java/org/thoughtcrime/securesms/components/ComposeText.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/ComposeText.java
rename to src/main/java/org/thoughtcrime/securesms/components/ComposeText.java
diff --git a/src/org/thoughtcrime/securesms/components/ContactFilterToolbar.java b/src/main/java/org/thoughtcrime/securesms/components/ContactFilterToolbar.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/ContactFilterToolbar.java
rename to src/main/java/org/thoughtcrime/securesms/components/ContactFilterToolbar.java
diff --git a/src/org/thoughtcrime/securesms/components/ControllableViewPager.java b/src/main/java/org/thoughtcrime/securesms/components/ControllableViewPager.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/ControllableViewPager.java
rename to src/main/java/org/thoughtcrime/securesms/components/ControllableViewPager.java
diff --git a/src/org/thoughtcrime/securesms/components/ConversationItemFooter.java b/src/main/java/org/thoughtcrime/securesms/components/ConversationItemFooter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/ConversationItemFooter.java
rename to src/main/java/org/thoughtcrime/securesms/components/ConversationItemFooter.java
diff --git a/src/org/thoughtcrime/securesms/components/ConversationItemThumbnail.java b/src/main/java/org/thoughtcrime/securesms/components/ConversationItemThumbnail.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/ConversationItemThumbnail.java
rename to src/main/java/org/thoughtcrime/securesms/components/ConversationItemThumbnail.java
diff --git a/src/org/thoughtcrime/securesms/components/CornerMask.java b/src/main/java/org/thoughtcrime/securesms/components/CornerMask.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/CornerMask.java
rename to src/main/java/org/thoughtcrime/securesms/components/CornerMask.java
diff --git a/src/org/thoughtcrime/securesms/components/CustomDefaultPreference.java b/src/main/java/org/thoughtcrime/securesms/components/CustomDefaultPreference.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/CustomDefaultPreference.java
rename to src/main/java/org/thoughtcrime/securesms/components/CustomDefaultPreference.java
diff --git a/src/org/thoughtcrime/securesms/components/DeliveryStatusView.java b/src/main/java/org/thoughtcrime/securesms/components/DeliveryStatusView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/DeliveryStatusView.java
rename to src/main/java/org/thoughtcrime/securesms/components/DeliveryStatusView.java
diff --git a/src/org/thoughtcrime/securesms/components/DocumentView.java b/src/main/java/org/thoughtcrime/securesms/components/DocumentView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/DocumentView.java
rename to src/main/java/org/thoughtcrime/securesms/components/DocumentView.java
diff --git a/src/org/thoughtcrime/securesms/components/FromTextView.java b/src/main/java/org/thoughtcrime/securesms/components/FromTextView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/FromTextView.java
rename to src/main/java/org/thoughtcrime/securesms/components/FromTextView.java
diff --git a/src/org/thoughtcrime/securesms/components/GlideDrawableListeningTarget.java b/src/main/java/org/thoughtcrime/securesms/components/GlideDrawableListeningTarget.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/GlideDrawableListeningTarget.java
rename to src/main/java/org/thoughtcrime/securesms/components/GlideDrawableListeningTarget.java
diff --git a/src/org/thoughtcrime/securesms/components/HidingLinearLayout.java b/src/main/java/org/thoughtcrime/securesms/components/HidingLinearLayout.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/HidingLinearLayout.java
rename to src/main/java/org/thoughtcrime/securesms/components/HidingLinearLayout.java
diff --git a/src/org/thoughtcrime/securesms/components/ImageDivet.java b/src/main/java/org/thoughtcrime/securesms/components/ImageDivet.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/ImageDivet.java
rename to src/main/java/org/thoughtcrime/securesms/components/ImageDivet.java
diff --git a/src/org/thoughtcrime/securesms/components/InputAwareLayout.java b/src/main/java/org/thoughtcrime/securesms/components/InputAwareLayout.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/InputAwareLayout.java
rename to src/main/java/org/thoughtcrime/securesms/components/InputAwareLayout.java
diff --git a/src/org/thoughtcrime/securesms/components/InputPanel.java b/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/components/InputPanel.java
rename to src/main/java/org/thoughtcrime/securesms/components/InputPanel.java
index a466a2b45..7b6d01065 100644
--- a/src/org/thoughtcrime/securesms/components/InputPanel.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java
@@ -106,11 +106,6 @@ public class InputPanel extends ConstraintLayout
this.recordLockCancel.setOnClickListener(v -> microphoneRecorderView.cancelAction());
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
- this.microphoneRecorderView.setVisibility(View.GONE);
- this.microphoneRecorderView.setClickable(false);
- }
-
if (Prefs.isSystemEmojiPreferred(getContext())) {
mediaKeyboard.setVisibility(View.GONE);
emojiVisible = false;
@@ -156,6 +151,10 @@ public class InputPanel extends ConstraintLayout
quoteAnimator.start();
}
+ public void clearQuoteWithoutAnimation() {
+ quoteView.dismiss();
+ }
+
public void clearQuote() {
if (quoteAnimator != null) {
quoteAnimator.cancel();
diff --git a/src/org/thoughtcrime/securesms/components/KeyboardAwareLinearLayout.java b/src/main/java/org/thoughtcrime/securesms/components/KeyboardAwareLinearLayout.java
similarity index 96%
rename from src/org/thoughtcrime/securesms/components/KeyboardAwareLinearLayout.java
rename to src/main/java/org/thoughtcrime/securesms/components/KeyboardAwareLinearLayout.java
index cefcf300b..9f47c8c5c 100644
--- a/src/org/thoughtcrime/securesms/components/KeyboardAwareLinearLayout.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/KeyboardAwareLinearLayout.java
@@ -65,7 +65,6 @@ public class KeyboardAwareLinearLayout extends LinearLayoutCompat {
private boolean keyboardOpen = false;
private int rotation = 0;
- private boolean isBubble = false;
private long openedAt = 0;
public KeyboardAwareLinearLayout(Context context) {
@@ -95,10 +94,6 @@ public class KeyboardAwareLinearLayout extends LinearLayoutCompat {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
- public void setIsBubble(boolean isBubble) {
- this.isBubble = isBubble;
- }
-
private void updateRotation() {
int oldRotation = rotation;
rotation = getDeviceRotation();
@@ -237,40 +232,23 @@ public class KeyboardAwareLinearLayout extends LinearLayoutCompat {
}
private int getKeyboardLandscapeHeight() {
- if (isBubble) {
- return getRootView().getHeight() - minCustomKeyboardTopMarginLandscapeBubble;
- }
-
int keyboardHeight = PreferenceManager.getDefaultSharedPreferences(getContext())
.getInt("keyboard_height_landscape", defaultCustomKeyboardSize);
return Util.clamp(keyboardHeight, minCustomKeyboardSize, getRootView().getHeight() - minCustomKeyboardTopMarginLandscape);
}
private int getKeyboardPortraitHeight() {
- if (isBubble) {
- int height = getRootView().getHeight();
- return height - (int)(height * 0.45);
- }
-
int keyboardHeight = PreferenceManager.getDefaultSharedPreferences(getContext())
.getInt("keyboard_height_portrait", defaultCustomKeyboardSize);
return Util.clamp(keyboardHeight, minCustomKeyboardSize, getRootView().getHeight() - minCustomKeyboardTopMarginPortrait);
}
private void setKeyboardPortraitHeight(int height) {
- if (isBubble) {
- return;
- }
-
PreferenceManager.getDefaultSharedPreferences(getContext())
.edit().putInt("keyboard_height_portrait", height).apply();
}
private void setKeyboardLandscapeHeight(int height) {
- if (isBubble) {
- return;
- }
-
PreferenceManager.getDefaultSharedPreferences(getContext())
.edit().putInt("keyboard_height_landscape", height).apply();
}
diff --git a/src/org/thoughtcrime/securesms/components/MediaView.java b/src/main/java/org/thoughtcrime/securesms/components/MediaView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/MediaView.java
rename to src/main/java/org/thoughtcrime/securesms/components/MediaView.java
diff --git a/src/org/thoughtcrime/securesms/components/MicrophoneRecorderView.java b/src/main/java/org/thoughtcrime/securesms/components/MicrophoneRecorderView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/MicrophoneRecorderView.java
rename to src/main/java/org/thoughtcrime/securesms/components/MicrophoneRecorderView.java
diff --git a/src/org/thoughtcrime/securesms/components/QuoteView.java b/src/main/java/org/thoughtcrime/securesms/components/QuoteView.java
similarity index 89%
rename from src/org/thoughtcrime/securesms/components/QuoteView.java
rename to src/main/java/org/thoughtcrime/securesms/components/QuoteView.java
index fa9d4f256..7ffdbf6cc 100644
--- a/src/org/thoughtcrime/securesms/components/QuoteView.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/QuoteView.java
@@ -7,6 +7,7 @@ import android.net.Uri;
import android.os.Build;
import android.text.TextUtils;
import android.util.AttributeSet;
+import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
@@ -20,11 +21,14 @@ import androidx.annotation.RequiresApi;
import com.annimon.stream.Stream;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcMsg;
+import com.b44t.messenger.rpc.RpcException;
+import com.b44t.messenger.rpc.VcardContact;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import org.json.JSONObject;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.attachments.Attachment;
+import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.mms.Slide;
@@ -185,7 +189,7 @@ public class QuoteView extends FrameLayout implements RecipientForeverObserver {
}
private void setQuoteAttachment(@NonNull GlideRequests glideRequests, @NonNull SlideDeck slideDeck) {
- List thumbnailSlides = Stream.of(slideDeck.getSlides()).filter(s -> s.hasImage() || s.hasVideo() || s.hasSticker() || s.isWebxdcDocument()).limit(1).toList();
+ List thumbnailSlides = Stream.of(slideDeck.getSlides()).filter(s -> s.hasImage() || s.hasVideo() || s.hasSticker() || s.isWebxdcDocument() || s.isVcard()).limit(1).toList();
List audioSlides = Stream.of(slideDeck.getSlides()).filter(s -> s.hasAudio()).limit(1).toList();
List documentSlides = Stream.of(attachments.getSlides()).filter(Slide::hasDocument).limit(1).toList();
@@ -206,7 +210,22 @@ public class QuoteView extends FrameLayout implements RecipientForeverObserver {
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.into(thumbnailView);
} catch (Exception e) {
- e.printStackTrace();
+ Log.e(TAG, "failed to get webxdc icon", e);
+ thumbnailView.setVisibility(GONE);
+ }
+ } else if (thumbnailSlides.get(0).isVcard()) {
+ try {
+ VcardContact vcardContact = DcHelper.getRpc(getContext()).parseVcard(quotedMsg.getFile()).get(0);
+ Recipient recipient = new Recipient(getContext(), vcardContact);
+ glideRequests.load(recipient.getContactPhoto(getContext()))
+ .error(recipient.getFallbackAvatarDrawable(getContext(), false))
+ .centerCrop()
+ .override(getContext().getResources().getDimensionPixelSize(R.dimen.quote_thumb_size))
+ .diskCacheStrategy(DiskCacheStrategy.NONE)
+ .into(thumbnailView);
+ } catch (RpcException e) {
+ Log.e(TAG, "failed to parse vCard", e);
+ thumbnailView.setVisibility(GONE);
}
} else {
Uri thumbnailUri = thumbnailSlides.get(0).getUri();
diff --git a/src/org/thoughtcrime/securesms/components/RecentPhotoViewRail.java b/src/main/java/org/thoughtcrime/securesms/components/RecentPhotoViewRail.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/RecentPhotoViewRail.java
rename to src/main/java/org/thoughtcrime/securesms/components/RecentPhotoViewRail.java
diff --git a/src/org/thoughtcrime/securesms/components/RemovableEditableMediaView.java b/src/main/java/org/thoughtcrime/securesms/components/RemovableEditableMediaView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/RemovableEditableMediaView.java
rename to src/main/java/org/thoughtcrime/securesms/components/RemovableEditableMediaView.java
diff --git a/src/org/thoughtcrime/securesms/components/RepeatableImageKey.java b/src/main/java/org/thoughtcrime/securesms/components/RepeatableImageKey.java
similarity index 81%
rename from src/org/thoughtcrime/securesms/components/RepeatableImageKey.java
rename to src/main/java/org/thoughtcrime/securesms/components/RepeatableImageKey.java
index 48e071c94..d0e545b9b 100644
--- a/src/org/thoughtcrime/securesms/components/RepeatableImageKey.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/RepeatableImageKey.java
@@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.components;
import android.annotation.TargetApi;
import android.content.Context;
-import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.util.AttributeSet;
import android.view.HapticFeedbackConstants;
@@ -58,13 +57,10 @@ public class RepeatableImageKey extends ImageButton {
}
private class Repeater implements Runnable {
- @TargetApi(VERSION_CODES.HONEYCOMB_MR1)
@Override
public void run() {
notifyListener();
- postDelayed(this, VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1
- ? ViewConfiguration.getKeyRepeatDelay()
- : 50);
+ postDelayed(this, ViewConfiguration.getKeyRepeatDelay());
}
}
@@ -75,14 +71,11 @@ public class RepeatableImageKey extends ImageButton {
this.repeater = new Repeater();
}
- @TargetApi(VERSION_CODES.HONEYCOMB_MR1)
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
- view.postDelayed(repeater, VERSION.SDK_INT >= VERSION_CODES.HONEYCOMB_MR1
- ? ViewConfiguration.getKeyRepeatTimeout()
- : ViewConfiguration.getLongPressTimeout());
+ view.postDelayed(repeater, ViewConfiguration.getKeyRepeatTimeout());
performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP);
return false;
case MotionEvent.ACTION_CANCEL:
diff --git a/src/org/thoughtcrime/securesms/components/ScaleStableImageView.java b/src/main/java/org/thoughtcrime/securesms/components/ScaleStableImageView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/ScaleStableImageView.java
rename to src/main/java/org/thoughtcrime/securesms/components/ScaleStableImageView.java
diff --git a/src/org/thoughtcrime/securesms/components/SearchToolbar.java b/src/main/java/org/thoughtcrime/securesms/components/SearchToolbar.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/SearchToolbar.java
rename to src/main/java/org/thoughtcrime/securesms/components/SearchToolbar.java
diff --git a/src/org/thoughtcrime/securesms/components/SendButton.java b/src/main/java/org/thoughtcrime/securesms/components/SendButton.java
similarity index 93%
rename from src/org/thoughtcrime/securesms/components/SendButton.java
rename to src/main/java/org/thoughtcrime/securesms/components/SendButton.java
index 6de464b80..1e7632064 100644
--- a/src/org/thoughtcrime/securesms/components/SendButton.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/SendButton.java
@@ -56,10 +56,6 @@ public class SendButton extends ImageButton
return transportOptionsPopup.get();
}
- public boolean isManualSelection() {
- return transportOptions.isManualSelection();
- }
-
public void addOnTransportChangedListener(OnTransportChangedListener listener) {
transportOptions.addOnTransportChangedListener(listener);
}
@@ -72,10 +68,6 @@ public class SendButton extends ImageButton
transportOptions.reset();
}
- public void disableTransport(TransportOption.Type type) {
- transportOptions.disableTransport(type);
- }
-
public void setDefaultTransport(TransportOption.Type type) {
transportOptions.setDefaultTransport(type);
}
diff --git a/src/org/thoughtcrime/securesms/components/ShapeScrim.java b/src/main/java/org/thoughtcrime/securesms/components/ShapeScrim.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/ShapeScrim.java
rename to src/main/java/org/thoughtcrime/securesms/components/ShapeScrim.java
diff --git a/src/org/thoughtcrime/securesms/components/SquareFrameLayout.java b/src/main/java/org/thoughtcrime/securesms/components/SquareFrameLayout.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/SquareFrameLayout.java
rename to src/main/java/org/thoughtcrime/securesms/components/SquareFrameLayout.java
diff --git a/src/org/thoughtcrime/securesms/components/SwitchPreferenceCompat.java b/src/main/java/org/thoughtcrime/securesms/components/SwitchPreferenceCompat.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/SwitchPreferenceCompat.java
rename to src/main/java/org/thoughtcrime/securesms/components/SwitchPreferenceCompat.java
diff --git a/src/org/thoughtcrime/securesms/components/ThumbnailView.java b/src/main/java/org/thoughtcrime/securesms/components/ThumbnailView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/ThumbnailView.java
rename to src/main/java/org/thoughtcrime/securesms/components/ThumbnailView.java
diff --git a/src/main/java/org/thoughtcrime/securesms/components/VcardView.java b/src/main/java/org/thoughtcrime/securesms/components/VcardView.java
new file mode 100644
index 000000000..36b8e84b5
--- /dev/null
+++ b/src/main/java/org/thoughtcrime/securesms/components/VcardView.java
@@ -0,0 +1,75 @@
+package org.thoughtcrime.securesms.components;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.b44t.messenger.rpc.Rpc;
+import com.b44t.messenger.rpc.RpcException;
+import com.b44t.messenger.rpc.VcardContact;
+
+import org.thoughtcrime.securesms.R;
+import org.thoughtcrime.securesms.mms.GlideRequests;
+import org.thoughtcrime.securesms.mms.SlideClickListener;
+import org.thoughtcrime.securesms.mms.VcardSlide;
+import org.thoughtcrime.securesms.recipients.Recipient;
+
+public class VcardView extends FrameLayout {
+ private static final String TAG = VcardView.class.getSimpleName();
+
+ private final @NonNull AvatarView avatar;
+ private final @NonNull TextView name;
+ private final @NonNull TextView address;
+
+ private @Nullable SlideClickListener viewListener;
+ private @Nullable VcardSlide slide;
+
+ public VcardView(Context context) {
+ this(context, null);
+ }
+
+ public VcardView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public VcardView(final Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+
+ inflate(context, R.layout.vcard_view, this);
+
+ this.avatar = findViewById(R.id.avatar);
+ this.name = findViewById(R.id.name);
+ this.address = findViewById(R.id.addr);
+
+ setOnClickListener(v -> {
+ if (viewListener != null && slide != null) {
+ viewListener.onClick(v, slide);
+ }
+ });
+ }
+
+ public void setVcardClickListener(@Nullable SlideClickListener listener) {
+ this.viewListener = listener;
+ }
+
+ public void setVcard(@NonNull GlideRequests glideRequests, final @NonNull VcardSlide slide, final @NonNull Rpc rpc) {
+ try {
+ VcardContact vcardContact = rpc.parseVcard(slide.asAttachment().getRealPath(getContext())).get(0);
+ name.setText(vcardContact.getDisplayName());
+ address.setText(vcardContact.getAddr());
+ avatar.setAvatar(glideRequests, new Recipient(getContext(), vcardContact), false);
+ this.slide = slide;
+ } catch (RpcException e) {
+ Log.e(TAG, "failed to parse vCard", e);
+ }
+ }
+
+ public String getDescription() {
+ return name.getText() + "\n" + address.getText();
+ }
+}
diff --git a/src/org/thoughtcrime/securesms/components/WebxdcView.java b/src/main/java/org/thoughtcrime/securesms/components/WebxdcView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/WebxdcView.java
rename to src/main/java/org/thoughtcrime/securesms/components/WebxdcView.java
diff --git a/src/org/thoughtcrime/securesms/components/ZoomingImageView.java b/src/main/java/org/thoughtcrime/securesms/components/ZoomingImageView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/ZoomingImageView.java
rename to src/main/java/org/thoughtcrime/securesms/components/ZoomingImageView.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/AnimatingImageSpan.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/AnimatingImageSpan.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/AnimatingImageSpan.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/AnimatingImageSpan.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/AsciiEmojiView.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/AsciiEmojiView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/AsciiEmojiView.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/AsciiEmojiView.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/CompositeEmojiPageModel.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/CompositeEmojiPageModel.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/CompositeEmojiPageModel.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/CompositeEmojiPageModel.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/Emoji.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/Emoji.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/Emoji.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/Emoji.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiEditText.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiFilter.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiFilter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiFilter.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiFilter.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiImageView.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiImageView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiImageView.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiImageView.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiKeyboardProvider.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiKeyboardProvider.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiKeyboardProvider.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiKeyboardProvider.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiPageModel.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageModel.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiPageModel.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageModel.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageView.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiPageViewGridAdapter.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageViewGridAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiPageViewGridAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPageViewGridAdapter.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiPages.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPages.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiPages.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiPages.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java
similarity index 96%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java
index cd9c112b4..4a3989026 100644
--- a/src/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiProvider.java
@@ -1,6 +1,5 @@
package org.thoughtcrime.securesms.components.emoji;
-import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -9,8 +8,7 @@ import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
-import android.os.Build.VERSION;
-import android.os.Build.VERSION_CODES;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.text.Spannable;
@@ -209,17 +207,15 @@ public class EmojiProvider {
paint);
}
- @TargetApi(VERSION_CODES.HONEYCOMB_MR1)
public void setBitmap(Bitmap bitmap) {
setBitmap(bitmap, false);
}
- @TargetApi(VERSION_CODES.HONEYCOMB_MR1)
public void setBitmap(Bitmap bitmap, boolean background) {
if (!background) {
Util.assertMainThread();
}
- if (VERSION.SDK_INT < VERSION_CODES.HONEYCOMB_MR1 || bmp == null || !bmp.sameAs(bitmap)) {
+ if (bmp == null || !bmp.sameAs(bitmap)) {
bmp = bitmap;
invalidateSelf();
}
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiSpan.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiSpan.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiSpan.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiSpan.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiStrings.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiStrings.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiStrings.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiStrings.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiTextView.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiToggle.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiToggle.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiToggle.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiToggle.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/EmojiVariationSelectorPopup.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiVariationSelectorPopup.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/EmojiVariationSelectorPopup.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiVariationSelectorPopup.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/MediaKeyboard.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/MediaKeyboard.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/MediaKeyboard.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/MediaKeyboard.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/MediaKeyboardBottomTabAdapter.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/MediaKeyboardBottomTabAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/MediaKeyboardBottomTabAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/MediaKeyboardBottomTabAdapter.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/MediaKeyboardProvider.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/MediaKeyboardProvider.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/MediaKeyboardProvider.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/MediaKeyboardProvider.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java
similarity index 92%
rename from src/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java
index 99be44d96..77b1b45b6 100644
--- a/src/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/emoji/RecentEmojiPageModel.java
@@ -102,13 +102,4 @@ public class RecentEmojiPageModel implements EmojiPageModel {
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
-
- private String[] toReversePrimitiveArray(@NonNull LinkedHashSet emojiSet) {
- String[] emojis = new String[emojiSet.size()];
- int i = emojiSet.size() - 1;
- for (String emoji : emojiSet) {
- emojis[i--] = emoji;
- }
- return emojis;
- }
}
diff --git a/src/org/thoughtcrime/securesms/components/emoji/StaticEmojiPageModel.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/StaticEmojiPageModel.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/StaticEmojiPageModel.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/StaticEmojiPageModel.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiDrawInfo.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiParser.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiParser.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiParser.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiParser.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiTree.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiTree.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/parsing/EmojiTree.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiTree.java
diff --git a/src/org/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick.java
rename to src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/Fitzpatrick.java
diff --git a/src/org/thoughtcrime/securesms/components/recyclerview/DeleteItemAnimator.java b/src/main/java/org/thoughtcrime/securesms/components/recyclerview/DeleteItemAnimator.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/recyclerview/DeleteItemAnimator.java
rename to src/main/java/org/thoughtcrime/securesms/components/recyclerview/DeleteItemAnimator.java
diff --git a/src/org/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton.java b/src/main/java/org/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton.java
rename to src/main/java/org/thoughtcrime/securesms/components/registration/PulsingFloatingActionButton.java
diff --git a/src/org/thoughtcrime/securesms/components/reminder/DozeReminder.java b/src/main/java/org/thoughtcrime/securesms/components/reminder/DozeReminder.java
similarity index 88%
rename from src/org/thoughtcrime/securesms/components/reminder/DozeReminder.java
rename to src/main/java/org/thoughtcrime/securesms/components/reminder/DozeReminder.java
index f9a57ca1d..e742806f7 100644
--- a/src/org/thoughtcrime/securesms/components/reminder/DozeReminder.java
+++ b/src/main/java/org/thoughtcrime/securesms/components/reminder/DozeReminder.java
@@ -18,8 +18,10 @@ import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcMsg;
+import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.connect.DcHelper;
+import org.thoughtcrime.securesms.notifications.FcmReceiveService;
import org.thoughtcrime.securesms.util.Prefs;
@SuppressLint("BatteryLife")
@@ -59,6 +61,10 @@ public class DozeReminder {
e.printStackTrace();
}
+ if (isPushAvailableAndSufficient()) {
+ return false;
+ }
+
return true; // yip, asking for disabling battery optimisations makes sense
}
@@ -104,8 +110,26 @@ public class DozeReminder {
}
}
+ private static boolean isAllChatmail() {
+ for (int accountId : ApplicationContext.dcAccounts.getAll()) {
+ DcContext context = ApplicationContext.dcAccounts.getAccount(accountId);
+ if (!context.isChatmail()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static boolean isPushAvailableAndSufficient() {
+ return isAllChatmail() && FcmReceiveService.getToken() != null;
+ }
+
public static void maybeAskDirectly(Context context) {
try {
+ if (isPushAvailableAndSufficient()) {
+ return;
+ }
+
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M
&& !Prefs.getBooleanPreference(context, Prefs.DOZE_ASKED_DIRECTLY, false)
&& ContextCompat.checkSelfPermission(context, Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) == PackageManager.PERMISSION_GRANTED
diff --git a/src/org/thoughtcrime/securesms/components/subsampling/AttachmentBitmapDecoder.java b/src/main/java/org/thoughtcrime/securesms/components/subsampling/AttachmentBitmapDecoder.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/subsampling/AttachmentBitmapDecoder.java
rename to src/main/java/org/thoughtcrime/securesms/components/subsampling/AttachmentBitmapDecoder.java
diff --git a/src/org/thoughtcrime/securesms/components/subsampling/AttachmentRegionDecoder.java b/src/main/java/org/thoughtcrime/securesms/components/subsampling/AttachmentRegionDecoder.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/subsampling/AttachmentRegionDecoder.java
rename to src/main/java/org/thoughtcrime/securesms/components/subsampling/AttachmentRegionDecoder.java
diff --git a/src/org/thoughtcrime/securesms/components/viewpager/ExtendedOnPageChangedListener.java b/src/main/java/org/thoughtcrime/securesms/components/viewpager/ExtendedOnPageChangedListener.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/viewpager/ExtendedOnPageChangedListener.java
rename to src/main/java/org/thoughtcrime/securesms/components/viewpager/ExtendedOnPageChangedListener.java
diff --git a/src/org/thoughtcrime/securesms/components/viewpager/HackyViewPager.java b/src/main/java/org/thoughtcrime/securesms/components/viewpager/HackyViewPager.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/components/viewpager/HackyViewPager.java
rename to src/main/java/org/thoughtcrime/securesms/components/viewpager/HackyViewPager.java
diff --git a/src/org/thoughtcrime/securesms/connect/AccountManager.java b/src/main/java/org/thoughtcrime/securesms/connect/AccountManager.java
similarity index 87%
rename from src/org/thoughtcrime/securesms/connect/AccountManager.java
rename to src/main/java/org/thoughtcrime/securesms/connect/AccountManager.java
index a149aeacf..7014cc0c3 100644
--- a/src/org/thoughtcrime/securesms/connect/AccountManager.java
+++ b/src/main/java/org/thoughtcrime/securesms/connect/AccountManager.java
@@ -16,6 +16,7 @@ import com.b44t.messenger.DcContext;
import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.ConversationListActivity;
+import org.thoughtcrime.securesms.InstantOnboardingActivity;
import org.thoughtcrime.securesms.WelcomeActivity;
import org.thoughtcrime.securesms.accounts.AccountSelectionListFragment;
import org.thoughtcrime.securesms.crypto.DatabaseSecret;
@@ -112,10 +113,14 @@ public class AccountManager {
if (lastAccountId == 0 || !accounts.getAccount(lastAccountId).isOk()) {
lastAccountId = accounts.getSelectedAccount().getAccountId();
}
- switchAccountAndStartActivity(activity, lastAccountId, null);
+ switchAccountAndStartActivity(activity, lastAccountId);
}
- public void switchAccountAndStartActivity(Activity activity, int destAccountId, @Nullable String qrAccount) {
+ public void switchAccountAndStartActivity(Activity activity, int destAccountId) {
+ switchAccountAndStartActivity(activity, destAccountId, null);
+ }
+
+ private void switchAccountAndStartActivity(Activity activity, int destAccountId, @Nullable String backupQr) {
if (destAccountId==0) {
beginAccountCreation(activity);
} else {
@@ -125,8 +130,8 @@ public class AccountManager {
activity.finishAffinity();
if (destAccountId==0) {
Intent intent = new Intent(activity, WelcomeActivity.class);
- if (qrAccount!=null) {
- intent.putExtra(WelcomeActivity.QR_ACCOUNT_EXTRA, qrAccount);
+ if (backupQr != null) {
+ intent.putExtra(WelcomeActivity.BACKUP_QR_EXTRA, backupQr);
}
activity.startActivity(intent);
} else {
@@ -164,6 +169,14 @@ public class AccountManager {
}
public void addAccountFromQr(Activity activity, String qr) {
- switchAccountAndStartActivity(activity, 0, qr);
+ beginAccountCreation(activity);
+ activity.finishAffinity();
+ Intent intent = new Intent(activity, InstantOnboardingActivity.class);
+ intent.putExtra(InstantOnboardingActivity.QR_ACCOUNT_EXTRA, qr);
+ activity.startActivity(intent);
+ }
+
+ public void addAccountFromSecondDevice(Activity activity, String backupQr) {
+ switchAccountAndStartActivity(activity, 0, backupQr);
}
}
diff --git a/src/org/thoughtcrime/securesms/connect/AttachmentsContentProvider.java b/src/main/java/org/thoughtcrime/securesms/connect/AttachmentsContentProvider.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/connect/AttachmentsContentProvider.java
rename to src/main/java/org/thoughtcrime/securesms/connect/AttachmentsContentProvider.java
diff --git a/src/org/thoughtcrime/securesms/connect/DcContactsLoader.java b/src/main/java/org/thoughtcrime/securesms/connect/DcContactsLoader.java
similarity index 83%
rename from src/org/thoughtcrime/securesms/connect/DcContactsLoader.java
rename to src/main/java/org/thoughtcrime/securesms/connect/DcContactsLoader.java
index 7fdd57f15..2ffddfde5 100644
--- a/src/org/thoughtcrime/securesms/connect/DcContactsLoader.java
+++ b/src/main/java/org/thoughtcrime/securesms/connect/DcContactsLoader.java
@@ -16,14 +16,16 @@ public class DcContactsLoader extends AsyncLoader {
private final int listflags;
private final String query;
+ private final boolean addScanQRLink;
private final boolean addCreateGroupLinks;
private final boolean addCreateContactLink;
private final boolean blockedContacts;
- public DcContactsLoader(Context context, int listflags, String query, boolean addCreateGroupLinks, boolean addCreateContactLink, boolean blockedContacts) {
+ public DcContactsLoader(Context context, int listflags, String query, boolean addCreateGroupLinks, boolean addCreateContactLink, boolean addScanQRLink, boolean blockedContacts) {
super(context);
this.listflags = listflags;
this.query = (query==null||query.isEmpty())? null : query;
+ this.addScanQRLink = addScanQRLink;
this.addCreateGroupLinks = addCreateGroupLinks;
this.addCreateContactLink= addCreateContactLink;
this.blockedContacts = blockedContacts;
@@ -40,7 +42,14 @@ public class DcContactsLoader extends AsyncLoader {
int[] contact_ids = dcContext.getContacts(listflags, query);
int[] additional_items = new int[0];
- if (addCreateContactLink) additional_items = Util.appendInt(additional_items, DcContact.DC_CONTACT_ID_NEW_CONTACT);
+ if (query == null && addScanQRLink)
+ {
+ additional_items = Util.appendInt(additional_items, DcContact.DC_CONTACT_ID_QR_INVITE);
+ }
+ if (addCreateContactLink && !dcContext.isChatmail())
+ {
+ additional_items = Util.appendInt(additional_items, DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT);
+ }
if (query == null && addCreateGroupLinks) {
additional_items = Util.appendInt(additional_items, DcContact.DC_CONTACT_ID_NEW_GROUP);
final boolean broadcastsEnabled = Prefs.isNewBroadcastListAvailable(getContext());
diff --git a/src/org/thoughtcrime/securesms/connect/DcEventCenter.java b/src/main/java/org/thoughtcrime/securesms/connect/DcEventCenter.java
similarity index 72%
rename from src/org/thoughtcrime/securesms/connect/DcEventCenter.java
rename to src/main/java/org/thoughtcrime/securesms/connect/DcEventCenter.java
index 3ca6a6a07..fe20ac10d 100644
--- a/src/org/thoughtcrime/securesms/connect/DcEventCenter.java
+++ b/src/main/java/org/thoughtcrime/securesms/connect/DcEventCenter.java
@@ -17,7 +17,8 @@ import java.util.ArrayList;
import java.util.Hashtable;
public class DcEventCenter {
- private @NonNull final Hashtable> allObservers = new Hashtable<>();
+ private @NonNull final Hashtable> currentAccountObservers = new Hashtable<>();
+ private @NonNull final Hashtable> multiAccountObservers = new Hashtable<>();
private final Object LOCK = new Object();
private final @NonNull ApplicationContext context;
@@ -33,10 +34,18 @@ public class DcEventCenter {
}
public void addObserver(int eventId, @NonNull DcEventDelegate observer) {
+ addObserver(currentAccountObservers, eventId, observer);
+ }
+
+ public void addMultiAccountObserver(int eventId, @NonNull DcEventDelegate observer) {
+ addObserver(multiAccountObservers, eventId, observer);
+ }
+
+ private void addObserver(Hashtable> observers, int eventId, @NonNull DcEventDelegate observer) {
synchronized (LOCK) {
- ArrayList idObservers = allObservers.get(eventId);
+ ArrayList idObservers = observers.get(eventId);
if (idObservers == null) {
- allObservers.put(eventId, (idObservers = new ArrayList<>()));
+ observers.put(eventId, (idObservers = new ArrayList<>()));
}
idObservers.add(observer);
}
@@ -44,7 +53,11 @@ public class DcEventCenter {
public void removeObserver(int eventId, DcEventDelegate observer) {
synchronized (LOCK) {
- ArrayList idObservers = allObservers.get(eventId);
+ ArrayList idObservers = currentAccountObservers.get(eventId);
+ if (idObservers != null) {
+ idObservers.remove(observer);
+ }
+ idObservers = multiAccountObservers.get(eventId);
if (idObservers != null) {
idObservers.remove(observer);
}
@@ -53,8 +66,14 @@ public class DcEventCenter {
public void removeObservers(DcEventDelegate observer) {
synchronized (LOCK) {
- for(Integer eventId : allObservers.keySet()) {
- ArrayList idObservers = allObservers.get(eventId);
+ for(Integer eventId : currentAccountObservers.keySet()) {
+ ArrayList idObservers = currentAccountObservers.get(eventId);
+ if (idObservers != null) {
+ idObservers.remove(observer);
+ }
+ }
+ for(Integer eventId : multiAccountObservers.keySet()) {
+ ArrayList idObservers = multiAccountObservers.get(eventId);
if (idObservers != null) {
idObservers.remove(observer);
}
@@ -62,9 +81,17 @@ public class DcEventCenter {
}
}
- public void sendToObservers(@NonNull DcEvent event) {
+ private void sendToMultiAccountObservers(@NonNull DcEvent event) {
+ sendToObservers(multiAccountObservers, event);
+ }
+
+ private void sendToCurrentAccountObservers(@NonNull DcEvent event) {
+ sendToObservers(currentAccountObservers, event);
+ }
+
+ private void sendToObservers(Hashtable> observers, @NonNull DcEvent event) {
synchronized (LOCK) {
- ArrayList idObservers = allObservers.get(event.getId());
+ ArrayList idObservers = observers.get(event.getId());
if (idObservers != null) {
for (DcEventDelegate observer : idObservers) {
// using try/catch blocks as under some circumstances eg. getContext() may return NULL -
@@ -139,6 +166,8 @@ public class DcEventCenter {
int accountId = event.getAccountId();
int id = event.getId();
+ sendToMultiAccountObservers(event);
+
switch (id) {
case DcContext.DC_EVENT_INCOMING_MSG:
DcHelper.getNotificationCenter(context).addNotification(accountId, event.getData1Int(), event.getData2Int());
@@ -149,7 +178,7 @@ public class DcEventCenter {
break;
case DcContext.DC_EVENT_IMEX_PROGRESS:
- sendToObservers(event);
+ sendToCurrentAccountObservers(event);
return 0;
}
@@ -174,18 +203,9 @@ public class DcEventCenter {
handleError(id, event.getData2Str());
break;
- case DcContext.DC_EVENT_INCOMING_MSG:
- sendToObservers(event);
+ default:
+ sendToCurrentAccountObservers(event);
break;
-
- case DcContext.DC_EVENT_MSGS_NOTICED:
- sendToObservers(event);
- break;
-
- default: {
- sendToObservers(event);
- }
- break;
}
if (id == DcContext.DC_EVENT_CHAT_MODIFIED) {
diff --git a/src/org/thoughtcrime/securesms/connect/DcHelper.java b/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java
similarity index 95%
rename from src/org/thoughtcrime/securesms/connect/DcHelper.java
rename to src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java
index df6a788bd..e454f81c4 100644
--- a/src/org/thoughtcrime/securesms/connect/DcHelper.java
+++ b/src/main/java/org/thoughtcrime/securesms/connect/DcHelper.java
@@ -79,6 +79,7 @@ public class DcHelper {
public static final String CONFIG_SOCKS5_USER = "socks5_user";
public static final String CONFIG_SOCKS5_PASSWORD = "socks5_password";
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";
public static DcContext getContext(@NonNull Context context) {
return ApplicationContext.getInstance(context).dcContext;
@@ -155,7 +156,6 @@ public class DcHelper {
dcContext.setStockTranslation(10, context.getString(R.string.video));
dcContext.setStockTranslation(11, context.getString(R.string.audio));
dcContext.setStockTranslation(12, context.getString(R.string.file));
- dcContext.setStockTranslation(13, context.getString(R.string.pref_default_status_text));
dcContext.setStockTranslation(23, context.getString(R.string.gif));
dcContext.setStockTranslation(24, context.getString(R.string.encrypted_message));
dcContext.setStockTranslation(29, context.getString(R.string.systemmsg_cannot_decrypt));
@@ -173,7 +173,7 @@ public class DcHelper {
dcContext.setStockTranslation(68, context.getString(R.string.device_talk));
dcContext.setStockTranslation(69, context.getString(R.string.saved_messages));
dcContext.setStockTranslation(70, context.getString(R.string.device_talk_explain));
- dcContext.setStockTranslation(71, context.getString(R.string.device_talk_welcome_message));
+ dcContext.setStockTranslation(71, context.getString(R.string.device_talk_welcome_message2));
dcContext.setStockTranslation(72, context.getString(R.string.systemmsg_unknown_sender_for_chat));
dcContext.setStockTranslation(73, context.getString(R.string.systemmsg_subject_for_new_contact));
dcContext.setStockTranslation(74, context.getString(R.string.systemmsg_failed_sending_to));
@@ -257,6 +257,12 @@ public class DcHelper {
dcContext.setStockTranslation(172, context.getString(R.string.chat_new_group_hint));
dcContext.setStockTranslation(173, context.getString(R.string.member_x_added));
+ dcContext.setStockTranslation(174, context.getString(R.string.invalid_unencrypted_tap_to_learn_more));
+ dcContext.setStockTranslation(176, context.getString(R.string.reaction_by_you));
+ dcContext.setStockTranslation(177, context.getString(R.string.reaction_by_other));
+ dcContext.setStockTranslation(190, context.getString(R.string.secure_join_wait));
+ dcContext.setStockTranslation(191, context.getString(R.string.secure_join_wait_timeout));
+ dcContext.setStockTranslation(200, context.getString(R.string.contact));
}
public static File getImexDir() {
@@ -471,6 +477,16 @@ public class DcHelper {
.show();
}
+ public static void showInvalidUnencryptedDialog(Context context) {
+ new AlertDialog.Builder(context)
+ .setMessage(context.getString(R.string.invalid_unencrypted_explanation))
+ .setNeutralButton(R.string.learn_more, (d, w) -> openHelp(context, "#howtoe2ee"))
+ .setNegativeButton(R.string.qrscan_title, (d, w) -> context.startActivity(new Intent(context, QrActivity.class)))
+ .setPositiveButton(R.string.ok, null)
+ .setCancelable(true)
+ .show();
+ }
+
public static void openHelp(Context context, String section) {
Intent intent = new Intent(context, LocalHelpActivity.class);
if (section != null) { intent.putExtra(LocalHelpActivity.SECTION_EXTRA, section); }
diff --git a/src/org/thoughtcrime/securesms/connect/DirectShareUtil.java b/src/main/java/org/thoughtcrime/securesms/connect/DirectShareUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/connect/DirectShareUtil.java
rename to src/main/java/org/thoughtcrime/securesms/connect/DirectShareUtil.java
diff --git a/src/org/thoughtcrime/securesms/connect/FetchWorker.java b/src/main/java/org/thoughtcrime/securesms/connect/FetchWorker.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/connect/FetchWorker.java
rename to src/main/java/org/thoughtcrime/securesms/connect/FetchWorker.java
diff --git a/src/org/thoughtcrime/securesms/connect/ForegroundDetector.java b/src/main/java/org/thoughtcrime/securesms/connect/ForegroundDetector.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/connect/ForegroundDetector.java
rename to src/main/java/org/thoughtcrime/securesms/connect/ForegroundDetector.java
diff --git a/src/org/thoughtcrime/securesms/connect/KeepAliveService.java b/src/main/java/org/thoughtcrime/securesms/connect/KeepAliveService.java
similarity index 97%
rename from src/org/thoughtcrime/securesms/connect/KeepAliveService.java
rename to src/main/java/org/thoughtcrime/securesms/connect/KeepAliveService.java
index ba816bf82..0d9b6b7cc 100644
--- a/src/org/thoughtcrime/securesms/connect/KeepAliveService.java
+++ b/src/main/java/org/thoughtcrime/securesms/connect/KeepAliveService.java
@@ -100,9 +100,7 @@ public class KeepAliveService extends Service {
builder.setContentTitle(getString(R.string.app_name));
builder.setContentText(getString(R.string.notify_background_connection_enabled));
- if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN ) {
- builder.setPriority(NotificationCompat.PRIORITY_MIN);
- }
+ builder.setPriority(NotificationCompat.PRIORITY_MIN);
builder.setWhen(0);
builder.setContentIntent(contentIntent);
builder.setSmallIcon(R.drawable.notification_permanent);
diff --git a/src/org/thoughtcrime/securesms/connect/NetworkStateReceiver.java b/src/main/java/org/thoughtcrime/securesms/connect/NetworkStateReceiver.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/connect/NetworkStateReceiver.java
rename to src/main/java/org/thoughtcrime/securesms/connect/NetworkStateReceiver.java
diff --git a/src/org/thoughtcrime/securesms/contacts/ContactAccessor.java b/src/main/java/org/thoughtcrime/securesms/contacts/ContactAccessor.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/contacts/ContactAccessor.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/ContactAccessor.java
diff --git a/src/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java b/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java
index cf7a24e4f..dda073439 100644
--- a/src/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java
+++ b/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java
@@ -271,13 +271,15 @@ public class ContactSelectionListAdapter extends RecyclerView.Adapter
String addr = null;
boolean itemMultiSelect = multiSelect;
- if (id == DcContact.DC_CONTACT_ID_NEW_CONTACT) {
- name = context.getString(R.string.menu_new_contact);
+ if (id == DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT) {
+ name = context.getString(R.string.menu_new_classic_contact);
itemMultiSelect = false; // the item creates a new contact in the list that will be selected instead
} else if (id == DcContact.DC_CONTACT_ID_NEW_GROUP) {
name = context.getString(R.string.menu_new_group);
} else if (id == DcContact.DC_CONTACT_ID_NEW_BROADCAST_LIST) {
name = context.getString(R.string.new_broadcast_list);
+ } else if (id == DcContact.DC_CONTACT_ID_QR_INVITE) {
+ name = context.getString(R.string.menu_new_contact);
} else {
dcContact = getContact(i);
name = dcContact.getDisplayName();
diff --git a/src/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java b/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java
similarity index 97%
rename from src/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java
index 6ef23e6c2..18f798449 100644
--- a/src/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java
+++ b/src/main/java/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java
@@ -64,7 +64,7 @@ public class ContactSelectionListItem extends LinearLayout implements RecipientM
this.name = name;
this.number = number;
- if (specialId==DcContact.DC_CONTACT_ID_NEW_CONTACT || specialId==DcContact.DC_CONTACT_ID_NEW_GROUP
+ if (specialId==DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT || specialId==DcContact.DC_CONTACT_ID_NEW_GROUP
|| specialId==DcContact.DC_CONTACT_ID_NEW_BROADCAST_LIST
|| specialId==DcContact.DC_CONTACT_ID_ADD_MEMBER || specialId==DcContact.DC_CONTACT_ID_QR_INVITE) {
this.recipient = null;
diff --git a/src/org/thoughtcrime/securesms/contacts/NewContactActivity.java b/src/main/java/org/thoughtcrime/securesms/contacts/NewContactActivity.java
similarity index 94%
rename from src/org/thoughtcrime/securesms/contacts/NewContactActivity.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/NewContactActivity.java
index f895b8efb..361425136 100644
--- a/src/org/thoughtcrime/securesms/contacts/NewContactActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/contacts/NewContactActivity.java
@@ -40,16 +40,13 @@ public class NewContactActivity extends PassphraseRequiredActionBarActivity
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
- actionBar.setTitle(R.string.menu_new_contact);
+ actionBar.setTitle(R.string.menu_new_classic_contact);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
}
nameInput = ViewUtil.findById(this, R.id.name_text);
addrInput = ViewUtil.findById(this, R.id.email_text);
- Button qrscanBtn = ViewUtil.findById(this, R.id.qrscan_btn);
-
- qrscanBtn.setOnClickListener((view) -> new IntentIntegrator(this).setCaptureActivity(QrActivity.class).initiateScan());
addrInput.setText(getIntent().getStringExtra(ADDR_EXTRA));
addrInput.setOnFocusChangeListener((view, focused) -> {
String addr = addrInput.getText() == null? "" : addrInput.getText().toString();
diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/ContactPhoto.java b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/ContactPhoto.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/contacts/avatars/ContactPhoto.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/avatars/ContactPhoto.java
diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/FallbackContactPhoto.java b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/FallbackContactPhoto.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/contacts/avatars/FallbackContactPhoto.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/avatars/FallbackContactPhoto.java
diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java
similarity index 72%
rename from src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java
index d9e50f40f..07888ff3f 100644
--- a/src/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java
+++ b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/GeneratedContactPhoto.java
@@ -24,17 +24,21 @@ public class GeneratedContactPhoto implements FallbackContactPhoto {
@Override
public Drawable asDrawable(Context context, int color) {
+ return asDrawable(context, color, true);
+ }
+
+ public Drawable asDrawable(Context context, int color, boolean roundShape) {
int targetSize = context.getResources().getDimensionPixelSize(R.dimen.contact_photo_target_size);
- return TextDrawable.builder()
- .beginConfig()
- .width(targetSize)
- .height(targetSize)
- .textColor(Color.WHITE)
- .bold()
- .toUpperCase()
- .endConfig()
- .buildRound(getCharacter(name), color);
+ TextDrawable.IShapeBuilder builder = TextDrawable.builder()
+ .beginConfig()
+ .width(targetSize)
+ .height(targetSize)
+ .textColor(Color.WHITE)
+ .bold()
+ .toUpperCase()
+ .endConfig();
+ return roundShape? builder.buildRound(getCharacter(name), color) : builder.buildRect(getCharacter(name), color);
}
private String getCharacter(String name) {
diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/GroupRecordContactPhoto.java b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/GroupRecordContactPhoto.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/contacts/avatars/GroupRecordContactPhoto.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/avatars/GroupRecordContactPhoto.java
diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/LocalFileContactPhoto.java b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/LocalFileContactPhoto.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/contacts/avatars/LocalFileContactPhoto.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/avatars/LocalFileContactPhoto.java
diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/MyProfileContactPhoto.java b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/MyProfileContactPhoto.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/contacts/avatars/MyProfileContactPhoto.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/avatars/MyProfileContactPhoto.java
diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/ProfileContactPhoto.java b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/ProfileContactPhoto.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/contacts/avatars/ProfileContactPhoto.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/avatars/ProfileContactPhoto.java
diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/ResourceContactPhoto.java b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/ResourceContactPhoto.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/contacts/avatars/ResourceContactPhoto.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/avatars/ResourceContactPhoto.java
diff --git a/src/org/thoughtcrime/securesms/contacts/avatars/SystemContactPhoto.java b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/SystemContactPhoto.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/contacts/avatars/SystemContactPhoto.java
rename to src/main/java/org/thoughtcrime/securesms/contacts/avatars/SystemContactPhoto.java
diff --git a/src/main/java/org/thoughtcrime/securesms/contacts/avatars/VcardContactPhoto.java b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/VcardContactPhoto.java
new file mode 100644
index 000000000..36fac9f10
--- /dev/null
+++ b/src/main/java/org/thoughtcrime/securesms/contacts/avatars/VcardContactPhoto.java
@@ -0,0 +1,45 @@
+package org.thoughtcrime.securesms.contacts.avatars;
+
+import android.content.Context;
+import android.net.Uri;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.b44t.messenger.rpc.VcardContact;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.ByteBuffer;
+import java.security.MessageDigest;
+
+public class VcardContactPhoto implements ContactPhoto {
+ private final VcardContact vContact;
+
+ public VcardContactPhoto(VcardContact vContact) {
+ this.vContact = vContact;
+ }
+
+ @Override
+ public InputStream openInputStream(Context context) throws IOException {
+ byte[] blob = vContact.getProfileImage();
+ return (blob == null)? null : new ByteArrayInputStream(blob);
+ }
+
+ @Override
+ public @Nullable Uri getUri(@NonNull Context context) {
+ return null;
+ }
+
+ @Override
+ public boolean isProfilePhoto() {
+ return true;
+ }
+
+ @Override
+ public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {
+ messageDigest.update(vContact.getAddr().getBytes());
+ messageDigest.update(ByteBuffer.allocate(4).putFloat(vContact.getTimestamp()).array());
+ }
+}
diff --git a/src/org/thoughtcrime/securesms/crypto/DatabaseSecret.java b/src/main/java/org/thoughtcrime/securesms/crypto/DatabaseSecret.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/crypto/DatabaseSecret.java
rename to src/main/java/org/thoughtcrime/securesms/crypto/DatabaseSecret.java
diff --git a/src/org/thoughtcrime/securesms/crypto/DatabaseSecretProvider.java b/src/main/java/org/thoughtcrime/securesms/crypto/DatabaseSecretProvider.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/crypto/DatabaseSecretProvider.java
rename to src/main/java/org/thoughtcrime/securesms/crypto/DatabaseSecretProvider.java
diff --git a/src/org/thoughtcrime/securesms/crypto/KeyStoreHelper.java b/src/main/java/org/thoughtcrime/securesms/crypto/KeyStoreHelper.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/crypto/KeyStoreHelper.java
rename to src/main/java/org/thoughtcrime/securesms/crypto/KeyStoreHelper.java
diff --git a/src/org/thoughtcrime/securesms/crypto/PRNGFixes.java b/src/main/java/org/thoughtcrime/securesms/crypto/PRNGFixes.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/crypto/PRNGFixes.java
rename to src/main/java/org/thoughtcrime/securesms/crypto/PRNGFixes.java
diff --git a/src/org/thoughtcrime/securesms/database/Address.java b/src/main/java/org/thoughtcrime/securesms/database/Address.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/database/Address.java
rename to src/main/java/org/thoughtcrime/securesms/database/Address.java
diff --git a/src/org/thoughtcrime/securesms/database/AttachmentDatabase.java b/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/database/AttachmentDatabase.java
rename to src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java
diff --git a/src/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java b/src/main/java/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/database/CursorRecyclerViewAdapter.java
diff --git a/src/org/thoughtcrime/securesms/database/loaders/BucketedThreadMediaLoader.java b/src/main/java/org/thoughtcrime/securesms/database/loaders/BucketedThreadMediaLoader.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/database/loaders/BucketedThreadMediaLoader.java
rename to src/main/java/org/thoughtcrime/securesms/database/loaders/BucketedThreadMediaLoader.java
diff --git a/src/org/thoughtcrime/securesms/database/loaders/PagingMediaLoader.java b/src/main/java/org/thoughtcrime/securesms/database/loaders/PagingMediaLoader.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/database/loaders/PagingMediaLoader.java
rename to src/main/java/org/thoughtcrime/securesms/database/loaders/PagingMediaLoader.java
diff --git a/src/org/thoughtcrime/securesms/database/loaders/RecentPhotosLoader.java b/src/main/java/org/thoughtcrime/securesms/database/loaders/RecentPhotosLoader.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/database/loaders/RecentPhotosLoader.java
rename to src/main/java/org/thoughtcrime/securesms/database/loaders/RecentPhotosLoader.java
index b9dd34c74..ebbdad799 100644
--- a/src/org/thoughtcrime/securesms/database/loaders/RecentPhotosLoader.java
+++ b/src/main/java/org/thoughtcrime/securesms/database/loaders/RecentPhotosLoader.java
@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.database.loaders;
-import android.Manifest;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
diff --git a/src/org/thoughtcrime/securesms/database/model/ThreadRecord.java b/src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/database/model/ThreadRecord.java
rename to src/main/java/org/thoughtcrime/securesms/database/model/ThreadRecord.java
diff --git a/src/main/java/org/thoughtcrime/securesms/geolocation/DcLocation.java b/src/main/java/org/thoughtcrime/securesms/geolocation/DcLocation.java
new file mode 100644
index 000000000..50915a69b
--- /dev/null
+++ b/src/main/java/org/thoughtcrime/securesms/geolocation/DcLocation.java
@@ -0,0 +1,131 @@
+package org.thoughtcrime.securesms.geolocation;
+
+import android.location.Location;
+import android.util.Log;
+
+import java.util.Observable;
+
+public class DcLocation extends Observable {
+ private static final String TAG = DcLocation.class.getSimpleName();
+ private Location lastLocation;
+ private static DcLocation instance;
+ private static final int TIMEOUT = 1000 * 15;
+ private static final int EARTH_RADIUS = 6371;
+
+ private DcLocation() {
+ lastLocation = getDefault();
+ }
+
+ public static DcLocation getInstance() {
+ if (instance == null) {
+ instance = new DcLocation();
+ }
+ return instance;
+ }
+
+ public Location getLastLocation() {
+ return lastLocation;
+ }
+
+
+ public boolean isValid() {
+ return !lastLocation.getProvider().equals("?");
+ }
+
+ void updateLocation(Location location) {
+ if (isBetterLocation(location, lastLocation)) {
+ lastLocation = location;
+
+ instance.setChanged();
+ instance.notifyObservers();
+ }
+ }
+
+ void reset() {
+ updateLocation(getDefault());
+
+ }
+
+ private Location getDefault() {
+ Location location = new Location("?");
+ return location;
+ }
+
+ /** https://developer.android.com/guide/topics/location/strategies
+ * Determines whether one Location reading is better than the current Location fix
+ * @param location The new Location that you want to evaluate
+ * @param currentBestLocation The current Location fix, to which you want to compare the new one
+ */
+ private boolean isBetterLocation(Location location, Location currentBestLocation) {
+ if (currentBestLocation == null) {
+ // A new location is always better than no location
+ return true;
+ }
+
+ // Check whether the new location fix is newer or older
+ long timeDelta = location.getTime() - currentBestLocation.getTime();
+ boolean isSignificantlyOlder = timeDelta < -TIMEOUT;
+
+ if (isSignificantlyOlder) {
+ return false;
+ }
+
+ // Check whether the new location fix is more or less accurate
+ int accuracyDelta = (int) (location.getAccuracy() - currentBestLocation.getAccuracy());
+ Log.d(TAG, "accuracyDelta: " + accuracyDelta);
+ boolean isSignificantlyMoreAccurate = accuracyDelta > 50;
+ boolean isSameProvider = isSameProvider(location.getProvider(), currentBestLocation.getProvider());
+
+ if (isSignificantlyMoreAccurate && isSameProvider) {
+ return true;
+ }
+
+ boolean isMoreAccurate = accuracyDelta > 0;
+ double distance = distance(location, currentBestLocation);
+ return hasLocationChanged(distance) && isMoreAccurate ||
+ hasLocationSignificantlyChanged(distance);
+
+ }
+
+ private boolean hasLocationSignificantlyChanged(double distance) {
+ return distance > 30D;
+ }
+
+ private boolean hasLocationChanged(double distance) {
+ return distance > 10D;
+ }
+
+ private double distance(Location location, Location currentBestLocation) {
+
+ double startLat = location.getLatitude();
+ double startLong = location.getLongitude();
+ double endLat = currentBestLocation.getLatitude();
+ double endLong = currentBestLocation.getLongitude();
+
+ double dLat = Math.toRadians(endLat - startLat);
+ double dLong = Math.toRadians(endLong - startLong);
+
+ startLat = Math.toRadians(startLat);
+ endLat = Math.toRadians(endLat);
+
+ double a = haversin(dLat) + Math.cos(startLat) * Math.cos(endLat) * haversin(dLong);
+ double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
+
+ double distance = EARTH_RADIUS * c * 1000;
+ Log.d(TAG, "Distance between location updates: " + distance);
+ return distance;
+ }
+
+ private double haversin(double val) {
+ return Math.pow(Math.sin(val / 2), 2);
+ }
+
+ /** Checks whether two providers are the same */
+ private boolean isSameProvider(String provider1, String provider2) {
+ if (provider1 == null) {
+ return provider2 == null;
+ }
+ return provider1.equals(provider2);
+ }
+
+}
diff --git a/src/org/thoughtcrime/securesms/geolocation/DcLocationManager.java b/src/main/java/org/thoughtcrime/securesms/geolocation/DcLocationManager.java
similarity index 96%
rename from src/org/thoughtcrime/securesms/geolocation/DcLocationManager.java
rename to src/main/java/org/thoughtcrime/securesms/geolocation/DcLocationManager.java
index 675faf6ff..2baec0d99 100644
--- a/src/org/thoughtcrime/securesms/geolocation/DcLocationManager.java
+++ b/src/main/java/org/thoughtcrime/securesms/geolocation/DcLocationManager.java
@@ -16,10 +16,6 @@ import java.util.Observer;
import static android.content.Context.BIND_AUTO_CREATE;
-/**
- * Created by cyberta on 06.03.19.
- */
-
public class DcLocationManager implements Observer {
private static final String TAG = DcLocationManager.class.getSimpleName();
@@ -79,6 +75,9 @@ public class DcLocationManager implements Observer {
startLocationEngine();
Log.d(TAG, String.format("Share location in chat %d for %d seconds", chatId, duration));
DcHelper.getContext(context).sendLocationsToChat(chatId, duration);
+ if (dcLocation.isValid()) {
+ writeDcLocationUpdateMessage();
+ }
}
public void shareLastLocation(int chatId) {
@@ -94,11 +93,6 @@ public class DcLocationManager implements Observer {
}
}
- public void deleteAllLocations() {
- DcHelper.getContext(context).deleteAllLocations();
- }
-
-
@Override
public void update(Observable o, Object arg) {
if (o instanceof DcLocation) {
diff --git a/src/org/thoughtcrime/securesms/geolocation/LocationBackgroundService.java b/src/main/java/org/thoughtcrime/securesms/geolocation/LocationBackgroundService.java
similarity index 54%
rename from src/org/thoughtcrime/securesms/geolocation/LocationBackgroundService.java
rename to src/main/java/org/thoughtcrime/securesms/geolocation/LocationBackgroundService.java
index 09446dec9..05ae2409e 100644
--- a/src/org/thoughtcrime/securesms/geolocation/LocationBackgroundService.java
+++ b/src/main/java/org/thoughtcrime/securesms/geolocation/LocationBackgroundService.java
@@ -12,13 +12,8 @@ import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
-/**
- * Created by cyberta on 06.03.19.
- */
-
public class LocationBackgroundService extends Service {
- private static final int TIMEOUT = 1000 * 15;
private static final int INITIAL_TIMEOUT = 1000 * 60 * 2;
private static final String TAG = LocationBackgroundService.class.getSimpleName();
private LocationManager locationManager = null;
@@ -47,6 +42,13 @@ public class LocationBackgroundService extends Service {
}
locationListener = new ServiceLocationListener();
+ Location lastLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
+ if (lastLocation != null) {
+ long locationAge = System.currentTimeMillis() - lastLocation.getTime();
+ if (locationAge <= 600 * 1000) { // not older than 10 minutes
+ DcLocation.getInstance().updateLocation(lastLocation);
+ }
+ }
//requestLocationUpdate(LocationManager.NETWORK_PROVIDER);
requestLocationUpdate(LocationManager.GPS_PROVIDER);
initialLocationUpdate();
@@ -107,7 +109,6 @@ public class LocationBackgroundService extends Service {
}
private class ServiceLocationListener implements LocationListener {
- private static final int EARTH_RADIUS = 6371;
@Override
public void onLocationChanged(Location location) {
@@ -115,9 +116,7 @@ public class LocationBackgroundService extends Service {
if (location == null) {
return;
}
- if (isBetterLocation(location, DcLocation.getInstance().getLastLocation())) {
- DcLocation.getInstance().updateLocation(location);
- }
+ DcLocation.getInstance().updateLocation(location);
}
@Override
@@ -134,84 +133,6 @@ public class LocationBackgroundService extends Service {
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.e(TAG, "onStatusChanged: " + provider + " status: " + status);
}
-
-
- /** https://developer.android.com/guide/topics/location/strategies
- * Determines whether one Location reading is better than the current Location fix
- * @param location The new Location that you want to evaluate
- * @param currentBestLocation The current Location fix, to which you want to compare the new one
- */
- private boolean isBetterLocation(Location location, Location currentBestLocation) {
- if (currentBestLocation == null) {
- // A new location is always better than no location
- return true;
- }
-
- // Check whether the new location fix is newer or older
- long timeDelta = location.getTime() - currentBestLocation.getTime();
- boolean isSignificantlyOlder = timeDelta < -TIMEOUT;
-
- if (isSignificantlyOlder) {
- return false;
- }
-
- // Check whether the new location fix is more or less accurate
- int accuracyDelta = (int) (location.getAccuracy() - currentBestLocation.getAccuracy());
- Log.d(TAG, "accuracyDelta: " + accuracyDelta);
- boolean isSignificantlyMoreAccurate = accuracyDelta > 50;
- boolean isSameProvider = isSameProvider(location.getProvider(), currentBestLocation.getProvider());
-
- if (isSignificantlyMoreAccurate && isSameProvider) {
- return true;
- }
-
- boolean isMoreAccurate = accuracyDelta > 0;
- double distance = distance(location, currentBestLocation);
- return hasLocationChanged(distance) && isMoreAccurate ||
- hasLocationSignificantlyChanged(distance);
-
- }
-
- private boolean hasLocationSignificantlyChanged(double distance) {
- return distance > 30D;
- }
-
- private boolean hasLocationChanged(double distance) {
- return distance > 10D;
- }
-
- private double distance(Location location, Location currentBestLocation) {
-
- double startLat = location.getLatitude();
- double startLong = location.getLongitude();
- double endLat = currentBestLocation.getLatitude();
- double endLong = currentBestLocation.getLongitude();
-
- double dLat = Math.toRadians(endLat - startLat);
- double dLong = Math.toRadians(endLong - startLong);
-
- startLat = Math.toRadians(startLat);
- endLat = Math.toRadians(endLat);
-
- double a = haversin(dLat) + Math.cos(startLat) * Math.cos(endLat) * haversin(dLong);
- double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
-
- double distance = EARTH_RADIUS * c * 1000;
- Log.d(TAG, "Distance between location updates: " + distance);
- return distance;
- }
-
- private double haversin(double val) {
- return Math.pow(Math.sin(val / 2), 2);
- }
-
- /** Checks whether two providers are the same */
- private boolean isSameProvider(String provider1, String provider2) {
- if (provider1 == null) {
- return provider2 == null;
- }
- return provider1.equals(provider2);
- }
}
}
diff --git a/src/org/thoughtcrime/securesms/glide/ContactPhotoFetcher.java b/src/main/java/org/thoughtcrime/securesms/glide/ContactPhotoFetcher.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/glide/ContactPhotoFetcher.java
rename to src/main/java/org/thoughtcrime/securesms/glide/ContactPhotoFetcher.java
diff --git a/src/org/thoughtcrime/securesms/glide/ContactPhotoLoader.java b/src/main/java/org/thoughtcrime/securesms/glide/ContactPhotoLoader.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/glide/ContactPhotoLoader.java
rename to src/main/java/org/thoughtcrime/securesms/glide/ContactPhotoLoader.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/Bounds.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/Bounds.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/Bounds.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/Bounds.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/CanvasMatrix.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/CanvasMatrix.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/CanvasMatrix.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/CanvasMatrix.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/ColorableRenderer.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/ColorableRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/ColorableRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/ColorableRenderer.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/DrawingSession.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/DrawingSession.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/DrawingSession.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/DrawingSession.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/EditSession.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/EditSession.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/EditSession.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/EditSession.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/ElementDragEditSession.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/ElementDragEditSession.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/ElementDragEditSession.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/ElementDragEditSession.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/ElementEditSession.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/ElementEditSession.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/ElementEditSession.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/ElementEditSession.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/ElementScaleEditSession.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/ElementScaleEditSession.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/ElementScaleEditSession.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/ElementScaleEditSession.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/HiddenEditText.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/HiddenEditText.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/HiddenEditText.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/HiddenEditText.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/ImageEditorMediaConstraints.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/ImageEditorMediaConstraints.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/ImageEditorMediaConstraints.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/ImageEditorMediaConstraints.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/ImageEditorView.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/ImageEditorView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/ImageEditorView.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/ImageEditorView.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/Renderer.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/Renderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/Renderer.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/Renderer.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/RendererContext.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/RendererContext.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/RendererContext.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/RendererContext.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/ThumbDragEditSession.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/ThumbDragEditSession.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/ThumbDragEditSession.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/ThumbDragEditSession.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/UndoRedoStackListener.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/UndoRedoStackListener.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/UndoRedoStackListener.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/UndoRedoStackListener.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/AlphaAnimation.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/AlphaAnimation.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/AlphaAnimation.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/AlphaAnimation.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/AnimationMatrix.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/AnimationMatrix.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/AnimationMatrix.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/AnimationMatrix.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/Bisect.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/Bisect.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/Bisect.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/Bisect.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/CropThumbRenderer.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/CropThumbRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/CropThumbRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/CropThumbRenderer.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/EditorElement.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/EditorElement.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/EditorElement.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/EditorElement.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/EditorElementHierarchy.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/EditorElementHierarchy.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/EditorElementHierarchy.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/EditorElementHierarchy.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/EditorFlags.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/EditorFlags.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/EditorFlags.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/EditorFlags.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/EditorModel.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/EditorModel.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/EditorModel.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/EditorModel.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/ElementStack.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/ElementStack.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/ElementStack.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/ElementStack.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/InBoundsMemory.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/InBoundsMemory.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/InBoundsMemory.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/InBoundsMemory.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/ParcelUtils.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/ParcelUtils.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/ParcelUtils.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/ParcelUtils.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/ThumbRenderer.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/ThumbRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/ThumbRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/ThumbRenderer.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/model/UndoRedoStacks.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/model/UndoRedoStacks.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/model/UndoRedoStacks.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/model/UndoRedoStacks.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/renderers/AutomaticControlPointBezierLine.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/AutomaticControlPointBezierLine.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/renderers/AutomaticControlPointBezierLine.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/AutomaticControlPointBezierLine.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/renderers/BezierDrawingRenderer.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/BezierDrawingRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/renderers/BezierDrawingRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/BezierDrawingRenderer.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/renderers/CropAreaRenderer.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/CropAreaRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/renderers/CropAreaRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/CropAreaRenderer.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/renderers/InvalidateableRenderer.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/InvalidateableRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/renderers/InvalidateableRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/InvalidateableRenderer.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/renderers/InverseFillRenderer.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/InverseFillRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/renderers/InverseFillRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/InverseFillRenderer.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/renderers/MultiLineTextRenderer.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/MultiLineTextRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/renderers/MultiLineTextRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/MultiLineTextRenderer.java
diff --git a/src/org/thoughtcrime/securesms/imageeditor/renderers/OvalGuideRenderer.java b/src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/OvalGuideRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/imageeditor/renderers/OvalGuideRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/imageeditor/renderers/OvalGuideRenderer.java
diff --git a/src/org/thoughtcrime/securesms/jobmanager/Job.java b/src/main/java/org/thoughtcrime/securesms/jobmanager/Job.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/jobmanager/Job.java
rename to src/main/java/org/thoughtcrime/securesms/jobmanager/Job.java
diff --git a/src/org/thoughtcrime/securesms/jobmanager/JobConsumer.java b/src/main/java/org/thoughtcrime/securesms/jobmanager/JobConsumer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/jobmanager/JobConsumer.java
rename to src/main/java/org/thoughtcrime/securesms/jobmanager/JobConsumer.java
diff --git a/src/org/thoughtcrime/securesms/jobmanager/JobManager.java b/src/main/java/org/thoughtcrime/securesms/jobmanager/JobManager.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/jobmanager/JobManager.java
rename to src/main/java/org/thoughtcrime/securesms/jobmanager/JobManager.java
diff --git a/src/org/thoughtcrime/securesms/jobmanager/JobParameters.java b/src/main/java/org/thoughtcrime/securesms/jobmanager/JobParameters.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/jobmanager/JobParameters.java
rename to src/main/java/org/thoughtcrime/securesms/jobmanager/JobParameters.java
diff --git a/src/org/thoughtcrime/securesms/jobmanager/JobQueue.java b/src/main/java/org/thoughtcrime/securesms/jobmanager/JobQueue.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/jobmanager/JobQueue.java
rename to src/main/java/org/thoughtcrime/securesms/jobmanager/JobQueue.java
diff --git a/src/org/thoughtcrime/securesms/jobmanager/requirements/Requirement.java b/src/main/java/org/thoughtcrime/securesms/jobmanager/requirements/Requirement.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/jobmanager/requirements/Requirement.java
rename to src/main/java/org/thoughtcrime/securesms/jobmanager/requirements/Requirement.java
diff --git a/src/org/thoughtcrime/securesms/messagerequests/MessageRequestsBottomView.java b/src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestsBottomView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/messagerequests/MessageRequestsBottomView.java
rename to src/main/java/org/thoughtcrime/securesms/messagerequests/MessageRequestsBottomView.java
diff --git a/src/org/thoughtcrime/securesms/mms/AttachmentManager.java b/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java
similarity index 96%
rename from src/org/thoughtcrime/securesms/mms/AttachmentManager.java
rename to src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java
index 135d67823..eedc1dcff 100644
--- a/src/org/thoughtcrime/securesms/mms/AttachmentManager.java
+++ b/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java
@@ -41,12 +41,12 @@ import androidx.appcompat.app.AlertDialog;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcMsg;
+import com.b44t.messenger.rpc.RpcException;
import com.b44t.messenger.util.concurrent.ListenableFuture;
import com.b44t.messenger.util.concurrent.ListenableFuture.Listener;
import com.b44t.messenger.util.concurrent.SettableFuture;
import org.thoughtcrime.securesms.ApplicationContext;
-import org.thoughtcrime.securesms.ConversationActivity;
import org.thoughtcrime.securesms.MediaPreviewActivity;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.ShareLocationDialog;
@@ -58,6 +58,7 @@ import org.thoughtcrime.securesms.components.AudioView;
import org.thoughtcrime.securesms.components.DocumentView;
import org.thoughtcrime.securesms.components.RemovableEditableMediaView;
import org.thoughtcrime.securesms.components.ThumbnailView;
+import org.thoughtcrime.securesms.components.VcardView;
import org.thoughtcrime.securesms.components.WebxdcView;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.database.AttachmentDatabase;
@@ -93,6 +94,7 @@ public class AttachmentManager {
private AudioView audioView;
private DocumentView documentView;
private WebxdcView webxdcView;
+ private VcardView vcardView;
//private SignalMapView mapView;
private final @NonNull List garbage = new LinkedList<>();
@@ -116,6 +118,7 @@ public class AttachmentManager {
this.audioView = ViewUtil.findById(root, R.id.attachment_audio);
this.documentView = ViewUtil.findById(root, R.id.attachment_document);
this.webxdcView = ViewUtil.findById(root, R.id.attachment_webxdc);
+ this.vcardView = ViewUtil.findById(root, R.id.attachment_vcard);
//this.mapView = ViewUtil.findById(root, R.id.attachment_location);
this.removableMediaView = ViewUtil.findById(root, R.id.removable_media_view);
@@ -126,6 +129,7 @@ public class AttachmentManager {
audioView.getBackground().setColorFilter(incomingBubbleColor, PorterDuff.Mode.MULTIPLY);
documentView.getBackground().setColorFilter(incomingBubbleColor, PorterDuff.Mode.MULTIPLY);
webxdcView.getBackground().setColorFilter(incomingBubbleColor, PorterDuff.Mode.MULTIPLY);
+ vcardView.getBackground().setColorFilter(incomingBubbleColor, PorterDuff.Mode.MULTIPLY);
}
}
@@ -308,6 +312,9 @@ public class AttachmentManager {
audioView.setAudio((AudioSlide) slide, 0);
removableMediaView.display(audioView, false);
result.set(true);
+ } else if (slide.isVcard()) {
+ vcardView.setVcard(glideRequests, (VcardSlide)slide, DcHelper.getRpc(context));
+ removableMediaView.display(vcardView, false);
} else if (slide.hasDocument()) {
if (slide.isWebxdcDocument()) {
DcMsg instance = msg != null ? msg : DcHelper.getContext(context).getMsg(slide.dcMsgId);
@@ -685,13 +692,25 @@ public class AttachmentManager {
DcContext dcContext = DcHelper.getContext(context);
DcMsg msg = new DcMsg(dcContext, DcMsg.DC_MSG_WEBXDC);
Attachment attachment = new UriAttachment(uri, null, MediaUtil.WEBXDC, AttachmentDatabase.TRANSFER_PROGRESS_STARTED, 0, 0, 0, fileName, null, false);
- String path = ConversationActivity.getRealPathFromAttachment(context, attachment);
+ String path = attachment.getRealPath(context);
msg.setFile(path, MediaUtil.WEBXDC);
dcContext.setDraft(chatId, msg);
return new DocumentSlide(context, msg);
- } else {
- return new DocumentSlide(context, uri, mimeType, dataSize, fileName);
}
+
+ if (mimeType.equals(MediaUtil.VCARD) || (fileName != null && (fileName.endsWith(".vcf") || fileName.endsWith(".vcard")))) {
+ VcardSlide slide = new VcardSlide(context, uri, dataSize, fileName);
+ String path = slide.asAttachment().getRealPath(context);
+ try {
+ if (DcHelper.getRpc(context).parseVcard(path).size() == 1) {
+ return slide;
+ }
+ } catch (RpcException e) {
+ e.printStackTrace();
+ }
+ }
+
+ return new DocumentSlide(context, uri, mimeType, dataSize, fileName);
default: throw new AssertionError("unrecognized enum");
}
}
diff --git a/src/org/thoughtcrime/securesms/mms/AudioSlide.java b/src/main/java/org/thoughtcrime/securesms/mms/AudioSlide.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/AudioSlide.java
rename to src/main/java/org/thoughtcrime/securesms/mms/AudioSlide.java
diff --git a/src/org/thoughtcrime/securesms/mms/DecryptableStreamLocalUriFetcher.java b/src/main/java/org/thoughtcrime/securesms/mms/DecryptableStreamLocalUriFetcher.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/DecryptableStreamLocalUriFetcher.java
rename to src/main/java/org/thoughtcrime/securesms/mms/DecryptableStreamLocalUriFetcher.java
diff --git a/src/org/thoughtcrime/securesms/mms/DecryptableStreamUriLoader.java b/src/main/java/org/thoughtcrime/securesms/mms/DecryptableStreamUriLoader.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/DecryptableStreamUriLoader.java
rename to src/main/java/org/thoughtcrime/securesms/mms/DecryptableStreamUriLoader.java
diff --git a/src/org/thoughtcrime/securesms/mms/DocumentSlide.java b/src/main/java/org/thoughtcrime/securesms/mms/DocumentSlide.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/DocumentSlide.java
rename to src/main/java/org/thoughtcrime/securesms/mms/DocumentSlide.java
diff --git a/src/org/thoughtcrime/securesms/mms/GifSlide.java b/src/main/java/org/thoughtcrime/securesms/mms/GifSlide.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/GifSlide.java
rename to src/main/java/org/thoughtcrime/securesms/mms/GifSlide.java
diff --git a/src/org/thoughtcrime/securesms/mms/ImageSlide.java b/src/main/java/org/thoughtcrime/securesms/mms/ImageSlide.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/ImageSlide.java
rename to src/main/java/org/thoughtcrime/securesms/mms/ImageSlide.java
diff --git a/src/org/thoughtcrime/securesms/mms/MediaConstraints.java b/src/main/java/org/thoughtcrime/securesms/mms/MediaConstraints.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/MediaConstraints.java
rename to src/main/java/org/thoughtcrime/securesms/mms/MediaConstraints.java
diff --git a/src/org/thoughtcrime/securesms/mms/PartAuthority.java b/src/main/java/org/thoughtcrime/securesms/mms/PartAuthority.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/PartAuthority.java
rename to src/main/java/org/thoughtcrime/securesms/mms/PartAuthority.java
diff --git a/src/org/thoughtcrime/securesms/mms/QuoteModel.java b/src/main/java/org/thoughtcrime/securesms/mms/QuoteModel.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/QuoteModel.java
rename to src/main/java/org/thoughtcrime/securesms/mms/QuoteModel.java
diff --git a/src/org/thoughtcrime/securesms/mms/SignalGlideModule.java b/src/main/java/org/thoughtcrime/securesms/mms/SignalGlideModule.java
similarity index 91%
rename from src/org/thoughtcrime/securesms/mms/SignalGlideModule.java
rename to src/main/java/org/thoughtcrime/securesms/mms/SignalGlideModule.java
index f7316573e..d63f740f8 100644
--- a/src/org/thoughtcrime/securesms/mms/SignalGlideModule.java
+++ b/src/main/java/org/thoughtcrime/securesms/mms/SignalGlideModule.java
@@ -11,6 +11,8 @@ import com.bumptech.glide.Registry;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.load.model.UnitModelLoader;
import com.bumptech.glide.module.AppGlideModule;
+import com.bumptech.glide.request.RequestOptions;
+import com.github.penfeizhou.animation.glide.AnimationDecoderOption;
import org.thoughtcrime.securesms.contacts.avatars.ContactPhoto;
import org.thoughtcrime.securesms.glide.ContactPhotoLoader;
@@ -30,6 +32,7 @@ public class SignalGlideModule extends AppGlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
builder.setLogLevel(Log.ERROR);
+ builder.setDefaultRequestOptions(new RequestOptions().set(AnimationDecoderOption.DISABLE_ANIMATION_APNG_DECODER, true));
// builder.setDiskCache(new NoopDiskCacheFactory());
}
diff --git a/src/org/thoughtcrime/securesms/mms/Slide.java b/src/main/java/org/thoughtcrime/securesms/mms/Slide.java
similarity index 99%
rename from src/org/thoughtcrime/securesms/mms/Slide.java
rename to src/main/java/org/thoughtcrime/securesms/mms/Slide.java
index 89d40e9ef..56fd0d842 100644
--- a/src/org/thoughtcrime/securesms/mms/Slide.java
+++ b/src/main/java/org/thoughtcrime/securesms/mms/Slide.java
@@ -98,6 +98,10 @@ public abstract class Slide {
return false;
}
+ public boolean isVcard() {
+ return false;
+ }
+
public boolean hasLocation() {
return false;
}
diff --git a/src/org/thoughtcrime/securesms/mms/SlideClickListener.java b/src/main/java/org/thoughtcrime/securesms/mms/SlideClickListener.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/SlideClickListener.java
rename to src/main/java/org/thoughtcrime/securesms/mms/SlideClickListener.java
diff --git a/src/org/thoughtcrime/securesms/mms/SlideDeck.java b/src/main/java/org/thoughtcrime/securesms/mms/SlideDeck.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/SlideDeck.java
rename to src/main/java/org/thoughtcrime/securesms/mms/SlideDeck.java
diff --git a/src/org/thoughtcrime/securesms/mms/StickerSlide.java b/src/main/java/org/thoughtcrime/securesms/mms/StickerSlide.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/StickerSlide.java
rename to src/main/java/org/thoughtcrime/securesms/mms/StickerSlide.java
diff --git a/src/main/java/org/thoughtcrime/securesms/mms/VcardSlide.java b/src/main/java/org/thoughtcrime/securesms/mms/VcardSlide.java
new file mode 100644
index 000000000..01f1d7625
--- /dev/null
+++ b/src/main/java/org/thoughtcrime/securesms/mms/VcardSlide.java
@@ -0,0 +1,26 @@
+package org.thoughtcrime.securesms.mms;
+
+
+import android.content.Context;
+import android.net.Uri;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.b44t.messenger.DcMsg;
+
+public class VcardSlide extends DocumentSlide {
+
+ public VcardSlide(Context context, DcMsg dcMsg) {
+ super(context, dcMsg);
+ }
+
+ public VcardSlide(@NonNull Context context, @NonNull Uri uri, long size, @Nullable String fileName) {
+ super(context, uri, "text/vcard", size, fileName);
+ }
+
+ @Override
+ public boolean isVcard() {
+ return true;
+ }
+}
diff --git a/src/org/thoughtcrime/securesms/mms/VideoSlide.java b/src/main/java/org/thoughtcrime/securesms/mms/VideoSlide.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/mms/VideoSlide.java
rename to src/main/java/org/thoughtcrime/securesms/mms/VideoSlide.java
diff --git a/src/org/thoughtcrime/securesms/notifications/InChatSounds.java b/src/main/java/org/thoughtcrime/securesms/notifications/InChatSounds.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/notifications/InChatSounds.java
rename to src/main/java/org/thoughtcrime/securesms/notifications/InChatSounds.java
diff --git a/src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java b/src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java
rename to src/main/java/org/thoughtcrime/securesms/notifications/MarkReadReceiver.java
diff --git a/src/org/thoughtcrime/securesms/notifications/NotificationCenter.java b/src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/notifications/NotificationCenter.java
rename to src/main/java/org/thoughtcrime/securesms/notifications/NotificationCenter.java
diff --git a/src/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java b/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java
rename to src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java
diff --git a/src/org/thoughtcrime/securesms/permissions/Permissions.java b/src/main/java/org/thoughtcrime/securesms/permissions/Permissions.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/permissions/Permissions.java
rename to src/main/java/org/thoughtcrime/securesms/permissions/Permissions.java
diff --git a/src/org/thoughtcrime/securesms/permissions/PermissionsRequest.java b/src/main/java/org/thoughtcrime/securesms/permissions/PermissionsRequest.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/permissions/PermissionsRequest.java
rename to src/main/java/org/thoughtcrime/securesms/permissions/PermissionsRequest.java
diff --git a/src/org/thoughtcrime/securesms/permissions/RationaleDialog.java b/src/main/java/org/thoughtcrime/securesms/permissions/RationaleDialog.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/permissions/RationaleDialog.java
rename to src/main/java/org/thoughtcrime/securesms/permissions/RationaleDialog.java
diff --git a/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
similarity index 80%
rename from src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
rename to src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
index d94b0713a..ed633a70a 100644
--- a/src/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
@@ -7,6 +7,9 @@ import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_E2EE_ENABLED;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_MVBOX_MOVE;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_ONLY_FETCH_MVBOX;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SENTBOX_WATCH;
+import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SHOW_EMAILS;
+import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_WEBXDC_REALTIME_ENABLED;
+import static org.thoughtcrime.securesms.connect.DcHelper.getRpc;
import android.Manifest;
import android.content.Context;
@@ -25,13 +28,17 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.preference.CheckBoxPreference;
+import androidx.preference.ListPreference;
import androidx.preference.Preference;
import com.b44t.messenger.DcContext;
+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.R;
+import org.thoughtcrime.securesms.RegistrationActivity;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.mms.AttachmentManager;
@@ -40,6 +47,7 @@ import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.ScreenLockUtil;
import org.thoughtcrime.securesms.util.StorageUtil;
import org.thoughtcrime.securesms.util.StreamUtil;
+import org.thoughtcrime.securesms.util.Util;
import java.io.File;
import java.io.FileOutputStream;
@@ -54,16 +62,26 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
private static final String TAG = AdvancedPreferenceFragment.class.getSimpleName();
public static final int PICK_SELF_KEYS = 29923;
+ private ListPreference showEmails;
CheckBoxPreference preferE2eeCheckbox;
CheckBoxPreference sentboxWatchCheckbox;
CheckBoxPreference bccSelfCheckbox;
CheckBoxPreference mvboxMoveCheckbox;
CheckBoxPreference onlyFetchMvboxCheckbox;
+ CheckBoxPreference webxdcRealtimeCheckbox;
+ CheckBoxPreference showSystemContacts;
@Override
public void onCreate(Bundle paramBundle) {
super.onCreate(paramBundle);
+ showEmails = (ListPreference) this.findPreference("pref_show_emails");
+ showEmails.setOnPreferenceChangeListener((preference, newValue) -> {
+ updateListSummary(preference, newValue);
+ dcContext.setConfigInt(CONFIG_SHOW_EMAILS, Util.objectToInt(newValue));
+ return true;
+ });
+
Preference sendAsm = this.findPreference("pref_send_autocrypt_setup_message");
sendAsm.setOnPreferenceClickListener(new SendAsmListener());
@@ -73,9 +91,7 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
sentboxWatchCheckbox = (CheckBoxPreference) this.findPreference("pref_sentbox_watch");
sentboxWatchCheckbox.setOnPreferenceChangeListener((preference, newValue) -> {
boolean enabled = (Boolean) newValue;
- DcHelper.getAccounts(getContext()).stopIo();
dcContext.setConfigInt(CONFIG_SENTBOX_WATCH, enabled? 1 : 0);
- DcHelper.getAccounts(getContext()).startIo();
return true;
});
@@ -89,9 +105,7 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
mvboxMoveCheckbox = (CheckBoxPreference) this.findPreference("pref_mvbox_move");
mvboxMoveCheckbox.setOnPreferenceChangeListener((preference, newValue) -> {
boolean enabled = (Boolean) newValue;
- DcHelper.getAccounts(getContext()).stopIo();
dcContext.setConfigInt(CONFIG_MVBOX_MOVE, enabled? 1 : 0);
- DcHelper.getAccounts(getContext()).startIo();
return true;
});
@@ -102,22 +116,32 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
new AlertDialog.Builder(getContext())
.setMessage(R.string.pref_imap_folder_warn_disable_defaults)
.setPositiveButton(R.string.ok, (dialogInterface, i) -> {
- DcHelper.getAccounts(getContext()).stopIo();
dcContext.setConfigInt(CONFIG_ONLY_FETCH_MVBOX, 1);
((CheckBoxPreference)preference).setChecked(true);
- DcHelper.getAccounts(getContext()).startIo();
})
.setNegativeButton(R.string.cancel, null)
.show();
return false;
} else {
- DcHelper.getAccounts(getContext()).stopIo();
dcContext.setConfigInt(CONFIG_ONLY_FETCH_MVBOX, 0);
- DcHelper.getAccounts(getContext()).startIo();
return true;
}
}));
+ webxdcRealtimeCheckbox = (CheckBoxPreference) this.findPreference("pref_webxdc_realtime_enabled");
+ webxdcRealtimeCheckbox.setOnPreferenceChangeListener((preference, newValue) -> {
+ boolean enabled = (Boolean) newValue;
+ dcContext.setConfigInt(CONFIG_WEBXDC_REALTIME_ENABLED, enabled? 1 : 0);
+ return true;
+ });
+
+ showSystemContacts = (CheckBoxPreference) this.findPreference("pref_show_system_contacts");
+ showSystemContacts.setOnPreferenceChangeListener((preference, newValue) -> {
+ boolean enabled = (Boolean) newValue;
+ dcContext.setConfigInt("ui.android.show_system_contacts", enabled? 1 : 0);
+ return true;
+ });
+
Preference manageKeys = this.findPreference("pref_manage_keys");
manageKeys.setOnPreferenceClickListener(new ManageKeysListener());
@@ -146,15 +170,13 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
return true;
});
- Preference sendReactions = this.findPreference("pref_send_reactions");
- sendReactions.setOnPreferenceChangeListener((preference, newValue) -> {
+ Preference locationStreamingEnabled = this.findPreference("pref_location_streaming_enabled");
+ locationStreamingEnabled.setOnPreferenceChangeListener((preference, newValue) -> {
if ((Boolean)newValue) {
new AlertDialog.Builder(getActivity())
- .setTitle("Thanks for trying out \"Reactions\"!")
- .setMessage("• By long tapping a message, you can now add a reaction\n\n"
- + "• Do not rely on reactions being seen by all recipients currently: On some platforms they're still in development, also rolling out updates take time\n\n"
- + "• If you want to quit the experimental feature, disable it again at \"Settings / Advanced\";"
- + " received or already sent reactions are displayed independently of this switch")
+ .setTitle("Thanks for trying out \"Location Streaming\"!")
+ .setMessage("• You will find a corresponding option in the attach menu (the paper clip) of each chat now\n\n"
+ + "• If you want to quit the experimental feature, you can disable it at \"Settings / Advanced\"")
.setCancelable(false)
.setPositiveButton(R.string.ok, null)
.show();
@@ -169,6 +191,40 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
}
return true;
});
+
+ Preference selfReporting = this.findPreference("pref_self_reporting");
+ selfReporting.setOnPreferenceClickListener(((preference) -> {
+ try {
+ int chatId = getRpc(getActivity()).draftSelfReport(dcContext.getAccountId());
+
+ Intent intent = new Intent(getActivity(), ConversationActivity.class);
+ intent.putExtra(ConversationActivity.CHAT_ID_EXTRA, chatId);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ getActivity().startActivity(intent);
+ } catch (RpcException e) {
+ e.printStackTrace();
+ }
+
+ 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);
+ if (!result) {
+ openRegistrationActivity();
+ }
+ return true;
+ }));
+
+ if (dcContext.isChatmail()) {
+ preferE2eeCheckbox.setVisible(false);
+ showSystemContacts.setVisible(false);
+ sentboxWatchCheckbox.setVisible(false);
+ bccSelfCheckbox.setVisible(false);
+ mvboxMoveCheckbox.setVisible(false);
+ onlyFetchMvboxCheckbox.setVisible(false);
+ }
}
@Override
@@ -181,11 +237,17 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
super.onResume();
((ApplicationPreferencesActivity) getActivity()).getSupportActionBar().setTitle(R.string.menu_advanced);
+ String value = Integer.toString(dcContext.getConfigInt("show_emails"));
+ showEmails.setValue(value);
+ updateListSummary(showEmails, value);
+
preferE2eeCheckbox.setChecked(0!=dcContext.getConfigInt(CONFIG_E2EE_ENABLED));
sentboxWatchCheckbox.setChecked(0!=dcContext.getConfigInt(CONFIG_SENTBOX_WATCH));
bccSelfCheckbox.setChecked(0!=dcContext.getConfigInt(CONFIG_BCC_SELF));
mvboxMoveCheckbox.setChecked(0!=dcContext.getConfigInt(CONFIG_MVBOX_MOVE));
onlyFetchMvboxCheckbox.setChecked(0!=dcContext.getConfigInt(CONFIG_ONLY_FETCH_MVBOX));
+ webxdcRealtimeCheckbox.setChecked(0!=dcContext.getConfigInt(CONFIG_WEBXDC_REALTIME_ENABLED));
+ showSystemContacts.setChecked(0!=dcContext.getConfigInt("ui.android.show_system_contacts"));
}
@Override
@@ -208,6 +270,8 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
} catch (IOException e) {
e.printStackTrace();
}
+ } else if (requestCode == REQUEST_CODE_CONFIRM_CREDENTIALS_ACCOUNT) {
+ openRegistrationActivity();
}
}
@@ -285,6 +349,11 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
}
}
+ private void openRegistrationActivity() {
+ Intent intent = new Intent(getActivity(), RegistrationActivity.class);
+ startActivity(intent);
+ }
+
/***********************************************************************************************
* Autocrypt
**********************************************************************************************/
@@ -384,6 +453,7 @@ public class AdvancedPreferenceFragment extends ListSummaryPreferenceFragment
}
}
)
+ .setNegativeButton(R.string.cancel, null)
.show();
})
.execute();
diff --git a/src/org/thoughtcrime/securesms/preferences/AppearancePreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/AppearancePreferenceFragment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/preferences/AppearancePreferenceFragment.java
rename to src/main/java/org/thoughtcrime/securesms/preferences/AppearancePreferenceFragment.java
diff --git a/src/org/thoughtcrime/securesms/preferences/ChatBackgroundActivity.java b/src/main/java/org/thoughtcrime/securesms/preferences/ChatBackgroundActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/preferences/ChatBackgroundActivity.java
rename to src/main/java/org/thoughtcrime/securesms/preferences/ChatBackgroundActivity.java
diff --git a/src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java
similarity index 85%
rename from src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java
rename to src/main/java/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java
index cf215f34d..322834c90 100644
--- a/src/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/preferences/ChatsPreferenceFragment.java
@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.preferences;
import static android.app.Activity.RESULT_OK;
-import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SHOW_EMAILS;
import android.Manifest;
import android.content.Context;
@@ -29,7 +28,6 @@ import org.thoughtcrime.securesms.util.ScreenLockUtil;
import org.thoughtcrime.securesms.util.Util;
public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
- private ListPreference showEmails;
private ListPreference mediaQuality;
private ListPreference autoDownload;
private CheckBoxPreference readReceiptsCheckbox;
@@ -57,13 +55,6 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
});
nicerAutoDownloadNames();
- showEmails = (ListPreference) this.findPreference("pref_show_emails");
- showEmails.setOnPreferenceChangeListener((preference, newValue) -> {
- updateListSummary(preference, newValue);
- dcContext.setConfigInt(CONFIG_SHOW_EMAILS, Util.objectToInt(newValue));
- return true;
- });
-
readReceiptsCheckbox = (CheckBoxPreference) this.findPreference("pref_read_receipts");
readReceiptsCheckbox.setOnPreferenceChangeListener(new ReadReceiptToggleListener());
@@ -77,6 +68,13 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
autoDelServer = findPreference("autodel_server");
autoDelServer.setOnPreferenceChangeListener(new AutodelChangeListener("delete_server_after"));
+ if (dcContext.isChatmail()) {
+ autoDelServer.setEntries(new CharSequence[]{getString(R.string.automatic), getString(R.string.autodel_at_once)});
+ autoDelServer.setEntryValues(new CharSequence[]{"0", "1"});
+ if (dcContext.getConfigInt("delete_server_after") > 1) {
+ dcContext.setConfigInt("delete_server_after", 0 /*never/automatic*/);
+ }
+ }
}
@Override
@@ -89,11 +87,7 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
super.onResume();
((ApplicationPreferencesActivity)getActivity()).getSupportActionBar().setTitle(R.string.pref_chats_and_media);
- String value = Integer.toString(dcContext.getConfigInt("show_emails"));
- showEmails.setValue(value);
- updateListSummary(showEmails, value);
-
- value = Integer.toString(dcContext.getConfigInt(DcHelper.CONFIG_MEDIA_QUALITY));
+ String value = Integer.toString(dcContext.getConfigInt(DcHelper.CONFIG_MEDIA_QUALITY));
mediaQuality.setValue(value);
updateListSummary(mediaQuality, value);
@@ -110,7 +104,7 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
private void initAutodelFromCore() {
String value = Integer.toString(dcContext.getConfigInt("delete_server_after"));
autoDelServer.setValue(value);
- updateListSummary(autoDelServer, value, value.equals("0")? null : getString(R.string.autodel_server_enabled_hint));
+ updateListSummary(autoDelServer, value, (value.equals("0") || dcContext.isChatmail())? null : getString(R.string.autodel_server_enabled_hint));
value = Integer.toString(dcContext.getConfigInt("delete_device_after"));
autoDelDevice.setValue(value);
@@ -162,21 +156,7 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
final String onRes = context.getString(R.string.on);
final String offRes = context.getString(R.string.off);
String readReceiptState = dcContext.getConfigInt("mdns_enabled")!=0? onRes : offRes;
- boolean deleteOld = (dcContext.getConfigInt("delete_device_after")!=0 || dcContext.getConfigInt("delete_server_after")!=0);
-
- String showEmails = "?";
- switch (dcContext.getConfigInt("show_emails")) {
- case DcContext.DC_SHOW_EMAILS_OFF: showEmails = offRes; break;
- case DcContext.DC_SHOW_EMAILS_ACCEPTED_CONTACTS: showEmails = context.getString(R.string.pref_show_emails_accepted_contacts); break;
- case DcContext.DC_SHOW_EMAILS_ALL: showEmails = context.getString(R.string.pref_show_emails_all); break;
- }
-
- String summary = context.getString(R.string.pref_show_emails) + " " + showEmails + ", " +
- context.getString(R.string.pref_read_receipts) + " " + readReceiptState;
- if (deleteOld) {
- summary += ", " + context.getString(R.string.delete_old_messages) + " " + onRes;
- }
- return summary;
+ return context.getString(R.string.pref_read_receipts) + " " + readReceiptState;
}
private class BlockedContactsClickListener implements Preference.OnPreferenceClickListener {
@@ -207,9 +187,9 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
int timeout = Util.objectToInt(newValue);
- if (timeout>0) {
- Context context = preference.getContext();
- boolean fromServer = coreKey.equals("delete_server_after");
+ Context context = preference.getContext();
+ boolean fromServer = coreKey.equals("delete_server_after");
+ if (timeout>0 && !(fromServer && dcContext.isChatmail())) {
int delCount = DcHelper.getContext(context).estimateDeletionCount(fromServer, timeout);
View gl = View.inflate(getActivity(), R.layout.dialog_with_checkbox, null);
@@ -238,6 +218,18 @@ public class ChatsPreferenceFragment extends ListSummaryPreferenceFragment {
.setCancelable(true) // Enable the user to quickly cancel if they are intimidated by the warnings :)
.setOnCancelListener(dialog -> initAutodelFromCore())
.show();
+ } else if (fromServer && timeout == 1 /*at once, using a constant that cannot be used in .xml would weaken grep ability*/) {
+ new AlertDialog.Builder(context)
+ .setTitle(R.string.autodel_server_warn_multi_device_title)
+ .setMessage(R.string.autodel_server_warn_multi_device)
+ .setPositiveButton(android.R.string.ok, (dialog, whichButton) -> {
+ dcContext.setConfigInt(coreKey, timeout);
+ initAutodelFromCore();
+ })
+ .setNegativeButton(android.R.string.cancel, (dialog, whichButton) -> initAutodelFromCore())
+ .setCancelable(true)
+ .setOnCancelListener(dialog -> initAutodelFromCore())
+ .show();
} else {
updateListSummary(preference, newValue);
dcContext.setConfigInt(coreKey, timeout);
diff --git a/src/org/thoughtcrime/securesms/preferences/CorrectedPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/CorrectedPreferenceFragment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/preferences/CorrectedPreferenceFragment.java
rename to src/main/java/org/thoughtcrime/securesms/preferences/CorrectedPreferenceFragment.java
diff --git a/src/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java
rename to src/main/java/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java
index c480ec84a..361c427a1 100644
--- a/src/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/preferences/ListSummaryPreferenceFragment.java
@@ -29,6 +29,7 @@ import java.util.Map;
public abstract class ListSummaryPreferenceFragment extends CorrectedPreferenceFragment implements DcEventCenter.DcEventDelegate {
protected static final int REQUEST_CODE_CONFIRM_CREDENTIALS_BACKUP = ScreenLockUtil.REQUEST_CODE_CONFIRM_CREDENTIALS + 1;
protected static final int REQUEST_CODE_CONFIRM_CREDENTIALS_KEYS = REQUEST_CODE_CONFIRM_CREDENTIALS_BACKUP + 1;
+ protected static final int REQUEST_CODE_CONFIRM_CREDENTIALS_ACCOUNT = REQUEST_CODE_CONFIRM_CREDENTIALS_KEYS + 1;
protected DcContext dcContext;
private NotificationController notificationController;
@@ -137,6 +138,7 @@ 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);
diff --git a/src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
similarity index 83%
rename from src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
rename to src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
index 0d11d4e35..7b0258c9c 100644
--- a/src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
@@ -12,6 +12,7 @@ import android.os.Bundle;
import android.os.PowerManager;
import android.provider.Settings;
import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
import androidx.core.app.NotificationManagerCompat;
import androidx.core.content.ContextCompat;
import androidx.preference.CheckBoxPreference;
@@ -20,12 +21,15 @@ import androidx.preference.Preference;
import android.text.TextUtils;
import org.thoughtcrime.securesms.ApplicationPreferencesActivity;
+import org.thoughtcrime.securesms.BuildConfig;
import org.thoughtcrime.securesms.R;
+import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.connect.KeepAliveService;
-import org.thoughtcrime.securesms.permissions.Permissions;
+import org.thoughtcrime.securesms.notifications.FcmReceiveService;
import org.thoughtcrime.securesms.util.Prefs;
import static android.app.Activity.RESULT_OK;
+import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_ONLY_FETCH_MVBOX;
public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragment {
@@ -69,6 +73,27 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme
initializeRingtoneSummary(findPreference(Prefs.RINGTONE_PREF));
+ CheckBoxPreference usePushService = this.findPreference("pref_push_enabled");
+ usePushService.setChecked(Prefs.isPushEnabled(getContext()));
+ usePushService.setEnabled(BuildConfig.USE_PLAY_SERVICES);
+ usePushService.setOnPreferenceChangeListener((preference, newValue) -> {
+ final boolean enabled = (Boolean) newValue;
+ if (!enabled) {
+ new AlertDialog.Builder(getContext())
+ .setMessage(R.string.pref_push_ask_disable)
+ .setPositiveButton(R.string.ok, (dialogInterface, i) -> {
+ ((CheckBoxPreference)preference).setChecked(false);
+ })
+ .setNegativeButton(R.string.cancel, null)
+ .setNeutralButton(R.string.learn_more, (dialogInterface, i) -> {
+ DcHelper.openHelp(getActivity(), "#instant-delivery");
+ })
+ .show();
+ return false;
+ }
+ return true;
+ });
+
ignoreBattery = this.findPreference("pref_ignore_battery_optimizations");
ignoreBattery.setVisible(needsIgnoreBatteryOptimizations());
ignoreBattery.setOnPreferenceChangeListener((preference, newValue) -> {
@@ -116,6 +141,18 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme
ignoreBattery.setChecked(isIgnoringBatteryOptimizations());
}
+ @Override
+ public void onPause() {
+ super.onPause();
+
+ // we delay applying token changes to avoid changes and races if the user is just playing around
+ if (Prefs.isPushEnabled(getContext()) && FcmReceiveService.getToken() == null) {
+ FcmReceiveService.register(getContext());
+ } else if(!Prefs.isPushEnabled(getContext()) && FcmReceiveService.getToken() != null) {
+ FcmReceiveService.deleteToken();
+ }
+ }
+
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
diff --git a/src/org/thoughtcrime/securesms/preferences/widgets/NotificationPrivacyPreference.java b/src/main/java/org/thoughtcrime/securesms/preferences/widgets/NotificationPrivacyPreference.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/preferences/widgets/NotificationPrivacyPreference.java
rename to src/main/java/org/thoughtcrime/securesms/preferences/widgets/NotificationPrivacyPreference.java
diff --git a/src/org/thoughtcrime/securesms/preferences/widgets/ProfilePreference.java b/src/main/java/org/thoughtcrime/securesms/preferences/widgets/ProfilePreference.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/preferences/widgets/ProfilePreference.java
rename to src/main/java/org/thoughtcrime/securesms/preferences/widgets/ProfilePreference.java
diff --git a/src/org/thoughtcrime/securesms/profiles/AvatarHelper.java b/src/main/java/org/thoughtcrime/securesms/profiles/AvatarHelper.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/profiles/AvatarHelper.java
rename to src/main/java/org/thoughtcrime/securesms/profiles/AvatarHelper.java
diff --git a/src/org/thoughtcrime/securesms/profiles/ProfileMediaConstraints.java b/src/main/java/org/thoughtcrime/securesms/profiles/ProfileMediaConstraints.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/profiles/ProfileMediaConstraints.java
rename to src/main/java/org/thoughtcrime/securesms/profiles/ProfileMediaConstraints.java
diff --git a/src/org/thoughtcrime/securesms/providers/PersistentBlobProvider.java b/src/main/java/org/thoughtcrime/securesms/providers/PersistentBlobProvider.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/providers/PersistentBlobProvider.java
rename to src/main/java/org/thoughtcrime/securesms/providers/PersistentBlobProvider.java
diff --git a/src/org/thoughtcrime/securesms/providers/SingleUseBlobProvider.java b/src/main/java/org/thoughtcrime/securesms/providers/SingleUseBlobProvider.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/providers/SingleUseBlobProvider.java
rename to src/main/java/org/thoughtcrime/securesms/providers/SingleUseBlobProvider.java
diff --git a/src/org/thoughtcrime/securesms/qr/BackupProviderFragment.java b/src/main/java/org/thoughtcrime/securesms/qr/BackupProviderFragment.java
similarity index 99%
rename from src/org/thoughtcrime/securesms/qr/BackupProviderFragment.java
rename to src/main/java/org/thoughtcrime/securesms/qr/BackupProviderFragment.java
index 9c2334383..8921acd81 100644
--- a/src/org/thoughtcrime/securesms/qr/BackupProviderFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/BackupProviderFragment.java
@@ -64,6 +64,7 @@ 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(() -> {
diff --git a/src/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java b/src/main/java/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java
rename to src/main/java/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java
index 8c260cd92..cbe05f27e 100644
--- a/src/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/BackupReceiverFragment.java
@@ -94,6 +94,7 @@ public class BackupReceiverFragment extends Fragment implements DcEventCenter.Dc
} else if (permille == 1000) {
getTransferActivity().setTransferState(BackupTransferActivity.TransferState.TRANSFER_SUCCESS);
getTransferActivity().doFinish();
+ dcContext.assumeMultiDevice();
return;
}
diff --git a/src/org/thoughtcrime/securesms/qr/BackupTransferActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/BackupTransferActivity.java
similarity index 97%
rename from src/org/thoughtcrime/securesms/qr/BackupTransferActivity.java
rename to src/main/java/org/thoughtcrime/securesms/qr/BackupTransferActivity.java
index fadf4b5fc..9244e3a2f 100644
--- a/src/org/thoughtcrime/securesms/qr/BackupTransferActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/BackupTransferActivity.java
@@ -20,7 +20,6 @@ import org.thoughtcrime.securesms.BaseActionBarActivity;
import org.thoughtcrime.securesms.ConversationListActivity;
import org.thoughtcrime.securesms.LogViewActivity;
import org.thoughtcrime.securesms.R;
-import org.thoughtcrime.securesms.WebViewActivity;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.service.GenericForegroundService;
import org.thoughtcrime.securesms.service.NotificationController;
@@ -118,8 +117,7 @@ public class BackupTransferActivity extends BaseActionBarActivity {
finishOrAskToFinish();
return true;
case R.id.troubleshooting:
- // once help is evolved, it may be a more visible button, may be localized, may be offline
- WebViewActivity.openUrlInBrowser(this, "https://delta.chat/en/help#multiclient");
+ DcHelper.openHelp(this, "#multiclient");
return true;
case R.id.view_log_button:
startActivity(new Intent(this, LogViewActivity.class));
diff --git a/src/org/thoughtcrime/securesms/qr/QrActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
similarity index 94%
rename from src/org/thoughtcrime/securesms/qr/QrActivity.java
rename to src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
index fe2f4cf68..ae35535bf 100644
--- a/src/org/thoughtcrime/securesms/qr/QrActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/QrActivity.java
@@ -15,6 +15,7 @@ import android.view.MenuItem;
import android.widget.Toast;
import androidx.annotation.NonNull;
+import androidx.core.view.MenuCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
@@ -30,6 +31,7 @@ import com.google.zxing.common.HybridBinarizer;
import org.thoughtcrime.securesms.BaseActionBarActivity;
import org.thoughtcrime.securesms.R;
+import org.thoughtcrime.securesms.contacts.NewContactActivity;
import org.thoughtcrime.securesms.mms.AttachmentManager;
import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
@@ -68,7 +70,7 @@ public class QrActivity extends BaseActionBarActivity {
setSupportActionBar(ViewUtil.findById(this, R.id.toolbar));
assert getSupportActionBar() != null;
- getSupportActionBar().setTitle(R.string.qr_code);
+ getSupportActionBar().setTitle(R.string.menu_new_contact);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
int lastSelectedTab = PreferenceManager.getDefaultSharedPreferences(this).getInt("qrTab", TAB_SHOW);
@@ -110,10 +112,10 @@ public class QrActivity extends BaseActionBarActivity {
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
- if(tabLayout.getSelectedTabPosition() == TAB_SHOW) {
- getMenuInflater().inflate(R.menu.qr_show, menu);
- } else {
- getMenuInflater().inflate(R.menu.qr_scan, menu);
+ getMenuInflater().inflate(R.menu.qr_show, menu);
+ if(tabLayout.getSelectedTabPosition() == TAB_SCAN) {
+ menu.findItem(R.id.withdraw).setVisible(false);
+ menu.findItem(R.id.copy).setVisible(false);
}
return super.onPrepareOptionsMenu(menu);
}
@@ -133,8 +135,11 @@ public class QrActivity extends BaseActionBarActivity {
case android.R.id.home:
finish();
return true;
+ case R.id.new_classic_contact:
+ this.startActivity(new Intent(this, NewContactActivity.class));
+ break;
case R.id.share:
- qrShowFragment.shareQr();
+ qrShowFragment.shareInviteURL();
break;
case R.id.copy:
qrShowFragment.copyQrData();
diff --git a/src/org/thoughtcrime/securesms/qr/QrCodeHandler.java b/src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java
similarity index 93%
rename from src/org/thoughtcrime/securesms/qr/QrCodeHandler.java
rename to src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java
index 8e2b909f0..34a0361bc 100644
--- a/src/org/thoughtcrime/securesms/qr/QrCodeHandler.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/QrCodeHandler.java
@@ -65,8 +65,9 @@ public class QrCodeHandler {
break;
case DcContext.DC_QR_ACCOUNT:
- String domain = qrParsed.getText1();
- builder.setMessage(activity.getString(R.string.qraccount_ask_create_and_login_another, domain));
+ case DcContext.DC_QR_LOGIN:
+ final String scope = qrParsed.getText1();
+ builder.setMessage(activity.getString(qrParsed.getState() == DcContext.DC_QR_ACCOUNT ? R.string.qraccount_ask_create_and_login_another : R.string.qrlogin_ask_login_another, scope));
builder.setPositiveButton(R.string.ok, (dialog, which) -> {
AccountManager.getInstance().addAccountFromQr(activity, rawString);
});
@@ -78,7 +79,7 @@ public class QrCodeHandler {
builder.setTitle(R.string.multidevice_receiver_title);
builder.setMessage(activity.getString(R.string.multidevice_receiver_scanning_ask) + "\n\n" + activity.getString(R.string.multidevice_same_network_hint));
builder.setPositiveButton(R.string.perm_continue, (dialog, which) -> {
- AccountManager.getInstance().addAccountFromQr(activity, rawString);
+ AccountManager.getInstance().addAccountFromSecondDevice(activity, rawString);
});
builder.setNegativeButton(R.string.cancel, null);
builder.setCancelable(false);
@@ -88,16 +89,6 @@ public class QrCodeHandler {
BackupTransferActivity.appendSSID(activity, alertDialog.findViewById(android.R.id.message));
return;
- case DcContext.DC_QR_LOGIN:
- String email = qrParsed.getText1();
- builder.setMessage(activity.getString(R.string.qrlogin_ask_login_another, email));
- builder.setPositiveButton(R.string.ok, (dialog, which) -> {
- AccountManager.getInstance().addAccountFromQr(activity, rawString);
- });
- 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) -> {
diff --git a/src/org/thoughtcrime/securesms/qr/QrScanFragment.java b/src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/qr/QrScanFragment.java
rename to src/main/java/org/thoughtcrime/securesms/qr/QrScanFragment.java
diff --git a/src/org/thoughtcrime/securesms/qr/QrShowActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/QrShowActivity.java
similarity index 93%
rename from src/org/thoughtcrime/securesms/qr/QrShowActivity.java
rename to src/main/java/org/thoughtcrime/securesms/qr/QrShowActivity.java
index e86799069..f3237d03e 100644
--- a/src/org/thoughtcrime/securesms/qr/QrShowActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/QrShowActivity.java
@@ -68,6 +68,9 @@ public class QrShowActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.qr_show, menu);
+ menu.findItem(R.id.new_classic_contact).setVisible(false);
+ menu.findItem(R.id.paste).setVisible(false);
+ menu.findItem(R.id.load_from_image).setVisible(false);
return super.onCreateOptionsMenu(menu);
}
@@ -87,7 +90,7 @@ public class QrShowActivity extends AppCompatActivity {
finish();
return true;
case R.id.share:
- fragment.shareQr();
+ fragment.shareInviteURL();
break;
case R.id.copy:
fragment.copyQrData();
diff --git a/src/org/thoughtcrime/securesms/qr/QrShowFragment.java b/src/main/java/org/thoughtcrime/securesms/qr/QrShowFragment.java
similarity index 82%
rename from src/org/thoughtcrime/securesms/qr/QrShowFragment.java
rename to src/main/java/org/thoughtcrime/securesms/qr/QrShowFragment.java
index ccb1535de..5c6c009dc 100644
--- a/src/org/thoughtcrime/securesms/qr/QrShowFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/QrShowFragment.java
@@ -2,10 +2,7 @@ package org.thoughtcrime.securesms.qr;
import android.app.Activity;
import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
-import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -30,12 +27,8 @@ import org.thoughtcrime.securesms.components.ScaleStableImageView;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.util.DynamicTheme;
-import org.thoughtcrime.securesms.util.FileProviderUtil;
import org.thoughtcrime.securesms.util.Util;
-import java.io.File;
-import java.io.FileOutputStream;
-
public class QrShowFragment extends Fragment implements DcEventCenter.DcEventDelegate {
private final static String TAG = QrShowFragment.class.getSimpleName();
@@ -103,33 +96,21 @@ public class QrShowFragment extends Fragment implements DcEventCenter.DcEventDel
return svg.replace("y=\"281.136\"", "y=\"296\"");
}
- public void shareQr() {
+ public void shareInviteURL() {
try {
- File file = new File(getActivity().getExternalCacheDir(), "share-qr.png");
- file.createNewFile();
- file.setReadable(true, false);
- FileOutputStream stream = new FileOutputStream(file);
- Bitmap bitmap = Bitmap.createBitmap(WIDTH, HEIGHT, Bitmap.Config.ARGB_8888);
- Canvas canvas = new Canvas(bitmap);
- canvas.drawRGB(255, 255, 255); // Clear background to white
- SVG svg = SVG.getFromString(fixSVG(dcContext.getSecurejoinQrSvg(chatId)));
- svg.renderToCanvas(canvas);
- bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
- stream.flush();
- stream.close();
- Uri uri = FileProviderUtil.getUriFor(getActivity(), file);
Intent intent = new Intent(Intent.ACTION_SEND);
- intent.setType("image/png");
- intent.putExtra(Intent.EXTRA_STREAM, uri);
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ intent.setType("text/plain");
+ String inviteURL = Util.QrDataToInviteURL(dcContext.getSecurejoinQr(chatId));
+ intent.putExtra(Intent.EXTRA_TEXT, inviteURL);
startActivity(Intent.createChooser(intent, getString(R.string.chat_share_with_title)));
} catch (Exception e) {
- Log.e(TAG, "failed to share QR", e);
+ Log.e(TAG, "failed to share invite URL", e);
}
}
public void copyQrData() {
- Util.writeTextToClipboard(getActivity(), DcHelper.getContext(getActivity()).getSecurejoinQr(chatId));
+ String inviteURL = Util.QrDataToInviteURL(dcContext.getSecurejoinQr(chatId));
+ Util.writeTextToClipboard(getActivity(), inviteURL);
Toast.makeText(getActivity(), getString(R.string.copied_to_clipboard), Toast.LENGTH_SHORT).show();
}
diff --git a/src/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java b/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java
similarity index 87%
rename from src/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java
rename to src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java
index 1187d100b..b2d03ec79 100644
--- a/src/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/qr/RegistrationQrActivity.java
@@ -5,6 +5,7 @@ import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
+import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -15,6 +16,7 @@ import com.journeyapps.barcodescanner.CompoundBarcodeView;
import org.thoughtcrime.securesms.BaseActionBarActivity;
import org.thoughtcrime.securesms.R;
+import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.permissions.Permissions;
public class RegistrationQrActivity extends BaseActionBarActivity {
@@ -77,6 +79,9 @@ public class RegistrationQrActivity extends BaseActionBarActivity {
case android.R.id.home:
finish();
return true;
+ case R.id.troubleshooting:
+ DcHelper.openHelp(this, "#multiclient");
+ return true;
}
return false;
@@ -117,6 +122,15 @@ public class RegistrationQrActivity extends BaseActionBarActivity {
}
}
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ menu.clear();
+ getMenuInflater().inflate(R.menu.registration_qr_activity, menu);
+ boolean addAsAnotherDevice = getIntent().getBooleanExtra(ADD_AS_SECOND_DEVICE_EXTRA, false);
+ menu.findItem(R.id.troubleshooting).setVisible(addAsAnotherDevice);
+ return super.onPrepareOptionsMenu(menu);
+ }
+
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
diff --git a/src/org/thoughtcrime/securesms/reactions/AddReactionView.java b/src/main/java/org/thoughtcrime/securesms/reactions/AddReactionView.java
similarity index 64%
rename from src/org/thoughtcrime/securesms/reactions/AddReactionView.java
rename to src/main/java/org/thoughtcrime/securesms/reactions/AddReactionView.java
index 123acf076..fdd38fb0d 100644
--- a/src/org/thoughtcrime/securesms/reactions/AddReactionView.java
+++ b/src/main/java/org/thoughtcrime/securesms/reactions/AddReactionView.java
@@ -1,11 +1,14 @@
package org.thoughtcrime.securesms.reactions;
import android.content.Context;
+import android.os.Build;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
+import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
+import androidx.emoji2.emojipicker.EmojiPickerView;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
@@ -16,13 +19,14 @@ import com.b44t.messenger.rpc.Rpc;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.emoji.EmojiTextView;
import org.thoughtcrime.securesms.connect.DcHelper;
-import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.ViewUtil;
import java.util.Map;
public class AddReactionView extends LinearLayout {
private EmojiTextView [] defaultReactionViews;
+ private EmojiTextView anyReactionView;
+ private boolean anyReactionClearsReaction;
private Context context;
private DcContext dcContext;
private Rpc rpc;
@@ -51,7 +55,12 @@ public class AddReactionView extends LinearLayout {
};
for (int i = 0; i < defaultReactionViews.length; i++) {
final int ii = i;
- defaultReactionViews[i].setOnClickListener(v -> reactionClicked(ii));
+ defaultReactionViews[i].setOnClickListener(v -> defaultReactionClicked(ii));
+ }
+ anyReactionView = findViewById(R.id.reaction_any);
+ anyReactionView.setOnClickListener(v -> anyReactionClicked());
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
+ anyReactionView.setVisibility(View.GONE); // EmojiPickerView requires SDK 21 or newer
}
}
}
@@ -59,10 +68,6 @@ public class AddReactionView extends LinearLayout {
public void show(DcMsg msgToReactTo, View parentView, AddReactionListener listener) {
init(); // init delayed as needed
- if (!Prefs.getBooleanPreference(context, "pref_send_reactions", false)) {
- return;
- }
-
if ( msgToReactTo.isInfo()
|| msgToReactTo.getType() == DcMsg.DC_MSG_VIDEOCHAT_INVITATION
|| !dcContext.getChat(msgToReactTo.getChatId()).canSend()) {
@@ -73,14 +78,26 @@ public class AddReactionView extends LinearLayout {
this.listener = listener;
final String existingReaction = getSelfReaction();
+ boolean existingHilited = false;
for (EmojiTextView defaultReactionView : defaultReactionViews) {
if (defaultReactionView.getText().toString().equals(existingReaction)) {
defaultReactionView.setBackground(ContextCompat.getDrawable(context, R.drawable.reaction_pill_background_selected));
+ existingHilited = true;
} else {
defaultReactionView.setBackground(null);
}
}
+ if (existingReaction != null && !existingHilited) {
+ anyReactionView.setText(existingReaction);
+ anyReactionView.setBackground(ContextCompat.getDrawable(context, R.drawable.reaction_pill_background_selected));
+ anyReactionClearsReaction = true;
+ } else {
+ anyReactionView.setText("⋯");
+ anyReactionView.setBackground(null);
+ anyReactionClearsReaction = false;
+ }
+
final int offset = (int)(this.getHeight() * 0.666);
int x = (int)parentView.getX();
if (msgToReactTo.isOutgoing()) {
@@ -121,17 +138,48 @@ public class AddReactionView extends LinearLayout {
return result;
}
- private void reactionClicked(int i) {
+ private void defaultReactionClicked(int i) {
+ final String reaction = defaultReactionViews[i].getText().toString();
+ sendReaction(reaction);
+
+ if (listener != null) {
+ listener.onShallHide();
+ }
+ }
+
+ private void anyReactionClicked() {
+ if (anyReactionClearsReaction) {
+ sendReaction(null);
+ } else {
+ View pickerLayout = View.inflate(context, R.layout.reaction_picker, null);
+
+ final AlertDialog alertDialog = new AlertDialog.Builder(context)
+ .setView(pickerLayout)
+ .setTitle(R.string.react)
+ .setPositiveButton(R.string.cancel, null)
+ .create();
+
+ EmojiPickerView pickerView = ViewUtil.findById(pickerLayout, R.id.emoji_picker);
+ pickerView.setOnEmojiPickedListener((it) -> {
+ sendReaction(it.getEmoji());
+ alertDialog.dismiss();
+ });
+
+ alertDialog.show();
+ }
+
+ if (listener != null) {
+ listener.onShallHide();
+ }
+ }
+
+ private void sendReaction(final String reaction) {
try {
- final String reaction = defaultReactionViews[i].getText().toString();
- if (reaction.equals(getSelfReaction())) {
+ if (reaction == null || reaction.equals(getSelfReaction())) {
rpc.sendReaction(dcContext.getAccountId(), msgToReactTo.getId(), "");
} else {
rpc.sendReaction(dcContext.getAccountId(), msgToReactTo.getId(), reaction);
}
- if (listener != null) {
- listener.onShallHide();
- }
} catch(Exception e) {
e.printStackTrace();
}
diff --git a/src/org/thoughtcrime/securesms/reactions/ReactionRecipientItem.java b/src/main/java/org/thoughtcrime/securesms/reactions/ReactionRecipientItem.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/reactions/ReactionRecipientItem.java
rename to src/main/java/org/thoughtcrime/securesms/reactions/ReactionRecipientItem.java
diff --git a/src/org/thoughtcrime/securesms/reactions/ReactionRecipientsAdapter.java b/src/main/java/org/thoughtcrime/securesms/reactions/ReactionRecipientsAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/reactions/ReactionRecipientsAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/reactions/ReactionRecipientsAdapter.java
diff --git a/src/org/thoughtcrime/securesms/reactions/ReactionsConversationView.java b/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsConversationView.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/reactions/ReactionsConversationView.java
rename to src/main/java/org/thoughtcrime/securesms/reactions/ReactionsConversationView.java
diff --git a/src/org/thoughtcrime/securesms/reactions/ReactionsDetailsFragment.java b/src/main/java/org/thoughtcrime/securesms/reactions/ReactionsDetailsFragment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/reactions/ReactionsDetailsFragment.java
rename to src/main/java/org/thoughtcrime/securesms/reactions/ReactionsDetailsFragment.java
diff --git a/src/org/thoughtcrime/securesms/recipients/Recipient.java b/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java
similarity index 88%
rename from src/org/thoughtcrime/securesms/recipients/Recipient.java
rename to src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java
index 9225e79dd..3942c3bd6 100644
--- a/src/org/thoughtcrime/securesms/recipients/Recipient.java
+++ b/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java
@@ -21,13 +21,15 @@ import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.net.Uri;
+import android.text.TextUtils;
+
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import android.text.TextUtils;
import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
+import com.b44t.messenger.rpc.VcardContact;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.contacts.avatars.ContactPhoto;
@@ -37,15 +39,14 @@ import org.thoughtcrime.securesms.contacts.avatars.GroupRecordContactPhoto;
import org.thoughtcrime.securesms.contacts.avatars.LocalFileContactPhoto;
import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto;
import org.thoughtcrime.securesms.contacts.avatars.SystemContactPhoto;
+import org.thoughtcrime.securesms.contacts.avatars.VcardContactPhoto;
import org.thoughtcrime.securesms.database.Address;
import org.thoughtcrime.securesms.util.Hash;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.Util;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
import java.util.WeakHashMap;
@@ -65,6 +66,7 @@ public class Recipient {
private final @Nullable DcChat dcChat;
private @Nullable DcContact dcContact;
+ private final @Nullable VcardContact vContact;
public static @NonNull Recipient fromChat(@NonNull Context context, int dcMsgId) {
DcContext dcContext = DcHelper.getContext(context);
@@ -90,21 +92,26 @@ public class Recipient {
}
public Recipient(@NonNull Context context, @NonNull DcChat dcChat) {
- this(context, dcChat, null, null);
+ this(context, dcChat, null, null, null);
+ }
+
+ public Recipient(@NonNull Context context, @NonNull VcardContact vContact) {
+ this(context, null, null, null, vContact);
}
public Recipient(@NonNull Context context, @NonNull DcContact dcContact) {
- this(context, null, dcContact, null);
+ this(context, null, dcContact, null, null);
}
public Recipient(@NonNull Context context, @NonNull DcContact dcContact, @NonNull String profileName) {
- this(context, null, dcContact, profileName);
+ this(context, null, dcContact, profileName, null);
}
- private Recipient(@NonNull Context context, @Nullable DcChat dcChat, @Nullable DcContact dcContact, @Nullable String profileName) {
+ private Recipient(@NonNull Context context, @Nullable DcChat dcChat, @Nullable DcContact dcContact, @Nullable String profileName, @Nullable VcardContact vContact) {
this.dcChat = dcChat;
this.dcContact = dcContact;
this.profileName = profileName;
+ this.vContact = vContact;
this.contactUri = null;
this.systemContactPhoto = null;
this.customLabel = null;
@@ -141,6 +148,9 @@ public class Recipient {
else if(dcContact!=null) {
return dcContact.getDisplayName();
}
+ else if(vContact!=null) {
+ return vContact.getDisplayName();
+ }
return "";
}
@@ -168,18 +178,6 @@ public class Recipient {
return dcChat!=null && dcChat.isMultiUser();
}
- public @NonNull List loadParticipants(Context context) {
- List participants = new ArrayList<>();
- if (dcChat!=null) {
- DcContext dcContext = DcHelper.getAccounts(context).getAccount(dcChat.getAccountId());
- int[] contactIds = dcContext.getChatContacts(dcChat.getId());
- for (int contactId : contactIds) {
- participants.add(new Recipient(context, dcContext.getContact(contactId)));
- }
- }
- return participants;
- }
-
public synchronized void addListener(RecipientModifiedListener listener) {
listeners.add(listener);
}
@@ -200,15 +198,21 @@ public class Recipient {
else if(dcContact!=null) {
rgb = dcContact.getColor();
}
- int argb = Color.argb(0xFF, Color.red(rgb), Color.green(rgb), Color.blue(rgb));
- return argb;
+ else if(vContact!=null) {
+ rgb = Color.parseColor(vContact.getColor());
+ }
+ return Color.argb(0xFF, Color.red(rgb), Color.green(rgb), Color.blue(rgb));
}
public synchronized @NonNull Drawable getFallbackAvatarDrawable(Context context) {
- return getFallbackContactPhoto().asDrawable(context, getFallbackAvatarColor());
+ return getFallbackAvatarDrawable(context, true);
}
- public synchronized @NonNull FallbackContactPhoto getFallbackContactPhoto() {
+ public synchronized @NonNull Drawable getFallbackAvatarDrawable(Context context, boolean roundShape) {
+ return getFallbackContactPhoto().asDrawable(context, getFallbackAvatarColor(), roundShape);
+ }
+
+ public synchronized @NonNull GeneratedContactPhoto getFallbackContactPhoto() {
String name = getName();
if (!TextUtils.isEmpty(profileName)) return new GeneratedContactPhoto(profileName);
else if (!TextUtils.isEmpty(name)) return new GeneratedContactPhoto(name);
@@ -231,6 +235,10 @@ public class Recipient {
}
}
+ if (vContact!=null && vContact.hasProfileImage()) {
+ return new VcardContactPhoto(vContact);
+ }
+
if (systemContactPhoto != null) {
return new SystemContactPhoto(address, systemContactPhoto, 0);
}
@@ -262,7 +270,7 @@ public class Recipient {
@Override
public boolean equals(Object o) {
if (this == o) return true;
- if (o == null || !(o instanceof Recipient)) return false;
+ if (!(o instanceof Recipient)) return false;
Recipient that = (Recipient) o;
@@ -290,6 +298,7 @@ public class Recipient {
return dcChat!=null? dcChat : new DcChat(0, 0);
}
+ @NonNull
@Override
public String toString() {
return "Recipient{" +
diff --git a/src/org/thoughtcrime/securesms/recipients/RecipientForeverObserver.java b/src/main/java/org/thoughtcrime/securesms/recipients/RecipientForeverObserver.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/recipients/RecipientForeverObserver.java
rename to src/main/java/org/thoughtcrime/securesms/recipients/RecipientForeverObserver.java
diff --git a/src/org/thoughtcrime/securesms/recipients/RecipientModifiedListener.java b/src/main/java/org/thoughtcrime/securesms/recipients/RecipientModifiedListener.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/recipients/RecipientModifiedListener.java
rename to src/main/java/org/thoughtcrime/securesms/recipients/RecipientModifiedListener.java
diff --git a/src/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java b/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java
rename to src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java
diff --git a/src/org/thoughtcrime/securesms/scribbles/ImageEditorHud.java b/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorHud.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/scribbles/ImageEditorHud.java
rename to src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorHud.java
diff --git a/src/org/thoughtcrime/securesms/scribbles/ScribbleActivity.java b/src/main/java/org/thoughtcrime/securesms/scribbles/ScribbleActivity.java
similarity index 91%
rename from src/org/thoughtcrime/securesms/scribbles/ScribbleActivity.java
rename to src/main/java/org/thoughtcrime/securesms/scribbles/ScribbleActivity.java
index de0af535c..e278fb676 100644
--- a/src/org/thoughtcrime/securesms/scribbles/ScribbleActivity.java
+++ b/src/main/java/org/thoughtcrime/securesms/scribbles/ScribbleActivity.java
@@ -11,6 +11,10 @@ public class ScribbleActivity extends PassphraseRequiredActionBarActivity {
public static final String CROP_AVATAR = "crop_avatar";
ImageEditorFragment imageEditorFragment;
+ protected boolean allowInLockedMode() {
+ return getIntent().getBooleanExtra(CROP_AVATAR, false);
+ }
+
@Override
protected void onPreCreate() {
dynamicTheme = new DynamicNoActionBarTheme();
diff --git a/src/org/thoughtcrime/securesms/scribbles/StickerLoader.java b/src/main/java/org/thoughtcrime/securesms/scribbles/StickerLoader.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/scribbles/StickerLoader.java
rename to src/main/java/org/thoughtcrime/securesms/scribbles/StickerLoader.java
diff --git a/src/org/thoughtcrime/securesms/scribbles/StickerSelectActivity.java b/src/main/java/org/thoughtcrime/securesms/scribbles/StickerSelectActivity.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/scribbles/StickerSelectActivity.java
rename to src/main/java/org/thoughtcrime/securesms/scribbles/StickerSelectActivity.java
diff --git a/src/org/thoughtcrime/securesms/scribbles/StickerSelectFragment.java b/src/main/java/org/thoughtcrime/securesms/scribbles/StickerSelectFragment.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/scribbles/StickerSelectFragment.java
rename to src/main/java/org/thoughtcrime/securesms/scribbles/StickerSelectFragment.java
diff --git a/src/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java b/src/main/java/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/scribbles/UriGlideRenderer.java
diff --git a/src/org/thoughtcrime/securesms/scribbles/widget/ColorPaletteAdapter.java b/src/main/java/org/thoughtcrime/securesms/scribbles/widget/ColorPaletteAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/scribbles/widget/ColorPaletteAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/scribbles/widget/ColorPaletteAdapter.java
diff --git a/src/org/thoughtcrime/securesms/scribbles/widget/VerticalSlideColorPicker.java b/src/main/java/org/thoughtcrime/securesms/scribbles/widget/VerticalSlideColorPicker.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/scribbles/widget/VerticalSlideColorPicker.java
rename to src/main/java/org/thoughtcrime/securesms/scribbles/widget/VerticalSlideColorPicker.java
diff --git a/src/org/thoughtcrime/securesms/search/SearchFragment.java b/src/main/java/org/thoughtcrime/securesms/search/SearchFragment.java
similarity index 75%
rename from src/org/thoughtcrime/securesms/search/SearchFragment.java
rename to src/main/java/org/thoughtcrime/securesms/search/SearchFragment.java
index 557e290ed..a292f69fd 100644
--- a/src/org/thoughtcrime/securesms/search/SearchFragment.java
+++ b/src/main/java/org/thoughtcrime/securesms/search/SearchFragment.java
@@ -1,28 +1,33 @@
package org.thoughtcrime.securesms.search;
-import androidx.lifecycle.ViewModelProvider;
-import androidx.lifecycle.ViewModelProviders;
+import static org.thoughtcrime.securesms.util.RelayUtil.isRelayingMessageContent;
+
import android.content.res.Configuration;
import android.os.Bundle;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-import androidx.appcompat.app.AlertDialog;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AlertDialog;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.lifecycle.ViewModelProviders;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcChatlist;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcMsg;
+import org.thoughtcrime.securesms.BaseConversationListAdapter;
+import org.thoughtcrime.securesms.BaseConversationListFragment;
import org.thoughtcrime.securesms.ConversationListActivity;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.connect.DcEventCenter;
@@ -32,13 +37,13 @@ import org.thoughtcrime.securesms.search.model.SearchResult;
import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
import java.util.Locale;
-
-import static org.thoughtcrime.securesms.util.RelayUtil.isRelayingMessageContent;
+import java.util.Set;
/**
* A fragment that is displayed to do full-text search of messages, groups, and contacts.
*/
-public class SearchFragment extends Fragment implements SearchListAdapter.EventListener, DcEventCenter.DcEventDelegate {
+public class SearchFragment extends BaseConversationListFragment
+ implements SearchListAdapter.EventListener, DcEventCenter.DcEventDelegate {
public static final String TAG = "SearchFragment";
public static final String EXTRA_LOCALE = "locale";
@@ -68,8 +73,8 @@ public class SearchFragment extends Fragment implements SearchListAdapter.EventL
this.locale = (Locale) getArguments().getSerializable(EXTRA_LOCALE);
- viewModel = ViewModelProviders.of(this, (ViewModelProvider.Factory) new SearchViewModel.Factory(getContext())).get(SearchViewModel.class);
- DcEventCenter eventCenter = DcHelper.getEventCenter(getContext());
+ viewModel = ViewModelProviders.of(this, (ViewModelProvider.Factory) new SearchViewModel.Factory(requireContext())).get(SearchViewModel.class);
+ DcEventCenter eventCenter = DcHelper.getEventCenter(requireContext());
eventCenter.addObserver(DcContext.DC_EVENT_CHAT_MODIFIED, this);
eventCenter.addObserver(DcContext.DC_EVENT_CONTACTS_CHANGED, this);
eventCenter.addObserver(DcContext.DC_EVENT_INCOMING_MSG, this);
@@ -95,10 +100,12 @@ public class SearchFragment extends Fragment implements SearchListAdapter.EventL
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
noResultsView = view.findViewById(R.id.search_no_results);
listView = view.findViewById(R.id.search_list);
+ fab = view.findViewById(R.id.fab);
listAdapter = new SearchListAdapter(getContext(), GlideApp.with(this), this, locale);
listDecoration = new StickyHeaderDecoration(listAdapter, false, true);
+ fab.setVisibility(View.GONE);
listView.setAdapter(listAdapter);
listView.addItemDecoration(listDecoration);
listView.setLayoutManager(new LinearLayoutManager(getContext()));
@@ -107,7 +114,7 @@ public class SearchFragment extends Fragment implements SearchListAdapter.EventL
@Override
public void onStart() {
super.onStart();
- viewModel.includeMessageQueries(!isRelayingMessageContent(getActivity()));
+ viewModel.setForwardingMode(isRelayingMessageContent(getActivity()));
viewModel.getSearchResult().observe(this, result -> {
result = result != null ? result : SearchResult.EMPTY;
@@ -129,7 +136,7 @@ public class SearchFragment extends Fragment implements SearchListAdapter.EventL
}
@Override
- public void onConfigurationChanged(Configuration newConfig) {
+ public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (listDecoration != null) {
@@ -139,26 +146,32 @@ public class SearchFragment extends Fragment implements SearchListAdapter.EventL
@Override
public void onDestroy() {
- DcHelper.getEventCenter(getContext()).removeObservers(this);
+ DcHelper.getEventCenter(requireContext()).removeObservers(this);
super.onDestroy();
}
@Override
public void onConversationClicked(@NonNull DcChatlist.Item chatlistItem) {
- ConversationListActivity conversationList = (ConversationListActivity) getActivity();
- if (conversationList != null) {
- conversationList.onCreateConversation(chatlistItem.chatId);
- }
+ onItemClick(chatlistItem.chatId);
+ }
+
+ @Override
+ public void onConversationLongClicked(@NonNull DcChatlist.Item chatlistItem) {
+ onItemLongClick(chatlistItem.chatId);
}
@Override
public void onContactClicked(@NonNull DcContact contact) {
+ if (actionMode != null) {
+ return;
+ }
+
ConversationListActivity conversationList = (ConversationListActivity) getActivity();
if (conversationList != null) {
- DcContext dcContext = DcHelper.getContext(getContext());
+ DcContext dcContext = DcHelper.getContext(requireContext());
int chatId = dcContext.getChatIdByContactId(contact.getId());
if(chatId==0) {
- new AlertDialog.Builder(getContext())
+ new AlertDialog.Builder(requireContext())
.setMessage(getString(R.string.ask_start_chat_with, contact.getNameNAddr()))
.setCancelable(true)
.setNegativeButton(android.R.string.cancel, null)
@@ -175,9 +188,13 @@ public class SearchFragment extends Fragment implements SearchListAdapter.EventL
@Override
public void onMessageClicked(@NonNull DcMsg message) {
+ if (actionMode != null) {
+ return;
+ }
+
ConversationListActivity conversationList = (ConversationListActivity) getActivity();
if (conversationList != null) {
- DcContext dcContext = DcHelper.getContext(getContext());
+ DcContext dcContext = DcHelper.getContext(requireContext());
int chatId = message.getChatId();
int startingPosition = DcMsg.getMessagePosition(message, dcContext);
conversationList.openConversation(chatId, startingPosition);
@@ -198,4 +215,31 @@ public class SearchFragment extends Fragment implements SearchListAdapter.EventL
viewModel.updateQuery();
}
}
+
+ @Override
+ protected boolean offerToArchive() {
+ DcContext dcContext = DcHelper.getContext(requireActivity());
+ final Set selectedChats = listAdapter.getBatchSelections();
+ for (long chatId : selectedChats) {
+ DcChat dcChat = dcContext.getChat((int)chatId);
+ if (dcChat.getVisibility() != DcChat.DC_CHAT_VISIBILITY_ARCHIVED) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ protected void setFabVisibility(boolean isActionMode) {
+ if (isActionMode && isRelayingMessageContent(getActivity())) {
+ fab.setVisibility(View.VISIBLE);
+ } else {
+ fab.setVisibility(View.GONE);
+ }
+ }
+
+ @Override
+ protected BaseConversationListAdapter getListAdapter() {
+ return listAdapter;
+ }
}
diff --git a/src/org/thoughtcrime/securesms/search/SearchListAdapter.java b/src/main/java/org/thoughtcrime/securesms/search/SearchListAdapter.java
similarity index 90%
rename from src/org/thoughtcrime/securesms/search/SearchListAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/search/SearchListAdapter.java
index 7923822a3..b29c66797 100644
--- a/src/org/thoughtcrime/securesms/search/SearchListAdapter.java
+++ b/src/main/java/org/thoughtcrime/securesms/search/SearchListAdapter.java
@@ -1,19 +1,21 @@
package org.thoughtcrime.securesms.search;
import android.content.Context;
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.b44t.messenger.DcChatlist;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcMsg;
+import org.thoughtcrime.securesms.BaseConversationListAdapter;
import org.thoughtcrime.securesms.ConversationListItem;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.connect.DcHelper;
@@ -22,10 +24,10 @@ import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.search.model.SearchResult;
import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
-import java.util.Collections;
import java.util.Locale;
+import java.util.Set;
-class SearchListAdapter extends RecyclerView.Adapter
+class SearchListAdapter extends BaseConversationListAdapter
implements StickyHeaderDecoration.StickyHeaderAdapter
{
private static final int TYPE_CHATS = 1;
@@ -66,7 +68,7 @@ class SearchListAdapter extends RecyclerView.Adapter selectedThreads,
+ boolean batchMode,
@Nullable String query)
{
DcContext dcContext = DcHelper.getContext(context);
ThreadRecord threadRecord = DcHelper.getThreadRecord(context, chatlistItem.summary, dcContext.getChat(chatlistItem.chatId));
- root.bind(threadRecord, chatlistItem.msgId, chatlistItem.summary, glideRequests, locale, Collections.emptySet(), false, query);
+ root.bind(threadRecord, chatlistItem.msgId, chatlistItem.summary, glideRequests, locale, selectedThreads, batchMode, query);
root.setOnClickListener(view -> eventListener.onConversationClicked(chatlistItem));
+ root.setOnLongClickListener(view -> {
+ eventListener.onConversationLongClicked(chatlistItem);
+ return true;
+ });
}
void bind(@NonNull DcContact contactResult,
diff --git a/src/org/thoughtcrime/securesms/search/SearchViewModel.java b/src/main/java/org/thoughtcrime/securesms/search/SearchViewModel.java
similarity index 91%
rename from src/org/thoughtcrime/securesms/search/SearchViewModel.java
rename to src/main/java/org/thoughtcrime/securesms/search/SearchViewModel.java
index e436e65e5..900674a56 100644
--- a/src/org/thoughtcrime/securesms/search/SearchViewModel.java
+++ b/src/main/java/org/thoughtcrime/securesms/search/SearchViewModel.java
@@ -22,7 +22,7 @@ class SearchViewModel extends ViewModel {
private final ObservingLiveData searchResult;
private String lastQuery;
private final DcContext dcContext;
- private boolean queryMessages = true;
+ private boolean forwarding = false;
private boolean inBgSearch;
private boolean needsAnotherBgSearch;
@@ -35,8 +35,8 @@ class SearchViewModel extends ViewModel {
return searchResult;
}
- public void includeMessageQueries(boolean include) {
- queryMessages = include;
+ public void setForwardingMode(boolean forwarding) {
+ this.forwarding = forwarding;
}
@@ -69,7 +69,7 @@ class SearchViewModel extends ViewModel {
}
}
- private void queryAndCallback(@NonNull String query, @NonNull SearchRepository.Callback callback) {
+ private void queryAndCallback(@NonNull String query, @NonNull SearchViewModel.Callback callback) {
int overallCnt = 0;
if (TextUtils.isEmpty(query)) {
@@ -79,7 +79,7 @@ class SearchViewModel extends ViewModel {
// #1 search for chats
long startMs = System.currentTimeMillis();
- DcChatlist conversations = dcContext.getChatlist(0, query, 0);
+ DcChatlist conversations = dcContext.getChatlist(forwarding? DcContext.DC_GCL_FOR_FORWARDING : 0, query, 0);
overallCnt += conversations.getCnt();
Log.i(TAG, "⏰ getChatlist(" + query + "): " + (System.currentTimeMillis() - startMs) + "ms");
@@ -96,7 +96,7 @@ class SearchViewModel extends ViewModel {
Log.i(TAG, "⏰ getContacts(" + query + "): " + (System.currentTimeMillis() - startMs) + "ms");
// #3 search for messages
- if (!queryMessages) {
+ if (forwarding) {
Log.i(TAG, "... searchMsgs() disabled by caller");
callback.onResult(new SearchResult(query, contacts, conversations, new int[0]));
return;
@@ -147,4 +147,8 @@ class SearchViewModel extends ViewModel {
return modelClass.cast(new SearchViewModel(context));
}
}
+
+ public interface Callback {
+ void onResult(@NonNull SearchResult result);
+ }
}
diff --git a/src/org/thoughtcrime/securesms/search/model/SearchResult.java b/src/main/java/org/thoughtcrime/securesms/search/model/SearchResult.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/search/model/SearchResult.java
rename to src/main/java/org/thoughtcrime/securesms/search/model/SearchResult.java
diff --git a/src/org/thoughtcrime/securesms/service/BootReceiver.java b/src/main/java/org/thoughtcrime/securesms/service/BootReceiver.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/service/BootReceiver.java
rename to src/main/java/org/thoughtcrime/securesms/service/BootReceiver.java
diff --git a/src/org/thoughtcrime/securesms/service/GenericForegroundService.java b/src/main/java/org/thoughtcrime/securesms/service/GenericForegroundService.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/service/GenericForegroundService.java
rename to src/main/java/org/thoughtcrime/securesms/service/GenericForegroundService.java
diff --git a/src/org/thoughtcrime/securesms/service/IPCAddAccountsService.java b/src/main/java/org/thoughtcrime/securesms/service/IPCAddAccountsService.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/service/IPCAddAccountsService.java
rename to src/main/java/org/thoughtcrime/securesms/service/IPCAddAccountsService.java
diff --git a/src/org/thoughtcrime/securesms/service/NotificationController.java b/src/main/java/org/thoughtcrime/securesms/service/NotificationController.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/service/NotificationController.java
rename to src/main/java/org/thoughtcrime/securesms/service/NotificationController.java
diff --git a/src/org/thoughtcrime/securesms/service/PanicResponderListener.java b/src/main/java/org/thoughtcrime/securesms/service/PanicResponderListener.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/service/PanicResponderListener.java
rename to src/main/java/org/thoughtcrime/securesms/service/PanicResponderListener.java
diff --git a/src/org/thoughtcrime/securesms/util/AccessibilityUtil.java b/src/main/java/org/thoughtcrime/securesms/util/AccessibilityUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/AccessibilityUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/AccessibilityUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/AndroidSignalProtocolLogger.java b/src/main/java/org/thoughtcrime/securesms/util/AndroidSignalProtocolLogger.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/AndroidSignalProtocolLogger.java
rename to src/main/java/org/thoughtcrime/securesms/util/AndroidSignalProtocolLogger.java
diff --git a/src/org/thoughtcrime/securesms/util/AsyncLoader.java b/src/main/java/org/thoughtcrime/securesms/util/AsyncLoader.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/AsyncLoader.java
rename to src/main/java/org/thoughtcrime/securesms/util/AsyncLoader.java
diff --git a/src/org/thoughtcrime/securesms/util/BitmapDecodingException.java b/src/main/java/org/thoughtcrime/securesms/util/BitmapDecodingException.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/BitmapDecodingException.java
rename to src/main/java/org/thoughtcrime/securesms/util/BitmapDecodingException.java
diff --git a/src/org/thoughtcrime/securesms/util/BitmapUtil.java b/src/main/java/org/thoughtcrime/securesms/util/BitmapUtil.java
similarity index 80%
rename from src/org/thoughtcrime/securesms/util/BitmapUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/BitmapUtil.java
index ef704f8b2..8c2a94703 100644
--- a/src/org/thoughtcrime/securesms/util/BitmapUtil.java
+++ b/src/main/java/org/thoughtcrime/securesms/util/BitmapUtil.java
@@ -1,42 +1,25 @@
package org.thoughtcrime.securesms.util;
-import android.content.Context;
import android.graphics.Bitmap;
-import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.ColorFilter;
import android.graphics.ImageFormat;
-import android.graphics.Paint;
-import android.graphics.PorterDuff;
-import android.graphics.PorterDuffColorFilter;
import android.graphics.Rect;
import android.graphics.YuvImage;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
-import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
import androidx.exifinterface.media.ExifInterface;
-import androidx.core.content.ContextCompat;
import android.util.Log;
import android.util.Pair;
-import android.view.View;
-
-import com.bumptech.glide.load.engine.DiskCacheStrategy;
-import com.bumptech.glide.load.resource.bitmap.DownsampleStrategy;
-
-import org.thoughtcrime.securesms.mms.GlideApp;
-import org.thoughtcrime.securesms.mms.MediaConstraints;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.microedition.khronos.egl.EGL10;
@@ -268,45 +251,4 @@ public class BitmapUtil {
return Math.min(maximumTextureSize, MAX_ALLOWED_TEXTURE_SIZE);
}
-
- /**
- * Generate a Bitmap from an Android SDK View.
- *
- * @param view the View to be drawn to a Bitmap
- * @return the generated bitmap
- */
- public static Bitmap generate(@NonNull View view) {
- int measureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
- view.measure(measureSpec, measureSpec);
-
- int measuredWidth = view.getMeasuredWidth();
- int measuredHeight = view.getMeasuredHeight();
-
- view.layout(0, 0, measuredWidth, measuredHeight);
- Bitmap bitmap = Bitmap.createBitmap(measuredWidth, measuredHeight, Bitmap.Config.ARGB_8888);
- bitmap.eraseColor(Color.TRANSPARENT);
- Canvas canvas = new Canvas(bitmap);
- view.draw(canvas);
- return bitmap;
- }
-
- public static Bitmap generateColoredBitmap(Context context, int colorFilter, @DrawableRes int res) {
- Bitmap icon = getBitmap(context, res);
- Paint paint = new Paint();
- ColorFilter filter = new PorterDuffColorFilter(colorFilter, PorterDuff.Mode.SRC_IN);
- paint.setColorFilter(filter);
- Canvas canvas = new Canvas(icon);
- canvas.drawBitmap(icon, 0, 0, paint);
- return icon;
- }
-
- private static Bitmap getBitmap(Context context, @DrawableRes int res) {
- Drawable drawable = ContextCompat.getDrawable(context, res);
- Canvas canvas = new Canvas();
- Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
- canvas.setBitmap(bitmap);
- drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
- drawable.draw(canvas);
- return bitmap;
- }
}
diff --git a/src/org/thoughtcrime/securesms/util/Conversions.java b/src/main/java/org/thoughtcrime/securesms/util/Conversions.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/Conversions.java
rename to src/main/java/org/thoughtcrime/securesms/util/Conversions.java
diff --git a/src/org/thoughtcrime/securesms/util/DateUtils.java b/src/main/java/org/thoughtcrime/securesms/util/DateUtils.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/DateUtils.java
rename to src/main/java/org/thoughtcrime/securesms/util/DateUtils.java
diff --git a/src/org/thoughtcrime/securesms/util/Debouncer.java b/src/main/java/org/thoughtcrime/securesms/util/Debouncer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/Debouncer.java
rename to src/main/java/org/thoughtcrime/securesms/util/Debouncer.java
diff --git a/src/org/thoughtcrime/securesms/util/DrawableUtil.java b/src/main/java/org/thoughtcrime/securesms/util/DrawableUtil.java
similarity index 53%
rename from src/org/thoughtcrime/securesms/util/DrawableUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/DrawableUtil.java
index a34b897a7..b1aaef80b 100644
--- a/src/org/thoughtcrime/securesms/util/DrawableUtil.java
+++ b/src/main/java/org/thoughtcrime/securesms/util/DrawableUtil.java
@@ -2,11 +2,8 @@ package org.thoughtcrime.securesms.util;
import android.graphics.Bitmap;
import android.graphics.Canvas;
-import android.graphics.drawable.Drawable;
-import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
-import androidx.core.graphics.drawable.DrawableCompat;
public final class DrawableUtil {
@@ -14,18 +11,6 @@ public final class DrawableUtil {
private static final int SHORTCUT_INFO_WRAPPED_SIZE = ViewUtil.dpToPx(72);
private static final int SHORTCUT_INFO_PADDING = (SHORTCUT_INFO_BITMAP_SIZE - SHORTCUT_INFO_WRAPPED_SIZE) / 2;
- private DrawableUtil() {}
-
- public static @NonNull Bitmap toBitmap(@NonNull Drawable drawable, int width, int height) {
- Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
- Canvas canvas = new Canvas(bitmap);
-
- drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
- drawable.draw(canvas);
-
- return bitmap;
- }
-
public static @NonNull Bitmap wrapBitmapForShortcutInfo(@NonNull Bitmap toWrap) {
Bitmap bitmap = Bitmap.createBitmap(SHORTCUT_INFO_BITMAP_SIZE, SHORTCUT_INFO_BITMAP_SIZE, Bitmap.Config.ARGB_8888);
Bitmap scaled = Bitmap.createScaledBitmap(toWrap, SHORTCUT_INFO_WRAPPED_SIZE, SHORTCUT_INFO_WRAPPED_SIZE, true);
@@ -35,13 +20,4 @@ public final class DrawableUtil {
return bitmap;
}
-
- /**
- * Returns a new {@link Drawable} that safely wraps and tints the provided drawable.
- */
- public static @NonNull Drawable tint(@NonNull Drawable drawable, @ColorInt int tint) {
- Drawable tinted = DrawableCompat.wrap(drawable).mutate();
- DrawableCompat.setTint(tinted, tint);
- return tinted;
- }
}
diff --git a/src/org/thoughtcrime/securesms/util/DynamicLanguage.java b/src/main/java/org/thoughtcrime/securesms/util/DynamicLanguage.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/DynamicLanguage.java
rename to src/main/java/org/thoughtcrime/securesms/util/DynamicLanguage.java
diff --git a/src/org/thoughtcrime/securesms/util/DynamicNoActionBarTheme.java b/src/main/java/org/thoughtcrime/securesms/util/DynamicNoActionBarTheme.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/DynamicNoActionBarTheme.java
rename to src/main/java/org/thoughtcrime/securesms/util/DynamicNoActionBarTheme.java
diff --git a/src/org/thoughtcrime/securesms/util/DynamicTheme.java b/src/main/java/org/thoughtcrime/securesms/util/DynamicTheme.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/DynamicTheme.java
rename to src/main/java/org/thoughtcrime/securesms/util/DynamicTheme.java
diff --git a/src/org/thoughtcrime/securesms/util/FileProviderUtil.java b/src/main/java/org/thoughtcrime/securesms/util/FileProviderUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/FileProviderUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/FileProviderUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/FileUtils.java b/src/main/java/org/thoughtcrime/securesms/util/FileUtils.java
similarity index 85%
rename from src/org/thoughtcrime/securesms/util/FileUtils.java
rename to src/main/java/org/thoughtcrime/securesms/util/FileUtils.java
index b4c1683eb..b7a55f551 100644
--- a/src/org/thoughtcrime/securesms/util/FileUtils.java
+++ b/src/main/java/org/thoughtcrime/securesms/util/FileUtils.java
@@ -2,13 +2,8 @@ package org.thoughtcrime.securesms.util;
import android.text.TextUtils;
-import java.io.FileDescriptor;
-import java.nio.charset.StandardCharsets;
-
public class FileUtils {
- public static native int getFileDescriptorOwner(FileDescriptor fileDescriptor);
-
public static String sanitizeFilename(String name) {
if (TextUtils.isEmpty(name) || ".".equals(name) || "..".equals(name)) {
return "(invalid)";
diff --git a/src/org/thoughtcrime/securesms/util/FutureTaskListener.java b/src/main/java/org/thoughtcrime/securesms/util/FutureTaskListener.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/FutureTaskListener.java
rename to src/main/java/org/thoughtcrime/securesms/util/FutureTaskListener.java
diff --git a/src/org/thoughtcrime/securesms/util/Hash.java b/src/main/java/org/thoughtcrime/securesms/util/Hash.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/Hash.java
rename to src/main/java/org/thoughtcrime/securesms/util/Hash.java
diff --git a/src/org/thoughtcrime/securesms/util/Hex.java b/src/main/java/org/thoughtcrime/securesms/util/Hex.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/Hex.java
rename to src/main/java/org/thoughtcrime/securesms/util/Hex.java
diff --git a/src/org/thoughtcrime/securesms/util/IntentUtils.java b/src/main/java/org/thoughtcrime/securesms/util/IntentUtils.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/IntentUtils.java
rename to src/main/java/org/thoughtcrime/securesms/util/IntentUtils.java
diff --git a/src/org/thoughtcrime/securesms/util/JsonUtils.java b/src/main/java/org/thoughtcrime/securesms/util/JsonUtils.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/JsonUtils.java
rename to src/main/java/org/thoughtcrime/securesms/util/JsonUtils.java
diff --git a/src/org/thoughtcrime/securesms/util/LRUCache.java b/src/main/java/org/thoughtcrime/securesms/util/LRUCache.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/LRUCache.java
rename to src/main/java/org/thoughtcrime/securesms/util/LRUCache.java
diff --git a/src/org/thoughtcrime/securesms/util/ListenableFutureTask.java b/src/main/java/org/thoughtcrime/securesms/util/ListenableFutureTask.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/ListenableFutureTask.java
rename to src/main/java/org/thoughtcrime/securesms/util/ListenableFutureTask.java
diff --git a/src/org/thoughtcrime/securesms/util/LongClickCopySpan.java b/src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java
similarity index 95%
rename from src/org/thoughtcrime/securesms/util/LongClickCopySpan.java
rename to src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java
index e389868e5..5801ac607 100644
--- a/src/org/thoughtcrime/securesms/util/LongClickCopySpan.java
+++ b/src/main/java/org/thoughtcrime/securesms/util/LongClickCopySpan.java
@@ -16,6 +16,7 @@ import com.b44t.messenger.DcContext;
import org.thoughtcrime.securesms.ConversationActivity;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.connect.DcHelper;
+import org.thoughtcrime.securesms.qr.QrCodeHandler;
import org.thoughtcrime.securesms.util.Util;
public class LongClickCopySpan extends ClickableSpan {
@@ -72,6 +73,9 @@ public class LongClickCopySpan extends ClickableSpan {
} catch (Exception e) {
e.printStackTrace();
}
+ } else if (Util.isInviteURL(url)) {
+ QrCodeHandler qrCodeHandler = new QrCodeHandler((Activity) widget.getContext());
+ qrCodeHandler.handleQrData(url);
} else {
IntentUtils.showBrowserIntent(widget.getContext(), url);
}
diff --git a/src/org/thoughtcrime/securesms/util/LongClickMovementMethod.java b/src/main/java/org/thoughtcrime/securesms/util/LongClickMovementMethod.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/LongClickMovementMethod.java
rename to src/main/java/org/thoughtcrime/securesms/util/LongClickMovementMethod.java
diff --git a/src/org/thoughtcrime/securesms/util/MailtoUtil.java b/src/main/java/org/thoughtcrime/securesms/util/MailtoUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/MailtoUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/MailtoUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/MediaUtil.java b/src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java
similarity index 97%
rename from src/org/thoughtcrime/securesms/util/MediaUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java
index 70ca04ce4..7b205b992 100644
--- a/src/org/thoughtcrime/securesms/util/MediaUtil.java
+++ b/src/main/java/org/thoughtcrime/securesms/util/MediaUtil.java
@@ -26,6 +26,7 @@ import org.thoughtcrime.securesms.mms.ImageSlide;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.StickerSlide;
+import org.thoughtcrime.securesms.mms.VcardSlide;
import org.thoughtcrime.securesms.mms.VideoSlide;
import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
@@ -48,6 +49,7 @@ public class MediaUtil {
public static final String VIDEO_UNSPECIFIED = "video/*";
public static final String OCTET = "application/octet-stream";
public static final String WEBXDC = "application/webxdc+zip";
+ public static final String VCARD = "text/vcard";
public static Slide getSlideForMsg(Context context, DcMsg dcMsg) {
@@ -63,6 +65,8 @@ public class MediaUtil {
} else if (dcMsg.getType() == DcMsg.DC_MSG_AUDIO
|| dcMsg.getType() == DcMsg.DC_MSG_VOICE) {
slide = new AudioSlide(context, dcMsg);
+ } else if (dcMsg.getType() == DcMsg.DC_MSG_VCARD) {
+ slide = new VcardSlide(context, dcMsg);
} else if (dcMsg.getType() == DcMsg.DC_MSG_FILE
|| dcMsg.getType() == DcMsg.DC_MSG_WEBXDC) {
slide = new DocumentSlide(context, dcMsg);
@@ -301,6 +305,8 @@ public class MediaUtil {
return "webp";
case WEBXDC:
return "xdc";
+ case VCARD:
+ return "vcf";
}
return null;
}
diff --git a/src/org/thoughtcrime/securesms/util/Pair.java b/src/main/java/org/thoughtcrime/securesms/util/Pair.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/Pair.java
rename to src/main/java/org/thoughtcrime/securesms/util/Pair.java
diff --git a/src/org/thoughtcrime/securesms/util/ParcelUtil.java b/src/main/java/org/thoughtcrime/securesms/util/ParcelUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/ParcelUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/ParcelUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/Prefs.java b/src/main/java/org/thoughtcrime/securesms/util/Prefs.java
similarity index 97%
rename from src/org/thoughtcrime/securesms/util/Prefs.java
rename to src/main/java/org/thoughtcrime/securesms/util/Prefs.java
index 56a8e1f3a..c12d2f5bd 100644
--- a/src/org/thoughtcrime/securesms/util/Prefs.java
+++ b/src/main/java/org/thoughtcrime/securesms/util/Prefs.java
@@ -15,6 +15,7 @@ import androidx.core.app.NotificationCompat;
import com.b44t.messenger.DcContext;
+import org.thoughtcrime.securesms.BuildConfig;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.preferences.widgets.NotificationPrivacyPreference;
@@ -61,13 +62,11 @@ public class Prefs {
private static final String PREF_CONTACT_PHOTO_IDENTIFIERS = "pref_contact_photo_identifiers";
- private static final String MAP_CENTER_LATITUDE = "pref_map_center_latitude";
- private static final String MAP_CENTER_LONGITUDE = "pref_map_center_longitude";
- private static final String MAP_ZOOM = "pref_map_zoom";
-
public static final String ALWAYS_LOAD_REMOTE_CONTENT = "pref_always_load_remote_content";
public static final boolean ALWAYS_LOAD_REMOTE_CONTENT_DEFAULT = false;
+ public static final String LAST_DEVICE_MSG_LABEL = "pref_last_device_msg_id";
+
public enum VibrateState {
DEFAULT(0), ENABLED(1), DISABLED(2);
private final int id;
@@ -173,6 +172,10 @@ public class Prefs {
return getBooleanPreference(context, NOTIFICATION_PREF, true);
}
+ public static boolean isPushEnabled(Context context) {
+ return BuildConfig.USE_PLAY_SERVICES && getBooleanPreference(context, "pref_push_enabled", true);
+ }
+
public static boolean isHardCompressionEnabled(Context context) {
return DcHelper.getContext(context).getConfigInt(DcHelper.CONFIG_MEDIA_QUALITY) == DcContext.DC_MEDIA_QUALITY_WORSE;
}
diff --git a/src/org/thoughtcrime/securesms/util/RelayUtil.java b/src/main/java/org/thoughtcrime/securesms/util/RelayUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/RelayUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/RelayUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/ResUtil.java b/src/main/java/org/thoughtcrime/securesms/util/ResUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/ResUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/ResUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/SaveAttachmentTask.java b/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/SaveAttachmentTask.java
rename to src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java
diff --git a/src/org/thoughtcrime/securesms/util/ScreenLockUtil.java b/src/main/java/org/thoughtcrime/securesms/util/ScreenLockUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/ScreenLockUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/ScreenLockUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/SelectedContactsAdapter.java b/src/main/java/org/thoughtcrime/securesms/util/SelectedContactsAdapter.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/SelectedContactsAdapter.java
rename to src/main/java/org/thoughtcrime/securesms/util/SelectedContactsAdapter.java
diff --git a/src/org/thoughtcrime/securesms/util/SendRelayedMessageUtil.java b/src/main/java/org/thoughtcrime/securesms/util/SendRelayedMessageUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/SendRelayedMessageUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/SendRelayedMessageUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/ServiceUtil.java b/src/main/java/org/thoughtcrime/securesms/util/ServiceUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/ServiceUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/ServiceUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/SignalProtocolLogger.java b/src/main/java/org/thoughtcrime/securesms/util/SignalProtocolLogger.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/SignalProtocolLogger.java
rename to src/main/java/org/thoughtcrime/securesms/util/SignalProtocolLogger.java
diff --git a/src/org/thoughtcrime/securesms/util/SignalProtocolLoggerProvider.java b/src/main/java/org/thoughtcrime/securesms/util/SignalProtocolLoggerProvider.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/SignalProtocolLoggerProvider.java
rename to src/main/java/org/thoughtcrime/securesms/util/SignalProtocolLoggerProvider.java
diff --git a/src/org/thoughtcrime/securesms/util/SpanUtil.java b/src/main/java/org/thoughtcrime/securesms/util/SpanUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/SpanUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/SpanUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/StickyHeaderDecoration.java b/src/main/java/org/thoughtcrime/securesms/util/StickyHeaderDecoration.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/StickyHeaderDecoration.java
rename to src/main/java/org/thoughtcrime/securesms/util/StickyHeaderDecoration.java
diff --git a/src/org/thoughtcrime/securesms/util/Stopwatch.java b/src/main/java/org/thoughtcrime/securesms/util/Stopwatch.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/Stopwatch.java
rename to src/main/java/org/thoughtcrime/securesms/util/Stopwatch.java
diff --git a/src/org/thoughtcrime/securesms/util/StorageUtil.java b/src/main/java/org/thoughtcrime/securesms/util/StorageUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/StorageUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/StorageUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/StreamUtil.java b/src/main/java/org/thoughtcrime/securesms/util/StreamUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/StreamUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/StreamUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/ThemeUtil.java b/src/main/java/org/thoughtcrime/securesms/util/ThemeUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/ThemeUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/ThemeUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/ThreadUtil.java b/src/main/java/org/thoughtcrime/securesms/util/ThreadUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/ThreadUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/ThreadUtil.java
diff --git a/src/org/thoughtcrime/securesms/util/Util.java b/src/main/java/org/thoughtcrime/securesms/util/Util.java
similarity index 94%
rename from src/org/thoughtcrime/securesms/util/Util.java
rename to src/main/java/org/thoughtcrime/securesms/util/Util.java
index 90f9a03af..6c962c2cf 100644
--- a/src/org/thoughtcrime/securesms/util/Util.java
+++ b/src/main/java/org/thoughtcrime/securesms/util/Util.java
@@ -23,6 +23,7 @@ import android.content.ClipDescription;
import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
+import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
@@ -47,15 +48,14 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.security.SecureRandom;
import java.text.DecimalFormat;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Objects;
import java.util.concurrent.CountDownLatch;
public class Util {
private static final String TAG = Util.class.getSimpleName();
+ private static final String INVITE_DOMAIN = "i.delta.chat";
public static final Handler handler = new Handler(Looper.getMainLooper());
@@ -63,6 +63,23 @@ public class Util {
return value == null || value.getText() == null || TextUtils.isEmpty(value.getTextTrimmed());
}
+ public static boolean isInviteURL(Uri uri) {
+ return INVITE_DOMAIN.equals(uri.getHost()) && uri.getEncodedFragment() != null;
+ }
+
+ public static boolean isInviteURL(String url) {
+ try {
+ return isInviteURL(Uri.parse(url));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
+ public static String QrDataToInviteURL(String qrData) {
+ return "https://" + INVITE_DOMAIN + "/#" + qrData.split(":", 2)[1].replaceFirst("#", "&");
+ }
+
public static CharSequence getBoldedString(String value) {
SpannableString spanned = new SpannableString(value);
spanned.setSpan(new StyleSpan(Typeface.BOLD), 0,
@@ -149,16 +166,6 @@ public class Util {
return success;
}
- public static byte[] getSecretBytes(int size) {
- byte[] secret = new byte[size];
- getSecureRandom().nextBytes(secret);
- return secret;
- }
-
- public static SecureRandom getSecureRandom() {
- return new SecureRandom();
- }
-
public static boolean isMainThread() {
return Looper.myLooper() == Looper.getMainLooper();
}
diff --git a/src/org/thoughtcrime/securesms/util/ViewUtil.java b/src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java
similarity index 90%
rename from src/org/thoughtcrime/securesms/util/ViewUtil.java
rename to src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java
index c9f67e73d..ff6ffd3c8 100644
--- a/src/org/thoughtcrime/securesms/util/ViewUtil.java
+++ b/src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java
@@ -38,7 +38,6 @@ import android.view.ViewGroup;
import android.view.ViewStub;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
-import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import com.b44t.messenger.util.concurrent.ListenableFuture;
@@ -49,47 +48,19 @@ import org.thoughtcrime.securesms.util.views.Stub;
public class ViewUtil {
@SuppressWarnings("deprecation")
public static void setBackground(final @NonNull View v, final @Nullable Drawable drawable) {
- if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
- v.setBackground(drawable);
- } else {
- v.setBackgroundDrawable(drawable);
- }
- }
-
- public static void setY(final @NonNull View v, final int y) {
- if (VERSION.SDK_INT >= 11) {
- ViewCompat.setY(v, y);
- } else {
- ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams)v.getLayoutParams();
- params.topMargin = y;
- v.setLayoutParams(params);
- }
+ v.setBackground(drawable);
}
public static float getY(final @NonNull View v) {
- if (VERSION.SDK_INT >= 11) {
- return ViewCompat.getY(v);
- } else {
- return ((ViewGroup.MarginLayoutParams)v.getLayoutParams()).topMargin;
- }
+ return ViewCompat.getY(v);
}
public static void setX(final @NonNull View v, final int x) {
- if (VERSION.SDK_INT >= 11) {
- ViewCompat.setX(v, x);
- } else {
- ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams)v.getLayoutParams();
- params.leftMargin = x;
- v.setLayoutParams(params);
- }
+ ViewCompat.setX(v, x);
}
public static float getX(final @NonNull View v) {
- if (VERSION.SDK_INT >= 11) {
- return ViewCompat.getX(v);
- } else {
- return ((LayoutParams)v.getLayoutParams()).leftMargin;
- }
+ return ViewCompat.getX(v);
}
public static void swapChildInPlace(ViewGroup parent, View toRemove, View toAdd, int defaultIndex) {
diff --git a/src/org/thoughtcrime/securesms/util/concurrent/AssertedSuccessListener.java b/src/main/java/org/thoughtcrime/securesms/util/concurrent/AssertedSuccessListener.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/concurrent/AssertedSuccessListener.java
rename to src/main/java/org/thoughtcrime/securesms/util/concurrent/AssertedSuccessListener.java
diff --git a/src/org/thoughtcrime/securesms/util/guava/Absent.java b/src/main/java/org/thoughtcrime/securesms/util/guava/Absent.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/guava/Absent.java
rename to src/main/java/org/thoughtcrime/securesms/util/guava/Absent.java
diff --git a/src/org/thoughtcrime/securesms/util/guava/Function.java b/src/main/java/org/thoughtcrime/securesms/util/guava/Function.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/guava/Function.java
rename to src/main/java/org/thoughtcrime/securesms/util/guava/Function.java
diff --git a/src/org/thoughtcrime/securesms/util/guava/Optional.java b/src/main/java/org/thoughtcrime/securesms/util/guava/Optional.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/guava/Optional.java
rename to src/main/java/org/thoughtcrime/securesms/util/guava/Optional.java
diff --git a/src/org/thoughtcrime/securesms/util/guava/Preconditions.java b/src/main/java/org/thoughtcrime/securesms/util/guava/Preconditions.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/guava/Preconditions.java
rename to src/main/java/org/thoughtcrime/securesms/util/guava/Preconditions.java
diff --git a/src/org/thoughtcrime/securesms/util/guava/Present.java b/src/main/java/org/thoughtcrime/securesms/util/guava/Present.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/guava/Present.java
rename to src/main/java/org/thoughtcrime/securesms/util/guava/Present.java
diff --git a/src/org/thoughtcrime/securesms/util/guava/Supplier.java b/src/main/java/org/thoughtcrime/securesms/util/guava/Supplier.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/guava/Supplier.java
rename to src/main/java/org/thoughtcrime/securesms/util/guava/Supplier.java
diff --git a/src/org/thoughtcrime/securesms/util/spans/CenterAlignedRelativeSizeSpan.java b/src/main/java/org/thoughtcrime/securesms/util/spans/CenterAlignedRelativeSizeSpan.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/spans/CenterAlignedRelativeSizeSpan.java
rename to src/main/java/org/thoughtcrime/securesms/util/spans/CenterAlignedRelativeSizeSpan.java
diff --git a/src/org/thoughtcrime/securesms/util/task/ProgressDialogAsyncTask.java b/src/main/java/org/thoughtcrime/securesms/util/task/ProgressDialogAsyncTask.java
similarity index 91%
rename from src/org/thoughtcrime/securesms/util/task/ProgressDialogAsyncTask.java
rename to src/main/java/org/thoughtcrime/securesms/util/task/ProgressDialogAsyncTask.java
index 1f3f30fd8..04c10d815 100644
--- a/src/org/thoughtcrime/securesms/util/task/ProgressDialogAsyncTask.java
+++ b/src/main/java/org/thoughtcrime/securesms/util/task/ProgressDialogAsyncTask.java
@@ -31,10 +31,6 @@ public abstract class ProgressDialogAsyncTask extends
this.onCancelListener = onCancelListener;
}
- public ProgressDialogAsyncTask(Context context, int title, int message) {
- this(context, context.getString(title), context.getString(message));
- }
-
@Override
protected void onPreExecute() {
final Context context = contextReference.get();
diff --git a/src/org/thoughtcrime/securesms/util/task/SnackbarAsyncTask.java b/src/main/java/org/thoughtcrime/securesms/util/task/SnackbarAsyncTask.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/task/SnackbarAsyncTask.java
rename to src/main/java/org/thoughtcrime/securesms/util/task/SnackbarAsyncTask.java
diff --git a/src/org/thoughtcrime/securesms/util/views/ConversationAdaptiveActionsToolbar.java b/src/main/java/org/thoughtcrime/securesms/util/views/ConversationAdaptiveActionsToolbar.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/views/ConversationAdaptiveActionsToolbar.java
rename to src/main/java/org/thoughtcrime/securesms/util/views/ConversationAdaptiveActionsToolbar.java
diff --git a/src/org/thoughtcrime/securesms/util/views/ProgressDialog.java b/src/main/java/org/thoughtcrime/securesms/util/views/ProgressDialog.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/views/ProgressDialog.java
rename to src/main/java/org/thoughtcrime/securesms/util/views/ProgressDialog.java
diff --git a/src/org/thoughtcrime/securesms/util/views/Stub.java b/src/main/java/org/thoughtcrime/securesms/util/views/Stub.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/util/views/Stub.java
rename to src/main/java/org/thoughtcrime/securesms/util/views/Stub.java
diff --git a/src/org/thoughtcrime/securesms/video/VideoPlayer.java b/src/main/java/org/thoughtcrime/securesms/video/VideoPlayer.java
similarity index 67%
rename from src/org/thoughtcrime/securesms/video/VideoPlayer.java
rename to src/main/java/org/thoughtcrime/securesms/video/VideoPlayer.java
index 7fddf7768..e5b001a41 100644
--- a/src/org/thoughtcrime/securesms/video/VideoPlayer.java
+++ b/src/main/java/org/thoughtcrime/securesms/video/VideoPlayer.java
@@ -17,17 +17,12 @@
package org.thoughtcrime.securesms.video;
import android.content.Context;
-import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.util.AttributeSet;
-import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
-import android.widget.MediaController;
-import android.widget.Toast;
-import android.widget.VideoView;
import com.google.android.exoplayer2.DefaultLoadControl;
import com.google.android.exoplayer2.ExoPlayerFactory;
@@ -48,23 +43,15 @@ import com.google.android.exoplayer2.upstream.DefaultBandwidthMeter;
import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory;
import org.thoughtcrime.securesms.R;
-import org.thoughtcrime.securesms.attachments.AttachmentServer;
-import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.mms.VideoSlide;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.video.exo.AttachmentDataSourceFactory;
-import java.io.IOException;
-
public class VideoPlayer extends FrameLayout {
- private static final String TAG = VideoPlayer.class.getName();
-
- @Nullable private final VideoView videoView;
@Nullable private final SimpleExoPlayerView exoView;
@Nullable private SimpleExoPlayer exoPlayer;
- @Nullable private AttachmentServer attachmentServer;
@Nullable private Window window;
public VideoPlayer(Context context) {
@@ -80,36 +67,21 @@ public class VideoPlayer extends FrameLayout {
inflate(context, R.layout.video_player, this);
- if (Build.VERSION.SDK_INT >= 16) {
- this.exoView = ViewUtil.findById(this, R.id.video_view);
- this.videoView = null;
- } else {
- this.videoView = ViewUtil.findById(this, R.id.video_view);
- this.exoView = null;
- initializeVideoViewControls(videoView);
- }
+ this.exoView = ViewUtil.findById(this, R.id.video_view);
}
public void setVideoSource(@NonNull VideoSlide videoSource, boolean autoplay)
- throws IOException
{
- if (Build.VERSION.SDK_INT >= 16) setExoViewSource(videoSource, autoplay);
- else setVideoViewSource(videoSource, autoplay);
+ setExoViewSource(videoSource, autoplay);
}
public void pause() {
- if (this.attachmentServer != null && this.videoView != null) {
- this.videoView.stopPlayback();
- } else if (this.exoPlayer != null) {
+ if (this.exoPlayer != null) {
this.exoPlayer.setPlayWhenReady(false);
}
}
public void cleanup() {
- if (this.attachmentServer != null) {
- this.attachmentServer.stop();
- }
-
if (this.exoPlayer != null) {
this.exoPlayer.release();
}
@@ -120,7 +92,6 @@ public class VideoPlayer extends FrameLayout {
}
private void setExoViewSource(@NonNull VideoSlide videoSource, boolean autoplay)
- throws IOException
{
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
@@ -142,40 +113,6 @@ public class VideoPlayer extends FrameLayout {
exoPlayer.setPlayWhenReady(autoplay);
}
- private void setVideoViewSource(@NonNull VideoSlide videoSource, boolean autoplay)
- throws IOException
- {
- if (this.attachmentServer != null) {
- this.attachmentServer.stop();
- }
-
- if (videoSource.getUri() != null && PartAuthority.isLocalUri(videoSource.getUri())) {
- Log.w(TAG, "Starting video attachment server for part provider Uri...");
- this.attachmentServer = new AttachmentServer(getContext(), videoSource.asAttachment());
- this.attachmentServer.start();
-
- //noinspection ConstantConditions
- this.videoView.setVideoURI(this.attachmentServer.getUri());
- } else if (videoSource.getUri() != null) {
- Log.w(TAG, "Playing video directly from non-local Uri...");
- //noinspection ConstantConditions
- this.videoView.setVideoURI(videoSource.getUri());
- } else {
- Toast.makeText(getContext(), getContext().getString(R.string.error), Toast.LENGTH_LONG).show();
- return;
- }
-
- if (autoplay) this.videoView.start();
- }
-
- private void initializeVideoViewControls(@NonNull VideoView videoView) {
- MediaController mediaController = new MediaController(getContext());
- mediaController.setAnchorView(videoView);
- mediaController.setMediaPlayer(videoView);
-
- videoView.setMediaController(mediaController);
- }
-
private static class ExoPlayerListener implements Player.EventListener {
private final Window window;
diff --git a/src/org/thoughtcrime/securesms/video/exo/AttachmentDataSource.java b/src/main/java/org/thoughtcrime/securesms/video/exo/AttachmentDataSource.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/video/exo/AttachmentDataSource.java
rename to src/main/java/org/thoughtcrime/securesms/video/exo/AttachmentDataSource.java
diff --git a/src/org/thoughtcrime/securesms/video/exo/AttachmentDataSourceFactory.java b/src/main/java/org/thoughtcrime/securesms/video/exo/AttachmentDataSourceFactory.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/video/exo/AttachmentDataSourceFactory.java
rename to src/main/java/org/thoughtcrime/securesms/video/exo/AttachmentDataSourceFactory.java
diff --git a/src/org/thoughtcrime/securesms/video/recode/InputSurface.java b/src/main/java/org/thoughtcrime/securesms/video/recode/InputSurface.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/video/recode/InputSurface.java
rename to src/main/java/org/thoughtcrime/securesms/video/recode/InputSurface.java
diff --git a/src/org/thoughtcrime/securesms/video/recode/MP4Builder.java b/src/main/java/org/thoughtcrime/securesms/video/recode/MP4Builder.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/video/recode/MP4Builder.java
rename to src/main/java/org/thoughtcrime/securesms/video/recode/MP4Builder.java
diff --git a/src/org/thoughtcrime/securesms/video/recode/Mp4Movie.java b/src/main/java/org/thoughtcrime/securesms/video/recode/Mp4Movie.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/video/recode/Mp4Movie.java
rename to src/main/java/org/thoughtcrime/securesms/video/recode/Mp4Movie.java
diff --git a/src/org/thoughtcrime/securesms/video/recode/OutputSurface.java b/src/main/java/org/thoughtcrime/securesms/video/recode/OutputSurface.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/video/recode/OutputSurface.java
rename to src/main/java/org/thoughtcrime/securesms/video/recode/OutputSurface.java
diff --git a/src/org/thoughtcrime/securesms/video/recode/Sample.java b/src/main/java/org/thoughtcrime/securesms/video/recode/Sample.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/video/recode/Sample.java
rename to src/main/java/org/thoughtcrime/securesms/video/recode/Sample.java
diff --git a/src/org/thoughtcrime/securesms/video/recode/TextureRenderer.java b/src/main/java/org/thoughtcrime/securesms/video/recode/TextureRenderer.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/video/recode/TextureRenderer.java
rename to src/main/java/org/thoughtcrime/securesms/video/recode/TextureRenderer.java
diff --git a/src/org/thoughtcrime/securesms/video/recode/Track.java b/src/main/java/org/thoughtcrime/securesms/video/recode/Track.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/video/recode/Track.java
rename to src/main/java/org/thoughtcrime/securesms/video/recode/Track.java
diff --git a/src/org/thoughtcrime/securesms/video/recode/VideoRecoder.java b/src/main/java/org/thoughtcrime/securesms/video/recode/VideoRecoder.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/video/recode/VideoRecoder.java
rename to src/main/java/org/thoughtcrime/securesms/video/recode/VideoRecoder.java
diff --git a/src/org/thoughtcrime/securesms/videochat/VideochatUtil.java b/src/main/java/org/thoughtcrime/securesms/videochat/VideochatUtil.java
similarity index 100%
rename from src/org/thoughtcrime/securesms/videochat/VideochatUtil.java
rename to src/main/java/org/thoughtcrime/securesms/videochat/VideochatUtil.java
diff --git a/res/anim/animation_toggle_in.xml b/src/main/res/anim/animation_toggle_in.xml
similarity index 100%
rename from res/anim/animation_toggle_in.xml
rename to src/main/res/anim/animation_toggle_in.xml
diff --git a/res/anim/animation_toggle_out.xml b/src/main/res/anim/animation_toggle_out.xml
similarity index 100%
rename from res/anim/animation_toggle_out.xml
rename to src/main/res/anim/animation_toggle_out.xml
diff --git a/res/anim/fade_scale_in.xml b/src/main/res/anim/fade_scale_in.xml
similarity index 100%
rename from res/anim/fade_scale_in.xml
rename to src/main/res/anim/fade_scale_in.xml
diff --git a/res/anim/fade_scale_out.xml b/src/main/res/anim/fade_scale_out.xml
similarity index 100%
rename from res/anim/fade_scale_out.xml
rename to src/main/res/anim/fade_scale_out.xml
diff --git a/res/anim/slide_from_right.xml b/src/main/res/anim/slide_from_right.xml
similarity index 100%
rename from res/anim/slide_from_right.xml
rename to src/main/res/anim/slide_from_right.xml
diff --git a/res/anim/slide_to_right.xml b/src/main/res/anim/slide_to_right.xml
similarity index 100%
rename from res/anim/slide_to_right.xml
rename to src/main/res/anim/slide_to_right.xml
diff --git a/res/animator/bottom_pause_to_play_animation.xml b/src/main/res/animator/bottom_pause_to_play_animation.xml
similarity index 100%
rename from res/animator/bottom_pause_to_play_animation.xml
rename to src/main/res/animator/bottom_pause_to_play_animation.xml
diff --git a/res/animator/bottom_play_to_pause_animation.xml b/src/main/res/animator/bottom_play_to_pause_animation.xml
similarity index 100%
rename from res/animator/bottom_play_to_pause_animation.xml
rename to src/main/res/animator/bottom_play_to_pause_animation.xml
diff --git a/res/animator/rotate_90_animation.xml b/src/main/res/animator/rotate_90_animation.xml
similarity index 100%
rename from res/animator/rotate_90_animation.xml
rename to src/main/res/animator/rotate_90_animation.xml
diff --git a/res/animator/rotate_minus_90_animation.xml b/src/main/res/animator/rotate_minus_90_animation.xml
similarity index 100%
rename from res/animator/rotate_minus_90_animation.xml
rename to src/main/res/animator/rotate_minus_90_animation.xml
diff --git a/res/animator/upper_pause_to_play_animation.xml b/src/main/res/animator/upper_pause_to_play_animation.xml
similarity index 100%
rename from res/animator/upper_pause_to_play_animation.xml
rename to src/main/res/animator/upper_pause_to_play_animation.xml
diff --git a/res/animator/upper_play_to_pause_animation.xml b/src/main/res/animator/upper_play_to_pause_animation.xml
similarity index 100%
rename from res/animator/upper_play_to_pause_animation.xml
rename to src/main/res/animator/upper_play_to_pause_animation.xml
diff --git a/res/color/text_color_dark_theme.xml b/src/main/res/color/text_color_dark_theme.xml
similarity index 100%
rename from res/color/text_color_dark_theme.xml
rename to src/main/res/color/text_color_dark_theme.xml
diff --git a/res/color/text_color_secondary_dark_theme.xml b/src/main/res/color/text_color_secondary_dark_theme.xml
similarity index 100%
rename from res/color/text_color_secondary_dark_theme.xml
rename to src/main/res/color/text_color_secondary_dark_theme.xml
diff --git a/res/drawable-hdpi-v11/icon_notification.png b/src/main/res/drawable-hdpi-v11/icon_notification.png
similarity index 100%
rename from res/drawable-hdpi-v11/icon_notification.png
rename to src/main/res/drawable-hdpi-v11/icon_notification.png
diff --git a/res/drawable-hdpi/check.png b/src/main/res/drawable-hdpi/check.png
similarity index 100%
rename from res/drawable-hdpi/check.png
rename to src/main/res/drawable-hdpi/check.png
diff --git a/res/drawable-hdpi/divet_lower_right_dark.png b/src/main/res/drawable-hdpi/divet_lower_right_dark.png
similarity index 100%
rename from res/drawable-hdpi/divet_lower_right_dark.png
rename to src/main/res/drawable-hdpi/divet_lower_right_dark.png
diff --git a/res/drawable-hdpi/divet_lower_right_light.png b/src/main/res/drawable-hdpi/divet_lower_right_light.png
similarity index 100%
rename from res/drawable-hdpi/divet_lower_right_light.png
rename to src/main/res/drawable-hdpi/divet_lower_right_light.png
diff --git a/res/drawable-hdpi/ic_account_box_dark.png b/src/main/res/drawable-hdpi/ic_account_box_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_account_box_dark.png
rename to src/main/res/drawable-hdpi/ic_account_box_dark.png
diff --git a/res/drawable-hdpi/ic_account_box_light.png b/src/main/res/drawable-hdpi/ic_account_box_light.png
similarity index 100%
rename from res/drawable-hdpi/ic_account_box_light.png
rename to src/main/res/drawable-hdpi/ic_account_box_light.png
diff --git a/res/drawable-hdpi/ic_add_white_24dp.png b/src/main/res/drawable-hdpi/ic_add_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_add_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_add_white_24dp.png
diff --git a/res/drawable-hdpi/ic_advanced_white_24dp.png b/src/main/res/drawable-hdpi/ic_advanced_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_advanced_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_advanced_white_24dp.png
diff --git a/res/drawable-hdpi/ic_archive_white_24dp.png b/src/main/res/drawable-hdpi/ic_archive_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_archive_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_archive_white_24dp.png
diff --git a/res/drawable-hdpi/ic_arrow_back_white_24dp.png b/src/main/res/drawable-hdpi/ic_arrow_back_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_arrow_back_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_arrow_back_white_24dp.png
diff --git a/res/drawable-hdpi/ic_attach_grey600_24dp.png b/src/main/res/drawable-hdpi/ic_attach_grey600_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_attach_grey600_24dp.png
rename to src/main/res/drawable-hdpi/ic_attach_grey600_24dp.png
diff --git a/res/drawable-hdpi/ic_attach_white_24dp.png b/src/main/res/drawable-hdpi/ic_attach_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_attach_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_attach_white_24dp.png
diff --git a/res/drawable-hdpi/ic_backspace_grey600_24dp.png b/src/main/res/drawable-hdpi/ic_backspace_grey600_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_backspace_grey600_24dp.png
rename to src/main/res/drawable-hdpi/ic_backspace_grey600_24dp.png
diff --git a/res/drawable-hdpi/ic_blur_on_white_24.png b/src/main/res/drawable-hdpi/ic_blur_on_white_24.png
similarity index 100%
rename from res/drawable-hdpi/ic_blur_on_white_24.png
rename to src/main/res/drawable-hdpi/ic_blur_on_white_24.png
diff --git a/res/drawable-hdpi/ic_brightness_6_white_24dp.png b/src/main/res/drawable-hdpi/ic_brightness_6_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_brightness_6_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_brightness_6_white_24dp.png
diff --git a/res/drawable-hdpi/ic_brush_highlight_32.webp b/src/main/res/drawable-hdpi/ic_brush_highlight_32.webp
similarity index 100%
rename from res/drawable-hdpi/ic_brush_highlight_32.webp
rename to src/main/res/drawable-hdpi/ic_brush_highlight_32.webp
diff --git a/res/drawable-hdpi/ic_brush_marker_32.webp b/src/main/res/drawable-hdpi/ic_brush_marker_32.webp
similarity index 100%
rename from res/drawable-hdpi/ic_brush_marker_32.webp
rename to src/main/res/drawable-hdpi/ic_brush_marker_32.webp
diff --git a/res/drawable-hdpi/ic_camera_alt_white_24dp.png b/src/main/res/drawable-hdpi/ic_camera_alt_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_camera_alt_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_camera_alt_white_24dp.png
diff --git a/res/drawable-hdpi/ic_check_white_24dp.png b/src/main/res/drawable-hdpi/ic_check_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_check_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_check_white_24dp.png
diff --git a/res/drawable-hdpi/ic_circle_fill_white_48dp.png b/src/main/res/drawable-hdpi/ic_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_circle_fill_white_48dp.png
rename to src/main/res/drawable-hdpi/ic_circle_fill_white_48dp.png
diff --git a/res/drawable-hdpi/ic_clear_white_24dp.png b/src/main/res/drawable-hdpi/ic_clear_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_clear_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_clear_white_24dp.png
diff --git a/res/drawable-hdpi/ic_close_white_18dp.webp b/src/main/res/drawable-hdpi/ic_close_white_18dp.webp
similarity index 100%
rename from res/drawable-hdpi/ic_close_white_18dp.webp
rename to src/main/res/drawable-hdpi/ic_close_white_18dp.webp
diff --git a/res/drawable-hdpi/ic_close_white_24dp.png b/src/main/res/drawable-hdpi/ic_close_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_close_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_close_white_24dp.png
diff --git a/res/drawable-hdpi/ic_contact_picture.png b/src/main/res/drawable-hdpi/ic_contact_picture.png
similarity index 100%
rename from res/drawable-hdpi/ic_contact_picture.png
rename to src/main/res/drawable-hdpi/ic_contact_picture.png
diff --git a/res/drawable-hdpi/ic_content_copy_white_24dp.png b/src/main/res/drawable-hdpi/ic_content_copy_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_content_copy_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_content_copy_white_24dp.png
diff --git a/res/drawable-hdpi/ic_create_white_24dp.png b/src/main/res/drawable-hdpi/ic_create_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_create_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_create_white_24dp.png
diff --git a/res/drawable-hdpi/ic_crop_32.webp b/src/main/res/drawable-hdpi/ic_crop_32.webp
similarity index 100%
rename from res/drawable-hdpi/ic_crop_32.webp
rename to src/main/res/drawable-hdpi/ic_crop_32.webp
diff --git a/res/drawable-hdpi/ic_delete_white_24dp.png b/src/main/res/drawable-hdpi/ic_delete_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_delete_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_delete_white_24dp.png
diff --git a/res/drawable-hdpi/ic_delivery_status_read.png b/src/main/res/drawable-hdpi/ic_delivery_status_read.png
similarity index 100%
rename from res/drawable-hdpi/ic_delivery_status_read.png
rename to src/main/res/drawable-hdpi/ic_delivery_status_read.png
diff --git a/res/drawable-hdpi/ic_delivery_status_sending.png b/src/main/res/drawable-hdpi/ic_delivery_status_sending.png
similarity index 100%
rename from res/drawable-hdpi/ic_delivery_status_sending.png
rename to src/main/res/drawable-hdpi/ic_delivery_status_sending.png
diff --git a/res/drawable-hdpi/ic_delivery_status_sent.png b/src/main/res/drawable-hdpi/ic_delivery_status_sent.png
similarity index 100%
rename from res/drawable-hdpi/ic_delivery_status_sent.png
rename to src/main/res/drawable-hdpi/ic_delivery_status_sent.png
diff --git a/res/drawable-hdpi/ic_emoji_32.webp b/src/main/res/drawable-hdpi/ic_emoji_32.webp
similarity index 100%
rename from res/drawable-hdpi/ic_emoji_32.webp
rename to src/main/res/drawable-hdpi/ic_emoji_32.webp
diff --git a/res/drawable-hdpi/ic_flip_32.webp b/src/main/res/drawable-hdpi/ic_flip_32.webp
similarity index 100%
rename from res/drawable-hdpi/ic_flip_32.webp
rename to src/main/res/drawable-hdpi/ic_flip_32.webp
diff --git a/res/drawable-hdpi/ic_forum_white_24dp.png b/src/main/res/drawable-hdpi/ic_forum_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_forum_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_forum_white_24dp.png
diff --git a/res/drawable-hdpi/ic_forward_white_24dp.png b/src/main/res/drawable-hdpi/ic_forward_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_forward_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_forward_white_24dp.png
diff --git a/res/drawable-hdpi/ic_group_grey600_24dp.png b/src/main/res/drawable-hdpi/ic_group_grey600_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_group_grey600_24dp.png
rename to src/main/res/drawable-hdpi/ic_group_grey600_24dp.png
diff --git a/res/drawable-hdpi/ic_group_white_24dp.png b/src/main/res/drawable-hdpi/ic_group_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_group_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_group_white_24dp.png
diff --git a/res/drawable-hdpi/ic_headset_white_24dp.png b/src/main/res/drawable-hdpi/ic_headset_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_headset_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_headset_white_24dp.png
diff --git a/res/drawable-hdpi/ic_help_white_24dp.png b/src/main/res/drawable-hdpi/ic_help_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_help_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_help_white_24dp.png
diff --git a/res/drawable-hdpi/ic_image_dark.png b/src/main/res/drawable-hdpi/ic_image_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_image_dark.png
rename to src/main/res/drawable-hdpi/ic_image_dark.png
diff --git a/res/drawable-hdpi/ic_image_light.png b/src/main/res/drawable-hdpi/ic_image_light.png
similarity index 100%
rename from res/drawable-hdpi/ic_image_light.png
rename to src/main/res/drawable-hdpi/ic_image_light.png
diff --git a/res/drawable-hdpi/ic_image_white_24dp.png b/src/main/res/drawable-hdpi/ic_image_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_image_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_image_white_24dp.png
diff --git a/res/drawable-hdpi/ic_info_outline_dark.png b/src/main/res/drawable-hdpi/ic_info_outline_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_info_outline_dark.png
rename to src/main/res/drawable-hdpi/ic_info_outline_dark.png
diff --git a/res/drawable-hdpi/ic_info_outline_light.png b/src/main/res/drawable-hdpi/ic_info_outline_light.png
similarity index 100%
rename from res/drawable-hdpi/ic_info_outline_light.png
rename to src/main/res/drawable-hdpi/ic_info_outline_light.png
diff --git a/res/drawable-hdpi/ic_info_outline_white_24dp.png b/src/main/res/drawable-hdpi/ic_info_outline_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_info_outline_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_info_outline_white_24dp.png
diff --git a/res/drawable-hdpi/ic_insert_drive_file_white_24dp.png b/src/main/res/drawable-hdpi/ic_insert_drive_file_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_insert_drive_file_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_insert_drive_file_white_24dp.png
diff --git a/res/drawable-hdpi/ic_keyboard_arrow_down_white_24dp.png b/src/main/res/drawable-hdpi/ic_keyboard_arrow_down_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_keyboard_arrow_down_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_keyboard_arrow_down_white_24dp.png
diff --git a/res/drawable-hdpi/ic_keyboard_grey600_24dp.png b/src/main/res/drawable-hdpi/ic_keyboard_grey600_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_keyboard_grey600_24dp.png
rename to src/main/res/drawable-hdpi/ic_keyboard_grey600_24dp.png
diff --git a/res/drawable-hdpi/ic_keyboard_white_24dp.png b/src/main/res/drawable-hdpi/ic_keyboard_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_keyboard_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_keyboard_white_24dp.png
diff --git a/res/drawable-hdpi/ic_launch_white_24dp.png b/src/main/res/drawable-hdpi/ic_launch_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_launch_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_launch_white_24dp.png
diff --git a/res/drawable-hdpi/ic_local_dining_white_24dp.png b/src/main/res/drawable-hdpi/ic_local_dining_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_local_dining_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_local_dining_white_24dp.png
diff --git a/res/drawable-hdpi/ic_location_off_white_24.png b/src/main/res/drawable-hdpi/ic_location_off_white_24.png
similarity index 100%
rename from res/drawable-hdpi/ic_location_off_white_24.png
rename to src/main/res/drawable-hdpi/ic_location_off_white_24.png
diff --git a/res/drawable-hdpi/ic_location_on_white_24dp.png b/src/main/res/drawable-hdpi/ic_location_on_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_location_on_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_location_on_white_24dp.png
diff --git a/res/drawable-hdpi/ic_lock_white_18dp.png b/src/main/res/drawable-hdpi/ic_lock_white_18dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_lock_white_18dp.png
rename to src/main/res/drawable-hdpi/ic_lock_white_18dp.png
diff --git a/res/drawable-hdpi/ic_lock_white_24dp.png b/src/main/res/drawable-hdpi/ic_lock_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_lock_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_lock_white_24dp.png
diff --git a/res/drawable-hdpi/ic_mic_grey600_24dp.png b/src/main/res/drawable-hdpi/ic_mic_grey600_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_mic_grey600_24dp.png
rename to src/main/res/drawable-hdpi/ic_mic_grey600_24dp.png
diff --git a/res/drawable-hdpi/ic_mic_white_24dp.png b/src/main/res/drawable-hdpi/ic_mic_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_mic_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_mic_white_24dp.png
diff --git a/res/drawable-hdpi/ic_mic_white_48dp.png b/src/main/res/drawable-hdpi/ic_mic_white_48dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_mic_white_48dp.png
rename to src/main/res/drawable-hdpi/ic_mic_white_48dp.png
diff --git a/res/drawable-hdpi/ic_mood_grey600_24dp.png b/src/main/res/drawable-hdpi/ic_mood_grey600_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_mood_grey600_24dp.png
rename to src/main/res/drawable-hdpi/ic_mood_grey600_24dp.png
diff --git a/res/drawable-hdpi/ic_mood_white_24dp.png b/src/main/res/drawable-hdpi/ic_mood_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_mood_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_mood_white_24dp.png
diff --git a/res/drawable-hdpi/ic_movie_creation_dark.png b/src/main/res/drawable-hdpi/ic_movie_creation_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_movie_creation_dark.png
rename to src/main/res/drawable-hdpi/ic_movie_creation_dark.png
diff --git a/res/drawable-hdpi/ic_movie_creation_light.png b/src/main/res/drawable-hdpi/ic_movie_creation_light.png
similarity index 100%
rename from res/drawable-hdpi/ic_movie_creation_light.png
rename to src/main/res/drawable-hdpi/ic_movie_creation_light.png
diff --git a/res/drawable-hdpi/ic_notifications_white_24dp.png b/src/main/res/drawable-hdpi/ic_notifications_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_notifications_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_notifications_white_24dp.png
diff --git a/res/drawable-hdpi/ic_pause_circle_fill_white_48dp.png b/src/main/res/drawable-hdpi/ic_pause_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_pause_circle_fill_white_48dp.png
rename to src/main/res/drawable-hdpi/ic_pause_circle_fill_white_48dp.png
diff --git a/res/drawable-hdpi/ic_person_white_24dp.png b/src/main/res/drawable-hdpi/ic_person_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_person_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_person_white_24dp.png
diff --git a/res/drawable-hdpi/ic_pets_white_24dp.png b/src/main/res/drawable-hdpi/ic_pets_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_pets_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_pets_white_24dp.png
diff --git a/res/drawable-hdpi/ic_photo_camera_dark.png b/src/main/res/drawable-hdpi/ic_photo_camera_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_photo_camera_dark.png
rename to src/main/res/drawable-hdpi/ic_photo_camera_dark.png
diff --git a/res/drawable-hdpi/ic_photo_camera_light.png b/src/main/res/drawable-hdpi/ic_photo_camera_light.png
similarity index 100%
rename from res/drawable-hdpi/ic_photo_camera_light.png
rename to src/main/res/drawable-hdpi/ic_photo_camera_light.png
diff --git a/res/drawable-hdpi/ic_pin_white.png b/src/main/res/drawable-hdpi/ic_pin_white.png
similarity index 100%
rename from res/drawable-hdpi/ic_pin_white.png
rename to src/main/res/drawable-hdpi/ic_pin_white.png
diff --git a/res/drawable-hdpi/ic_play_circle_fill_white_48dp.png b/src/main/res/drawable-hdpi/ic_play_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_play_circle_fill_white_48dp.png
rename to src/main/res/drawable-hdpi/ic_play_circle_fill_white_48dp.png
diff --git a/res/drawable-hdpi/ic_reply.png b/src/main/res/drawable-hdpi/ic_reply.png
similarity index 100%
rename from res/drawable-hdpi/ic_reply.png
rename to src/main/res/drawable-hdpi/ic_reply.png
diff --git a/res/drawable-hdpi/ic_reply_white_24dp.png b/src/main/res/drawable-hdpi/ic_reply_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_reply_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_reply_white_24dp.png
diff --git a/res/drawable-hdpi/ic_reply_white_36dp.png b/src/main/res/drawable-hdpi/ic_reply_white_36dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_reply_white_36dp.png
rename to src/main/res/drawable-hdpi/ic_reply_white_36dp.png
diff --git a/res/drawable-hdpi/ic_rotate_32.webp b/src/main/res/drawable-hdpi/ic_rotate_32.webp
similarity index 100%
rename from res/drawable-hdpi/ic_rotate_32.webp
rename to src/main/res/drawable-hdpi/ic_rotate_32.webp
diff --git a/res/drawable-hdpi/ic_send_push.png b/src/main/res/drawable-hdpi/ic_send_push.png
similarity index 100%
rename from res/drawable-hdpi/ic_send_push.png
rename to src/main/res/drawable-hdpi/ic_send_push.png
diff --git a/res/drawable-hdpi/ic_send_push_white_24dp.png b/src/main/res/drawable-hdpi/ic_send_push_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_send_push_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_send_push_white_24dp.png
diff --git a/res/drawable-hdpi/ic_send_sms_insecure.png b/src/main/res/drawable-hdpi/ic_send_sms_insecure.png
similarity index 100%
rename from res/drawable-hdpi/ic_send_sms_insecure.png
rename to src/main/res/drawable-hdpi/ic_send_sms_insecure.png
diff --git a/res/drawable-hdpi/ic_send_sms_insecure_dark.png b/src/main/res/drawable-hdpi/ic_send_sms_insecure_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_send_sms_insecure_dark.png
rename to src/main/res/drawable-hdpi/ic_send_sms_insecure_dark.png
diff --git a/res/drawable-hdpi/ic_send_sms_white_24dp.png b/src/main/res/drawable-hdpi/ic_send_sms_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_send_sms_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_send_sms_white_24dp.png
diff --git a/res/drawable-hdpi/ic_swap_vert_white_24dp.png b/src/main/res/drawable-hdpi/ic_swap_vert_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_swap_vert_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_swap_vert_white_24dp.png
diff --git a/res/drawable-hdpi/ic_tag_faces_white_24dp.png b/src/main/res/drawable-hdpi/ic_tag_faces_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_tag_faces_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_tag_faces_white_24dp.png
diff --git a/res/drawable-hdpi/ic_text_32.webp b/src/main/res/drawable-hdpi/ic_text_32.webp
similarity index 100%
rename from res/drawable-hdpi/ic_text_32.webp
rename to src/main/res/drawable-hdpi/ic_text_32.webp
diff --git a/res/drawable-hdpi/ic_trash_filled_32.webp b/src/main/res/drawable-hdpi/ic_trash_filled_32.webp
similarity index 100%
rename from res/drawable-hdpi/ic_trash_filled_32.webp
rename to src/main/res/drawable-hdpi/ic_trash_filled_32.webp
diff --git a/res/drawable-hdpi/ic_unarchive_white_24dp.png b/src/main/res/drawable-hdpi/ic_unarchive_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_unarchive_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_unarchive_white_24dp.png
diff --git a/res/drawable-hdpi/ic_undo_32.webp b/src/main/res/drawable-hdpi/ic_undo_32.webp
similarity index 100%
rename from res/drawable-hdpi/ic_undo_32.webp
rename to src/main/res/drawable-hdpi/ic_undo_32.webp
diff --git a/res/drawable-hdpi/ic_unlocked_white_24dp.png b/src/main/res/drawable-hdpi/ic_unlocked_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_unlocked_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_unlocked_white_24dp.png
diff --git a/res/drawable-hdpi/ic_unpin_white.png b/src/main/res/drawable-hdpi/ic_unpin_white.png
similarity index 100%
rename from res/drawable-hdpi/ic_unpin_white.png
rename to src/main/res/drawable-hdpi/ic_unpin_white.png
diff --git a/res/drawable-hdpi/ic_volume_off_grey600_18dp.png b/src/main/res/drawable-hdpi/ic_volume_off_grey600_18dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_volume_off_grey600_18dp.png
rename to src/main/res/drawable-hdpi/ic_volume_off_grey600_18dp.png
diff --git a/res/drawable-hdpi/ic_volume_off_white_18dp.png b/src/main/res/drawable-hdpi/ic_volume_off_white_18dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_volume_off_white_18dp.png
rename to src/main/res/drawable-hdpi/ic_volume_off_white_18dp.png
diff --git a/res/drawable-hdpi/ic_volume_up_dark.png b/src/main/res/drawable-hdpi/ic_volume_up_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_volume_up_dark.png
rename to src/main/res/drawable-hdpi/ic_volume_up_dark.png
diff --git a/res/drawable-hdpi/ic_volume_up_light.png b/src/main/res/drawable-hdpi/ic_volume_up_light.png
similarity index 100%
rename from res/drawable-hdpi/ic_volume_up_light.png
rename to src/main/res/drawable-hdpi/ic_volume_up_light.png
diff --git a/res/drawable-hdpi/ic_warning_dark.png b/src/main/res/drawable-hdpi/ic_warning_dark.png
similarity index 100%
rename from res/drawable-hdpi/ic_warning_dark.png
rename to src/main/res/drawable-hdpi/ic_warning_dark.png
diff --git a/res/drawable-hdpi/ic_warning_light.png b/src/main/res/drawable-hdpi/ic_warning_light.png
similarity index 100%
rename from res/drawable-hdpi/ic_warning_light.png
rename to src/main/res/drawable-hdpi/ic_warning_light.png
diff --git a/res/drawable-hdpi/ic_wb_sunny_white_24dp.png b/src/main/res/drawable-hdpi/ic_wb_sunny_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_wb_sunny_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_wb_sunny_white_24dp.png
diff --git a/res/drawable-hdpi/ic_work_white_24dp.png b/src/main/res/drawable-hdpi/ic_work_white_24dp.png
similarity index 100%
rename from res/drawable-hdpi/ic_work_white_24dp.png
rename to src/main/res/drawable-hdpi/ic_work_white_24dp.png
diff --git a/res/drawable-hdpi/msg_encr_out.png b/src/main/res/drawable-hdpi/msg_encr_out.png
similarity index 100%
rename from res/drawable-hdpi/msg_encr_out.png
rename to src/main/res/drawable-hdpi/msg_encr_out.png
diff --git a/res/drawable-hdpi/notification_permanent.png b/src/main/res/drawable-hdpi/notification_permanent.png
similarity index 100%
rename from res/drawable-hdpi/notification_permanent.png
rename to src/main/res/drawable-hdpi/notification_permanent.png
diff --git a/res/drawable-hdpi/notify_panel_notification_icon_bg.png b/src/main/res/drawable-hdpi/notify_panel_notification_icon_bg.png
similarity index 100%
rename from res/drawable-hdpi/notify_panel_notification_icon_bg.png
rename to src/main/res/drawable-hdpi/notify_panel_notification_icon_bg.png
diff --git a/res/drawable-hdpi/quick_camera_dark.png b/src/main/res/drawable-hdpi/quick_camera_dark.png
similarity index 100%
rename from res/drawable-hdpi/quick_camera_dark.png
rename to src/main/res/drawable-hdpi/quick_camera_dark.png
diff --git a/res/drawable-hdpi/quick_camera_exit_fullscreen.png b/src/main/res/drawable-hdpi/quick_camera_exit_fullscreen.png
similarity index 100%
rename from res/drawable-hdpi/quick_camera_exit_fullscreen.png
rename to src/main/res/drawable-hdpi/quick_camera_exit_fullscreen.png
diff --git a/res/drawable-hdpi/quick_camera_front.png b/src/main/res/drawable-hdpi/quick_camera_front.png
similarity index 100%
rename from res/drawable-hdpi/quick_camera_front.png
rename to src/main/res/drawable-hdpi/quick_camera_front.png
diff --git a/res/drawable-hdpi/quick_camera_fullscreen.png b/src/main/res/drawable-hdpi/quick_camera_fullscreen.png
similarity index 100%
rename from res/drawable-hdpi/quick_camera_fullscreen.png
rename to src/main/res/drawable-hdpi/quick_camera_fullscreen.png
diff --git a/res/drawable-hdpi/quick_camera_hide.png b/src/main/res/drawable-hdpi/quick_camera_hide.png
similarity index 100%
rename from res/drawable-hdpi/quick_camera_hide.png
rename to src/main/res/drawable-hdpi/quick_camera_hide.png
diff --git a/res/drawable-hdpi/quick_camera_light.png b/src/main/res/drawable-hdpi/quick_camera_light.png
similarity index 100%
rename from res/drawable-hdpi/quick_camera_light.png
rename to src/main/res/drawable-hdpi/quick_camera_light.png
diff --git a/res/drawable-hdpi/quick_camera_rear.png b/src/main/res/drawable-hdpi/quick_camera_rear.png
similarity index 100%
rename from res/drawable-hdpi/quick_camera_rear.png
rename to src/main/res/drawable-hdpi/quick_camera_rear.png
diff --git a/res/drawable-hdpi/quick_shutter_button.png b/src/main/res/drawable-hdpi/quick_shutter_button.png
similarity index 100%
rename from res/drawable-hdpi/quick_shutter_button.png
rename to src/main/res/drawable-hdpi/quick_shutter_button.png
diff --git a/res/drawable-land/background_hd.jpg b/src/main/res/drawable-land/background_hd.jpg
similarity index 100%
rename from res/drawable-land/background_hd.jpg
rename to src/main/res/drawable-land/background_hd.jpg
diff --git a/res/drawable-land/background_hd_dark.jpg b/src/main/res/drawable-land/background_hd_dark.jpg
similarity index 100%
rename from res/drawable-land/background_hd_dark.jpg
rename to src/main/res/drawable-land/background_hd_dark.jpg
diff --git a/res/drawable-ldrtl-hdpi/ic_arrow_back_white_24dp.png b/src/main/res/drawable-ldrtl-hdpi/ic_arrow_back_white_24dp.png
similarity index 100%
rename from res/drawable-ldrtl-hdpi/ic_arrow_back_white_24dp.png
rename to src/main/res/drawable-ldrtl-hdpi/ic_arrow_back_white_24dp.png
diff --git a/res/drawable-ldrtl-mdpi/ic_arrow_back_white_24dp.png b/src/main/res/drawable-ldrtl-mdpi/ic_arrow_back_white_24dp.png
similarity index 100%
rename from res/drawable-ldrtl-mdpi/ic_arrow_back_white_24dp.png
rename to src/main/res/drawable-ldrtl-mdpi/ic_arrow_back_white_24dp.png
diff --git a/res/drawable-ldrtl-xhdpi/ic_arrow_back_white_24dp.png b/src/main/res/drawable-ldrtl-xhdpi/ic_arrow_back_white_24dp.png
similarity index 100%
rename from res/drawable-ldrtl-xhdpi/ic_arrow_back_white_24dp.png
rename to src/main/res/drawable-ldrtl-xhdpi/ic_arrow_back_white_24dp.png
diff --git a/res/drawable-ldrtl-xxhdpi/ic_arrow_back_white_24dp.png b/src/main/res/drawable-ldrtl-xxhdpi/ic_arrow_back_white_24dp.png
similarity index 100%
rename from res/drawable-ldrtl-xxhdpi/ic_arrow_back_white_24dp.png
rename to src/main/res/drawable-ldrtl-xxhdpi/ic_arrow_back_white_24dp.png
diff --git a/res/drawable-ldrtl-xxxhdpi/ic_arrow_back_white_24dp.png b/src/main/res/drawable-ldrtl-xxxhdpi/ic_arrow_back_white_24dp.png
similarity index 100%
rename from res/drawable-ldrtl-xxxhdpi/ic_arrow_back_white_24dp.png
rename to src/main/res/drawable-ldrtl-xxxhdpi/ic_arrow_back_white_24dp.png
diff --git a/res/drawable-ldrtl/message_bubble_background_received_alone.xml b/src/main/res/drawable-ldrtl/message_bubble_background_received_alone.xml
similarity index 100%
rename from res/drawable-ldrtl/message_bubble_background_received_alone.xml
rename to src/main/res/drawable-ldrtl/message_bubble_background_received_alone.xml
diff --git a/res/drawable-ldrtl/message_bubble_background_sent_alone.xml b/src/main/res/drawable-ldrtl/message_bubble_background_sent_alone.xml
similarity index 100%
rename from res/drawable-ldrtl/message_bubble_background_sent_alone.xml
rename to src/main/res/drawable-ldrtl/message_bubble_background_sent_alone.xml
diff --git a/res/drawable-mdpi-v11/icon_notification.png b/src/main/res/drawable-mdpi-v11/icon_notification.png
similarity index 100%
rename from res/drawable-mdpi-v11/icon_notification.png
rename to src/main/res/drawable-mdpi-v11/icon_notification.png
diff --git a/res/drawable-mdpi-v9/icon_notification.png b/src/main/res/drawable-mdpi-v9/icon_notification.png
similarity index 100%
rename from res/drawable-mdpi-v9/icon_notification.png
rename to src/main/res/drawable-mdpi-v9/icon_notification.png
diff --git a/res/drawable-mdpi/check.png b/src/main/res/drawable-mdpi/check.png
similarity index 100%
rename from res/drawable-mdpi/check.png
rename to src/main/res/drawable-mdpi/check.png
diff --git a/res/drawable-mdpi/divet_lower_right_dark.png b/src/main/res/drawable-mdpi/divet_lower_right_dark.png
similarity index 100%
rename from res/drawable-mdpi/divet_lower_right_dark.png
rename to src/main/res/drawable-mdpi/divet_lower_right_dark.png
diff --git a/res/drawable-mdpi/divet_lower_right_light.png b/src/main/res/drawable-mdpi/divet_lower_right_light.png
similarity index 100%
rename from res/drawable-mdpi/divet_lower_right_light.png
rename to src/main/res/drawable-mdpi/divet_lower_right_light.png
diff --git a/res/drawable-mdpi/ic_account_box_dark.png b/src/main/res/drawable-mdpi/ic_account_box_dark.png
similarity index 100%
rename from res/drawable-mdpi/ic_account_box_dark.png
rename to src/main/res/drawable-mdpi/ic_account_box_dark.png
diff --git a/res/drawable-mdpi/ic_account_box_light.png b/src/main/res/drawable-mdpi/ic_account_box_light.png
similarity index 100%
rename from res/drawable-mdpi/ic_account_box_light.png
rename to src/main/res/drawable-mdpi/ic_account_box_light.png
diff --git a/res/drawable-mdpi/ic_add_white_24dp.png b/src/main/res/drawable-mdpi/ic_add_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_add_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_add_white_24dp.png
diff --git a/res/drawable-mdpi/ic_advanced_white_24dp.png b/src/main/res/drawable-mdpi/ic_advanced_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_advanced_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_advanced_white_24dp.png
diff --git a/res/drawable-mdpi/ic_archive_white_24dp.png b/src/main/res/drawable-mdpi/ic_archive_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_archive_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_archive_white_24dp.png
diff --git a/res/drawable-mdpi/ic_arrow_back_white_24dp.png b/src/main/res/drawable-mdpi/ic_arrow_back_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_arrow_back_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_arrow_back_white_24dp.png
diff --git a/res/drawable-mdpi/ic_attach_grey600_24dp.png b/src/main/res/drawable-mdpi/ic_attach_grey600_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_attach_grey600_24dp.png
rename to src/main/res/drawable-mdpi/ic_attach_grey600_24dp.png
diff --git a/res/drawable-mdpi/ic_attach_white_24dp.png b/src/main/res/drawable-mdpi/ic_attach_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_attach_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_attach_white_24dp.png
diff --git a/res/drawable-mdpi/ic_backspace_grey600_24dp.png b/src/main/res/drawable-mdpi/ic_backspace_grey600_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_backspace_grey600_24dp.png
rename to src/main/res/drawable-mdpi/ic_backspace_grey600_24dp.png
diff --git a/res/drawable-mdpi/ic_blur_on_white_24.png b/src/main/res/drawable-mdpi/ic_blur_on_white_24.png
similarity index 100%
rename from res/drawable-mdpi/ic_blur_on_white_24.png
rename to src/main/res/drawable-mdpi/ic_blur_on_white_24.png
diff --git a/res/drawable-mdpi/ic_brightness_6_white_24dp.png b/src/main/res/drawable-mdpi/ic_brightness_6_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_brightness_6_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_brightness_6_white_24dp.png
diff --git a/res/drawable-mdpi/ic_brush_highlight_32.webp b/src/main/res/drawable-mdpi/ic_brush_highlight_32.webp
similarity index 100%
rename from res/drawable-mdpi/ic_brush_highlight_32.webp
rename to src/main/res/drawable-mdpi/ic_brush_highlight_32.webp
diff --git a/res/drawable-mdpi/ic_brush_marker_32.webp b/src/main/res/drawable-mdpi/ic_brush_marker_32.webp
similarity index 100%
rename from res/drawable-mdpi/ic_brush_marker_32.webp
rename to src/main/res/drawable-mdpi/ic_brush_marker_32.webp
diff --git a/res/drawable-mdpi/ic_camera_alt_white_24dp.png b/src/main/res/drawable-mdpi/ic_camera_alt_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_camera_alt_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_camera_alt_white_24dp.png
diff --git a/res/drawable-mdpi/ic_check_white_24dp.png b/src/main/res/drawable-mdpi/ic_check_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_check_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_check_white_24dp.png
diff --git a/res/drawable-mdpi/ic_circle_fill_white_48dp.png b/src/main/res/drawable-mdpi/ic_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_circle_fill_white_48dp.png
rename to src/main/res/drawable-mdpi/ic_circle_fill_white_48dp.png
diff --git a/res/drawable-mdpi/ic_clear_white_24dp.png b/src/main/res/drawable-mdpi/ic_clear_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_clear_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_clear_white_24dp.png
diff --git a/res/drawable-mdpi/ic_close_white_18dp.webp b/src/main/res/drawable-mdpi/ic_close_white_18dp.webp
similarity index 100%
rename from res/drawable-mdpi/ic_close_white_18dp.webp
rename to src/main/res/drawable-mdpi/ic_close_white_18dp.webp
diff --git a/res/drawable-mdpi/ic_close_white_24dp.png b/src/main/res/drawable-mdpi/ic_close_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_close_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_close_white_24dp.png
diff --git a/res/drawable-mdpi/ic_contact_picture.png b/src/main/res/drawable-mdpi/ic_contact_picture.png
similarity index 100%
rename from res/drawable-mdpi/ic_contact_picture.png
rename to src/main/res/drawable-mdpi/ic_contact_picture.png
diff --git a/res/drawable-mdpi/ic_content_copy_white_24dp.png b/src/main/res/drawable-mdpi/ic_content_copy_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_content_copy_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_content_copy_white_24dp.png
diff --git a/res/drawable-mdpi/ic_create_white_24dp.png b/src/main/res/drawable-mdpi/ic_create_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_create_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_create_white_24dp.png
diff --git a/res/drawable-mdpi/ic_crop_32.webp b/src/main/res/drawable-mdpi/ic_crop_32.webp
similarity index 100%
rename from res/drawable-mdpi/ic_crop_32.webp
rename to src/main/res/drawable-mdpi/ic_crop_32.webp
diff --git a/res/drawable-mdpi/ic_delete_white_24dp.png b/src/main/res/drawable-mdpi/ic_delete_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_delete_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_delete_white_24dp.png
diff --git a/res/drawable-mdpi/ic_delivery_status_read.png b/src/main/res/drawable-mdpi/ic_delivery_status_read.png
similarity index 100%
rename from res/drawable-mdpi/ic_delivery_status_read.png
rename to src/main/res/drawable-mdpi/ic_delivery_status_read.png
diff --git a/res/drawable-mdpi/ic_delivery_status_sending.png b/src/main/res/drawable-mdpi/ic_delivery_status_sending.png
similarity index 100%
rename from res/drawable-mdpi/ic_delivery_status_sending.png
rename to src/main/res/drawable-mdpi/ic_delivery_status_sending.png
diff --git a/res/drawable-mdpi/ic_delivery_status_sent.png b/src/main/res/drawable-mdpi/ic_delivery_status_sent.png
similarity index 100%
rename from res/drawable-mdpi/ic_delivery_status_sent.png
rename to src/main/res/drawable-mdpi/ic_delivery_status_sent.png
diff --git a/res/drawable-mdpi/ic_emoji_32.webp b/src/main/res/drawable-mdpi/ic_emoji_32.webp
similarity index 100%
rename from res/drawable-mdpi/ic_emoji_32.webp
rename to src/main/res/drawable-mdpi/ic_emoji_32.webp
diff --git a/res/drawable-mdpi/ic_flip_32.png b/src/main/res/drawable-mdpi/ic_flip_32.png
similarity index 100%
rename from res/drawable-mdpi/ic_flip_32.png
rename to src/main/res/drawable-mdpi/ic_flip_32.png
diff --git a/res/drawable-mdpi/ic_forum_white_24dp.png b/src/main/res/drawable-mdpi/ic_forum_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_forum_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_forum_white_24dp.png
diff --git a/res/drawable-mdpi/ic_forward_white_24dp.png b/src/main/res/drawable-mdpi/ic_forward_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_forward_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_forward_white_24dp.png
diff --git a/res/drawable-mdpi/ic_group_grey600_24dp.png b/src/main/res/drawable-mdpi/ic_group_grey600_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_group_grey600_24dp.png
rename to src/main/res/drawable-mdpi/ic_group_grey600_24dp.png
diff --git a/res/drawable-mdpi/ic_group_white_24dp.png b/src/main/res/drawable-mdpi/ic_group_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_group_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_group_white_24dp.png
diff --git a/res/drawable-mdpi/ic_headset_white_24dp.png b/src/main/res/drawable-mdpi/ic_headset_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_headset_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_headset_white_24dp.png
diff --git a/res/drawable-mdpi/ic_help_white_24dp.png b/src/main/res/drawable-mdpi/ic_help_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_help_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_help_white_24dp.png
diff --git a/res/drawable-mdpi/ic_image_dark.png b/src/main/res/drawable-mdpi/ic_image_dark.png
similarity index 100%
rename from res/drawable-mdpi/ic_image_dark.png
rename to src/main/res/drawable-mdpi/ic_image_dark.png
diff --git a/res/drawable-mdpi/ic_image_light.png b/src/main/res/drawable-mdpi/ic_image_light.png
similarity index 100%
rename from res/drawable-mdpi/ic_image_light.png
rename to src/main/res/drawable-mdpi/ic_image_light.png
diff --git a/res/drawable-mdpi/ic_image_white_24dp.png b/src/main/res/drawable-mdpi/ic_image_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_image_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_image_white_24dp.png
diff --git a/res/drawable-mdpi/ic_info_outline_dark.png b/src/main/res/drawable-mdpi/ic_info_outline_dark.png
similarity index 100%
rename from res/drawable-mdpi/ic_info_outline_dark.png
rename to src/main/res/drawable-mdpi/ic_info_outline_dark.png
diff --git a/res/drawable-mdpi/ic_info_outline_light.png b/src/main/res/drawable-mdpi/ic_info_outline_light.png
similarity index 100%
rename from res/drawable-mdpi/ic_info_outline_light.png
rename to src/main/res/drawable-mdpi/ic_info_outline_light.png
diff --git a/res/drawable-mdpi/ic_info_outline_white_24dp.png b/src/main/res/drawable-mdpi/ic_info_outline_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_info_outline_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_info_outline_white_24dp.png
diff --git a/res/drawable-mdpi/ic_insert_drive_file_white_24dp.png b/src/main/res/drawable-mdpi/ic_insert_drive_file_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_insert_drive_file_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_insert_drive_file_white_24dp.png
diff --git a/res/drawable-mdpi/ic_keyboard_arrow_down_white_24dp.png b/src/main/res/drawable-mdpi/ic_keyboard_arrow_down_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_keyboard_arrow_down_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_keyboard_arrow_down_white_24dp.png
diff --git a/res/drawable-mdpi/ic_keyboard_grey600_24dp.png b/src/main/res/drawable-mdpi/ic_keyboard_grey600_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_keyboard_grey600_24dp.png
rename to src/main/res/drawable-mdpi/ic_keyboard_grey600_24dp.png
diff --git a/res/drawable-mdpi/ic_keyboard_white_24dp.png b/src/main/res/drawable-mdpi/ic_keyboard_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_keyboard_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_keyboard_white_24dp.png
diff --git a/res/drawable-mdpi/ic_launch_white_24dp.png b/src/main/res/drawable-mdpi/ic_launch_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_launch_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_launch_white_24dp.png
diff --git a/res/drawable-mdpi/ic_local_dining_white_24dp.png b/src/main/res/drawable-mdpi/ic_local_dining_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_local_dining_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_local_dining_white_24dp.png
diff --git a/res/drawable-mdpi/ic_location_on_white_24dp.png b/src/main/res/drawable-mdpi/ic_location_on_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_location_on_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_location_on_white_24dp.png
diff --git a/res/drawable-mdpi/ic_lock_white_18dp.png b/src/main/res/drawable-mdpi/ic_lock_white_18dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_lock_white_18dp.png
rename to src/main/res/drawable-mdpi/ic_lock_white_18dp.png
diff --git a/res/drawable-mdpi/ic_lock_white_24dp.png b/src/main/res/drawable-mdpi/ic_lock_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_lock_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_lock_white_24dp.png
diff --git a/res/drawable-mdpi/ic_mic_grey600_24dp.png b/src/main/res/drawable-mdpi/ic_mic_grey600_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_mic_grey600_24dp.png
rename to src/main/res/drawable-mdpi/ic_mic_grey600_24dp.png
diff --git a/res/drawable-mdpi/ic_mic_white_24dp.png b/src/main/res/drawable-mdpi/ic_mic_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_mic_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_mic_white_24dp.png
diff --git a/res/drawable-mdpi/ic_mic_white_48dp.png b/src/main/res/drawable-mdpi/ic_mic_white_48dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_mic_white_48dp.png
rename to src/main/res/drawable-mdpi/ic_mic_white_48dp.png
diff --git a/res/drawable-mdpi/ic_mood_grey600_24dp.png b/src/main/res/drawable-mdpi/ic_mood_grey600_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_mood_grey600_24dp.png
rename to src/main/res/drawable-mdpi/ic_mood_grey600_24dp.png
diff --git a/res/drawable-mdpi/ic_mood_white_24dp.png b/src/main/res/drawable-mdpi/ic_mood_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_mood_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_mood_white_24dp.png
diff --git a/res/drawable-mdpi/ic_movie_creation_dark.png b/src/main/res/drawable-mdpi/ic_movie_creation_dark.png
similarity index 100%
rename from res/drawable-mdpi/ic_movie_creation_dark.png
rename to src/main/res/drawable-mdpi/ic_movie_creation_dark.png
diff --git a/res/drawable-mdpi/ic_movie_creation_light.png b/src/main/res/drawable-mdpi/ic_movie_creation_light.png
similarity index 100%
rename from res/drawable-mdpi/ic_movie_creation_light.png
rename to src/main/res/drawable-mdpi/ic_movie_creation_light.png
diff --git a/res/drawable-mdpi/ic_notifications_white_24dp.png b/src/main/res/drawable-mdpi/ic_notifications_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_notifications_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_notifications_white_24dp.png
diff --git a/res/drawable-mdpi/ic_pause_circle_fill_white_48dp.png b/src/main/res/drawable-mdpi/ic_pause_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_pause_circle_fill_white_48dp.png
rename to src/main/res/drawable-mdpi/ic_pause_circle_fill_white_48dp.png
diff --git a/res/drawable-mdpi/ic_person_white_24dp.png b/src/main/res/drawable-mdpi/ic_person_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_person_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_person_white_24dp.png
diff --git a/res/drawable-mdpi/ic_pets_white_24dp.png b/src/main/res/drawable-mdpi/ic_pets_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_pets_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_pets_white_24dp.png
diff --git a/res/drawable-mdpi/ic_photo_camera_dark.png b/src/main/res/drawable-mdpi/ic_photo_camera_dark.png
similarity index 100%
rename from res/drawable-mdpi/ic_photo_camera_dark.png
rename to src/main/res/drawable-mdpi/ic_photo_camera_dark.png
diff --git a/res/drawable-mdpi/ic_photo_camera_light.png b/src/main/res/drawable-mdpi/ic_photo_camera_light.png
similarity index 100%
rename from res/drawable-mdpi/ic_photo_camera_light.png
rename to src/main/res/drawable-mdpi/ic_photo_camera_light.png
diff --git a/res/drawable-mdpi/ic_pin_white.png b/src/main/res/drawable-mdpi/ic_pin_white.png
similarity index 100%
rename from res/drawable-mdpi/ic_pin_white.png
rename to src/main/res/drawable-mdpi/ic_pin_white.png
diff --git a/res/drawable-mdpi/ic_play_circle_fill_white_48dp.png b/src/main/res/drawable-mdpi/ic_play_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_play_circle_fill_white_48dp.png
rename to src/main/res/drawable-mdpi/ic_play_circle_fill_white_48dp.png
diff --git a/res/drawable-mdpi/ic_reply.png b/src/main/res/drawable-mdpi/ic_reply.png
similarity index 100%
rename from res/drawable-mdpi/ic_reply.png
rename to src/main/res/drawable-mdpi/ic_reply.png
diff --git a/res/drawable-mdpi/ic_reply_white_24dp.png b/src/main/res/drawable-mdpi/ic_reply_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_reply_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_reply_white_24dp.png
diff --git a/res/drawable-mdpi/ic_reply_white_36dp.png b/src/main/res/drawable-mdpi/ic_reply_white_36dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_reply_white_36dp.png
rename to src/main/res/drawable-mdpi/ic_reply_white_36dp.png
diff --git a/res/drawable-mdpi/ic_rotate_32.webp b/src/main/res/drawable-mdpi/ic_rotate_32.webp
similarity index 100%
rename from res/drawable-mdpi/ic_rotate_32.webp
rename to src/main/res/drawable-mdpi/ic_rotate_32.webp
diff --git a/res/drawable-mdpi/ic_send_push.png b/src/main/res/drawable-mdpi/ic_send_push.png
similarity index 100%
rename from res/drawable-mdpi/ic_send_push.png
rename to src/main/res/drawable-mdpi/ic_send_push.png
diff --git a/res/drawable-mdpi/ic_send_push_white_24dp.png b/src/main/res/drawable-mdpi/ic_send_push_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_send_push_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_send_push_white_24dp.png
diff --git a/res/drawable-mdpi/ic_send_sms_insecure.png b/src/main/res/drawable-mdpi/ic_send_sms_insecure.png
similarity index 100%
rename from res/drawable-mdpi/ic_send_sms_insecure.png
rename to src/main/res/drawable-mdpi/ic_send_sms_insecure.png
diff --git a/res/drawable-mdpi/ic_send_sms_insecure_dark.png b/src/main/res/drawable-mdpi/ic_send_sms_insecure_dark.png
similarity index 100%
rename from res/drawable-mdpi/ic_send_sms_insecure_dark.png
rename to src/main/res/drawable-mdpi/ic_send_sms_insecure_dark.png
diff --git a/res/drawable-mdpi/ic_send_sms_white_24dp.png b/src/main/res/drawable-mdpi/ic_send_sms_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_send_sms_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_send_sms_white_24dp.png
diff --git a/res/drawable-mdpi/ic_swap_vert_white_24dp.png b/src/main/res/drawable-mdpi/ic_swap_vert_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_swap_vert_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_swap_vert_white_24dp.png
diff --git a/res/drawable-mdpi/ic_tag_faces_white_24dp.png b/src/main/res/drawable-mdpi/ic_tag_faces_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_tag_faces_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_tag_faces_white_24dp.png
diff --git a/res/drawable-mdpi/ic_text_32.webp b/src/main/res/drawable-mdpi/ic_text_32.webp
similarity index 100%
rename from res/drawable-mdpi/ic_text_32.webp
rename to src/main/res/drawable-mdpi/ic_text_32.webp
diff --git a/res/drawable-mdpi/ic_trash_filled_32.webp b/src/main/res/drawable-mdpi/ic_trash_filled_32.webp
similarity index 100%
rename from res/drawable-mdpi/ic_trash_filled_32.webp
rename to src/main/res/drawable-mdpi/ic_trash_filled_32.webp
diff --git a/res/drawable-mdpi/ic_unarchive_white_24dp.png b/src/main/res/drawable-mdpi/ic_unarchive_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_unarchive_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_unarchive_white_24dp.png
diff --git a/res/drawable-mdpi/ic_undo_32.webp b/src/main/res/drawable-mdpi/ic_undo_32.webp
similarity index 100%
rename from res/drawable-mdpi/ic_undo_32.webp
rename to src/main/res/drawable-mdpi/ic_undo_32.webp
diff --git a/res/drawable-mdpi/ic_unlocked_white_24dp.png b/src/main/res/drawable-mdpi/ic_unlocked_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_unlocked_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_unlocked_white_24dp.png
diff --git a/res/drawable-mdpi/ic_unpin_white.png b/src/main/res/drawable-mdpi/ic_unpin_white.png
similarity index 100%
rename from res/drawable-mdpi/ic_unpin_white.png
rename to src/main/res/drawable-mdpi/ic_unpin_white.png
diff --git a/res/drawable-mdpi/ic_volume_off_grey600_18dp.png b/src/main/res/drawable-mdpi/ic_volume_off_grey600_18dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_volume_off_grey600_18dp.png
rename to src/main/res/drawable-mdpi/ic_volume_off_grey600_18dp.png
diff --git a/res/drawable-mdpi/ic_volume_off_white_18dp.png b/src/main/res/drawable-mdpi/ic_volume_off_white_18dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_volume_off_white_18dp.png
rename to src/main/res/drawable-mdpi/ic_volume_off_white_18dp.png
diff --git a/res/drawable-mdpi/ic_volume_up_dark.png b/src/main/res/drawable-mdpi/ic_volume_up_dark.png
similarity index 100%
rename from res/drawable-mdpi/ic_volume_up_dark.png
rename to src/main/res/drawable-mdpi/ic_volume_up_dark.png
diff --git a/res/drawable-mdpi/ic_volume_up_light.png b/src/main/res/drawable-mdpi/ic_volume_up_light.png
similarity index 100%
rename from res/drawable-mdpi/ic_volume_up_light.png
rename to src/main/res/drawable-mdpi/ic_volume_up_light.png
diff --git a/res/drawable-mdpi/ic_warning_dark.png b/src/main/res/drawable-mdpi/ic_warning_dark.png
similarity index 100%
rename from res/drawable-mdpi/ic_warning_dark.png
rename to src/main/res/drawable-mdpi/ic_warning_dark.png
diff --git a/res/drawable-mdpi/ic_warning_light.png b/src/main/res/drawable-mdpi/ic_warning_light.png
similarity index 100%
rename from res/drawable-mdpi/ic_warning_light.png
rename to src/main/res/drawable-mdpi/ic_warning_light.png
diff --git a/res/drawable-mdpi/ic_wb_sunny_white_24dp.png b/src/main/res/drawable-mdpi/ic_wb_sunny_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_wb_sunny_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_wb_sunny_white_24dp.png
diff --git a/res/drawable-mdpi/ic_work_white_24dp.png b/src/main/res/drawable-mdpi/ic_work_white_24dp.png
similarity index 100%
rename from res/drawable-mdpi/ic_work_white_24dp.png
rename to src/main/res/drawable-mdpi/ic_work_white_24dp.png
diff --git a/res/drawable-mdpi/msg_encr_out.png b/src/main/res/drawable-mdpi/msg_encr_out.png
similarity index 100%
rename from res/drawable-mdpi/msg_encr_out.png
rename to src/main/res/drawable-mdpi/msg_encr_out.png
diff --git a/res/drawable-mdpi/notification_permanent.png b/src/main/res/drawable-mdpi/notification_permanent.png
similarity index 100%
rename from res/drawable-mdpi/notification_permanent.png
rename to src/main/res/drawable-mdpi/notification_permanent.png
diff --git a/res/drawable-mdpi/notify_panel_notification_icon_bg.png b/src/main/res/drawable-mdpi/notify_panel_notification_icon_bg.png
similarity index 100%
rename from res/drawable-mdpi/notify_panel_notification_icon_bg.png
rename to src/main/res/drawable-mdpi/notify_panel_notification_icon_bg.png
diff --git a/res/drawable-mdpi/quick_camera_dark.png b/src/main/res/drawable-mdpi/quick_camera_dark.png
similarity index 100%
rename from res/drawable-mdpi/quick_camera_dark.png
rename to src/main/res/drawable-mdpi/quick_camera_dark.png
diff --git a/res/drawable-mdpi/quick_camera_exit_fullscreen.png b/src/main/res/drawable-mdpi/quick_camera_exit_fullscreen.png
similarity index 100%
rename from res/drawable-mdpi/quick_camera_exit_fullscreen.png
rename to src/main/res/drawable-mdpi/quick_camera_exit_fullscreen.png
diff --git a/res/drawable-mdpi/quick_camera_front.png b/src/main/res/drawable-mdpi/quick_camera_front.png
similarity index 100%
rename from res/drawable-mdpi/quick_camera_front.png
rename to src/main/res/drawable-mdpi/quick_camera_front.png
diff --git a/res/drawable-mdpi/quick_camera_fullscreen.png b/src/main/res/drawable-mdpi/quick_camera_fullscreen.png
similarity index 100%
rename from res/drawable-mdpi/quick_camera_fullscreen.png
rename to src/main/res/drawable-mdpi/quick_camera_fullscreen.png
diff --git a/res/drawable-mdpi/quick_camera_hide.png b/src/main/res/drawable-mdpi/quick_camera_hide.png
similarity index 100%
rename from res/drawable-mdpi/quick_camera_hide.png
rename to src/main/res/drawable-mdpi/quick_camera_hide.png
diff --git a/res/drawable-mdpi/quick_camera_light.png b/src/main/res/drawable-mdpi/quick_camera_light.png
similarity index 100%
rename from res/drawable-mdpi/quick_camera_light.png
rename to src/main/res/drawable-mdpi/quick_camera_light.png
diff --git a/res/drawable-mdpi/quick_camera_rear.png b/src/main/res/drawable-mdpi/quick_camera_rear.png
similarity index 100%
rename from res/drawable-mdpi/quick_camera_rear.png
rename to src/main/res/drawable-mdpi/quick_camera_rear.png
diff --git a/res/drawable-mdpi/quick_shutter_button.png b/src/main/res/drawable-mdpi/quick_shutter_button.png
similarity index 100%
rename from res/drawable-mdpi/quick_shutter_button.png
rename to src/main/res/drawable-mdpi/quick_shutter_button.png
diff --git a/res/drawable-night/button_background.xml b/src/main/res/drawable-night/button_background.xml
similarity index 100%
rename from res/drawable-night/button_background.xml
rename to src/main/res/drawable-night/button_background.xml
diff --git a/res/drawable-night/button_secondary_background.xml b/src/main/res/drawable-night/button_secondary_background.xml
similarity index 100%
rename from res/drawable-night/button_secondary_background.xml
rename to src/main/res/drawable-night/button_secondary_background.xml
diff --git a/res/drawable-v21/circle_touch_highlight_background.xml b/src/main/res/drawable-v21/circle_touch_highlight_background.xml
similarity index 100%
rename from res/drawable-v21/circle_touch_highlight_background.xml
rename to src/main/res/drawable-v21/circle_touch_highlight_background.xml
diff --git a/res/drawable-v21/conversation_list_item_background.xml b/src/main/res/drawable-v21/conversation_list_item_background.xml
similarity index 100%
rename from res/drawable-v21/conversation_list_item_background.xml
rename to src/main/res/drawable-v21/conversation_list_item_background.xml
diff --git a/res/drawable-v21/conversation_list_item_background_dark.xml b/src/main/res/drawable-v21/conversation_list_item_background_dark.xml
similarity index 100%
rename from res/drawable-v21/conversation_list_item_background_dark.xml
rename to src/main/res/drawable-v21/conversation_list_item_background_dark.xml
diff --git a/res/drawable-v21/pinned_list_item_background.xml b/src/main/res/drawable-v21/pinned_list_item_background.xml
similarity index 100%
rename from res/drawable-v21/pinned_list_item_background.xml
rename to src/main/res/drawable-v21/pinned_list_item_background.xml
diff --git a/res/drawable-v21/pinned_list_item_background_dark.xml b/src/main/res/drawable-v21/pinned_list_item_background_dark.xml
similarity index 100%
rename from res/drawable-v21/pinned_list_item_background_dark.xml
rename to src/main/res/drawable-v21/pinned_list_item_background_dark.xml
diff --git a/res/drawable-v21/touch_highlight_background.xml b/src/main/res/drawable-v21/touch_highlight_background.xml
similarity index 100%
rename from res/drawable-v21/touch_highlight_background.xml
rename to src/main/res/drawable-v21/touch_highlight_background.xml
diff --git a/res/drawable-xhdpi-v11/icon_notification.png b/src/main/res/drawable-xhdpi-v11/icon_notification.png
similarity index 100%
rename from res/drawable-xhdpi-v11/icon_notification.png
rename to src/main/res/drawable-xhdpi-v11/icon_notification.png
diff --git a/res/drawable-xhdpi/attach_camera.png b/src/main/res/drawable-xhdpi/attach_camera.png
similarity index 100%
rename from res/drawable-xhdpi/attach_camera.png
rename to src/main/res/drawable-xhdpi/attach_camera.png
diff --git a/res/drawable-xhdpi/attach_record_video.png b/src/main/res/drawable-xhdpi/attach_record_video.png
similarity index 100%
rename from res/drawable-xhdpi/attach_record_video.png
rename to src/main/res/drawable-xhdpi/attach_record_video.png
diff --git a/res/drawable-xhdpi/check.png b/src/main/res/drawable-xhdpi/check.png
similarity index 100%
rename from res/drawable-xhdpi/check.png
rename to src/main/res/drawable-xhdpi/check.png
diff --git a/res/drawable-xhdpi/divet_lower_right_dark.png b/src/main/res/drawable-xhdpi/divet_lower_right_dark.png
similarity index 100%
rename from res/drawable-xhdpi/divet_lower_right_dark.png
rename to src/main/res/drawable-xhdpi/divet_lower_right_dark.png
diff --git a/res/drawable-xhdpi/divet_lower_right_light.png b/src/main/res/drawable-xhdpi/divet_lower_right_light.png
similarity index 100%
rename from res/drawable-xhdpi/divet_lower_right_light.png
rename to src/main/res/drawable-xhdpi/divet_lower_right_light.png
diff --git a/res/drawable-xhdpi/ic_account_box_dark.png b/src/main/res/drawable-xhdpi/ic_account_box_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_account_box_dark.png
rename to src/main/res/drawable-xhdpi/ic_account_box_dark.png
diff --git a/res/drawable-xhdpi/ic_account_box_light.png b/src/main/res/drawable-xhdpi/ic_account_box_light.png
similarity index 100%
rename from res/drawable-xhdpi/ic_account_box_light.png
rename to src/main/res/drawable-xhdpi/ic_account_box_light.png
diff --git a/res/drawable-xhdpi/ic_add_white_24dp.png b/src/main/res/drawable-xhdpi/ic_add_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_add_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_add_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_advanced_white_24dp.png b/src/main/res/drawable-xhdpi/ic_advanced_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_advanced_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_advanced_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_archive_white_24dp.png b/src/main/res/drawable-xhdpi/ic_archive_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_archive_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_archive_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_arrow_back_white_24dp.png b/src/main/res/drawable-xhdpi/ic_arrow_back_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_arrow_back_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_arrow_back_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_attach_grey600_24dp.png b/src/main/res/drawable-xhdpi/ic_attach_grey600_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_attach_grey600_24dp.png
rename to src/main/res/drawable-xhdpi/ic_attach_grey600_24dp.png
diff --git a/res/drawable-xhdpi/ic_attach_white_24dp.png b/src/main/res/drawable-xhdpi/ic_attach_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_attach_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_attach_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_backspace_grey600_24dp.png b/src/main/res/drawable-xhdpi/ic_backspace_grey600_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_backspace_grey600_24dp.png
rename to src/main/res/drawable-xhdpi/ic_backspace_grey600_24dp.png
diff --git a/res/drawable-xhdpi/ic_blur_on_white_24.png b/src/main/res/drawable-xhdpi/ic_blur_on_white_24.png
similarity index 100%
rename from res/drawable-xhdpi/ic_blur_on_white_24.png
rename to src/main/res/drawable-xhdpi/ic_blur_on_white_24.png
diff --git a/res/drawable-xhdpi/ic_brightness_6_white_24dp.png b/src/main/res/drawable-xhdpi/ic_brightness_6_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_brightness_6_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_brightness_6_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_brush_highlight_32.webp b/src/main/res/drawable-xhdpi/ic_brush_highlight_32.webp
similarity index 100%
rename from res/drawable-xhdpi/ic_brush_highlight_32.webp
rename to src/main/res/drawable-xhdpi/ic_brush_highlight_32.webp
diff --git a/res/drawable-xhdpi/ic_brush_marker_32.webp b/src/main/res/drawable-xhdpi/ic_brush_marker_32.webp
similarity index 100%
rename from res/drawable-xhdpi/ic_brush_marker_32.webp
rename to src/main/res/drawable-xhdpi/ic_brush_marker_32.webp
diff --git a/res/drawable-xhdpi/ic_camera_alt_white_24dp.png b/src/main/res/drawable-xhdpi/ic_camera_alt_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_camera_alt_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_camera_alt_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_check_white_24dp.png b/src/main/res/drawable-xhdpi/ic_check_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_check_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_check_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_circle_fill_white_48dp.png b/src/main/res/drawable-xhdpi/ic_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_circle_fill_white_48dp.png
rename to src/main/res/drawable-xhdpi/ic_circle_fill_white_48dp.png
diff --git a/res/drawable-xhdpi/ic_clear_white_24dp.png b/src/main/res/drawable-xhdpi/ic_clear_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_clear_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_clear_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_close_white_18dp.webp b/src/main/res/drawable-xhdpi/ic_close_white_18dp.webp
similarity index 100%
rename from res/drawable-xhdpi/ic_close_white_18dp.webp
rename to src/main/res/drawable-xhdpi/ic_close_white_18dp.webp
diff --git a/res/drawable-xhdpi/ic_close_white_24dp.png b/src/main/res/drawable-xhdpi/ic_close_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_close_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_close_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_contact_picture.png b/src/main/res/drawable-xhdpi/ic_contact_picture.png
similarity index 100%
rename from res/drawable-xhdpi/ic_contact_picture.png
rename to src/main/res/drawable-xhdpi/ic_contact_picture.png
diff --git a/res/drawable-xhdpi/ic_content_copy_white_24dp.png b/src/main/res/drawable-xhdpi/ic_content_copy_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_content_copy_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_content_copy_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_create_white_24dp.png b/src/main/res/drawable-xhdpi/ic_create_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_create_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_create_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_crop_32.webp b/src/main/res/drawable-xhdpi/ic_crop_32.webp
similarity index 100%
rename from res/drawable-xhdpi/ic_crop_32.webp
rename to src/main/res/drawable-xhdpi/ic_crop_32.webp
diff --git a/res/drawable-xhdpi/ic_delete_white_24dp.png b/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_delete_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_delete_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_delivery_status_read.png b/src/main/res/drawable-xhdpi/ic_delivery_status_read.png
similarity index 100%
rename from res/drawable-xhdpi/ic_delivery_status_read.png
rename to src/main/res/drawable-xhdpi/ic_delivery_status_read.png
diff --git a/res/drawable-xhdpi/ic_delivery_status_sending.png b/src/main/res/drawable-xhdpi/ic_delivery_status_sending.png
similarity index 100%
rename from res/drawable-xhdpi/ic_delivery_status_sending.png
rename to src/main/res/drawable-xhdpi/ic_delivery_status_sending.png
diff --git a/res/drawable-xhdpi/ic_delivery_status_sent.png b/src/main/res/drawable-xhdpi/ic_delivery_status_sent.png
similarity index 100%
rename from res/drawable-xhdpi/ic_delivery_status_sent.png
rename to src/main/res/drawable-xhdpi/ic_delivery_status_sent.png
diff --git a/res/drawable-xhdpi/ic_emoji_32.webp b/src/main/res/drawable-xhdpi/ic_emoji_32.webp
similarity index 100%
rename from res/drawable-xhdpi/ic_emoji_32.webp
rename to src/main/res/drawable-xhdpi/ic_emoji_32.webp
diff --git a/res/drawable-xhdpi/ic_flip_32.webp b/src/main/res/drawable-xhdpi/ic_flip_32.webp
similarity index 100%
rename from res/drawable-xhdpi/ic_flip_32.webp
rename to src/main/res/drawable-xhdpi/ic_flip_32.webp
diff --git a/res/drawable-xhdpi/ic_forum_white_24dp.png b/src/main/res/drawable-xhdpi/ic_forum_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_forum_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_forum_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_forward_white_24dp.png b/src/main/res/drawable-xhdpi/ic_forward_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_forward_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_forward_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_group_grey600_24dp.png b/src/main/res/drawable-xhdpi/ic_group_grey600_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_group_grey600_24dp.png
rename to src/main/res/drawable-xhdpi/ic_group_grey600_24dp.png
diff --git a/res/drawable-xhdpi/ic_group_white_24dp.png b/src/main/res/drawable-xhdpi/ic_group_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_group_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_group_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_headset_white_24dp.png b/src/main/res/drawable-xhdpi/ic_headset_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_headset_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_headset_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_help_white_24dp.png b/src/main/res/drawable-xhdpi/ic_help_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_help_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_help_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_image_dark.png b/src/main/res/drawable-xhdpi/ic_image_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_image_dark.png
rename to src/main/res/drawable-xhdpi/ic_image_dark.png
diff --git a/res/drawable-xhdpi/ic_image_light.png b/src/main/res/drawable-xhdpi/ic_image_light.png
similarity index 100%
rename from res/drawable-xhdpi/ic_image_light.png
rename to src/main/res/drawable-xhdpi/ic_image_light.png
diff --git a/res/drawable-xhdpi/ic_image_white_24dp.png b/src/main/res/drawable-xhdpi/ic_image_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_image_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_image_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_info_outline_dark.png b/src/main/res/drawable-xhdpi/ic_info_outline_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_info_outline_dark.png
rename to src/main/res/drawable-xhdpi/ic_info_outline_dark.png
diff --git a/res/drawable-xhdpi/ic_info_outline_light.png b/src/main/res/drawable-xhdpi/ic_info_outline_light.png
similarity index 100%
rename from res/drawable-xhdpi/ic_info_outline_light.png
rename to src/main/res/drawable-xhdpi/ic_info_outline_light.png
diff --git a/res/drawable-xhdpi/ic_info_outline_white_24dp.png b/src/main/res/drawable-xhdpi/ic_info_outline_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_info_outline_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_info_outline_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_insert_drive_file_white_24dp.png b/src/main/res/drawable-xhdpi/ic_insert_drive_file_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_insert_drive_file_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_insert_drive_file_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_keyboard_arrow_down_white_24dp.png b/src/main/res/drawable-xhdpi/ic_keyboard_arrow_down_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_keyboard_arrow_down_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_keyboard_arrow_down_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_keyboard_grey600_24dp.png b/src/main/res/drawable-xhdpi/ic_keyboard_grey600_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_keyboard_grey600_24dp.png
rename to src/main/res/drawable-xhdpi/ic_keyboard_grey600_24dp.png
diff --git a/res/drawable-xhdpi/ic_keyboard_white_24dp.png b/src/main/res/drawable-xhdpi/ic_keyboard_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_keyboard_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_keyboard_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_launch_white_24dp.png b/src/main/res/drawable-xhdpi/ic_launch_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_launch_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_launch_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_local_dining_white_24dp.png b/src/main/res/drawable-xhdpi/ic_local_dining_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_local_dining_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_local_dining_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_location_chatlist.png b/src/main/res/drawable-xhdpi/ic_location_chatlist.png
similarity index 100%
rename from res/drawable-xhdpi/ic_location_chatlist.png
rename to src/main/res/drawable-xhdpi/ic_location_chatlist.png
diff --git a/res/drawable-xhdpi/ic_location_msg.png b/src/main/res/drawable-xhdpi/ic_location_msg.png
similarity index 100%
rename from res/drawable-xhdpi/ic_location_msg.png
rename to src/main/res/drawable-xhdpi/ic_location_msg.png
diff --git a/res/drawable-xhdpi/ic_location_off_white_24.png b/src/main/res/drawable-xhdpi/ic_location_off_white_24.png
similarity index 100%
rename from res/drawable-xhdpi/ic_location_off_white_24.png
rename to src/main/res/drawable-xhdpi/ic_location_off_white_24.png
diff --git a/res/drawable-xhdpi/ic_location_on_white_24dp.png b/src/main/res/drawable-xhdpi/ic_location_on_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_location_on_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_location_on_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_lock_white_18dp.png b/src/main/res/drawable-xhdpi/ic_lock_white_18dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_lock_white_18dp.png
rename to src/main/res/drawable-xhdpi/ic_lock_white_18dp.png
diff --git a/res/drawable-xhdpi/ic_lock_white_24dp.png b/src/main/res/drawable-xhdpi/ic_lock_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_lock_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_lock_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_mic_grey600_24dp.png b/src/main/res/drawable-xhdpi/ic_mic_grey600_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_mic_grey600_24dp.png
rename to src/main/res/drawable-xhdpi/ic_mic_grey600_24dp.png
diff --git a/res/drawable-xhdpi/ic_mic_white_24dp.png b/src/main/res/drawable-xhdpi/ic_mic_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_mic_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_mic_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_mic_white_48dp.png b/src/main/res/drawable-xhdpi/ic_mic_white_48dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_mic_white_48dp.png
rename to src/main/res/drawable-xhdpi/ic_mic_white_48dp.png
diff --git a/res/drawable-xhdpi/ic_mood_grey600_24dp.png b/src/main/res/drawable-xhdpi/ic_mood_grey600_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_mood_grey600_24dp.png
rename to src/main/res/drawable-xhdpi/ic_mood_grey600_24dp.png
diff --git a/res/drawable-xhdpi/ic_mood_white_24dp.png b/src/main/res/drawable-xhdpi/ic_mood_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_mood_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_mood_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_movie_creation_dark.png b/src/main/res/drawable-xhdpi/ic_movie_creation_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_movie_creation_dark.png
rename to src/main/res/drawable-xhdpi/ic_movie_creation_dark.png
diff --git a/res/drawable-xhdpi/ic_movie_creation_light.png b/src/main/res/drawable-xhdpi/ic_movie_creation_light.png
similarity index 100%
rename from res/drawable-xhdpi/ic_movie_creation_light.png
rename to src/main/res/drawable-xhdpi/ic_movie_creation_light.png
diff --git a/res/drawable-xhdpi/ic_notifications_white_24dp.png b/src/main/res/drawable-xhdpi/ic_notifications_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_notifications_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_notifications_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_pause_circle_fill_white_48dp.png b/src/main/res/drawable-xhdpi/ic_pause_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_pause_circle_fill_white_48dp.png
rename to src/main/res/drawable-xhdpi/ic_pause_circle_fill_white_48dp.png
diff --git a/res/drawable-xhdpi/ic_person_white_24dp.png b/src/main/res/drawable-xhdpi/ic_person_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_person_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_person_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_pets_white_24dp.png b/src/main/res/drawable-xhdpi/ic_pets_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_pets_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_pets_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_photo_camera_dark.png b/src/main/res/drawable-xhdpi/ic_photo_camera_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_photo_camera_dark.png
rename to src/main/res/drawable-xhdpi/ic_photo_camera_dark.png
diff --git a/res/drawable-xhdpi/ic_photo_camera_light.png b/src/main/res/drawable-xhdpi/ic_photo_camera_light.png
similarity index 100%
rename from res/drawable-xhdpi/ic_photo_camera_light.png
rename to src/main/res/drawable-xhdpi/ic_photo_camera_light.png
diff --git a/res/drawable-xhdpi/ic_pin_white.png b/src/main/res/drawable-xhdpi/ic_pin_white.png
similarity index 100%
rename from res/drawable-xhdpi/ic_pin_white.png
rename to src/main/res/drawable-xhdpi/ic_pin_white.png
diff --git a/res/drawable-xhdpi/ic_pinned_chatlist.png b/src/main/res/drawable-xhdpi/ic_pinned_chatlist.png
similarity index 100%
rename from res/drawable-xhdpi/ic_pinned_chatlist.png
rename to src/main/res/drawable-xhdpi/ic_pinned_chatlist.png
diff --git a/res/drawable-xhdpi/ic_play_circle_fill_white_48dp.png b/src/main/res/drawable-xhdpi/ic_play_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_play_circle_fill_white_48dp.png
rename to src/main/res/drawable-xhdpi/ic_play_circle_fill_white_48dp.png
diff --git a/res/drawable-xhdpi/ic_reply.png b/src/main/res/drawable-xhdpi/ic_reply.png
similarity index 100%
rename from res/drawable-xhdpi/ic_reply.png
rename to src/main/res/drawable-xhdpi/ic_reply.png
diff --git a/res/drawable-xhdpi/ic_reply_white_24dp.png b/src/main/res/drawable-xhdpi/ic_reply_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_reply_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_reply_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_reply_white_36dp.png b/src/main/res/drawable-xhdpi/ic_reply_white_36dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_reply_white_36dp.png
rename to src/main/res/drawable-xhdpi/ic_reply_white_36dp.png
diff --git a/res/drawable-xhdpi/ic_rotate_32.webp b/src/main/res/drawable-xhdpi/ic_rotate_32.webp
similarity index 100%
rename from res/drawable-xhdpi/ic_rotate_32.webp
rename to src/main/res/drawable-xhdpi/ic_rotate_32.webp
diff --git a/res/drawable-xhdpi/ic_search_down.png b/src/main/res/drawable-xhdpi/ic_search_down.png
similarity index 100%
rename from res/drawable-xhdpi/ic_search_down.png
rename to src/main/res/drawable-xhdpi/ic_search_down.png
diff --git a/res/drawable-xhdpi/ic_search_up.png b/src/main/res/drawable-xhdpi/ic_search_up.png
similarity index 100%
rename from res/drawable-xhdpi/ic_search_up.png
rename to src/main/res/drawable-xhdpi/ic_search_up.png
diff --git a/res/drawable-xhdpi/ic_send_push.png b/src/main/res/drawable-xhdpi/ic_send_push.png
similarity index 100%
rename from res/drawable-xhdpi/ic_send_push.png
rename to src/main/res/drawable-xhdpi/ic_send_push.png
diff --git a/res/drawable-xhdpi/ic_send_push_white_24dp.png b/src/main/res/drawable-xhdpi/ic_send_push_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_send_push_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_send_push_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_send_sms_insecure.png b/src/main/res/drawable-xhdpi/ic_send_sms_insecure.png
similarity index 100%
rename from res/drawable-xhdpi/ic_send_sms_insecure.png
rename to src/main/res/drawable-xhdpi/ic_send_sms_insecure.png
diff --git a/res/drawable-xhdpi/ic_send_sms_insecure_dark.png b/src/main/res/drawable-xhdpi/ic_send_sms_insecure_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_send_sms_insecure_dark.png
rename to src/main/res/drawable-xhdpi/ic_send_sms_insecure_dark.png
diff --git a/res/drawable-xhdpi/ic_send_sms_white_24dp.png b/src/main/res/drawable-xhdpi/ic_send_sms_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_send_sms_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_send_sms_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_swap_vert_white_24dp.png b/src/main/res/drawable-xhdpi/ic_swap_vert_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_swap_vert_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_swap_vert_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_tag_faces_white_24dp.png b/src/main/res/drawable-xhdpi/ic_tag_faces_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_tag_faces_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_tag_faces_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_text_32.webp b/src/main/res/drawable-xhdpi/ic_text_32.webp
similarity index 100%
rename from res/drawable-xhdpi/ic_text_32.webp
rename to src/main/res/drawable-xhdpi/ic_text_32.webp
diff --git a/res/drawable-xhdpi/ic_trash_filled_32.webp b/src/main/res/drawable-xhdpi/ic_trash_filled_32.webp
similarity index 100%
rename from res/drawable-xhdpi/ic_trash_filled_32.webp
rename to src/main/res/drawable-xhdpi/ic_trash_filled_32.webp
diff --git a/res/drawable-xhdpi/ic_unarchive_white_24dp.png b/src/main/res/drawable-xhdpi/ic_unarchive_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_unarchive_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_unarchive_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_undo_32.webp b/src/main/res/drawable-xhdpi/ic_undo_32.webp
similarity index 100%
rename from res/drawable-xhdpi/ic_undo_32.webp
rename to src/main/res/drawable-xhdpi/ic_undo_32.webp
diff --git a/res/drawable-xhdpi/ic_unlocked_white_24dp.png b/src/main/res/drawable-xhdpi/ic_unlocked_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_unlocked_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_unlocked_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_unpin_white.png b/src/main/res/drawable-xhdpi/ic_unpin_white.png
similarity index 100%
rename from res/drawable-xhdpi/ic_unpin_white.png
rename to src/main/res/drawable-xhdpi/ic_unpin_white.png
diff --git a/res/drawable-xhdpi/ic_volume_off_grey600_18dp.png b/src/main/res/drawable-xhdpi/ic_volume_off_grey600_18dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_volume_off_grey600_18dp.png
rename to src/main/res/drawable-xhdpi/ic_volume_off_grey600_18dp.png
diff --git a/res/drawable-xhdpi/ic_volume_off_white_18dp.png b/src/main/res/drawable-xhdpi/ic_volume_off_white_18dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_volume_off_white_18dp.png
rename to src/main/res/drawable-xhdpi/ic_volume_off_white_18dp.png
diff --git a/res/drawable-xhdpi/ic_volume_up_dark.png b/src/main/res/drawable-xhdpi/ic_volume_up_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_volume_up_dark.png
rename to src/main/res/drawable-xhdpi/ic_volume_up_dark.png
diff --git a/res/drawable-xhdpi/ic_volume_up_light.png b/src/main/res/drawable-xhdpi/ic_volume_up_light.png
similarity index 100%
rename from res/drawable-xhdpi/ic_volume_up_light.png
rename to src/main/res/drawable-xhdpi/ic_volume_up_light.png
diff --git a/res/drawable-xhdpi/ic_warning_dark.png b/src/main/res/drawable-xhdpi/ic_warning_dark.png
similarity index 100%
rename from res/drawable-xhdpi/ic_warning_dark.png
rename to src/main/res/drawable-xhdpi/ic_warning_dark.png
diff --git a/res/drawable-xhdpi/ic_warning_light.png b/src/main/res/drawable-xhdpi/ic_warning_light.png
similarity index 100%
rename from res/drawable-xhdpi/ic_warning_light.png
rename to src/main/res/drawable-xhdpi/ic_warning_light.png
diff --git a/res/drawable-xhdpi/ic_wb_sunny_white_24dp.png b/src/main/res/drawable-xhdpi/ic_wb_sunny_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_wb_sunny_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_wb_sunny_white_24dp.png
diff --git a/res/drawable-xhdpi/ic_work_white_24dp.png b/src/main/res/drawable-xhdpi/ic_work_white_24dp.png
similarity index 100%
rename from res/drawable-xhdpi/ic_work_white_24dp.png
rename to src/main/res/drawable-xhdpi/ic_work_white_24dp.png
diff --git a/res/drawable-xhdpi/msg_encr_out.png b/src/main/res/drawable-xhdpi/msg_encr_out.png
similarity index 100%
rename from res/drawable-xhdpi/msg_encr_out.png
rename to src/main/res/drawable-xhdpi/msg_encr_out.png
diff --git a/res/drawable-xhdpi/notification_permanent.png b/src/main/res/drawable-xhdpi/notification_permanent.png
similarity index 100%
rename from res/drawable-xhdpi/notification_permanent.png
rename to src/main/res/drawable-xhdpi/notification_permanent.png
diff --git a/res/drawable-xhdpi/notify_panel_notification_icon_bg.png b/src/main/res/drawable-xhdpi/notify_panel_notification_icon_bg.png
similarity index 100%
rename from res/drawable-xhdpi/notify_panel_notification_icon_bg.png
rename to src/main/res/drawable-xhdpi/notify_panel_notification_icon_bg.png
diff --git a/res/drawable-xhdpi/quick_camera_dark.png b/src/main/res/drawable-xhdpi/quick_camera_dark.png
similarity index 100%
rename from res/drawable-xhdpi/quick_camera_dark.png
rename to src/main/res/drawable-xhdpi/quick_camera_dark.png
diff --git a/res/drawable-xhdpi/quick_camera_exit_fullscreen.png b/src/main/res/drawable-xhdpi/quick_camera_exit_fullscreen.png
similarity index 100%
rename from res/drawable-xhdpi/quick_camera_exit_fullscreen.png
rename to src/main/res/drawable-xhdpi/quick_camera_exit_fullscreen.png
diff --git a/res/drawable-xhdpi/quick_camera_front.png b/src/main/res/drawable-xhdpi/quick_camera_front.png
similarity index 100%
rename from res/drawable-xhdpi/quick_camera_front.png
rename to src/main/res/drawable-xhdpi/quick_camera_front.png
diff --git a/res/drawable-xhdpi/quick_camera_fullscreen.png b/src/main/res/drawable-xhdpi/quick_camera_fullscreen.png
similarity index 100%
rename from res/drawable-xhdpi/quick_camera_fullscreen.png
rename to src/main/res/drawable-xhdpi/quick_camera_fullscreen.png
diff --git a/res/drawable-xhdpi/quick_camera_hide.png b/src/main/res/drawable-xhdpi/quick_camera_hide.png
similarity index 100%
rename from res/drawable-xhdpi/quick_camera_hide.png
rename to src/main/res/drawable-xhdpi/quick_camera_hide.png
diff --git a/res/drawable-xhdpi/quick_camera_light.png b/src/main/res/drawable-xhdpi/quick_camera_light.png
similarity index 100%
rename from res/drawable-xhdpi/quick_camera_light.png
rename to src/main/res/drawable-xhdpi/quick_camera_light.png
diff --git a/res/drawable-xhdpi/quick_camera_rear.png b/src/main/res/drawable-xhdpi/quick_camera_rear.png
similarity index 100%
rename from res/drawable-xhdpi/quick_camera_rear.png
rename to src/main/res/drawable-xhdpi/quick_camera_rear.png
diff --git a/res/drawable-xhdpi/quick_shutter_button.png b/src/main/res/drawable-xhdpi/quick_shutter_button.png
similarity index 100%
rename from res/drawable-xhdpi/quick_shutter_button.png
rename to src/main/res/drawable-xhdpi/quick_shutter_button.png
diff --git a/res/drawable-xhdpi/slidearrow.png b/src/main/res/drawable-xhdpi/slidearrow.png
similarity index 100%
rename from res/drawable-xhdpi/slidearrow.png
rename to src/main/res/drawable-xhdpi/slidearrow.png
diff --git a/res/drawable-xxhdpi-v11/icon_notification.png b/src/main/res/drawable-xxhdpi-v11/icon_notification.png
similarity index 100%
rename from res/drawable-xxhdpi-v11/icon_notification.png
rename to src/main/res/drawable-xxhdpi-v11/icon_notification.png
diff --git a/res/drawable-xxhdpi/check.png b/src/main/res/drawable-xxhdpi/check.png
similarity index 100%
rename from res/drawable-xxhdpi/check.png
rename to src/main/res/drawable-xxhdpi/check.png
diff --git a/res/drawable-xxhdpi/divet_lower_right_dark.png b/src/main/res/drawable-xxhdpi/divet_lower_right_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/divet_lower_right_dark.png
rename to src/main/res/drawable-xxhdpi/divet_lower_right_dark.png
diff --git a/res/drawable-xxhdpi/divet_lower_right_light.png b/src/main/res/drawable-xxhdpi/divet_lower_right_light.png
similarity index 100%
rename from res/drawable-xxhdpi/divet_lower_right_light.png
rename to src/main/res/drawable-xxhdpi/divet_lower_right_light.png
diff --git a/res/drawable-xxhdpi/ic_account_box_dark.png b/src/main/res/drawable-xxhdpi/ic_account_box_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_account_box_dark.png
rename to src/main/res/drawable-xxhdpi/ic_account_box_dark.png
diff --git a/res/drawable-xxhdpi/ic_account_box_light.png b/src/main/res/drawable-xxhdpi/ic_account_box_light.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_account_box_light.png
rename to src/main/res/drawable-xxhdpi/ic_account_box_light.png
diff --git a/res/drawable-xxhdpi/ic_add_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_add_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_add_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_add_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_advanced_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_advanced_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_advanced_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_advanced_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_archive_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_archive_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_archive_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_archive_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_arrow_back_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_attach_grey600_24dp.png b/src/main/res/drawable-xxhdpi/ic_attach_grey600_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_attach_grey600_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_attach_grey600_24dp.png
diff --git a/res/drawable-xxhdpi/ic_attach_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_attach_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_attach_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_attach_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_backspace_grey600_24dp.png b/src/main/res/drawable-xxhdpi/ic_backspace_grey600_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_backspace_grey600_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_backspace_grey600_24dp.png
diff --git a/res/drawable-xxhdpi/ic_blur_on_white_24.png b/src/main/res/drawable-xxhdpi/ic_blur_on_white_24.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_blur_on_white_24.png
rename to src/main/res/drawable-xxhdpi/ic_blur_on_white_24.png
diff --git a/res/drawable-xxhdpi/ic_brightness_6_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_brightness_6_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_brightness_6_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_brightness_6_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_brush_highlight_32.webp b/src/main/res/drawable-xxhdpi/ic_brush_highlight_32.webp
similarity index 100%
rename from res/drawable-xxhdpi/ic_brush_highlight_32.webp
rename to src/main/res/drawable-xxhdpi/ic_brush_highlight_32.webp
diff --git a/res/drawable-xxhdpi/ic_brush_marker_32.webp b/src/main/res/drawable-xxhdpi/ic_brush_marker_32.webp
similarity index 100%
rename from res/drawable-xxhdpi/ic_brush_marker_32.webp
rename to src/main/res/drawable-xxhdpi/ic_brush_marker_32.webp
diff --git a/res/drawable-xxhdpi/ic_camera_alt_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_camera_alt_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_camera_alt_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_camera_alt_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_check_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_check_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_check_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_check_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_circle_fill_white_48dp.png b/src/main/res/drawable-xxhdpi/ic_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_circle_fill_white_48dp.png
rename to src/main/res/drawable-xxhdpi/ic_circle_fill_white_48dp.png
diff --git a/res/drawable-xxhdpi/ic_clear_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_clear_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_clear_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_clear_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_close_white_18dp.webp b/src/main/res/drawable-xxhdpi/ic_close_white_18dp.webp
similarity index 100%
rename from res/drawable-xxhdpi/ic_close_white_18dp.webp
rename to src/main/res/drawable-xxhdpi/ic_close_white_18dp.webp
diff --git a/res/drawable-xxhdpi/ic_close_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_close_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_close_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_contact_picture.png b/src/main/res/drawable-xxhdpi/ic_contact_picture.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_contact_picture.png
rename to src/main/res/drawable-xxhdpi/ic_contact_picture.png
diff --git a/res/drawable-xxhdpi/ic_content_copy_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_content_copy_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_content_copy_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_content_copy_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_create_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_create_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_create_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_create_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_crop_32.webp b/src/main/res/drawable-xxhdpi/ic_crop_32.webp
similarity index 100%
rename from res/drawable-xxhdpi/ic_crop_32.webp
rename to src/main/res/drawable-xxhdpi/ic_crop_32.webp
diff --git a/res/drawable-xxhdpi/ic_delete_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_delete_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_delivery_status_read.png b/src/main/res/drawable-xxhdpi/ic_delivery_status_read.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_delivery_status_read.png
rename to src/main/res/drawable-xxhdpi/ic_delivery_status_read.png
diff --git a/res/drawable-xxhdpi/ic_delivery_status_sending.png b/src/main/res/drawable-xxhdpi/ic_delivery_status_sending.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_delivery_status_sending.png
rename to src/main/res/drawable-xxhdpi/ic_delivery_status_sending.png
diff --git a/res/drawable-xxhdpi/ic_delivery_status_sent.png b/src/main/res/drawable-xxhdpi/ic_delivery_status_sent.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_delivery_status_sent.png
rename to src/main/res/drawable-xxhdpi/ic_delivery_status_sent.png
diff --git a/res/drawable-xxhdpi/ic_emoji_32.webp b/src/main/res/drawable-xxhdpi/ic_emoji_32.webp
similarity index 100%
rename from res/drawable-xxhdpi/ic_emoji_32.webp
rename to src/main/res/drawable-xxhdpi/ic_emoji_32.webp
diff --git a/res/drawable-xxhdpi/ic_flip_32.webp b/src/main/res/drawable-xxhdpi/ic_flip_32.webp
similarity index 100%
rename from res/drawable-xxhdpi/ic_flip_32.webp
rename to src/main/res/drawable-xxhdpi/ic_flip_32.webp
diff --git a/res/drawable-xxhdpi/ic_forum_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_forum_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_forum_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_forum_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_forward_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_forward_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_forward_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_forward_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_group_grey600_24dp.png b/src/main/res/drawable-xxhdpi/ic_group_grey600_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_group_grey600_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_group_grey600_24dp.png
diff --git a/res/drawable-xxhdpi/ic_group_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_group_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_group_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_group_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_headset_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_headset_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_headset_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_headset_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_help_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_help_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_help_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_help_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_image_dark.png b/src/main/res/drawable-xxhdpi/ic_image_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_image_dark.png
rename to src/main/res/drawable-xxhdpi/ic_image_dark.png
diff --git a/res/drawable-xxhdpi/ic_image_light.png b/src/main/res/drawable-xxhdpi/ic_image_light.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_image_light.png
rename to src/main/res/drawable-xxhdpi/ic_image_light.png
diff --git a/res/drawable-xxhdpi/ic_image_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_image_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_image_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_image_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_info_outline_dark.png b/src/main/res/drawable-xxhdpi/ic_info_outline_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_info_outline_dark.png
rename to src/main/res/drawable-xxhdpi/ic_info_outline_dark.png
diff --git a/res/drawable-xxhdpi/ic_info_outline_light.png b/src/main/res/drawable-xxhdpi/ic_info_outline_light.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_info_outline_light.png
rename to src/main/res/drawable-xxhdpi/ic_info_outline_light.png
diff --git a/res/drawable-xxhdpi/ic_info_outline_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_info_outline_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_info_outline_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_info_outline_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_insert_drive_file_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_insert_drive_file_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_insert_drive_file_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_insert_drive_file_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_keyboard_arrow_down_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_keyboard_arrow_down_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_keyboard_arrow_down_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_keyboard_arrow_down_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_keyboard_grey600_24dp.png b/src/main/res/drawable-xxhdpi/ic_keyboard_grey600_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_keyboard_grey600_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_keyboard_grey600_24dp.png
diff --git a/res/drawable-xxhdpi/ic_keyboard_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_keyboard_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_keyboard_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_keyboard_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_launch_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_launch_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_launch_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_launch_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_local_dining_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_local_dining_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_local_dining_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_local_dining_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_location_off_white_24.png b/src/main/res/drawable-xxhdpi/ic_location_off_white_24.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_location_off_white_24.png
rename to src/main/res/drawable-xxhdpi/ic_location_off_white_24.png
diff --git a/res/drawable-xxhdpi/ic_location_on_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_location_on_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_location_on_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_location_on_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_lock_white_18dp.png b/src/main/res/drawable-xxhdpi/ic_lock_white_18dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_lock_white_18dp.png
rename to src/main/res/drawable-xxhdpi/ic_lock_white_18dp.png
diff --git a/res/drawable-xxhdpi/ic_lock_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_lock_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_lock_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_lock_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_mic_grey600_24dp.png b/src/main/res/drawable-xxhdpi/ic_mic_grey600_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_mic_grey600_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_mic_grey600_24dp.png
diff --git a/res/drawable-xxhdpi/ic_mic_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_mic_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_mic_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_mic_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_mic_white_48dp.png b/src/main/res/drawable-xxhdpi/ic_mic_white_48dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_mic_white_48dp.png
rename to src/main/res/drawable-xxhdpi/ic_mic_white_48dp.png
diff --git a/res/drawable-xxhdpi/ic_mood_grey600_24dp.png b/src/main/res/drawable-xxhdpi/ic_mood_grey600_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_mood_grey600_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_mood_grey600_24dp.png
diff --git a/res/drawable-xxhdpi/ic_mood_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_mood_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_mood_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_mood_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_movie_creation_dark.png b/src/main/res/drawable-xxhdpi/ic_movie_creation_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_movie_creation_dark.png
rename to src/main/res/drawable-xxhdpi/ic_movie_creation_dark.png
diff --git a/res/drawable-xxhdpi/ic_movie_creation_light.png b/src/main/res/drawable-xxhdpi/ic_movie_creation_light.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_movie_creation_light.png
rename to src/main/res/drawable-xxhdpi/ic_movie_creation_light.png
diff --git a/res/drawable-xxhdpi/ic_notifications_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_notifications_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_notifications_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_notifications_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_pause_circle_fill_white_48dp.png b/src/main/res/drawable-xxhdpi/ic_pause_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_pause_circle_fill_white_48dp.png
rename to src/main/res/drawable-xxhdpi/ic_pause_circle_fill_white_48dp.png
diff --git a/res/drawable-xxhdpi/ic_person_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_person_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_person_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_person_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_pets_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_pets_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_pets_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_pets_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_photo_camera_dark.png b/src/main/res/drawable-xxhdpi/ic_photo_camera_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_photo_camera_dark.png
rename to src/main/res/drawable-xxhdpi/ic_photo_camera_dark.png
diff --git a/res/drawable-xxhdpi/ic_photo_camera_light.png b/src/main/res/drawable-xxhdpi/ic_photo_camera_light.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_photo_camera_light.png
rename to src/main/res/drawable-xxhdpi/ic_photo_camera_light.png
diff --git a/res/drawable-xxhdpi/ic_pin_white.png b/src/main/res/drawable-xxhdpi/ic_pin_white.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_pin_white.png
rename to src/main/res/drawable-xxhdpi/ic_pin_white.png
diff --git a/res/drawable-xxhdpi/ic_play_circle_fill_white_48dp.png b/src/main/res/drawable-xxhdpi/ic_play_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_play_circle_fill_white_48dp.png
rename to src/main/res/drawable-xxhdpi/ic_play_circle_fill_white_48dp.png
diff --git a/res/drawable-xxhdpi/ic_reply.png b/src/main/res/drawable-xxhdpi/ic_reply.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_reply.png
rename to src/main/res/drawable-xxhdpi/ic_reply.png
diff --git a/res/drawable-xxhdpi/ic_reply_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_reply_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_reply_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_reply_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_reply_white_36dp.png b/src/main/res/drawable-xxhdpi/ic_reply_white_36dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_reply_white_36dp.png
rename to src/main/res/drawable-xxhdpi/ic_reply_white_36dp.png
diff --git a/res/drawable-xxhdpi/ic_rotate_32.webp b/src/main/res/drawable-xxhdpi/ic_rotate_32.webp
similarity index 100%
rename from res/drawable-xxhdpi/ic_rotate_32.webp
rename to src/main/res/drawable-xxhdpi/ic_rotate_32.webp
diff --git a/res/drawable-xxhdpi/ic_search_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_search_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_search_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_search_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_send_push.png b/src/main/res/drawable-xxhdpi/ic_send_push.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_send_push.png
rename to src/main/res/drawable-xxhdpi/ic_send_push.png
diff --git a/res/drawable-xxhdpi/ic_send_push_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_send_push_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_send_push_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_send_push_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_send_sms_insecure.png b/src/main/res/drawable-xxhdpi/ic_send_sms_insecure.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_send_sms_insecure.png
rename to src/main/res/drawable-xxhdpi/ic_send_sms_insecure.png
diff --git a/res/drawable-xxhdpi/ic_send_sms_insecure_dark.png b/src/main/res/drawable-xxhdpi/ic_send_sms_insecure_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_send_sms_insecure_dark.png
rename to src/main/res/drawable-xxhdpi/ic_send_sms_insecure_dark.png
diff --git a/res/drawable-xxhdpi/ic_send_sms_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_send_sms_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_send_sms_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_send_sms_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_swap_vert_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_swap_vert_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_swap_vert_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_swap_vert_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_tag_faces_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_tag_faces_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_tag_faces_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_tag_faces_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_text_32.webp b/src/main/res/drawable-xxhdpi/ic_text_32.webp
similarity index 100%
rename from res/drawable-xxhdpi/ic_text_32.webp
rename to src/main/res/drawable-xxhdpi/ic_text_32.webp
diff --git a/res/drawable-xxhdpi/ic_trash_filled_32.webp b/src/main/res/drawable-xxhdpi/ic_trash_filled_32.webp
similarity index 100%
rename from res/drawable-xxhdpi/ic_trash_filled_32.webp
rename to src/main/res/drawable-xxhdpi/ic_trash_filled_32.webp
diff --git a/res/drawable-xxhdpi/ic_unarchive_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_unarchive_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_unarchive_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_unarchive_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_undo_32.webp b/src/main/res/drawable-xxhdpi/ic_undo_32.webp
similarity index 100%
rename from res/drawable-xxhdpi/ic_undo_32.webp
rename to src/main/res/drawable-xxhdpi/ic_undo_32.webp
diff --git a/res/drawable-xxhdpi/ic_unlocked_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_unlocked_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_unlocked_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_unlocked_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_unpin_white.png b/src/main/res/drawable-xxhdpi/ic_unpin_white.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_unpin_white.png
rename to src/main/res/drawable-xxhdpi/ic_unpin_white.png
diff --git a/res/drawable-xxhdpi/ic_volume_off_grey600_18dp.png b/src/main/res/drawable-xxhdpi/ic_volume_off_grey600_18dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_volume_off_grey600_18dp.png
rename to src/main/res/drawable-xxhdpi/ic_volume_off_grey600_18dp.png
diff --git a/res/drawable-xxhdpi/ic_volume_off_white_18dp.png b/src/main/res/drawable-xxhdpi/ic_volume_off_white_18dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_volume_off_white_18dp.png
rename to src/main/res/drawable-xxhdpi/ic_volume_off_white_18dp.png
diff --git a/res/drawable-xxhdpi/ic_volume_up_dark.png b/src/main/res/drawable-xxhdpi/ic_volume_up_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_volume_up_dark.png
rename to src/main/res/drawable-xxhdpi/ic_volume_up_dark.png
diff --git a/res/drawable-xxhdpi/ic_volume_up_light.png b/src/main/res/drawable-xxhdpi/ic_volume_up_light.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_volume_up_light.png
rename to src/main/res/drawable-xxhdpi/ic_volume_up_light.png
diff --git a/res/drawable-xxhdpi/ic_warning_dark.png b/src/main/res/drawable-xxhdpi/ic_warning_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_warning_dark.png
rename to src/main/res/drawable-xxhdpi/ic_warning_dark.png
diff --git a/res/drawable-xxhdpi/ic_warning_light.png b/src/main/res/drawable-xxhdpi/ic_warning_light.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_warning_light.png
rename to src/main/res/drawable-xxhdpi/ic_warning_light.png
diff --git a/res/drawable-xxhdpi/ic_wb_sunny_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_wb_sunny_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_wb_sunny_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_wb_sunny_white_24dp.png
diff --git a/res/drawable-xxhdpi/ic_work_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_work_white_24dp.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_work_white_24dp.png
rename to src/main/res/drawable-xxhdpi/ic_work_white_24dp.png
diff --git a/res/drawable-xxhdpi/msg_encr_out.png b/src/main/res/drawable-xxhdpi/msg_encr_out.png
similarity index 100%
rename from res/drawable-xxhdpi/msg_encr_out.png
rename to src/main/res/drawable-xxhdpi/msg_encr_out.png
diff --git a/res/drawable-xxhdpi/notification_permanent.png b/src/main/res/drawable-xxhdpi/notification_permanent.png
similarity index 100%
rename from res/drawable-xxhdpi/notification_permanent.png
rename to src/main/res/drawable-xxhdpi/notification_permanent.png
diff --git a/res/drawable-xxhdpi/quick_camera_dark.png b/src/main/res/drawable-xxhdpi/quick_camera_dark.png
similarity index 100%
rename from res/drawable-xxhdpi/quick_camera_dark.png
rename to src/main/res/drawable-xxhdpi/quick_camera_dark.png
diff --git a/res/drawable-xxhdpi/quick_camera_exit_fullscreen.png b/src/main/res/drawable-xxhdpi/quick_camera_exit_fullscreen.png
similarity index 100%
rename from res/drawable-xxhdpi/quick_camera_exit_fullscreen.png
rename to src/main/res/drawable-xxhdpi/quick_camera_exit_fullscreen.png
diff --git a/res/drawable-xxhdpi/quick_camera_front.png b/src/main/res/drawable-xxhdpi/quick_camera_front.png
similarity index 100%
rename from res/drawable-xxhdpi/quick_camera_front.png
rename to src/main/res/drawable-xxhdpi/quick_camera_front.png
diff --git a/res/drawable-xxhdpi/quick_camera_fullscreen.png b/src/main/res/drawable-xxhdpi/quick_camera_fullscreen.png
similarity index 100%
rename from res/drawable-xxhdpi/quick_camera_fullscreen.png
rename to src/main/res/drawable-xxhdpi/quick_camera_fullscreen.png
diff --git a/res/drawable-xxhdpi/quick_camera_hide.png b/src/main/res/drawable-xxhdpi/quick_camera_hide.png
similarity index 100%
rename from res/drawable-xxhdpi/quick_camera_hide.png
rename to src/main/res/drawable-xxhdpi/quick_camera_hide.png
diff --git a/res/drawable-xxhdpi/quick_camera_light.png b/src/main/res/drawable-xxhdpi/quick_camera_light.png
similarity index 100%
rename from res/drawable-xxhdpi/quick_camera_light.png
rename to src/main/res/drawable-xxhdpi/quick_camera_light.png
diff --git a/res/drawable-xxhdpi/quick_camera_rear.png b/src/main/res/drawable-xxhdpi/quick_camera_rear.png
similarity index 100%
rename from res/drawable-xxhdpi/quick_camera_rear.png
rename to src/main/res/drawable-xxhdpi/quick_camera_rear.png
diff --git a/res/drawable-xxhdpi/quick_shutter_button.png b/src/main/res/drawable-xxhdpi/quick_shutter_button.png
similarity index 100%
rename from res/drawable-xxhdpi/quick_shutter_button.png
rename to src/main/res/drawable-xxhdpi/quick_shutter_button.png
diff --git a/res/drawable-xxxhdpi/ic_advanced_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_advanced_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_advanced_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_advanced_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_archive_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_archive_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_archive_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_archive_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_arrow_back_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_arrow_back_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_arrow_back_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_arrow_back_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_blur_on_white_24.png b/src/main/res/drawable-xxxhdpi/ic_blur_on_white_24.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_blur_on_white_24.png
rename to src/main/res/drawable-xxxhdpi/ic_blur_on_white_24.png
diff --git a/res/drawable-xxxhdpi/ic_brightness_6_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_brightness_6_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_brightness_6_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_brightness_6_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_brush_highlight_32.webp b/src/main/res/drawable-xxxhdpi/ic_brush_highlight_32.webp
similarity index 100%
rename from res/drawable-xxxhdpi/ic_brush_highlight_32.webp
rename to src/main/res/drawable-xxxhdpi/ic_brush_highlight_32.webp
diff --git a/res/drawable-xxxhdpi/ic_brush_marker_32.webp b/src/main/res/drawable-xxxhdpi/ic_brush_marker_32.webp
similarity index 100%
rename from res/drawable-xxxhdpi/ic_brush_marker_32.webp
rename to src/main/res/drawable-xxxhdpi/ic_brush_marker_32.webp
diff --git a/res/drawable-xxxhdpi/ic_camera_alt_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_camera_alt_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_camera_alt_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_camera_alt_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_check_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_check_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_check_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_check_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_circle_fill_white_48dp.png b/src/main/res/drawable-xxxhdpi/ic_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_circle_fill_white_48dp.png
rename to src/main/res/drawable-xxxhdpi/ic_circle_fill_white_48dp.png
diff --git a/res/drawable-xxxhdpi/ic_clear_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_clear_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_clear_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_clear_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_close_white_18dp.webp b/src/main/res/drawable-xxxhdpi/ic_close_white_18dp.webp
similarity index 100%
rename from res/drawable-xxxhdpi/ic_close_white_18dp.webp
rename to src/main/res/drawable-xxxhdpi/ic_close_white_18dp.webp
diff --git a/res/drawable-xxxhdpi/ic_close_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_close_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_content_copy_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_crop_32.webp b/src/main/res/drawable-xxxhdpi/ic_crop_32.webp
similarity index 100%
rename from res/drawable-xxxhdpi/ic_crop_32.webp
rename to src/main/res/drawable-xxxhdpi/ic_crop_32.webp
diff --git a/res/drawable-xxxhdpi/ic_delete_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_delete_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_delivery_status_read.png b/src/main/res/drawable-xxxhdpi/ic_delivery_status_read.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_delivery_status_read.png
rename to src/main/res/drawable-xxxhdpi/ic_delivery_status_read.png
diff --git a/res/drawable-xxxhdpi/ic_delivery_status_sending.png b/src/main/res/drawable-xxxhdpi/ic_delivery_status_sending.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_delivery_status_sending.png
rename to src/main/res/drawable-xxxhdpi/ic_delivery_status_sending.png
diff --git a/res/drawable-xxxhdpi/ic_delivery_status_sent.png b/src/main/res/drawable-xxxhdpi/ic_delivery_status_sent.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_delivery_status_sent.png
rename to src/main/res/drawable-xxxhdpi/ic_delivery_status_sent.png
diff --git a/res/drawable-xxxhdpi/ic_emoji_32.webp b/src/main/res/drawable-xxxhdpi/ic_emoji_32.webp
similarity index 100%
rename from res/drawable-xxxhdpi/ic_emoji_32.webp
rename to src/main/res/drawable-xxxhdpi/ic_emoji_32.webp
diff --git a/res/drawable-xxxhdpi/ic_flip_32.webp b/src/main/res/drawable-xxxhdpi/ic_flip_32.webp
similarity index 100%
rename from res/drawable-xxxhdpi/ic_flip_32.webp
rename to src/main/res/drawable-xxxhdpi/ic_flip_32.webp
diff --git a/res/drawable-xxxhdpi/ic_forum_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_forum_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_forum_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_forum_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_headset_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_headset_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_headset_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_headset_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_help_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_help_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_help_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_help_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_image_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_image_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_image_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_image_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_insert_drive_file_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_insert_drive_file_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_insert_drive_file_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_insert_drive_file_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_keyboard_arrow_down_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_keyboard_arrow_down_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_keyboard_arrow_down_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_keyboard_arrow_down_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_keyboard_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_keyboard_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_keyboard_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_keyboard_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_launch_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_launch_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_launch_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_launch_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_local_dining_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_local_dining_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_local_dining_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_local_dining_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_location_off_white_24.png b/src/main/res/drawable-xxxhdpi/ic_location_off_white_24.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_location_off_white_24.png
rename to src/main/res/drawable-xxxhdpi/ic_location_off_white_24.png
diff --git a/res/drawable-xxxhdpi/ic_location_on_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_location_on_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_location_on_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_location_on_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_mic_grey600_24dp.png b/src/main/res/drawable-xxxhdpi/ic_mic_grey600_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_mic_grey600_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_mic_grey600_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_mic_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_mic_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_mic_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_mic_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_mic_white_48dp.png b/src/main/res/drawable-xxxhdpi/ic_mic_white_48dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_mic_white_48dp.png
rename to src/main/res/drawable-xxxhdpi/ic_mic_white_48dp.png
diff --git a/res/drawable-xxxhdpi/ic_notifications_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_notifications_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_notifications_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_notifications_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_pause_circle_fill_white_48dp.png b/src/main/res/drawable-xxxhdpi/ic_pause_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_pause_circle_fill_white_48dp.png
rename to src/main/res/drawable-xxxhdpi/ic_pause_circle_fill_white_48dp.png
diff --git a/res/drawable-xxxhdpi/ic_person_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_person_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_person_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_person_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_pets_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_pets_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_pets_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_pets_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_photo_camera_dark.png b/src/main/res/drawable-xxxhdpi/ic_photo_camera_dark.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_photo_camera_dark.png
rename to src/main/res/drawable-xxxhdpi/ic_photo_camera_dark.png
diff --git a/res/drawable-xxxhdpi/ic_photo_camera_light.png b/src/main/res/drawable-xxxhdpi/ic_photo_camera_light.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_photo_camera_light.png
rename to src/main/res/drawable-xxxhdpi/ic_photo_camera_light.png
diff --git a/res/drawable-xxxhdpi/ic_pin_white.png b/src/main/res/drawable-xxxhdpi/ic_pin_white.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_pin_white.png
rename to src/main/res/drawable-xxxhdpi/ic_pin_white.png
diff --git a/res/drawable-xxxhdpi/ic_play_circle_fill_white_48dp.png b/src/main/res/drawable-xxxhdpi/ic_play_circle_fill_white_48dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_play_circle_fill_white_48dp.png
rename to src/main/res/drawable-xxxhdpi/ic_play_circle_fill_white_48dp.png
diff --git a/res/drawable-xxxhdpi/ic_reply_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_reply_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_reply_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_reply_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_reply_white_36dp.png b/src/main/res/drawable-xxxhdpi/ic_reply_white_36dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_reply_white_36dp.png
rename to src/main/res/drawable-xxxhdpi/ic_reply_white_36dp.png
diff --git a/res/drawable-xxxhdpi/ic_rotate_32.webp b/src/main/res/drawable-xxxhdpi/ic_rotate_32.webp
similarity index 100%
rename from res/drawable-xxxhdpi/ic_rotate_32.webp
rename to src/main/res/drawable-xxxhdpi/ic_rotate_32.webp
diff --git a/res/drawable-xxxhdpi/ic_send_push_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_send_push_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_send_push_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_send_push_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_send_sms_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_send_sms_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_send_sms_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_send_sms_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_swap_vert_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_swap_vert_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_swap_vert_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_swap_vert_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_tag_faces_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_tag_faces_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_tag_faces_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_tag_faces_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_text_32.webp b/src/main/res/drawable-xxxhdpi/ic_text_32.webp
similarity index 100%
rename from res/drawable-xxxhdpi/ic_text_32.webp
rename to src/main/res/drawable-xxxhdpi/ic_text_32.webp
diff --git a/res/drawable-xxxhdpi/ic_trash_filled_32.webp b/src/main/res/drawable-xxxhdpi/ic_trash_filled_32.webp
similarity index 100%
rename from res/drawable-xxxhdpi/ic_trash_filled_32.webp
rename to src/main/res/drawable-xxxhdpi/ic_trash_filled_32.webp
diff --git a/res/drawable-xxxhdpi/ic_unarchive_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_unarchive_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_unarchive_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_unarchive_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_undo_32.webp b/src/main/res/drawable-xxxhdpi/ic_undo_32.webp
similarity index 100%
rename from res/drawable-xxxhdpi/ic_undo_32.webp
rename to src/main/res/drawable-xxxhdpi/ic_undo_32.webp
diff --git a/res/drawable-xxxhdpi/ic_unpin_white.png b/src/main/res/drawable-xxxhdpi/ic_unpin_white.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_unpin_white.png
rename to src/main/res/drawable-xxxhdpi/ic_unpin_white.png
diff --git a/res/drawable-xxxhdpi/ic_volume_off_grey600_18dp.png b/src/main/res/drawable-xxxhdpi/ic_volume_off_grey600_18dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_volume_off_grey600_18dp.png
rename to src/main/res/drawable-xxxhdpi/ic_volume_off_grey600_18dp.png
diff --git a/res/drawable-xxxhdpi/ic_volume_off_white_18dp.png b/src/main/res/drawable-xxxhdpi/ic_volume_off_white_18dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_volume_off_white_18dp.png
rename to src/main/res/drawable-xxxhdpi/ic_volume_off_white_18dp.png
diff --git a/res/drawable-xxxhdpi/ic_wb_sunny_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_wb_sunny_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_wb_sunny_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_wb_sunny_white_24dp.png
diff --git a/res/drawable-xxxhdpi/ic_work_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_work_white_24dp.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_work_white_24dp.png
rename to src/main/res/drawable-xxxhdpi/ic_work_white_24dp.png
diff --git a/res/drawable/archived_indicator_background.xml b/src/main/res/drawable/archived_indicator_background.xml
similarity index 100%
rename from res/drawable/archived_indicator_background.xml
rename to src/main/res/drawable/archived_indicator_background.xml
diff --git a/res/drawable/attachment_selector_shadow.xml b/src/main/res/drawable/attachment_selector_shadow.xml
similarity index 100%
rename from res/drawable/attachment_selector_shadow.xml
rename to src/main/res/drawable/attachment_selector_shadow.xml
diff --git a/res/drawable/background_hd.jpg b/src/main/res/drawable/background_hd.jpg
similarity index 100%
rename from res/drawable/background_hd.jpg
rename to src/main/res/drawable/background_hd.jpg
diff --git a/res/drawable/background_hd_dark.jpg b/src/main/res/drawable/background_hd_dark.jpg
similarity index 100%
rename from res/drawable/background_hd_dark.jpg
rename to src/main/res/drawable/background_hd_dark.jpg
diff --git a/res/drawable/badge_divider.xml b/src/main/res/drawable/badge_divider.xml
similarity index 100%
rename from res/drawable/badge_divider.xml
rename to src/main/res/drawable/badge_divider.xml
diff --git a/res/drawable/baseline_qr_code_24.xml b/src/main/res/drawable/baseline_qr_code_24.xml
similarity index 100%
rename from res/drawable/baseline_qr_code_24.xml
rename to src/main/res/drawable/baseline_qr_code_24.xml
diff --git a/res/drawable/button_background.xml b/src/main/res/drawable/button_background.xml
similarity index 100%
rename from res/drawable/button_background.xml
rename to src/main/res/drawable/button_background.xml
diff --git a/res/drawable/button_secondary_background.xml b/src/main/res/drawable/button_secondary_background.xml
similarity index 100%
rename from res/drawable/button_secondary_background.xml
rename to src/main/res/drawable/button_secondary_background.xml
diff --git a/res/drawable/circle_alpha.xml b/src/main/res/drawable/circle_alpha.xml
similarity index 100%
rename from res/drawable/circle_alpha.xml
rename to src/main/res/drawable/circle_alpha.xml
diff --git a/res/drawable/circle_tintable.xml b/src/main/res/drawable/circle_tintable.xml
similarity index 100%
rename from res/drawable/circle_tintable.xml
rename to src/main/res/drawable/circle_tintable.xml
diff --git a/res/drawable/circle_touch_highlight_background.xml b/src/main/res/drawable/circle_touch_highlight_background.xml
similarity index 100%
rename from res/drawable/circle_touch_highlight_background.xml
rename to src/main/res/drawable/circle_touch_highlight_background.xml
diff --git a/res/drawable/circle_universal_overlay.xml b/src/main/res/drawable/circle_universal_overlay.xml
similarity index 100%
rename from res/drawable/circle_universal_overlay.xml
rename to src/main/res/drawable/circle_universal_overlay.xml
diff --git a/res/drawable/circle_white.xml b/src/main/res/drawable/circle_white.xml
similarity index 100%
rename from res/drawable/circle_white.xml
rename to src/main/res/drawable/circle_white.xml
diff --git a/res/drawable/clickable_card_dark.xml b/src/main/res/drawable/clickable_card_dark.xml
similarity index 100%
rename from res/drawable/clickable_card_dark.xml
rename to src/main/res/drawable/clickable_card_dark.xml
diff --git a/res/drawable/clickable_card_light.xml b/src/main/res/drawable/clickable_card_light.xml
similarity index 100%
rename from res/drawable/clickable_card_light.xml
rename to src/main/res/drawable/clickable_card_light.xml
diff --git a/res/drawable/compose_background_dark.xml b/src/main/res/drawable/compose_background_dark.xml
similarity index 100%
rename from res/drawable/compose_background_dark.xml
rename to src/main/res/drawable/compose_background_dark.xml
diff --git a/res/drawable/compose_background_light.xml b/src/main/res/drawable/compose_background_light.xml
similarity index 100%
rename from res/drawable/compose_background_light.xml
rename to src/main/res/drawable/compose_background_light.xml
diff --git a/res/drawable/compose_divider_background.xml b/src/main/res/drawable/compose_divider_background.xml
similarity index 100%
rename from res/drawable/compose_divider_background.xml
rename to src/main/res/drawable/compose_divider_background.xml
diff --git a/res/drawable/contact_list_divider_dark.xml b/src/main/res/drawable/contact_list_divider_dark.xml
similarity index 100%
rename from res/drawable/contact_list_divider_dark.xml
rename to src/main/res/drawable/contact_list_divider_dark.xml
diff --git a/res/drawable/contact_list_divider_light.xml b/src/main/res/drawable/contact_list_divider_light.xml
similarity index 100%
rename from res/drawable/contact_list_divider_light.xml
rename to src/main/res/drawable/contact_list_divider_light.xml
diff --git a/res/drawable/contact_photo_background.xml b/src/main/res/drawable/contact_photo_background.xml
similarity index 100%
rename from res/drawable/contact_photo_background.xml
rename to src/main/res/drawable/contact_photo_background.xml
diff --git a/res/drawable/conversation_attachment_close_circle.xml b/src/main/res/drawable/conversation_attachment_close_circle.xml
similarity index 100%
rename from res/drawable/conversation_attachment_close_circle.xml
rename to src/main/res/drawable/conversation_attachment_close_circle.xml
diff --git a/res/drawable/conversation_attachment_edit.xml b/src/main/res/drawable/conversation_attachment_edit.xml
similarity index 100%
rename from res/drawable/conversation_attachment_edit.xml
rename to src/main/res/drawable/conversation_attachment_edit.xml
diff --git a/res/drawable/conversation_item_background.xml b/src/main/res/drawable/conversation_item_background.xml
similarity index 100%
rename from res/drawable/conversation_item_background.xml
rename to src/main/res/drawable/conversation_item_background.xml
diff --git a/res/drawable/conversation_item_background_animated.xml b/src/main/res/drawable/conversation_item_background_animated.xml
similarity index 100%
rename from res/drawable/conversation_item_background_animated.xml
rename to src/main/res/drawable/conversation_item_background_animated.xml
diff --git a/res/drawable/conversation_item_sent_indicator_text_shape.xml b/src/main/res/drawable/conversation_item_sent_indicator_text_shape.xml
similarity index 100%
rename from res/drawable/conversation_item_sent_indicator_text_shape.xml
rename to src/main/res/drawable/conversation_item_sent_indicator_text_shape.xml
diff --git a/res/drawable/conversation_item_sent_indicator_text_shape_dark.xml b/src/main/res/drawable/conversation_item_sent_indicator_text_shape_dark.xml
similarity index 100%
rename from res/drawable/conversation_item_sent_indicator_text_shape_dark.xml
rename to src/main/res/drawable/conversation_item_sent_indicator_text_shape_dark.xml
diff --git a/res/drawable/conversation_item_update_background.xml b/src/main/res/drawable/conversation_item_update_background.xml
similarity index 100%
rename from res/drawable/conversation_item_update_background.xml
rename to src/main/res/drawable/conversation_item_update_background.xml
diff --git a/res/drawable/conversation_list_divider_shape.xml b/src/main/res/drawable/conversation_list_divider_shape.xml
similarity index 100%
rename from res/drawable/conversation_list_divider_shape.xml
rename to src/main/res/drawable/conversation_list_divider_shape.xml
diff --git a/res/drawable/conversation_list_divider_shape_dark.xml b/src/main/res/drawable/conversation_list_divider_shape_dark.xml
similarity index 100%
rename from res/drawable/conversation_list_divider_shape_dark.xml
rename to src/main/res/drawable/conversation_list_divider_shape_dark.xml
diff --git a/res/drawable/conversation_list_item_background.xml b/src/main/res/drawable/conversation_list_item_background.xml
similarity index 100%
rename from res/drawable/conversation_list_item_background.xml
rename to src/main/res/drawable/conversation_list_item_background.xml
diff --git a/res/drawable/conversation_list_item_background_dark.xml b/src/main/res/drawable/conversation_list_item_background_dark.xml
similarity index 100%
rename from res/drawable/conversation_list_item_background_dark.xml
rename to src/main/res/drawable/conversation_list_item_background_dark.xml
diff --git a/res/drawable/dismiss_background.xml b/src/main/res/drawable/dismiss_background.xml
similarity index 100%
rename from res/drawable/dismiss_background.xml
rename to src/main/res/drawable/dismiss_background.xml
diff --git a/res/drawable/emoji_variation_selector_background_dark.xml b/src/main/res/drawable/emoji_variation_selector_background_dark.xml
similarity index 100%
rename from res/drawable/emoji_variation_selector_background_dark.xml
rename to src/main/res/drawable/emoji_variation_selector_background_dark.xml
diff --git a/res/drawable/emoji_variation_selector_background_light.xml b/src/main/res/drawable/emoji_variation_selector_background_light.xml
similarity index 100%
rename from res/drawable/emoji_variation_selector_background_light.xml
rename to src/main/res/drawable/emoji_variation_selector_background_light.xml
diff --git a/res/drawable/floating_mini_bg_dark.xml b/src/main/res/drawable/floating_mini_bg_dark.xml
similarity index 100%
rename from res/drawable/floating_mini_bg_dark.xml
rename to src/main/res/drawable/floating_mini_bg_dark.xml
diff --git a/res/drawable/floating_mini_bg_light.xml b/src/main/res/drawable/floating_mini_bg_light.xml
similarity index 100%
rename from res/drawable/floating_mini_bg_light.xml
rename to src/main/res/drawable/floating_mini_bg_light.xml
diff --git a/res/drawable/ic_advanced_24dp.xml b/src/main/res/drawable/ic_advanced_24dp.xml
similarity index 100%
rename from res/drawable/ic_advanced_24dp.xml
rename to src/main/res/drawable/ic_advanced_24dp.xml
diff --git a/res/drawable/ic_baseline_devices_24.xml b/src/main/res/drawable/ic_baseline_devices_24.xml
similarity index 100%
rename from res/drawable/ic_baseline_devices_24.xml
rename to src/main/res/drawable/ic_baseline_devices_24.xml
diff --git a/res/drawable/ic_blur_on_white_24.png b/src/main/res/drawable/ic_blur_on_white_24.png
similarity index 100%
rename from res/drawable/ic_blur_on_white_24.png
rename to src/main/res/drawable/ic_blur_on_white_24.png
diff --git a/res/drawable/ic_brightness_6_24dp.xml b/src/main/res/drawable/ic_brightness_6_24dp.xml
similarity index 100%
rename from res/drawable/ic_brightness_6_24dp.xml
rename to src/main/res/drawable/ic_brightness_6_24dp.xml
diff --git a/res/drawable/ic_check_outline_22.xml b/src/main/res/drawable/ic_check_outline_22.xml
similarity index 100%
rename from res/drawable/ic_check_outline_22.xml
rename to src/main/res/drawable/ic_check_outline_22.xml
diff --git a/res/drawable/ic_chevron_up.xml b/src/main/res/drawable/ic_chevron_up.xml
similarity index 100%
rename from res/drawable/ic_chevron_up.xml
rename to src/main/res/drawable/ic_chevron_up.xml
diff --git a/res/drawable/ic_circle_checkbox.xml b/src/main/res/drawable/ic_circle_checkbox.xml
similarity index 100%
rename from res/drawable/ic_circle_checkbox.xml
rename to src/main/res/drawable/ic_circle_checkbox.xml
diff --git a/res/drawable/ic_circle_status.xml b/src/main/res/drawable/ic_circle_status.xml
similarity index 100%
rename from res/drawable/ic_circle_status.xml
rename to src/main/res/drawable/ic_circle_status.xml
diff --git a/res/drawable/ic_delivery_status_failed.xml b/src/main/res/drawable/ic_delivery_status_failed.xml
similarity index 100%
rename from res/drawable/ic_delivery_status_failed.xml
rename to src/main/res/drawable/ic_delivery_status_failed.xml
diff --git a/res/drawable/ic_emoji_activity_dark_20.xml b/src/main/res/drawable/ic_emoji_activity_dark_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_activity_dark_20.xml
rename to src/main/res/drawable/ic_emoji_activity_dark_20.xml
diff --git a/res/drawable/ic_emoji_activity_light_20.xml b/src/main/res/drawable/ic_emoji_activity_light_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_activity_light_20.xml
rename to src/main/res/drawable/ic_emoji_activity_light_20.xml
diff --git a/res/drawable/ic_emoji_animal_dark_20.xml b/src/main/res/drawable/ic_emoji_animal_dark_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_animal_dark_20.xml
rename to src/main/res/drawable/ic_emoji_animal_dark_20.xml
diff --git a/res/drawable/ic_emoji_animal_light_20.xml b/src/main/res/drawable/ic_emoji_animal_light_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_animal_light_20.xml
rename to src/main/res/drawable/ic_emoji_animal_light_20.xml
diff --git a/res/drawable/ic_emoji_emoticon_dark_20.xml b/src/main/res/drawable/ic_emoji_emoticon_dark_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_emoticon_dark_20.xml
rename to src/main/res/drawable/ic_emoji_emoticon_dark_20.xml
diff --git a/res/drawable/ic_emoji_emoticon_light_20.xml b/src/main/res/drawable/ic_emoji_emoticon_light_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_emoticon_light_20.xml
rename to src/main/res/drawable/ic_emoji_emoticon_light_20.xml
diff --git a/res/drawable/ic_emoji_filled.xml b/src/main/res/drawable/ic_emoji_filled.xml
similarity index 100%
rename from res/drawable/ic_emoji_filled.xml
rename to src/main/res/drawable/ic_emoji_filled.xml
diff --git a/res/drawable/ic_emoji_flag_dark_20.xml b/src/main/res/drawable/ic_emoji_flag_dark_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_flag_dark_20.xml
rename to src/main/res/drawable/ic_emoji_flag_dark_20.xml
diff --git a/res/drawable/ic_emoji_flag_light_20.xml b/src/main/res/drawable/ic_emoji_flag_light_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_flag_light_20.xml
rename to src/main/res/drawable/ic_emoji_flag_light_20.xml
diff --git a/res/drawable/ic_emoji_food_dark_20.xml b/src/main/res/drawable/ic_emoji_food_dark_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_food_dark_20.xml
rename to src/main/res/drawable/ic_emoji_food_dark_20.xml
diff --git a/res/drawable/ic_emoji_food_light_20.xml b/src/main/res/drawable/ic_emoji_food_light_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_food_light_20.xml
rename to src/main/res/drawable/ic_emoji_food_light_20.xml
diff --git a/res/drawable/ic_emoji_object_dark_20.xml b/src/main/res/drawable/ic_emoji_object_dark_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_object_dark_20.xml
rename to src/main/res/drawable/ic_emoji_object_dark_20.xml
diff --git a/res/drawable/ic_emoji_object_light_20.xml b/src/main/res/drawable/ic_emoji_object_light_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_object_light_20.xml
rename to src/main/res/drawable/ic_emoji_object_light_20.xml
diff --git a/res/drawable/ic_emoji_outline.xml b/src/main/res/drawable/ic_emoji_outline.xml
similarity index 100%
rename from res/drawable/ic_emoji_outline.xml
rename to src/main/res/drawable/ic_emoji_outline.xml
diff --git a/res/drawable/ic_emoji_people_dark_20.xml b/src/main/res/drawable/ic_emoji_people_dark_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_people_dark_20.xml
rename to src/main/res/drawable/ic_emoji_people_dark_20.xml
diff --git a/res/drawable/ic_emoji_people_light_20.xml b/src/main/res/drawable/ic_emoji_people_light_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_people_light_20.xml
rename to src/main/res/drawable/ic_emoji_people_light_20.xml
diff --git a/res/drawable/ic_emoji_symbol_dark_20.xml b/src/main/res/drawable/ic_emoji_symbol_dark_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_symbol_dark_20.xml
rename to src/main/res/drawable/ic_emoji_symbol_dark_20.xml
diff --git a/res/drawable/ic_emoji_symbol_light_20.xml b/src/main/res/drawable/ic_emoji_symbol_light_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_symbol_light_20.xml
rename to src/main/res/drawable/ic_emoji_symbol_light_20.xml
diff --git a/res/drawable/ic_emoji_travel_dark_20.xml b/src/main/res/drawable/ic_emoji_travel_dark_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_travel_dark_20.xml
rename to src/main/res/drawable/ic_emoji_travel_dark_20.xml
diff --git a/res/drawable/ic_emoji_travel_light_20.xml b/src/main/res/drawable/ic_emoji_travel_light_20.xml
similarity index 100%
rename from res/drawable/ic_emoji_travel_light_20.xml
rename to src/main/res/drawable/ic_emoji_travel_light_20.xml
diff --git a/res/drawable/ic_forum_24dp.xml b/src/main/res/drawable/ic_forum_24dp.xml
similarity index 100%
rename from res/drawable/ic_forum_24dp.xml
rename to src/main/res/drawable/ic_forum_24dp.xml
diff --git a/res/drawable/ic_help_24dp.xml b/src/main/res/drawable/ic_help_24dp.xml
similarity index 100%
rename from res/drawable/ic_help_24dp.xml
rename to src/main/res/drawable/ic_help_24dp.xml
diff --git a/res/drawable/ic_lock.xml b/src/main/res/drawable/ic_lock.xml
similarity index 100%
rename from res/drawable/ic_lock.xml
rename to src/main/res/drawable/ic_lock.xml
diff --git a/res/drawable/ic_map_white_24dp.xml b/src/main/res/drawable/ic_map_white_24dp.xml
similarity index 100%
rename from res/drawable/ic_map_white_24dp.xml
rename to src/main/res/drawable/ic_map_white_24dp.xml
diff --git a/res/drawable/ic_notifications_24dp.xml b/src/main/res/drawable/ic_notifications_24dp.xml
similarity index 100%
rename from res/drawable/ic_notifications_24dp.xml
rename to src/main/res/drawable/ic_notifications_24dp.xml
diff --git a/res/drawable/ic_person_large.xml b/src/main/res/drawable/ic_person_large.xml
similarity index 100%
rename from res/drawable/ic_person_large.xml
rename to src/main/res/drawable/ic_person_large.xml
diff --git a/res/drawable/ic_recent_dark_20.xml b/src/main/res/drawable/ic_recent_dark_20.xml
similarity index 100%
rename from res/drawable/ic_recent_dark_20.xml
rename to src/main/res/drawable/ic_recent_dark_20.xml
diff --git a/res/drawable/ic_recent_light_20.xml b/src/main/res/drawable/ic_recent_light_20.xml
similarity index 100%
rename from res/drawable/ic_recent_light_20.xml
rename to src/main/res/drawable/ic_recent_light_20.xml
diff --git a/res/drawable/ic_share_white_24dp.xml b/src/main/res/drawable/ic_share_white_24dp.xml
similarity index 100%
rename from res/drawable/ic_share_white_24dp.xml
rename to src/main/res/drawable/ic_share_white_24dp.xml
diff --git a/res/drawable/ic_swap_vert_24dp.xml b/src/main/res/drawable/ic_swap_vert_24dp.xml
similarity index 100%
rename from res/drawable/ic_swap_vert_24dp.xml
rename to src/main/res/drawable/ic_swap_vert_24dp.xml
diff --git a/res/drawable/ic_timer_gray_18dp.xml b/src/main/res/drawable/ic_timer_gray_18dp.xml
similarity index 100%
rename from res/drawable/ic_timer_gray_18dp.xml
rename to src/main/res/drawable/ic_timer_gray_18dp.xml
diff --git a/res/drawable/ic_verified.xml b/src/main/res/drawable/ic_verified.xml
similarity index 100%
rename from res/drawable/ic_verified.xml
rename to src/main/res/drawable/ic_verified.xml
diff --git a/res/drawable/ic_verified_broken.xml b/src/main/res/drawable/ic_verified_broken.xml
similarity index 100%
rename from res/drawable/ic_verified_broken.xml
rename to src/main/res/drawable/ic_verified_broken.xml
diff --git a/res/drawable/ic_videocam_white_24dp.xml b/src/main/res/drawable/ic_videocam_white_24dp.xml
similarity index 100%
rename from res/drawable/ic_videocam_white_24dp.xml
rename to src/main/res/drawable/ic_videocam_white_24dp.xml
diff --git a/res/drawable/image_shade.xml b/src/main/res/drawable/image_shade.xml
similarity index 100%
rename from res/drawable/image_shade.xml
rename to src/main/res/drawable/image_shade.xml
diff --git a/res/drawable/import_export_item_background_dark.xml b/src/main/res/drawable/import_export_item_background_dark.xml
similarity index 100%
rename from res/drawable/import_export_item_background_dark.xml
rename to src/main/res/drawable/import_export_item_background_dark.xml
diff --git a/res/drawable/import_export_item_background_light.xml b/src/main/res/drawable/import_export_item_background_light.xml
similarity index 100%
rename from res/drawable/import_export_item_background_light.xml
rename to src/main/res/drawable/import_export_item_background_light.xml
diff --git a/src/main/res/drawable/intro1.png b/src/main/res/drawable/intro1.png
new file mode 100644
index 000000000..cc9e97548
Binary files /dev/null and b/src/main/res/drawable/intro1.png differ
diff --git a/res/drawable/media_keyboard_selected_background_dark.xml b/src/main/res/drawable/media_keyboard_selected_background_dark.xml
similarity index 100%
rename from res/drawable/media_keyboard_selected_background_dark.xml
rename to src/main/res/drawable/media_keyboard_selected_background_dark.xml
diff --git a/res/drawable/media_keyboard_selected_background_light.xml b/src/main/res/drawable/media_keyboard_selected_background_light.xml
similarity index 100%
rename from res/drawable/media_keyboard_selected_background_light.xml
rename to src/main/res/drawable/media_keyboard_selected_background_light.xml
diff --git a/res/drawable/message_bubble_background_received_alone.xml b/src/main/res/drawable/message_bubble_background_received_alone.xml
similarity index 100%
rename from res/drawable/message_bubble_background_received_alone.xml
rename to src/main/res/drawable/message_bubble_background_received_alone.xml
diff --git a/res/drawable/message_bubble_background_sent_alone.xml b/src/main/res/drawable/message_bubble_background_sent_alone.xml
similarity index 100%
rename from res/drawable/message_bubble_background_sent_alone.xml
rename to src/main/res/drawable/message_bubble_background_sent_alone.xml
diff --git a/res/drawable/pause_icon.xml b/src/main/res/drawable/pause_icon.xml
similarity index 100%
rename from res/drawable/pause_icon.xml
rename to src/main/res/drawable/pause_icon.xml
diff --git a/res/drawable/pause_to_play_animation.xml b/src/main/res/drawable/pause_to_play_animation.xml
similarity index 100%
rename from res/drawable/pause_to_play_animation.xml
rename to src/main/res/drawable/pause_to_play_animation.xml
diff --git a/res/drawable/pinned_list_item_background.xml b/src/main/res/drawable/pinned_list_item_background.xml
similarity index 100%
rename from res/drawable/pinned_list_item_background.xml
rename to src/main/res/drawable/pinned_list_item_background.xml
diff --git a/res/drawable/pinned_list_item_background_dark.xml b/src/main/res/drawable/pinned_list_item_background_dark.xml
similarity index 100%
rename from res/drawable/pinned_list_item_background_dark.xml
rename to src/main/res/drawable/pinned_list_item_background_dark.xml
diff --git a/res/drawable/play_icon.xml b/src/main/res/drawable/play_icon.xml
similarity index 100%
rename from res/drawable/play_icon.xml
rename to src/main/res/drawable/play_icon.xml
diff --git a/res/drawable/play_to_pause_animation.xml b/src/main/res/drawable/play_to_pause_animation.xml
similarity index 100%
rename from res/drawable/play_to_pause_animation.xml
rename to src/main/res/drawable/play_to_pause_animation.xml
diff --git a/res/drawable/quick_camera_shutter_ring.xml b/src/main/res/drawable/quick_camera_shutter_ring.xml
similarity index 100%
rename from res/drawable/quick_camera_shutter_ring.xml
rename to src/main/res/drawable/quick_camera_shutter_ring.xml
diff --git a/res/drawable/reaction_pill_background.xml b/src/main/res/drawable/reaction_pill_background.xml
similarity index 100%
rename from res/drawable/reaction_pill_background.xml
rename to src/main/res/drawable/reaction_pill_background.xml
diff --git a/res/drawable/reaction_pill_background_selected.xml b/src/main/res/drawable/reaction_pill_background_selected.xml
similarity index 100%
rename from res/drawable/reaction_pill_background_selected.xml
rename to src/main/res/drawable/reaction_pill_background_selected.xml
diff --git a/res/drawable/recording_lock_background_dark.xml b/src/main/res/drawable/recording_lock_background_dark.xml
similarity index 100%
rename from res/drawable/recording_lock_background_dark.xml
rename to src/main/res/drawable/recording_lock_background_dark.xml
diff --git a/res/drawable/recording_lock_background_light.xml b/src/main/res/drawable/recording_lock_background_light.xml
similarity index 100%
rename from res/drawable/recording_lock_background_light.xml
rename to src/main/res/drawable/recording_lock_background_light.xml
diff --git a/res/drawable/search_toolbar_shadow.xml b/src/main/res/drawable/search_toolbar_shadow.xml
similarity index 100%
rename from res/drawable/search_toolbar_shadow.xml
rename to src/main/res/drawable/search_toolbar_shadow.xml
diff --git a/res/drawable/send_button_bg_dark.xml b/src/main/res/drawable/send_button_bg_dark.xml
similarity index 100%
rename from res/drawable/send_button_bg_dark.xml
rename to src/main/res/drawable/send_button_bg_dark.xml
diff --git a/res/drawable/send_button_bg_light.xml b/src/main/res/drawable/send_button_bg_light.xml
similarity index 100%
rename from res/drawable/send_button_bg_light.xml
rename to src/main/res/drawable/send_button_bg_light.xml
diff --git a/res/drawable/sticker_missing_background.xml b/src/main/res/drawable/sticker_missing_background.xml
similarity index 100%
rename from res/drawable/sticker_missing_background.xml
rename to src/main/res/drawable/sticker_missing_background.xml
diff --git a/res/drawable/sticky_date_header_background_dark.xml b/src/main/res/drawable/sticky_date_header_background_dark.xml
similarity index 100%
rename from res/drawable/sticky_date_header_background_dark.xml
rename to src/main/res/drawable/sticky_date_header_background_dark.xml
diff --git a/res/drawable/sticky_date_header_background_light.xml b/src/main/res/drawable/sticky_date_header_background_light.xml
similarity index 100%
rename from res/drawable/sticky_date_header_background_light.xml
rename to src/main/res/drawable/sticky_date_header_background_light.xml
diff --git a/res/drawable/touch_highlight_background.xml b/src/main/res/drawable/touch_highlight_background.xml
similarity index 100%
rename from res/drawable/touch_highlight_background.xml
rename to src/main/res/drawable/touch_highlight_background.xml
diff --git a/res/drawable/triangle_bottom_right_corner.xml b/src/main/res/drawable/triangle_bottom_right_corner.xml
similarity index 100%
rename from res/drawable/triangle_bottom_right_corner.xml
rename to src/main/res/drawable/triangle_bottom_right_corner.xml
diff --git a/res/drawable/triangle_right.xml b/src/main/res/drawable/triangle_right.xml
similarity index 100%
rename from res/drawable/triangle_right.xml
rename to src/main/res/drawable/triangle_right.xml
diff --git a/res/layout-v16/video_player.xml b/src/main/res/layout-v16/video_player.xml
similarity index 100%
rename from res/layout-v16/video_player.xml
rename to src/main/res/layout-v16/video_player.xml
diff --git a/res/layout/account_selection_list_fragment.xml b/src/main/res/layout/account_selection_list_fragment.xml
similarity index 100%
rename from res/layout/account_selection_list_fragment.xml
rename to src/main/res/layout/account_selection_list_fragment.xml
diff --git a/res/layout/account_selection_list_item.xml b/src/main/res/layout/account_selection_list_item.xml
similarity index 100%
rename from res/layout/account_selection_list_item.xml
rename to src/main/res/layout/account_selection_list_item.xml
diff --git a/res/layout/activity_qr.xml b/src/main/res/layout/activity_qr.xml
similarity index 100%
rename from res/layout/activity_qr.xml
rename to src/main/res/layout/activity_qr.xml
diff --git a/res/layout/activity_qr_show.xml b/src/main/res/layout/activity_qr_show.xml
similarity index 100%
rename from res/layout/activity_qr_show.xml
rename to src/main/res/layout/activity_qr_show.xml
diff --git a/res/layout/activity_registration_2nd_device_qr.xml b/src/main/res/layout/activity_registration_2nd_device_qr.xml
similarity index 100%
rename from res/layout/activity_registration_2nd_device_qr.xml
rename to src/main/res/layout/activity_registration_2nd_device_qr.xml
diff --git a/res/layout/activity_registration_qr.xml b/src/main/res/layout/activity_registration_qr.xml
similarity index 100%
rename from res/layout/activity_registration_qr.xml
rename to src/main/res/layout/activity_registration_qr.xml
diff --git a/res/layout/activity_select_chat_background.xml b/src/main/res/layout/activity_select_chat_background.xml
similarity index 100%
rename from res/layout/activity_select_chat_background.xml
rename to src/main/res/layout/activity_select_chat_background.xml
diff --git a/res/layout/attachment_type_selector.xml b/src/main/res/layout/attachment_type_selector.xml
similarity index 100%
rename from res/layout/attachment_type_selector.xml
rename to src/main/res/layout/attachment_type_selector.xml
diff --git a/res/layout/audio_view.xml b/src/main/res/layout/audio_view.xml
similarity index 100%
rename from res/layout/audio_view.xml
rename to src/main/res/layout/audio_view.xml
diff --git a/res/layout/avatar_selector.xml b/src/main/res/layout/avatar_selector.xml
similarity index 100%
rename from res/layout/avatar_selector.xml
rename to src/main/res/layout/avatar_selector.xml
diff --git a/res/layout/avatar_view.xml b/src/main/res/layout/avatar_view.xml
similarity index 100%
rename from res/layout/avatar_view.xml
rename to src/main/res/layout/avatar_view.xml
diff --git a/res/layout/backup_provider_activity.xml b/src/main/res/layout/backup_provider_activity.xml
similarity index 100%
rename from res/layout/backup_provider_activity.xml
rename to src/main/res/layout/backup_provider_activity.xml
diff --git a/res/layout/backup_provider_fragment.xml b/src/main/res/layout/backup_provider_fragment.xml
similarity index 100%
rename from res/layout/backup_provider_fragment.xml
rename to src/main/res/layout/backup_provider_fragment.xml
diff --git a/res/layout/backup_receiver_fragment.xml b/src/main/res/layout/backup_receiver_fragment.xml
similarity index 100%
rename from res/layout/backup_receiver_fragment.xml
rename to src/main/res/layout/backup_receiver_fragment.xml
diff --git a/res/layout/contact_filter_toolbar.xml b/src/main/res/layout/contact_filter_toolbar.xml
similarity index 97%
rename from res/layout/contact_filter_toolbar.xml
rename to src/main/res/layout/contact_filter_toolbar.xml
index 307c925c5..94237fcef 100644
--- a/res/layout/contact_filter_toolbar.xml
+++ b/src/main/res/layout/contact_filter_toolbar.xml
@@ -21,7 +21,7 @@
android:contentDescription="@string/email_address"
android:fontFamily="sans-serif"
android:gravity="center_vertical"
- android:hint="@string/contacts_enter_name_or_email"
+ android:hint="@string/search"
android:ellipsize="end"
android:inputType="textPersonName"
android:textSize="18sp" />
diff --git a/res/layout/contact_selection_activity.xml b/src/main/res/layout/contact_selection_activity.xml
similarity index 100%
rename from res/layout/contact_selection_activity.xml
rename to src/main/res/layout/contact_selection_activity.xml
diff --git a/res/layout/contact_selection_list_divider.xml b/src/main/res/layout/contact_selection_list_divider.xml
similarity index 100%
rename from res/layout/contact_selection_list_divider.xml
rename to src/main/res/layout/contact_selection_list_divider.xml
diff --git a/res/layout/contact_selection_list_fragment.xml b/src/main/res/layout/contact_selection_list_fragment.xml
similarity index 100%
rename from res/layout/contact_selection_list_fragment.xml
rename to src/main/res/layout/contact_selection_list_fragment.xml
diff --git a/res/layout/contact_selection_list_item.xml b/src/main/res/layout/contact_selection_list_item.xml
similarity index 100%
rename from res/layout/contact_selection_list_item.xml
rename to src/main/res/layout/contact_selection_list_item.xml
diff --git a/res/layout/conversation_activity.xml b/src/main/res/layout/conversation_activity.xml
similarity index 100%
rename from res/layout/conversation_activity.xml
rename to src/main/res/layout/conversation_activity.xml
diff --git a/res/layout/conversation_activity_attachment_editor_stub.xml b/src/main/res/layout/conversation_activity_attachment_editor_stub.xml
similarity index 86%
rename from res/layout/conversation_activity_attachment_editor_stub.xml
rename to src/main/res/layout/conversation_activity_attachment_editor_stub.xml
index 40b60e5f6..81c2b18c5 100644
--- a/res/layout/conversation_activity_attachment_editor_stub.xml
+++ b/src/main/res/layout/conversation_activity_attachment_editor_stub.xml
@@ -69,6 +69,17 @@
android:padding="8dp"
android:background="@drawable/message_bubble_background_sent_alone"/>
+
+
diff --git a/res/layout/conversation_activity_emojidrawer_stub.xml b/src/main/res/layout/conversation_activity_emojidrawer_stub.xml
similarity index 100%
rename from res/layout/conversation_activity_emojidrawer_stub.xml
rename to src/main/res/layout/conversation_activity_emojidrawer_stub.xml
diff --git a/res/layout/conversation_fragment.xml b/src/main/res/layout/conversation_fragment.xml
similarity index 93%
rename from res/layout/conversation_fragment.xml
rename to src/main/res/layout/conversation_fragment.xml
index 0c3d7c828..a4f8c7ee9 100644
--- a/res/layout/conversation_fragment.xml
+++ b/src/main/res/layout/conversation_fragment.xml
@@ -113,6 +113,13 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/AddReaction"/>
+
diff --git a/res/layout/conversation_input_panel.xml b/src/main/res/layout/conversation_input_panel.xml
similarity index 100%
rename from res/layout/conversation_input_panel.xml
rename to src/main/res/layout/conversation_input_panel.xml
diff --git a/res/layout/conversation_item_footer.xml b/src/main/res/layout/conversation_item_footer.xml
similarity index 100%
rename from res/layout/conversation_item_footer.xml
rename to src/main/res/layout/conversation_item_footer.xml
diff --git a/res/layout/conversation_item_header.xml b/src/main/res/layout/conversation_item_header.xml
similarity index 100%
rename from res/layout/conversation_item_header.xml
rename to src/main/res/layout/conversation_item_header.xml
diff --git a/res/layout/conversation_item_last_seen.xml b/src/main/res/layout/conversation_item_last_seen.xml
similarity index 100%
rename from res/layout/conversation_item_last_seen.xml
rename to src/main/res/layout/conversation_item_last_seen.xml
diff --git a/res/layout/conversation_item_received.xml b/src/main/res/layout/conversation_item_received.xml
similarity index 94%
rename from res/layout/conversation_item_received.xml
rename to src/main/res/layout/conversation_item_received.xml
index 5c9e8ad78..c5654a094 100644
--- a/res/layout/conversation_item_received.xml
+++ b/src/main/res/layout/conversation_item_received.xml
@@ -153,6 +153,16 @@
android:layout_marginLeft="@dimen/message_bubble_horizontal_padding"
android:layout_marginRight="@dimen/message_bubble_horizontal_padding" />
+
+
+
+
+
diff --git a/res/layout/conversation_item_videochat.xml b/src/main/res/layout/conversation_item_videochat.xml
similarity index 100%
rename from res/layout/conversation_item_videochat.xml
rename to src/main/res/layout/conversation_item_videochat.xml
diff --git a/res/layout/conversation_item_webxdc.xml b/src/main/res/layout/conversation_item_webxdc.xml
similarity index 100%
rename from res/layout/conversation_item_webxdc.xml
rename to src/main/res/layout/conversation_item_webxdc.xml
diff --git a/res/layout/conversation_list_activity.xml b/src/main/res/layout/conversation_list_activity.xml
similarity index 80%
rename from res/layout/conversation_list_activity.xml
rename to src/main/res/layout/conversation_list_activity.xml
index 70d57ce5a..4a8136aaf 100644
--- a/res/layout/conversation_list_activity.xml
+++ b/src/main/res/layout/conversation_list_activity.xml
@@ -24,19 +24,36 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
+
+
+
-
-
@@ -17,4 +18,14 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
-
\ No newline at end of file
+
+
diff --git a/res/layout/fragment_view_log.xml b/src/main/res/layout/fragment_view_log.xml
similarity index 100%
rename from res/layout/fragment_view_log.xml
rename to src/main/res/layout/fragment_view_log.xml
diff --git a/res/layout/group_create_activity.xml b/src/main/res/layout/group_create_activity.xml
similarity index 100%
rename from res/layout/group_create_activity.xml
rename to src/main/res/layout/group_create_activity.xml
diff --git a/res/layout/image_editor_fragment.xml b/src/main/res/layout/image_editor_fragment.xml
similarity index 100%
rename from res/layout/image_editor_fragment.xml
rename to src/main/res/layout/image_editor_fragment.xml
diff --git a/res/layout/image_editor_hud.xml b/src/main/res/layout/image_editor_hud.xml
similarity index 100%
rename from res/layout/image_editor_hud.xml
rename to src/main/res/layout/image_editor_hud.xml
diff --git a/src/main/res/layout/instant_onboarding_activity.xml b/src/main/res/layout/instant_onboarding_activity.xml
new file mode 100644
index 000000000..f9f3125f0
--- /dev/null
+++ b/src/main/res/layout/instant_onboarding_activity.xml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/item_color.xml b/src/main/res/layout/item_color.xml
similarity index 100%
rename from res/layout/item_color.xml
rename to src/main/res/layout/item_color.xml
diff --git a/res/layout/log_view_activity.xml b/src/main/res/layout/log_view_activity.xml
similarity index 100%
rename from res/layout/log_view_activity.xml
rename to src/main/res/layout/log_view_activity.xml
diff --git a/src/main/res/layout/login_options_view.xml b/src/main/res/layout/login_options_view.xml
new file mode 100644
index 000000000..912e03c12
--- /dev/null
+++ b/src/main/res/layout/login_options_view.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/media_keyboard.xml b/src/main/res/layout/media_keyboard.xml
similarity index 100%
rename from res/layout/media_keyboard.xml
rename to src/main/res/layout/media_keyboard.xml
diff --git a/res/layout/media_keyboard_bottom_tab_item.xml b/src/main/res/layout/media_keyboard_bottom_tab_item.xml
similarity index 100%
rename from res/layout/media_keyboard_bottom_tab_item.xml
rename to src/main/res/layout/media_keyboard_bottom_tab_item.xml
diff --git a/res/layout/media_preview_activity.xml b/src/main/res/layout/media_preview_activity.xml
similarity index 100%
rename from res/layout/media_preview_activity.xml
rename to src/main/res/layout/media_preview_activity.xml
diff --git a/res/layout/media_view.xml b/src/main/res/layout/media_view.xml
similarity index 100%
rename from res/layout/media_view.xml
rename to src/main/res/layout/media_view.xml
diff --git a/res/layout/media_view_edit_button.xml b/src/main/res/layout/media_view_edit_button.xml
similarity index 100%
rename from res/layout/media_view_edit_button.xml
rename to src/main/res/layout/media_view_edit_button.xml
diff --git a/res/layout/media_view_page.xml b/src/main/res/layout/media_view_page.xml
similarity index 100%
rename from res/layout/media_view_page.xml
rename to src/main/res/layout/media_view_page.xml
diff --git a/res/layout/media_view_remove_button.xml b/src/main/res/layout/media_view_remove_button.xml
similarity index 100%
rename from res/layout/media_view_remove_button.xml
rename to src/main/res/layout/media_view_remove_button.xml
diff --git a/res/layout/media_view_video.xml b/src/main/res/layout/media_view_video.xml
similarity index 100%
rename from res/layout/media_view_video.xml
rename to src/main/res/layout/media_view_video.xml
diff --git a/res/layout/message_details_view.xml b/src/main/res/layout/message_details_view.xml
similarity index 100%
rename from res/layout/message_details_view.xml
rename to src/main/res/layout/message_details_view.xml
diff --git a/res/layout/message_request_bottom_bar.xml b/src/main/res/layout/message_request_bottom_bar.xml
similarity index 100%
rename from res/layout/message_request_bottom_bar.xml
rename to src/main/res/layout/message_request_bottom_bar.xml
diff --git a/res/layout/microphone_recorder_view.xml b/src/main/res/layout/microphone_recorder_view.xml
similarity index 100%
rename from res/layout/microphone_recorder_view.xml
rename to src/main/res/layout/microphone_recorder_view.xml
diff --git a/res/layout/new_contact_activity.xml b/src/main/res/layout/new_contact_activity.xml
similarity index 53%
rename from res/layout/new_contact_activity.xml
rename to src/main/res/layout/new_contact_activity.xml
index 7a704ca54..75d230350 100644
--- a/res/layout/new_contact_activity.xml
+++ b/src/main/res/layout/new_contact_activity.xml
@@ -10,15 +10,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintTop_toTopOf="parent">
+
+
diff --git a/res/layout/permissions_rationale_dialog.xml b/src/main/res/layout/permissions_rationale_dialog.xml
similarity index 100%
rename from res/layout/permissions_rationale_dialog.xml
rename to src/main/res/layout/permissions_rationale_dialog.xml
diff --git a/res/layout/preference_item.xml b/src/main/res/layout/preference_item.xml
similarity index 100%
rename from res/layout/preference_item.xml
rename to src/main/res/layout/preference_item.xml
diff --git a/res/layout/profile_activity.xml b/src/main/res/layout/profile_activity.xml
similarity index 100%
rename from res/layout/profile_activity.xml
rename to src/main/res/layout/profile_activity.xml
diff --git a/res/layout/profile_create_activity.xml b/src/main/res/layout/profile_create_activity.xml
similarity index 89%
rename from res/layout/profile_create_activity.xml
rename to src/main/res/layout/profile_create_activity.xml
index 6cd8b7805..86c617326 100644
--- a/res/layout/profile_create_activity.xml
+++ b/src/main/res/layout/profile_create_activity.xml
@@ -82,19 +82,6 @@
android:text="@string/pref_who_can_see_profile_explain"
android:textColor="@color/gray50" />
-
-
-
+
+
+
+
diff --git a/res/layout/reaction_recipient_item.xml b/src/main/res/layout/reaction_recipient_item.xml
similarity index 100%
rename from res/layout/reaction_recipient_item.xml
rename to src/main/res/layout/reaction_recipient_item.xml
diff --git a/res/layout/reactions_details_fragment.xml b/src/main/res/layout/reactions_details_fragment.xml
similarity index 100%
rename from res/layout/reactions_details_fragment.xml
rename to src/main/res/layout/reactions_details_fragment.xml
diff --git a/res/layout/reactions_pill.xml b/src/main/res/layout/reactions_pill.xml
similarity index 100%
rename from res/layout/reactions_pill.xml
rename to src/main/res/layout/reactions_pill.xml
diff --git a/res/layout/recent_photo_view.xml b/src/main/res/layout/recent_photo_view.xml
similarity index 100%
rename from res/layout/recent_photo_view.xml
rename to src/main/res/layout/recent_photo_view.xml
diff --git a/res/layout/recent_photo_view_item.xml b/src/main/res/layout/recent_photo_view_item.xml
similarity index 100%
rename from res/layout/recent_photo_view_item.xml
rename to src/main/res/layout/recent_photo_view_item.xml
diff --git a/res/layout/recording_layout.xml b/src/main/res/layout/recording_layout.xml
similarity index 95%
rename from res/layout/recording_layout.xml
rename to src/main/res/layout/recording_layout.xml
index 451ca0c27..d41cbb204 100644
--- a/res/layout/recording_layout.xml
+++ b/src/main/res/layout/recording_layout.xml
@@ -50,8 +50,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|start|center_vertical"
- android:drawableLeft="@drawable/slidearrow"
- android:drawableStart="@drawable/slidearrow"
style="@style/Signal.Text.Preview"
android:singleLine="true"
android:text="@string/chat_record_slide_to_cancel"
@@ -62,6 +60,8 @@
android:paddingStart="10dp"
android:paddingRight="50dp"
android:paddingEnd="50dp"
+ app:drawableLeftCompat="@drawable/slidearrow"
+ app:drawableStartCompat="@drawable/slidearrow"
tools:visibility="visible"/>
diff --git a/res/layout/registration_activity.xml b/src/main/res/layout/registration_activity.xml
similarity index 100%
rename from res/layout/registration_activity.xml
rename to src/main/res/layout/registration_activity.xml
diff --git a/res/layout/scribble_activity.xml b/src/main/res/layout/scribble_activity.xml
similarity index 100%
rename from res/layout/scribble_activity.xml
rename to src/main/res/layout/scribble_activity.xml
diff --git a/res/layout/scribble_select_sticker_activity.xml b/src/main/res/layout/scribble_select_sticker_activity.xml
similarity index 100%
rename from res/layout/scribble_select_sticker_activity.xml
rename to src/main/res/layout/scribble_select_sticker_activity.xml
diff --git a/res/layout/scribble_select_sticker_fragment.xml b/src/main/res/layout/scribble_select_sticker_fragment.xml
similarity index 100%
rename from res/layout/scribble_select_sticker_fragment.xml
rename to src/main/res/layout/scribble_select_sticker_fragment.xml
diff --git a/res/layout/scribble_sticker_item.xml b/src/main/res/layout/scribble_sticker_item.xml
similarity index 100%
rename from res/layout/scribble_sticker_item.xml
rename to src/main/res/layout/scribble_sticker_item.xml
diff --git a/res/layout/search_toolbar.xml b/src/main/res/layout/search_toolbar.xml
similarity index 100%
rename from res/layout/search_toolbar.xml
rename to src/main/res/layout/search_toolbar.xml
diff --git a/res/layout/selected_contact_list_item.xml b/src/main/res/layout/selected_contact_list_item.xml
similarity index 100%
rename from res/layout/selected_contact_list_item.xml
rename to src/main/res/layout/selected_contact_list_item.xml
diff --git a/res/layout/setup_code_grid.xml b/src/main/res/layout/setup_code_grid.xml
similarity index 100%
rename from res/layout/setup_code_grid.xml
rename to src/main/res/layout/setup_code_grid.xml
diff --git a/res/layout/share_activity.xml b/src/main/res/layout/share_activity.xml
similarity index 100%
rename from res/layout/share_activity.xml
rename to src/main/res/layout/share_activity.xml
diff --git a/src/main/res/layout/signup_options_view.xml b/src/main/res/layout/signup_options_view.xml
new file mode 100644
index 000000000..b4aa581aa
--- /dev/null
+++ b/src/main/res/layout/signup_options_view.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/single_line_input.xml b/src/main/res/layout/single_line_input.xml
similarity index 100%
rename from res/layout/single_line_input.xml
rename to src/main/res/layout/single_line_input.xml
diff --git a/res/layout/sticker_view.xml b/src/main/res/layout/sticker_view.xml
similarity index 100%
rename from res/layout/sticker_view.xml
rename to src/main/res/layout/sticker_view.xml
diff --git a/res/layout/switch_compat_preference.xml b/src/main/res/layout/switch_compat_preference.xml
similarity index 100%
rename from res/layout/switch_compat_preference.xml
rename to src/main/res/layout/switch_compat_preference.xml
diff --git a/res/layout/thumbnail_view.xml b/src/main/res/layout/thumbnail_view.xml
similarity index 100%
rename from res/layout/thumbnail_view.xml
rename to src/main/res/layout/thumbnail_view.xml
diff --git a/res/layout/transport_selection_list_item.xml b/src/main/res/layout/transport_selection_list_item.xml
similarity index 100%
rename from res/layout/transport_selection_list_item.xml
rename to src/main/res/layout/transport_selection_list_item.xml
diff --git a/src/main/res/layout/vcard_view.xml b/src/main/res/layout/vcard_view.xml
new file mode 100644
index 000000000..45b500c4d
--- /dev/null
+++ b/src/main/res/layout/vcard_view.xml
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/video_player.xml b/src/main/res/layout/video_player.xml
similarity index 100%
rename from res/layout/video_player.xml
rename to src/main/res/layout/video_player.xml
diff --git a/res/layout/web_view_activity.xml b/src/main/res/layout/web_view_activity.xml
similarity index 100%
rename from res/layout/web_view_activity.xml
rename to src/main/res/layout/web_view_activity.xml
diff --git a/res/layout/webxdc_compact_view.xml b/src/main/res/layout/webxdc_compact_view.xml
similarity index 100%
rename from res/layout/webxdc_compact_view.xml
rename to src/main/res/layout/webxdc_compact_view.xml
diff --git a/res/layout/webxdc_view.xml b/src/main/res/layout/webxdc_view.xml
similarity index 100%
rename from res/layout/webxdc_view.xml
rename to src/main/res/layout/webxdc_view.xml
diff --git a/res/layout/welcome_activity.xml b/src/main/res/layout/welcome_activity.xml
similarity index 69%
rename from res/layout/welcome_activity.xml
rename to src/main/res/layout/welcome_activity.xml
index 1b57f489f..8f41aebee 100644
--- a/res/layout/welcome_activity.xml
+++ b/src/main/res/layout/welcome_activity.xml
@@ -16,7 +16,7 @@
android:id="@+id/welcome_icon"
android:layout_width="wrap_content"
android:layout_height="100dp"
- android:layout_weight="14"
+ android:layout_weight="10"
android:gravity="bottom"
android:src="@drawable/intro1"
android:paddingLeft="32dp"
@@ -43,32 +43,24 @@
+ android:text="@string/onboarding_create_instant_account"/>
+ android:text="@string/onboarding_alternative_logins"/>
-
@@ -77,15 +69,5 @@
android:layout_width="match_parent"
android:layout_height="0dp"/>
-
-
diff --git a/res/layout/zooming_image_view.xml b/src/main/res/layout/zooming_image_view.xml
similarity index 100%
rename from res/layout/zooming_image_view.xml
rename to src/main/res/layout/zooming_image_view.xml
diff --git a/res/menu/add_members.xml b/src/main/res/menu/add_members.xml
similarity index 100%
rename from res/menu/add_members.xml
rename to src/main/res/menu/add_members.xml
diff --git a/res/menu/archived_list.xml b/src/main/res/menu/archived_list.xml
similarity index 100%
rename from res/menu/archived_list.xml
rename to src/main/res/menu/archived_list.xml
diff --git a/res/menu/backup_transfer_menu.xml b/src/main/res/menu/backup_transfer_menu.xml
similarity index 100%
rename from res/menu/backup_transfer_menu.xml
rename to src/main/res/menu/backup_transfer_menu.xml
diff --git a/res/menu/chat_background.xml b/src/main/res/menu/chat_background.xml
similarity index 100%
rename from res/menu/chat_background.xml
rename to src/main/res/menu/chat_background.xml
diff --git a/res/menu/contact_list.xml b/src/main/res/menu/contact_list.xml
similarity index 100%
rename from res/menu/contact_list.xml
rename to src/main/res/menu/contact_list.xml
diff --git a/res/menu/conversation.xml b/src/main/res/menu/conversation.xml
similarity index 100%
rename from res/menu/conversation.xml
rename to src/main/res/menu/conversation.xml
diff --git a/res/menu/conversation_archive.xml b/src/main/res/menu/conversation_archive.xml
similarity index 100%
rename from res/menu/conversation_archive.xml
rename to src/main/res/menu/conversation_archive.xml
diff --git a/res/menu/conversation_clear.xml b/src/main/res/menu/conversation_clear.xml
similarity index 100%
rename from res/menu/conversation_clear.xml
rename to src/main/res/menu/conversation_clear.xml
diff --git a/res/menu/conversation_context.xml b/src/main/res/menu/conversation_context.xml
similarity index 100%
rename from res/menu/conversation_context.xml
rename to src/main/res/menu/conversation_context.xml
diff --git a/res/menu/conversation_delete.xml b/src/main/res/menu/conversation_delete.xml
similarity index 100%
rename from res/menu/conversation_delete.xml
rename to src/main/res/menu/conversation_delete.xml
diff --git a/src/main/res/menu/conversation_list.xml b/src/main/res/menu/conversation_list.xml
new file mode 100644
index 000000000..1b0150226
--- /dev/null
+++ b/src/main/res/menu/conversation_list.xml
@@ -0,0 +1,32 @@
+
+
diff --git a/res/menu/conversation_list_search.xml b/src/main/res/menu/conversation_list_search.xml
similarity index 100%
rename from res/menu/conversation_list_search.xml
rename to src/main/res/menu/conversation_list_search.xml
diff --git a/res/menu/conversation_push_group_options.xml b/src/main/res/menu/conversation_push_group_options.xml
similarity index 100%
rename from res/menu/conversation_push_group_options.xml
rename to src/main/res/menu/conversation_push_group_options.xml
diff --git a/res/menu/full_msg.xml b/src/main/res/menu/full_msg.xml
similarity index 100%
rename from res/menu/full_msg.xml
rename to src/main/res/menu/full_msg.xml
diff --git a/res/menu/group_create.xml b/src/main/res/menu/group_create.xml
similarity index 100%
rename from res/menu/group_create.xml
rename to src/main/res/menu/group_create.xml
diff --git a/res/menu/local_help.xml b/src/main/res/menu/local_help.xml
similarity index 100%
rename from res/menu/local_help.xml
rename to src/main/res/menu/local_help.xml
diff --git a/res/menu/media_preview.xml b/src/main/res/menu/media_preview.xml
similarity index 100%
rename from res/menu/media_preview.xml
rename to src/main/res/menu/media_preview.xml
diff --git a/res/menu/new_contact.xml b/src/main/res/menu/new_contact.xml
similarity index 100%
rename from res/menu/new_contact.xml
rename to src/main/res/menu/new_contact.xml
diff --git a/res/menu/preferences_create_profile_menu.xml b/src/main/res/menu/preferences_create_profile_menu.xml
similarity index 100%
rename from res/menu/preferences_create_profile_menu.xml
rename to src/main/res/menu/preferences_create_profile_menu.xml
diff --git a/res/menu/profile_common.xml b/src/main/res/menu/profile_common.xml
similarity index 100%
rename from res/menu/profile_common.xml
rename to src/main/res/menu/profile_common.xml
diff --git a/res/menu/profile_context.xml b/src/main/res/menu/profile_context.xml
similarity index 100%
rename from res/menu/profile_context.xml
rename to src/main/res/menu/profile_context.xml
diff --git a/res/menu/qr_show.xml b/src/main/res/menu/qr_show.xml
similarity index 59%
rename from res/menu/qr_show.xml
rename to src/main/res/menu/qr_show.xml
index 3bbd0773f..b3279e2b5 100644
--- a/res/menu/qr_show.xml
+++ b/src/main/res/menu/qr_show.xml
@@ -7,10 +7,22 @@
android:icon="@drawable/ic_share_white_24dp"
app:showAsAction="ifRoom"/>
+
+
+
+
+
+
diff --git a/res/menu/registration.xml b/src/main/res/menu/registration.xml
similarity index 100%
rename from res/menu/registration.xml
rename to src/main/res/menu/registration.xml
diff --git a/src/main/res/menu/registration_qr_activity.xml b/src/main/res/menu/registration_qr_activity.xml
new file mode 100644
index 000000000..6d3c7d973
--- /dev/null
+++ b/src/main/res/menu/registration_qr_activity.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/res/menu/text_secure_normal.xml b/src/main/res/menu/text_secure_normal.xml
similarity index 100%
rename from res/menu/text_secure_normal.xml
rename to src/main/res/menu/text_secure_normal.xml
diff --git a/res/menu/view_log.xml b/src/main/res/menu/view_log.xml
similarity index 80%
rename from res/menu/view_log.xml
rename to src/main/res/menu/view_log.xml
index 28f322b57..dd293650f 100644
--- a/res/menu/view_log.xml
+++ b/src/main/res/menu/view_log.xml
@@ -3,9 +3,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto">
-
diff --git a/res/menu/web_view.xml b/src/main/res/menu/web_view.xml
similarity index 100%
rename from res/menu/web_view.xml
rename to src/main/res/menu/web_view.xml
diff --git a/res/menu/webxdc.xml b/src/main/res/menu/webxdc.xml
similarity index 100%
rename from res/menu/webxdc.xml
rename to src/main/res/menu/webxdc.xml
diff --git a/res/mipmap-anydpi-v26/ic_launcher.xml b/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
similarity index 100%
rename from res/mipmap-anydpi-v26/ic_launcher.xml
rename to src/main/res/mipmap-anydpi-v26/ic_launcher.xml
diff --git a/res/mipmap-hdpi/ic_launcher.png b/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from res/mipmap-hdpi/ic_launcher.png
rename to src/main/res/mipmap-hdpi/ic_launcher.png
diff --git a/res/mipmap-hdpi/ic_launcher_foreground.png b/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
similarity index 100%
rename from res/mipmap-hdpi/ic_launcher_foreground.png
rename to src/main/res/mipmap-hdpi/ic_launcher_foreground.png
diff --git a/res/mipmap-mdpi/ic_launcher.png b/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from res/mipmap-mdpi/ic_launcher.png
rename to src/main/res/mipmap-mdpi/ic_launcher.png
diff --git a/res/mipmap-mdpi/ic_launcher_foreground.png b/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
similarity index 100%
rename from res/mipmap-mdpi/ic_launcher_foreground.png
rename to src/main/res/mipmap-mdpi/ic_launcher_foreground.png
diff --git a/res/mipmap-xhdpi/ic_launcher.png b/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from res/mipmap-xhdpi/ic_launcher.png
rename to src/main/res/mipmap-xhdpi/ic_launcher.png
diff --git a/res/mipmap-xhdpi/ic_launcher_foreground.png b/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
similarity index 100%
rename from res/mipmap-xhdpi/ic_launcher_foreground.png
rename to src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
diff --git a/res/mipmap-xxhdpi/ic_launcher.png b/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from res/mipmap-xxhdpi/ic_launcher.png
rename to src/main/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/res/mipmap-xxhdpi/ic_launcher_foreground.png b/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
similarity index 100%
rename from res/mipmap-xxhdpi/ic_launcher_foreground.png
rename to src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
diff --git a/res/mipmap-xxxhdpi/ic_launcher.png b/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from res/mipmap-xxxhdpi/ic_launcher.png
rename to src/main/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
similarity index 100%
rename from res/mipmap-xxxhdpi/ic_launcher_foreground.png
rename to src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
diff --git a/res/raw/sandboxed_iframe_rtcpeerconnection_check.html b/src/main/res/raw/sandboxed_iframe_rtcpeerconnection_check.html
similarity index 100%
rename from res/raw/sandboxed_iframe_rtcpeerconnection_check.html
rename to src/main/res/raw/sandboxed_iframe_rtcpeerconnection_check.html
diff --git a/res/raw/sound_in.wav b/src/main/res/raw/sound_in.wav
similarity index 100%
rename from res/raw/sound_in.wav
rename to src/main/res/raw/sound_in.wav
diff --git a/res/raw/sound_out.wav b/src/main/res/raw/sound_out.wav
similarity index 100%
rename from res/raw/sound_out.wav
rename to src/main/res/raw/sound_out.wav
diff --git a/res/raw/webxdc.js b/src/main/res/raw/webxdc.js
similarity index 80%
rename from res/raw/webxdc.js
rename to src/main/res/raw/webxdc.js
index 2b99c2760..9d23bdbf5 100644
--- a/res/raw/webxdc.js
+++ b/src/main/res/raw/webxdc.js
@@ -1,7 +1,8 @@
window.webxdc = (() => {
- let setUpdateListenerPromise = null
- var update_listener = () => {};
- var last_serial = 0;
+ let setUpdateListenerPromise = null;
+ let update_listener = () => {};
+ let last_serial = 0;
+ let realtimeChannel = null;
window.__webxdcUpdate = () => {
var updates = JSON.parse(InternalJSApi.getStatusUpdates(last_serial));
@@ -15,11 +16,42 @@ window.webxdc = (() => {
}
};
+ window.__webxdcRealtimeData = (intArray) => {
+ if (realtimeChannel) {
+ realtimeChannel.__receive(Uint8Array.from(intArray));
+ }
+ };
+
+ const createRealtimeChannel = () => {
+ let listener = null;
+ return {
+ setListener: (li) => listener = li,
+ leave: () => InternalJSApi.leaveRealtimeChannel(),
+ send: (data) => {
+ if ((!data) instanceof Uint8Array) {
+ throw new Error('realtime listener data must be a Uint8Array')
+ }
+ InternalJSApi.sendRealtimeData(JSON.stringify(Array.from(data)));
+ },
+ __receive: (data) => {
+ if (listener) {
+ listener(data);
+ }
+ },
+ };
+ }
+
return {
selfAddr: InternalJSApi.selfAddr(),
selfName: InternalJSApi.selfName(),
+ joinRealtimeChannel: () => {
+ realtimeChannel = createRealtimeChannel();
+ InternalJSApi.sendRealtimeAdvertisement();
+ return realtimeChannel;
+ },
+
setUpdateListener: (cb, serial) => {
last_serial = typeof serial === "undefined" ? 0 : parseInt(serial);
update_listener = cb
diff --git a/res/raw/webxdc_wrapper.html b/src/main/res/raw/webxdc_wrapper.html
similarity index 100%
rename from res/raw/webxdc_wrapper.html
rename to src/main/res/raw/webxdc_wrapper.html
diff --git a/res/values-ar/strings.xml b/src/main/res/values-ar/strings.xml
similarity index 98%
rename from res/values-ar/strings.xml
rename to src/main/res/values-ar/strings.xml
index f4ba38a13..1bf62c5ba 100644
--- a/res/values-ar/strings.xml
+++ b/src/main/res/values-ar/strings.xml
@@ -1,5 +1,5 @@
-
+Delta Chatموافق
@@ -146,6 +146,7 @@
الخريطةمعاينة الصورةالولوج
+
الإتصال بخادومكصندوق الواردمستخدم IMAP
@@ -168,6 +169,7 @@
معلومات ملفك التعريفيصورة الملف التعريفيالمراسلون المحبوسون
+
الكلمة السرية والحساباسمك
diff --git a/res/values-az/strings.xml b/src/main/res/values-az/strings.xml
similarity index 98%
rename from res/values-az/strings.xml
rename to src/main/res/values-az/strings.xml
index 96652f4ba..d5451a602 100644
--- a/res/values-az/strings.xml
+++ b/src/main/res/values-az/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -216,6 +216,7 @@
Ləğv etmək üçün sürüşdürünBir səsli mesajı yazmaq üçün toxunun və saxlayın, göndərmək üçün buraxınQutu boşdur.\nYeni çata başlamaq üçün \"+\" işarəsinə toxunun.
+
Digər Delta Chat istifadəçiləri ilə və hər hansı bir e-poçt ünvanı ilə söhbət edə bilərsiniz.Bütün çatlar saxlanıldı.\nYeni çata başlamaq üçün \"+\" işarəsinə toxunun. Göndər
@@ -255,7 +256,9 @@
Bu söhbətdə paylaşılan sənədlər, musiqi və digər fayllar burada göstəriləcək.Fayllara baxmaqDaxil ol
+
Serverinə daxil ol
+
Mövcud e-mail hesabı ilə daxil olunMəlum elektron poçt provayderləri üçün əlavə parametrlər avtomatik olaraq quraşdırılır. Bəzən IMAP-ın web məkanında aktiv olması lazımdır. Yardım üçün e-poçt provayderinizə və ya dostlarınıza müraciət edin.Delta Chat serverləri yoxdur, məlumatlarınız cihazınızda qalır!
@@ -298,8 +301,6 @@
AdınYazını mətni
-
- Delta Chat Messenger-lə göndərdim : https://delta.chatEnter açarı ilə göndərməkEnter düyməsini basaraq mətn mesajları göndərəcəkGöndərilən medianın keyfiyyatı
@@ -371,7 +372,9 @@
ŞəkilRəng
+
Avtomatik şifrələmə
+
Avtoşifrələmə, avtomatik ucdan uca e-poçt şifrələməsi üçün yeni və açıq bir spesifikasiyadır. \n\nTədbirdən sonrakı qurulum avtomatik olaraq yaradılıb və Autocrypt Setup Messages ilə cihazlar arasında köçürə bilərsiniz.Autocrypt mesaj ayarı göndərAutocrypt Setup Message digər Autocrypt-uyğun proqramlarla təhlükəsiz şəkildə bölüşür. \n\nSizin buradakı quraşdırma koduyla şifrələnir və digər qurğuda yazılmalıdır.
@@ -482,5 +485,6 @@
qəbul olunduLoq mələfini açınLoq-faylı açın
+
Delta Chat arxa fonda mesajları almaq üçün bura toxunun.
diff --git a/res/values-bg/strings.xml b/src/main/res/values-bg/strings.xml
similarity index 83%
rename from res/values-bg/strings.xml
rename to src/main/res/values-bg/strings.xml
index 4d24bd2b7..ae966ab29 100644
--- a/res/values-bg/strings.xml
+++ b/src/main/res/values-bg/strings.xml
@@ -1,10 +1,12 @@
-
+Delta ChatOKОтказ
- Изчистване на търсенето
+
+ или
+ Изчистване на търсенетоДаНеИзбор
@@ -32,13 +34,16 @@
ПроверенЗатваряне
+ Затваряне на прозорецаНапред
+ Създаване
+ По-късноИзпращане отново
- Поставяне в архив
+ Архивиране
- Премахване от архив
+ ДеархивиранеИзключване на звукаИзчезващи съобщенияПриложимо за всички членове на този чат, ако използват Delta Chat; в противен случай те пак могат да копират, записват и препращат съобщения или да използват други клиенти за електронна поща.
@@ -143,6 +148,9 @@
GIFСтикер
+ Добавяне към колекция от стикери
+ За да добавите стикери, натиснете върху \"Отваряне на папка Стикери\", създайте подпапка за Вашия пакет от стикери и дърпайте файлове със стикери и изображения тук
+ Отваряне на папка СтикериИзображенияАудиоГласово съобщение
@@ -191,20 +199,26 @@
Нов контакт
+ Ръчно добавяне на контакт
+ С помощта на ръчно добавените контакти можете да пращате текстови съобщение до получатели, използващи класическа електронна поща. Не е гарантирано, че те ще са криптирани \"от край до край\".Нов чатНова група
+ Клониране на чатСписък за разпространениеСписъци за разпространениеНов списък за разпространениеДобавяне на получатели
+ Редактиране на списък за разпространение
+ Име на списък за разпространение
+ Моля, въведете име за списъка за разпространениеИзпращанеВключване/изключване на Emoji клавиатураРедактиране на групаИме и изображение на групаПоказване на всички местоположения
- Поставяне на чата в архив
- Премахване на чата от архив
+ Архивиране на чата
+ Деархивиране на чатаДобавяне на прикачен файлНапускане на групатаИзтриване на чата
@@ -222,6 +236,7 @@
Копиране на изображениеКопиране на e-mail съобщениеПоставяне от клипборд
+ Връзката \"%1$d\" не може да бъде отворена в уеб браузъра. Желаете ли вместо това да я копирате в клипборда?Препращане на съобщениеОтговор на съобщениеИзключване на звука на уведомленията
@@ -231,6 +246,7 @@
Всички медиа файловеПоказване в чата
+ Показване на приложение в чатаСподелянеБлокиране
@@ -242,6 +258,7 @@
Превъртане до дънотоПревъртане до върхаПомощ
+ Какво е Webxdc?Политика за поверителностИзбор на всичкоИзберете чат
@@ -263,7 +280,7 @@
Съобщения в устройствотоЛокално генерирани съобщенияСъобщенията в този чат се генерират на Вашето устройство, за да информират относно актуализации на приложението и проблеми по време на ползване.
- Добре дошли в Delta Chat! – Delta Chat изглежда като други популярни приложения за обмен на съобщения и оставя същото усещане като от тях, но без централизирания контрол, следенето или продаването на Вас, приятелите Ви, колегите или семейството Ви на големи организации.\n\nОт техническа гледна точка Delta Chat е приложение за електронна поща със съвременен чат интерфейс. Електронна поща в нова дреха, ако така повече Ви допада.👻\n\nИзползвайте Delta Chat с кой да е от милиарди хора: просто Ви трябва техният e-mail адрес. Не е необходимо получателите да инсталират Delta Chat, да посещават уебсайтове или да се регистрират никъде - но, разбира се, ако те желаят, бихте могли да ги насочите към 👉 https://get.delta.chat
+ Свържете се!\n\n🙌 Натиснете \"QR код\" в главния екран и на двете устройства. Изберете \"Сканиране на QR код\" на едно от устройствата и го насочете към другото\n\n🌍 Ако двете устройства не се намират в една и съща стая, сканирайте посредством видео обаждане или споделете връзка с покана от \"Сканиране на QR код\"\n\nСлед това: Насладете се на изживяването да обменяте съобщения през най-голямата децентрализирана мрежа, която някога е съществувала: електронната поща. And in contrast to other popular apps, without central control or tracking or selling you, friends, colleagues or family out to large organizations.Редактиране на контактЗабождане на чата
@@ -278,6 +295,8 @@
Изходен кодДобавяне към началния екран
+ Дарение
+
Спиране на звука за 1 часСпиране на звука за 2 часаСпиране на звука за 1 ден
@@ -353,11 +372,11 @@
%d чат е архивиран
- %d чата са поставени в архив
+ %d чата са архивирани%d чат е възстановен от архив
- %d чата са премахнати от архив
+ %d чата са деархивираниАрхивирани чатовеМоля, въведете съобщение
@@ -368,11 +387,13 @@
%d нови съобщения
- Изпращане на съобщение до %1$s; получателят ще може да го получи дори без Delta Chat
+ Изпращане на съобщение до %1$s.
+ Получателите в един списък за разпространение получават съобщения в чат \"само за четене\" с Вас.Другите ще виждат тази група едва след като изпратите първо съобщение.Приплъзнете, за да откажетеДокоснете и задръжте, за да запишете гласово съобщение, отпуснете, за да го изпратитеПразна входяща кутия.\nНатиснете \"+\", за да започнете нов чат
+
Можете да чатите с други потребители на Delta Chat и с кой да е адрес за електронна пощаВсички чатове са архивирани.\nНатиснете \"+\", за да започнете нов чатСподеляне с
@@ -381,7 +402,7 @@
ЗаявкаНяма съобщения.Съобщения към себе си
- Чатовете, поставени в архив, ще се показват тук.
+ Архивираните чатове ще се показват тук.Запазени съобщения• Препращайте съобщения тук за лесен достъп\n\n• Взимайте си текстови или гласови бележки\n\n• Прикрепяйте медийни файлове, за да ги запазите
@@ -390,7 +411,6 @@
Нов опит за изпращане на съобщениетоТрябва да сте в тази група, за да изпратите съобщение. За да се присъедините, попитайте друг неин член.
- Този чат съдържа локално генерирани съобщения; писането е забранено.Изпращане на съобщения в пощенски списъци все още не се поддържа.Файл от тип %s не може да бъде показанНеуспешно зареждане на прикрепен файл
@@ -406,6 +426,10 @@
Старт…Моля, първо приемете заявката за чат.
+
+ Изпращане на \"%1$s\" до
+
+ Изпращане на съобщение до…Показване на местоположенията във времева рамкаПоказване на съобщенията за проследяване
@@ -428,6 +452,8 @@
Търсене
+ Търсене в чата
+ Търсене на файловеТърсене на чатове, контакти и съобщенияНе са открити резултати за \"%s\"
@@ -443,6 +469,7 @@
Трябва да сте член на групата, за да изпълните това действие.КриптиранеСподелени чатове
+ Свързани чатовеКонтактГрупаГалерия
@@ -457,6 +484,10 @@
Приложенията, споделени в този чат, ще се появяват тук.Медийните файлове, споделени в кой да е чат, ще се появяват тук.Предварителен преглед на медия файл
+
+ Мрежа, запазваща съотношенията
+
+ Мрежа от квадратиИзпращане на съобщение%1$s промени своя адрес от %2$s на %3$s
@@ -470,6 +501,7 @@
Уверете се, че и двете устройства са свързани към една и съща Wi-Fi или друга мрежаЩе бъде създаден QR код, чрез сканиране на който другото устройство може да копира акаунта.Инсталирайте Delta Chat на другото Ви устройство (https://get.delta.chat)
+
Стартирайте Delta Chat, докоснете \"Добавяне като допълнително устройство\" и сканирайте кода, показан тукСканирайте, за да установите допълнително устройство за %1$s
@@ -516,10 +548,40 @@
- Чат през email.
+
+ Създаване на нов профил
+
+ Вече имам профил
+
+ Вход в класическа електронна поща
+
+ Вашият профил
+
+ Отваряне на политиката за поверителност
+
+ Политика за поверителност за %1$s
+
+ Относно профилите на %1$s
+
+ Съгласявам се, профилът да бъде създаден
+
+ Да се използва друг сървър
+ Списък със сървъри за чат поща
+
+ Създайте профил, за да се присъедините към групата \"%1$s\".
+
+ Създайте профил, за да обменяте съобщения с %1$s.
+
+ Искате ли да създадете нов профил и да започнете да обменяте съобщения с %1$s?
+
+ Искате ли да създадете нов профил и да се присъедините към чат групата \"%1$s\"?
+
+ Защитен децентрализиран чатСканиране на код за поканаВлизане
+
Влизане във Вашия акаунт за електронна поща
+
Влизане със съществуващ акаунт за електронна пощаЗа известните доставчици на електронна поща допълнителните настройки се попълват автоматично. Понякога е необходимо да се разреши IMAP в уеб настройките. Потърсете помощ от Вашия доставчик на електронна поща или приятели.Delta Chat няма сървъри, Вашите данни стоят на Вашето устройство.
@@ -585,13 +647,12 @@
Изображение на профилаБлокирани контактиБлокираните контакти ще се появяват тук.
+
Парола и акаунтИзображението, името и подписът от Вашия профил ще бъдат изпратени заедно с Вашите съобщения, когато общувате с други потребители.Вашето имеТекст на подписа
-
- Изпратено с предпочитаното от мен приложение за обмен на съобщения - Delta Chat: https://delta.chatКлавишът Enter изпращаНатискането на клавиша Enter ще изпраща текстовите съобщенияКачество на изходящата медия
@@ -625,9 +686,15 @@
Да се изиска от клавиатурата да преустанови персонализираното запомнянеИзвестия за прочетена пощаАко известията за прочетена поща са забранени, няма да може да виждате известията, идващи от други потребители.
+ Сървър
+ КриптиранеУправление на ключовеДа се използва Emoji на систематаИзключване на вградената поддръжка за Emoji на Delta Chat
+ Да се използва камерата вътре в приложението
+ Камерата в приложението обикновено има по-малко възможности от системната камера
+ Прочитане на системната адресна книга
+ Да се предлага създаване на чатове с контакти от адресната книга. За някои доставчици е необходимо първо да се настрои криптиране от край до край.Достъп до приложениетоЧатовеЗвуци в чата
@@ -640,6 +707,10 @@
Резервно копиеРезервните копия на чатовете да се създават във външно място за съхранениеРезервното копие помага да установите нова инсталация на това или друго устройство.\n\nТо ще съдържа всички съобщения, контакти и чатове и Вашата настройка \"от край до край\" на Autocrypt. Пазете файла на резервното копие на сигурно място или го изтрийте колкото е възможно по-скоро.
+
+ Експортиране на %1$s
+
+ Експортиране на всички %1$d профилаЗапочване на създаването на резервно копиеРезервното копие е успешно записано в \"%1$s\".Управление на ключовете
@@ -657,6 +728,7 @@
Ако промение тази опция, се уверете, че Вашият сървър и другите Ви клиенти са конфигурирани по съответен начин.\n\nВ противен случай е възможно нещата въобще да не работят.Да бъде наблюдавана папката \"Изпратени\"Изпращане на копие до себе си
+
Изисква се, когато този акант се използва на повече от едно устройство.Автоматично преместване в папката DeltaChatРазговорите са преместени, за да се избегне претрупване на папката \"Входящи\"
@@ -690,6 +762,11 @@
Изтриване на изображението на профилаПоказване на иконата в System TrayРедактиране на профил
+ Деактивиране на IMAP IDLE
+ Да не се използва разширението IMAP IDLE дори ако сървърът го поддържа. Ако тази опция бъде разрешена, извличането на съобщенията ще бъде забавено. Разрешете я само за тестване.
+ Да се изпраща статистика към разработчиците на Delta Chat
+
+
Резултати от търсенетоНе е открито Emoji
@@ -703,6 +780,15 @@
СимволиЗнамена
+
+ Реакции
+
+ Реакция
+
+ Реагирахте с %1$s на \"%2$s\".
+
+ %1$s реагира с %2$s на \"%3$s\".
+
Изтриване на старите съобщенияИзтриване на съобщенията от устройството
@@ -728,7 +814,9 @@
След 1 година
+
Autocrypt
+
Autocrypt е нова отворена спецификация за автоматично криптиране на електронна поща \"от край до край\".\n\n Вашата настройка за криптиране \"от край до край\" се създава автоматично, когато това е необходимо; можете да я пренасяте между различни устройства с помощта на съобщения за настройка на AutocryptИзпращане на съобщение за настройка на AutocryptСъобщението за настройка на Autocrypt споделя по сигурен начин Вашата настройка за криптиране \"от край до край\" с други съвместими с Autorcypt приложения.\n\nНастройката се криптира с код, който се показва тук и трябва да бъде въведен на другото устройство.
@@ -748,6 +836,7 @@
Съобщението е отвореноСъобщението \"%1$s\", което изпратихте, беше показано на екрана на получателя.\n\nТова не е гаранция, че съдържанието му е прочетено.
+ Това съобщение не може да бъде декриптирано.\n\n• Бихте могли просто да му отговорите и да помолите подателя да го изпрати отново.\n\n• Ако току-що сте преинсталирали Delta Chat, е най-добре да настроите приложението отново сега и да изберете \"Добавяне като второ устройство\" или да импортирате от архив.Неизвестен подател за този чат. Вижте \"информация\" за повече подробности.Съобщение от %1$sНеуспешно изпращане на съобщение до %1$s.
@@ -759,6 +848,8 @@
Изображението на групата е променено от %1$s
+ Добавен е членът %1$s.
+
Добавихте члена %1$sЧленът %1$s е добавен от %2$s
@@ -811,6 +902,16 @@
Установихте таймера на изчезващите съобщения на %1$s седмици.Таймерът на изчезващите съобщения е установен на %1$s седмици от %2$s.
+
+ %1$s изпрати съобщение от друго устройство.
+ От тук нататък е гарантирано, че съобщенията ще бъдат криптирани от край до край. Докоснете, за да научите повече.
+ От тук нататък е гарантирано, че всички съобщения в този чат са криптирани от край до край.\n\nКриптирането от край до край запазва поверителността на съобщенията между вас и вашите партньори в чата. Дори Вашият e-mail доставчик не може да ги прочете.
+ %1$s изпрати съобщение от друго съобщение. Докоснете, за да научите повече.
+ Криптирането от край до край повече не може да бъде гарантирано, вероятно защото %1$s преинсталира Delta Chat или изпрати съобщение от друго устройство.\n\nБихте могли да се срещнете с него/нея лично, да сканирате неговия/нейния QR код отново и отново да установите гарантирано криптиране от край до край.
+ ⚠️%1$s изисква криптиране от край до край, което все още не е установено за този чат. Докоснете, за да научите повече.
+ За да установите криптиране от край до край, бихте могли да се срещате с лицата, с които желаете да контактувате, лично и да сканирате техните QR кодове, за да ги въведете.
+ Научете повече
+
Изтрихте чата \"Запазени съобщения\".\n\nℹ️ За да използвате възможността \"Запазени съобщения\" отново, създайте нов чат със себе си.⚠️ Мястото за съхранение, предоставено от Вашия доставчик, скоро ще бъде изчерпано:%1$s%% вече са използвани.\n\nМоже да нямате възможност да получавате съобщения, ако мястото за съхранение е заето напълно.\n\n👉 Моля, проверете дали не бихте могли да изтриете стари данни през уеб интерфейса на доставчика и обмислете дали да не включите \"Настройки / Изтриване на старите съобщения\". Можете по всяко време да проверите текущо използваното място за съхранение в \"Настройки / Свързаност\".
@@ -826,6 +927,7 @@
Зареждане на QR код като изображениеСканиране на QR кодЗадръжте камерата си върху QR кода
+ Преместване на QR кода в камератаНеуспешно декодиране на QR кодИскате ли да се присъедините към групата \"%1$s\"?Сканираният цифров отпечатък не съответства на последния известен за%1$s.
@@ -854,23 +956,29 @@
Няма връзка към Интернет, не може да бъде извършена настройка чрез QR код.Да бъде ли създаден нов адрес за електронна поща на \"%1$s\" и да бъде ли осъществено влизане там?Да бъде ли създаден нов адрес за електронна поща в \"%1$s\" и да бъде ли осъществено влизане там?\n\nВашият съществуващ акаунт няма да бъде изтрит. Използвайте опцията \"Превключване към друг акаунт\", за да превключвате между Вашите акаунти.
- Влизането е успешно — Вашият адрес за електронна поща е %1$s\n\nАко желаете, може да въведете име и изображение за Вашия профил. Те ще бъдат показвани на хората, на които пишете.
+ Задайте име, което Вашите контакти ще разпознават. Можете също да установите изображение за профил.
+ Моля, въведете име.Не може да бъде създаден нов акаунт със сканирания QR код.
+
Сканираният QR код е за установяване на нов акаунт. Можете да сканирате QR кода, когато създавате нова инсталация на Delta Chat.
-
+
Желаете ли да влезете в \"%1$s\"?
-
+
Желаете ли да влезете в \"%1$s\"?\n\nСъщестуващият Ви акаунт няма да бъде изтрит. Превключвайте между акаунтите си чрез \"Превключване към друг акаунт\".%1$s Ви покани да се присъедините към тази група.\n\nИзчаква се устройството на %2$s да отговори…%1$s отговори, изчаква се да бъдете добавени към групата…
+ Установява се гарантирано криптиране от край до край, моля изчакайте…
+ Все още не може да бъде установено гарантирано криптиране от край до край, но вече можете да пратите съобщение.%1$s е проверен.Не може да бъде проверен %1$s.Проверен от%1$s
+ Представен от менНастройката за %1$s е сменена.
+ За да се гарантира криптирането от край до край, можете да добавяте в тази група само контакти, отбелязани със зелена отметка.\n\nБихте могли да се срещнете с лицата, с които желаете да контактувате, лично и да сканирате техните QR кодове, за да ги въведете.URL адресът от QR кода е копиран в клипбордаИзберете чат, към който да бъде пратено съобщението
@@ -887,6 +995,13 @@
Име и съобщениеСамо имеБез име или съобщение
+ Показването на уведомления е забранено
+ Нови съобщения
+
+ Имате нови съобщения
+ %1$d съобщения в %2$d чата
+
+
Изисква се позволениеПродължаване
@@ -894,6 +1009,8 @@
За да изпращате аудиосъобщения, отидете в настройките на приложението, изберете \"Позволения\" и разрешете \"Микрофон\".За да получавате или изпращате файлове, отидете в настройките на приложението, изберете \"Позволения\" и разрешете \"Съхранение\".За да прикрепите информация за местоположението, отидете в настройките на приложението, изберете \"Позволения\" и разрешете \"Местоположение\".
+ За да получавате уведомления, отидете в \"Системни настройки / Приложения / Delta Chat\" и разрешете \"Уведомления\"
+
Рисувайте на произволно място, за да замъглитеДобавяне на текст
@@ -944,12 +1061,13 @@
Експорт на резервно копиеНайстроката на Autocrypt е прехвърлена.Да бъде ли изтрита тази регистрация? Всичко ще бъде изтрито, включително Вашата настройка за криптиране \"от край до край\", контакти, чатове, съобщения и медийни файлове. Това действие не може да бъде отменено.
+
E-Mail: %1$s\nРазмер: %2$s\n Идентификатор на акаунт: %3$sизпратенополученоОтваряне на папката \"Дневник\"Отваряне на текущия файл на дневника
- Показването на икона в системната лента не може да бъде забранено, тъй като Delta Chat е стартиран с опцията --minimized.
+ Показването на икона в системната лента не може да бъде забранено, тъй като Delta Chat е стартиран с опцията --minimized.Няма открити предложения за правопис.Показване на прозорецаПонастоящем поддръжката за SOCKS5 е експериментална. Използвайте на собствен риск. Ако въведете адрес в полето \"Електронна поща\", ще бъде осъществено DNS търсене извън SOCKS5 тунела.
@@ -1014,15 +1132,13 @@
Delta Chat иска да запише изображения във Вашата библиотека със снимки.
-
- Фонови уведомления
- Използва връзка към Вашия сървър, работеща на заден план, и изисква да бъдат игнорирани оптимизациите на батерията.За да се поддържа връзката към Вашия сървър за електронна поща и да получавате съобщения във фонов режим, игнорирайте оптимизациите на батерията на следващата стъпка.\n\nDelta Chat използва малко ресурси и се грижи да не изтощава Вашата батерия.
- Надеждна фонова връзка
- Изисква постоянно уведомлениеДокоснете тук, за да получавате съобщения, докато Delta Chat е във фонов режим.Вече разрешихте Delta Chat да получава съобщения във фонов режим.\n\nАко съобщенията все още не пристигат във фонов режим, моля проверете Вашите системни настройки.
-
+
+ Новото в:\n\n❤️Да! Това беше очаквано отдавна: Докоснете дълго върху съобщение, за да изразите реакция\n\n🔗 Ако не можете да сканирате QR кодове, споделяйте ги като връзки с покана\n\n🔵 Непрочетените съобщения във всички акаунти вече се преброяват и показват в заглавието … както и ТОНОВЕ поправки на бъгове …%1$s \n\n Помогнете за подобряване на приложението: Използвайте \"Настройки / Разширени / Изпращане на статистика%, за да помогнете на разработчиците по-добре да оптимизират за използване при реални условия. Можете да прегледате данните, преди да бъдат изпратени
+ Новото в:\n\n❤️ Да! Това беше отдавна очаквано: Докоснете дълго върху съобщение, за да изразите реакция\n\n🫸 PUSH уведомления, ако се поддържат от доставчи като https://nine.testrun.org\n\n🔗 Ако не можете да сканирате QR кодове, споделяйте ги като връзки за покана\n\n… както и ТОНОВЕ поправки на бъгове … %1$s
+ Нов начин за включване на нови потребители към приложението 🐣 и още:\n\n⚡️ Регистрирайте се в защитени бързи сървъри за чат поща (https://delta.chat/chatmail) или използвайте класически сървъри за електронна поща\n\n👉 PUSH уведомления за всякакъв вид сървър за чат поща\n\n👤 Свържете се с Вашите приятели по защитен начин чрез \"Прикачване на контакти\"\n\n🥰 Изразете реакция с произволно emoji\n\n📌 Забождайте чатове директно от търсенето … и ПОВЕЧЕ на %1$s
diff --git a/res/values-bqi/strings.xml b/src/main/res/values-bqi/strings.xml
similarity index 99%
rename from res/values-bqi/strings.xml
rename to src/main/res/values-bqi/strings.xml
index 1fa2e7c6c..1d16eb354 100644
--- a/res/values-bqi/strings.xml
+++ b/src/main/res/values-bqi/strings.xml
@@ -1,5 +1,5 @@
-
+Dêltā Čatxā
@@ -284,7 +284,6 @@
fêšnāďên \"%1$s\" vê...fêšnāďên payom vê...
-
nêšow dāďên jā pāpitiniďên
diff --git a/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml
similarity index 89%
rename from res/values-ca/strings.xml
rename to src/main/res/values-ca/strings.xml
index 09011fc6a..1e27b6664 100644
--- a/res/values-ca/strings.xml
+++ b/src/main/res/values-ca/strings.xml
@@ -1,10 +1,12 @@
-
+Delta ChatOKCancel·la
- Neteja la cerca
+
+ o
+ Neteja la cercaSiNoTrieu
@@ -29,8 +31,13 @@
EmoticonaAdjuntEnrere
+
+ VerificatTanca
+ Tanca la finestraReenvia
+ Crea
+ DesprésTorna-ho a enviar
@@ -47,6 +54,10 @@
Menú principalInicia un xatMostra el missatge sencer...
+
+ Marca-ho tot com a llegit
+
+ LlegitCarregant...Amaga
@@ -55,7 +66,9 @@
Les imatges remotes es poden usar per rastrejar-te.\n\nEl paràmetre també permet la càrrega de fonts i altres continguts. Fins i tot si és deshabilitat, encara podríeu veure imatges incrustades o en memòria catxè.\n\nCàrrega d\'imatges remotes?Sempre
+ Carrega sempre les imatges remotesUna vegada
+ Mostra l\'advertimentMostra la contrasenyaAmaga la contrasenyaAra no
@@ -88,6 +101,8 @@
El mes passatVist per darrer cop a les %1$s
+
+ Vist per darrer cop %1$sVist per darrer cop: Ves a saber
@@ -133,6 +148,8 @@
GifAdhesiu
+ Afegeix a la Col·lecció d\'adhesius
+ Obre la carpeta dels adhesiusImatgesÀudioMissatge de veu
@@ -149,10 +166,15 @@
Canvia la càmeraAlterna el mode de pantalla completaUbicació
+ UbicacionsGaleriaImatges i vídeosFitxerFitxers
+
+ App
+
+ AppsDesconegutVerd
@@ -178,6 +200,7 @@
Contacte nouNova conversaGrup nou
+ Clona el xatLlista de difusióLlistes de difusió
@@ -193,6 +216,8 @@
Afegeix un adjuntDeixa el grupEsborra el xat
+
+ Neteja el xatSegur que voleu esborrar \"%1$s\"?Esborra els missatgesEsborra el contacte
@@ -214,6 +239,7 @@
Tots els multimèdiaMostra al xat
+ Mostra l\'app al xatComparteixBloqueja
@@ -225,8 +251,10 @@
Vés al finalDesplaça\'t al cap d\'amuntAjuda
+ Què és Webxdc?Política de PrivacitatSelecciona-ho tot
+ Tria el xatTria\'n mésEdita el nomPreferències
@@ -245,7 +273,6 @@
Missatges del dispositiuMissatges generats localmentEls missatges d\'aquest xat són generats localment per la vostra app de Delta Chat. Els seus creadors els usen per informar-vos d\'actualitzacions de l\'app i problemes durant el seu ús.
- Benvingut a Delta Chat! – Delta Chat te la pinta d\'altres apps de missatgeria, però no comporta un control centralitzat, ni un seguiment o una venda teva ni dels teus amics, col·legues o família a una corporació.\n\nTecnicament, Delta Chat és una aplicació de correu electrònic amb una interfície de xat moderna. Per dir-ho així, correu electrònic en un vestit nou 👻\n\nUseu Delta Chat amb qualsevol dels milers de milions de persones: només us cal la seva adreça de correu electrònic. Als destinataris no els cal instal·lar-se Delta Chat, visitar webs o donar-se d\'alta enlloc - tot i que, només faltaria, si volen, els podeu adreçar a 👉 https://get.delta.chatEdita el contacteFixa el xat
@@ -258,6 +285,10 @@
No s\'ha trobat el missatge originalRespon en privatCodi Font
+
+ Afegeix a la finestra d\'inici
+ Fes un donatiu
+
Silencia 1 horaSilencia 2 horesSilencia 1 dia
@@ -350,6 +381,7 @@
Llisca per cancel·larMantingues premut per gravar un missatge de veu i deixa anar per enviar-loSafata d\'entrada buida.\nPrem \"+\" per començar un xat nou.
+
Pots xatejar amb altres usuaris de Delta Chat i amb qualsevol adreça de correu electrònic.Tots els xats s\'han arxivat.\nPrem \"+\" per començar-ne un de nou.Comparteix amb
@@ -366,7 +398,6 @@
Torna a provar d\'enviar el missatgeNo hi podeu escriure perquè no sou en aquest grup. Per ser-hi, demaneu-ho a un altre membre.
- Aquest xat només té missatges generats localment. A més no hi podeu escriure cap missatge.L\'enviament de missatges a una llista de correu encara no funcionaAquest tipus de fitxer: %s no es pot mostrarLa càrrega de l\'adjunt ha fallat
@@ -382,6 +413,10 @@
Comença...Si us plau accepteu primer el requeriment del xat.
+
+ Envia \"%1$s\" a…
+
+ Envia el missatge a...Mostra les ubicacions al llarg del tempsMostra el rastre
@@ -398,6 +433,8 @@
Esteu segur de voler visitar %1$s?Busca
+ Busca al xat
+ Busca els fitxersBusca als xats, contactes i missatgesNo s\'han trobat resultats per \"%s\"
@@ -413,14 +450,29 @@
Has de ser membre del grup per poder fer això.EncriptacióXats compartits
+ Xats relacionatsContacteGrupGaleriaDocsEnllaçosMapa
+ Les imatges i els vídeos compartits en aquest xat sortiran aquí.
+ Els documents i d\'altres fitxers compartits en aquest xat sortiran aquí.
+ Les imatges compartides en aquest xat sortiran aquí.
+ Els vídeos compartits en aquest xat sortiran aquí.
+ Els fitxers d\'àudio i els missatges de veu compartits en aquest xat sortiran aquí.
+ Les apps compartides en aquest xat sortiran aquí.
+ Els fitxers multimèdia compartits en aquest xat sortiran aquí.Previsualització multimèdiaEnvia el missatge
+
+ %1$s ha canviat la seva adreça de %2$s a %3$s
+
+
+ Afegeix un segon dispositiu
+ Assegureu-vos que els dos dispositius estan a la mateixa Wi-Fi o xarxa
+ Afegeix com a segon dispositiuMissatges entrants
@@ -444,10 +496,9 @@
%1$s de %2$s usats
-
- Xateja via EmailEscaneja el Codi d\'InvitacióIdentifiqueu-vos
+
Identifiqueu-vos al vostre servidorAls proveïdors de mail coneguts els paràmetres es configuren automàticament. De vegades l\'IMAP s\'ha d\'activar a la interfície web. Consulta el teu proveïdor de correu electrònic o a un amic perquè t\'ajudi. No hi ha servidors de Delta Chat: les teves dades es queden al teu dispositiu!
@@ -493,8 +544,6 @@
El vostre nomSignatura
-
- Enviat amb Delta Chat: https://delta.chatLa tecla \"Intro\" enviaEls missatges s\'enviaran prement la tecla \"Intro\"Vibració
@@ -557,7 +606,9 @@
Per a contactes acceptatsTot
+
Autocrypt
+
Autocrypt és una especificació nova i oberta per al xifratge automàtic de correu electrònic d\'extrem a extrem.\n\nLa vostra configuració d\'extrem a extrem es crea automàticament segons calgui i es pot transferir entre dispositius amb els missatges de configuració Autocrypt.Envia el missatge de configuració AutocryptUn \"missatge de configuració Autocrypt\" comparteix de forma segura la vostra configuració d\'extrem a extrem amb altres aplicacions compatibles amb Autocrypt.\n\nLa configuració es xifrarà amb un codi de configuració que es mostrarà aquí i que haureu d\'escriure a l’altre dispositiu.
@@ -668,5 +719,6 @@
rebutObre la carpeta de registreObre el fitxer de registre actual
+
Prem aquí per rebre missatges mentre Delta Chat és en segon pla.
diff --git a/res/values-ckb/strings.xml b/src/main/res/values-ckb/strings.xml
similarity index 96%
rename from res/values-ckb/strings.xml
rename to src/main/res/values-ckb/strings.xml
index 522977431..13b7e7237 100644
--- a/res/values-ckb/strings.xml
+++ b/src/main/res/values-ckb/strings.xml
@@ -1,5 +1,5 @@
-
+دێڵتا چاتباشە
@@ -193,7 +193,6 @@
پەیامەکانی ئامێرەکەپەیامە درووستکراوە ناوخۆییەکانپەیامەکانی نێو ئەم وتووێژە بە شێوازی ناوخۆیی لەلایەن نەرمامێری دێڵتاچاتەکەتەوە درووست کراون. درووستکەرانی نەرمامێرەکە کەڵکی لێ دەگرن بۆ ئاگادار کردنەوەی بەکارهێنەران سەبارەت بە وەشانە نوێکانی نەرمامێرەکە و کێشە و گرفتەکانی.
- بەخێر بێن بۆ دێڵتا چات! ڕواڵەت و بەکارهێنانی دێڵتا چات هەر وەکوو نەرمامێرە پەیامنێرە باوەکانی دیکەیە، بەڵام کۆنترۆڵی ناوەندی لەسەر نییە، شوێنی ئێوە و هاوڕێ و هاوکار و بنەماڵەکانتان ناگرێت و زانیارییەکانتان نافرۆشێت بە ڕێکخراوەکان.\n\n لەڕاستیدا دێڵتاچات نەرمامێرێکی ئیمەیلییە بە ڕواڵەتێکی مۆدەڕنەوە. ئیمەیل بە جل و بەرگێکی نوێوە ئەگەر پێتان خۆش بێت\n\n👻 لە دێڵتا چات بۆ پێوەندی گرتن لەگەڵ هەرکەسێک کە دەتانەوێت کەڵک بگرن: بەس ئیمەلەکەیان بەکار بێنن. ئیدی وەرگرەکان پێویست ناکات دێڵتا چات دابمەرزێنن یان سەردانی ماڵپەڕێک بکەن یان لە شوێنێک ببن بە ئەندام-هەڵبەت ئەگەر پێیان خۆش بوو دەتوانن ئەم نەرمامێرەیان پێ بناسێنن👈https://get.delta.chatدەستکاری بەردەنگدەرزیلەکردنی چات
@@ -289,6 +288,7 @@
بیخشێنە بۆ وازهێنانکرتە بکە و دەست لەسەری ڕابگرە بۆ تۆمارکردنی پەیامێکی دەنگی، پاشان دەستبەردە بۆ هەناردنی.هاتنگە بەتاڵە. \n \"+\" لێبدە بۆ دەستپێکی وتووێژێکی نوێ.
+
دەتوانیت لەگەڵ بەکارهێنەرانی دیکەی دێڵتاچات و هەروەها هەر ناونیشانێکی ئیمەیلدا وتووێژ بکەیت.هەموو وتووێژەکان ئەرشیڤ کران. \n بۆ دەستپێکردنی وتووێژێکی نوێ، \"+\" لێبدە.هاوبەش کردن لەگەڵ
@@ -303,7 +303,6 @@
دیسان هەوڵ بدەوە بۆ هەناردنی پەیامەکەتۆ ناتوانیت لێرە بنووسیت چونکە لەم کۆڕەدا بەشدار نیت. بۆ بەشدار بوون لە ئەندامێکی کۆڕەکە داوابکە بەشدارت بکات.
- ئەم وتووێژە پەیامگەلێکی تێدایە کە بە شێوازی ناوخۆیی درووستکراون. ئیدی ناتوانیت لێرە هیچ بنووسیت.ئەم چەشنە پەڕگەیە پیشان نادرێت: %sپێوەلکاوەکە دانەگیرا
@@ -339,7 +338,9 @@
پێشدیتنی ڕەنگاڵەپەیام بنێرەبچۆ ژوورەوە
+
بچۆ ژوورەوە بۆ سێرڤێرەکەی خۆت
+
بچۆ ژوورەوە بە ناونیشانی ئیمەیلێکەوەبۆ دابینکەرە ناسراوەکانی ئیمەیلەکان، ڕێکخستنە زیادییەکان خۆکارانە ڕێکدەخرێن. هەندێجار دەبێت IMAP لەنێو ڕێکخستنەکانی وێبدا چالاک بکرێنەوە. بۆ ڕێنمایی وەرگرتن، لەگەڵ دابینکەری ئیمەیلەکەتان یان هاوڕێکانتان ڕاوێژ بکەن.دێڵتاچات هیچ سێرڤەرێکی نییە، داتاکانتان لەسەر ئامرێکەتان دەمێنێتەوە.
@@ -384,6 +385,7 @@
وێنەی لادیمەنهەژمارە ئاستەنگکراوەکانئەگەر هەژمارێک ئاستەنگ بکەیت، لێرەدا پیشان دەدرێت.
+
هەژمار و تێپەڕوشەناو
@@ -489,7 +491,9 @@
پاش 1 ساڵ
+
ئۆتۆکریپت
+
ئۆتۆکریپت شێوازێکی نوێ و خۆڕاییە بۆ شفرەکردنی خۆکاری ئیمەیل بە چەشنی ئەمسەر-ئەوسەر.\n\n ڕێکخستنی ئەمسەر-ئەوسەرەکە، بە چەشنی پێویست، خۆکارانە درووست دەبێت و تۆ دەتوانیت لەنێوان ئامێرەکاندا، کە پەیامی ڕێکخستنی ئۆتۆکریپتیان هەیە، بیانگوازیتەوە.هەناردنی پەیامی ڕێکخستنی ئۆتۆکریپتهەڵبژاردنی شفرەکردنی ئەمسەر-ئەوسەر
@@ -595,11 +599,8 @@
دێڵتا چات دەیەوێت وێنە پاشەکەوت بکاتە نێو پیشانگاکەت.
-
- وریاکەرەوەکانی پشتخان
- وریاکەرەوەیەکی هەمیشەیی پێویستە
+
بۆ وەرگرتنی پەیامەکان لەو کاتانەدا کە دێڵتا چات لە پشتخانەوەیە، لێرە کرتە بکە.تۆ ئێستا ڕێگەت بە دێڵتا چات دا کە لە پشتخانەوە پەیامەکان وەربگرێت.\n\n ئەگەر هێشتا لە پشخاندا پەیامەکان نایەن، سەرنجێکیش لە ڕێکخستنەکانی سیستەم بدەوە.
-
diff --git a/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml
similarity index 78%
rename from res/values-cs/strings.xml
rename to src/main/res/values-cs/strings.xml
index ac9ea84b5..2d8e4e1f0 100644
--- a/res/values-cs/strings.xml
+++ b/src/main/res/values-cs/strings.xml
@@ -1,10 +1,13 @@
-
+Delta ChatSouhlasZrušit
- Ano
+
+ nebo
+ Vyčistit vyhledávání
+ AnoNeVyberZapnout
@@ -17,6 +20,8 @@
SamočinněPřísnýOtevřít
+ Stáhnout
+ Stahuji...Otevřít přílohuPřipojit sePřipojit zpět
@@ -26,8 +31,15 @@
SmajlíkyPřílohaZpět
+
+ OvěřenoZavřít
+ Zavřít oknoPřeposlat
+ Vytvořit
+ Později
+
+ PřeposlatArchivuj
@@ -36,17 +48,27 @@
Samomazací zprávaTato nastavení platí pro všechny účastníky Delta Chatu. Nicméně ostatní mohou kopírovat, uložit, a přeposlat zprávy, nebo používat jiné e-mailové programy.Ulož
- Hovor
+ ChatMultimediaProfilHlavní menu
- Začni hovor
+ Začni chatZobraz celou zprávu…
+
+ Označit vše jako přečtené
+
+ Číst
+
+ Nahrávám...
+ Schovat
+ AktivovatNahraj vzdálené obrázkyVzdálené obrázky mohou umožnit sledování vaší činnosti.\n\nNastavení také povolí stahování fontů a dalšího obsahu. Obrázky z vyrovnávací paměti nebo součásti zprávy uvidíš i při vyptutí tohoto nastavení.\n\nNahrávat vzdálené obrázky?Vždy
+ Vždy načíst vzdálené obrázkyJednou
+ Zobrazit varováníZobraz hesloSkrýt hesloTeď ne
@@ -77,6 +99,11 @@
Tento měsícMinulý týdenMinulý měsíc
+
+ Naposledy viděn v %1$s
+
+ Naposledy viděn %1$s
+ Naposledy viděn: Neznámý%d minuta
@@ -95,7 +122,7 @@
%d hovor%d hovory%d hovorů
- %d hovorů
+ %dChaty%d kontakt
@@ -121,9 +148,15 @@
OdpověďGIF
+
+ Nálepka
+ Přidat do sbírky nálepek
+ Chcete-li přidat nálepky, klepněte na „Otevřít složku nálepek“, vytvořte podsložku pro balíček nálepek a přetáhněte tam soubory obrázků a nálepek
+ Otevřete složku nálepekObrázkyZvukový záznamHlasová zpráva
+ PřeposlánoPřeposlaná zprávaPřeposlal %1$s
@@ -131,11 +164,20 @@
DokumentyKontaktKamera
+
+ Zachyťte
+ Přepnout fotoaparát
+ Přepni na režim celé obrazovky Poloha
+ UmístěníGalerieObrázky a videaSouborSoubory
+
+ Aplikace
+
+ AplikaceNeznámáZelená
@@ -159,18 +201,29 @@
Nový kontakt
- Nový hovor
+ Nový chatNová skupina
+ Kopíruj chat
+
+ Seznam vysílání
+ Seznam vysílání
+ Nový seznam vysílání
+ Přidat příjemce
+ Upravit seznam vysílání
+ Název seznamu vysílání
+ Zadejte název seznamu vysílání. PoslatPřepni na smajlíkyUprav skupinuNázev a obrázek skupinyUkaž všechny polohy
- Archivuj hovor
- Rozbal hovor
+ Archivuj chat
+ Rozbal chatPřidat přílohuOpustit skupinu
- Vymaž hovor
+ Vymaž chat
+
+ Vyčisti chatSkutečně úplně vymazat \"%1$s\"?Vymaž zprávyVymaž kontakt
@@ -179,27 +232,36 @@
Kopíruj do mezipamětiKopíruj výběrKopíruj odkaz
+ Zkopírujte text
+ Zkopírujte obrázek
+ Zkopírujte E-MailVložit z mezipaměti
+ Odkaz \"%1$d\" nelze otevřít ve webovém prohlížeči. Chcete místo toho zkopírovat odkaz do schránky? Přeposlat zprávuOdpověz na zprávuUmlčet upozorněníZruš umlčeníUlož přílohu
+ Exportujte přílohyVšechna multimedia
- Ukaž v hovoru
+ Ukaž v chatu
+ Zobrazit aplikaci v chatuSdíletZablokovatZablokuj kontaktOdblokuj kontakt
+ PřijmoutPřehrátPřerušitPosuň až dolůPosuň až nahoruNápověda
+ Co je Webxdc? Pravidla pro soukromíVyber vše
+ Vyber chatVyber víceUprav jménoNastavení
@@ -208,16 +270,21 @@
PřiblížitOddálitUložit záznam běhu
+ Více možností
+ Naučte se pravopis
+ Audit chat protokolu
+ Přejít na zprávu
+ Zkopírujte JSON
+ Nahraďte konceptSdílet polohu se všemi členy skupinyZprávy přístrojeSamovytvořené zprávyZprávy v tomto hovoru jsou vytvořeny aplikací Delta Chat. Její tvůrci tak informují o aktualizacích a potížích při používání.
- Vítej v Delta Chatu! – Delta Chat se chová jako všeobecně známé chatovací aplikace, ale bez centralizované kontroly, sledování. Neprodává zážitky tvých přátel, kolegů, rodiny ani tvé vlastní velkým organizacím.\n\nTechnicky je Delta Chat e-mailový program, ale s uživatelským rozhraním chatu. Převlečený e-mail, chceš-li. Delta Chat používej s kýmkoli z miliard lidí; prostě použij jejich e-mailovou adresu. Příjemce si nemusí Delta Chat instalovat, ani se přihlašovat přes nové webové stránky. Můžeš je však, budou-li chtít, odkázat na 👉 https://get.delta.chatUprav kontakt
- Připíchni hovor
+ Připíchni chat
- Odpíchni hovor
+ Odpíchni chatPřipíchnout
@@ -253,7 +320,7 @@
Otevři stiskemPřipravený video hovorTvůj připravený video hovor
- Použít \"%1$s\" k pozvání na video hovory?\n\nPokud nastaveno, můžete začít video hovor v každém hovoru jeden na jednoho. Toto nahradí jakékoli předchzí nastavení video hovorů.
+ Použít \"%1$s\" k pozvání na video hovory?\n\nPokud nastaveno, můžete začít video hovor v každém chatu jeden na jednoho. Toto nahradí jakékoli předchozí nastavení video hovorů.Výzva k video hovoruJste vyzváni k video hovoru, připojte se stiskem %1$s
@@ -272,14 +339,14 @@
Vymaž %d zpráv zde i ze serveru?Přepošli zprávy na adresu %1$s?
- Přepošli zprávy do %1$d hovorů?
+ Přepošli zprávy do %1$d chatů?Uložit přílohu? Uložení příloh je zpřístupní ostatním aplikacím na tomto přístroji.\n\nPokračovat?Zablokovat tento kontakt? Další zprávy od tohoto kontaktu již nebudete přijímat.Odblokovat tento kontakt? Zprávy od tohoto kontaktu budete opět přijímat.
- Vymazat kontakty?\n\nKontakty v nastavených hovorech a kontakty ze systémového adresáře nelze nadobro vymazat.
- Vymazat kontakt %1$s?\n\nKontakty v nastavených hovorech a kontakty ze systémového adresáře nelze nadobro vymazat.
- Kontakty v nastavených hovorech nelze vymazat
- Hovor s %1$s?
+ Vymazat kontakty?\n\nKontakty v nastavených chatech a kontakty ze systémového adresáře nelze nadobro vymazat.
+ Vymazat kontakt %1$s?\n\nKontakty v nastavených chatech a kontakty ze systémového adresáře nelze nadobro vymazat.
+ Kontakty v nastavených chatech nelze vymazat
+ Chat s %1$s?Vymazat %s?Odstranit %1$s ze skupiny?
@@ -298,15 +365,15 @@
%d hovor archivován%d hovory archivovány%d hovorů archivováno
- %d hovorů archivováno
+ %d chaty archivovány%d hovor rozbalen%d hovory rozbaleny%d hovorů rozbaleno
- %d hovorů rozbaleno
+ %d chaty rozbaleny
- Archivované hovory
+ Archivované chatyZadejte zprávu, prosím.Kamera je nedostupná.Nelze nahrávatt zvuk.
@@ -316,17 +383,20 @@
%d nových zpráv%d nových zpráv
+ V seznamu vysílání budou příjemci dostávat zprávy v chatu pouze pro čtení s vámi.Napiš první zprávu a umožni ostatním odpovídat do této skupiny.\n\n• Nevadí pokud všichni členové nemají Delta Chat.\n\n• Doručení první zprávy může trvat déle.Zrušit tahemK nahrání hlasové zprávy stiskni a drž mikrofon, uvolni pro odeslání.
- Prázdná schránka.\nStiskem \"+\" založ nový hovor.
- Založ hovor s jakýmkoli uživatelem Delta Chatu a s jakýmkoli e-mailem.
- Vsechny hovory archivovány.\nStiskem \"+\" založ nový hovor.
+ Prázdná schránka.\nStiskem \"+\" založ nový chat.
+
+ Založ chat s jakýmkoli uživatelem Delta Chatu a s jakýmkoli e-mailem.
+ Všechny chaty archivovány.\nStiskem \"+\" založ nový chat.Sdílet sZprávaArchivovánoŽádná zpráva.Zprávy poslané sobě
+ Zde se zobrazí archivované chaty.Uložené zprávy• Přepošli si sem zprávy pro jednoduchý přístup\n\n• Dělej si poznámky textové i hlasové\n\n• Přiložená multimedia se hned uloží
@@ -334,19 +404,26 @@
Opakuj pokus o zaslání zprávyNelze psát protože nejsi členem této skupiny. O přidání požádej jiného člena.
- Tento hovor obsahuje samočinně vytvořené zprávy. Proto nelze psát vlastní zprávy.Nelze zobrazit tento typ souboru: %sNezdařilo se načíst přílohuHromadná zpráva
+
+ Nejprve prosím přijměte žádost o chat.Zobraz polohu v časovém rámciUkaž trasyPošli polohu zájmu
+
+ Zde se zobrazují systémové zprávy pro tento chat
+ Protokol auditu pro chat %1$s
+ Zobrazuje pouze systémové a informační zprávy; užitečné pro nalezení posledních akcí chatu bez procházení mnoha zpráv.
+
Hledej
- Vyhledávat hovory, kontatkty a zprávy
+ Vyhledávat v chatu
+ Vyhledávat chaty, kontakty a zprávyŽádný výsledek pro \"%s\"
@@ -360,19 +437,30 @@
Přidej členaPro tuto aktivitu musíš být členem této skupiny.Šifrování
- Sdílené hovory
+ Sdílené chaty
+ Související chatyKontaktSkupinaGalerieDokumentyOdkazyMapa
- Obrázky a videa sdílené v tomto hovoru budou zobrazeny zde.
- Documenty, hudba a další soubory sdílené v tomto hovoru budou zobrazeny zde.
+ Obrázky a videa sdílené v tomto chatu budou zobrazeny zde.
+ Dokumenty, hudba a další soubory sdílené v tomto chatu budou zobrazeny zde.
+ Zde se zobrazí obrázky sdílené v tomto chatu.
+ Zde se zobrazí videa sdílená v tomto chatu.
+ Zde se zobrazí zvukové soubory a hlasové zprávy sdílené v tomto chatu.
+ Zde se zobrazí aplikace sdílené v tomto chatu.
+ Zde se zobrazí média sdílená v jakémkoli chatu.Náhled multimediaPošli zprávu
+ Nainstalujte si Delta Chat do druhého zařízení (https://get.delta.chat)
+
+ Spusťte Delta Chat, klepněte na „Přidat jako druhé zařízení“ a naskenujte zde zobrazený kódPřihlaš se
+
Přihlaš se na váš server
+
Přihlásit se se stávajícím účtem pro e-mail.Pro standardní poskytovatele jsou nastavení dopněna samočinně. Někdy je potřeba umožnit IMAP ve webovém rozhraní nastavení. Obraťte se na poskytovatele e-mailu nebo přátele.Delta Chat nemá žádné vlastní servery, tvá data zůstávají na tvém přístroji.
@@ -407,7 +495,7 @@
Přidej účetVymaž účetSkutečně vymazat data tvého účtu?
- Všechna data účtu \"%s\" budou z tohoto zařízení vymazána, včetně nastavení end-to-end šifrování, kontaktů, hovorů, zpráv a multimedií. Tento úkon nelze vrátit zpět.
+ Všechna data účtu \"%s\" budou z tohoto zařízení vymazána, včetně nastavení end-to-end šifrování, kontaktů, hovorů, zpráv a multimédií. Tento úkon nelze vrátit zpět.Teď se zkus připojitNastavení selhalo. Chyba: %1$s
@@ -415,9 +503,9 @@
Přeposlat komu ...
- Poslat %1$d soubory do zvoleného hovoru?\n\nSoubory budou zachovány v původní velikosti. Obrázky a videa nebudou překódována.
- Poslat %1$d soubor(y) do %2$d hovorů?\n\nSoubory budou zachovány v původní velikosti. Obrázky a videa nebudou překódována.
- Poslat tento text do %1$d hovorů?\n\n\"%2$s\"
+ Poslat %1$d soubory do zvoleného chatu?\n\nSoubory budou zachovány v původní velikosti. Obrázky a videa nebudou překódována.
+ Poslat %1$d soubor(y) do %2$d chatu?\n\nSoubory budou zachovány v původní velikosti. Obrázky a videa nebudou překódována.
+ Poslat tento text do %1$d chatů?\n\n\"%2$s\"Sdílení přerušeno díky chybějícím oprávnění.
@@ -428,13 +516,12 @@
Obrázek profiluBlokované kontaktyZablokované kontakty se zobrazí zde.
+
Heslo a účetTvůj profilový obrázek a jméno budou zobrazeny vedle zpráv poslaných ostatním uživatelům. Data která jsou již jednou odeslaná nelze smazat ani odstranit. Tvé jménoText s podpisem
-
- Posláno pomocí Delta Chatu: https://delta.chatNový řádek odesíláStisk klávesy pro nový řádek odešle zprávuKvalita odeslaných multimedií
@@ -455,7 +542,7 @@
ZvukTichoSoukromí
- Hovory a multimedia
+ Chaty a multimédiaPodle systémuSvětlý
@@ -471,9 +558,10 @@
Správa klíčůPoužij systémové smajlíkyVypni vestavěné smajlíky Data Chatu
+ Nabídka vytvoření chatů s kontakty z adresáře. Někteří poskytovatelé potřebují nejprve nastavení šifrování typu end-to-end. Přístup aplikace
- Hovory
- Zvuky v rámci hovoru
+ Chaty
+ Zvuky v rámci chatuVelikost písma zprávyZobrazit záznam běhuZáznam běhu uložen do složky \"Downloads\"
@@ -481,8 +569,8 @@
Záznam běhuOstatníZáloha
- Zálohuj hovory na vnější úložiště
- Záloha ti pomůže nastavit novou instalaci na tomto či jiném zařízení.\n\nZáloha obsahuje všechny zprávy, kotakty a hovory, a tvé end-to-end Autocrypt nastavení. Soubor se zálohou uchovej na bezpečném místě nebo jej co nejdřív vymaž.
+ Zálohuj chaty na vnější úložiště
+ Záloha ti pomůže nastavit novou instalaci na tomto či jiném zařízení.\n\nZáloha obsahuje všechny zprávy, kontakty a chaty, a tvé end-to-end Autocrypt nastavení. Soubor se zálohou uchovej na bezpečném místě nebo jej co nejdřív vymaž.Začni zálohovatZáloha úspěšně zapsána v \"%1$s\"Správa klíčů
@@ -501,9 +589,11 @@
Sleduj Odchozí složkuPosílat si kopieSamočinně přesouvat do složky DeltaChat
- Zprávy hovorů jsou přesouvány aby nezahlcovali Příchozí složku
+ Zprávy chatů jsou přesouvány, aby nezahlcovali Příchozí složku
+ Pouze načíst ze složky DeltaChat
+ Ostatní složky ignorujte. Vyžaduje, aby váš server přesunul zprávy chatu do složky DeltaChat. Zobrazuj běžné e-maily
- Ne, pouze hovory
+ Ne, pouze chatyPro přijaté kontaktyVšePokusné funkce
@@ -536,7 +626,7 @@
Skutečně smazat %1$d zprávy a všechny v budoucnu stažené zprávy \"%2$s\"?\n\n• Toto zahrnuje všechna multimedia\n\n• Zprávy budou smazány bez ohledu na jejich přečtení\n\n• \"Uložené zprávy\" budou z místního mazání vynechány
- Skutečně smazat %1$d zprávy a všechny v budoucnu stažené zprávy \"%2$s\"?\n\n⚠️ Toto zahrnuje e-maily, multimedia a \"Uložené zprávy\" ve všech složkách na serveru\n\n⚠️ Nepoužívej tuto funkci pokud chceš nechat data na serveru\n\n⚠️ Nepoužívej tuto funkci pokud máš i jiné e-mailové programy mimo Delta Chat
+ Skutečně smazat %1$d zprávy a všechny v budoucnu stažené zprávy \"%2$s\"?\n\n⚠️ Toto zahrnuje e-maily, multimédia a \"Uložené zprávy\" ve všech složkách na serveru\n\n⚠️ Nepoužívej tuto funkci pokud chceš nechat data na serveru\n\n⚠️ Nepoužívej tuto funkci pokud máš i jiné e-mailové programy mimo Delta ChatToto zahrnuje e-maily, multimedia a \"Uložené zprávy\" ve všech složkách na serveru. Nepoužívej tuto funkci pokud chceš nechat data na serveru, nebo pokud máš i jiné e-mailové programy mimo Delta ChatRozumím. Vymaž všechny zprávy
@@ -554,7 +644,9 @@
Po 1 roce
+
Autocrypt
+
Autocrypt je nový, otevřený technický popis samočinného end-to-end šifrování.\n\nNastavení šifrování se vytváří samočinně dle potřeby a mužeš si ho přenášet mezi zařízeními zasláním zprávy s Nastavením Autocryptu.Pošli Nastavení AutocryptuPomocí Nastavení Autocryptu lze bezpečně sdílet nastavení šifrování této aplikace s jinou, která také používá Autocrypt.\n\nNastavení je zašifrované zobrazeným kódem, který musí být vložen i na druhém zařízení.
@@ -574,7 +666,8 @@
Zpráva otevřenaOdeslaná zpráva \"%1$s\" byla příjemci zobrazena na jeho přístroji.\n\nNicméně přečtení obsahu není zaručeno.
- Neznámý odesilatel v tomto hovoru. Více najdeš v Popisu.
+ Tuto zprávu nelze dešifrovat.\n\n• Už teď by mohlo pomoci jednoduše odpovědět na tuto zprávu a požádat odesílatele, aby zprávu poslal znovu.\n\n• Pokud jste právě přeinstalovali Delta Chat, bude nejlepší, když znovu nastavíte Delta Chat a zvolíte \"Přidat jako druhé zařízení\" nebo importujete zálohu.
+ Neznámý odesílatel tohoto chatu. Další podrobnosti naleznete v části „informace“. Zpráva od %1$sOdeslání zprávy pro %1$s selhalo.
@@ -630,6 +723,11 @@
Samomazací zprávy vyprší po %1$s týdnech ode mě.Samomazací zprávy vyprší po %1$s týdnech od %2$s.
+ 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.
+ ⚠️%1$svyžaduje end-to-end šifrování, které pro tento chat ještě není nastaveno. Klepnutím se dozvíte více.
+ Smazali jste chat „Uložené zprávy“.\n\nℹ️ Chcete-li znovu použít funkci „Uložené zprávy“, vytvořte si nový chat.
+ ⚠️ Vaše verze Delta Chatu 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 .
+
QR kódNahraj QR kód z obrázku
@@ -655,14 +753,15 @@
Nejsi připojen k Internetu. Nastavení QR kódem nelze provést. Vytvořit nový e-mail na \"%1$s\" a připojit se k němu?Vytvořit nový e-mail na \"%1$s\" a připojit se k němu?\n\nTvůj původní ůčet nebude smazán. Použij \"Přepni účet\" k přepnutí na jiný účet.
- Úspěšné přihlášení - tvůj e-mail je %1$s\n\nNyní můžeš zadat jméno a profilový obrázek. Ty se budou zobrazovat lidem, kterým budeš posílat zprávy.Sejmutý QR kód neumožňuje nastavení nového účtu.
+
Sejmutý QR kód je k nastavení nového účtu. Tento QR kód můžeš použít když budeš provádět novou instalaci Delta Chatu.%1$s ověřen.Nelze ověřit %1$s.Změněné nastavení pro %1$s.URL z QR kódu zkopírováno do mezipaměti
+ Vyberte chat, kterému chcete zprávu odeslat OdpověďNová zprávaSpojení na pozadí je zapnuto
@@ -671,6 +770,9 @@
Jméno a zprávaPouze jménoAni jméno ani zpráva
+ %1$d zprávy v %2$dchatech
+
+
Vyžaduj povoleníPokračuj
@@ -678,6 +780,8 @@
K posílání zvukových zpráv jdi do nastavení aplikace, pokračuj do Povolení, a tam povol Mikrofon.Pro příjem a posílání souborů jdi do nastavení aplikace, pokračuj do Povolení, a tam povol Ukládání.K posílání polohy jdi do nastavení aplikace, pokračuj do Povolení, a tam povol Polohu.
+ Chcete-li dostávat oznámení, přejděte na „Nastavení systému / Aplikace / Delta Chat“ a povolte „Oznámení“.
+
Kreslením rozmazávej
@@ -705,7 +809,8 @@
Přispěj na GitHubuNahlaš problémO aplikaci Delta Chat
- Vyber hovor, nebo vytvoř nový
+ Otevřít Delta Chat
+ Vyber chat, nebo vytvoř nový chatNapiš zprávuPopis šifrováníVymaž zprávu
@@ -717,11 +822,13 @@
Vyber obrázek skupinyUlož zálohuNastavení Autocryptu přeneseno.
- Smazat toto přihlášení? Vše bude smazáno, včetně nastavení tvého end-to-end šifrování, kontaktů, hovorů, zpráv a multimedií. Tuto akci nelze vrátit zpět.
+ Smazat toto přihlášení? Vše bude smazáno, včetně nastavení tvého end-to-end šifrování, kontaktů, hovorů, zpráv a multimédii. Tuto akci nelze vrátit zpět.odeslánopřijatoOtevři složku se záznamem běhuOtevři stávající záznam běhu
+ Ikonu na panelu nelze deaktivovat, protože Delta Chat byl spuštěn s možností --minimized.
+ Přepínání mezi chatyStav doručení: ChybaZámek šifrování
@@ -734,23 +841,22 @@
Náhled pozadíSamomazací zprávy jsou zapnuty
+ Chcete-li chatovat s kontakty ze svého zařízení, otevřete Nastavení a povolte „Kontakty“.
+
+ Zde se zobrazí aplikace přijaté nebo odeslané v libovolném chatu. „Soubory“ zobrazuje právě stažené aplikace. Delta Chat využívá kameru k focení, filmování a snímání QR kódů.Delta Chat používá tvé kontakty k zobrazení e-mailů na které můžeš psát. Delta Chat nemá žádné vlastní servery - tvé kontakty se nikam noposílají.
+ Delta Chat potřebuje oprávnění ke sdílení vaší polohy po dobu, kdy jste povolili sdílení polohy.
+ Delta Chat potřebuje oprávnění ke sdílení vaší polohy po dobu, kdy jste povolili sdílení polohy. Delta Chat používá mikrofon k nahrávání hlasových zpráv a k filmování se zvukem.Delta Chat tě nechá vybrat, které fotky z tvé galerie chceš poslat.Delta Chat chce uložit obrázky do tvé galerie fotek.
-
- Upozornění v pozadí
- V pozadí udržuje spojení s tvým serverem. Vyžaduje nedbání optimalizací baterie.K udržení spojení s e-mailovým serverem a přijímání zpráv na pozadí vyber v následujícím kroce nedbání optimalizací baterie.\n\nDelta Chat používá jen málo zdroje a snaží se šetřit tvou baterii.
- Spolehlivé spojení na pozadí
- Vyžaduje neustálé upozorněníStiskni zde a přijímání zpráv bude probíhat při chodu Delta Chatu na pozadí.Přijímání zpráv na pozadí je Delta Chatu již povoleno.\n\nV případě nepřicházení nových zpráv si prosím zkontroluj své systémové nastavení.
-
diff --git a/res/values-da/strings.xml b/src/main/res/values-da/strings.xml
similarity index 96%
rename from res/values-da/strings.xml
rename to src/main/res/values-da/strings.xml
index a5cea3289..0544fcd80 100644
--- a/res/values-da/strings.xml
+++ b/src/main/res/values-da/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -212,7 +212,6 @@
EnhedsbeskederLokalt genererede beskederBeskederne i denne chat er blevet generated lokalt af din Delta Chat app. Skaberne af appen bruger dette til at informere om app-opdateringer og problemer under brug.
- Velkommen til Delta Chat! - Delta Chat ser ud og føles som andre populære messenger apps men kontrolleres ikke fra centralt hold, tracker ikke eller sælger ikke dine, dine venners, dine kollegaers og din families oplysninger til store organisationer.\n\nTeknisk set er Delta Chat en email-klient med et moderne chat interface. E-mail i nye klæder om man vil. 👻\n\nBrug Delta Chat med hvem som helst ud af milliarder af mennesker: brug blot deres email-adresse. Modtagerne behøver ikke at installere Delta Chat, besøge websider eller melde sig ind nogen steder - men, selvfølgelig, hvis du vil kan du henvise dem til 👉https://get.delta.chatRediger kontaktFastgør chat
@@ -313,6 +312,7 @@
Træk for at annullereTryk og hold for at optage talebesked, slip for at sende.Tom indbakke.\nTryk \"+\" for at starte ny samtale.
+
Du kan have samtaler med andre Delta Chat brugere og med enhver e-mailadresse.Alle samtaler er arkiveret.\nTryk \"+\" for at starte ny samtale.Del med
@@ -327,7 +327,6 @@
Forsøg igen at sende beskedDu kan ikke skrive, fordi du ikke er medlem af denne gruppe. For at tilslutte dig, spørg et andet medlem.
- Denne chat indeholder lokalt generede beskeder. Derfor kan du ikke skrive nogen beskeder.Kan ikke vise denne filtype: 1%sVisning af vedhæftede fil mislykkedes
@@ -383,7 +382,9 @@
Login
+
Login til server
+
Login med en eksisterende e-mailkontoFor kendte e-mailudbydere opsættes yderligere indstillinger automatisk. Nogle gange skal IMAP aktiveres i brugerfladen. Kontakt din e-mailudbyder eller venner for at få hjælp.Der er ingen Delta Chat server, data forbliver på enhed!
@@ -447,13 +448,12 @@
ProfilbilledeBlokerede kontakterHvis du blokerer kontakter, bliver de vist her.
+
Adgangskode og kontoProfilbillede og navn vises sammen med beskeder, når der kommunikeres med andre brugere. Allerede sendt information kan ikke slettes eller fjernes.Dit navnUnderskrift tekst
-
- Sendt med Delta Chat Messenger: https://delta.chatEnter tast senderTryk på enter tast vil sende tekst beskedenUdgående medie kvalitet
@@ -573,7 +573,9 @@
Efter 1 år
+
Autocrypt
+
Autocrypt er en ny åben specifikation for automatisk end-to-end e-mail kryptering.\n\nEnd-to-end opsætning bliver oprettet automatisk efter behov og kan overføres mellem enheder med Autocrypt opsætning beskeder.Send Autocrypt opsætning beskedEn \"Autocrypt opsætning besked\" deler sikkert end-to-end opsætning med andre Autocrypt kompatible programmer.\n\nOpsætning er krypteret med en kode som er vist her og skal indtastes på den anden enhed.
@@ -676,8 +678,8 @@
Ingen internet forbindelse, kan ikke udføre QR kode opsætning.Opret ny e-mail adresse på \"%1$s\" og log ind der?Opret ny e-mail adresse på \"%1$s\" og log ind der?\n\nDin eksisterende konto bliver ikke slettet. Brug \"Skift konto\" for at skifte imellem dine konti.
- Login lykkedes - din e-mail adresse er %1$s\n\nHvis du vil kan du nu indtaste et navn og et profilbillede der bliver vist til folk to skriver til.Den skannede QR-kode kan ikke bruges til at opsætte en ny konto.
+
Den skannede QR-kode er til at opsætte en ny konto. Du kan skanne QR-kode når du opsætter en ny Delta Chat installation.%1$s bekræftet.Kan ikke bekræfte %1$s
@@ -766,15 +768,9 @@
Delta Chat vil gerne gemme billeder til dig billede-bibliotek
-
- Baggrundsnotifikationer
- Benytter en forbindelse til din server i baggrunden og kræver at batterioptimeringer bliver ignoreret.Ignorer batterioptimeringer i næste skridt for at vedligeholde en forbindelse til din mail-server og modtage beskeder i baggrunden.\n\nDelta Chat bruger få ressourcer og passer på ikke at dræne dit batteri.
- Pålidelig baggrundsforbindelse
- Kræver en permanent forbindelseTryk her for at modtage beskeder når Delta Chat er i baggrunden.Du har allerede tilladt Delta Chat at modtage beskeder i baggrunden.\n\nHvis beskeder ikke ankommer i baggrunden, undersøg dine systemindstillinger.
-
diff --git a/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
similarity index 86%
rename from res/values-de/strings.xml
rename to src/main/res/values-de/strings.xml
index 279513d77..a1e594231 100644
--- a/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -56,6 +56,7 @@
Ganze Nachricht anzeigen…Alles Gelesen
+ GelesenGelesen
@@ -199,6 +200,8 @@
Neuer Kontakt
+ Kontakt manuell hinzufügen
+ Manuell hinzugefügte Kontakte können verwendet werden, um klassische E-Mail-Adressen anzuschreiben; diese sind nicht garantiert Ende-zu-Ende-verschlüsselt.Neuer ChatNeue GruppeChat klonen
@@ -226,7 +229,7 @@
Nachrichten löschenKontakt löschenDiesen Standort löschen?
- Nachrichtendetails
+ NachrichteninfoIn Zwischenablage kopierenAuswahl kopierenLink kopieren
@@ -278,7 +281,7 @@
SystemnachrichtenLokal erzeugte NachrichtenNachrichten in diesem Chat werden lokal von der Delta Chat-App erzeugt. Ihre Entwickler informieren damit über App-Updates und Probleme während der Nutzung.
- Willkommen – Delta Chat sieht aus und funktioniert wie andere populäre Messenger - aber ohne zentrale Überwachung, ohne Tracking, ohne die Daten von Ihnen, Ihren FreundInnen, KollegInnen oder Familienmitgliedern an irgendwelche Firmen zu verkaufen.\n\nTechnisch gesehen ist Delta Chat ein E-Mail-Programm unter einer modernen Chat-Oberfläche - sozusagen E-Mail in neuem Gewand 👻\n\nMit Delta Chat haben Sie Milliarden potentieller ChatpartnerInnen: Verwenden Sie einfach deren E-Mail-Adresse - die EmpfängerInnen selbst müssen Delta Chat dazu nicht installieren oder sich irgendwo anmelden. Sie können sie aber natürlich gerne auf 👉 https://get.delta.chat hinweisen
+ Nehmen Sie Kontakt auf!\n\n🙌 Tippen Sie auf dem Hauptbildschirm beider Geräte auf \"QR-Code\". Wählen Sie \"QR-Code scannen\" auf einem Gerät und scannen Sie den QR-Code des anderen\n\n🌍 Wenn Sie sich nicht im selben Raum befinden, scannen Sie per Videoanruf oder teilen Sie einen Einladungslink aus \"QR-Code scannen\"\n\nDann: Viel Spaß beim Texten über das größte dezentrale Netzwerk, das es je gab: E-Mail. Und im Gegensatz zu anderen populären Apps, auch ohne die Daten von Ihnen, Ihren FreundInnen, KollegInnen oder Familienmitgliedern an irgendwelche Firmen zu verkaufen.Kontakt bearbeitenChat anheften
@@ -385,12 +388,13 @@
%d neue Nachrichten
- Senden Sie eine Nachricht. Es ist in Ordnung, wenn %1$s kein Delta Chat hat.
+ Senden Sie eine Nachricht an %1$s.In Broadcast-Listen erhalten die Empfänger die Nachrichten in einem Nur-Lesen-Chat.Andere sehen diese Gruppe erst, nachdem Sie eine erste Nachricht gesendet haben.Schieben, um abzubrechenTippen und halten, um eine Sprachnachricht aufzunehmen, loslassen um zu senden.
- Posteingang ist leer.\n\"+\" drücken, um einen neuen Chat zu starten.
+ Keine Chats.\n\"+\" drücken, um einen neuen Chat zu starten.
+
Es kann mit anderen Delta Chat BenutzerInnen und mit jeder E-Mail-Adresse gechattet werden.Alle Chats archiviert.\n\"+\" drücken, um einen neuen Chat zu starten.Teilen mit
@@ -408,7 +412,6 @@
Nachricht erneut sendenSie können nicht schreiben, da Sie kein Mitglied dieser Gruppe sind. Bitten Sie ein anderes Mitglied, Sie hinzuzufügen.
- Dieser Chat enthält lokal generierte Nachrichten. Sie können hier keine Nachrichten schreiben.Das Senden von Nachrichten in Mailinglisten wird noch nicht unterstützt.Kann diesen Dateityp nicht anzeigen: %sKann Anhang nicht laden
@@ -428,6 +431,8 @@
Sende \"%1$s\" an…Nachricht senden an…
+ Webxdc-Echtzeit-Kanäle
+ Webxdc-Echtzeit-APIs aktivieren und direkte Verbindungen zwischen Geräten ermöglichen.Standorte im Zeitrahmen anzeigen
@@ -498,20 +503,21 @@
Zweitgerät hinzufügenBeide Geräte müssen im selben Wi-Fi oder Netzwerk sein.
- Erstellt einen QR-Code, den ein Zweitgerät scannen kann, um das Konto zu kopieren.
+ Erstellt einen QR-Code, den ein Zweitgerät scannen kann, um das Profil zu kopieren.Delta Chat auf dem anderen Gerät installieren (https://get.delta.chat)
- Delta Chat starten, \"Als Zweitgerät hinzufügen\" wählen und den QR-Code scannen
+
+ Delta Chat starten, \"Ich habe bereits ein Login / Als Zweitgerät hinzufügen\" wählen und den QR-Code scannenScannen, um ein zweites Gerät für %1$s hinzuzufügenAls Zweitgerät hinzufügenAuf dem ersten Gerät, gehe zu \"Einstellungen / Zweitgerät hinzufügen\" und scanne den dort angezeigten Code
- Das Konto vom anderen Gerät auf dieses Gerät kopieren?
+ Das Profil vom anderen Gerät auf dieses Gerät kopieren?Einrichtung des Zweitgeräts beenden?Dadurch wird der auf die Zwischenablage kopierte QR-Code ungültig.(experimentell, Version 1.36 erforderlich)
- ℹ️ Konto wurde auf Ihr Zweitgerät übertragen.
+ ℹ️ Profil wurde auf Ihr Zweitgerät übertragen.
- Konto vorbereiten…
+ Profil vorbereiten…Warte auf Empfänger…
@@ -546,13 +552,43 @@
- Chatten über E-Mail.
+
+ Neues Profil erstellen
+
+ Ich habe bereits ein Profil
+
+ Klassischer E-Mail-Login
+
+ Ihr Profil
+
+ Datenschutzbestimmungen lesen
+
+ Datenschutzerklärung für %1$s
+
+ Infos zu Profilen auf %1$s
+
+ Einverstanden & Profil erstellen
+
+ Anderen Server verwenden
+ Chatmail-Servers anzeigen
+
+ Erstelle ein Profil, um der Gruppe \"%1$s\" beizutreten.
+
+ Erstelle ein Profil, um mit %1$s zu chatten.
+
+ Ein neues Profil erstellen und mit %1$s chatten?
+
+ Ein neues Profil erstellen und der Gruppe \"%1$s\" beitreten?
+
+ Sicherer dezentraler ChatEinladungscode scannenLogin
+
Bei Ihrem E-Mail-Konto anmelden
+
Mit existierendem E-Mail-Konto einloggenFür bekannte E-Mail-Anbieter werden zusätzliche Einstellungen automatisch vorgenommen. Manchmal muss IMAP in der Weboberfläche eingeschaltet werden. Bitten Sie Ihren Anbieter oder Freunde um Rat, wenn es Probleme gibt.
- Es gibt keine Delta Chat Server! Ihre Daten bleiben auf Ihrem Gerät!
+ Delta Chat sammelt keine Benutzerdaten, alles bleibt auf Ihrem Gerät.PosteingangIMAP-AnmeldenameIMAP-Server
@@ -573,7 +609,7 @@
SOCKS5-AnmeldenameSOCKS5-PasswortWeiter mit vereinfachter Einrichtung?
- Die eingegebene E-Mail-Adresse unterstützt eine vereinfachte Einrichtung (OAuth 2.0).\n\nBitte erlauben Sie Delta Chat im nächsten Schritt, als Chat-über-E-Mail-App zu arbeiten.\n\nEs gibt keine Delta Chat Server! Ihre Daten bleiben auf Ihrem Gerät!
+ Die eingegebene E-Mail-Adresse unterstützt eine vereinfachte Einrichtung (OAuth 2.0).\n\nBitte erlauben Sie Delta Chat im nächsten Schritt, als Chat-über-E-Mail-App zu arbeiten.\n\nDelta Chat sammelt keine Benutzerdaten, alles bleibt auf Ihrem Gerät.ZertifikatsüberprüfungBitte eine gültige E-Mail-Adresse eingebenBitte eine gültige Server/IP-Adresse eingeben
@@ -587,13 +623,13 @@
Ungültige Zertifikate akzeptierenVerwendete Einstellungen:
- E-Mail-Konto wechseln
- E-Mail-Konto hinzufügen
- E-Mail-Konto löschen
- Möchten Sie das E-Mail-Konto und alle Daten wirklich von diesem Gerät löschen?
- Alle Daten des E-Mail-Kontos \"%s\" werden von diesem Gerät gelöscht, dies schließt Ihre Ende-zu-Ende Autocrypt-Einstellungen, Kontakte, Chats, Nachrichten und Medien mit ein. Diese Aktion kann nicht rückgängig gemacht werden.
- Unkonfiguriertes Konto
- Konto zum Konfigurieren öffnen.
+ Profil wechseln
+ Profil hinzufügen
+ Profil löschen
+ Möchten Sie das Profil und alle Daten wirklich von diesem Gerät löschen?
+ Alle Daten des Profils \"%s\" werden von diesem Gerät gelöscht, dies schließt Ihre Ende-zu-Ende Autocrypt-Einstellungen, Kontakte, Chats, Nachrichten und Medien mit ein. Diese Aktion kann nicht rückgängig gemacht werden.
+ Unkonfiguriertes Profil
+ Profil zum Konfigurieren öffnen.Versuche, zu verbindenAlles synchronisieren
@@ -615,13 +651,12 @@
ProfilbildBlockierte KontakteWenn Sie Kontakte blockieren, werden diese hier angezeigt.
+
Passwort und E-Mail-KontoIhr Profilbild, Ihr Name und die Signatur werden beim Chatten zusammen mit Ihren Nachrichten gesendet.Mein NameSignatur
-
- Mit meinem Delta Chat Messenger gesendet: https://delta.chatEnter-Taste sendetDurch Drücken der Eingabetaste werden Textnachrichten gesendet.Medienqualität beim Senden
@@ -655,11 +690,15 @@
Deaktivierung des personalisierten Lernens der Tastatur anfordern.LesebestätigungenWenn Lesebestätigungen ausgeschaltet sind, werden auch keine Lesebestätigungen von anderen angezeigt.
+ Server
+ VerschlüsselungSchlüssel verwaltenSystem-Emoji benutzenEingebaute Emoji-Unterstützung von Delta Chat deaktivierenIn-App Kamera verwendenDie In-App-Kamera hat in der Regel weniger Funktionen als die Systemkamera
+ System-Adressbuch lesen
+ Anbieten, Chats mit Kontakten aus dem Adressbuch zu erstellen. Bei einigen E-Mail-Anbieter muss zunächst eine Ende-zu-Ende-Verschlüsselung eingerichtet werden.App-ZugriffChatsIn-Chat-Klänge
@@ -672,10 +711,10 @@
BackupChats auf externem Speicher speichernEin Backup hilft bei einer Neuinstallation auf diesem oder einem anderen Gerät.\n\nDas Backup enthält alle Nachrichten, Kontakte und Chats sowie die Ende-zu-Ende Autocrypt-Einstellungen. Das Backup bitte an einem sicheren Ort aufbewahren oder es so bald wie möglich löschen.
-
+
%1$s exportieren
-
- Alle %1$d Accounts exportieren
+
+ Alle %1$d Profile exportierenBackup startenBackup nach \"%1$s\" erfolgreich.Schlüssel verwalten
@@ -693,6 +732,7 @@
Wenn Sie diese Option ändern, stellen Sie sicher, dass Ihr Server und Ihre anderen Geräte entsprechend konfiguriert sind\n\nAndernfalls funktionieren Dinge möglicherweise nicht wie erwartet.Gesendet-Ordner beobachtenKopie an mich selbst senden
+
Erforderlich bei Verwendung des E-Mail-Kontos auf mehreren Geräten.Autom. Verschieben in den DeltaChat-OrdnerKonversationen verschieben für einen übersichtlichen Posteingang
@@ -728,6 +768,8 @@
Profil bearbeitenIMAP IDLE deaktivierenIMAP IDLE ausschalten, selbst wenn vom Server unterstützt. Die Aktivierung dieser Option verzögert den Abruf von Nachrichten; nur zu Testzwecken aktivieren
+ Statistik an Delta Chat Entwickler senden
+
Suchergebnisse
@@ -744,6 +786,12 @@
Reaktionen
+
+ Reagieren
+
+ Sie reagierten mit %1$s auf \"%2$s\"
+
+ %1$s reagierte mit %2$s auf \"%3$s\"Alte Nachrichten löschen
@@ -770,7 +818,9 @@
Nach 1 Jahr
+
Autocrypt
+
Autocrypt ist eine neue und offene Spezifikation zur Ende-zu-Ende-Verschlüsselung von E-Mails.\n\nDas Ende-zu-Ende-Setup wird dabei automatisch eingerichtet und kann mit Autocrypt-Setup-Nachrichten zwischen Geräten übertragen werden.Autocrypt-Setup-Nachricht sendenEine \"Autocrypt-Setup-Nachricht\" überträgt das Ende-zu-Ende-Setup sicher auf ein anderes Autocrypt-kompatibles Gerät.\n\nDas Setup wird mit einem Setup-Code geschützt; dieser wird hier angezeigt und muss auf dem anderen Gerät eingetippt werden.
@@ -862,11 +912,13 @@
Es ist nun garantiert, dass alle Nachrichten in diesem Chat Ende-zu-Ende verschlüsselt sind.\n\nDurch die Ende-zu-Ende-Verschlüsselung bleiben die Nachrichten zwischen Ihnen und Ihren Chat-Partnern privat. Nicht einmal Ihr E-Mail-Anbieter kann sie lesen.%1$s hat eine Nachricht von einem anderen Gerät gesendet. Tippen, um mehr zu erfahren.Die Ende-zu-Ende-Verschlüsselung kann nicht mehr garantiert werden, wahrscheinlich weil %1$s Delta Chat neu installiert oder eine Nachricht von einem anderen Gerät gesendet hat.\n\n Sie können ihn persönlich treffen und seinen QR-Code erneut scannen, um die garantierte Ende-zu-Ende-Verschlüsselung wiederherzustellen.
+ ⚠️ %1$s verlangt eine Ende-zu-Ende-Verschlüsselung, die für diesen Chat noch nicht hergestellt wurde. Tippen, um mehr zu erfahren.
+ Um eine Ende-zu-Ende-Verschlüsselung herzustellen, können Sie Kontakte persönlich treffen und ihren QR-Code scannen.Mehr erfahrenSie haben den Chat \"Gespeicherte Nachrichten\" gelöscht.\n\nℹ️ Um die Funktion \"Gespeicherte Nachrichten\" erneut zu verwenden, erstellen Sie einfach einen Chat mit sich selbst.
- ⚠️ 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 zu 100%% 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 / Alte Nachrichten löschen\" zu aktivieren. Den aktuellen Speicherverbrauch können Sie jederzeit unter \"Einstellungen / Verbindung\" überprüfen.
+ ⚠️ 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.⚠️ 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.⚠️ 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.
@@ -879,6 +931,7 @@
QR-Code als Bild ladenQR-Code scannenKamera über den QR-Code halten
+ QR-Code zur Kamera führenQR-Code kann nicht dekodiert werden.Der Gruppe \"%1$s\" beitreten?Der gescannte Fingerabdruck stimmt nicht mit dem zuletzt für %1$s gesehenen Fingerabdruck überein.
@@ -905,19 +958,23 @@
Scannen für Chat mit %1$sKeine Verbindung zum Internet, Austausch des QR-Codes nicht möglich.
- E-Mail-Konto auf \"%1$s\" erzeugen und dort anmelden?
- E-Mail-Konto auf \"%1$s\" erzeugen und dort anmelden?\n\nIhr bisheriges E-Mail-Konto wird dabei nicht gelöscht. Sie können mit der Option \"E-Mail-Konto wechseln\" jederzeit zwischen den Konten hin- und herschalten.
- Anmeldung erfolgreich — Ihre E-Mail-Adresse ist %1$s\n\nWenn Sie mögen, können Sie nun einen Namen und ein Profilbild festlegen, der den ChatpartnerInnen angezeigt wird.
- Der eingescannte QR-Code kann nicht dazu verwendet werden, eine neues E-Mail-Konto zu erzeugen.
- Der gescannte QR-Code ist zum Erstellen eines neuen E-Mail-Kontos. Sie können den QR-Code nur bei einer neuen Delta Chat Installation verwenden.
-
+ Profil auf \"%1$s\" erzeugen und dort anmelden?
+ Profil auf \"%1$s\" erzeugen und dort anmelden?\n\nIhr bisheriges E-Mail-Konto wird dabei nicht gelöscht. Sie können mit der Option \"E-Mail-Konto wechseln\" jederzeit zwischen den Konten hin- und herschalten.
+ Legen Sie einen Namen fest, unter dem Ihre Kontakte sie kennen. Sie können auch ein Profilbild festlegen.
+ Bitte geben Sie einen Namen an.
+ Der eingescannte QR-Code kann nicht dazu verwendet werden, eine neues Profil zu erstellen.
+
+ Der gescannte QR-Code ist zum Erstellen eines neuen Profils. Sie können den QR-Code nur bei einer neuen Delta Chat Installation verwenden.
+
Bei \"%1$s\" anmelden?
-
- Bei \"%1$s\" anmelden?\n\nIhr bisheriges E-Mail-Konto wird dabei nicht gelöscht. Sie können mit der Option \"E-Mail-Konto wechseln\" jederzeit zwischen den Konten hin- und herschalten.
+
+ Bei \"%1$s\" anmelden?\n\nIhr bisheriges Profil wird dabei nicht gelöscht. Sie können mit der Option \"Profil wechseln\" jederzeit zwischen den Profilen hin- und herschalten.%1$s hat dich zu dieser Gruppe eingeladen.\n\nWarte auf die Antwort des Gerätes von %2$s...%1$s antwortet. Warte, zur Gruppe hinzugefügt zu werden...
+ Garantierte Ende-zu-Ende-Verschlüsselung wird aufgebaut, bitte warten...
+ Noch konnte keine garantierte Ende-zu-Ende-Verschlüsselung aufgebaut werden, aber Sie können bereits eine Nachricht senden.%1$s eingeführt.Kann keine garantierte Ende-zu-Ende-Verschlüsselung mit %1$s herstellen.
@@ -944,6 +1001,8 @@
Kein Name oder NachrichtBenachrichtigungen deaktiviertNeue Nachrichten
+
+ Sie haben neue Nachrichten%1$d Nachrichten in %2$d Chats
@@ -998,7 +1057,7 @@
VerschlüsselungsinformationenNachricht löschenMehr Informationen
- MMM D
+ D MMMEntfernenSpeichernName
@@ -1006,12 +1065,13 @@
Backup exportierenErfolgreich übertragenes Autocrypt-Setup!Dieses Login löschen? Alles wird gelöscht, einschließlich des Ende-zu-Ende-Setups, der Kontakte, Chats, Nachrichten und Medien. Diese Aktion ist endgültig und kann nicht rückgängig gemacht werden.
+
E-Mail: %1$s\nGröße: %2$s\nAccount-ID: %3$sgesendetempfangenLog-Ordner öffnenAktuelle Logdatei öffnen
- Benachrichtigungssymbol kann nicht deaktiviert werden, da Delta Chat mit der Option --minimized gestartet wurde.
+ Benachrichtigungssymbol kann nicht deaktiviert werden, da Delta Chat mit der Option --minimized gestartet wurde.Keine Rechtschreibvorschläge gefunden.Fenster anzeigenDie Unterstützung von SOCKS5 ist derzeit experimentell. Die Verwendung erfolgt auf eigene Gefahr. Wenn Sie eine Adresse in das E-Mail-Feld eingeben, wird eine DNS-Suche durchgeführt, die nicht durch SOCKS5 getunnelt wird.
@@ -1044,7 +1104,7 @@
Nach der Aufnahme zum Senden doppelt tippen. Um die Aufnahme zu verwerfen, mit zwei Fingern links-rechts hin- und herwischen.Doppelt Tippen für Verbindungsdetails.Keine Internetverbindung, Anmeldung fehlgeschlagen.
- E-Mail-Konto nicht konfiguriert.
+ Profil nicht konfiguriert.Audiodatei kann nicht abgespielt werden.Um Fotos oder Videos aufzunehmen oder den QR-Code-Scanner zu verwenden, öffnen Sie die Systemeinstellungen und aktivieren Sie \"Kamera\".
@@ -1077,18 +1137,23 @@
- Hintergrundbenachrichtigungen
- Verwendet eine Hintergrundverbindung zu Ihrem Server und erfordert das Ausschalten der Akku-Optimierung
+ Sofortige Benachrichtigungen
+ Push-Dienst verwenden
+ Zuverlässige Push-Benachrichtigungen für Chatmail-Server
+ Push-Dienst nicht mehr verwenden? Dies kann zu verzögerten Benachrichtigungen führen.
+ Hintergrundverbindung verwenden
+ Erfordert das Deaktivieren der Akku-Optimierungen, empfohlen, wenn kein Push-Dienst verfügbar ist
+ Hintergrundverbindung erzwingen
+ Verursacht eine permanente Benachrichtigung
+
Um die Verbindung zu Ihrem E-Mail-Server aufrechtzuerhalten und Nachrichten im Hintergrund zu empfangen, ignorieren Sie im nächsten Schritt die \"Akku-Optimierungen\".\n\nDelta Chat verbraucht nur minimale Ressourcen und achtet darauf, den Akku zu schonen.
- Zuverlässige Hintergrundverbindung
- Erfordert immer sichtbaren HinweisTippen Sie hier, um Nachrichten zu empfangen, während Delta Chat im Hintergrund läuft.Sie haben Delta Chat bereits erlaubt, Nachrichten im Hintergrund zu empfangen.\n\nFalls keine Nachrichten eingehen, überprüfen Sie bitte auch Ihre Systemeinstellungen.
-
- Was ist neu:\n\n💌 Eins-Zu-Eins-Chats garantieren jetzt eine Ende-zu-Ende-Verschlüsselung für Kontakte mit einem grünen Häkchen\n\n😌 Der Einfachheit halber markieren wir auch die Chats mit grünen Häkchen\n\n👥 Gruppen werden, wenn möglich, automatisch mit garantierter Ende-zu-Ende-Verschlüsselung erstellt\n\n🔄 Annehmen, Blockieren, Archivieren, Anhefteten und Stummschalten wird nun über alle Geräte hinweg synchronisiert
-
- Weitere Verbesserungen gibt es in den Bereichen Kamera, Sprachnachrichten, Backup aller Konten, Screenreader, Konto-Hintergrundbilder, Galerie alles auswählen, Webxdc-Querformat ... und mehr unter %1$s
+ Was gibt es Neues?\n\n❤️ Lang erwartet: Nachricht lang antippen, um mit einem Emoji zu reagieren\n\n🔗 Wenn Sie keine QR-Codes scannen können, teilen Sie sie als Einladungslinks\n\n🔵 Ungelesene Nachrichten aller Konten werden gezählt und im Titel angezeigt\n\n… und VIELE Bugfixes … %1$s\n\nPS: Mit \"Einstellungen / Erweitert / Statistik senden\", können Sie den Entwicklern helfen, die App besser für die reale Nutzung zu optimieren. Sie können die Daten vor dem Senden überprüfen
+ Was gibt es neues?\n\n❤️ Lang erwartet: Nachricht lang antippen, um mit einem Emoji zu reagieren\n\n🫸 PUSH-Mitteilungen, wenn von Providern wie https://nine.testrun.org unterstützt\n\n🔗 Wenn Sie keine QR-Codes scannen können, teilen Sie sie als Einladungslinks\n\n… und VIELE Bugfixes … %1$s
+ Neuer Startbildschirm 🐣 und mehr:\n\n⚡️ Melden Sie sich bei sicheren, schnellen Chatmail-Servern (https://delta.chat/chatmail) an oder nutzen Sie klassische E-Mail-Server\n\n👉 PUSH-Benachrichtigungen auf allen Chatmail-Server\n\n👤 Bringen Sie Ihre Freunde über „Kontakte anhängen“ sicher in Kontakt\n\n🥰 Mit beliebigen Emojis reagieren\n\n📌 Pinnen von Chats direkt aus der Suche ... und MEHR auf %1$s
+ Neuer Startbildschirm 🐣 und mehr:\n\n⚡️ Melden Sie sich bei sicheren, schnellen Chatmail-Servern (https://delta.chat/chatmail) an oder nutzen Sie klassische E-Mail-Server\n\n👉 PUSH-Benachrichtigungen auf allen Chatmail-Server\n\n👤 Empfangen Sie „Angehängte Kontakte“ von Ihren Freunden\n\n🥰 Direktere Auswahl von Reaktionen ... und MEHR auf %1$s
diff --git a/res/values-el/strings.xml b/src/main/res/values-el/strings.xml
similarity index 96%
rename from res/values-el/strings.xml
rename to src/main/res/values-el/strings.xml
index 05a5ca7ed..c871508a4 100644
--- a/res/values-el/strings.xml
+++ b/src/main/res/values-el/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatΕντάξει
@@ -249,7 +249,6 @@
Μηνύματα ΣυσκευήςΤοπικά ΜηνύματαΤα μηνύματα σε αυτήν τη συνομιλία δημιουργούνται στη συσκευή σας για την ενημέρωση σχετικά με ενημερώσεις και προβλήματα κατά τη χρήση της εφαρμογής
- Καλώς ήρθατε στο Delta Chat! – Το Delta Chat μοιάζει με άλλες δημοφιλείς εφαρμογές επικοινωνίας, αλλά δεν περιλαμβάνει κεντρικό έλεγχο, παρακολούθηση ή πώληση σε εσάς, φίλους, συναδέλφους ή την οικογένειά σας σε μεγάλους οργανισμούς.\n\nΤεχνικά, το Delta Chat είναι μια εφαρμογή ηλεκτρονικού ταχυδρομείου με σύγχρονη διεπαφή συνομιλίας. E-mail με νέο φόρεμα 👻\n\nΧρησιμοποιήστε το Delta Chat με οποιονδήποτε από τα δισεκατομμύρια άτομα: απλώς χρησιμοποιήστε τη διεύθυνση ηλεκτρονικού ταχυδρομείου τους. Οι παραλήπτες δεν χρειάζεται να εγκαταστήσουν το Delta Chat, να επισκεφτούν ιστότοπους ή να εγγραφούν οπουδήποτε - ωστόσο, φυσικά, αν θέλουν, μπορείτε να τους υποδείξετε στο 👉 https://get.delta.chatΕπεξεργασία ΕπαφήςΚαρφίτσωμα Συνομιλίας
@@ -354,11 +353,12 @@
%d νέα μηνύματα
- Στείλτε ένα μήνυμα σε %1$s, και μπορούν να το λάβουν ακόμη και χωρίς Delta Chat.
+ Στείλτε ένα μήνυμα σε %1$s.Οι άλλοι θα δουν αυτήν την ομάδα μόνο αφού στείλετε ένα πρώτο μήνυμα.Σύρε για ακύρωσηΠάτα και κράτα πατημένο για να ηχογραφήσεις ένα φωνητικό μήνυμα, άφησε το κουμπί για αποστολήΑδειάστε τα εισερχόμενα.\nΠατήστε \"+\" για να ξεκινήσετε μια νέα συνομιλία.
+
Μπορείτε να συνομιλήσετε με άλλους χρήστες του Delta Chat και με οποιαδήποτε διεύθυνση e-mail.Όλες οι συνομιλίες αρχειοθετήθηκαν.\nΠατήστε \"+\" για να ξεκινήσετε μια νέα συνομιλία.Μοιράσου με
@@ -376,7 +376,6 @@
Ξαναπροσπαθήστε να στείλετε μήνυμαΠρέπει να είστε σε αυτήν την ομάδα για να δημοσιεύσετε ένα μήνυμα. Για να συμμετέχετε, ζητήστε από ένα άλλο μέλος.
- Αυτή η συνομιλία περιέχει μηνύματα που δημιουργούνται τοπικά. Η γραφή είναι απενεργοποιημένη.Η αποστολή μηνυμάτων σε λίστες αλληλογραφίας δεν υποστηρίζεται ακόμηΔεν είναι δυνατή η εμφάνιση αυτού του τύπου αρχείου: %sΑποτυχία φόρτωσης συνημμένου
@@ -474,11 +473,11 @@
%1$s από %2$s χρησιμοποιείται
-
- Συνομιλία μέσω E-Mail.Σάρωση Κωδικού ΠρόσκλησηςΣύνδεση
+
Συνδεθείτε στον λογαριασμό σας E-Mail
+
Συνδεθείτε με έναν υπάρχοντα λογαριασμό e-mailΓια γνωστούς παρόχους email ρυθμίζονται αυτόματα πρόσθετες ρυθμίσεις. Μερικές φορές το IMAP πρέπει να είναι ενεργοποιημένο στις ρυθμίσεις Ιστού. Συμβουλευτείτε τον πάροχο e-mail ή τους φίλους σας για βοήθεια.Δεν υπάρχουν διακομιστές Delta Chat, τα δεδομένα σας παραμένουν στη συσκευή σας.
@@ -544,13 +543,12 @@
Εικόνα ΠροφίλΑποκλεισμένες ΕπαφέςΟι αποκλεισμένες επαφές θα εμφανίζονται εδώ.
+
Κωδικός και ΛογαριασμόςΗ εικόνα του προφίλ, το όνομα και η υπογραφή σας θα αποστέλλονται μαζί με τα μηνύματά σας κατά την επικοινωνία με άλλους χρήστες.Το όνομά σουΥπογραφή
-
- Στάλθηκε με το Delta Chat Messenger μου: https://delta.chatΤο Enter στέλνειΤα μηνύματα θα στέλνονται με το πάτημα του EnterΠοιότητα Εξερχόμενων Μέσων
@@ -616,6 +614,7 @@
Εάν αλλάξετε αυτήν την επιλογή, βεβαιωθείτε ότι ο διακομιστής σας και οι άλλοι πελάτες σας έχουν διαμορφωθεί ανάλογα.\n\nΔιαφορετικά, τα πράγματα ενδέχεται να μην λειτουργούν καθόλου.Παρακολουθήστε τον Απεσταλμένο ΦάκελοΑποστολή Αντιγράφου στον Εαυτό
+
Απαιτείται κατά τη χρήση αυτού του λογαριασμού σε πολλές συσκευές.Μετακίνηση αυτόματα στον φάκελο DeltaChatΟι συνομιλίες συνομιλίας μετακινούνται για να αποφευχθεί η ακαταστασία των Εισερχομένων
@@ -687,7 +686,9 @@
Μετά από 1 χρόνο
+
Αυτόματη κρυπτογράφηση
+
Η αυτόματη κρυπτογράφηση είναι μια νέα και ανοιχτή προδιαγραφή για αυτόματη κρυπτογράφηση ηλεκτρονικού ταχυδρομείου από άκρο σε άκρο.\n\nΗ ρύθμιση από άκρο σε άκρο δημιουργείται αυτόματα ανάλογα με τις ανάγκες και μπορείτε να τη μεταφέρετε μεταξύ συσκευών με τα Μηνύματα ρύθμισης αυτόματης κρυπτογράφησης.Αποστολή μηνύματος ρύθμισης αυτόματης κρυπτογράφησηςΈνα μήνυμα ρύθμισης αυτόματης κρυπτογράφησης κοινοποιεί με ασφάλεια τη ρύθμισή σας από άκρο σε άκρο με άλλες εφαρμογές συμβατές με την Αυτόματη κρυπτογράφηση.\n\nΗ ρύθμιση θα κρυπτογραφηθεί από έναν κωδικό ρύθμισης που εμφανίζεται εδώ και θα πρέπει να πληκτρολογηθεί στην άλλη συσκευή.
@@ -813,12 +814,12 @@
Δεν υπάρχει σύνδεση στο διαδίκτυο, δεν είναι δυνατή η ρύθμιση κωδικού QR.Δημιουργήστε νέα διεύθυνση e-mail στο \"%1$s\" και συνδεθείτε εκεί;Δημιουργήστε νέα διεύθυνση e-mail στο \"%1$s\" και συνδεθείτε εκεί;\n\nΟ υπάρχων λογαριασμός σας δεν θα διαγραφεί. Χρησιμοποιήστε τη λειτουργία \"Εναλλαγή λογαριασμού\" για εναλλαγή μεταξύ των λογαριασμών σας.
- Επιτυχής σύνδεση—η διεύθυνση e-mail σας είναι %1$s\n\nΑν θέλετε, μπορείτε τώρα να εισαγάγετε ένα όνομα και μια εικόνα προφίλ που θα εμφανίζονται στα άτομα στα οποία γράφετε.Ο σαρωμένος κωδικός QR δεν μπορεί να χρησιμοποιηθεί για τη δημιουργία νέου λογαριασμού.
+
Ο σαρωμένος κωδικός QR προορίζεται για τη δημιουργία νέου λογαριασμού. Μπορείτε να σαρώσετε τον κωδικό QR όταν ρυθμίζετε μια νέα εγκατάσταση Delta Chat.
-
+
Σύνδεση στο \"%1$s\";
-
+
Σύνδεση στο \"%1$s\";\n\nΟ υπάρχων λογαριασμός σας δεν θα διαγραφεί. Χρησιμοποιήστε τη λειτουργία \"Εναλλαγή λογαριασμού\" για εναλλαγή μεταξύ των λογαριασμών σας.%1$s σας προσκάλεσε να συμμετάσχετε σε αυτήν την ομάδα.\n\nΑναμονή για απάντηση από τη συσκευή του %2$s…
@@ -901,12 +902,13 @@
Εξαγωγή Αντιγράφων ΑσφαλείαςΗ ρύθμιση αυτόματης κρυπτογράφησης μεταφέρθηκε.Διαγραφή αυτής της σύνδεσης; Τα πάντα θα διαγραφούν, συμπεριλαμβανομένων των ρυθμίσεων από άκρο σε άκρο, επαφών, συνομιλιών, μηνυμάτων και πολυμέσων. Αυτή η πράξη δε μπορεί να αναιρεθεί.
+
E-Mail: %1$s\nΜέγεθος: %2$s\n Αναγνωριστικό Λογαριασμού: %3$sΣτάλθηκεΠαραλήφθηκεΆνοιγμα του φακέλου καταγραφήςΆνοιγμα του τρέχον αρχείου καταγραφής
- Το εικονίδιο του δίσκου δεν μπορεί να απενεργοποιηθεί καθώς το Delta Chat ξεκίνησε με την επιλογή --ελαχιστοποιημένη.
+ Το εικονίδιο του δίσκου δεν μπορεί να απενεργοποιηθεί καθώς το Delta Chat ξεκίνησε με την επιλογή --ελαχιστοποιημένη.Δεν βρέθηκαν προτάσεις ορθογραφίας.Εμφάνιση παραθύρουΗ SOCKS5 υποστήριξη είναι αυτή τη στιγμή πειραματική. Παρακαλούμε χρησιμοποιήστε με δική σας ευθύνη. Εάν πληκτρολογήσετε μια διεύθυνση στο πεδίο ηλεκτρονικού ταχυδρομείου, θα υπάρξει αναζήτηση DNS που δεν θα περάσει στο SOCKS5.
@@ -971,15 +973,9 @@
Το Delta Chat θέλει να αποθηκεύσει εικόνες στη συλλογή φωτογραφιών σας.
-
- Ειδοποιήσεις Παρασκηνίου
- Χρησιμοποιεί μια σύνδεση στο παρασκήνιο με τον διακομιστή σας και απαιτεί αγνοημένες βελτιστοποιήσεις μπαταρίας.Για να διατηρήσετε τη σύνδεση με τον διακομιστή e-mail σας και να λαμβάνετε μηνύματα στο παρασκήνιο, αγνοήστε τις βελτιστοποιήσεις μπαταρίας στο επόμενο βήμα.\n\nΤο Delta Chat χρησιμοποιεί λίγους πόρους και φροντίζει να μην εξαντλήσει την μπαταρία σας.
- Αξιόπιστη σύνδεση στο παρασκήνιο
- Απαιτεί μία μόνιμη ειδοποίησηΠατήστε εδώ για να λαμβάνετε μηνύματα ενώ το Delta Chat είναι στο παρασκήνιο.Επιτρέψατε ήδη στο Delta Chat να λαμβάνει μηνύματα στο παρασκήνιο.\n\nΕάν τα μηνύματα εξακολουθούν να μην φτάνουν στο παρασκήνιο, ελέγξτε τις ρυθμίσεις του συστήματός σας.
-
diff --git a/res/values-eo/strings.xml b/src/main/res/values-eo/strings.xml
similarity index 96%
rename from res/values-eo/strings.xml
rename to src/main/res/values-eo/strings.xml
index ec4d83e32..db7f2b5be 100644
--- a/res/values-eo/strings.xml
+++ b/src/main/res/values-eo/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatBone
@@ -259,7 +259,6 @@
Aparataj mesaĝojLoke generitaj mesaĝojMesaĝoj en tiu ĉi babilo estas surloke generataj de via Delta Chat apo. Ĝiaj kreintoj uzas ilin por informi pri apaj ĝisdatigoj kaj problemoj dum uzado.
- Bonvenon al Delta Chat! – Delta Chat aspektas kvazaŭ aliaj popularaj mesaĝiloj, sed al ĝi mankas centra regado, sekvado de kaj perfido al vi, viaj amikoj, kolegoj kaj familianoj je la servo de grandaj organizoj.\n\nVere, Delta Chat estas retpoŝta aplikaĵo kun moderna babila interfaco. Alivorte, retpoŝto kun novaj vestaĵoj 👻\n\nUzu Delta Chat-on kun iu ajn el miliardoj da homoj: simple uzu la retadreson. Ricevantoj ne devas instali Delta Chat-on, viziti retejojn aŭ registriĝi ie ajn - sed, kompreneble, se ili volas, vi povas atentigi ilin al 👉 https://get.delta.chatRedakti kontaktonAlpingli babilon
@@ -324,6 +323,7 @@
Gliti por nuligiTuŝadi por registri voĉan mesaĝon, maltuŝadi por sendi
+
Vi povas babili kun aliaj uzantoj de Delta Chat kaj kun iu ajn retadreso.Ĉiuj babiloj enarĥivigitaj.\nPremu \"+\" por komenci novan babilon.Kunhavigi kun
@@ -360,6 +360,7 @@
Aŭdvida antaŭrigardoSendi mesaĝonEnsaluti
+
Ensaluti al via serviloRicevujoIMAP salutnomo
@@ -393,10 +394,9 @@
ProfilbildoBlokitaj kontaktoj
+
Pasvorto kaj kontoVia nomo
-
- Sendita per mia Delta Chat mesaĝilo: https://delta.chatLa Eniga klavo kaŭzas sendonPremado de la Eniga klavo sendos mesaĝojnVibrado
diff --git a/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
similarity index 89%
rename from res/values-es/strings.xml
rename to src/main/res/values-es/strings.xml
index 30945cf0e..c9f4b7225 100644
--- a/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -1,5 +1,5 @@
-
+DeltaChat LiteOK
@@ -207,6 +207,8 @@
Nuevo contacto
+ Añadir contacto manualmente
+ Los contactos añadidos manualmente se pueden utilizar para enviar mensajes a contactos que usan clientes de correo electrónico clásico y no se garantiza que estén cifrados de extremo a extremo.Nuevo chatNuevo grupoClonar chat
@@ -286,7 +288,7 @@
Mensajes del dispositivoMensajes generados localmenteLos mensajes en este chat son generados localmente por tu aplicación Delta Chat. Los creadores lo usan para informar sobre actualizaciones y problemas durante el uso de la aplicación.
- ¡Bienvenido a Delta Chat! – Delta Chat parece como otras aplicaciones de mensajería populares, pero sin control centralizado, seguimiento ni venta de tus datos, o los de tus amigos, colegas o familiares a grandes organizaciones.\n\nTécnicamente, Delta Chat es una aplicación de correo electrónico con una interfaz de chat moderna. Correo electrónico en un nuevo vestido si quieres 👻\n\nUsa Delta Chat con cualquiera de miles de millones de personas: solo necesitas su dirección de correo electrónico. Los destinatarios no necesitan instalar Delta Chat, visitar sitios web o registrarse en ningún lugar - sin embargo, por supuesto, si lo desean, puedes indicarles 👉 https://get.delta.chat
+ ¡Ponte en contacto!\n\n🙌 Toca \"Código QR\" en la pantalla principal de ambos dispositivos. Elija \"Escanear código QR\" en un dispositivo y apúntelo al otro\n\n🌍 Si no está en la misma habitación, escanee mediante videollamada o comparta un enlace de invitación desde \"Escanear código QR\"\n\nEntonces: disfrute de su experiencia de mensajería a través de la red descentralizada más grande que jamás haya existido: el correo electrónico. Y a diferencia de otras aplicaciones populares, sin control central ni seguimiento ni venta de usted, amigos, colegas o familiares a grandes organizaciones.Editar contactoAnclar chat
@@ -400,12 +402,13 @@
%d nuevos mensajes
- Envíe un mensaje. Está bien si %1$s no usa Delta Chat.
+ Envíe un mensaje a %1$s.En una difusión, los destinatarios recibirán mensajes en un chat de solo lectura contigo.Los demás sólo verán este grupo después de que hayas enviado un primer mensaje.Deslice para cancelarMantenga pulsado para grabar un mensaje de voz, suelte para enviarBandeja de entrada vacía.\nPresiona \"+\" para iniciar un nuevo chat.
+
Puedes chatear con otros usuarios de Delta Chat y con cualquier dirección de correo electrónico.Todos los chats archivados.\nPresiona \"+\" para iniciar un nuevo chat.Compartir con
@@ -423,7 +426,6 @@
Reintentar enviar mensajeNo puedes escribir porque no estás en este grupo. Para unirte, pregúntale a otro miembro.
- Este chat contiene mensajes generados localmente. Por eso no puedes escribir ningún mensaje.Todavía no se admite el envío de mensajes en listas de correoNo se puede mostrar este tipo de archivo: %sFallo al cargar el adjunto
@@ -443,7 +445,6 @@
Enviar \"%1$s\" a…Enviar mensaje a…
-
Mostrar ubicaciones en el marco de tiempoMostrar trazas
@@ -498,6 +499,10 @@
Aplicaciones privadas compartidas en este chat se mostrarán aquíLa multimedia compartida en cualquier chat aparecerá aquíVista previa de multimedia
+
+ Cuadrícula de relación de aspecto
+
+ Cuadrícula cuadradaEnviar mensaje%1$s cambió su dirección de %2$s a %3$s
@@ -511,6 +516,7 @@
Asegúrate de que ambos dispositivos estén conectados en la misma red o Wi-FiEsto crea un código QR que el otro dispositivo puede escanear para copiar la cuenta.Instala Delta Chat en tu otro dispositivo (https://get.delta.chat)
+
Inicia Delta Chat, toca \"Añadir desde otro dispositivo\" y escanea el código mostrado aquíEscanea para configurar otro dispositivo para %1$s
@@ -557,10 +563,40 @@
- Charla por correo electrónico.
+
+ Crear perfil nuevo
+
+ Ya tengo un perfil
+
+ Iniciar sesión con correo electrónico
+
+ Tu perfil
+
+ Leer la política de privacidad
+
+ Política de privacidad para %1$s
+
+ Acerca de los perfiles en %1$s
+
+ Aceptar y crear perfil
+
+ Usar otro servidor
+ Listar servidores Chatmail
+
+ Crear un perfil para unirse al grupo \"%1$s\".
+
+ Crear un perfil para chatear con %1$s.
+
+ ¿Desea crear un nuevo perfil y comenzar a chatear con %1$s?
+
+ ¿Desea crear un nuevo perfil y unirse al grupo \"%1$s\"?
+
+ Chat seguro y descentralizadoEscanear código de invitaciónIniciar sesión
+
Inicie sesión en su servidor
+
Iniciar sesión con una cuenta de correo existentePara los proveedores de correo conocidos, la configuración es realizada automáticamente. A veces, IMAP debe estar habilitado en la interfaz web. Consulte a su proveedor de correo o amigos para obtener ayuda.No hay servidores de Delta Chat, tus datos permanecen en tu dispositivo!
@@ -584,7 +620,7 @@
Usuario SOCKS5Contraseña SOCKS5¿Continuar con la configuración simplificada?
- La dirección de correo electrónico introducida admite una configuración simplificada (OAuth2).\n\nEn el próximo paso, permita que Delta Chat actúe como su aplicación de chat con correo electrónico.\n\nNo hay servidores de Delta Chat, tus datos permanecen en tu dispositivo!
+ La dirección de correo electrónico introducida admite una configuración simplificada (OAuth 2.0).\n\nEn el próximo paso, permita que Delta Chat actúe como su aplicación de chat por correo electrónico.\n\nNo hay servidores de Delta Chat, tus datos permanecen en tu dispositivo.Comprobaciones de certificadosPor favor, introduzca una dirección de correo válidaPor favor, introduzca un servidor / dirección IP válido
@@ -626,13 +662,12 @@
Foto de perfilContactos bloqueadosSi bloqueas contactos, se mostrarán aquí.
+
Contraseña y cuentaLa imagen y el nombre de su perfil se mostrarán junto con sus mensajes cuando se comunique con otros usuarios. La información ya enviada no puede ser borrada o eliminada.Tu nombreTexto de firma
-
- Enviado con mi aplicación de mensajería Delta Chat: https://delta.chatTecla Intro envíaLa tecla Intro enviará tu mensajeCalidad de multimedia saliente
@@ -666,11 +701,15 @@
Solicitar al teclado deshabilitar el aprendizaje personalizadoNotificaciones de lecturaSi las notificaciones de lectura están desactivadas, no podrás comprobar cuándo se han leído tus mensajes.
+ Servidor
+ CifradoAdministrar clavesUsar emoji del sistemaDeshabilitar el soporte de emoji integrado de Delta ChatUsar cámara internaLa cámara interna suele tener menos funcionalidades que la cámara del sistema
+ Leer la libreta de direcciones del sistema
+ Ofrecer crear chats con contactos de la libreta de direcciones. Algunos proveedores necesitan primero una configuración de cifrado de extremo a extremo.Acceso a la aplicaciónChatsSonidos en el chat
@@ -683,9 +722,9 @@
Copia de respaldoHacer copias de respaldo de chats en almacenamiento externoUna copia de respaldo lo ayuda a configurar una nueva instalación en este u otro dispositivo.\n\nLa copia de respaldo contendrá todos los mensajes, contactos y chats, y su configuración Autocrypt de extremo a extremo. Guarde el archivo de respaldo en un lugar seguro o elimínelo lo antes posible.
-
+
Exportar %1$s
-
+
Exportar todo (%1$d cuentas)Iniciar copia de respaldoCopia de respaldo escrita correctamente en %1$s
@@ -704,6 +743,7 @@
Si deshabilita esta opción, asegúrese de que su servidor y sus otros clientes estén configurados en consecuencia.\n\nDe lo contrario, las cosas pueden no funcionar en absoluto.Monitorear carpeta EnviadosEnviar autocopia
+
Necesario cuando utilizando esta cuenta en varios dispositivos.Mover automáticamente a la carpeta DeltaChatLas conversaciones son movidas para evitar saturar la Bandeja de entrada
@@ -739,6 +779,8 @@
Editar perfilDeshabilitar IMAP IDLENo utilizar la extensión IMAP IDLE aunque el servidor la admita. Habilitar esta opción retrasará el recibo de mensajes, actívala solo para pruebas.
+ Enviar estadísticas a los desarrolladores de Delta Chat
+
Resultados de la búsqueda
@@ -755,6 +797,12 @@
Reacciones
+
+ Reaccionar
+
+ Reaccionaste %1$s a \"%2$s\"
+
+ %1$s reaccionó %2$s a \"%3$s\"Borrar mensajes antiguos
@@ -781,7 +829,9 @@
Luego de 1 año
+
Autocrypt
+
Autocrypt es una nueva especificación abierta para cifrado automático de correo electrónico de extremo a extremo. Su configuración de extremo a extremo es creada automáticamente cuando se necesita y puede transferirla entre dispositivos con los Mensajes de Configuración de Autocrypt.Enviar Mensaje de Configuración de AutocryptUn \"Mensaje de Configuración de Autocrypt\" comparte de forma segura su configuración de extremo a extremo con otras aplicaciones compatibles con Autocrypt.\n\nLa configuración se cifrará mediante un código de configuración que se muestra aquí y debe escribirse en el otro dispositivo.
@@ -873,6 +923,8 @@
Ahora se garantiza que todos los mensajes en este chat están cifrados de extremo a extremo.\n\nEl cifrado de extremo a extremo mantiene los mensajes privados entre tú y tus compañeros de chat. Ni siquiera tu proveedor de correo electrónico puede leerlos.%1$s envió un mensaje desde otro dispositivo. Toca para obtener más información.El cifrado de extremo a extremo ya no se puede garantizar, probablemente porque %1$s reinstaló Delta Chat o envió un mensaje desde otro dispositivo.\n\nPueden encontrarse en persona y escanear su código QR nuevamente para restablecer el cifrado de extremo a extremo garantizado.
+ ⚠️ %1$s requiere cifrado de extremo a extremo que aún no está configurado para este chat. Toca para obtener más información.
+ Para establecer un cifrado de extremo a extremo, puede reunirse con los contactos en persona y escanear su código QR.Aprender másEliminaste los chats de los \"Mensajes guardados\". \n\nℹ️ Para volver a usar los\"Mensajes guardados\", debes crear un chat contigo mismo.
@@ -890,6 +942,7 @@
Cargar código QR como imagenEscanear código QRColoque su cámara sobre el código QR
+ Mueve el código QR hacia la cámaraEl código QR no pudo ser decodificado¿Quieres unirte al grupo \"%1$s\"?La huella digital escaneada no coincide con la última huella vista para \"%1$s\".
@@ -918,17 +971,21 @@
No hay conexión a Internet, no se puede configurar con código QR.¿Crear una nueva dirección de correo en \"%1$s\" e ingresar allí?¿Crear una nueva dirección de correo en \"%1$s\" e ingresar ahí?\n\nTu cuenta existente no será eliminada. Usar el ítem \"Cambiar cuenta\" para cambiar entre tus cuentas.
- Ingreso satisfactorio—tu dirección de email es %1$s\n\nSi lo deseas, puedes ingresar un nombre y una imagen de perfil, que será mostrada a los usuarios que escribas.
+ Establece un nombre que tus contactos puedan reconocer. También puedes establecer una foto de perfil.
+ Por favor, introduce un nombre.El código QR escaneado no puede ser usado para configurar una nueva cuenta.
+
El código QR escaneado esta configurando la nueva cuenta. Puedes escanear el código QR cuando estés preparando una nueva instalación de Delta Chat
-
+
¿Iniciar sesión en \"%1$s\"?
-
+
¿Iniciar sesión en \"%1$s\"?\n\nTu cuenta existente no será eliminada. Usa la opción \"Cambiar cuenta\" para cambiar entre tus cuentas.%1$s te invitó a unirte a este grupo.\n\nEsperando que el dispositivo de %2$s responda…%1$s respondió, esperando ser agregado al grupo…
+ Estableciendo cifrado de extremo a extremo garantizado, por favor, espere...
+ No se pudo aún establecer el cifrado de extremo a extremo garantizado, pero ya puede enviar mensajes.%1$s verificado.No se pudo verificar %1$s.
@@ -955,6 +1012,8 @@
Sin nombre ni mensajeNotificaciones deshabilitadasNuevos mensajes
+
+ Tienes mensajes nuevos%1$d mensajes en %2$d chats
@@ -1017,12 +1076,13 @@
Exportar copia de respaldoConfiguración de Autocrypt transferida exitosamente!¿Borrar esta sesión? Todo se eliminará, incluida la configuración de extremo a extremo, contactos, chats, mensajes y multimedia. Esta acción es definitiva y no puede ser revertida.
+
Correo: %1$s\nTamaño: %2$s\nID de la cuenta: %3$senviadorecibidoAbrir Carpeta de LogsAbrir Archivo de Logs Actual
- El icono de la bandeja no se puede desactivar ya que Delta Chat se inició con la opción --minimized.
+ El icono de la bandeja no se puede desactivar ya que Delta Chat se inició con la opción --minimized.No se encontraron sugerencias ortográficas.Mostrar ventanaLa compatibilidad con SOCKS5 es experimental actualmente. Por favor, use bajo su propio riesgo. Si escribe una dirección en el campo de correo electrónico, habrá una búsqueda de DNS que no se canalizará a través de SOCKS5.
@@ -1088,18 +1148,22 @@
- Notificaciones en segundo plano
- Usar la conexión de segundo plano a tu servidor y requerir ignorar las optimizaciones de batería
+ Entrega inmediata
+ Usar servicio Push
+ Notificaciones Push estables para servidores de chatmail
+ ¿Desactivar el uso del servicio Push?\n\nEsto puede provocar retrasos en las notificaciones.
+ Usar conexión en segundo plano
+ Requiere desactivar las optimizaciones de batería, utilícelas si el servicio Push no está disponible
+ Forzar conexión en segundo plano
+ Usando una notificación permanente
+
Para mantener la conexión de tu servidor email y recibir mensajes en segundo plano, ignorar las optimizaciones en el próximo paso.\n\nDelta Chat usa pocos recursos y cuida no drenar tu batería
- Conexión en segundo plano confiable
- Requiere notificación permanenteToque aquí para recibir mensajes mientras Delta Chat está en segundo plano.Ya has permitido que Delta Chat reciba mensajes en segundo plano.\n\nSi los mensajes aún no llegan en segundo plano, compruebe también la configuración de su sistema.
-
- Novedades:\n\n💌 Los chats privados garantizan el cifrado de extremo a extremo para los contactos introducidos via QR\n\n😌 Para la simplicidad de todos, marcamos estos contactos y chats con marcas de verificación verdes\n\n👥 Los grupos se crean automáticamente con cifrado de extremo a extremo garantizado si es posible\n\n🔄 Aceptar/bloquear, archivar, fijar y silenciar se sincronizan en todos tus dispositivos
-
- Esté atento a más mejoras en la cámara, mensajes de voz, copia de respaldo, lector de pantalla, fondos de pantalla por cuenta, seleccionar todo en la galería, webxdc en modo horizontal… o léalos en %1$s
-
+ Novedades:\n\n❤️ ¡Sí! Esto era muy esperado: toque prolongadamente un mensaje para reaccionar\n\n🔗 Si no puede escanear códigos QR, compártalos como enlaces de invitación\n\n🔵 Los mensajes no leídos de todas las cuentas se cuentan y se muestran en el título ahora\n\n… y TONELADAS de correcciones de errores… %1$s\n\nAyuda a mejorar la aplicación: usa \"Configuración/Avanzado/Enviar estadísticas\" para ayudar a los desarrolladores a optimizar mejor el uso en el mundo real. Puedes revisar los datos antes de enviar
+ Novedades:\n\n❤️ ¡Sí! Esto era muy esperado: toque prolongadamente un mensaje para reaccionar\n\n🫸 Notificaciones PUSH para proveedores que lo soporten, como https://nine.testrun.org\n\n🔗 Si no puede escanear códigos QR, compártalos como enlaces de invitación\n\n… y TONELADAS de correcciones de errores… %1$s
+ 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
+
diff --git a/res/values-eu/strings.xml b/src/main/res/values-eu/strings.xml
similarity index 96%
rename from res/values-eu/strings.xml
rename to src/main/res/values-eu/strings.xml
index 8fc8aea6f..99d7a15fb 100644
--- a/res/values-eu/strings.xml
+++ b/src/main/res/values-eu/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatAdos
@@ -166,7 +166,6 @@
Gailuaren mezuakLokalki sortutako mezuakTxat honetako mezuak zure Delta Chat aplikazioak sortu ditu lokalki. Egileek aplikazioaren eguneraketei buruz eta erabileran arazoei buruz informatzeko erabiltzen dute.
- Ongi etorri Delta Chat-era! Delta Chat beste bat bateko mezularitza aplikazioen itxura du, baina ez du kontrol zentralizaturik, ez dizu jarraitzen edo saltzen, ez zu ez zure lagunak, lankideak edo familia elkarte handi bati.\n\nTeknikoki, Delta Chat e-mail aplikazio bat da interfaze berri batekin. E-maila jantzi berri batekin esan genezake 👻\n\nErabili Delta Chat milaka miloika pertsonekin, erabili bere e-mail helbidea eta kitto. Hartzaileek ez dute zertan Delta Chat instalatu behar, ez webguneak bisitatu edo izena eman inon. Hala ere, jakina, instalatu nahi badute hona bideratu ditzakezu 👉 https://get.delta.chatEditatu kontaktuaFinkatu txata
@@ -238,6 +237,7 @@
Irristatu ezeztatzekoSakatu eta mantendu ahots-mezu bat grabatzeko, askatu bidaltzeko.Sarrera-ontzi hutsa.\nSakatu \"+\" txat berria hasteko.
+
Beste Delta Chat erabiltzaileekin txateatu dezakezu, edo edozein e-mail helbiderekinTxat guztiak artxibatuta.\nSakatu \"+\" txat berri bat hasteko.Partekatu honekin
@@ -279,7 +279,9 @@
Multimediaren aurrebistaBidali mezuaHasi saioa
+
Hasi saioa zure zerbitzarian
+
Badagoen e-mail kontu batekin saioa hastenE-mail hornitzaile ezagunentzat ezarpen gehigarriak automatikoki sortzen dira. Batzuetan IMAP gaitu behar da web interfazearen bidez. Kontsultatu zure e-mail hornitzaileari edo eskatu laguntza lagunei.Ez dago Delta Chat zerbitzaririk, zure datuak zure gailuan mantentzen dira!
@@ -326,13 +328,12 @@
Zure profileko informazioaProfileko argazkiaBlokeatutako kontaktuak
+
Pasahitza eta kontuaZure profileko argazkia eta izena zure mezuekin batera erakutsiko dira beste erabiltzaileekin komunikatzen zarenean. Informazioa behin bidalita ezin da ezabatu edo kendu.Zure izenaSinaduraren testua
-
- Delta Chat mezulariarekin bidalita: https://delta.chatEnter teklarekin bidaliEnter tekla sakatzeak mezua bidaliko duBidalitako multimediaren kalitatea
@@ -421,7 +422,9 @@
Urtebete eta gero
+
Autocrypt
+
Autocrypt e-maila muturretik muturrera zifratzeko espezifikazio berri eta ireki bat da.\n\nZure muturretik muturrerako ezarpena automatikoki sortzend a behar denean eta gailutik gailura eraman dezakezu Autocrypt ezarpen mezuekin.Bidali Autocrypt ezarpen mezua\"Autocrypt ezarpen mezua\" batek modu seguruan partekatzen du zure muturretik muturrerako ezarpena Autocryptekin bateragarriak diren beste aplikazioekin. Ezarpena hemen bistaratutako ezarpen kodearekin zifratuko da, eta beste gailuan kode hau sartu beharko da.
@@ -481,8 +484,8 @@
Eskaneatu hau %1$s erabiltzailearen kontaktua ezartzekoEz dago Internet konexiorik, ezin da QR kode bidezko ezarpena aplikatuSortu kontu berria \"%1$s\" zerbitzarian eta saioa han hasi?
- Saioa ongi hasi duzu, zure e-mail helbidea %1$s da\n\n Nahiez gero, izen eta abatar bat jarri ditzakezu, zure harremanek ikusiko dituztenakEskaneatutako QR kodea ezin da kontu berri bat ezartzeko erabili.
+
Eskaneatutako QR kodea kontu berri bat ezartzeko da. QR kodea Delta Chat instalazio berri batean eskaneatu dezakezu.%1$s egiaztatuta.Ezin da %1$s egiaztatu
@@ -558,10 +561,7 @@
Mikrofonoa atzitzeko baimena emateak audioa grabatzea ahalbidetzen dizu.Argazkien bilduma atzitzeko baimena emateak bertatik argazkiak igotzea ahalbidetzen dizu.
- Bigarren planoko konexio egonkorra
- Etengabeko jakinarazpena eskatzen duSakatu hemen mezuak jasotzeko Delta Chat bigarren planoan dagoenean.Dagoeneko baimendu diozu Delta Chat aplikazioari bigarren planoan mezuak jasotzea,\n\nOraindik ere mezuak heltzen ez badira, egiaztatu ere zure sistemaren ezarpenak.
-
diff --git a/res/values-fa/strings.xml b/src/main/res/values-fa/strings.xml
similarity index 90%
rename from res/values-fa/strings.xml
rename to src/main/res/values-fa/strings.xml
index e83b1a138..f50e64bf8 100644
--- a/res/values-fa/strings.xml
+++ b/src/main/res/values-fa/strings.xml
@@ -1,10 +1,12 @@
-
+دلتاچتتأییدلغو
- پاک کردن جستوجو
+
+ یا
+ پاک کردن جستوجوبلهخیرانتخاب
@@ -32,7 +34,10 @@
احراز هویت شدهبستن
+ بستن پنجرههدایت
+ ایجاد
+ بعداارسال مجدد
@@ -143,6 +148,8 @@
Gifاستیکر
+ افزودن به مجموعه استیکر
+ بازکردن پوشه استیکرتصاویرصداپیام صوتی
@@ -191,6 +198,7 @@
مخاطب جدید
+ اضافه کردن مخاطب به صورت دستیگپ جدیدگروه جدید
@@ -222,6 +230,7 @@
رونوشت گرفتن از تصویرکپی کردن رایانامهچسباندن از حافظه
+ نمی توان لینک \"%1$d\" را در مرورگر باز کرد. می خواهید در عوض لینک را کپی کنید؟هدایت پیامپاسخ به پیامساکت کردن اعلان
@@ -231,6 +240,7 @@
همه رسانههانمایش در گپ
+ نمایش برنامه در گفتگواشتراکمسدود کردن
@@ -242,6 +252,7 @@
رفتن به پایینرفن تا بالاکمک
+ Webxdc چیست؟خط مشی رازداریانتخاب همهانتخاب چت
@@ -263,8 +274,6 @@
پیامهای دستگاهپیامهای داخلیپیامها در این گپ به صورت داخلی و توسط نرمافزار دلتاچت تولید شدهاند. سازندهها از این محل برای اعلان به روزرسانیها و مشکلات پیش آمده حین کار استفاده میکنند.
- به دلتاچت خوش آمدید! - دلتاچت حال و هوای دیگر پیامرسانها را دارد ولی هیچ کنترل مرکزیای در آن وجود ندارد و اطلاعات شما، دوستان و خانوادهٔ شما به سازمانهای بزرگ فروخته نمیشود. \n\nدر واقع دلتاچت یک نرمافزار رایانامه با یک رابط گرافیکی نوین است. در واقع رایانامه در یک لباس جدید. \n\n میتوانید دلتاچت را برای ارتباط با هر فرد از میلیاردها نفر استفاده کنید: فقط کافی است از نشانی رایانامهٔ آنها استفاده کنید. مخاطب نیاز نیست نرمافزار دلتاچت را نصب کند، وارد وبگاه خاصی شود یا جایی نامنویسی کند؛ ولی اگر دوست داشتید میتوانید آنها را به اینجا راهنمایی کنید
- https://get.delta.chat 👉ویرایش مخاطبسنجاق کردن گپ
@@ -279,6 +288,8 @@
کد منبعافزودن به صفحه خانه
+ حمایت مالی
+
ساکت کردن به مدت۱ ساعتساکت کردن به مدت ۲ ساعتساکت کردن به مدت ۱ روز
@@ -306,7 +317,7 @@
برای باز کردن ضربه بزنید. جلسه تماس تصویریجلسه تماس تصویری شما
- مثالها:
+ مثال:
https://meet.jit.si/$ROOM
یا
basicwebrtc:https://your-server
@@ -376,7 +387,8 @@ https://meet.jit.si/$ROOM
نوشتن اولین پیام به دیگران امکان میدهد در این گروه پاسخ دهند. \n\n• مشکلی نیست اگر همه اعضا از دلتاچت استفاده نکنند\n\n• دریافت اولین پیام ممکن است به زمان بیشتری نیاز داشته باشد. برای لغو بکشید.برای ضبط پیام صوتی فشار داده و نگهدارید، برای ارسال رها کنید.
- جعبهٔ ورودی خالی. \n برای شروع گپ جدید «+» را فشار دهید.
+ گفتگویی وجود ندارد.\nبرای شروع گفتگو جدید دکمه «+» را فشار دهید.
+
میتوانید با دیگر کاربران دلتاچت و هر نشانی رایانامهای گپ بزنید.تمام گپها بایگانی شدهاند. /n برای شروع گپ جدید، «+» را فشار دهید. اشتراک گذاری با
@@ -394,7 +406,6 @@ https://meet.jit.si/$ROOM
برای ارسال پیام دوباره تلاش کنید. نمیتوانید بنویسید چرا که در این گروه نیستید. برای عضو شدن از یکی از اعضا درخواست کنید.
- این گپ شامل پیامهای تولید شده به صورت داخلی است. برای همین نمیتوانید پیامی بنویسید. ارسال پیام در فهرستهای پستی فعلاً پشتیبانی نمیشود.امکان نمایش این نوع پرونده وجود ندارد: %sناموفق در بارگیری ضمیمه
@@ -414,7 +425,6 @@ https://meet.jit.si/$ROOM
ارسال \"%1$s\" به...ارسال پیام به...
-
نمایش موقعیتهای مکانی در چارچوب زماننمایش ردپاها
@@ -437,6 +447,8 @@ https://meet.jit.si/$ROOM
جستجو
+ جستجو در گفتگو
+ جستجوی پروندههاجستوجو برای گپها، مخاطبان و پیامهانتیجهای برای \"%s\" پیدا نشد
@@ -452,6 +464,7 @@ https://meet.jit.si/$ROOM
برای این کار باید عضو گروه باشید.رمزگذاریگپهای همرسانده
+ گفتگوهای مرتبطمخاطبگروهگالری
@@ -479,7 +492,8 @@ https://meet.jit.si/$ROOM
مطمئن شوید هر دو دستگاه در یک وایفای یا شبکه هستنداین یک کد QR ایجاد میکند که دستگاه دوم میتواند برای کپی حساب اسکن کند.دلتاچت را روی دستگاه دیگر خود نصب کنید (https://get.delta.chat)
- دلتاچت را اجرا کنید، روی «افزودن به عنوان دستگاه دوم» بزنید و کد نشان داده شده در اینجا را پویش کنید
+
+ دلتاچت را باز کنید، روی «افزودن به عنوان دستگاه دوم» بزنید و کد نشان داده شده در اینجا را اسکن کنیدبرای راه اندازی دستگاه دوم برای %1$s اسکن کنیدافزودن به عنوان دستگاه دوم
@@ -525,10 +539,23 @@ https://meet.jit.si/$ROOM
- روی رایانامه گپ بزنید.
+
+ ایجاد حساب کاربری جدید
+
+ از قبل یک حساب کاربری دارم
+
+ ساخت حساب کاربری با حساب ایمیل عادی
+
+ حساب شما
+
+ استفاده از یک سرور دیگر
+ لیست سرورهای Chatmail
+ گفتگو غیرمتمرکز و ایمناسکن کردن کد دعوتورود
+
به سرور خود وارد شوید
+
ورود با یک رایانامه موجودبرای ارائهدهندگان شناخته شده تنظبمات اضافه به صورت خودکار انجام میشود. گاهی اوقات IMAP باید در تنظیمات رایانامهٔ شما فعال شود. از ارائهدهندهٔ رایانامه یا دوستانتان در این مورد کمک بگیرید.دلتاچت هیچ سروری ندارد، دادههای شما در دستگاه شما باقی میماند.
@@ -572,7 +599,7 @@ https://meet.jit.si/$ROOM
افزودن حساب کاربریحذف حساب کاربریآیا از حذف حساب کاربری اطمینان دارید؟
- همه اطلاعات حساب مربوط به \"%s\" روی این دستگاه پاک میشود که شامل تنظیمات رمزگذاری گیرنده به گیرنده ، مخاطبین، پیامها و رسانه میشود. این عمل قابل بازگشت نیست.
+ همه اطلاعات حساب مربوط به \"%s\" روی این دستگاه پاک میشود؛ که شامل تنظیمات رمزگذاری سرتاسر، مخاطبین، گفتگو ها پیامها، رسانه ها میشود. این عمل قابل بازگشت نیست.حساب تنظیم نشدهبازکردن حساب برای تنظیم آناکنون برای اتصال تلاش کنید
@@ -596,14 +623,12 @@ https://meet.jit.si/$ROOM
تصویر نمایهمخاطبین مسدود شدهاگر مخاطبی را مسدود کنید اینجا نمایش داده میشود
+
رمزعبور و حساب کاربریوقتی با دیگر کاربران گپ میزنید، تصویر نمایه، نام و امضایتان در کنار پیامهایتان فرستاده میشوند.اسم شمامتن امضا
-
- ارسال شده با پیامرسان دلتاچت:
- https://delta.chatورود کلیدهای ارسالفشاردادن کلید اینتر پیامها را ارسال میکندکیفیت رسانه خروجی
@@ -637,9 +662,13 @@ https://meet.jit.si/$ROOM
درخواست دهید که صفحه کلید رفتارهای شخصی شما را یاد نگیردرسید خوانده شدناگر رسید خوانده شدن غیرفعال باشد، نمیتوانید اعلام خوانده شدن توسط دیگران را ببینید.
+ سرور
+ رمزگذاریمدیریت کلیدهااستفاده از شکلکهای سیستمغیرفعال کردن شکلکهای داخلی دلتاچت
+ استفاده از دوربین درونبرنامه
+ دوربین درونبرنامه معمولا امکانات کمتری نسبت به دوربین سیستم دارددسترسی نرمافزارگپهاصداهای درونگپی
@@ -652,6 +681,10 @@ https://meet.jit.si/$ROOM
نسخه پشتیبانتهیهٔ پشتیبان از گپها در ذخیرهگاه خارجیتهیهٔ پشتیبان به شما کمک میکند روی این دستگاه یا دستگاه دیگر نرمافزار را دوباره نصب کنید.\n\nپشتیبان حاوی تمام پیامها، مخاطبین، گپها و برپاسازی اتوکریپت سرتاسر شما خواهد بود. پروندهٔ پشتیبانی را در یک جای امن نگه دارید و در اسرع وقت آن را پاک کنید.
+
+ برونبُرد(اکسپورت) %1$s
+
+ برونبُرد(اکسپورت) هر %1$d حساب شروع تهیه نسخه پشتیباننسخه پشتیبان با موفقیت در\"%1$s\" ذخیره شد.مدیریت کلیدها
@@ -669,6 +702,7 @@ https://meet.jit.si/$ROOM
اگر این گزینه را غیر فعال میکنید از اینکه سرور شما و حسابهایتان هم بر این اساس تنظیم شده باشند.\n\n در غیر این صورت ممکن است هیچ چیز کار نکند. پوشه ارسال شدهها را نگاه کنارسال رونوشت به خودم
+
درصورت استفاده از این حساب در چند دستگاه مورد نیاز است. انتقال خودکار به پوشه دلتاچتگپها برای جلوگیری از پر شدن صندوق ورودی جابهجا شدند
@@ -702,6 +736,9 @@ https://meet.jit.si/$ROOM
حذف تصویر نمایهنمایش نمادک در زیر صفحهویرایش نمایه
+ ارسال آمار برای تولیدکنندگان دلتاچت
+
+
نتایج جستجوشکلکی پیدا نشد
@@ -715,6 +752,15 @@ https://meet.jit.si/$ROOM
نمادهاپرچمها
+
+ واکنشها
+
+ واکنش
+
+ شما به «%2$s» واکنش %1$s را نشان دادید
+
+ %1$s به «%3$s» واکنش %2$s را نشان داد
+
پاک کردن پیامهای قدیمیپاک کردن پیامها از دستگاه
@@ -740,7 +786,9 @@ https://meet.jit.si/$ROOM
بعد از ۱ سال
+
اتوکریپت
+
اتوکریپت یک ویژگی جدید و باز برای رمزگذاری سرتاسر خودکار رایانامه است.\n\n تنظیمات رمزگذاری سرتاسر در هنگام نیاز به صورت خودکار ایجاد میشود و میتوانید آن را با پیامهای تنظیم اتوکریپت بین دستگاهها انتقال دهید. ارسال پیام برپاسازی اتوکریپتپیام برپاسازی اتوکریپت تنظیمات رمزگذاری سرتاسر شما را به شکلی امن با دیگر برنامهها به اشتراک میگذارد.\n\n تنظیمات با یک کد برپاسازی که در اینجا نمایش داده میشود رمزگذاری میشوند و باید در دستگاه دیگر تایپ شود.
@@ -771,6 +819,8 @@ https://meet.jit.si/$ROOM
تصویر گروه توسط %1$s تغییر کرد.
+ %1$s عضو شد.
+
شما %1$s را به عنوان عضو جدید اضافه کردید. عضو جدید با نام %1$s توسط %2$s افزوده شد.
@@ -823,11 +873,18 @@ https://meet.jit.si/$ROOM
زمانسنج ناپدید شدن پیامها را روی %1$s هفته تنظیم کردید.زمانسنج ناپدید شدن پیامها توسط %2$s روی %1$s هفته تنظیم شد.
+
+ %1$s پیامی را از دستگاه دیگری ارسال کرد.
+ رمزنگاری سرتاسر پیام ها از این به بعد تضمین می شود. برای اطلاعات بیشتر ضربه بزنید.
+ رمزنگاری سرتاسر پیام های این گفتگو اکنون تضمین می شود. رمزنگاری سرتاسر باعث می شود پیام های شما بین شما و مخاطبین شما محرمانه بماند. حتی سرویس پست الکترونیک شما هم نمی تواند آنها را بخواند.
+ %1$s پیامی را از دستگاه دیگری ارسال کرد. برای اطلاعات بیشتر ضربه بزنید.
+ بیشتر بدانید
+
شما گپ «پیامهای ذخیره شده» را پاک کردید.\n\nℹ️ برای استفادهٔ دوباره از «پیامهای ذخیره شده» کافی است یک گپ جدید با خودتان درست کنید.
- هشدار⚠️، میزان فضای در دسترس ارایهدهنده شما در حال تمام شدن است. %1$s از %% استفاده شده است.
-اگر فضای ذخیره کاملا پر شده باشد دیگر امکان دریافت پیام را نخواهید داشت.
-👉 لطفا پیامهای قدیمی در رایانامه خود را از طریق نسخه وب رایانامه پاک کنید. همچنین میتوانید گزینه پاک کردن پیامهای قدیمی در دلتاچت را فعال نمایید. هروقت خواستید میتوانید فضای در دسترس را از تنظیمات/اتصالات بررسی کنید.
+ هشدار⚠️، میزان فضای در دسترس سرور شما در حال تمام شدن است. %1$s از %% استفاده شده است.
+اگر فضا کاملا پر شده باشد دیگر امکان دریافت پیام را نخواهید داشت.
+👈 لطفا پیامهای قدیمی در رایانامه خود را از طریق نسخه وب رایانامه پاک کنید. همچنین میتوانید گزینه پاک کردن پیامهای قدیمی در دلتاچت را فعال نمایید. هروقت خواستید میتوانید فضای در دسترس را از تنظیمات/اتصالات بررسی کنید. هشدار⚠️ به نظر میرسد زمان و تاریخ دستگاه شما دقیق نیست(%1$s).
ساعت دستگاه خود را تنظیم کنید ⏰🔧 تا پیامها به درستی دریافت شوند.
@@ -872,22 +929,27 @@ https://meet.jit.si/$ROOM
ایجاد رایانامهٔ جدید روی «%1$s» و ورود به آنجا؟نشانی جدید رایانامه روی «%1$s» ایجاد شده و به آن وارد شود؟
حساب فعلی شما پاک نمیشود. از بخش «تغییر حساب کاربری» برای جابجایی بین حسابها استفاده کنید
- ورود موفق—نشانی رایانامهٔ شما %1$sاست.\n\n اگر دوست دارید میتوانید اکنون یک نام وارد کرده و تصویر نمایهای که هنگام نوشتن برای دیگران نشان داده میشود را انتخاب نمایید.
+ اسمی انتخاب کنید که مخاطبینتان با آن شما را بشناسند. می توانید برای خود عکسی هم انتخاب کنید.
+ لطفا یک اسم وارد کنید.این کد کیوآر اسکن شده را نمیتوان برای راه اندازی اکانت جدید استفاده کرد.
+
کد کیوآر اسکن شده برای راه اندازی یک اکانت جدید است. میتوانید در حال تنظیم یک دلتاچت تازه نصب شده کیوآر را اسکن کنید.
-
+
آیا به \"%1$s\" وارد شوید؟
-
+
آیا به \"%1$s\" وارد شوید؟\n\nحساب موجود شما حذف نخواهد شد. برای جابهجایی میان حسابهایتان از \"تغییر حساب\" استفاده کنید.کاربر %1$s شما را دعوت کرده است تا عضو این گروه شوید.
در انتظار دستگاه %2$s برای پاسخگویی...کاربر %1$s پاسخ داد، در انتظار اضافه شدن به گروه...
+ در حال برقراری رمزگذاری سرتاسر تضمینشده، لطفا صبر کنید...
+ اکنون نمی توانیم رمزگذاری سرتاسر تضمینشده را برقرار کنیم. با این وجود می توانید پیام ارسال کنید.%1$s تأیید شد.
- نتوانست %1$s را تأیید کند.
+ امکان تایید رمزگذاری در مبدا، برای %1$sوجود ندارد.احراز هویت شده توسط %1$s
+ تأیید شده توسط منتنظیمات برای %1$s تغییر کرد. آدرس کیوآر در حافظه ذخیر شد
@@ -906,6 +968,13 @@ https://meet.jit.si/$ROOM
نام و پیامفقط نامبدون نام یا پیام
+ اعلانها غیرفعال شد
+ پیامهای جدید
+
+ شما پیام های جدیدی دارید
+ %1$d پیام در %2$d گفتگو
+
+
مجوز لازم استادامه
@@ -981,6 +1050,7 @@ GNU GPL ورژن ۳
صادر کردن نسخه پشتیبانبرپاسازی اتوکریپت انتقال یافت.پاک کردن این ورود؟ همهچیز پاک میشود که شامل رمزگذاری سرتاسر، مخاطبین، گپها، پیامها و رسانه میشود. این عملیات قابل بازگردانی نیست.
+
رایانامه: %1$s
فضا: %2$s
شناسه حساب:%3$s
@@ -988,7 +1058,7 @@ GNU GPL ورژن ۳
دریافت شدپوشه گزارش را باز کنپوشه گزارش فعلی را باز کن
- چون دلتاچت با تنظیمات --زیرصفحه شروع به کار کرده است نمیتوان نمادک زیر صفحه را غیر فعال کرد.
+ چون دلتاچت با تنظیمات --زیرصفحه شروع به کار کرده است نمیتوان نمادک زیر صفحه را غیر فعال کرد. هیچ پیشنهادی برای املا پیدا نشدنمایش پنجرهپشتیبانی از قابلیت SOCKS5 هنوز آزمایشی است. لطفا در صورت استفاده،خطرات را بپذیرید. اگر یک آدرس را در بخش رایانامه وارد کنید همچنان DNS lookup رخ میدهد که ممکن است از طریق SOCKS5 صورت نگیرد.
@@ -1053,15 +1123,14 @@ GNU GPL ورژن ۳
دلتاچت میخواهد تصاویر را در آلبوم شما ذخیره کند.
-
- اعلانهای پیش زمینه
- از یک ارتباط پیش زمینه به سرور شما استفاده می کند و برای استفاده از آن باید تنظیمات بهینه سازی مصرف باتری غیرفعال شود.
+ استفاده از Push Service
+ استفاده از اتصال پس زمینه
+ اجبار کردن اتصال پس زمینه
+ اعلانی دائمی نشان می دهد
+
برای حفظ ارتباطتان با سرور رایانامه و دریافت پیامها در پیش زمینه، در گام بعدی، تنظیمات بهینه سازی باتری را نادیده بگیرید. \n\n دلتاچت از منابع کمی استفاده میکند و مراقب است باتری شما را بیش از حد مصرف نکند.
- اتصالات پیش زمینه قابل اطمینان
- به یک اعلان دائمی احتیاج دارد.برای دریافت پیامها به صورت پس زمینه در دلتاچت این جا را ضربه بزنید. قبلا اجازه دسترسی به فعالیت در پس زمینه را به دلتاچت دادهاید. \n\n اگر پیامها هنوز هم در شرایط پس زمینه نمیآمد لطفا تنظیمات سیستم را نیز بررسی نمایید.
-
diff --git a/res/values-fi/strings.xml b/src/main/res/values-fi/strings.xml
similarity index 70%
rename from res/values-fi/strings.xml
rename to src/main/res/values-fi/strings.xml
index ed931ea4a..0dc91adf0 100644
--- a/res/values-fi/strings.xml
+++ b/src/main/res/values-fi/strings.xml
@@ -1,10 +1,12 @@
-
+Delta ChatOKPeruuta
- Tyhjennä haku
+
+ tai
+ Tyhjennä hakuKylläEiValitse
@@ -29,8 +31,13 @@
EmojiLiiteTakaisin
+
+ VarmistettuSulje
+ Sulje ikkunaEteenpäin
+ Luo
+ MyöhemminLähetä uudelleen
@@ -47,15 +54,21 @@
PäävalikkoAloita keskusteluNäytä koko viesti...
+
+ Merkitse luetuksi
+
+ LuettuLadataan...PiilotaAktivoi
- Lataa etäkuvat
+ Lataa kuvat verkosta
- Etäkuvien avulla sinua voidaan seurata.\n\nAsetus mahdollistaa myös fonttien ja muun sisällön lataamisen. Voit nähdä upotettuja kuvia, vaikka asetus olisi pois.\n\nLataa etäkuvat?
+ Verkosta ladattujen kuvien avulla sinua voidaan seurata.\n\nAsetus mahdollistaa myös fonttien ja muun sisällön lataamisen. Voit nähdä upotettuja kuvia, vaikka asetus ei olisi käytössä.\n\nLataa kuvat verkosta?Aina
+ Lataa aina kuvat verkostaKerran
+ Näytä varoitusNäytä salasanaPiilota salasanaEi nyt
@@ -76,7 +89,7 @@
SähköpostiosoiteVirheellinen sähköpostiosoiteSalasana
- Vanha salasana
+ Olemassa oleva salasanaHetiVaroitus
@@ -88,11 +101,13 @@
Viime kuussaNähty viimeksi %1$s
+
+ Nähty viimeksi %1$sNähty viimeksi: ei tiedossa%d minuutti
- %d minuuttia
+ %d min
@@ -130,9 +145,12 @@
KuvaVastaus
- Gif
+ GIFTarra
+ Lisää tarrakokoelmaan
+ Saat lisättyä tarroja valitsemalla \"Avaa tarrakansio\", luomalla alikansion tarrakokoelmallesi ja raahaamalla tarratiedostosi sinne
+ Avaa tarrakansioKuvatÄäniteÄäniviesti
@@ -142,28 +160,29 @@
Välittäjä: %1$sVideoAsiakirjat
- Yhteyshenkilö
+ YhteystietoKameraKuvaa
- Vaihda kamera
+ Vaihda kameraaKoko näytön tilaSijainti
+ SijainnitGalleriaKuvat ja videotTiedostoTiedostot
- Yksityinen sovellus
+ Sovellus
- Yksityiset sovellukset
+ SovelluksetTuntematonVihreäPunainenSininenOranssi
- Sinivihreä
+ SyaaniViolettiMagentaValkoinen
@@ -180,13 +199,19 @@
Uusi yhteystieto
+ Lisää yhteystieto manuaalisesti
+ Manuaalisesti lisättyjä yhteystietoja voidaan käyttää tavanomaisiin sähköposteihin ja niiden päästä-päähän salausta ei ole taattu.Uusi keskusteluUusi ryhmä
+ Kloonaa keskusteluKuulutuslistaKuulutuslistatUusi kuulutuslistaLisää vastaanottajia
+ Muokkaa kuulutuslistaa
+ Kuulutuslistan nimi
+ Anna kuulutuslistalle nimi.LähetäNäytä emoji-näppäimistöMuokkaa ryhmää
@@ -197,6 +222,8 @@
Lisää liitePoistu ryhmästäPoista keskustelu
+
+ Tyhjennä keskusteluHaluatko varmasti poistaa \"%1$s\"?Poista viestitPoista yhteystieto
@@ -209,6 +236,7 @@
Kopioi kuvaKopioi sähköpostiosoiteLiitä leikepöydältä
+ Linkkiä \"%1$d\" ei voida avata verkkoselaimessa. Haluatko sen sijaan kopioida sen leikepöydälle?Välitä viestiVastaa viestiinMykistä ilmoitukset
@@ -218,6 +246,7 @@
Kaikki mediaNäytä keskustelussa
+ Näytä sovellus keskustelussaJaaEstä
@@ -229,8 +258,10 @@
Vieritä alasVieritä ylösOhje
+ Mikä on Webxdc?YksityisyyskäytäntöValitse kaikki
+ Valitse keskusteluValitse lisääMuokkaa nimeäAsetukset
@@ -249,7 +280,7 @@
Laitteen viestitPaikallisesti luodut viestitViestit tässä keskustelussa luodaan paikallisesti Delta Chat -sovelluksessa. Kehittäjät ilmoittavat niiden avulla sovelluksen päivityksistä ja mahdollisista ongelmista.
- Tervetuloa Delta Chatiin! – Delta Chat näyttää ja tuntuu samalta kuin suositut pikaviestintäsovellukset, kuitenkin ilman keskitettyä kontrollia, seurantaa tai käyttäjien tietojen myymistä isoille yrityksille.\n\nTeknisesti Delta Chat on sähköpostisovellus nykyaikaisella pikaviestikäyttöliittymällä. Sähköposti uusissa vaatteissa, jos niin voi sanoa 👻\n\nDelta Chat toimii miljardien ihmisten kanssa: lähetä vain viesti heidän sähköpostiosoitteeseensa. Viestien vastaanottajien ei tarvitse asentaa Delta Chatia, käydä nettisivustoilla tai liittyä mihinkään - paitsi jos he haluavat. Silloin voit ohjata heidät osoitteeseen 👉 https://get.delta.chat
+ Aloita keskustelu!\n\n🙌 Täppää \"QR koodi\" päänäkymässä molemmilla laitteilla. Valitse \"Skannaa QR koodi\" toisella laitteella, ja osoita sillä toista\n\n🌍 Jos ette ole samassa huoneessa, skannaa vaikkapa videopuhelun yli tai jaa kutsulinkki \"Skannaa QR koodi\" -sivulta\n\nSitten voit nauttia pikaviestittelystä suurimmassa hajautetussa sosiaalisessa verkostossa mitä on koskaan ollut olemassa: eli sähköpostissa. Kontrastina toisiin suosittuihin sovelluksiin, ilman keskitettyä tahoa kontrolloimassa, keräämässä massadataa tai myymässä sinua, ystäviäsi, kollegojasi tai perhettäsi suurille organisaatioille.Muokkaa yhteystietoaKiinnitä keskustelu
@@ -264,6 +295,8 @@
LähdekoodiLisää aloitusnäytölle
+ Lahjoita
+
Mykistä 1 tunniksiMykistä 2 tunniksiMykistä 1 päiväksi
@@ -348,17 +381,19 @@
Arkistoidut keskustelutKirjoita viesti.Kamera ei saatavilla.
- Äänen tallentaminen ei onnistu.
+ Äänen tallentaminen ei onnistunut.%d uusi viesti%d uutta viestiäLähetä viesti. Ei haittaa, vaikka %1$s ei käyttäisi Delta Chatia.
+ Kuulutuslistalla vastaanottajat saavat viestit keskusteluna kanssasi, jossa heillä on vain lukuoikeus.Muut näkevät ryhmän vasta, kun lähetät ensimmäisen viestin.Pyyhkäise peruuttaaksesiPidä painettuna nauhoittaaksesi ääniviestin, irrota lähettääksesiSaapuneet-kansio on tyhjä\nPaina \"+\" aloittaaksesi uuden keskustelun.
+
Voit keskustella Delta Chat -käyttäjien kanssa tai minkä tahansa sähköpostiosoitteen kanssa.Kaikki keskustelut arkistoitu.\nPaina \"+\" aloittaaksesi uuden keskustelun.Jaa
@@ -376,7 +411,6 @@
Yritä uudelleen lähettääksesi viestinEt voi kirjoittaa, koska et ole ryhmän jäsen. Liittyäksesi pyydä, että joku jäsen liittää sinut ryhmään.
- Tämän keskustelun viestit on luotu paikallisesti. Et voi kirjoittaa viestejä tänne.Sähköpostilistoille vastaamista ei vielä tuetaTiedostotyypin näyttäminen epäonnistui: %sLiitteiden lataaminen epäonnistui
@@ -392,6 +426,13 @@
Aloita...Hyväksy keskustelupyyntö ensin.
+
+ Lähetä \"%1$s\" kohteeseen...
+
+ Lähetä viesti kohteeseen...
+ Reaaliaikaiset Webxdc -kanavat
+ Ota Webxdc:n reaaliaikaiset ohjelmointirajapinnat käyttöön niin voit luoda suoria yhteyksiä laitteiden välillä.
+
Näytä sijainnit aikajanallaNäytä jäljet
@@ -414,6 +455,8 @@
Etsi
+ Hae keskustelussa
+ Hae tiedostojaEtsi keskusteluja, yhteystietoja ja viestejäEi tuloksia haulle \"%s\"
@@ -429,6 +472,7 @@
Sinun täytyy olla ryhmän jäsen suorittaaksesi tämän toiminnon.SalausJaetut keskustelut
+ Liittyvät keskustelutYhteystietoRyhmäGalleria
@@ -441,7 +485,12 @@
Tässä keskustelussa jaetut videot näkyvät tässä.Tässä keskustelussa jaetut äänitiedostot ja -viestit näkyvät tässä.Keskustelussa jaetut yksityiset sovellukset näkyvät tässä.
+ Kun keskusteluissa jaetaan mediaa, se tulee näkymään täällä.Median esikatselu
+
+ Kuvasuhteen mukainen ruudukko
+
+ NeliöruudukkoLähetä viesti%1$s vaihtui osoitteesta %2$s osoitteeksi %3$s
@@ -449,6 +498,33 @@
Vaihdoit sähköpostiosoitteesi osoitteesta %1$s osoitteeksi %2$s.\n\nJos lähetät viestin vahvistettuun ryhmään, ryhmän jäsenet saavat automaattisesti uuden osoitteesi.\n\nOn suositeltavaa asettaa vanha tilisi välittämään kaikki viestit uuteen osoitteeseesi. Muuten et välttämättä saa viestejä niiltä yhteystiedoiltasi, joilla ei ole uutta osoitettasi.
+
+
+ Lisää toinen laite
+ Varmista että molemmat laitteet ovat samassa Wi-Fi verkossa
+ Tämä luo QR koodin, jolla toinen laite saa ladattua kopion profiilista.
+ Lataa Delta Chat toiselle laitteellesi (https://get.delta.chat)
+
+ Avaa Delta Chat, valitse \"Minulla on jo profiili / Lisää toiseksi laitteeksi\" ja skannaa täällä näkyvä koodi
+
+ Lisää toiseksi laitteeksi profiilille %1$s
+ Lisää toiseksi laitteeksi
+ Avaa \"Asetukset / Lisää toinen laite\" ensimmäisellä laitteella ja skannaa tässä oleva koodi
+ Kopioidaanko profiili toiselta laitteelta tälle laitteelle?
+ Hylätäänkö toisen laitteen käyttöönotto?
+ Tämä mitätöi QR koodin joka on kopioituna leikepöydälle.
+ (kokeellinen, versio 1.36 vaaditaan)
+ ℹ️ Profiili siirretty toiselle laitteellesi.
+
+ Valmistellaan profiilia...
+
+ Odotetaan vastaanottajaa...
+
+ Vastaanottaja yhdistetty...
+
+ Siirretään...
+ Vianetsintä
+
Saapuvat viestit
@@ -467,7 +543,7 @@
YhdistettyLähetetäänViimeinen viesti lähetetty onnistuneesti.
- Palveluntarjoajasi ei tue tätä.
+ Ei tuettu palveluntarjoajallasi.Viestit
@@ -475,83 +551,112 @@
- Chattaa sähköpostilla.
+
+ Luo uusi profiili
+
+ Minulla on jo profiili
+
+ Tavanomainen sähköpostikirjautuminen
+
+ Profiilisi
+
+ Lue yksityisyydensuojaseloste
+
+ Yksityisyydensuojaseloste %1$s
+
+ Tietoja profiileista kohteessa %1$s
+
+ Hyväksy & luo profiili
+
+ Käytä toista palvelinta
+ Listaa chatmail -palvelimet
+
+ Liity ryhmään \"%1$s\" luomalla profiili.
+
+ Keskustele %1$s kanssa luomalla profiili.
+
+ Haluatko luoda uuden profiilin ja aloittaa keskustelun %1$s kanssa?
+
+ Haluatko luoda uuden profiilin ja liittyä ryhmään \"%1$s\"?
+
+ Turvallinen hajautettu keskusteluSkannaa kutsukoodiKirjaudu sisään
- Kirjaudu palvelimellesi
+
+ Kirjaudu sähköpostitilillesi
+
Kirjaudu olemassa olevalla sähköpostitilillä
- Tunnetuille sähköpostipalveluntarjoajille muut asetukset luodaan automaattisesti. Joskus IMAP täytyy laittaa päälle verkkoasetuksissa. Kysy apua palveluntarjoajaltasi tai ystäviltäsi.
- Delta Chatilla ei ole palvelimia, tietosi säilyvät sinun laitteellasi.
+ Sähköpostiasetukset määritetään automaattisesti tunnetuille palvelimille. Joskus verkkoasetuksista täytyy ottaa käyttöön IMAP. Kysy apua palveluntarjoajaltasi tai ystäviltäsi.
+ Delta Chat ei kerää käyttäjädataa, kaikki tallennetaan vain laitteellesi.Saapuvan postin laatikko
- IMAP-kirjautumistunnus
- IMAP-palvelin
- IMAP-portti
- IMAP-turvallisuusprotokolla
+ IMAP -kirjautumistunnus
+ IMAP -palvelin
+ IMAP -portti
+ IMAP -turvallisuusLähtevän postin laatikko
- SMTP-kirjautumistunnus
- SMTP-salasana
- SMTP-palvelin
- SMTP-portti
- SMTP-turvallisuusprotokolla
+ SMTP -kirjautumistunnus
+ SMTP -salasana
+ SMTP -palvelin
+ SMTP -portti
+ SMTP -turvallisuusprotokollaKirjautumismenetelmäSOCKS5Käytä SOCKS5
- SOCKS5-isäntä
- SOCKS5-portti
- SOCKS5-käyttäjä
- SOCKS5-salasana
- Jatka yksinkertaisella asennuksella?
- Annettu sähköpostiosoite tukee yksinkertaista asennusta (OAuth 2.0).\n\nSeuraavaksi sinun täytyy sallia Delta Chatin toiminta Chat over E-mail -sovelluksena.\n\nDelta Chatilla ei ole palvelimia, tietosi pysyvät laitteellasi.
- Varmennetarkastukset
+ SOCKS5 -isäntä
+ SOCKS5 -portti
+ SOCKS5 -käyttäjä
+ SOCKS5 -salasana
+ Jatka yksinkertaistetulla käyttöönotolla?
+ Annettu sähköpostiosoite tukee yksinkertaista käyttöönottoa (OAuth 2.0).\n\nSeuraavassa vaiheessa sinun tulisi antaa Delta Chatille oikeus toimia keskustelusovelluksena sähköpostia hyödyntäen.\n\nDelta Chat ei kerää käyttäjädataa, kaikki tallennetaan vain laitteellesi.
+ Varmenteiden tarkastusAnna kelvollinen sähköpostiosoiteAnna kelvollinen palvelin tai IP-osoiteAnna kelvollinen portti (1-65535)Anna kelvollinen sähköpostiosoite ja salasana
- Tuo varmuuskopio
- Varmuuskopio löydetty kohteesta \"%1$s\".\n\nHaluatko tuoda kaikki sen tiedot ja asetukset?
- Varmuuskopioita ei löytynyt.\n\nKopioi varmuuskopio kohteeseen \"%1$s\" ja yritä uudelleen. Vaihtoehtoisesti, paina \"Aloita viestittely\" jatkaaksesi tavallista asennusprosessia.
+ Palauta varmuuskopiosta
+ Varmuuskopio löydetty sijainnista \"%1$s\".\n\nHaluatko tuoda sen ja käyttää sen asetuksia?
+ Varmuuskopioita ei löytynyt.\n\nKopioi varmuuskopio kohteeseen \"%1$s\" ja yritä uudelleen. Voit myös vaihtoehtoisesti jatkaa tavanomaista käyttöönottoa valitsemalla \"Aloita viestittely\".
- Kirjautuminen osoitteella \"%1$s\" epäonnistui. Tarkista, että sähköpostiosoite ja salasanat on kirjoitettu oikein.
+ Osoitteella \"%1$s\" kirjautuminen epäonnistui. Tarkistathan että sähköpostiosoite ja salasana ovat oikeinkirjoitettuja.
- Hyväksy epäpätevät varmenteet
+ Hyväksy rikkinäiset varmenteetKäytetyt asetukset:
- Vaihda tiliä
- Lisää tili
- Poista tili
- Haluatko varmasti poistaa tilisi tiedot?
- Kaikki tilin \"%s\" tiedot poistetaan tältä laitteelta, mukaan lukien salausasetukset, yhteystiedot, keskustelut, viestit ja media. Tämä toiminto on peruuttamaton.
- Tilin asetuksia ei ole tehty
+ Vaihda profiilia
+ Lisää profiili
+ Poista profiili
+ Haluatko varmasti poistaa profiilisi tiedot?
+ Profiilin \"%s\" kaikki tiedot tullaan poistamaan tältä laitteelta, sisältäen päästä-päähän salauksen asetukset, yhteystiedot, keskustelut, viestit ja median. Tätä toimenpidettä ei voi peruuttaa.
+ Määrittämätön profiiliAvaa tili luodaksesi asetukset
- Yritä yhdistää heti
+ Yritä nyt yhdistämistäSynkronoi kaikki
- Asetusten luominen epäonnistui. Virhe: %1$s
+ Asetusten määritys epäonnistui. Virhe: %1$s
- Välitä yhteystiedolle...
- Lähetä %1$d tiedostoa valittuun keskusteluun?\n\nTiedostot lähetetään muokkaamattomina ja alkuperäisen kokoisina, kuvia tai videoita ei pakata uudelleen.
- Lähetä %1$d tiedosto(a) %2$d keskusteluun?\n\nTiedostot lähetetään muokkaamattomina ja alkuperäisen kokoisina, kuvia ja videoita ei pakata uudelleen.
+ Välitä...
+ Lähetetäänkö %1$d tiedostoa valittuun keskusteluun?\n\nTiedostot lähetetään koskemattomina alkuperäisessä koossa (esim. kuvia tai videoita ei uudelleenenkoodata).
+ Lähetä %1$d tiedosto(a) %2$d keskusteluun?\n\nTiedostot lähetetään koskemattomina alkuperäisessä koossa (esim. kuvia ja videoita ei uudelleenenkoodata).Lähetä tämä teksti %1$d keskusteluun?\n\n\"%2$s\"
- Jakaminen keskeytetty käyttöoikeuksien puuttumisen vuoksi
+ Jakaminen keskeytetty puuttuvien käyttöoikeuksien vuoksi.Käytetään mukautettua: %sKäytetään oletusta: %s
- Profiilisi tiedot
+ ProfiilisiProfiilikuvaEstetyt yhteystiedotEstämäsi yhteystiedot näkyvät tässä
+
Salasana ja tili
- Profiilikuvasi, nimesi ja allekirjoituksesi lähetetään yhdessä viestiesi kanssa muille käyttäjille.
+ Kun kommunikoit muiden käyttäjien kanssa, profiilikuvasi, nimesi ja biosi lähetetään viestiesi ohessa.Nimesi
- Allekirjoitus
-
- Lähetetty Delta Chat -sovelluksesta: https://delta.chat
- Enter-näppäin lähettää
+ Bio
+ Lähetä Enter -näppäimelläEnter-näppäimen painaminen lähettää viestinLähtevän median laatuTasapainotettu
@@ -559,15 +664,15 @@
VärinäNäytön turvallisuus
- Pyydä järjestelmää estämään näyttökuvien tallentaminen sovelluksessa ja \"viimeiset\"-näkymässä.
+ Pyydä järjestelmää estämään näyttökuvien ottaminen sovelluksessa ja äskettäiset -näkymässäNäyttölukon käyttöönotto vaatii sovelluksen uudelleenkäynnistyksen.IlmoituksetNäytä
- Tärkeys
- Järjestelmän ilmoitukset uusista viesteistä
+ Prioriteetti
+ Ota järjestelmäilmoitukset käyttöön uusista viesteistäNäytä viestien sisältö ilmoituksissa
- Näytä lähettäjän nimi ja viestin ensimmäiset sanat ilmoituksessa
- LED-väri
+ Näytä lähettäjä ja viestin ensimmäiset sanat ilmoituksissa
+ LEDin väriÄäniÄänetönYksityisyys
@@ -579,57 +684,68 @@
UlkonäköTeemaKieli
- Näppäimistön yksityisyys
+ Yksityinen näppäimistö
- Pyydä näppäimistöä kytkemään yksilöity oppiminen pois päältä
+ Pyydä näppäimistöä poistamaan henkilökohtaistettu oppiminen käytöstäLukukuittaukset
- Jos lukukuittaukset kytketään pois, et näe kuittauksia myöskään muilta
+ Jos lukukuittaukset eivät ole päällä, et näe niitä muiltakaan.
+ Palvelin
+ SalausHallinnoi avaimiaKäytä järjestelmän emojeja
- Kytke pois Delta Chatin sisäänrakennettu emoji-tuki
- Pääsy sovellukseen
+ Poista Delta Chatin sisäänrakennettu emoji -tuki käytöstä
+ Käytä sovelluksen sisäistä kameraa
+ Sovelluksen sisäisessä kamerassa on usein vähemmän toiminnallisuutta kuin järjestelmän kamerassa
+ Lue laitteen osoitekirja
+ Tarjoa keskustelujen avaamista yhteystietojen perusteella. Jotkin palveluntarjoajat vaativat ensin päästä-päähän salauksen käyttöönottoa.
+ Sovelluksen pääsyKeskustelut
- Keskustelun äänet
+ Keskustelunaikaiset äänetViestin fonttikokoNäytä loki
- Tallenna loki Lataukset-kansioon
+ Tallenna loki \"Lataukset\" -kansioonLokin tallennus epäonnistuiLokiMuuVarmuuskopiointiVarmuuskopioi keskustelut ulkoiseen tallennustilaan
- Varmuuskopion avulla voit helpommin siirtää asetuksesi uuteen Delta Chat -asennukseen tällä tai toisella laitteella.\n\nVarmuuskopio sisältää kaikki viestit, yhteystiedot ja keskustelut sekä Autocrypt-asetukset. Säilytä varmuuskopiota turvallisessa paikassa ja poista se heti kun mahdollista.
+ Varmuuskopio auttaa siirtämään asennuksen tälle tai toiselle laitteelle.\n\nVarmuuskopio sisältää kaikki viestit, yhteystiedot ja keskustelut sekä päästä-päähän salauksen Autocrypt -tiedot. Pidä varmuuskopiotiedosto turvallisessa paikassa tai poista se heti kun mahdollista.
+
+ Vie %1$s
+
+ Vie kaikki %1$d profiiliaAloita varmuuskopiointiVarmuuskopio kirjoitettu onnistuneesti kohteeseen \"%1$s\".Hallinnoi avaimiaVie salaiset avaimetVie salaiset avaimet kohteeseen \"%1$s\"?Tuo salaiset avaimet
- Tuo salaiset avaimet kohteesta \"%1$s\"?\n\n• Olemassa olevia salaisia avaimia ei poisteta\n\n• Viimeistä tuotua avainta käytetään oletusavaimena, paitsi jos sen tiedostonimessä on sana \"legacy\".
+ Tuo salaiset avaimet kohteesta \"%1$s\"?\n\n• Olemassa olevia salaisia avaimia ei poisteta\n\n• Viimeisimpänä tuotua avainta käytetään oletusavaimena, paitsi jos sen tiedostonimessä on sana \"legacy\".Salaiset avaimet kirjoitettu onnistuneesti kohteeseen \"%1$s\".Salaiset avaimet tuotu kohteesta \"%1$s\".
- Tausta
+ TaustakuvaKäytä oletuskuvaaValitse galleriasta
- IMAP-kansioiden käsittely
- Jos poistat tämän asetuksen käytöstä, varmista, että palvelimessasi ja muissa asiakasohjelmissasi on oikeat asetukset.\n\nMuuten ne eivät ehkä toimi ollenkaan.
- Tarkkaile Lähetetyt-kansiota
+ IMAP -kansioiden käsittely
+ Jos muutat tätä asetusta, varmista että palvelimesi ja muut päätelaitteesi ovat määritetty vastaavasti.\n\nMuutoin ne eivät ehkä toimi lainkaan.
+ Tarkkaile Lähetetyt -kansiotaLähetä kopio itselle
+
Vaaditaan käytettäessä tiliä usealla laitteella.
- Siirrä automaattisesti DeltaChat-kansioon
- Pikaviestikeskustelut siirretään Saapuneet-kansion sotkemisen välttämiseksi
- Nouda vain DeltaChat-kansiosta
- Jätä muut kansiot huomiotta. Palvelimen on siirrettävä pikaviestit DeltaChat-kansioon.
- Näytä perinteiset sähköpostiviestit
- Ei, pelkät pikaviestit
+ Siirrä automaattisesti DeltaChat -kansioon
+ Saapuneet -kansion täyttämisen välttämiseksi, pikaviestikeskustelut siirretään
+ Hae vain DeltaChat -kansiosta
+ Älä huomioi muita kansioita. Vaatii että palvelimesi siirtää pikaviestit DeltaChat -kansioon.
+ Näytä tavanomaiset sähköpostiviestit
+ Ei, vain pikaviestitHyväksytyille yhteystiedoilleKaikkiKokeelliset ominaisuudet
- Sijainnin jako pyydettäessä
+ Tarvittaessa sijainnin jatkuva jakaminenKehittäjätila
- Kytkee päälle testausvalinnat ja voi tehdä sovelluksesta epävakaamman. Vain kehittäjille.
- Oletustausta
+ Kytkee päälle debuggausvaihtoehdot ja saattaa tehdä sovelluksesta epävakaan. Vain kehittäjille.
+ OletuskuvaOletusväriMukautettu kuvaMukautettu väri
@@ -643,25 +759,39 @@
%1$s viesti
- Latauksen yläraja ennen %1$s
+ Latauksen yläraja saatavilla %1$s astiValitse profiilikuvaValitse uusi profiilikuvasiPoista profiilikuvaNäytä työkalupalkin kuvakeMuokkaa profiilia
+ Poista IMAP IDLE käytöstä
+ Älä käytä IMAP IDLE -laajennusta vaikka palvelin tukisi sitä. Toiminnon käyttöönotto hidastaa viestien hakua, käytä vain testaamiseen.
+ Lähetä tilastotietoja Delta Chatin kehittäjille
+
+
Hakutulokset
- Emojia ei löytynyt
+ Emojeja ei löytynytViimeksi käytetytIhmiset & KehoEläimet & LuontoRuoka & JuomaAktiviteetit
- Matkustelu & Paikat
+ Matkailu & PaikatEsineetSymbolitLiput
+
+ Reaktiot
+
+ Reagoi
+
+ Reagoit %1$s \"%2$s\"
+
+ %1$s reagoi %2$s viestiin \"%3$s\"
+
Poista vanhat viestitPoista viestit laitteelta
@@ -687,26 +817,29 @@
1 vuoden päästä
+
Autocrypt
+
Autocrypt on uusi ja avoin spesifikaatio sähköpostien automaattiselle päästä-päähän-salaukselle.\n\nPäästä-päähän-salauksen asetukset luodaan automaattisesti tarpeen mukaan ja ne voidaan siirtää laitteiden välillä Autocrypt-asetusviestien avulla.
- Lähetä Autocrypt-asetusviesti
- Autocrypt-asetusviesti jakaa turvallisesti päästä-päähän-salauksen asetukset toisten Autocrypt-yhteensopivien sovellusten kanssa.\n\nAsetuksen salataan tässä näytettävällä asetuskoodilla, joka on syötettävä toiseen laitteeseen.
- Lähetä Autocrypt-asetusviesti
- Asetusviesti on lähetetty sinulle itsellesi. Avaa viesti toisella laitteella. Sinulta pyydetään asennuskoodia. Anna seuraavat numerot:
- Suosi päästä-päähän-salausta
- Autocrypt-asetusviesti
- Tätä Autocrypt-asetusviestiä käytetään päästä-päähän-salauksen asetusten kopioimiseksi toiselle laitteelle.\n\nSalauksen purkamiseksi ja asetusten käyttöön ottamiseksi, avaa viesti toisella Autocrypt-yhteensopivalla sovelluksella ja anna asennuskoodi laitteelta, jolla koodi luotiin.
- Tätä Autocrypt-asetusviestiä käytetään päästä-päähän-salauksen asetusten kopioimiseksi toiselle laitteelle.\n\nSalauksen purkamiseksi ja asetusten käyttöön ottamiseksi, napauta tai klikkaa tätä viestiä.
- Autocrypt-asetusviesti
- Anna toisella laitteella näkyvä asennuskoodi.
- Päästä-päähän-salauksen asetuksen siirretty. Autocrypt toimii nyt tässä laitteessa samoilla asetuksilla kuin toisessa laitteessa.
- Uudelleen
- Virheellinen asennuskoodi. Yritä uudelleen.\n\nJos et muista asennuskoodia, lähetä uusi Autocrypt-asetusviesti toisella laitteella.
+ Lähetä Autocrypt -käyttöönottoviesti
+ Autocrypt -käyttöönottoviesti jakaa turvallisesti päästä-päähän -salauksen asetukset toisten Autocrypt-yhteensopivien sovellusten kanssa.\n\nMäärittely salataan tässä näytettävällä käyttöönottokoodilla, joka on syötettävä toisella laittella.
+ Lähetä Autocrypt -käyttöönottoviesti
+ Käyttöönottoviesti on lähetetty sinulle itsellesi. Avaa viesti toisella laitteella. Sinulta pyydetään käyttöönottokoodia. Anna seuraavat numerot:
+ Suosi päästä-päähän -salausta
+ Autocrypt -käyttöönottoviesti
+ Tätä Autocrypt -käyttöönottoviestiä käytetään päästä-päähän -salauksen asetusten siirtämiseksi toiselle laitteelle.\n\nSaat purettua salauksia ja käytettyä määrittelyä avaamalla viestin Autocrypt -yhteensopivassa päätesovelluksessa, generoivalla laitteella näytetyn pin koodin syöttämisen jälkeen.
+ Tätä Autocrypt -käyttöönottoviestiä käytetään päästä-päähän-salauksen asetusten siirtämiseksi laitteiden välillä.\n\nSalauksen purkamiseksi ja asetusten käyttöön ottamiseksi, napauta tai klikkaa tätä viestiä.
+ Autocrypt -käyttöönottoviesti
+ Anna toisella laitteella näkyvä käyttöönottokoodi.
+ Päästä-päähän -salauksen asetuksen siirretty. Autocrypt toimii nyt tässä laitteessa samoilla asetuksilla kuin toisessa laitteessa.
+ Yritä uudelleen
+ Virheellinen käyttöönottokoodi. Yritä uudelleen.\n\nJos et muista käyttöönottokoodia, lähetä uusi Autocrypt -käyttöönottoviesti toisella laitteella.Viesti avattuLähettämäsi viesti \"%1$s\" näytettiin vastaanottajan näytöllä.\n\nTämä ei takaa, että sisältö luettiin.
+ Viestin salausta ei voitu purkaa.\n\n• Voi olla että vastaamalla tähän ja pyytämällä lähettäjää lähettämään viesti uudelleen ongelma ratkeaa.\n\n• Jos juuri uudelleenasensit Delta Chatin, lienee parasta että otat sovelluksen uudelleen käyttöön ja valitset \"Lisää toisena laitteena\" tai palauta varmuuskopiosta.Tuntematon lähettäjä. Katso \"lisätietoja\".Viesti lähettäjältä %1$sViestin lähettäminen kohteeseen %1$s epäonnistui.
@@ -718,6 +851,8 @@
Ryhmän kuva vaihdettu käyttäjän %1$s toimesta.
+ %1$s lisätty.
+
Jäsen %1$s lisätty minun toimestani.Jäsen %1$s lisätty käyttäjän %2$s toimesta.
@@ -770,7 +905,17 @@
Katoavien viestien ajastin asetettu %1$s viikkoon minun toimestani.Katoavien viestien ajastin asetettu %1$s viikkoon käyttäjän %2$s toimesta.
- Poistit \"Tallennetut viestit\" -keskustelun.\n\nℹ️ Käyttääksesi \"Tallennetut viestit\" -ominaisuutta jälleen, aloita uusi keskustelu itsesi kanssa.
+
+ %1$s lähetti viestin toiselta laitteelta.
+ Tästä eteenpäin viestit on taatusti päästä-päähän salattuja. Lisätietoja napauttamalla.
+ Kaikki viestit tässä keskustelussa ovat taatusti päästä-päähän salattuja.\n\nPäästä-päähän -salaus pitää viestisi sinun ja keskustelukumppanisi välillä. Edes sähköpostipalveluntarjoaja ei pysty niitä lukemaan.
+ %1$s lähetti viestin toiselta laitteelta. Lue lisää napauttamalla.
+ Päästä päähän salausta ei voida enää taata, todennäköisesti koska %1$s uudelleenasensi Delta Chatin tai lähetti viestin toiselta laitteelta.\n\nTapaamalla hänet voit skannata hänen QR -koodinsa uudelleen päästä-päähän salauksen palauttamiseksi.
+ ⚠️ %1$s vaatii päästä-päähän -salausta joka ei enää ole käytössä tässä keskustelussa. Lue lisää napauttamalla.
+ Päästä-päähän salauksen saat käyttöön tapaamalla yhteystietosi ja skannaamalla hänen QR -koodinsa.
+ Lue lisää
+
+ Poistit \"Tallennetut viestit\" -keskustelun.\n\nℹ️ Aloita uusi keskustelu itsesi kanssa, niin voit jälleen käyttää \"Tallennetut viestit\" -ominaisuutta.⚠️ 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\".
@@ -778,13 +923,14 @@
⚠️ Delta Chat -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
- Anna järjestelmän määrittämä koodi jatkaaksesi.
+ Avaa lukitus jatkaaksesiQR-koodiLataa QR-koodi kuvanaSkannaa QR-koodiNäytä QR-koodia kameraan
+ Siirrä QR koodi kameraanQR-koodia ei voitu selvittääHaluatko liittyä ryhmään \"%1$s\"?Skannattu sormenjälki ei vastaa viimeksi nähtyä %1$s.
@@ -813,22 +959,30 @@
Ei internetyhteyttä, QR-koodin luominen ei onnistu.Luo uusi sähköpostiosoite palvelimella \"%1$s\" ja kirjaudu sisään?Luo uusi sähköpostiosoite palvelimella \"%1$s\" ja kirjaudu sisään?\n\nNykyistä tiliäsi ei poisteta. Käytä valintaa \"Vaihda tiliä\" vaihtaaksesi tilien välillä.
- Kirjautuminen onnistui - sähköpostiosoitteesa on %1$s\n\nVoit nyt halutessasi antaa nimen ja profiilikuvan, jotka näytetään muille kirjoittaessasi heille.
+ Aseta nimi jonka yhteystietosi tunnistavat. Voit myös asettaa profiilikuvan.
+ Syötä nimi.Uutta tiliä ei voida luoda skannatulla QR-koodilla.
+
Skannattu QR-koodi on käytössä uuden tilin luomiseksi. Voit skannata QR-koodin uuden Delta Chat -asennuksen yhteydessä.
-
+
Haluatko kirjautua osoitteella \"%1$s\"?
-
+
Haluatko kirjautua osoitteella \"%1$s\"?\n\nNykyistä tiliäsi ei poisteta. Käytä \"Vaihda tiliä\" -kohtaa vaihtaaksesi tiliesi välillä.%1$s kutsui sinut tähän ryhmään.\n\nOdotetaan vastausta yhteystiedon %2$s laitteelta...Vastaus saatu käyttäjältä %1$s, odotetaan lisäystä ryhmään...
+ Otetaan taattua päästä-päähän salausta käyttöön, odota...
+ Taattua päästä päähän salausta ei vielä voitu ottaa käyttöön, mutta voit jo lähettää viestin.%1$s varmistettu.
- Ei voida varmistaa %1$s.
+ Keskustelun päästä-päähän -salausta ei voida taata henkilön %1$s kanssa.
+
+ %1$s lisäsi
+ LisäämäniAsetukset muutettu kohteessa %1$s.
- QR-osoite kopioitu leikepöydälle
+ Päästä-päähän -salauksen takaamiseksi, voit lisätä ryhmään ainoastaan yhteystietoja joilla on vihreä \"oikein\" -merkki.\n\nVoit tavata yhteystietoja kasvotusten ja skannata heidän QR -koodinsa niin saat lisättyä salauksen käyttöön
+ QR -osoite kopioitu leikepöydälleValitse keskustelu viestien lähettämiseenKeskustelussa %1$s on jo luonnos. Haluatko korvata sen?
@@ -844,6 +998,13 @@
Nimi ja viestiPelkkä nimiEi nimeä eikä viestiä
+ Ilmoitukset poistettu käytöstä
+ Uusia viestejä
+
+ Sinulle on uusia viestejä
+ %1$d viestiä %2$d:ssä keskustelussa
+
+
Pääsylupa vaaditaanJatka
@@ -851,6 +1012,8 @@
Lähettääksesi ääniviestin mene sovelluksen asetuksiin, valitse \"Käyttöluvat\" ja kytke päälle \"Mikrofoni\".Lähettääksesi tai vastaanottaaksesi tiedostoja mene sovelluksen asetuksiin, valitse \"Käyttöluvat\" ja kytke päälle \"Tallennustila\".Jakaaksesi sijaintisi mene sovelluksen asetuksiin, valitse \"Käyttöluvat\" ja kytke päälle \"Sijainti\".
+ Voit ottaa \"Ilmoitukset\" käyttöön navigoimalla kohteeseen \"Järjestelmäasetukset / Sovellukset / Delta Chat\"
+
Piirrää sumentaaksesiLisää teksti
@@ -901,12 +1064,13 @@
Vie varmuuskopioAutocrypt-asetukset siirretty.Poista tämä kirjautuminen? Kaikki tiedot poistetaan, mukaan lukien päästä-päähän-salauksen asetukset, yhteystiedot, keskustelut, viestit ja media. Tämä toiminto on peruuttamaton.
+
Sähköposti: %1$s\nKoko: %2$s\nTilin tunniste: %3$slähetettyvastaanotettuAvaa lokikansioAvaa nykyinen lokitiedosto
- Työkalupalkin kuvaketta ei voida poistaa, koska Delta Chat käynnistettiin \"Käynnistä pienennettynä\" -valinnalla.
+ Työkalupalkin kuvaketta ei voida poistaa, koska Delta Chat käynnistettiin \"Käynnistä pienennettynä\" -valinnalla.Oikeinkirjoitusehdotusta ei löydy.Näytä ikkunaSOCKS5-tuki on kokeellinen. Käytä omalla vastuulla. Jos annat osoitteen sähköpostikenttään, DNS-etsintää ei tunneloida SOCKS5 läpi.
@@ -972,14 +1136,19 @@
- Ilmoitukset taustalla
- Käyttää yhteyttä palvelimeesi taustalla. Akun käytön optimointi on poistettava käytöstä.
+ Välitön toimitus
+ Käytä push -palvelua
+ Luotettavat push -ilmoitukset chatmail -palvelimille
+ Lopeta push -palvelun käyttö?\n\nSe saattaa hidastaa ilmoitusten toimitusta.
+ Käytä taustayhteyttä
+ Vaatii akun optimoinnin käytöstä poistoa, käytä jos push -palvelu ei ole saatavilla
+ Pakota yhteys taustalla
+ Aiheuttaa pysyvän ilmoituksen
+
Yhteyden ylläpitämiseksi sähköpostipalvelimen kanssa ja viestien vastaanottamiseksi taustalla, poista akun käytön optimointi käytöstä seuraavassa vaiheessa.\n\nDelta Chat käyttää vain vähän laitteen suorituskyvystä, eikä juurikaan kuluta akkua.
- Luotettava yhteys taustalla
- Vaatii pysyvän ilmoituksenNapauta vastaanottaaksesi viestejä, kun Delta Chat on taustalla.Annoit jo luvan viestien vastaanottamiselle taustalla.\n\nJos et saa viestejä taustalla, tarkista myös järjestelmäasetukset.
-
-
+ Uusittu käyttöönotto 🐣 ja muuta:\n\n⚡️ Rekisteröidy nopeille chatmail -palvelimille (https://delta.chat/chatmail) tai käytä tavanomaisia sähköpostipalvelimia\n\n👉 PUSH -ilmoitukset toimivat millä tahansa chatmail -palvelimella\n\n👤 Vastaanota \"Liitettyjä yhteystietoja\" ja ota yhteys ystäviisi\n\n🥰 Nopeampi reaktioiden valinta ... LISÄÄ osoitteessa %1$s
+
diff --git a/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
similarity index 96%
rename from res/values-fr/strings.xml
rename to src/main/res/values-fr/strings.xml
index 7ead23020..44be67dd3 100644
--- a/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -284,7 +284,6 @@
Messages de l\'appareilMessages générés localementLes messages dans cette discussion sont générés localement par votre application Delta Chat. Cela vous permet de recevoir des informations concernant les mises à jour et problèmes rencontrés à l\'utilisation.
- Bienvenue sur Delta Chat ! – Delta Chat ressemble à d\'autres applications de messagerie populaires, mais n\'implique pas un contrôle centralisé, le traçage ou la revente de vos données, de celles de vos amis, vos collègues ou votre famille à de grandes organisations.\n\nD\'un point de vue technique, Delta Chat est une application de courrier électronique avec une interface de discussion instantanée moderne. Un courriel retoiletté si vous voulez 👻\n\nUtilisez Delta Chat avec n\'importe qui parmi des milliards de personnes : vous avez seulement besoin de leur adresse de courriel. Les destinataires n\'ont pas besoin d\'installer Delta Chat, d\'accéder à des sites internet ni de s\'inscrire où que ce soit – mais s\'ils le souhaitent, vous pouvez évidemment les diriger vers 👉 https://get.delta.chat Mettre à jour le contactÉpingler la discussion
@@ -404,6 +403,7 @@
Glisser pour annulerAppuyer et maintenir pour enregistrer un message vocal, relâcher pour l’envoyerBoîte de réception vide. Appuyer sur \"+\" pour commencer une nouvelle discussion.
+
Vous pouvez discuter avec d\'autres utilisateurs de Delta Chat et avec n\'importe quelle adresse de courriel.Toutes les discussions sont archivées.\nAppuyer sur \"+\" pour commencer une nouvelle discussion.Partager avec
@@ -421,7 +421,6 @@
Réessayer d\'envoyer le messageVous ne pouvez pas écrire car vous ne faites pas partie de ce groupe. Pour le rejoindre, demandez à un membre.
- Cette discussion contient des messages générés localement. Par conséquent, l\'écriture est désactivée.Envoyer des messages dans des listes de diffusion n\'est pas encore possibleImpossible d\'afficher ce type de fichier : %sÉchec du chargement de la pièce jointe
@@ -441,7 +440,6 @@
Envoyer \"%1$s\" àEnvoyer un message à
-
Afficher les positions pour une périodeAfficher les traces
@@ -513,6 +511,7 @@
Vérifiez que les deux appareils sont bien connectés au même Wi-Fi ou réseau.Crée un code QR que vous pouvez scanner avec le deuxième appareil pour copier le compte.Installer Delta Chat sur votre autre appareil (https://get.delta.chat)
+
Lancez Delta Chat, appuyez sur \"Ajouter comme deuxième appareil\" et scannez le code affiché ici.Scanner pour configurer un deuxième appareil pour %1$s
@@ -558,11 +557,11 @@
%1$s sur %2$s utilisé
-
- Messagerie instantanée par courriel.Scanner le code d\'invitationConnexion
+
Se connecter au compte courriel
+
Se connecter avec un compte de courriel existant.Pour les fournisseurs de courriel connus, des paramètres supplémentaires sont automatiquement configurés. Parfois, IMAP doit être activé dans l\'interface Web. Consultez votre fournisseur de courriel ou vos amis pour obtenir de l\'aide.Il n\'y a pas de serveur Delta Chat, vos données restent sur votre appareil !
@@ -628,13 +627,12 @@
Photo de profilContacts bloquésSi vous bloquez des contacts, ils seront affichés ici.
+
Mot de passe et compteVotre image de profil, votre nom et votre signature seront envoyés avec vos messages lorsque vous communiquerez avec d\'autres utilisateurs.Votre nomSignature
-
- Envoyé depuis Delta Chat: https://delta.chatEntrer les envois de clésAppuyez sur la touche Entrée pour envoyer des messages texteQualité du média en sortie
@@ -685,9 +683,9 @@
SauvegardeSauvegarder les discussions sur un stockage externeUne sauvegarde vous aide à configurer une nouvelle installation sur cet appareil ou sur un autre.\n\nLa sauvegarde contiendra tous vos messages, tous vos contacts et toutes vos discussions, ainsi que vos paramètres de chiffrement de bout en bout Autocrypt. Conservez le fichier de sauvegarde dans un endroit sûr, ou supprimez-le aussitôt utilisé.
-
+
Exporter %1$s
-
+
Exporter les %1$d comptesDémarrer la sauvegardeSauvegarde effectuée avec succès sur %1$s
@@ -706,6 +704,7 @@
Si vous désactivez cette option, assurez-vous que votre serveur et vos autres clients sont configurés en conséquence.\n\nSinon des choses pourraient ne pas fonctionner du tout.Regarder le dossier Messages envoyésM\'envoyer une copie
+
Obligatoire pour utiliser ce compte sur plusieurs appareils.Déplacer automatiquement vers le dossier DeltaChatLes discussions sont déplacées pour éviter d\'encombrer le dossier Boîte de réception
@@ -741,7 +740,6 @@
Édition du profilDésactiver IMAP IDLEN\'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.
-
Résultats de la recherchePas d\'emoji trouvé
@@ -757,7 +755,6 @@
Réactions
-
Supprimer les anciens messagesSupprimer les messages de l\'appareil
@@ -783,7 +780,9 @@
Après 1 année
+
Autocrypt
+
Autocrypt est une nouvelle spécification ouverte pour le chiffrement automatique de bout en bout des courriels.\n\nVotre configuration de bout en bout est créée automatiquement si nécessaire et vous pouvez la transférer entre vos appareils grâce aux messages de configuration Autocrypt.Envoyer le message de configuration AutocryptUn \"Message de configuration d\'Autocrypt\" partages en toute sécurité vos paramètres de bout-en-bout avec les autres applications conformes à Autocrypt.\n\nLa configuration sera chiffrée par un code d\'installation affiché ici et doit être saisi sur l\'autre appareil.
@@ -917,12 +916,12 @@
Pas de connexion Internet, ne peut pas effectuer la configuration du QR code.Créer une nouvelle adresse de courriel sur « %1$s » et se connecter ici ?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.
- Connexion réussie – votre adresse de courriel est %1$s\n\nSi vous le souhaitez, vous pouvez maintenant choisir un nom et une image de profil qui seront affichés aux personnes à qui vous écrivez.Le code QR scanné ne peut pas être utilisé pour ouvrir un nouveau compte.
+
Le code QR scanné permet de configurer un nouveau compte. Vous pouvez scanner le code QR à la configuration d\'une nouvelle installation de Delta Chat.
-
+
Se connecter au compte « %1$s » ?
-
+
Se connecter à « %1$s » ?\n\nVotre compte existant ne sera pas supprimé. Utiliser l\'élément de menu « Changer de compte » pour passer d\'un compte à l\'autre.%1$s vous a invité à rejoindre ce groupe.\n\nEn attente de la réponse de l’appareil de %2$s…
@@ -1016,12 +1015,13 @@
Exporter la sauvegardeConfiguration Autocrypt transférée.Supprimer cette connexion ? Tout sera effacé, y compris vos paramètres de chiffrement de bout en bout, vos contacts, discussions, messages et fichiers multimédia. Cette action est irrévocable.
+
Adresse: %1$s\nTaille: %2$s\nID du compte: %3$senvoyéreçuOuvrir le dossier JournalOuvrir le fichier Journal courant
- L\'icône système ne peut pas être enlevé car Delta Chat a été démarré avec l\'option --minimized.
+ L\'icône système ne peut pas être enlevé car Delta Chat a été démarré avec l\'option --minimized.Aucune propositions de correction trouvées.Afficher la fenêtreLe support de SOCK5 est actuellement expérimental. Utilisez le à vos risques et périls. Si vous saisissez une adresse de courriel, une requête DNS sera effectuée sans passer par SOCK5.
@@ -1086,19 +1086,9 @@
Delta Chat veut enregistrer les images dans votre bibliothèque photo.
-
- Notifications d\'arrière-plan
- Utilise une connexion à votre serveur en arrière-plan et requiert la désactivation de l\'optimisation de la batteriePour 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\nDelta Chat utilise peu de ressources et prend garde à ne pas vider votre batterie.
- Connexion d\'arrière-plan fiable
- Requiert une notification permanenteTouchez ici pour recevoir des messages pendant que DeltaChat est en arrière-plan.Vous avez déjà autorisé Delta Chat à recevoir des messages en arrière plan.\n\nSi vous ne les recevez toujours pas en arrière plan, vérifiez les paramètres de votre système.
-
-
- Nouveautés :\n\n💌 Désormais, les discussions à deux garantissent le chiffrement de bout en bout avec les contacts connus.\n\n😌 Pour plus de simplicité, ces contacts et discussions sont marqués d\'un badge vert.\n\n👥 Lorsque cela est possible, les groupes créés sont automatiquement chiffrés de bout en bout.\n\n🔄 Vos listes Accepté/Bloqué, Archivé, Épinglé et Sourdine sont synchronisées sur chacun de vos appareils.
-
- Encore plus d\'améliorations à suivre ! Appareil photo, messages vocaux, sauvegardes complètes, lecteur d\'écran, arrière-plan différencié pour chaque compte, option \"sélectionner tout\" dans la galerie, panorama de webxdc, etc. Sinon, retrouvez-les toutes sur : %1$s
-
+
diff --git a/res/values-gl/strings.xml b/src/main/res/values-gl/strings.xml
similarity index 97%
rename from res/values-gl/strings.xml
rename to src/main/res/values-gl/strings.xml
index 61e194bc0..45f8ac5fc 100644
--- a/res/values-gl/strings.xml
+++ b/src/main/res/values-gl/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -255,7 +255,6 @@
Mensaxes do dispositivoMensaxes xeradas localmenteAs mensaxes de esta conversa xéranse localmente na túa app Delta Chat. Os creadores utilízanas para informar acerca de actualizacións e problemas durante a utilización.
- Benvida a Delta Chat! – Delta Chat ten o aspecto de outras apps de mensaxería, pero non implica que teña un control centralizado, rastrexo ou que te venda a ti, aos teus amigos, colegas ou familia as megacorporacións.\n\nTécnicamente, Delta Chat é unha aplicación de correo electrónico cunha interface moderna de mensaxería. O correo travestido, se así o prefires 👻\n\nUtiliza Delta Chat con millóns de persoas: simplemente utiliza o seu enderezo de correo electrónico. Os correspondentes non precisan instalar Delta Chat, visitar sitios web ou rexistrarse en ningún lugar - claro que, por suposto, se queren, podes convidalos a 👉 https://get.delta.chatEditar contactoFixar conversa
@@ -365,6 +364,7 @@
Desliza para cancelarToca e mantén para gravar mensaxe de voz, solta para enviarCaixa de entrada baldeira.\n Preme \"+\" para iniciar conversa.
+
Podes conversar con outra usuaria Delta Chat e con calquera enderezo de correo.Arquiváronse todas as conversas.\nPreme \"+\" para iniciar unha nova.Compartir con
@@ -382,7 +382,6 @@
Reintentar o envío da mensaxeNon podes escribir porque non estás no grupo. Para unirte, solicítallo a outro membro.
- A conversa contén mensaxes creados localmente. Polo tanto non podes escribir ningunha mensaxe.Aínda non está soportado o envío de emails a listas de correoNon se pode motrar este tipo de ficheiro: %sErro ao cargar o anexo
@@ -481,11 +480,11 @@
Utilizado %1$s de %2$s
-
- Chat a través de Email.Escanear código de conviteAcceder
+
Accede ao teu servidor
+
Accede cunha conta de correo existentePara os provedores de correo máis frecuentes os axustes establécense automaticamente. Porén poderías ter que activar IMAP nos seus axustes. Consulta o teu provedor de correo ou aos amigos se tes dúbidas.Non hai servidores Delta Chat, os teus datos permanecen no dispositivo.
@@ -551,13 +550,12 @@
Imaxe de perfilContactos bloqueadosMóstranse aquí os contactos que bloqueas.
+
Contrasinal e contaA túa foto de perfil e nome móstranse xunto coas túas mensaxes ao comunicarte con outras persoas. A información xa enviada non se pode agochar o borrar.O teu nomeTexto de firma
-
- Enviado con mensaxería Delta Chat: https://delta.chatA tecla Enter envíaAo premer Enter enviarás a mensaxeCalidade dos medios saíntes
@@ -623,6 +621,7 @@
Se desactivas esta opción, asegúrate de que o servidor e os teus outros clientes están configurados de xeito acorde.\n\nSe non, algo podería fallar.Vixiar cartafol EnviadosEnviar copia a ti mesmo
+
Requerido se utilizas esta conta en varios dispositivos.Mover automáticamente ao cartafol DeltaChatAs conversas móvense do cartafol de Entrada para evitar saturalo.
@@ -694,7 +693,9 @@
Após 1 ano
+
Autocrypt
+
Autocrypt é un xeito novo de cifrado extremo-a-extremo automático do correo electrónico.\n\nOs axustes extremo-a-extremo créanse de xeito automático cando se precisan e son transferidos entre dispositivos con Mensaxes de Configuración Autocrypt.Enviar Mensaxe de Configuración AutocryptUnha Mensaxe de Configuración Autocrypt comparte de xeito seguro o teu cifrado extremo-a-extremo con outras apps compatibles con Autocrypt.\n\nO axuste realízase cifrado e protexido cun código que se debe escribir no outro dispositivo.
@@ -793,8 +794,8 @@
Sen conexión a internet, non se pode facer o axuste por código QRCrear un novo enderezo de correo en \"%1$s\" e acceder ali?Crear un novo enderezo de email en \"%1$s\" e acceder?\n\nNon se eliminará a conta actual. Usa \"Cambiar de conta\" para cambiar entre as túas contas.
- Conexión correcta—o teu enderezo é %1$s\n\nSe queres, agora podes escribir un nome e unha imaxe de avatar que será mostrado ás persoas coas que te comunicas.O código QR escaneado non se pode utilizar para crear unha nova conta.
+
O código QR escaneado é para crear unha nova conta. Podes escanear o código QR cando configures unha nova instalación de Delta Chat.%1$s convidoute a este grupo.\n\nAgardando a que responda o dispositivo de %2$s ...
@@ -877,12 +878,13 @@
Exportar respaldoAxuste Autocrypt transferido.Eliminar esta conexión? Borrarase todo, incluíndo os axustes de cifrado, contactos, conversas, mensaxes e ficheiros de medios. Esta acción non ten volta atrás.
+
Email: %1$s \nTamaño: %2$s \nId. da conta: %3$senviadorecibidoAbrir cartafol do rexistroAbrir ficheiro actual do rexistro
- A icona da bandexa do sistema non se pode desactivar porque Delta Chat iniciouse coa opción --minimized.
+ A icona da bandexa do sistema non se pode desactivar porque Delta Chat iniciouse coa opción --minimized.Non se atopan suxestións de escrita.Mostrar xanelaO soporte para SOCKS5 aínda é experimental. Úsao baixo a túa responsabilidade. Se escribes un enderezo no campo do email realizará unha busca DNS que non pasará a través de SOCKS5.
@@ -942,15 +944,9 @@
Delta Chat quere gardar imaxes na galería de fotos.
-
- Notificacións en segundo plano
- Utiliza a conexión en segundo plano co servidor e require que ignores as optimizacións de batería.Para manter a conexión co servidor de correo e recibir mensaxes en segundo plano, ignora as optimizacións de batería no seguinte paso.\n\nDelta Chat utiliza moi poucos recursos e preocúpase de non esgotar a batería.
- Conexión estable en segundo plano
- Require unha notificación permanenteToca aquí para recibir mensaxes mentras Delta Chat está en segundo plano.Xa permitiches que Delta Chat reciba mensaxes en segundo plano\n\nSe aínda así non recibes as mensaxes, por favor comproba os axustes do sistema.
-
diff --git a/res/values-hr/strings.xml b/src/main/res/values-hr/strings.xml
similarity index 98%
rename from res/values-hr/strings.xml
rename to src/main/res/values-hr/strings.xml
index 5ca0786c0..223d2acb9 100644
--- a/res/values-hr/strings.xml
+++ b/src/main/res/values-hr/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -179,6 +179,7 @@
Proslijedi do...Profilna slikaBlokirani kontakti
+
Lozinka i računVaše imeEnter šalje poruku
diff --git a/src/main/res/values-hu/strings.xml b/src/main/res/values-hu/strings.xml
new file mode 100644
index 000000000..ecf53f02f
--- /dev/null
+++ b/src/main/res/values-hu/strings.xml
@@ -0,0 +1,1159 @@
+
+
+
+ Delta Chat
+ OK
+ Mégse
+
+ vagy
+ Keresés kiürítése
+ Igen
+ Nem
+ Kiválasztás
+ Bekapcsolva
+ Kikapcsolva
+ Alapértelmezett
+ Alapértelmezett (%1$s)
+ Alapértelmezett (ugyanaz, mint fent)
+ Egyéni
+ Egyik sem
+ Automatikus
+ Szigorú
+ Megnyitás
+ Letöltés
+ Letöltés...
+ Csatolmány megnyitása
+ Csatlakozás
+ Újracsatlakozás
+ Törlés
+ Infó
+ Frissítés
+ Hangulatjel
+ Csatolmány
+ Vissza
+
+ Ellenőrzött
+ Bezárás
+ Ablak bezárása
+ Továbbítás
+ Létrehozás
+ Később
+
+ Újraküldés
+
+ Archiválás
+
+ Archiválás visszavonása
+ Némítás
+ Eltűnő üzenetek
+ A csevegés minden tagjára vonatkozik, ha a Delta Chat-et használják; az üzeneteket továbbra is másolhatják, menthetik és továbbíthatják, vagy más e-mail klienseket használhatnak.
+ Mentés
+ Csevegés
+ Média
+ Profil
+ Főmenü
+ Csevegés indítása
+ Teljes üzenet megjelenítése...
+
+ Mind megjelölése olvasottként
+ Olvasottnak jelölés
+
+ Olvasás
+
+ Betöltés...
+ Elrejtés
+ Bekapcsolás
+ Távoli képek betöltése
+
+ A távoli képek követhetik önt.\n\nEz a beállítás betűtípusokat és egyéb tartalmakat is betölthet. Ha letiltja, beágyazott vagy gyorsítótárazott képek jelenhetnek meg.\n\nTávoli képek betöltése?
+ Mindig
+ Mindig töltse be a távoli képeket
+ Egyszer
+ Figyelmeztetés megjelenítése
+ Jelszó megjelenítése
+ Jelszó elrejtése
+ Most nem
+ Soha
+ Egy pillanat...
+ Kész
+ Visszavonás
+ Offline
+
+ Tovább
+ Hiba
+ Hiba: %1$s
+ Nem található alkalmazást az ilyen típusú adatok kezeléséhez.
+ Nincs böngésző telepítve.
+ %1$s nem található.
+ Vágólapra másolva.
+ Névjegyek
+ E-mail cím
+ Rossz e-mail cím.
+ Jelszó
+ Jelenlegi jelszó
+ Most
+
+ Veszély
+ Ma
+ Tegnap
+ Ezen a héten
+ Ebben a hónapban
+ Múlt héten
+ Múlt hónapban
+
+ Utoljára látta ekkor: %1$s
+
+ Utoljára látta: %1$s
+ Utoljára látta: Ismeretlen
+
+
+ %d perce
+ %d perce
+
+
+
+ %d órája
+ %d órája
+
+
+ %d beszélgetés
+ %d csevegés
+
+
+ %d névjegy
+ %d névjegy
+
+
+ %d üzenet
+ %d üzenet
+
+
+ %d tag
+ %d tag
+
+
+ %d címzett
+ %d címzett
+
+
+
+ %d kiválasztva
+ %d kiválasztva
+
+
+ Ön
+ Piszkozat
+ Kép
+
+ Válasz
+ Gif
+
+ Matrica
+ Hozzáadás a matrica gyűjteményhez
+ A matricák hozzáadásához koppintson a „Matricamappa megnyitása” lehetőségre, hozzon létre egy almappát a matricacsomagnak, és húzza oda a kép- és matricafájlokat.
+ Matricamappa megnyitása
+ Képek
+ Hang
+ Hangüzenet
+ Továbbított
+ Továbbított üzenet
+
+ Továbbítva %1$s által
+ Videó
+ Dokumentumok
+ Névjegy
+ Kamera
+
+ Rögzítés
+ Kamera váltás
+ Váltás teljes képernyős módra
+ Helyszín
+ Helyszínek
+ Galéria
+ Képek és videók
+ Fájl
+ Fájlok
+
+ Alkalmazás
+
+ Alkalmazások
+ Ismeretlen
+
+ Zöld
+ Piros
+ Kék
+ Narancs
+ Cián
+ Lila
+ Magenta
+ Fehér
+
+ Nagyítás
+ Extra kicsi
+ Kicsi
+ Normál
+ Nagy
+ Nagyon nagy
+
+ Gyors
+ Lassú
+
+
+ Új névjegy
+ Névjegy hozzáadása kézzel
+ A kézzel hozzáadott névjegyek szöveges üzenetek küldésére használhatók a klasszikus e-mailekhez és nem garantált a végpontok közöttii titkosításuk.
+ Új csevegés
+ Új csoport
+ Csevegés klónozása
+
+ Adáslista
+ Adásliták
+ Új adáslista
+ Címzettek hozzáadása
+ Adáslista szerkesztése
+ Adáslista neve
+ Adjon meg egy nevet az adáslistának
+ Küldés
+ Váltás hangulatjel billentyűzetre
+ Csoport szerkesztése
+ Csoportnév és -kép
+ Minden helyszín megjelenítése
+ Csevegés archiválása
+ Archiválás visszavonása
+ Fájl csatolása
+ Csoport elhagyása
+ Csevegés törlése
+
+ Csevegés kiürítése
+ Biztosan törli a következőt: „%1$s”?
+ Üzenetek törlése
+ Névjegy törlése
+ Biztosan törli ezt a helyszínt?
+ Üzenet részletei
+ Vágólapra másolás
+ Kiválasztás másolása
+ Hívatkozás másolása
+ Szöveg másolása
+ Kép másolása
+ E-mail másolása
+ Beillesztés a vágólapról
+ A(z) „%1$d” hivatkozást nem lehet megnyitni a böngészőben. Szeretné inkább a linket a vágólapra másolni?
+ Üzenet továbbítása
+ Válasz az üzenetre
+ Értesítések némítása
+ Némítás kikapcsolása
+ Csatolmány exportálása
+ Csatolmányok exportálása
+ Minden média
+
+ Megjelenítés a csevegésben
+ Alkalmazás megjelenítése a csevegésben
+ Megosztás
+
+ Blokkolás
+ Névjegy letiltása
+ Tiltás visszavonása
+ Elfogadás
+ Lejátszás
+ Szünet
+ Ugrás az aljára
+ Ugrás a tetejére
+ Segítség
+ Mi az a Webxdc?
+ Adatvédelmi irányelvek
+ Összes kiválasztása
+ Csevegés kiválasztása
+ Több kiválasztása
+ Név szerkesztése
+ Beállítások
+ Haladó
+ Profil megtekintése
+ Nagyítás
+ Kicsinyítés
+ Naplófájl mentése
+ További beállítások
+ Helyesírás tanulása
+ Csevegés ellenőrzési naplófájl
+ Ugrás az üzenetre
+ JSON másolása
+ Piszkozat cseréje
+ Helyszín megosztása a csoport összes tagjával
+ Eszközüzenetek
+ Helyileg generált üzenetek
+ Ebben a csevegésben üzenetek jelennek meg az eszközön, amelyek az alkalmazás frissítéseiről és a használat során felmerülő problémákról tájékoztatnak.
+ Lépjen kapcsolatba az ismerőseivel!\n\n🙌 Koppintson a „QR-kódra” mind a két eszköz főképernyőjén. Válassza a „QR-kód beolvasása” lehetőséget az egyik eszközön, és irányítsa a másik eszközre\n\n🌍 Ha nem ugyanabban a szobában tartózkodnak az ismerősével, akkor szkenneljen videohíváson keresztül, vagy ossza meg a meghívó hivatkozást a „QR-kód bolvasása”-ból.\n\nMajd: Élvezze az üzenetküldés-élményt a valaha létezett legnagyobb decentralizált hálózaton keresztül, ami az e-mail és - más népszerű alkalmazásokkal ellentétben - központi kiszolgáló vagy nyomon követés nélkül, illetve anélkül, hogy önt, ismerőseit, kollégáit vagy családját nagy szervezeteknek adná el.
+ Névjegy szerkesztése
+
+ Csevegés kitűzése
+
+ Csevegés kitűzésének visszavonása
+
+ Kitűzés
+
+ Kitűzés visszavonása
+ Nem található az eredeti üzenet
+ Válasz privátban
+ Forráskód
+
+ Hozzáadás a kezdőképernyőhöz
+ Támogatás
+
+ Némítás 1 órára
+ Némítás 2 órára
+ Némítás 1 napra
+ Némítás 7 napra
+ Némítás örökre
+
+ 5 percre
+ 30 percre
+ 1 órára
+ 2 órára
+ 6 órára
+
+
+ A következő fájl elküldése neki: %s?
+ A következő %d fájl elküldése neki: %s?
+
+ A fájl mentve ide: „%1$s”.
+
+ Videócsevegés
+ Meghívja videócsevegésbe őt: %1$s?
+ Ehhez mindkét oldalon kompatibilis alkalmazás vagy böngésző szükséges.
+ %1$s meg lett híva egy videócsevegésbe.
+ Ön elküdött egy videócsevegés meghívót.
+ Koppintson ide a csatlakozáshoz.
+ Koppintson ide a megnyitáshoz.
+ Videócsevegés példány
+ Az ön videócsevegés példánya
+ Például: https://your-server.org/$ROOM
+ Ha engedélyezve van, akkor minden csevegésből indíthat videócsevegést. Kompatibilis alkalmazást vagy böngészőt igényel mindkét oldalon.
+ „%1$s” használata mások meghívásához a videócsevegésekbe?\n\nAmint beállította, minden egyes csevegésből indíthat videócsevegést. Ez minden korábbi beállítás helyébe lép a videócsevegéseknél.
+ Videócsevegés meghívó
+ Ön meg lett híva egy videócsevegésbe, kattintson ide: %1$s a csatlakozáshoz.
+
+
+ Biztosan ki akar lépni a csoportból?
+
+ Biztosan töröl %d csevegést? Többé nem jelenik meg a csevegőlistában; az üzenetek viszont a szerveren maradnak.
+ Biztosan töröl %d csevegést? Többé nem jelennek meg a csevegőlistában; az üzeneteik viszont a kiszolgálón maradnak.
+
+ Biztosan törölni szeretné ezt az üzenetet?
+
+ %d üzenet törlése innen is és a kiszolgálóról is?
+ %d üzenet törlése innen is és a kiszolgálóról is?
+
+
+ %d üzenet törlése?
+ %d üzenet törlése?
+
+ Továbbítja az üzenetet a számára: %1$s?
+ Továbbítja az üzenetet a következő csevegésbe: %1$d?
+ A mellékletek exportálása lehetővé teszi, hogy más alkalmazások is hozzáférjenek azokhoz az eszközön.\n\nFolytatja?
+ Blokkolja ezt az ismerősét? Többé nem fog üzeneteket kapni tőle.
+ Feloldja ennek az ismerősének a blokkolását? Ezután képes lesz üzeneteket fogadni tőle.
+ Ismerős törlése?\n\nA folyamatban lévő csevegésekkel rendelkező vagy a rendszer névjegyzékéből származó ismerősök nem törölhetőek véglegesen.
+ %1$s nevű ismerősének tölése?\n\nA folyamatban lévő csevegésekkel rendelkező vagy a rendszer névjegyzékéből származó ismerősök nem törölhetőek véglegesen.
+ A folyamatban lévő csevegésekkel rendelkező ismerősök nem törölhetőek.
+ Csevegés vele: %1$s?
+ %s törlése?
+
+ Eltávolítja a csoportból őt: %1$s?
+
+ Eltávolítja az adáslistából a következőt: %1$s?
+ Biztosan megnyitja ezt a hivatkozást?
+
+
+
+ Névjegyek
+ Adjon meg egy nevet vagy egy e-mail címet
+ Írja be a fenti e-mail címet
+ Még nincsenek névjegyek.
+
+
+
+
+ %d csevegés archiválva
+ %d csevegés archiválva
+
+
+ %d csevegés visszavonva az az archiválásból
+ %d csevegés visszavonva az archiválásból
+
+ Archivált csevegések
+ Írjon be egy üzenetet.
+ Kamera nem elérhető.
+ Nem lehet hangfelvételt készíteni.
+
+ %d új üzenet
+ %d új üzenet
+
+
+ Üzenet küldése neki: %1$s.
+ Az adáslistán a címzettek csak olvasható módban kapják meg az üzeneteket öntől.
+ Mások csak az első üzenet elküldése után fogják látni ezt a csoportot.
+ Visszavonás csúsztatással
+ Hangüzenet rögzítéséhez koppintson és tartsa lenyomva; Az elküldéshez engedje el.
+ Nincsenek csevegések.\nÉrintse meg a „+” gombot egy új csevegés indításához.
+
+ Cseveghet más Delta Chat felhasználókkal, valamint bármilyen e-mail címet használhat.
+ Minden csevegés archiválva van.\nÉrintse meg a „+” gombot egy új csevegés indításához.
+ Megosztás ezzel
+ Üzenet
+ Archivált
+ Kérelem
+ Nincsenek üzenetek.
+ Magamnak küldött üzenetek
+ Az archivált csevegések itt fognak megjelenni.
+ Mentett üzenetek
+ • Üzenetek továbbítása az egyszerű hozzáférés érdekében\n\n• Jegyzetek vagy hangjegyzetek készítése\n\n• Médiaanyagok csatolása a mentéshez
+
+ Mentett
+ Mentés mint
+ Üzenet újraküldése
+
+ Ahhoz hogy üzenetet küldhess ebbe a csoportba be kell lépned. A csatlakozáshoz kérdezz meg egy másik tagot.
+ A levelezési listákon történő üzenetküldés még nem támogatott
+ Ezt a fájltípust nem lehet megjeleníteni: %s
+ Nem sikerült betölteni a csatolmányt
+
+ Felvétel zárolása
+
+
+ Levelezőlista
+ A levelezőlista nevének és képének módosítása csak ezen az eszközön érvényes.
+
+
+
+ Indítás...
+
+ Először fogadja el a csevegési kérelmet.
+
+ „%1$s” küldése neki...
+
+ Üzenet küldése neki...
+ Valósidejű Webxdc csatornák
+ A Webxdc valós idejű API-k engedélyezése az eszközök közötti közvetlen kapcsolatok létrehozásához.
+
+
+ Helyszínek megjelenítése időkeretben
+ Nyomvonalak megjelenítése
+ Érdekes helyszín megosztása
+
+
+ Az ehhez a csevegéshez tartozó rendszerüzenetek itt fognak megjelenni
+ Csevegés ellenőrzési naplófájl ehhez: %1$s
+ Csak a rendszer- és információs üzeneteket jeleníti meg; hasznos a legutóbbi csevegési műveletek megtalálásához anélkül, hogy sok üzenetet görgetne át.
+
+
+
+ Ne kérdezzen rá újra erre: %1$s
+ Gyanús hivatkozás észlelve
+
+ Biztosan meglátogatja a következőt: %1$s?
+
+ Ez a hivatkozás félrevezetheti a különböző betűkészletekből származó, hasonló kinézetű karaktereket. Az így %1$s felcímkézett linket követve eljuthat ide: %2$s, ami a nem latin betűs karakterek esetében normális. Ha nem ilyen karakterekre számított, ez a hivatkozás káros lehet.
+
+
+
+ Keresés
+ Keresés a csevegésben
+ Fájlok keresése
+ Csevegések, névjegyek és üzenetek keresése
+ Nincs a(z) „%s” keresésnek megfelelő találat.
+
+
+
+ Csoport neve
+ Csoport képe
+ Csoportkép törlése
+ Csoport képének megváltoztatása
+ Csoport készítése
+ Csoport nevének magaása.
+ Tagok felvétele
+ A csoport tagjának kell lennie, ahhoz, hogy ezt megtehesse.
+ Titkosítás
+ Megosztott csevegések
+ Kapcsolódó csevegések
+ Névjegy
+ Csoport
+ Galéria
+ Dokumentumok
+ Hivatkozások
+ Térkép
+ Az ebben a csevegésben megosztott képek és videók itt fognak megjelenni.
+ Az ebben a csevegésben megosztott dokumentumok és egyéb fájlok itt fognak megjelenni.
+ Az ebben a csevegésben megosztott képek itt fognak megjelenni.
+ Az ebben a csevegésben megosztott videók itt fognak megjelenni.
+ Az ebben a csevegésben megosztott hangfájlok és hangüzenetek itt fognak megjelenni.
+ Az ebben a csevegésben megosztott alkalmazások itt fognak megjelenni.
+ A bármelyik csevegésben megosztott média itt fog megjelenni.
+ Média előnézete
+
+ Tengelyarányrács
+
+ Négyzetrács
+ Üzenet küldése
+
+ %1$s megváltoztatta a címét erről: %2$s, erre: %3$s
+
+ Ön megváltoztatta a saját e-mail címét erről: %1$s erre: %2$s.\n\nHa most üzenetet küld egy ellenőrzött csoportba, az ottani ismerősei automatikusan lecserélik a z ön régi címét az új címére.\n\nEzért nagyon ajánlott beállítani, hogy a régi e-mail szolgáltatója minden e-mailt továbbítson-e az új e-mail címére. Ellenkező esetben lemaradhat azoknak az ismerőseinek az üzeneteiről, akik még nem kapták meg az új címét.
+
+
+
+
+ Második eszköz hozzáadása
+ Győződjön meg róla, hogy mindkét eszköz ugyanazon a Wi-Fi-n vagy hálózaton van-e
+ Ez egy QR-kódot hoz létre, amelyet a második eszközön beolvashat a profil másolásához.
+ Telepítse a Delta Chat-et a másik eszközére (https://get.delta.chat)
+
+ Indítsa el a Delta Chat-et, koppintson a „Már van bejelentkezésem / Hozzáadás második eszközként” lehetőségre, és olvassa be az itt látható kódot.
+
+ Második eszköz beállításának beolvasása a(z) %1$s számára
+ Hozzáadás második eszközként
+ Az első eszközön lépjen a „Beállítások / Második eszköz hozzáadása” menüpontra, és olvassa be az ott látható kódot.
+ Átmásolja a profilt a másik eszközről erre az eszközre?
+ A második eszköz beállításának megszakítása?
+ Ez érvényteleníti a vágólapra másolt QR-kódot.
+ (kísérleti, 1.36-os verzió szükséges)
+ ℹ️ A profil átkerül a második eszközre.
+
+ Profil készítése...
+
+ Várakozás a vevőeszközre...
+
+ Vevőeszköz csatlakoztatva...
+
+ Átvitel...
+ Hibaelhárítás
+
+
+
+ Beérkező üzenetek
+
+ Kimenő üzenetek
+
+ Tárhely mérete itt: %1$s
+ Tárhely
+
+ Nincs csatlakoztatva
+
+ Csatlakozás...
+
+ Frissítés...
+
+ Csatlakozva
+ Küldés...
+ Utolsó üzenet sikeresen elküldve.
+ Az ön szolgáltatója nem támogatja.
+
+ Üzenetek
+
+ %1$s/%2$s használatban
+
+
+
+
+ Új profil létrehozása
+
+ Már van profilom
+
+ Klasszikus e-mail bejelentkezés
+
+ Profil
+
+ Adatvédelmi irányelvek elolvasása
+
+ Adatvédelmi irányelvek ehhez: %1$s
+
+ További információ a profilokról itt: %1$s
+
+ Elfogadás és profil létrehozása
+
+ Másik szolgáltató használata
+ Chatmail kiszolgálók listája
+
+ Hozzon létre egy profilt, hogy csatlakozni tudjon a(z) „%1$s” nevű csoporthoz.
+
+ Hozzon létre egy profilt, hogy csevegni tudjon vele: %1$s.
+
+ Szeretne új profilt létrehozni és csevegni vele: %1$s?
+
+ Szeretne új profilt létrehozni és csatlakozni a „%1$s” szobához?
+
+ Biztonságos decentralizált csevegés
+ Meghívó kód beolvasása
+ Bejelentkezés
+
+ Jelentkezzen be az e-mail fiókjába
+
+ Bejelentkezés meglévő e-mail fiókkal
+ Az ismert e-mail szolgáltatók esetében a rendszer automatikus beállításokat hoz létre. Kivételes esetekben az IMAP-ot engedélyezni kell az e-mail szolgáltatójának webes beállításaiban. Forduljon az e-mail szolgáltatójához vagy ismerőseihez további segítségért.
+ A Delta Chat nem gyűjt felhasználói adatokat, minden az ön eszközén marad.
+ Bejövő
+ IMAP bejelentkezési név
+ IMAP kiszolgáló
+ IMAP port
+ IMAP biztonság
+ Kimenő
+ SMTP bejelentkezési név
+ SMTP jelszó
+ SMTP kiszolgáló
+ SMTP port
+ SMTP biztonság
+ Jogosultság kezelési eljárás
+
+ SOCKS5
+ SOCKS5 használata
+ SOCKS5 kiszolgáló
+ SOCKS5 port
+ SOCKS5 felhasználó
+ SOCKS5 jelszó
+ Folytatja az egyszerűsített beállítást?
+ A megadott e-mail cím támogatja az egyszerűsített beállítást (OAuth 2.0).\n\nA következő lépésben engedélyezze a Delta Chat számára, hogy az e-mailen keresztüli csevegés alkalmazásaként működjön.\n\nA Delta Chat nem gyűjt felhasználói adatokat, minden adat az eszközön marad.
+ Tanúsítvány ellenőrzése
+ Adjon meg egy érvényes e-mail címet
+ Adjon meg egy érvényes kiszolgáló / IP-címet
+ Adjon meg egy érvényes portot (1-65535)
+ Adjon meg egy érvényes e-mail címet és egy jelszót
+ Biztonsági mentés visszaállítása
+ A biztonsági mentés itt található: „%1$s”.\n\nAz összes adatot és beállítást szeretné importálni és használni belőle?
+ A biztonsági mentés nem található.\n\nMásolja a biztonsági mentést ide: „%1$s” és próbálja újra. Másik lehetőségként nyomja meg az „Üzenetküldés indítása” gombot a normál beállítási folyamat folytatásához.
+
+ Nem lehetett bejelentkezni ide: „%1$s”. Ellenőrizze, hogy a megadott e-mail cím és a jelszó helyes-e.
+
+ Érvénytelen tanúsítványok elfogadása
+ Használt beállítások:
+ Profilváltás
+ Profil hozzáadása
+ Profil törlése
+ Biztosan törölni szeretné a profiladatait?
+ A(z) „%s” nevű profilhoz tartozó mindet adat ezen az eszközön törölve lesz, beleértve a végpontok közötti titkosítás beállításait, a névjegyeket, a csevegéseket, az üzeneteket és a médiát. Ez a művelet nem vonható vissza.
+ Konfigurálatlan profil
+ Nyissa meg a profilt a konfiguráláshoz.
+ Próbáljon meg most csatlakozni
+ Minden szinkronizálása
+
+ A konfiguráció sikertelen. Hiba: %1$s
+
+
+
+ Továbbítás…
+ %1$d fájl megosztása a kiválasztott csevegésben?\n\nA fájlok eredeti méretükben, változatlanul kerülnek elküldésre (pl. a képek és videók nem kerülnek újrakódolásra).
+ %1$d fájl megosztása a vele való csevegésben: %2$d?\n\nA fájlok eredeti méretükben, változatlanul kerülnek elküldésre (pl. a képek és videók nem kerülnek újrakódolásra).
+ Megosztja ezt a szöveget a vele való csevegésben: %1$d?\n\n„%2$s”
+ A megosztás megszakadt a hiányzó engedélyek miatt.
+
+
+
+ Egyedi használata: %s
+ Alapértelmezett használata: %s
+ Profiladatok
+ Profilkép
+ Letiltott névjegyek
+ A letiltott névjegyek itt fognak megjelenni
+
+ Fiók és jelszó
+ A profilképe, neve és életrajza az üzenetekkel együtt kerül elküldésre, amikor más felhasználókkal kommunikál.
+ Név
+
+ Életrajz
+ Küldés \"enterrel\"
+ Az Enter billentyű megnyomásával szöveges üzeneteket küldhet
+ Kimenő média minősége
+ kiegyensúlyozott
+ Rosszabb minőség, kis méret
+ Rezgés
+ Képernyőbiztonság
+
+ Képernyőképek készítésének megakadályozása a futó alkalmazások listájában és az alkalmazáson belül
+ A képernyő biztonsági beállításának alkalmazásához indítsa újra az alkalmazást.
+ Értesítések
+ Megjelenítés
+ Prioritás
+ Rendszer értesítések engedélyezése az új üzenetekről
+ Üzenet tartalmának megjelenítése az értesítésben
+ Az értesítésekben megjelenik az üzenet feladója és első szavai
+ LED színe
+ Hang
+ Csendes
+ Adatvédelem
+ Csevegések és média
+ Alapbeállítás
+
+ Világos
+ Sötét
+ Megjelenés
+ Sötét
+ Nyelv
+ Inkognitó billentyűzet
+
+ Tanulás letiltásának kérése a billentyűzettől
+ Olvasási visszaigazolások
+ Ha az olvasási visszaigazolások le vannak tiltva, ön sem fogja látni mások olvasási visszaigazolásait.
+ Kiszolgáló
+ Titkosítás
+ Privát kulcsok kezelése
+ Rendszer hangulatjelek használata
+ A Delta Chat beépített hangulatjel-támogatásának letiltása
+ Alkalmazás kamerájának használata
+ Az alkalmazáson belüli kamera általában kevesebb funkcióval rendelkezik, mint a rendszer kamerája.
+ A rendszer névjegyzékének olvasása
+ Csevegések létrehozása a névjegyzékéből származó ismerőseivel. Egyes szolgáltatóknál először a végpontok közötti titkosítás beállítására van szükség.
+ Alkalmazás hozzáférés
+ Csevegések
+ Csevegésen belüli hangok
+ Üzenetek betűmérete
+ Naplófájl megtekintése
+ A naplófájl elmentve a „Letöltések” mappába
+ Nem sikerült elmenteni a naplófájlt
+ Naplófájl
+ Egyéb
+ Biztonsági mentés
+ Csevegések biztonsági mentése külső tárhelyre
+ A biztonsági mentés segít egy új telepítés beállításában ezen vagy egy másik eszközön.\n\nA biztonsági mentés tartalmazza az összes üzenetet, névjegyet és csevegést, valamint a végpontok közötti autocrypt beállításokat. Tartsa a biztonsági mentést biztonságos helyen, vagy törölje, amint lehetséges.
+
+ %1$s exportálása
+
+ Mind a(z) %1$d profil exportálása
+ Biztonsági mentés indítása
+ A biztonsági mentés sikeresen létrehozva itt: „%1$s”.
+ Privát kulcsok kezelése
+ Privát kulcsok exportálása
+ Privát kulcsok exportálása ide: „%1$s”?
+ Privát kulcsok importálása
+ Titkosítási kulcsok importálása innen: „%1$s”?\n\n• A meglévő titkosítási kulcsok nem törlődnek\n\n• Az utoljára importált kulcs lesz az új alapértelmezett kulcs, kivéve, ha a fájlnévben szerepel a „legacy” szó.
+ A titkosítási kulcsok sikeresen beíródtak ide: „%1$s”.
+ Titkosítási kulcsok importálva innen: „%1$s”.
+
+ Háttérkép
+ Alapértelemezett kép használata
+ Kiválasztás a galériából
+ IMAP mappák kezelése
+ Ha megváltoztatja ezt az opciót, győződjön meg róla, hogy a kiszolgálója és a többi kliense is ennek megfelelően van beállítva.\n\nMáskülönben előfordulhat, hogy a dolgok egyáltalán nem fognak működni.
+ Elküldött mappa figyelése
+ Másolat küldése önmagának
+
+ Szükséges, ha ezt a fiókot több eszközön is használja.
+ Automatikus áthelyezés a DeltaChat mappába
+ A csevegések áthelyezésre kerülnek, hogy elkerüljék a bejövő üzenetek mappa zűrzavarát.
+ Csak a DeltaChat mappából történjen lekérdezés
+ Más mappák figyelmen kívül hagyása. A kiszolgálónak a DeltaChat mappába kell áthelyeznie a csevegőüzeneteket.
+ Klasszikus e-mailek megjelenítése
+ Nem, csak csevegések
+ Elfogadott névjegyek számára
+ Mind
+ Kísérleti funkciók
+ On-Demand folyamatos helyszín megosztás
+ Fejlesztői mód
+ A hibakeresési beállítások bekapcsolásával instabillá teheti az alkalmazást. Csak fejlesztőknek ajánlott a bekapcsolása.
+ Alapértelmezett kép
+ Alapértelmezett szín
+ Egyedi kép
+ Egyedi szín
+ Exportálás megszakítva.
+ Üzenetek automatikus letöltése
+
+ Legfeljebb %1$s
+ Akár %1$s, leginkább rosszabb minőségű kép
+ Akár %1$s, leginkább kiegyensúlyozatabb minőségű kép
+ Sikertelen letöltés
+
+ %1$s üzenet
+
+ Letöltés maximum ennyi ideig visszamenőleg: %1$s
+ Profilkép kiválasztása
+ Válassza ki az új profilképet
+ Profilkép törlése
+ Tálca ikon megjelenítése
+ Profil szerkesztése
+ IMAP IDLE letiltása
+ Ne használja az IMAP IDLE kiterjesztést, még akkor sem, ha a kiszolgáló támogatja azt. Az opció engedélyezése késlelteti az üzenetek lekérdezését, csak tesztelés céljából engedélyezze.
+ Statisztikák küldése a Delta Chat fejlesztőinek
+
+
+
+ Keresési eredmények
+ Nem található hangulatjel
+ Nemrég használt
+ Emberek és test
+ Állatok és természet
+ Étel és ital
+ Tevékenységek
+ Utazás és helyek
+ Tárgyak
+ Szimbólumok
+ Zászlók
+
+
+ Reakciók
+
+ Reakció
+
+ Ön ezzel reagált: %1$s, erre: „%2$s”
+
+ %1$s ezzel reagált: %2$s, erre: „%3$s”
+
+
+ Régi üzenetek törlése
+ Üzenetek törlése az eszközről
+ Üzenetek törlése a kiszolgálóról
+
+ Szeretné törölni a %1$d üzenetet most és az összes újonnan érkező „%2$s” üzenetet a jövőben?\n\n• Ez magában foglalja az összes médiát\n\n• Az üzenetek törlésre kerülnek, akár látták őket, akár nem\n\n• A „Mentett üzenetek” nem kerülnek törlésre a helyi törlésből.
+
+ Szeretné törölni a %1$d üzenetet most és az összes újonnan érkező „%2$s” üzenetet a jövőben?\n\n⚠️ Ez magába foglalja az e-maileket, a médiát és a „Mentett üzeneteket” minden kiszolgáló mappában\n\n⚠️ Ne használja ezt a funkciót, ha az adatokat a kiszolgálón szeretné tartani\n\n⚠️ Ne használja ezt a funkciót, ha a Delta Chat mellett más e-mail klienseket is használ.
+
+ Ez magában foglalja az e-maileket, a médiát és a „Mentett üzeneteket” az összes kiszolgálómappában. Ne használja ezt a funkciót, ha a kiszolgálón szeretné megtartani az adatokat, vagy ha a Delta Chat mellett más e-mail klienseket is használ.
+ Értem, törölje ezeket az üzeneteket
+
+ Egyszer
+ 30 másodperc elteltével
+ 1 perc elteltével
+ 5 perc elteltével
+ 30 perc elteltével
+ 1 óra elteltével
+ 1 nap elteltével
+ 1 hét elteltével
+ 4 hét elteltével
+ 5 hét elteltével
+ 1 év elteltével
+
+
+
+ Autocrypt
+
+ Az autocrypt egy új és nyílt specifikáció az automatikus végpontok közötti e-mail titkosításhoz.\n\nA végpontok közötti titkosítás beállítása szükség szerint automatikusan létrejön, és az autocrypt beállító üzenetekkel átvihető az eszközök között.
+ Autocrypt beállító üzenet küldése
+ Egy autocrypt beállító üzenet biztonságosan megosztja az ön végpontok közötti beállításait más autocrypt-kompatibilis alkalmazásokkal.\n\nA beállítás titkosítása egy, itt megjelenő beállítási kóddal történik, amelyet a másik eszközön kell begépelni.
+ Autocrypt beállító üzenet küldése
+ A beállításokat elküldtük önnek. Váltson a másik eszközre, és nyissa meg a beállítási üzenetet. Meg kell adnia a beállítási kódot. Írja be a következő számjegyeket:
+ Végpontok közötti titkosítás előnyben részesítése
+ Autocrypt beállító üzenet
+ Ez az autocrypt beállító üzenet a végpontok közötti beállítások kliensek közötti átvitelére szolgál.\n\nA beállítások visszafejtéséhez és használatához nyissa meg az üzenetet egy autocrypt-kompatibilis kliensben, és írja be a generáló eszközön megjelenő beállítási kódot.
+ Ez az Autocrypt beállító üzenet, amelyet a végpontok közötti titkosítási beállítások átvitelére használnak a kliensek között.\n\n\nA beállítások visszafejtéséhez és használatához koppintson vagy kattintson erre az üzenetre.
+ Autocrypt beállító üzenet
+ Adja meg a másik eszközön megjelenő beállítási kódot.
+ A végpontok közötti beállítások átvitele megtörtént. Ez az eszköz most már készen áll az autocrypt használatára a másik eszközzel megegyező beállításokkal.
+ Újra
+ Rossz beállítási kód. Próbálja újra.\n\nHa nem emlékszik a beállítási kódra, küldjön új Autocrypt Beállítás üzenetet a másik eszközről.
+
+
+
+ Üzenet megnyitva
+ Az Ön által küldött „%1$s” tartalmú üzenet megjelent a címzett képernyőjén.\n\nEz nem garancia arra, hogy a tartalmat elolvasták.
+ Ez az üzenet nem dekódolható.\n\n• Már az is segíthet, ha egyszerűen válaszol erre az üzenetre, és megkéri a feladóját, hogy küldje el újra az üzenetet.\n\n• Ha most telepítette újra a Delta Chat-et, akkor a legjobb, ha most újraindítja a Delta Chat-et, és kiválasztja a „Második eszközként való hozzáadás” lehetőséget, vagy importál egy biztonsági mentést.
+ Az üzenet küldője ismeretlen ebben a csevegésben. További részletekért nézze meg az \'Infót\'.
+ Üzenet tőle: %1$s
+ Nem sikerült elküldeni az üzenetet neki: %1$s.
+
+ Ön megváltoztatta a csoport nevét erről: „%1$s”, erre: „%2$s”.
+
+ %3$s megváltoztatta a csoport nevét erről: „%1$s”, erre: „%2$s”.
+ Ön megváltoztatta a csoport képét.
+
+ %1$s megváltoztatta a csoport képét.
+
+ %1$s tag hozzáadva
+
+ Ön hozzáadta %1$s nevű tagot.
+
+ %2$s hozzáadta %1$s nevű tagot.
+
+ Ön eltávolította %1$s nevű tagot.
+
+ %2$s eltávolította %1$s nevű tagot.
+
+ Ön elhagyta a csoportot.
+
+ %1$s elhagyta a csoportot.
+ Ön törölte a csoport képét.
+
+ A csoport képe %1$s által törölve lett.
+ A folyamatos helyszín megosztás engedélyezve van.
+
+ A folyamatos helyszínmegosztás engedélyezve van %1$s által.
+ Az eltűnő üzenetek időzítője ki lett kapcsolva.
+
+ %1$s letiltotta az eltűnő üzenetek időzítőjét.
+
+ Az eltűnő üzenetek időzítőjét %1$s másodpercre állította be.
+
+ %2$s az eltűnő üzenetek időzítőjét %1$s másodpercre állította be.
+ Az eltűnő üzenetek időzítőjét 1 percre állította be.
+
+ %1$s az eltűnő üzenetek időzítőjét 1 percre állította be.
+ Az eltűnő üzenetek időzítőjét 1 órára állította be.
+
+ %1$s az eltűnő üzenetek időzítőjét 1 órára állította be.
+ Az eltűnő üzenetek időzítőjét 1 napra állította be.
+
+ %1$s az eltűnő üzenetek időzítőjét 1 napra állította be.
+ Az eltűnő üzenetek időzítőjét 1 hétre állította be.
+
+ %1$s az eltűnő üzenetek időzítőjét 1 hétre állította be.
+
+ Az eltűnő üzenetek időzítőjét %1$s percre állította be.
+
+ %2$s az eltűnő üzenetek időzítőjét %1$s percre állította be.
+
+ Az eltűnő üzenetek időzítőjét %1$s órára állította be.
+
+ %2$s az eltűnő üzenetek időzítőjét %1$s órára állította be.
+
+ Az eltűnő üzenetek időzítőjét %1$s napra állította be.
+
+ %2$s az eltűnő üzenetek időzítőjét %1$s napra állította be.
+
+ Az eltűnő üzenetek időzítőjét %1$s hétre állította be.
+
+ %2$s az eltűnő üzenetek időzítőjét%1$s hétre állította be.
+
+ %1$s egy másik eszközről küldött üzenetet.
+ Az üzenetek mostantól garantáltan titkosítva lesznek a végpontok között. Koppintson, ha többet szeretne tudni.
+ Mostantól garantált, hogy ebben a csevegésben minden üzenet végpontok közötti titkosítással rendelkezik.\n\nA végpontok közötti titkosítással az üzenetek bizalmasak maradnak ön és az ismerősei között. Még az e-mail szolgáltatója sem tudja elolvasni őket.
+ %1$s egy másik eszközről küldött üzenetet. Koppintson, ha többet szeretne tudni.
+ A végpontok közötti titkosítás már nem garantálható, valószínűleg azért, mert %1$s újratelepítette a Delta Chat-et, vagy egy másik eszközről küldött üzenetet.\n\n Személyesen találkozhat vele, és újra beolvashatja a QR-kódját a garantált végpontok közötti titkosítás visszaállításához.
+ ⚠️ A(z) %1$s végpontok közötti titkosítást igényel, ami még nincs beállítva erre a csevegésre. Koppintson, ha többet szeretne megtudni.
+ A végpontok közötti titkosítás létrehozásához személyesen is találkozhat az ismerőseivel, és a QR-kódjukat beolvasva bemutathatja őket.
+ Tudjon meg többet
+
+ Ön törölte a „Mentett üzenetek” csevegést.\n\nℹ️ A „Mentett üzenetek” funkció újbóli használatához hozzon létre egy új csevegést önmagával.
+
+ ⚠️ Az e-mail szolgáltatójától kapott tárhelye hamarosan elfogy: %1$s%% már felhasználásra került.\n\n\nElképzelhető, hogy nem tud üzeneteket fogadni, ha a tárhelye megtelt.\n\n👉 Ellenőrizze, hogy a szolgáltatója webes felületén törölheti-e a régi adatokat, és fontolja meg a „Beállítások / Csevegések és média / Régi üzenetek törlése” engedélyezését. Az aktuális tárhelyhasználatot bármikor ellenőrizheti a „Beállítások / Tárhely” menüpontban.
+
+ ⚠️ Az eszközén lévő dátum vagy idő pontatlannak tűnik (%1$s).\n\nJavítsa meg az órát ⏰🔧 az üzenetek helyes fogadásának biztosítása érdekében.
+ ⚠️ Lehet, hogy a Delta Chat verziója elavult.\n\nEz problémákat okozhat, mivel az ismerősei újabb verziókat használnak - továbbá hiányoznak a legújabb funkciók 😳\nEllenőrizze a https://get.delta.chat oldalon vagy az alkalmazásboltban a frissítéseket.
+
+
+ Feloldás a folytatáshoz
+
+
+ QR-kód
+ QR-kód betöltése képként
+ QR-kód olvasása
+ Tartsa a kamerát a QR-kód fölé
+ Mozgassa a QR-kódot a kamera elé
+ A QR-kódot nem sikerült értelmezni
+ Biztosan csatlakozik a(z) „%1$s” nevű szobához?
+ A beolvasott ujjlenyomat nem egyezik a(z) %1$s utoljára látott ujjlenyomatával.
+ Ez a QR-kód tartalmaz egy ujjlenyomatot, de nem tartalmaz e-mail címet.\n\nA sávon kívüli ellenőrzéshez először hozzon létre titkosított kapcsolatot a címzetthez.
+ A beolvasott QR-kód szövege:\n\n%1$s
+ A beolvasott QR-kód hivatkozás:\n\n%1$s
+ Ujjlenyomat
+ Ezt a QR-kódot mások is beolvashatják, hogy felvegyék önnel a kapcsolatot.\n\nA QR-kódot itt kikapcsolhatja, és újból bekapcsolhatja, ha újra beolvassa.
+ Ezt a QR-kódot mások is beolvashatják, hogy csatlakozhassanak a(z) „%1$s” nevű csoporthoz.\n\nA QR-kódot itt kikapcsolhatja, és újra bekapcsolhatja, ha újra beolvassa.
+ QR-kód kikapcsolása
+
+ Ezt a QR-kódot mások is beolvashatják, hogy kapcsolatba lépjenek Önnel.\n\nA QR-kód nincs bekapcsolva ezen az eszközön.
+
+ Ezt a QR-kódot mások is beolvashatják, hogy csatlakozzanak a(z) „%1$s” nevű csoporthoz.\n\nA QR-kód nincs bekapcsolva ezen az eszközön.
+ QR-kód bekapcsolása
+ QR meghívó kód
+ %1$s csatlakozott.
+ %1$s bemutatva.
+ %1$s csatlakozott a csoporthoz.
+ QR meghívó kód
+
+ Beolvasás a(z) „%1$s” nevű csoporthoz való csatlakozáshoz
+ QR meghívó kód
+
+ Beolvasás a csevegéshez vele: „%1$s”
+ Nincs internetkapcsolat, nem lehet elvégezni a QR-kód beállítását.
+ Új profil létrehozása a(z) „%1$s” oldalon és bejelentkezés ott?
+ Új profil létrehozása a(z) „%1$s” oldalon, és bejelentkezés ott?\n\nA meglévő profilja nem törlődik. A „Profilváltás” elemmel válthat a profiljai között.
+ Adjon meg egy olyan nevet, amelyet az ismerősei felismernek. Beállíthat egy profilképet is.
+ Adjon meg egy nevet.
+ A beolvasott QR-kód nem használható új profil beállítására.
+
+ A beolvasott QR-kód egy új profil beállítására szolgál. A QR-kódot egy új Delta Chat telepítés beállításakor olvashatja be.
+
+ Bejelentkezés ide: „%1$s”?
+
+ Bejelentkezés ide: „%1$s”?\n\nA meglévő profilját nem töröljük. A „Profilváltás” elemmel válthat a profiljai között.
+
+ %1$s meghívta önt, hogy csatlakozzon ehhez a csoporthoz.\n\n%2$s eszközére várakozás a válaszhoz...
+
+ %1$s válaszolt, várakozik, hogy fölvegyék a csoportba...
+ Garantált végpontok közötti titkosítás létrehozása, várjon...
+ Még nem sikerült a garantált végpontok közötti titkosítást létrehozni, de már küldhet üzenetet.
+ %1$s bemutatva.
+ Nem lehet garantált végpontok közötti titkosítást létrehozni vele: %1$s.
+
+ %1$s által bemutatva
+ Ön által bemutatva
+
+ Megváltoztak a(z) %1$s beállításai.
+ A végpontok közötti titkosítás garantálása érdekében csak zöld jelöléssel rendelkező ismerősöket adhat hozzá ehhez a csoporthoz.\n\n Személyesen is találkozhat az ismerőseivel és beolvashatja a QR-kódjukat, hogy bemutassa őket.
+ QR url másolása a vágólapra
+ Válassza ki a csevegést az üzenet elküldéséhez
+
+ Már létezik egy piszkozat a következő szöveggel: %1$s, biztosan le akarja cserélni?
+ Nem sikerült dekódolni a mailto hivatkozást: %1$s
+
+
+ Elvetés
+ Válasz
+ Új üzenet
+ Háttérkapcsolat engedélyezve
+ Magas
+ Maximum
+ Név és üzenet
+ Csak név
+ Se név, se üzenet
+ Értesítések letiltva
+ Új üzenetek
+
+ Új olvasatlan üzenetek vannak
+ %1$d üzenet %2$d csevegésben
+
+
+
+ Engedély szükséges
+ Folytatás
+ A fényképek vagy videók rögzítéséhez lépjen be az alkalmazás beállításaiba, válassza az „Engedélyek” menüpontot, és engedélyezze a „Kamera” opciót.
+ Hangüzenetek küldéséhez lépjen az alkalmazás beállításaihoz, válassza az „Engedélyek” lehetőséget, és engedélyezze a „Mikrofon” opciót.
+ A fájlok fogadásához vagy küldéséhez lépjen az alkalmazás beállításaihoz, válassza az „Engedélyek” lehetőséget, és engedélyezze a „Tárhely” opciót.
+ Helymeghatározás csatolásához lépjen be az alkalmazás beállításaiba, válassza az „Engedélyek” menüpontot, és engedélyezze a „Helyszínmeghatározás” opciót.
+ Az értesítések fogadásához menjen a „Rendszerbeállítások / Alkalmazások / Delta Chat” menüpontba, és engedélyezze az „Értesítések” opciót.
+
+
+ Rajzoljon bárhová az elmosódáshoz
+ Szöveg hozzáadása
+ Elmosás
+ Jelölő ecset
+ Kiemelő ecset
+ Kivágás
+ Tükrözés
+ Forgatás
+
+
+ Titkosított üzenet
+
+
+ Ez a hivatalos Delta Chat Desktop alkalmazás.
+ Ez a szoftver a GNU GPLv3 licenc alatt áll és a forráskód elérhető a GitHubon.
+ Üdvözöljük a Delta Chat-ben!
+ Válasszon nyelvet...
+ Fájl
+ Kilépés
+ Szerkesztés
+ Visszavonás
+ Újra
+ Kivágás
+ Másolás
+ Beillesztés
+ Nézet
+ Beúszás felülre
+ Fejlesztő
+ Fejlesztői eszközök
+ Súgó
+ Tudjon meg többet a Delta Chat-ről
+ Hozzájárulás a GitHub-on
+ Jelentsen egy problémát
+ A Delta Chat-ről
+ Delta Chat megnyitása
+ Kicsinyítés
+ Válasszon ki egy csevegést vagy indítson egy újat
+ Írjon üzenetet
+ Titkosítási információ
+ Üzenet törlése
+ További információ
+ MMM D
+ Eltávolítás
+ Mentés
+ Név
+ Csoport képének kiválasztása
+ Biztonsági mentés exportálása
+ Autocrypt beállítások átvitele.
+ Törli ezt a bejelentkezést? Minden törlődik, beleértve a végpontok közötti titkosítási beállításokat, névjegyeket, csevegéseket, üzeneteket és médiát. Ez a művelet nem vonható vissza.
+
+ E-mail: %1$s\nMéret: %2$s\nFiók azonosító: %3$s
+ elküldött
+ érkezett
+ Naplófájlok könyvtárának megnyitása
+ Jelenlegi naplófájl megnyitása
+ A tálca ikonja nem kapcsolható ki, mivel a Delta Chat a --minimized opcióval indult.
+ Nem találhatóak helyesírási javaslatok.
+ Ablak megjelenítése
+ A SOCKS5 támogatás jelenleg kísérleti jellegű. Használja saját felelősségére. Ha beír egy címet az e-mail mezőbe, akkor lesz olyan DNS lekérés, ami nem fog átjutni a SOCKS5 csatornán.
+
+
+ Billentyűkötések
+ Csevegések közötti váltás
+ Üzenetek görgetése
+
+ Keresésre fókuszálás
+
+ Szövegbevitelre fókuszálás
+ Kényszerített hálózatfrissítés
+ Sortörés beszúrása
+
+
+ Kézbesítés állapota: Hiba
+ Titkosítási zár
+ Kézbesítés állapota: Küldés
+ Kézbesítés állapota: Piszkozat
+ Kézbesítés állapota: Kézbesítve
+ Kézbesítés állapota: Olvasás
+ Érvénytelen kézbesítési állapot
+ Üzenetakciók
+ Háttérkép előnézete
+ Eltűnő üzenetek bekapcsolva
+
+
+ Helyszínmegosztás kikapcsolása.
+ A felvétel rögzítése után duplán koppintson a küldéshez. A felvétel elvetéséhez csúsztassa két ujjával.
+ Dupla koppintás a tárhely részleteinek megtekintéséhez.
+ Nincs internetkapcsolat, nem sikerült bejelentkezni.
+ A profil nincs konfigurálva.
+ A hangfájl nem játszható le.
+
+ A fényképek készítéséhez, a videók rögzítéséhez vagy a QR-kód beolvasásához nyissa meg a rendszer beállításait, és engedélyezze a „Kamera” használatát.
+ Beállítások megnyitása
+
+ Eszköz névjegyeinek importálása
+ Az eszközén lévő névjegyekkel való csevegéshez nyissa meg a Beállításokat, és engedélyezze a „Névjegyek” opciót.
+
+ Letiltva a Delta Chat-ben
+ Letilva a rendszer beállításaiban
+ „Háttérfrissítések” letiltva a rendszerbeállításokban
+
+ Késleltetve
+ Átlagosan %1$d percenként
+ Átlagosan %1$d óránként
+ Ellenőrizve ekkor: %1$s
+
+ A bármelyik csevegésben kapott vagy küldött alkalmazások itt fognak megjelenni. A „Fájlok” az éppen letöltött alkalmazásokat jeleníti meg.
+
+ Kattintson a megosztás gombra
+ Válassza a „Hozzáadás a kezdőképernyőhöz” lehetőséget, hogy az alkalmazást hozzáadja a kezdőképernyőhöz.
+
+ A Delta Chat az eszköze kameráját használja fényképek és videók készítésére és küldésére, valamint QR-kódok beolvasására.
+ A Delta Chat a névjegyek segítségével megjeleníti azon e-mail címek listáját, amelyekkel cseveghet. A Delta Chat-nek nincs központi kiszolgálója, a névjegyeit nem küldjük el sehova.
+ A Delta Chat-nek engedélyre van szüksége ahhoz, hogy megoszthassa az ön tartózkodási helyszínét arra az időtartamra, ameddig engedélyezte a helyszínmegosztást.
+ A Delta Chat-nek engedélyre van szüksége ahhoz, hogy megoszthassa az ön tartózkodási helyszínét arra az időtartamra, ameddig engedélyezte a helyszínmegosztást.
+ A Delta Chat az eszköze mikrofonját használja a hangüzenetek és a hangos videók rögzítésére, valamint küldésére.
+ A Delta Chat segítségével kiválaszthatja, hogy mely fényképeket szeretné elküldeni a könyvtárából.
+ A Delta Chat el akarja menteni a képeket az eszköze fotótárába.
+
+
+
+ Azonnali kézbesítés
+ Push szolgáltatás használata
+ Megbízható push értesítések a chatmail kiszolgálókhoz
+ Push szolgáltatás letiltása?\n\nEz késleltetett értesítéseket eredményezhet.
+ Háttérkapcsolat használata
+ Figyelmen kívül hagyott akkumulátor-optimalizációt igényel, akkor használja, ha a Push szolgáltatás nem érhető el
+ Kényszerített háttérkapcsolat
+ Állandó értesítést jelenít meg
+
+ Az e-mail kiszolgálóval való kapcsolat fenntartásához és az üzenetek háttérben történő fogadásához hagyja figyelmen kívül az akkumulátor optimalizálását a következő lépésben.\n\nA Delta Chat kevés erőforrást használ, és ügyel arra, hogy ne merítse az akkumulátort.
+
+ Koppintson ide az üzenetek fogadásához, miközben a Delta Chat a háttérben fut.
+ Már engedélyezve van a Delta Chat számára, hogy a háttérben üzeneteket fogadjon.\n\nHa az üzenetek még mindig nem érkeznek meg a háttérben, ellenőrizze a rendszerbeállításokat is.
+
+
+ Újdonságok:\n\n❤️ Igen! Ezt már régóta vártuk: Ha nem tudja beolvasni a QR-kódokat, ossza meg őket egy meghívó hivatkozásként\n\n\n🔵 Az összes fiók olvasatlan üzeneteit számoljuk és megjelenítjük a címben\n\n\n... és további hibajavítások ... %1$s\n\nSegítsen az alkalmazás fejlesztésében: Használja a „Beállítások / Speciális / Statisztikák küldése” lehetőséget, hogy segítsen a fejlesztőknek a valós használatra való optimalizálásban. A küldés előtt áttekintheti az adatokat
+ Újdonságok:\n\n❤️ Igen! Ezt már régóta vártuk: Koppintson hosszan az üzenetre az üzenetreakciók küldéséhez\n\n🫸 PUSH értesítések, ha a szolgáltatók támogatják, mint például a https://nine.testrun.org\n\n🔗 Ha nem tudja beolvasni a QR-kódokat, ossza meg őket egy meghívó hivatkozásként\n\n\n... és további hibajavítások ... %1$s
+ Új szolgáltatások 🐣 és további tudnivalók:\n\n⚡️ Regisztráljon biztonságos, gyors chatmail kiszolgálókra (https://delta.chat/chatmail) vagy használja a klasszikus e-mail kiszolgálókat\n\n👉 PUSH értesítések bármely chatmail kiszolgálóra\n\n👤 Kapcsolja össze ismerőseit biztonságosan a „Névjegyek csatolásával”\n\n🥰 Reagáljon bármilyen hangulatjellel\n\n📌 Tűzze ki a csevegéseket közvetlenül a keresésből ... tudjon meg többet itt: %1$s
+ Új szolgáltatások 🐣 és további tudnivalók:\n\n⚡️ Regisztráljon biztonságos, gyors chatmail kiszolgálókra (https://delta.chat/chatmail) vagy használja a klasszikus e-mail kiszolgálókat\n\n👉 PUSH értesítések bármely chatmail kiszolgálóra\n\n👤 Fogadjon „Csatolt névjegyeket\" és csatlakozzon az ismerőseihez”\n\n🥰 Gyorsabb üzenetreakció kiválasztás ... tudjon meg többet itt: %1$s
+
diff --git a/res/values-in/strings.xml b/src/main/res/values-in/strings.xml
similarity index 97%
rename from res/values-in/strings.xml
rename to src/main/res/values-in/strings.xml
index a9f477163..36abd2b9d 100644
--- a/res/values-in/strings.xml
+++ b/src/main/res/values-in/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -247,7 +247,6 @@
Pesan perangkatPesan-pesan buatan lokalPesan dalam obrolan ini dihasilkan dalam aplikasi Delta Chat anda secara lokal. Para penciptanya memakai obrolan ini untuk memberi tahu aplikasi mutakhir dan masalah-masalah selama digunakan.
- Selamat datang di Delta Chat! – Delta Chat tampak dan terasa seperti aplikasi percakapan populer lainnya, tapi tidak menggunakan kontrol yang tersentralisasi, melacak atau menjual anda, teman, kolega atau keluarga ke organisasi-organisasi besar.\n\nSecara teknis, Delta Chat merupakan sebuah aplikasi surel dengan tampilan obrolan modern. Katakanlah surel dengan tampilan baru 👻\n\nGunakan Delta Chat dengan siapa pun dari milyaran orang di luar sana: cukup gunakan alamat surel mereka. Penerima tak harus mengunduh Delta Chat, kunjungi laman atau daftar di mana pun - karena tentu saja, jika mereka menyukai anda, ajaklah mereka ke 👉 https://get.delta.chatEdit kontakPin obrolan
@@ -337,6 +336,7 @@
Geser untuk batalkanKetuk dan tahan untuk merekam pesan suara, lepaskan untuk mengirimKosongkan inbox.\nTekan \"+\" untuk memulai obrolan baru.
+
Anda bisa ngobrol dengan pengguna Delta Chat lain maupun dengan siapa pun yang memiliki alamat surel.Semua obrolan terarsip.\nTekan \"+\" untuk mulai obrolan baru.Bagi kepada
@@ -384,7 +384,9 @@
Tampilan mediaKirim pesanMasuk
+
Masuk ke server Anda
+
Masuk dengan akun surel yang adaPengaturan surel penyedia tambahan yang sudah diketahui dipasang secara otomatis. Terkadang IMAP perlu daktifkan di pengaturan aplikasi. Hubungi surel penyedia Anda atau minta tolong teman.Tidak ada server Delta Chat, data Anda tetap di perangkat Anda.
@@ -435,13 +437,12 @@
Info profil AndaGambar profilKontak yang diblokir
+
Kata sandi dan akunFoto dan nama profil Anda akan tampak bersama dengan pesan-pesan ketika berkomunikasi dengan pengguna lain. Informasi yang telah dikirimkan tidak dapat dihapus atau dipindah.Nama AndaSignature text
-
- Kirim dengan Percakapan Delta Chat: https://delta.chatTombol Enter mengirimMenekan tombol Enter akan mengirimkan teks pesanKualitas media yang dikirim
@@ -538,7 +539,9 @@
Setelah 1 tahun
+
Autocrypt
+
Autocrypt adalah spesifikasi baru dan terbuka untuk enkripsi otomatis dimana surel yang dikirim hanya akan terlihat oleh si penerima yang disebut dengan istilah end-to-end atau ujung ke ujung.\n\nPengaturan ujung ke ujung ini dibuat secara otomatis sesuai kebutuhan dan dapat Anda transfer antar perangkat berkat Autocrypt Setup Messages.Kirim Pengaturan Pesan AutocryptPengaturan Pesan Autocrypt membagi pengaturan ujung ke ujung Anda secara aman dengan aplikasi Autocrypt-compliant lain.\n\nPengaturan ini akan dienkripsi oleh kode pengaturan yang ditampilkan disini dan harus diketik di perangkat lainnya.
@@ -601,8 +604,8 @@
Tidak ada koneksi internet, tidak bisa menjalankan kode pengaturan QR.Buat alamat email baru di \"%1$s\" dan login di sana?Buat alamat email baru di\"%1$s\" dan masuk ke sana?\n\nAkun yang sudah ada tidak akan di hapus. Gunakankan item \"Ganti akun\" untuk mengganti akun anda
- Login berhasil—alamat surel Anda %1$s\n\nKalau mau, masukkan satu nama dan gambar avatar yang dapat dilihat oleh orang yang ngobrol dengan Anda.Kode QR yang dipindai tidak dapat digunakan untuk mengatur akun baru.
+
Kode QR yang dipindai adalah untuk mengatur akun baru. Anda dapat memindai kode QR saat mengatur instalasi Delta Chat baru.%1$sdiverifikasi.Tidak bisa memverifikasi %1$s.
diff --git a/res/values-it/strings.xml b/src/main/res/values-it/strings.xml
similarity index 88%
rename from res/values-it/strings.xml
rename to src/main/res/values-it/strings.xml
index 33e26aa38..96ad9f280 100644
--- a/res/values-it/strings.xml
+++ b/src/main/res/values-it/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -56,6 +56,7 @@
Mostra Messaggio Completo…Segna Tutti come Letti
+ Segna come LettoLeggi
@@ -207,6 +208,8 @@
Nuovo Contatto
+ Aggiungi Contatto Manualmente
+ I contatti aggiunti manualmente possono essere utilizzati per inviare testo all\' e-mail classica e non sono garantiti con crittografia end-to-end.Nuova ChatNuovo GruppoClona Chat
@@ -218,7 +221,7 @@
Modifica Lista TrasmissioneNome Lista TrasmissionePer piacere inserisci un nome per la lista trasmissione.
- Inviato
+ InviaAlterna la Tastiera EmojiModifica GruppoNome e Immagine Gruppo
@@ -265,7 +268,7 @@
Scorri in CimaAiutoCos\'è Webxdc?
- Privacy Policy
+ Politica sulla RiservatezzaSeleziona TuttoSeleziona ChatSeleziona di più
@@ -278,7 +281,7 @@
Salva LogPiù OpzioniImpara l\'Ortografia
- Registro di Controllo della Chat
+ Registro di Controllo ChatVai al MessaggioCopia JSONSostituisci Bozza
@@ -286,7 +289,7 @@
Messaggi del DispositivoMessaggi generati localmenteI messaggi in questa chat vengono generati localmente da Delta Chat. Gli sviluppatori li usano per informarti sugli aggiornamenti o sui problemi di utilizzo.
- Benvenuto in Delta Chat! - Delta Chat ha l\'aspetto e lo stile di altre popolari applicazioni di messaggistica, ma non costringe a un controllo centralizzato, al tracciamento o alla vendita dei dati personali tuoi, dei tuoi amici, colleghi o familiari a grandi organizzazioni.\n\nTecnicamente, Delta Chat è un\'applicazione di posta elettronica con un\'interfaccia moderna. L\'e-mail in una nuova veste 👻\n\nUtilizza Delta Chat con chiunque: basta conoscere il loro indirizzo e-mail. I destinatari non hanno bisogno di installare Delta Chat, visitare siti web o iscriversi da nessuna parte - ma, naturalmente se lo desiderano, puoi suggerirgli 👉 https://get.delta.chat
+ Mettiti in contatto!\n\n🙌 Tocca \"Codice QR\" sulla schermata principale di entrambi i dispositivi. Scegli \"Scansiona codice QR\" su un dispositivo e puntalo verso l\'altro\n\n🌍 Se non siete nella stessa stanza, esegui la scansione tramite videochiamata o condividi un collegamento di invito da \"Scansiona codice QR\"\n\nQuindi: goditi la tua esperienza di messaggistica sulla più grande rete decentralizzata mai esistita: l\'E-mail. E a differenza di altre app popolari, senza controllo centrale né monitoraggio o vendita dati tuoi, dei tuoi amici, colleghi o familiari a grandi organizzazioni.Modifica ContattoFissa Chat
@@ -331,7 +334,7 @@
Tocca per AprireIstanza Video ChatLa Tua Istanza Video Chat
- Esempi: https://meet.jit.si/$ROOM o basicwebrtc:https://your-server
+ Esempi: https://your-server.org/$ROOMSe la video chat è abilitata, è possibile avviare una video chat da ogni chat. Le video chat richiedono un\'applicazione compatibile o un browser compatibile da entrambe le parti.Utilizzare \"%1$s\" per invitare altri alla video chat?\n\nUna volta impostato, è possibile avviare una video chat da ogni chat uno a uno. Ciò sostituirà l\'eventuale impostazione precedente per le video chat.Invito alla video chat
@@ -406,6 +409,7 @@
Scorri per annullareTocca e mantieni per registrare un messaggio vocale, rilascia per inviare Casella vuota.\nPremi \"+\" per iniziare una chat.
+
Puoi chattare con altri utenti Delta Chat o con qualsiasi indirizzo email.Chat archiviate.\nPremi \"+\" per iniziare una nuova chat.Condividi con
@@ -423,7 +427,6 @@
Riprova l\'invio del messaggioNon puoi scrivere perché non sei in questo gruppo. Per partecipare, chiedi ad un altro membro.
- Questa chat contiene messaggi generati localmente. Quindi non puoi scrivere alcun messaggio.L\'invio dei messaggi nelle mailing list non è ancora supportatoImpossibile visualizzare questo tipo di file: %sImpossibile caricare l\'allegato
@@ -443,6 +446,8 @@
Invia \"%1$s\" a…Invia Messaggio a...
+ Canali Webxdc in Tempo Reale
+ Abilita le API in tempo reale Webxdc per creare connessioni dirette tra dispositiviMostra le posizioni nel tempo
@@ -515,6 +520,7 @@
Assicurati che entrambi i dispositivi siano sulla stessa rete o Wi-Fi.In questo modo si crea un codice QR che il secondo dispositivo può scansionare per copiare l\'account.Installa Delta Chat sull\'altro dispositivo (https://get.delta.chat)
+
Avvia Delta Chat, tocca \"Aggiungi come secondo dispositivo\" e scansiona il codice qui mostratoScansiona per impostare un secondo dispositivo per %1$s
@@ -561,11 +567,41 @@
- Chat via E-mail.
+
+ Iniziamo!
+
+ Ho Già un Account
+
+ Accesso E-Mail Classico
+
+ Il Tuo Profilo
+
+ Leggi l\'Informativa sulla Riservatezza
+
+ Informativa sulla Riservatezza per %1$s
+
+ Informazioni profili su %1$s
+
+ Accetto & Creo Profilo
+
+ Usa Altro Server
+ Elenco Server Chatmail
+
+ Crea un profilo per unirti al gruppo \"%1$s\".
+
+ Crea un profilo per chattare con %1$s.
+
+ Vuoi creare un nuovo profilo e iniziare a chattare con %1$s?
+
+ Vuoi creare un nuovo profilo e unirti al \"%1$s\" gruppo chat?
+
+ Chat Decentralizzata SicuraScansiona InvitoLogin
- Accedi al tuo Account E-Mail
- Accedi con un indirizzo e-mail esistente
+
+ Accedi al tuo Profilo E-Mail
+
+ Accedi con un profilo e-mail esistentePer i fornitori email conosciuti, le impostazioni aggiuntive vengono configurate automaticamente. A volte, IMAP deve essere abilitato dall\'interfaccia web dell\'email. Se riscontri problemi contatta il tuo fornitore email o i tuoi amici per aiutarti.Non esistono server di Delta Chat, i tuoi dati restano nel tuo dispositivo!In Arrivo
@@ -616,7 +652,7 @@
- Inotra a…
+ Inoltra a…Invia %1$d files alla chat selezionata?\n\nI files vengono inviati non modificati nella loro dimensione originale (ad es. immagini e video non vengono ricodificati).Invia %1$d file(s) a %2$d chat?\n\nI files vengono inviati non modificati nella loro dimensione originale (ad es. immagini e video non vengono ricodificat)i.Invia questo testo alle %1$d chat?\n\n\"%2$s\"
@@ -624,19 +660,18 @@
- Personalizzato in uso: %s
+ Personalizzazione in uso: %sPredefinito in uso: %sLe tue Info ProfiloFoto ProfiloContatti BloccatiSe blocchi dei contatti, verranno elencati qui.
- Password e Account
+
+ Password e ProfiloL\'immagine del tuo profilo e il tuo nome saranno mostrati insieme ai tuoi messaggi quando comunicherai con altri utenti. Le informazioni già inviate non possono essere cancellate o rimosse.Il tuo NomeFirma
-
- Inviato con Delta Chat Messenger: https://delta.chatSpedisci con InvioPremere il tasto Invio invierà i messaggiQualità dei Media in Uscita
@@ -656,7 +691,7 @@
Colore LEDSuonoSilenzia
- Privacy
+ RiservatezzaChat e MediaPredefinito di sistema
@@ -670,11 +705,15 @@
Richiedi alla tastiera di disattivare l\'apprendimento personalizzatoRicevute di LetturaSe le tue ricevute di lettura sono disabilitate non potrai vedere quelle degli altri.
+ Server
+ CriptazioneGestisci ChiaviUsa Emoji di SistemaDisabilita il supporto delle emoji integrato in Delta ChatUsa Fotocamera AppLa fotocamera dell\'app di solito ha meno funzionalità della fotocamera di sistema
+ Leggi Rubrica di Sistema
+ Offri la possibilità di creare chats con i contatti della rubrica. Alcuni provider necessitano prima della configurazione della crittografia end-to-end.Accesso all\'AppChatSuoni In-Chat
@@ -687,9 +726,9 @@
BackupBackup Chats su Memoria EsternaUn backup ti aiuta a impostare una nuova installazione su questo o un altro dispositivo.\n\nIl backup conterrà tutti i messaggi, i contatti, le chat e le impostazioni Autocrypt. Tienilo al sicuro o eliminalo il prima possibile.
-
+
Esporta %1$s
-
+
Esporta tutti i %1$d accountsAvvia BackupBackup scritto con successo in %1$s
@@ -708,7 +747,8 @@
Se disabiliti questa opzione assicurati che il tuo server e gli altri client siano configurati allo stesso modo.\n\nAltrimenti le cose potrebbero non funzionare affatto.Controlla Cartella InviataAuto-invia Copia
- Richiesto quando si utilizza questo account su più dispositivi.
+
+ Richiesto quando si utilizza questo profilo su più dispositivi.Sposta nella Cartella DeltaChatLe chat vengono spostate per evitare di riempire la cartella In ArrivoRecupera dalla Cartella DeltaChat
@@ -743,6 +783,8 @@
Modifica ProfiloDisabilita IMAP IDLENon utilizzare l\'estensione IMAP IDLE anche se il server la supporta. L\'abilitazione di questa opzione ritarderà il recupero del messaggio, abilitarla solo a scopo di test.
+ Invia statistiche agli sviluppatori di Delta Chat
+
Risultati Ricerca
@@ -759,6 +801,12 @@
Reazioni
+
+ Reagisci
+
+ Hai reagito %1$s a \"%2$s\"
+
+ %1$s ha reagito %2$s a \"%3$s\"Elimina i Vecchi Messaggi
@@ -785,7 +833,9 @@
Dopo 1 anno
+
Autocrypt
+
Autocrypt è una nuova specifica aperta per la cifratura end-to-end delle email.\n\nLa tua configurazione end-to-end viene creata automaticamente quando necessario e puoi trasferirla tra dispositivi tramite i Messaggi di configurazione.Messaggio di Configurazione Autocrypt Un \'Messaggio di configurazione Autocrypt\' condivide in sicurezza le tue impostazioni end-to-end con altre app compatibili. Le impostazioni sono criptate con un codice mostrato qui che deve essere inserito nell\'altro dispositivo.
@@ -874,14 +924,16 @@
%1$s ha inviato un messaggio da un altro dispositivo.D\'ora in poi i messaggi saranno garantiti crittografati end-to-end. Tocca per saperne di più.
- Ora è garantito che tutti i messaggi in questa chat siano crittografati end-to-end.\n\nLa crittografia end-to-end mantiene i messaggi privati tra te e i tuoi partner di chat. Nemmeno il tuo provider e-mail può leggerli.
+ Ora è garantito che tutti i messaggi in questa chat siano crittografati end-to-end.\n\nLa crittografia end-to-end mantiene i messaggi privati tra te e i tuoi partner di chat. Nemmeno il tuo provider email può leggerli.%1$s ha inviato un messaggio da un altro dispositivo. Tocca per saperne di più.La crittografia end-to-end non può più essere garantita, probabilmente perché %1$s ha reinstallato Delta Chat o inviato un messaggio da un altro dispositivo.\n\nPuoi incontrarlo di persona e scansionare nuovamente il suo Codice QR per ristabilire la crittografia end-to-end garantita.
+ ⚠️ %1$s richiede la crittografia end-to-end che non è ancora configurata per questa chat. Tocca per saperne di più.
+ Per stabilire la crittografia end-to-end, potresti incontrare i contatti di persona e scansionare il loro codice QR per presentarli.Per Saperne di PiùHai eliminato la chat \"Messaggi salvati\".\n\nℹ️ Per utilizzare nuovamente la funzione \"Messaggi salvati\", crea una nuova chat con te stesso.
- ⚠️ Lo spazio di archiviazione del tuo fornitore sta per essere superato, già %1$s%% vengono utilizzati.\n\nPotrebbe non essere possibile ricevere messaggi quando lo spazio di archiviazione è 100%% utilizzato.\n\n👉 Si prega di verificare se è possibile eliminare i vecchi dati nell\'interfaccia web del fornitore e considerare di abilitare \"Impostazioni / Elimina Vecchi Messaggi\". Puoi controllare l\'utilizzo corrente dello spazio di archiviazione in qualsiasi momento in \"Impostazioni / Connettività\".
+ ⚠️ Lo spazio di archiviazione del tuo provider sta per esaurirsi:%1$s%% sono già utilizzati.\n\nPotresti non essere in grado di ricevere messaggi se lo spazio di archiviazione è pieno.\n\n👉 Controlla se puoi eliminare i vecchi dati nell\'interfaccia web del provider e considera di abilitare \"Impostazioni/Chat e Media/Elimina Vecchi Messaggi\". Puoi controllare l\'utilizzo attuale dello spazio di archiviazione in qualsiasi momento in \"Impostazioni/Connettività\".⚠️ La data o l\'ora del tuo dispositivo sembrano imprecise (%1$s).\n\nRegola l\'orologio ⏰🔧 per assicurarti che i tuoi messaggi vengano ricevuti correttamente.⚠️ La tua versione di Delta Chat potrebbe essere obsoleta.\n\nCiò potrebbe causare problemi perché i tuoi partner di chat utilizzano versioni più recenti - e ti mancano le funzionalità più recenti 😳\nControlla https://get.delta.chat o il tuo app store per gli aggiornamenti.
@@ -891,9 +943,10 @@
Codice QR
- Carica il Codice QR come immagine
+ Carica il Codice QR come ImmagineScansiona Codice QRPosiziona la camera sopra il codice QR
+ Sposta il codice QR sulla fotocameraImpossibile decodificare il codice QRVuoi entrare nel gruppo \"%1$s\"?Il codice scansionato non corrisponde all\'ultimo conosciuto per %1$s
@@ -910,7 +963,7 @@
Questo codice QR potrebbe essere scansionato da altri per unirsi al gruppo \"%1$s\".\n\nIl codice QR non è attivo su questo dispositivo.Attiva Codice QR Codice QR di Invito
- %1$s entra.
+ %1$s si unisce.%1$s verificato.%1$s è entrato nel gruppo.Codice QR di Invito
@@ -922,17 +975,21 @@
Nessuna connessione internet, impossibile effettuare l\'impostazione tramite codice QR.Creo un nuovo indirizzo email su \"%1$s\" e accedo?Crea un nuovo indirizzo e-mail su \"%1$s\" e accedi qui?\n\nIl tuo account esistente non verrà eliminato. Utilizza la voce \"Cambia account\" per passare da un account all\'altro.
- Accesso completato—il tuo indirizzo email è %1$s\n\nSe vuoi, puoi inserire un nome e un\'immagine profilo che verranno mostrati a chi ti scrive.
+ Imposta un nome che i tuoi contatti riconosceranno. Puoi anche impostare un\'immagine del profilo.
+ Inserisci un nome.Il codice QR scansionato non può essere utilizzato per creare un nuovo account.
+
Il codice QR scansionato serve a creare un nuovo account. Puoi scansionare il codice quando configuri una nuova installazione di Delta Chat.
-
+
Accedere a \"%1$s\"?
-
+
Accedere a \"%1$s\"?\n\nIl tuo account esistente non verrà cancellato. Usa la voce \"Cambia Account\" per passare da un account all\'altro.%1$s ti ha invitato ad unirti a questo gruppo.\n\nIn attesa che il dispositivo di %2$s risponda…%1$s ha risposto, in attesa di essere aggiunto al gruppo…
+ Creazione della crittografia end-to-end garantita, attendere...
+ Non è ancora possibile stabilire la crittografia end-to-end garantita, ma potresti già inviare un messaggio.%1$s verificato.Impossibile verificare %1$s
@@ -959,6 +1016,8 @@
Nessun nome nè messaggioNotifiche disabilitateNuovi messaggi
+
+ Hai nuovi messaggi%1$d messaggi in %2$d chats
@@ -1021,12 +1080,13 @@
Esporta BackupConfigurazione di Autocrypt trasferita.Eliminare questo accesso? Tutto verrà eliminato, inclusa la configurazione end-to-end, i contatti, le chat, i messaggi e i media. Questa azione non può essere annullata.
- E-Mail: %1$s\nDimensione: %2$s\nAccount Id: %3$s
+
+ E-Mail: %1$s\nDimensione: %2$s\nProfilo Id: %3$sinviatoricevutoApri Cartella dei LogApri Logfile Corrente
- L\'icona nella barra delle applicazioni non può essere disabilitata poiché Delta Chat è stato avviato con l\'opzione --minimizzato.
+ L\'icona nella barra delle applicazioni non può essere disabilitata poiché Delta Chat è stato avviato con l\'opzione --minimizzato.Nessun suggerimento ortografico trovato.Mostra FinestraIl supporto SOCKS5 è attualmente sperimentale. Usatelo a vostro rischio e pericolo. Se si digita un indirizzo nel campo e-mail, ci sarà una ricerca DNS che non verrà trasferita tramite SOCKS5.
@@ -1092,18 +1152,23 @@
- Notifiche in Background
- Utilizza una connessione in background al tuo server e richiede ignora ottimizzazioni della batteria.
+ Consegna Istantanea
+ Utilizza Servizio Push
+ Notifiche Push Affidabili per Server-Chatmail
+ Disabilitare Servizio Push?\n\nCiò potrebbe causare ritardi nelle notifiche.
+ Utilizza Connessione Background
+ Richiede ignora ottimizzazioni della batteria, da utilizzare se il Servizio Push non è disponibile
+ Forza Connessione Background
+ Provoca una notifica permanente
+
Per mantenere la connessione al tuo server di posta e ricevere messaggi in background, ignora le ottimizzazioni della batteria nel passaggio successivo.\n\nDelta Chat utilizza poche risorse e fa attenzione a non consumare la batteria.
- Connessione Affidabile
- Richiede una notifica permanentePremi qui per ricevere i messaggi anche quando Delta Chat è in background.Hai già autorizzato Delta Chat a ricevere messaggi in background.\n\nSe i messaggi non arrivano in background controlla le impostazioni di sistema.
-
- Novità:\n\n💌 le chat individuali garantiscono ora la crittografia end-to-end per i contatti introdotti\n\n😌 per la semplicità di tutti, contrassegniamo questi contatti e chat con segni di spunta verdi\n\n👥 i gruppi sono creati automaticamente con crittografia end-to-end garantita, se possibile\n\n🔄 Accettato/Bloccato, Archiviato, Appuntato, Disattivato è sincronizzato su tutti i tuoi dispositivi
-
- Tieni d\'occhio gli ulteriori miglioramenti nella fotocamera, nei messaggi vocali, nel backup di tutto, nella lettura dello schermo, negli sfondi per account, nella selezione di tutte le gallerie, nel panorama webxdc... oppure leggili su %1$s
+ Novità:\n\n❤️ Sì! Questo era atteso da tempo: tocca a lungo un messaggio per reagire\n\n🔗 Se non riesci a scansionare i codici QR, condividili come link di invito\n\n🔵 I messaggi non letti di tutti i profili vengono ora conteggiati e mostrati nel titolo\n\n… e TONNELLATE di correzioni bug … %1$s\n\nAiuta a migliorare l\'app: usa \"Impostazioni/Avanzate/Invia statistiche\" per aiutare gli sviluppatori a ottimizzare meglio per l\'utilizzo nel mondo reale. È possibile rivedere i dati prima dell\'invio
+ Novità:\n\n❤️ Sì! Questo era atteso da tempo: tocca a lungo un messaggio per reagire\n\n🫸 Notifiche PUSH se supportate dai provider come https://nine.testrun.org\n\n🔗 Se non riesci a scansionare i codici QR, condividili come link di invito\n\n... e TONNELLATE di correzioni bug ... %1$s
+ Nuovo Inserimento 🐣 e Altro:\n\n⚡️ Iscriviti ai sicuri e veloci server chatmail (https://delta.chat/chatmail) o utilizza i classici server e-mail\n\n👉 Notifiche PUSH per qualsiasi server chatmail\n\n👤 Connettiti con i tuoi amici in modo sicuro tramite \"Allega contatti\"\n\n🥰 Reagisci con qualsiasi emoji\n\n📌 Appunta le chat direttamente dalla ricerca... e ALTRO su %1$s
+ Nuovo Inserimento 🐣 e Altro:\n\n⚡️ Iscriviti ai sicuri e veloci server chatmail (https://delta.chat/chatmail) o usa i classici server e-mail\n\n👉 Notifiche PUSH per qualsiasi server chatmail\n\n👤 Ricevi \"Contatti allegati\" e connettiti ai tuoi amici\n\n🥰 Selezione della reazione più rapida ... e ALTRO su %1$s
diff --git a/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml
similarity index 98%
rename from res/values-ja/strings.xml
rename to src/main/res/values-ja/strings.xml
index 245337f58..4e002de58 100644
--- a/res/values-ja/strings.xml
+++ b/src/main/res/values-ja/strings.xml
@@ -1,5 +1,5 @@
-
+Delta Chat了承
@@ -209,8 +209,6 @@
デバイスのメッセージローカルで生成されたメッセージこのチャットのメッセージはアプリで生成されます。アプリ開発者はアップデートや問題点をお知らせするために使用しています。
- Delta Chatへようこそ。Delta Chatは人気のメッセンジャーアプリに似ていますが、中央集権・トラッキング・個人情報の販売が実施されていません。具体的端正なチャットインターフェースを実装したメールアプリです。
-メールアドレスがあれば誰とでもDelta Chatを使えます。受信者がDelta Chatをインストールしなくてもメッセージが届きますが、お気軽に https://get.delta.chat を教えてください。連絡先を編集チャットをピン留め
@@ -301,6 +299,7 @@
スライドしてキャンセル長押しして録音して、離すと送ります。受信箱が空です。\n+でチャットを開始します。
+
あなたはDelta Chat利用者や普通のメールアドレスとチャットを出来ます。すべてのチャットがアーカイブされました。\n+でチャットを開始します。共有
@@ -315,7 +314,6 @@
メッセージの配信を再試行しますこのグループに参加していないので書き込めません。参加するには、他のメンバーに知らせてください。
- このチャットにはローカルで生成されたメッセージがありますので、メッセージを書き込めません。%s形式のファイルは表示できません添付ファイルの読み込みに失敗しました
@@ -364,7 +362,9 @@
接続済みログイン
+
自分のメールサーバーにログインする
+
既存のメールアカウントにログインする主なメールサーバーは自動で設定されます。一般にIMAPはサーバー側で有効に設定する必要が有ります。サーバー提供者や詳しい人に確認しましょう。Delta Chatには専用サーバーが有りません。つまりあなたのデータ・個人情報はこの端末内に保存されています。
@@ -420,14 +420,12 @@
アイコン画像ブロックされた人ブロックされた連絡先がここに表示されます。
+
パスワードとアカウントアイコン画像や名前は他のユーザーに連絡するとメッセージとともに表示されます。既に送信された情報を削除することができます。あなたの名前署名
-
- Delta Chat Messengerから送信しております。
-https://delta.chatエンターキーで送信エンターキーを押すとテキストメッセージが送信されます送信する画像や映像の画質
@@ -540,7 +538,9 @@ https://delta.chat1年後
+
自動暗号化
+
自動暗号化機能は新しくて開けた仕様での一対一のメール暗号化を行います。\n \n この一対一暗号化は自動暗号化設定用メッセージを転送して設定します。自動暗号化設定用メッセージを送信する「自動暗号化設定用メッセージ」は安全に一対一暗号化設定を対応するアプリケーションとの間に設定します。\n \n 受信側は設定時に表示されるパスコードを入力する必要が有ります。
diff --git a/res/values-km/strings.xml b/src/main/res/values-km/strings.xml
similarity index 96%
rename from res/values-km/strings.xml
rename to src/main/res/values-km/strings.xml
index 1aeb82a08..2d7746c3e 100644
--- a/res/values-km/strings.xml
+++ b/src/main/res/values-km/strings.xml
@@ -1,5 +1,5 @@
-
+Delta Chatយល់ព្រម
@@ -226,7 +226,6 @@
សារពីឧបករណ៍សារដែលបានបង្កើតពីសា Delta Chatសារក្នុងការសន្ទនានេះ បានបង្កើតទិនេះដោយ សា Delta Chat ។ អ្នកបង្កើតវា ប្រើវាដើម្បីជូនដំណឹងពីការធ្វើបច្ចុប្បន្នភាពកម្មវិធី និងបញ្ហាកំឡុងពេលប្រើ។
- ស្វាគមន៍មកកាន់ សា Delta Chat ! - សា Delta Chat មើលទៅដូចកម្មវិធីសន្ទនាពេញនិយមផ្សេងទៀតដែរ ប៉ុន្តែមិនជាប់ស្មុគស្មាញនឹងការត្រួតត្រាជាកណ្តាល តាមដាន រឺលក់អ្នក មិត្តភក្តិ មិត្តរួមការងារ រឺគ្រួសារ ទៅឲ្យអង្គការធំ។\n\nបច្ចេកទេស សា Delta Chat គឺ កម្មវិធីអុីម៉ែលជាមួយនឹងចំណុចប្រទាក់ការសន្ទនាទាន់សម័យ។ អ្នកនឹងត្រូវការតែអុីម៉េលតែប៉ុណ្ណោះ! 👻\n\nប្រើប្រាស់សាហារីសង្ឃ ជាមួយនរណាម្នាក់ក្នុងចំណោមមនុស្សរាប់ពាន់លានអ្នក: ដោយគ្រាន់តែប្រើអស័យដ្ឋានអុីម៉េលរបស់ពួកគេ។ អ្នកទទួលបានសារដោយមិនតម្រូវបញ្ជូលកម្មវិធី សា Delta Chat ទស្សនាគេហទំព័រ ឬចុះឈ្មោះសិននៅកន្លែងណាក៏បាន - ទោះបីជា ការពិតប្រសិនបើពួកគេចូលចិត្ត អ្នកអាចចង្អុរពួកគេទៅកាន់ 👉 https://get.delta.chatកែសម្រួល ទំនាក់ទំនងខ្ទាស់សន្ទនា
@@ -322,6 +321,7 @@
អូសដើម្បីផ្អាកសិនប៉ៈ និងសង្កត់ដើម្បីថតសារសម្លេង លែងដើម្បីផ្ញើ។ប្រអប់ទទួលគឺទទេ។\nចុច \"+\" ដើម្បីចាប់ផ្តើមការការសន្ទនាថ្មី។
+
អ្នកអាចសន្ទនាជាមួយអ្នកប្រើប្រាស់សា Delta Chat ផ្សេងទៀត និងជាមួយអ្នកមានអសយដ្ឋានអុីម៉េលណាមួយ។សន្ទនាទាំងអស់បានកំណត់ទុក។\nចុច \"+\" ដើម្បីចាប់ផ្តើមការសន្ទនាថ្មី។ចែករំលែកជាមួយ
@@ -338,7 +338,6 @@
ព្យាយាមម្តងទៀតដើម្បីផ្ញើសារអ្នកមិនអាចសរសេរ ពីព្រោះអ្នកមិននៅក្នុងក្រុមនេះ។ ដើម្បីចូលរួម សុំសមាជិកផ្សេងទៀត។
- ការសន្ទនានេះផ្ទុកសារក្នុងតំបន់។ ដូច្នេះអ្នកមិនអាចសរសេរសារណាមួយបានទេ។ការផ្ញើសារ នៅក្នុងបញ្ជីប៉ុស្តិ៍សំបុត្រ មិនទាន់ត្រូវបានគាំទ្រនៅឡើយ។មិនអាចបង្ហាញប្រភេទឯកសារនេះ៖ %sបានបរាជ័យ ក្នុងការផ្ទុកឯកសារភ្ជាប់។
@@ -422,7 +421,9 @@
កត់ចូល
+
កត់ចូលទៅម៉ាសុីនមេរបស់អ្នក
+
កត់ចូលជាមួយគណនីយដែលមានស្រាប់សម្រាប់លក្ខខណ្ឌអុីម៉េលដែលស្គាល់ស្រាប់ នឹងត្រួវបានដំឡើងដោយស្វ័យប្រវត្តិខ្លួនឯង។ ពេលខ្លះ IMAP ត្រូវការបើកដំណើរការនៅក្នុងការកំណត់គេហទំព័រ។ ពិគ្រោះជាមួយអ្នកផ្តល់អុីម៉េលរបស់អ្មក ឬ មិត្តរបស់អ្នកសម្រាប់ជួយ។គ្មានម៉ាសុីនមេពី សាហារីសង្ឃទេ ទិន្ន័យរបស់អ្នកស្ថិតនៅលើឧបករណ៍របស់អ្នក។
@@ -488,13 +489,12 @@
រូបភាពទិន្ន័យផ្ទាល់ខ្លួនទំនាក់ទំនងដែលបានរារាំងប្រសិនបើអ្នករារាំងទំនាក់ទំ នងពួកទំនាក់ទំនងនេះនឹងត្រូវបានដាកបង្ហាញនៅទីនេះ។
+
ពាក្យសម្ងាត់ និងគណនីរូបភាពទិន្ន័យផ្ទាល់ខ្លួនរបស់អ្នក និងឈ្មោះនឹងត្រូវបានបង្ហាញនៅក្បែរសាររបស់អ្នក នៅពេល ទនំាក់ទំនងជាមួយអ្នកប្រើប្រាស់ផ្សេងទៀត។ ដំណឹងដែលបានផ្ញើរួចមិនអាចលុបចោល ឬដកចេញបានទេ។ឈ្មោះរបស់អ្នកហត្ថលេខាជាអក្សរ
-
- បានផ្ញើជាមួយ សាហារីរសង្ឃ ( https://delta.chat )។ សូមទាញយកកម្មវិធីសាហារីរសង្ឃទីនេះ៖ https://forum.sangham.net/index.php?action=tpmod;dl=item757គ្រាប់ចុច បញ្ចូលធ្វើឱ្យផ្ញើសារចុច គ្រាប់ចុច បញ្ចូល (Enter key) នឹងផ្ញើអត្ថបទសារ។គុណភាពប្រពន្ធ័សម្លេងផ្សាយចេញ
@@ -625,7 +625,9 @@
បន្ទាប់ពី ១ឆ្នាំ
+
អ៊ិនគ្រីបស្វ័យប្រវត្តិ (ផ្ញើនិងទទួលសារដោយសម្ងាត់)
+
អ៊ិនគ្រីបស្វ័យប្រវត្តិគឺជាបើកការបញ្ជាក់ថ្មីសម្រាប់អ៊ិនគ្រីប (ការធ្វើឲ្យការផ្ញើសារជាសារដាយសញ្ញាសម្ងាត់) អ៊ីមែលពីឧបករណ៍ដល់ឧបករណ៍ស្វ័យប្រវត្តិ\n\nការរៀបចំការចាត់របសឧបករណ៍ដល់ឧបករណ៍នឹអបានតាមស្វ័យប្រវត្តិបើយោងតាមតម្រូវការរបស់អ្នក។ អ្នកនឹងបានផ្ទេរវារវាងឧបករណ៍ពិសារអ៊ិនគ្រីបស្វ័យប្រវត្តិផ្ញើសារអ៊ិនគ្រីបស្វ័យប្រវត្តិសម្រាប់ការរៀបចំសារអ៊ិនគ្រីបស្វ័យប្រវត្តិសម្រាប់ការរៀបចំចែកចាយចាត់របសឧបករណ៍ដល់ឧបករណ៍ជាមួយកម្មវិធីដែលមានអ៊ិនគ្រីបស្វ័យប្រវត្តិផ្សេងទៀត។\n\n ការចាត់នឹងបានអ៊ិនគ្រីប (ការធ្វើឲ្យការផ្ញើសារជាសារដាយសញ្ញាសម្ងាត់) នៅទីនេះ នឹងត្រូវតែបានវាយបញ្ចូលនៅលើឧបករណ៍ផ្សេង។
@@ -744,8 +746,8 @@
គ្មានសេវាអុិនធ័រណេត មិនអាចអនុវត្ត ការរៀបចំកូដ QRបង្កើតអស័យដ្ឋានអុីម៉េលថ្មីនៅលើ \"%1$s\" និងកត់ចូលនៅទីនោះ?បង្កើតអស័យដ្ឋានអុីម៉េលថ្មីនៅលើ \"%1$s\" និងកត់ចូលនៅទីនោះ?\n\nគណនីរបស់អ្នកដែលមានស្រាប់ នឹងមិនត្រូវបានលុបចោលទេ។ ប្រើប្រាស់ ការ \"ឆ្លាស់ប្តូរគណនី\" ដើម្បីធាតុប្តូររវាងគណនីរបស់អ្នក។
- កត់ចូលដោយជោគជ័យ — អស័យដ្ឋានអុីម៉េលរបស់អ្នកគឺ %1$s \n\nប្រសិនបើអ្នកចូលចិត្ត ឥលូវនេះអ្នកអាច បញ្ចូលឈ្មោះ និងរូបភាពទិន្ន័យផ្ទាល់ ដែលនឹងបានបង្ហាញទៅកាន់មនុស្សដែលអ្នកសរសេរទៅ។កូដ QR ដែលបានស្គេន មិនអាចត្រូវបានប្រើប្រាស់ដើម្បីរៀបចំគណនីថ្មីមួយទេ។
+
កូដ QR ដែលបានស្គេន គឺសម្រាប់ការកំណត់ឡើងនូវគណនីថ្មីមួយ។ អ្នកអាចស្គេនកូដ QR នៅពេលការកំណត់តម្លើងនូវ សា Delta Chat ។%1$s បានផ្ទៀងផ្ទាត់មិនអាចផ្ទៀងផ្ទាត់ %1$s
@@ -812,7 +814,7 @@
ពត៌មានពីការធ្វើឲ្យសារជាសម្ងាត់លុបសារពត៌មានបន្ថែម
- ខែ ថ្ងៃ
+ MMM Dយកចេញរក្សាទុកឈ្មោះ
@@ -824,7 +826,7 @@
បានទទួលបើកថតឯកសារកត់បើកឯកសារកត់បច្ចុប្បន្ន
- រូបតំណាងថាស មិនអាចបិទបានទេដោយសារ Delta Chat ត្រូវបានចាប់ផ្តើមជាមួយជម្រើសបង្រួមអប្បបរមា។
+ រូបតំណាងថាស មិនអាចបិទបានទេដោយសារ Delta Chat ត្រូវបានចាប់ផ្តើមជាមួយជម្រើសបង្រួមអប្បបរមា។រកមិនឃើញការណែនាំអក្ខរាវិរុទ្ធទេ។បង្ហាញក្របខ័ណ្ឌ
@@ -847,15 +849,9 @@
សា Delta Chat ចង់រក្សាទុករូបភាពទៅបណ្ណាល័យរូបថតរបស់អ្មក។
-
- ការជូនដំណឹងផ្ទៃខាងក្រោយ
- ប្រើតំណភ្ជាប់ផ្ទៃខាងក្រោយទៅម៉ាសុីនមេរបស់អ្មក និងបដិសេធការទាមទារបង្កើនប្រសិទ្ធភាពថ្ម។ដើម្បីថែរក្សាតំណភ្ជាប់ទៅម៉ាសុីនបម្រើអុីម៉េលរបស់អ្នក និងទទួលសារនៅផ្ទៃខាងក្រោយ។ បដិសេធការបង្កើនប្រសិទ្ធភាពថ្ម នៅក្នុងជំហានបន្ទាប់។\n\nសាហារីសង្ឃ ប្រើធនធានបន្តិចបន្តួច និងយកចិត្តទុកដាក់មិនបង្ហូរថ្មរបស់អ្នក។
- តំណភ្ជាប់ផ្ទៃខាងក្រោយដែលទុកចិត្តបាន
- តម្រូវការជូនដំណឹងជាអចិន្រ្តៃយ៍ប៉ះទីនេះដើម្បីទទួលសារកំឡុងពេល សា Delta Chat គឺស្ថិតនៅក្នុងផ្ទៃខាងក្រោយ។អ្នកបានអនុញ្ញាតរួចរាល់ហើយឲ្យសា Delta Chat ដើម្បីទទួលសារនៅផ្ទៃខាងក្រោយ\n\nប្រសិនបើ សារនៅតែមិនមកដល់ផ្ទៃខាងក្រោយ សូមពិនិត្យការការកំណត់ប្រពន្ធ័របស់អ្នកផងដែរ។
-
diff --git a/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml
similarity index 97%
rename from res/values-ko/strings.xml
rename to src/main/res/values-ko/strings.xml
index b9aae525e..3eb14d92a 100644
--- a/res/values-ko/strings.xml
+++ b/src/main/res/values-ko/strings.xml
@@ -1,5 +1,5 @@
-
+Delta Chat확인
@@ -241,7 +241,6 @@
기기 메시지로컬에서 생성된 메시지이 채팅의 메시지는 델타 채팅 앱에서 로컬로 생성됩니다. 제작자는 이것을 앱 업데이트와 사용 중 발생하는 문제에 대해 알리기 위해 사용한다.
- Delta Chat에 오신 것을 환영합니다! – Delta Chat은 다른 인기 있는 메신저 앱처럼 보여지지만, 여러분, 친구, 동료 또는 가족을 중앙 집중식으로 관리하거나 대규모 조직에 판매하지는 않습니다.\n\n기술적으로, Delta Chat은 현대적인 채팅 인터페이스를 갖춘 이메일 애플리케이션입니다. 👻\n\n 수십 억 명 중 누구와도 델타 채팅을 사용하려면 새 드레스로 이메일을 보내십시오: 이메일 주소를 사용하십시오. 수신자는 Delta Chat을 설치하거나 웹 사이트를 방문하거나 아무 곳에서나 등록할 필요가 없습니다. 하지만 원하는 경우 👉 https://get.delta.chat 을 선택할 수 있습니다.연락처 수정채팅 고정
@@ -338,11 +337,12 @@
새 메시지 %d건
- %1$s에게 메시지를 보냅니다. Delta Chat 없이도 메시지를 받을 수 있습니다.
+ %1$s에게 메시지를 보냅니다.당신이 첫 번째 메시지를 보낸 후에만 다른 사용자들이 이 그룹을 볼 것입니다.밀어서 취소꾹 눌러 음성 메시지를 녹음하고, 떼서 보내시오받은 편지함을 비웁니다.\n새 채팅을 시작하려면 \"+\"를 누르시오.
+
다른 Delta Chat 사용자 그리고 어떤 이메일 주소라도 채팅할 수 있습니다.모든 대화가 보관되었습니다.\n새 채팅을 시작하려면 \"+\"를 누르시오.공유 대상
@@ -360,7 +360,6 @@
메시지 전송 다시 시도이 그룹에 속해 있지 않기 때문에 쓸 수 없습니다. 가입하려면, 다른 구성원에게 문의하십시오.
- 이 대화는 로컬에서 생성된 메시지를 포함합니다. 따라서 메시지를 쓸 수 없습니다.메일링 목록의 메시지 발송은 아직 지원되지 않습니다.파일 형식을 표시할 수 없습니다: %s첨부 파일을 불러오지 못했습니다.
@@ -453,11 +452,11 @@
%2$s중 %1$s 사용됨
-
- 이메일로 채팅.초대 코드 스캔로그인
+
이메일 계정으로 로그인하시오
+
존재하는 이메일 계정으로 로그인하시오알려진 이메일 공급자의 경우 추가 설정이 자동으로 설정됩니다. 웹 설정에서 IMAP을 사용 가능으로 설정해야 하는 경우가 있습니다. 도움이 필요하면 전자 메일 공급자나 친구에게 문의하십시오.Delta Chat은 서버가 없고, 당신의 데이터는 장치에 남아 있습니다.
@@ -521,13 +520,12 @@
프로필 사진차단 목록차단된 연락처가 여기에 나타납니다.
+
계정 설정다른 사용자와 통신할 때 프로필 이미지, 이름 및 서명이 메시지와 함께 전송됩니다.내 이름서명 텍스트
-
- 내 델타 채팅 메신저와 함께 전송됨: https://delta.chat엔터키로 메시지 전송Enter 키를 누르면 문자 메시지가 전송됩니다.발신 미디어 품질
@@ -592,6 +590,7 @@
이 선택사항을 변경할 경우, 서버와 다른 클라이언트가 적절하게 구성되어 있는지 확인하십시오.\n\n그렇지 않으면 상황이 전혀 작동하지 않을 수 있습니다.보낸 폴더 보기복사본 내게 보내기
+
여러 장치에서 이 계정을 사용할 때 필요합니다.DeltaChat 폴더로 자동 이동받은 문서가 복잡해지지 않도록 대화 내용이 이동됩니다.
@@ -653,7 +652,9 @@
1년 후
+
자동암호화
+
자동 암호화는 자동 종단 간 전자 메일 암호화를 위한 새로운 공개 사양입니다.\n\n필요에 따라 종단 간 설정이 자동으로 생성되고 자동 암호화 설정 메시지를 사용하여 장치 간에 전송할 수 있습니다.자동 암호화 설정된 메시지 전송자동 암호화 설치 메시지는 사용자의 설정을 다른 자동 암호화 호환 앱과 안전하게 공유합니다.\n\n설치는 여기에 표시된 설치 코드에 의해 암호화되며 다른 장치에 입력해야 합니다.
@@ -775,12 +776,12 @@
인터넷에 연결되어 있지 않아 QR 코드 설정을 수행할 수 없습니다.\"%1$s\"에서 새 이메일 주소를 만들고 로그인하시겠습니까?\"%1$s\"에서 새 이메일 주소를 만들고 로그인하시겠습니까?\n\n기존 계정은 삭제되지 않습니다. 계정 전환 항목을 사용하여 계정 간을 전환합니다.
- 로그인 성공—이메일 주소는 %1$s입니다 \n\n원하는 경우, 이제 다름 사람에게 표시할 이름과 프로필 이미지를 입력할 수 있습니다.스캔한 QR 코드를 사용하여 새 계정을 설정할 수 없습니다.
+
스캔한 QR 코드는 새 계정을 설정하기 위한 것입니다. 새 델타 채팅 설치를 설정할 때 QR 코드를 스캔할 수 있습니다.
-
+
\"%1$s\"에 로그인하시겠습니까?
-
+
\"%1$s\"에 로그인하시겠습니까?\n\n기존 계정은 삭제되지 않습니다. 계정 전환 항목을 사용하여 계정 간을 전환합니다.%1$s이 그룹에 가입하도록 초대했습니다.\n\n%2$s의 장치가 응답하기를 기다리는 중입니다...
@@ -861,6 +862,7 @@
백업 내보내기자동 암호화 설정이 전송되었습니다.이 로그인을 삭제하시겠습니까? 모든 설정, 연락처, 채팅, 메시지 및 미디어를 포함한 모든 것이 삭제됩니다. 이 작업은 취소할 수 없습니다.
+
이메일: %1$s\n크기: %2$s\n계정 ID:%3$s보냄받음
@@ -923,14 +925,9 @@
Delta Chat 에서 사진 라이브러리에 이미지를 저장하려고 합니다.
-
- 백그라운드 알림
- 서버에 대한 백그라운드 연결을 사용하며 무시된 배터리 최적화가 필요합니다.이메일 서버에 대한 연결을 유지하고 백그라운드에서 메시지를 수신하려면 다음 단계에서 배터리 최적화를 무시하십시오.\n\nDelta Chat은 리소스를 거의 사용하지 않으며 배터리가 소모되지 않도록 주의합니다.
- 안정적인 백그라운드 연결Delta Chat이 백그라운드에 있는 동안 메시지를 받으려면 여기를 누르십시오.이미 Delta Chat 에서 백그라운드로 메시지를 수신하도록 허용했습니다.\n\n메시지가 여전히 백그라운드로 도착하지 않으면 시스템 설정도 확인하십시오.
-
diff --git a/res/values-lt/strings.xml b/src/main/res/values-lt/strings.xml
similarity index 87%
rename from res/values-lt/strings.xml
rename to src/main/res/values-lt/strings.xml
index f773f6c62..12ea0e717 100644
--- a/res/values-lt/strings.xml
+++ b/src/main/res/values-lt/strings.xml
@@ -1,10 +1,12 @@
-
+Delta ChatGeraiAtsisakyti
- Išvalyti paiešką
+
+ arba
+ Išvalyti paieškąTaipNeĮjungta
@@ -136,6 +138,9 @@
GifLipdukas
+ Pridėti į lipdukų rinkinį
+ Norėdami pridėti lipdukų, bakstelėkite „Atverti lipdukų aplanką“, sukurkite savo lipdukų paketui poaplankį ir tempkite į jį paveikslų ir lipdukų failus
+ Atverti lipdukų aplankąPaveikslaiGarso įrašaiBalso žinutė
@@ -207,6 +212,7 @@
Kopijuoti paveiksląKopijuoti el. paštąĮdėti iš iškarpinės
+ Nuoroda „%1$d“ negali būti atverta saityno naršyklėje. Ar norite, vietoj to, nukopijuoti nurodą į iškarpinę?Persiųsti žinutęAtsakyti į žinutęIšjungti pranešimus
@@ -227,6 +233,7 @@
Slinkti į apačiąSlinkti į viršųŽinynas
+ Kas yra „Webxdc“?Privatumo politikaŽymėti viskąTaisyti vardą
@@ -243,6 +250,7 @@
Bendrinti savo vietą su visais grupės dalyviaisĮrenginio žinutėsVietiniu mastu sugeneruotos žinutės
+ Šiame pokalbyje esančios žinutės yra generuojamos jūsų įrenginyje, kad naudojimosi metu būtumėte informuoti apie programėlės atnaujinimus ir problemas.Taisyti adresatąPrisegti pokalbį
@@ -255,6 +263,8 @@
Pradinė žinutė nerastaAtsakyti privačiaiPirminis kodas
+ Paaukoti
+
Išjungti 1 valandaiIšjungti 2 valandomsIšjungti 1 dienai
@@ -267,7 +277,7 @@
2 valandoms6 valandoms
- Failas įrašytas į \"%1$s\".
+ Failas įrašytas į „%1$s“.Vaizdo pokalbisPakviesti %1$s į vaizdo pokalbį?
@@ -278,6 +288,7 @@
Bakstelėkite norėdami atvertiVaizdo pokalbio egzemplioriusJūsų vaizdo pokalbio egzempliorius
+ Pavyzdys: https://jūsų-serveris.org/$KAMBARYSPakvietimas į vaizdo pokalbįJūs esate kviečiami į vaizdo pokalbį. Spustelėkite %1$s jei norite prisijungti.
@@ -346,6 +357,7 @@
Rašykite pirmąją žinutę, taip leisdami kitiems atsakyti šioje grupėje..\n\n• Nieko tokio, jei ne visi dalyviai naudoja Delta Chat.\n\n• Pirmosios žinutės pristatymas gali šiek tiek užtrukti.Perbraukite, norėdami atsisakytiBakstelėkite ir laikykite, norėdami įrašyti balso žinutę. Atleiskite, norėdami išsiųsti
+
Galite bendrauti su kitais Delta Chat naudotojais ir bet kuriais el. pašto adresais.Visi pokalbiai archyvuoti.\nPaspauskite „+“ norėdami pradėti naują pokalbį.Bendrinti su
@@ -361,7 +373,6 @@
Įrašyti kaipJūs negalite rašyti, nes nesate šioje grupėje. Norėdami prisijungti, paprašykite kito nario.
- Šiame pokalbyje yra vietiniu lygmeniu sukurtos žinutės. Štai kodėl negalite rašyti jokių žinučių.Nepavyksta atvaizduoti šio failo tipo: %sNepavyko įkelti priedo
@@ -377,6 +388,8 @@
Ar tikrai norite apsilankyti %1$s?Ieškoti
+ Ieškoti pokalbyje
+ Ieškoti failųIeškokite pokalbių, adresatų ir žinučiųNerasta jokių rezultatų pagal užklausą \"%s\"
@@ -392,6 +405,7 @@
Norėdami atlikti šį veiksmą, privalote būti grupės dalyviu.ŠifravimasBendrinami pokalbiai
+ Susiję pokalbiaiAdresatasGrupėGalerija
@@ -404,6 +418,7 @@
Čia bus rodomi šiame pokalbyje bendrinti vaizdo įrašai.Čia bus rodomi šiame pokalbyje bendrinti garso įrašų failai ir balso žinutės.Čia bus rodomos šiame pokalbyje bendrintos privačios programėlės.
+ Čia bus rodoma bet kuriame pokalbyje bendrinama medija.Medijos peržiūraSiųsti žinutę
@@ -411,10 +426,13 @@
Pridėti antrąjį įrenginį
+ Įsitikinkite, kad abu įrenginiai yra prisijungę prie to pačio belaidžio (Wi-Fi) arba laidinio tinkloPridėti kaip antrąjį įrenginįPirmajame įrenginyje pereikite į „Nustatymai / Pridėti antrąjį įrenginį“ ir nuskenuokite ten rodomą kodąRuošiama paskyra…
+ Nesklandumų šalinimas
+
Gaunamosios žinutės
@@ -433,11 +451,11 @@
Paskutinė žinutė sėkmingai išsiųsta.Žinutės
-
- Pokalbiai el. paštu.Skenuoti pakvietimo kodąPrisijungti
+
Prisijungti prie savo serverio
+
Prisijungti naudojant esamą el. pašto paskyrąŽinomiems el. pašto teikėjams papildomi nustatymai yra nustatomi automatiškai. Kartais, IMAP turi būti įjungtas prisijungus per naršyklę. Išsamesnės pagalbos teiraukitės savo el. pašto teikėjo ar draugų.Nėra jokių Delta Chat serverių, jūsų duomenys išlieka jūsų įrenginyje!
@@ -495,13 +513,12 @@
Profilio nuotraukaUžblokuoti adresataiJei užblokuosite adresatus, jie bus rodomi čia.
+
Slaptažodis ir paskyraBendraujant su kitais naudotojais, jūsų profilio paveikslas ir vardas bus rodomi kartu su jūsų žinutėmis. Jau išsiųsta informacija negalės būti ištrinta ar pašalinta.Jūsų vardasParašo tekstas
-
- Išsiųsta iš mano Delta Chat pokalbių programos: https://delta.chatĮvedimo (Enter) klavišas išsiunčiaPaspaudus įvedimo (Enter) klavišą, bus išsiunčiamos tekstinės žinutėsIšsiunčiamos medijos kokybė
@@ -549,6 +566,10 @@
Atsarginė kopijaPadaro atsarginę pokalbių kopiją į išorinę saugykląAtsarginė kopija padeda jums nusistatyti naują diegimą šiame ar kitame įrenginyje.\n\nAtsarginėje kopijoje bus visos žinutės, adresatai ir pokalbiai bei jūsų ištisinė Autocrypt sąranka. Atsarginės kopijos failą laikykite saugioje vietoje arba kaip įmanoma greičiau jį ištrinkite.
+
+ Eksportuoti %1$s
+
+ Eksportuoti visas %1$d paskyrasPradėti daryti atsarginę kopijąAtsarginė kopija sėkmingai įrašyta į %1$sTvarkykite raktus
@@ -573,6 +594,8 @@
Iš priimtų adresatųIš visųEksperimentinės ypatybės
+ Plėtotojo veiksena
+ Aktyvuoja derinimo parinktis ir gali paversti programą mažiau stabilią. Tik plėtotojams.Numatytasis fonasNumatytoji spalvaTinkintas paveikslas
@@ -589,6 +612,9 @@
Ištrinti profilio paveiksląRodyti dėklo piktogramąTaisyti profilį
+ Siųsti statistiką Delta Chat plėtotojams
+
+
Paieškos rezultataiNerasta jokių šypsniukų
@@ -604,7 +630,6 @@
Reakcijos
-
Ištrinti senas žinutesIštrinti žinutes iš įrenginio
@@ -624,7 +649,9 @@
Po 1 metų
+
Autocrypt
+
Autocrypt yra naujoji ir atviroji specifikacija automatiniam ištisiniam el. pašto šifravimui.\n\nPrireikus, jūsų ištisinė sąranka yra sukuriama automatiškai ir gali būti perduodama tarp įrenginių, naudojant Autocrypt sąrankos žinutes.Siųsti Autocrypt sąrankos žinutę\"Autocrypt sąrankos žinutė\" saugiai bendrina jūsų ištisinę sąranką su kitomis su Autocrypt suderinamomis programomis.\n\nSąranka bus užšifruota sąrankos kodu, kuris yra rodomas čia ir privalės būti įvestas kitame įrenginyje.
@@ -655,6 +682,41 @@
Jūs išjungėte išnykstančių žinučių laikmatį.%1$s išjungė išnykstančių žinučių laikmatį.
+
+ Jūs nustatėte išnykstančių žinučių laikmatį į %1$s sek.
+
+ %2$s nustatė išnykstančių žinučių laikmatį į %1$s sek.
+ Jūs nustatėte išnykstančių žinučių laikmatį į 1 minutę.
+
+ %1$s nustatė išnykstančių žinučių laikmatį į 1 minutę.
+ Jūs nustatėte išnykstančių žinučių laikmatį į 1 valandą.
+
+ %1$s nustatė išnykstančių žinučių laikmatį į 1 valandą.
+ Jūs nustatėte išnykstančių žinučių laikmatį į 1 dieną.
+
+ %1$s nustatė išnykstančių žinučių laikmatį į 1 dieną.
+ Jūs nustatėte išnykstančių žinučių laikmatį į 1 savaitę.
+
+ %1$s nustatė išnykstančių žinučių laikmatį į 1 savaitę.
+
+ Jūs nustatėte išnykstančių žinučių laikmatį į %1$s min.
+
+ %2$s nustatė išnykstančių žinučių laikmatį į %1$s min.
+
+ Jūs nustatėte išnykstančių žinučių laikmatį į %1$s val.
+
+ %2$s nustatė išnykstančių žinučių laikmatį į %1$s val.
+
+ Jūs nustatėte išnykstančių žinučių laikmatį į %1$s d.
+
+ %2$s nustatė išnykstančių žinučių laikmatį į %1$s d.
+
+ Jūs nustatėte išnykstančių žinučių laikmatį į %1$s sav.
+
+ %2$s nustatė išnykstančių žinučių laikmatį į %1$s sav.
+
+ %1$s išsiuntė žinutę iš kito įrenginio.
+ %1$s išsiuntė žinutę iš kito įrenginio. Bakstelėkite norėdami sužinoti daugiau.Sužinoti daugiau
@@ -685,18 +747,22 @@
Nuskenuokite tai, norėdami užmegzti kontaktą su %1$sNėra interneto ryšio, nepavyksta atlikti QR kodo sąrankos.Sukurti naują el. pašto adresą ties „%1$s“ ir prisijungti ten?
- Prisijungimas sėkmingas — jūsų el. pašto adresas yra %1$s\n\nJei norite, dabar galite įvesti vardą ir pridėti profilio paveikslą, kuris bus rodomas žmonėms, kuriems rašysite.
+ Įrašykite vardą.Nuskenuotas QR kodas negali būti naudojamas naujos paskyros nustatymui.
+
Nuskenuotas QR kodas yra skirtas naujos paskyros nustatymui. Galite nuskenuoti QR kodą tuomet, kai nustatote naują Delta Chat diegimą.
-
+
Prisijungti prie „%1$s“?%1$s patvirtintas.Nepavyksta patvirtinti %1$sPakeista sąranka, skirta %1$s.
+ QR kodo URL adresas nukopijuotas į iškarpinęPasirinkite pokalbį, į kurį siųsti žinutęnepavyko dekoduoti mailto nuorodos: %1$s
+
+ AtmestiAtsakytiNauja žinutėFoninis ryšys įjungtas
@@ -707,6 +773,8 @@
Jokio vardo ar žinutėsPranešimai išjungtiNaujos žinutės
+
+ Yra naujų žinučiųReikalingas leidimasTęsti
@@ -756,12 +824,13 @@
Eksportuoti atsarginę kopijąAutocrypt sąranka sėkmingai perduota!Ištrinti šį prisijungimą? Viskas bus ištrinta, įskaitant jūsų ištisinę sąranką, adresatus, pokalbius, žinutes ir mediją. Šis veiksmas yra galutinis ir negalės būti panaikintas.
+
El. paštas: %1$s\nDydis: %2$s\nPaskyros Id: %3$sišsiųstagautaAtverti žurnalų aplankąAtverti dabartinio žurnalo failą
- Dėklo piktograma negali būti išjungta, nes Delta Chat buvo paleista naudojant --minimized parinktį.
+ Dėklo piktograma negali būti išjungta, nes Delta Chat buvo paleista naudojant --minimized parinktį.Nerasta jokių rašybos pasiūlymų.Rodyti langąPerjungti tarp pokalbių
@@ -776,10 +845,13 @@
Fono peržiūraIšnykstančios žinutės aktyvuotos
+ Bakstelėkite du kartus norėdami pamatyti išsamesnę informaciją apie jungiamumą.Nėra interneto ryšio, nepavyko prisijungti.Paskyra nėra sukonfigūruota.Garso įrašo failas negali būti atkurtas.Atverti nustatymus
+
+ Importuoti įrenginio adresatusIšjungta Delta Chat programėlėjeIšjungta sistemos nustatymuose
@@ -788,14 +860,9 @@
Delta Chat nori įrašyti paveikslus į jūsų nuotraukų kolekciją.
-
- Foniniai pranešimaiNorėdami palaikyti ryšį su savo el. pašto serveriu ir gauti žinutes fone, kitame žingsnyje nepaisykite akumuliatoriaus optimizavimų (leiskite vykdyti programą fone).\n\nDelta Chat naudoja nedaug išteklių ir rūpinasi, kad neeikvotų jūsų akumuliatoriaus energijos.
- Patikimas foninis ryšys
- Reikalauja pastovaus pranešimoBakstelėkite čia, norėdami gauti žinutes, kol Delta Chat veikia fone.Jūs jau leidote Delta Chat gauti žinutes fone.\n\nJei žinutės vis tiek nepristatomos fone, patikrinkite taip pat savo sistemos nustatymus.
-
diff --git a/res/values-nb/strings.xml b/src/main/res/values-nb/strings.xml
similarity index 96%
rename from res/values-nb/strings.xml
rename to src/main/res/values-nb/strings.xml
index dd42622d0..ec72a802f 100644
--- a/res/values-nb/strings.xml
+++ b/src/main/res/values-nb/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -172,7 +172,6 @@
EnhetsmeldingerLokalt genererte meldingerMeldinger i denne chatten blir generert lokalt av Delta Chat-appen. Produsentene bruker den for å informere om appoppdateringer og problemer under bruk.
- Velkommen til Delta Chat! – Delta Chat ser ut og føles som andre populære messenger-apper, men involverer ikke sentralisert kontroll, sporing eller salg av deg, venner, kolleger eller familie til store organisasjoner.\n\nTeknisk er Delta Chat en e-postapplikasjon med et moderne chattegrensesnitt. E-post i en nye klær hvis du vil 👻\n\nBruk Delta Chat med hvem som helst av milliarder av mennesker: bare bruk e-postadressen deres. Mottakere trenger ikke installere Delta Chat, besøke nettsteder eller registrere seg noen steder – men selvfølgelig, hvis de vil, kan du peke dem til 👉 https://get.delta.chatRediger kontaktFest chat
@@ -258,6 +257,7 @@
Dra for å avbryteTrykk og hold for å ta opp en melding, slipp for å sendeTøm innboksen.\nTrykk \"+\" for å starte en ny chat.
+
Du kan chatte med andre Delta Chat-brukere og med hvilken som helst annen e-postadresse.Alle chatter er arkivert\nTrykk \"+\" for å starte en ny chat.Del med
@@ -301,12 +301,11 @@
Din profilinfoProfilbildeBlokkerte kontakter
+
KontoinnstillingerMitt navnSignaturtekst
-
- Sendt med Delta Chat: https://delta.chatSend med \"Enter\"VibrerSkjermsikkerhet
@@ -350,7 +349,9 @@
Sludrebakgrunn
+
Autocrypt
+
Autocrypt er en ny og åpen spesifikasjon for ende-til-ende-kryptert e-post.\n\nDitt ende-til-ende -oppsett blir opprettet automatisk ved bruk, og du kan overføre det mellom enheter med Autocrypt-oppsettsmeldinger.Igangsett Autocrypt-nøkkeloverføringThe Autocrypt-nøkkeloverføring krever at e-postklienten på den andre enheten er Autocrypt-kompatibel.\n\nDu kan så sende din hemmelige nøkkel til deg selv. Nøkkelen vil bli kryptert av en oppsettskode som vises her og må skrives inn på den andre enheten.
diff --git a/res/values-night/colors.xml b/src/main/res/values-night/colors.xml
similarity index 88%
rename from res/values-night/colors.xml
rename to src/main/res/values-night/colors.xml
index c5fc78904..46f224d30 100644
--- a/res/values-night/colors.xml
+++ b/src/main/res/values-night/colors.xml
@@ -3,7 +3,7 @@
@color/black#80414347@color/core_dark_05
- #ff282828
+ @color/gray70@color/reaction_pill_border@color/reaction_pill_text_color
diff --git a/res/values-night/themes_splash.xml b/src/main/res/values-night/themes_splash.xml
similarity index 100%
rename from res/values-night/themes_splash.xml
rename to src/main/res/values-night/themes_splash.xml
diff --git a/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml
similarity index 84%
rename from res/values-nl/strings.xml
rename to src/main/res/values-nl/strings.xml
index d060e5735..d9ee480e4 100644
--- a/res/values-nl/strings.xml
+++ b/src/main/res/values-nl/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOké
@@ -56,6 +56,7 @@
Volledig bericht tonen…Alles markeren als gelezen
+ Markeren als gelezenGelezen
@@ -83,7 +84,7 @@
Fout: %1$sEr is geen app die deze inhoud kan openen.Er is geen webbrowser geïnstalleerd.
- %1$s niet worden gevonden.
+ ‘%1$s’ kan niet worden gevonden.Gekopieerd naar het klembord.ContactpersonenE-mailadres
@@ -199,6 +200,8 @@
Nieuw contactpersoon
+ Contactpersoon handmatig toevoegen
+ Handmatig toegevoegde contactpersonen zijn bedoeld voor traditionele e-mailcommunicatie - eind-tot-endversleuteling is daarom niet gegarandeerd.Nieuw gesprekNieuwe groepGesprek klonen
@@ -213,7 +216,7 @@
VersturenEmojitoetsenbord tonen/verbergenGroep aanpassen
- Groepsnaam en -afbeelding
+ Groepsnaam en -fotoAlle locaties tonenGesprek archiverenGesprek de-archiveren
@@ -278,7 +281,7 @@
Berichten op apparaatLokaal gegenereerde berichtenBerichten in dit gesprek worden geplaatst door de app zelf. Zo blijf je op de hoogte van app-updates en gebruiksproblemen.
- Welkom bij Delta Chat! Delta Chat lijkt heel erg op andere chatapps, maar is toch écht anders! Zo is er geen centraal beheer, wordt je niet gevolgd en worden jouw gegevens of die van je vrienden/familie niet verkocht aan bedrijven.\n\nTechnisch gesproken is het een e-mailapp in een modern jasje (of moderne jurk 👻).\n\nGebruik Delta Chat om te communiceren met iedereen die een e-mailadres heeft. Ontvangers hoeven het niet te installeren, naar een website te gaan of ergens te registreren. Maar als ze dat willen, kun je ze natuurlijk altíjd doorverwijzen naar 👉 https://get.delta.chat
+ Kom in contact!\n\n🙌 Druk op beide apparaten op het hoofdscherm op ‘QR-code’. Kies vervolgens ‘QR-code scannen’ op het ene apparaat en houd hem boven het andere.\n\n🌍 Als jullie niet ter plaatse zijn, scan de code dan via een videogesprek of deel de code via een uitnodigingslink (‘QR-code delen’).\n\nDaarna kunnen jullie beide vertrouwen op het voeren van gesprekken via het grootste gedecentraliseerde netwerk ooit: e-mail. En in tegenstelling tot andere populaire apps, is er geen centraal beheer, word je niet gevolgd en worden de gegevens van jou, je vrienden, collega\'s en familieleden niet verkocht.Contactpersoon bewerkenGesprek vastmaken
@@ -385,12 +388,13 @@
%d nieuwe berichten
- Verstuur een bericht. %1$s hoeft hiervoor geen gebruik te maken van Delta Chat.
+ Stuur een bericht aan %1$s .Op een verzendlijst hebben ontvangers niet de mogelijkheid om te reageren op je berichten.Stel het eerste bericht op zodat anderen binnen deze groep kunnen reageren.Veeg opzij om te annuleren
- Houdt ingedrukt om een spraakbericht op te nemen; laat los om te versturen
- Je Postvak IN is leeg.\nDruk op ‘+’ om een gesprek te beginnen.
+ Houd ingedrukt om een spraakbericht op te nemen; laat los om te versturen
+ Er zijn nog geen gesprekken.\nDruk op ‘+’ om een gesprek te beginnen.
+
Je kunt een gesprek voeren met andere Delta Chat-gebruikers en via alle soorten e-mailadressen.Alle gesprekken zijn gearchiveerd.\nDruk op ‘+’ om een gesprek te beginnen.Delen met
@@ -408,7 +412,6 @@
Bericht opnieuw versturenAlleen leden kunnen berichten versturen aan deze groep. Vraag aan een lid om lid te worden.
- Je kunt geen berichten versturen omdat dit gesprek alleen lokaal gegenereerde berichten bevat.Het versturen van berichten naar mailinglijsten wordt nog niet ondersteundHet volgende bestandstype kan niet worden getoond: %sDe bijlage kan niet worden geladen
@@ -428,6 +431,8 @@
“%1$s” versturen naar…Bericht versturen naar…
+ Live-webxdckanalen
+ Maak gebruik van live-api\'s van Webxdc om directe verbindingen tussen apparaten op te zetten.Locaties tonen in tijdsbeeld
@@ -459,9 +464,9 @@
Groepsnaam
- Groepsafbeelding
- Groepsafbeelding verwijderen
- Groepsafbeelding wijzigen
+ Groepsfoto
+ Groepsfoto verwijderen
+ Groepsfoto wijzigenGroep aanmakenGeef de groep een naam.Deelnemers toevoegen
@@ -480,7 +485,7 @@
De in dit gesprek gedeelde afbeeldingen verschijnen hier.De in dit gesprek gedeelde video\'s verschijnen hier.De in dit gesprek gedeelde audiobestanden en spraakberichten verschijnen hier.
- Privé-apps in dit gesprek worden hier getoond.
+ Privéapps in dit gesprek worden hier getoond.De in gesprekken gedeelde media verschijnen hier.Mediavoorbeeld
@@ -497,9 +502,10 @@
Secundair apparaat toevoegen
- Zorg er voor dat beide apparaten verbonden zijn met hezelfde (wifi)netwerk
+ Zorg ervoor dat beide apparaten verbonden zijn met hetzelfde (wifi)netwerkHiermee wordt een QR-code samengesteld die door het tweede apparaat kan worden gescand om het account te kopiëren.Installeer Delta Chat op je andere apparaat (https://get.delta.chat)
+
Start Delta Chat, druk op ‘Toevoegen als secundair apparaat’ en scan de hier getoonde codeScan om een secundair apparaat voor %1$s in te stellen
@@ -537,7 +543,7 @@
VerbondenBezig met versturen…
- Het laatste bericht is verstuurd.
+ Het nieuwste bericht is verstuurd.Wordt niet ondersteund door je provider.Berichten
@@ -546,19 +552,49 @@
- Chatten via e-mail.
+
+ Aan de slag!
+
+ Ik heb al een account
+
+ Inloggen met eigen e-mailadres
+
+ Mijn profiel
+
+ Privacybeleid lezen
+
+ Privacybeleid van %1$s
+
+ Over profielen op %1$s
+
+ Akkoord gaan en profiel aanmaken
+
+ Andere server kiezen
+ Lijst met chatmailservers tonen
+
+ Maak een profiel aan om deel te nemen aan de groep ‘%1$s’.
+
+ Maak een profiel aan om een gesprek te voeren met ‘%1$s’.
+
+ Wil je een nieuw profiel aanmaken en een gesprek beginnen met ‘%1$s’?
+
+ Wil je een nieuw profiel aanmaken en deelnemen aan ‘%1$s’?
+
+ Veilige, gedecentraliseerde gesprekkenUitnodigingscode scannenInloggen
+
Inloggen op je server
+
Log in met een bestaand e-mailaccount.Bij bekende e-mailproviders gaat het instellen vrijwel geheel automatisch. Soms moet je imap inschakelen in de webversie van je e-mailclient. Vraag je e-mailprovider of vrienden om hulp.Er is geen Delta Chat-server; jóuw gegevens blijven op jóuw apparaat.
- Postvak IN
+ Postvak inIMAP-inlognaamIMAP-serverIMAP-poortIMAP-beveiliging
- Postvak UIT
+ Postvak uitSMTP-inlognaamSMTP-wachtwoordSMTP-server
@@ -576,14 +612,14 @@
Het ingevoerde e-mailadres ondersteunt vereenvoudigd instellen (OAuth2).\n\nTijdens de volgende stap moet je Delta Chat toestaan te fungeren als je e-mailapp.\n\nDelta Chat heeft geen eigen servers; jóuw gegevens blijven op jóuw apparaat!CertificaatcontroleVoer een geldig e-mailadres in
- Voer een geldig(e) IP-adres/server in
+ Voer een geldig(e) ip-adres/server inVoer een geldig poortnummer in (1-65535)Voer een geldig e-mailadres en wachtwoord in
- Back-up importeren
- Back-up aangetroffen in \"%1$s\".\n\nWil je de instellingen en gegevens daaruit importeren?
- Geen back-ups aangetroffen.\n\nKopieer de back-up naar \"%1$s\" en probeer het opnieuw of druk op \"Aan de slag\" om het normale instelproces te doorlopen.
+ Reservekopie importeren
+ Er is een reservekopie aangetroffen in ‘%1$s’.\n\nWil je de instellingen en gegevens daaruit importeren?
+ Er zijn geen reservekopieën aangetroffen.\n\nKopieer de reservekopie naar ‘%1$s’ en probeer het opnieuw of druk op ‘Aan de slag’ om het instelproces te doorlopen.
- Kan niet inloggen als \"%1$s\". Controleer het e-mailadres en wachtwoord.
+ Het inloggen als ‘%1$s’ is mislukt. Controleer je e-mailadres en wachtwoord.Ongeldige certificaten accepterenGebruikte instellingen:
@@ -604,7 +640,7 @@
Doorsturen naar…Wil je %1$d bestanden delen in het gekozen gesprek?\n\nDe bestanden worden ongewijzigd verstuurd in oorspronkelijke grootte.Wil je %1$d bestand(en) delen in %2$d gesprekken?\n\nDe bestanden worden ongewijzigd verstuurd in oorspronkelijke grootte.
- Wil je deze tekst versturen naar %1$d gesprekken?\n\n\"%2$s\"
+ Wil je deze tekst versturen naar %1$d gesprekken?\n\n“%2$s”Het delen is afgebroken wegens ontbrekende rechten.
@@ -615,15 +651,14 @@
ProfielfotoGeblokkeerde contactpersonenGeblokkeerde contactpersonen worden hier getoond.
+
Wachtwoord en account
- Je profielfoto, -naam en handtekening worden getoond in gesprekken, naast je berichten.
+ Je profielfoto, -naam en handtekening worden naast je gespreksberichten getoond.Je naamHandtekeningtekst
-
- Verstuurd met mijn Delta Chat-berichtenapp: https://delta.chat
- Versturen met Enter-toets
- Druk op de Enter-toets om tekstberichten te versturen
+ Versturen met enter
+ Druk op de entertoets om tekstberichten te versturenKwaliteit van verstuurde mediaNormaalLagere kwaliteit, kleinere bestanden
@@ -638,7 +673,7 @@
Systeemmeldingen tonen bij nieuwe berichtenBerichtinhoud tonen op meldingenToont de afzender en eerste regel van berichten op meldingen
- LED-kleur
+ LedkleurGeluidStilPrivacy
@@ -650,17 +685,21 @@
UiterlijkThemaTaal
- Incognito-toetsenbord
+ PrivétoetsenbordVerzoek het toetsenbord om geen persoonlijke woorden op te nemenLeesbevestigingen
- Als je leesbevestigingen uitschakelt, dan zie je geen leesbevestigingen van anderen.
+ Als je leesbevestigingen uitschakelt, zie je geen leesbevestigingen van anderen.
+ Server
+ VersleutelingSleutels beherenSysteememoji gebruiken
- Schakel Delta Chat\'s ingebouwde emoji-ondersteuning uit
+ Schakel Delta Chats ingebouwde emojiondersteuning uitIngebouwde camera gebruikenLet op: de ingebouwde camera beschikt over minder functies dan de systeemcamera
- App-toegang
+ Adresboek uitlezen
+ Bied aan om gesprekken te beginnen met contactpersonen uit het adresboek. Let op: voor sommige providers is eind-tot-eindversleuteling benodigd.
+ ApptoegangGesprekkenGespreksgeluidenTekstgrootte van berichten
@@ -669,15 +708,15 @@
Kan logboek niet opslaanLogboekOverig
- Back-up
- Gesprekken back-uppen naar externe opslag
- Een back-up helpt je om een nieuwe installatie in te stellen op dit of een ander apparaat.\n\nDe back-up bevat alle berichten, contactpersonen, gesprekken en je eind-tot-eindinstellingen. Bewaar het back-upbestand op een veilige plaats of verwijder het zo snel mogelijk.
-
+ Reservekopie
+ Gesprekken bewaren op externe opslag
+ Met een reservekopie kun je een nieuwe installatie instellen op dit of een ander apparaat.\n\nEen reservekopie bevat alle berichten, contactpersonen, gesprekken en je eind-tot-eindversleuteling. Bewaar het reservekopiebestand op een veilige plaats of verwijder het zo snel mogelijk.
+
‘%1$s’ exporteren
-
+
%1$d accounts exporteren
- Nu back-uppen
- De back-up is opgeslagen in ‘%1$s’.
+ Reservekopie maken
+ De reservekopie is opgeslagen in ‘%1$s’.Sleutels beherenGeheime sleutels exporterenGeheime sleutels exporteren naar ‘%1$s’?
@@ -693,9 +732,10 @@
Als je deze optie uitschakelt, zorg er dan voor dat je server en overige clients goed ingesteld zijn.\n\nAls dat niet zo is, dan werkt het misschien helemaal niet.Map ‘Verzonden’ controleren op nieuwe berichtenKopie versturen naar mijzelf
+
Vereist bij gebruik van dit account op meerdere apparaten.Automatisch verplaatsen naar DeltaChat-map
- Gesprekken worden verplaatst om je Postvak IN netjes te houden
+ Gesprekken worden verplaatst om je postvak netjes te houdenAlleen DeltaChat-map controlerenNegeer andere mappen. Hiervoor is vereist dat je server gesprekken kan verplaatsen naar de DeltaChat-map.Klassieke e-mails tonen
@@ -728,6 +768,8 @@
Profiel bewerkenIMAP IDLE uitschakelenMaak geen gebruik van IMAP IDLE, zelfs niet als de server het ondersteunt. Schakel deze optie in om het ophalen van berichten te vertragen. Let op: gebruik deze optie alleen voor testdoeleinden.
+ Statistieken delen met Delta Chat-ontwikkelaars
+
Zoekresultaten
@@ -744,6 +786,12 @@
Reacties
+
+ Reageren
+
+ Je hebt met %1$s gereageerd op “%2$s”
+
+ %1$s heeft met %2$s gereageerd op “%3$s”Oude berichten verwijderen
@@ -770,7 +818,9 @@
Na 1 jaar
+
Autocrypt
+
Autocrypt is een nieuwe, open specificatie voor het automatisch instellen van eind-tot-eindversleuteling.\n\nJe instellingen worden, indien nodig, automatisch aangemaakt en kunnen worden overgezet naar andere apparaten middels instelberichten.Autocrypt-instelbericht versturenEen ‘Autocrypt-instelbericht’ deelt je eind-tot-eindinstellingen veilig met andere Autocrypt-compatibele apps.\n\nDe instellingen zijn versleuteld middels een code die hier wordt getoond en moet worden overgetypt op het andere apparaat.
@@ -798,9 +848,9 @@
Je hebt de groepsnaam gewijzigd. Oude naam: “%1$s” - Nieuwe naam: “%2$s”De groepsnaam is gewijzigd door %3$s. Oude naam: “%1$s” - Nieuwe naam: “%2$s”
- Je hebt de groepsafbeelding gewijzigd.
+ Je hebt de groepsfoto gewijzigd.
- De groepsafbeelding is gewijzigd door %1$s.
+ De groepsfoto is gewijzigd door %1$s.‘%1$s’ is toegevoegd.
@@ -815,9 +865,9 @@
Je hebt de groep verlaten.De groep is verlaten door %1$s.
- Je hebt de groepsafbeelding verwijderd.
+ Je hebt de groepsfoto verwijderd.
- De groepsafbeelding is verwijderd door %1$s.
+ De groepfoto is verwijderd door %1$s.Je hebt locatiedeling ingeschakeld.Locatiedeling is ingeschakeld door %1$s.
@@ -858,15 +908,17 @@
De tijdklok van verdwijnende berichten is door %2$s ingesteld op %1$s weken.%1$s heeft een bericht verstuurd vanaf een ander apparaat.
- Berichten zijn vanaf nu gegarandeerd van eind-tot-eindversleuteling. Druk hier voor meer informatie.
- Alle berichten in dit gesprek zijn vanaf nu gegarandeerd van eind-tot-eind versleuteld.\n\nMet eind-tot-eindversleuteling blijven berichten tussen jou en je gesprekspartners geheim - zelfs je e-mailprovider kan ze niet uitlezen.
+ Berichten zijn vanaf nu gegarandeerd van eind-tot-eindversleuteling voorzien. Druk hier voor meer informatie.
+ Alle berichten in dit gesprek zijn vanaf nu gegarandeerd van eind-tot-eindversleuteling voorzien.\n\nMet behulp van deze versleuteling blijven berichten tussen jou en je gesprekspartners geheim - zelfs je e-mailprovider kan ze niet uitlezen.%1$s heeft een bericht verstuurd vanaf een ander apparaat. Druk hier voor meer informatie.Eind-tot-eindversleuteling kan niet meer worden gegarandeerd, omdat %1$s Delta Chat opnieuw heeft geïnstalleerd of een bericht vanaf een ander apparaat heeft verstuurd.\n\nMaak een afspraak met hem/haar en scan de QR-code opnieuw om eind-tot-eindversleuteling weer in te schakelen.
+ ⚠️ Voor %1$s is eind-tot-eindversleuteling vereist, maar dit is nog niet ingesteld in het huidige gesprek. Druk voor meer informatie.
+ Spreek met elkaar af en scan elkaars QR-code om eind-tot-eindversleuteling op te zetten.Meer informatieJe hebt het gesprek ‘Bewaarde berichten’ verwijderd.\n\nℹ️ Als je weer gebruik wilt maken van deze functie, begin dan een nieuw gesprek met jezelf.
- ⚠️ De opslagruimte die je provider je biedt is bijna overschreden - momenteel heb je %1$s%% ervan in gebruik.\n\nAls je alle ruimte verbruikt hebt, kun je mogelijk geen berichten meer ontvangen.\n\n👉 Kijk of je oude gegevens kunt verwijderen in de webclient van je provider. Overweeg ook ‘Instellingen --> Oude berichten verwijderen’ in te schakelen. Je kunt je huidige gebruik te allen tijde bekijken in ‘Instellingen --> Verbindingen’.
+ ⚠️ De opslagruimte die je provider biedt is bijna overschreden. Momenteel heb je %1$s%% ervan in gebruik.\n\nAls je geen ruimte meer hebt, kun je mogelijk geen berichten meer ontvangen.\n\n👉 Kijk of je oude gegevens kunt verwijderen in de webclient van je provider. Overweeg ook ‘Instellingen → Oude berichten verwijderen’ in te schakelen. Je kunt je huidige gebruik te allen tijde bekijken via ‘Instellingen → Verbindingen’.⚠️ De datum en tijd van je apparaat lijken niet te kloppen (%1$s).\n\nVerzet je klok ⏰🔧 om er zeker van te zijn dat je berichten kunt ontvangen.⚠️ Je versie van Delta Chat is mogelijk verouderd.\n\nDit kan problemen veroorzaken aangezien je gesprekspartners nieuwe versies gebruiken. Bovendien mis je hierdoor enkele nieuwe functies. 😳\nGa naar https://get.delta.chat of de appwinkel van je apparaat om te controleren op updates.
@@ -878,9 +930,10 @@
QR-codeQR-code als afbeelding ladenQR-code scannen
- Plaatst je camera boven de QR-code
+ Houd je camera boven de QR-code
+ Houd de QR-code voor de cameraDe QR-code kan niet worden ontcijferd
- Wil je deelnemen aan de groep \"%1$s\"?
+ Wil je deelnemen aan de groep ‘%1$s’?De gescande vingerafdruk komt niet overeen met de vorige voor %1$sDeze QR-code bevat een vingerafdruk, maar geen e-mailadres.\n\nVoor out-of-bandgoedkeuring, moet je eerst een beveiligde verbinding opzetten met de ontvanger.Gescande QR-codetekst:\n\n %1$s
@@ -907,17 +960,21 @@
Geen internetverbinding; kan QR-codes niet instellen.Wil je een nieuw e-mailadres aanmaken op ‘%1$s’ en daarmee inloggen?Wil je een nieuw e-mailadres aanmaken op ‘%1$s’ en daarmee inloggen?\n\nJe reeds aanwezige account wordt niet verwijderd. Druk op de knop ‘Ander account kiezen’ om tussen accounts te schakelen.
- Het inloggen is gelukt - je e-mailadres is ‘%1$s’.\n\nAls je wilt, kun je een naam en profielafbeelding opgeven die worden getoond aan de mensen waarmee je communiceert.
+ Kies een naam die herkenbaar is voor je contactpersonen en, desgewenst, een profielfoto.
+ Voer een naam in.De gescande QR-code kan niet worden gebruikt om een nieuw account in te stellen.
+
De gescande QR-code is voor het instellen van een nieuw account. Je kunt deze direct scannen na het (opnieuw) installeren van Delta Chat.
-
+
Inloggen als ‘%1$s’?
-
+
Wil je inloggen als ‘%1$s’?\n\nJe reeds aanwezige account wordt niet verwijderd. Druk op de knop ‘Ander account kiezen’ om tussen accounts te schakelen.
- %1$s heeft je uitgenodigd voor deze groep.\n\nEr wordt gewacht op antwoord van het apparaat %2$s…
+ %1$s heeft je uitgenodigd voor deze groep.\n\nEr wordt gewacht op antwoord van het apparaat van %2$s…
- %1$s heefn geantwoord en wacht op toelating tot de groep…
+ %1$s heeft geantwoord en wacht op toelating tot de groep…
+ Bezig met opzetten van eind-tot-eindversleuteling…
+ Er kan nog geen eind-tot-eindversleuteling worden gegarandeerd, maar je kunt wel alvast een bericht sturen.%1$s is goedgekeurd.Er kan geen eind-tot-eindversleuteling met %1$s worden gegarandeerd.
@@ -944,11 +1001,13 @@
Geen naam of berichtMeldingen zijn uitgeschakeldNieuwe berichten
+
+ Je hebt nieuwe berichten%1$d berichten in %2$d gesprekken
- Machtiging vereist
+ Recht vereistDoorgaanDelta Chat wil foto\'s en video\'s kunnen maken. Ga naar de app-instellingen, kies ‘Rechten’ en schakel ‘Camera’ in.Delta Chat wil spraakberichten versturen. Ga naar de app-instellingen, kies ‘Rechten’ en schakel ‘Microfoon’ in.
@@ -982,7 +1041,7 @@
KnippenKopiërenPlakken
- Bekijken
+ BeeldAltijd bovenaanOntwikkelaarOntwikkelaarshulpmiddelen
@@ -1003,15 +1062,16 @@
OpslaanNaamKies een groepsafbeelding
- Back-up exporteren
+ Reservekopie exporterenAutocrypt-instellingen overgedragen!Wil je dit account verwijderen? Alles wordt verwijderd: je eind-tot-eindinstellingen, contactpersonen, gesprekken, berichten en media. Deze actie kan niet ongedaan worden gemaakt.
+
E-mail: %1$s\nGrootte: %2$s\nAccount-id: %3$sverstuurdontvangenMap met logbestanden openenHuidig logbestand openen
- Het systeemvakpictogram is uitgeschakeld omdat Delta Chat is gestart met de optie --minimized
+ Het systeemvakpictogram is uitgeschakeld omdat Delta Chat is gestart met de optie --minimizedGeen suggesties gevonden.Venster tonenDe SOCKS5-ondersteuning is momenteel nog experimenteel - gebruik hiervan is op eigen risico. Als je een e-mailadres invoert, dan vindt er een dns-opzoeking plaats die niet wordt doorgesluisd via SOCKS5.
@@ -1051,9 +1111,9 @@
Open instellingenImporteer lokale contactpersonen
- Voor het voeren van gesprekken met lokale contactpersonen is contactpersoontoegang vereist. Open de systeeminstellingen en verleen deze toegang.
+ Voor het voeren van gesprekken met contactpersonen is toegang vereist. Open de systeeminstellingen en verleen deze toegang.
- Uitgenschakeld in Delta Chat
+ Uitgeschakeld in Delta ChatUitgeschakeld in systeeminstellingenApp op de achtergrond vernieuwen is uitgeschakeld in de systeeminstellingen
@@ -1077,18 +1137,23 @@
- Achtergrondmeldingen
- Zet een achtergrondverbinding op naar je server en negeert alle accu-optimalisaties.
- Om een achtergrondverbinding naar je server op te zetten, dien je in de volgende stap alle accu-optimalisaties te negeren.\n\nDelta Chat gebruikt weinig systeembronnen en verhoogt nauwelijks je accuverbruik.
+ Onmiddellijke bezorging
+ Push-afleverdienst gebruiken
+ Betrouwbare pushmeldingen voor chatmailservers
+ Weet je zeker dat je de push-afleverdienst wilt uitschakelen?\n\nDit kan leiden tot vertraagde meldingen.
+ Achtergrondverbinding gebruiken
+ Hiervoor is het verplicht dat accu-optimalisering wordt uitgeschakeld. Let op: gebruik alleen indien de push-afleverdienst niet beschikbaar is.
+ Achtergrondverbinding afdwingen
+ Toont een permanente melding
+
+ Om een achtergrondverbinding naar je server op te zetten, dien je in de volgende stap alle accu-optimalisaties te negeren.\n\nDelta Chat gebruikt weinig systeembronnen en verhoogt je accuverbruik nauwelijks.
- Betrouwbare achtergrondverbinding
- Vereist een permanente meldingDruk hier om berichten te ontvangen als Delta Chat niet geopend is.Je hebt al toestemming gegeven voor het ophalen van berichten op de achtergrond.\n\nAls het nog steeds niet werkt, controleer dan de systeeminstellingen.
-
- Wijzigingslog:\n\n💌 een-op-eengesprekken hebben voortaan gegarandeerd eind-tot-eindversleuteling bij gebruik van goedgekeurde contactpersonen\n\n😌 omwille van eenvoud worden zulke contactpersonen en gesprekken voorzien van groene vinkjes\n\n👥 groepen worden automatisch voorzien van gegarandeerde eind-tot-eindversleuteling (indien mogelijk)\n\n🔄 goedgekeurd, geblokkeerd, gearchiveerd, vastgemaakt en genegeerd wordt voortaan naar alle apparaten gesynchroniseerd
-
- Binnenkort beschikbaar: verbeteringen aan de camera, spraakberichten, reservekopieën, schermlezer, achtergronden per account, galerijselectie, webxdc in horizontale modus… of lees alles op %1$s
+ Wijzigingslog:\n\n❤️ Jaaaa! Eindelijk een langverwachte functie toegevoegd: een bericht lang ingedrukt houden om te reageren\n\n🔗 Als je geen QR-codes kunt scannen, dan kun je ze voortaan delen als uitnodigingslinks\n\n🔵 Voortaan wordt het aantal ongelezen berichten van alle accounts in de titel getoond\n\n… en vele, vele bugs opgelost… %1$s\n\nHelp de app te verbeteren: via ‘Instellingen → Geavanceerd → Statistieken versturen’ kun je de ontwikkelaars helpen om inzicht te krijgen in het dagelijks gebruik. Je kunt alle te versturen gegevens vooraf inzien.
+ Wijzigingslog:\n\n❤️ Jaaaa! Eindelijk een langverwachte functie toegevoegd: een bericht lang ingedrukt houden om te reageren\n\n🫸 PUSHmeldingen, indien ondersteund door diensten als https://nine.testrun.org\n\n🔗 Als je geen QR-codes kunt scannen, dan kun je ze voortaan delen als uitnodigingslinks\n\n🔵 Voortaan wordt het aantal ongelezen berichten van alle accounts in de titel getoond\n\n… en vele, vele bugs opgelost… %1$s
+ Nieuwe registratiemogelijkheden 🐣 en nog veel meer:\n\n⚡️ Registreer een account bij snelle chatmailservers (https://delta.chat/chatmail) of maak gebruik van traditionele mailservers\n\n👉 Ontvang pushmeldingen van elke chatmailserver\n\n👤 Voeg contactpersonen toe via ‘Contactpersonen bijvoegen’\n\n🥰 Reageer met een emoji\n\n📌 Maak gesprekken vast … en nog veel meer op %1$s
+ Nieuwe registratiemogelijkheden 🐣 en nog veel meer:\n\n⚡️ Registreer een account bij snelle chatmailservers (https://delta.chat/chatmail) of maak gebruik van traditionele mailservers\n\n👉 Ontvang pushmeldingen van elke chatmailserver\n\n👤 Voeg contactpersonen toe via ‘Contactpersonen bijvoegen’\n\n🥰 Reageer met een emoji\n\n📌 Maak gesprekken vast … en nog veel meer op %1$s
diff --git a/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml
similarity index 83%
rename from res/values-pl/strings.xml
rename to src/main/res/values-pl/strings.xml
index 7328ae153..369302a88 100644
--- a/res/values-pl/strings.xml
+++ b/src/main/res/values-pl/strings.xml
@@ -1,10 +1,12 @@
-
+Delta ChatOKAnuluj
- Wyczyść wyszukiwanie
+
+ lub
+ Wyczyść wyszukiwanieTakNieZaznacz
@@ -34,6 +36,8 @@
ZamknijZamknij oknoPrzekaż
+ Utwórz
+ PóźniejWyślij ponownie
@@ -52,6 +56,7 @@
Pokaż całą wiadomość…Wszys. przeczyt.
+ Oznacz jako przeczytanePrzeczytane
@@ -156,10 +161,13 @@
SzkicObraz
- Odpowiedź
+ OdpowiedzGifNaklejka
+ Dodaj do kolekcji naklejek
+ Aby dodać naklejki, dotknij „Otwórz folder naklejek”, utwórz podfolder dla swojego pakietu naklejek i przeciągnij do niego pliki obrazów i naklejek
+ Otwórz folder naklejekObrazyAudioWiadomość głosowa
@@ -208,13 +216,19 @@
Nowy kontakt
+ Dodaj kontakt ręcznie
+ Ręcznie dodane kontakty mogą być używane do wysyłania tekstu w klasycznych e-mailach i nie ma gwarancji, że będą one szyfrowane metodą end-to-end.Nowy czatNowa grupa
+ Klonuj czatLista rozgłoszeniowaLista rozgłoszeniowaNowa lista rozgłoszeniowaDodaj odbiorców
+ Edytuj listę rozgłoszeniową
+ Nazwa listy rozgłoszeniowej
+ Wpisz nazwę listy rozgłoszeniowejWyślijPrzełącz klawiaturę emojiEdytuj grupę
@@ -239,6 +253,7 @@
Kopiuj obrazKopiuj e-mailWklej ze schowka
+ Linku „%1$d” nie można otworzyć w przeglądarce internetowej. Czy zamiast tego chcesz skopiować link do schowka?Przekaż wiadomośćOdpowiedz na wiadomośćWyłącz powiadomienia
@@ -248,6 +263,7 @@
Wszystkie multimediaPokaż w czacie
+ Pokaż aplikację w czacieUdostępnijZablokuj
@@ -259,6 +275,7 @@
Przewiń na dołuPrzewiń na góręPomoc
+ Co to jest Webxdc?Polityka prywatnościZaznacz wszystkoZaznacz czat
@@ -280,7 +297,7 @@
Komunikaty urządzeniaWiadomości generowane lokalnieWiadomości w tym czacie są generowane lokalnie przez twoją aplikację Delta Chat. Twórcy używają go do informowania o aktualizacjach aplikacji i problemach podczas użytkowania.
- Witamy w Delta Chat! - Delta Chat wygląda i działa podobnie jak inne popularne komunikatory, ale nie miesza się w scentralizowaną kontrolę, śledzenie ani sprzedaż ciebie, przyjaciół, kolegów lub rodziny dużym organizacjom.\n\nTechnicznie Delta Chat jest aplikacją e-mail z nowoczesnym interfejsem czatu. Jeśli chcesz, wyślij e-mail w nowej sukience 👻.\n\nKorzystaj z Delta Chat z każdym spośród miliardów ludzi: po prostu użyj ich adresu e-mail. Odbiorcy nie muszą instalować Delta Chat, odwiedzać stron internetowych ani rejestrować się gdziekolwiek - oczywiście, jeśli im się spodoba, możesz ich skierować na 👉 https://get.delta.chat.
+ Skontaktuj się!\n\n🙌 Dotknij „Kod QR” na ekranie głównym obu urządzeń. Wybierz opcję „Zeskanuj kod QR” na jednym urządzeniu i skieruj go na drugie\n\n🌍 Jeśli nie znajdujesz się w tym samym pokoju, zeskanuj kod podczas rozmowy wideo lub udostępnij link z zaproszeniem w sekcji „Zeskanuj kod QR”\n\nNastępnie: korzystaj z komunikatora za pośrednictwem największej zdecentralizowanej sieci, jaka kiedykolwiek istniała: e-mail. W przeciwieństwie do innych popularnych aplikacji bez centralnej kontroli, śledzenia lub sprzedawania Ciebie, znajomych, współpracowników lub rodziny dużym organizacjom.Edytuj kontaktPrzypnij czat
@@ -295,6 +312,8 @@
Kod źródłowyDodaj do ekranu głównego
+ Wspomóż
+
Wyłącz na 1 godzinęWyłącz na 2 godzinyWyłącz na 1 dzień
@@ -399,11 +418,13 @@
%d nowych wiadomości
- Wyślij wiadomość. Nie szkodzi, jeśli %1$s nie korzysta z Delta Chat.
+ Wyślij wiadomość do %1$s.
+ Na liście rozgłoszeniowej odbiorcy będą otrzymywać wiadomości w czacie tylko do odczytu.Napisz pierwszą wiadomość, by inni mogli odpowiedzieć w tej grupie.\n\n• Nie ma problemu, jeśli nie wszyscy członkowie korzystają z Delta Chat.\n\n• Dostarczenie pierwszej wiadomości może chwilę potrwać.PRZESUŃ, BY ANULOWAĆDotknij i przytrzymaj, aby nagrać wiadomość głosową, zwolnij, aby wysłaćPusta skrzynka odbiorcza.\nNaciśnij \"+\" aby rozpocząć nowy czat.
+
Możesz rozmawiać z innymi użytkownikami Delta Chat i z dowolnym adresem e-mail.Wszystkie czaty zarchiwizowane.\nNaciśnij „+” aby rozpocząć nowy czat.Udostępnij
@@ -421,7 +442,6 @@
Spróbuj ponownie wysłać wiadomośćNie możesz pisać, ponieważ nie jesteś w tej grupie. Aby dołączyć, poproś innego członka.
- Ten czat zawiera wiadomości generowane lokalnie dlatego nie możesz pisać żadnych wiadomości.Wysyłanie wiadomości w listach mailingowych nie jest jeszcze obsługiwaneNie można wyświetlić tego typu pliku: %sNie udało się załadować załącznika
@@ -441,6 +461,8 @@
Wyślij „%1$s” do…Wyślij wiadomość do…
+ Kanał czasu rzeczywistego dla Webxdc
+ Włącz API czasu rzeczywistego dla Webxdc, aby tworzyć bezpośrednie połączenia między urządzeniami.Pokaż lokalizacje w ramach czasowych
@@ -464,6 +486,8 @@
Szukaj
+ Wyszukaj w czacie
+ Szukaj plikówWyszukaj czaty, kontakty i wiadomościNie znaleziono wyników dla „%s
@@ -479,6 +503,7 @@
Musisz być członkiem grupy, aby wykonać tę czynność.SzyfrowanieWspólne czaty
+ Powiązane czatyKontaktGrupaGaleria
@@ -493,6 +518,10 @@
Tutaj pojawią się prywatne aplikacje udostępnione na tym czacie.Tutaj pojawią się multimedia udostępnione w dowolnym czacie.Podgląd multimediów
+
+ Siatka proporcjonalna
+
+ Siatka kwadratowaWyślij wiadomość%1$s zmieniła swój adres z %2$s na %3$s
@@ -506,6 +535,7 @@
Upewnij się, że oba urządzenia są połączone z tym samym Wi-Fi lub sieciąSpowoduje to utworzenie kodu QR, który kolejne urządzenie może zeskanować w celu skopiowania konta.Zainstaluj Delta Chat na swoim kolejnym urządzeniu (https://get.delta.chat)
+
Uruchom Delta Chat, dotknij „Dodaj jako kolejne urządzenie” i zeskanuj pokazany tutaj kodZeskanuj, aby skonfigurować kolejne urządzenie dla %1$s
@@ -552,10 +582,40 @@
- Rozmawiaj przez e-mail.
+
+ Utwórz nowy profil
+
+ Mam już profil
+
+ Klasyczne logowanie e-mail
+
+ Twój profil
+
+ Przeczytaj politykę prywatności
+
+ Polityka prywatności na %1$s
+
+ O profilach na %1$s
+
+ Zgadzam się i Utwórz profil
+
+ Użyj innego serwera
+ Lista serwerów Chatmail
+
+ Tworzy profil, aby dołączyć do grupy „%1$s”.
+
+ Tworzy profil, aby rozmawiać z „%1$s”.
+
+ Chcesz utworzyć nowy profil i rozpocząć rozmowę z %1$s?
+
+ Chcesz utworzyć nowy profil i dołączyć do grupy „%1$s”?
+
+ Bezpieczny zdecentralizowany czatZeskanuj kod zaproszeniaZaloguj się
+
Zaloguj się na swoje konto e-mail
+
Zaloguj się przy użyciu istniejącego konta e-mailDla znanych dostawców usług poczty elektronicznej poniższe ustawienia są ustawiane automatycznie. Czasami IMAP musi być włączony w interfejsie WWW. O pomoc należy zwrócić się do usługodawcy e-mail lub znajomych.Nie ma serwerów Delta Chat, Twoje dane pozostają na Twoim urządzeniu!
@@ -620,14 +680,13 @@
Twój profilZdjęcie profiloweZablokowane kontakty
- Jeśli zablokujesz kontakty, zostaną one pokazane tutaj.
+ Zablokowane kontakty, zostaną pokazane tutaj.
+
Hasło i kontoTwoje zdjęcie profilowe i nazwa będą wyświetlane wraz z wiadomościami podczas komunikacji z innymi użytkownikami. Już wysłanych informacji nie można skasować ani usunąć.Twoja nazwaTekst podpisu
-
- Wysłane z komunikatora Delta Chat: https://delta.chatEnter wysyłaNaciśnięcie Enter wysyła wiadomości tekstoweJakość mediów wychodzących
@@ -661,11 +720,15 @@
Poproś klawiaturę o wyłączenie spersonalizowanej naukiPotwierdzenie odczytuJeśli potwierdzenia odczytu zostaną wyłączone, nie będzie można zobaczyć potwierdzeń odczytu od innych osób.
+ Serwer
+ SzyfrowanieZarządzaj prywatnymi kluczamiUżyj emoji systemowychWyłącza wbudowaną obsługę emoji Delta ChatUżyj aparatu w aplikacjiAparat w aplikacji ma zwykle mniej funkcji niż aparat systemowy
+ Odczytaj systemową książkę adresową
+ Zaproponuj tworzenie czatów z kontaktami z książki adresowej. Niektórzy dostawcy wymagają najpierw szyfrowania end-to-end.Dostęp do aplikacjiCzatyDźwięki w czacie
@@ -677,7 +740,11 @@
InneKopia zapasowaWykonaj kopię zapasową czatów na pamięci zewnętrznej
- Kopia zapasowa pomaga skonfigurować nową instalację na tym lub na innym urządzeniu.\n\nKopia zapasowa będzie zawierała wszystkie wiadomości, kontakty i czaty oraz pełną konfigurację funkcji automatycznego szyfrowania. Przechowuj plik kopii zapasowej w bezpiecznym miejscu lub usuń go jak najszybciej.
+ Kopia zapasowa pomaga skonfigurować nową instalację na tym lub na innym urządzeniu.\n\nKopia zapasowa będzie zawierała wszystkie wiadomości, kontakty i czaty oraz pełną konfigurację funkcji automatycznego szyfrowania typu end-to-end. Przechowuj plik kopii zapasowej w bezpiecznym miejscu lub usuń go jak najszybciej.
+
+ Eksportuj %1$s
+
+ Eksportuj wszystkie %1$d kontaUtwórz kopięKopia zapasowa została pomyślnie zapisana do %1$sZarządzaj prywatnymi kluczami
@@ -695,6 +762,7 @@
Jeśli wyłączysz tę opcję, upewnij się, że twój serwer i inni klienci są odpowiednio skonfigurowani.\n\nW przeciwnym razie wszystko może w ogóle nie działać.Pokaż katalog WysłaneWyślij kopię do siebie
+
Wymagane kiedy korzystasz z tego konta na wielu urządzeniach.Automatyczne przenoszenie do folderu DeltaChatRozmowy na czacie są przenoszone, aby nie zaśmiecać folderu Skrzynka odbiorcza
@@ -728,6 +796,11 @@
Usuń zdjęcie profilowePokaż ikonę w obszarze powiadomieńEdytuj profil
+ Wyłącz IMAP IDLE
+ Nie używaj rozszerzenia IMAP IDLE, nawet jeśli serwer je obsługuje. Włączenie tej opcji opóźni pobieranie wiadomości, włącz ją tylko na testy.
+ Wyślij statystyki do programistów Delta Chat
+
+
Wyniki wyszukiwaniaNie znaleziono emoji
@@ -743,6 +816,12 @@
Reakcje
+
+ Zareaguj
+
+ Zareagowano %1$s na „%2$s”
+
+ Użytkownik %1$s zareagował %2$s na „%3$s”Usuwanie starych wiadomości
@@ -769,19 +848,21 @@
Po 1 roku
+
Autocrypt
+
Autocrypt to nowa i otwarta specyfikacja szyfrowania e-maili typu end-to-end.\n\nTwoja konfiguracja end-to-end w razie potrzeby jest tworzona automatycznie i można ją przesłać między urządzeniami za pomocą Wiadomości konfiguracyjnej automatycznego szyfrowania.Wyślij wiadomość konfiguracyjną AutocryptWiadomość konfiguracyjna automatycznego szyfrowania” bezpiecznie udostępnia twoją konfigurację end-to-end innym aplikacjom zgodnym z Autocrypt. Klucz zostanie zaszyfrowany za pomocą wyświetlonego tutaj kodu konfiguracyjnego, który należy wpisać na drugim urządzeniu.Wyślij wiadomość konfiguracyjną AutocryptKlucz został wysłany do ciebie. Przejdź do innego urządzenia i otwórz wiadomość konfiguracyjną. Zostanie wyświetlona prośba o podanie kodu konfiguracyjnego. Wpisz następujące cyfry w podpowiedzi.\n\nGdy skończysz, drugie urządzenie będzie gotowe do użycia funkcji automatycznego szyfrowania.
- Preferuj pełne szyfrowanie
+ Preferuj szyfrowanie typu end-to-endWiadomość konfiguracyjna automatycznego szyfrowania
- Jest to wiadomość konfiguracyjna automatycznego szyfrowania służąca do przesyłania klucza między klientami.\n\nAby odszyfrować i użyć klucza, otwórz wiadomość w kliencie zgodnym z automatycznym szyfrowaniem i wprowadź kod konfiguracyjny przedstawiony na urządzeniu generującym.
- Jest to wiadomość konfiguracyjna automatycznego szyfrowania służąca do przesyłania klucza między klientami.\n\nAby odszyfrować i użyć klucza, dotknij lub kliknij tą wiadomość.
+ Jest to wiadomość konfiguracyjna automatycznego szyfrowania typu end-to-end służąca do przesyłania klucza między klientami.\n\nAby odszyfrować i użyć klucza, otwórz wiadomość w kliencie zgodnym z automatycznym szyfrowaniem i wprowadź kod konfiguracyjny przedstawiony na urządzeniu generującym.
+ Jest to wiadomość konfiguracyjna automatycznego szyfrowania typu end-to-end służąca do przesyłania klucza między klientami.\n\nAby odszyfrować i użyć klucza, dotknij lub kliknij tą wiadomość.Wiadomość konfiguracyjna automatycznego szyfrowaniaWprowadź kod konfiguracyjny wyświetlany na drugim urządzeniu.
- Udany transfer klucza. To urządzenie jest teraz gotowe do użycia automatycznego szyfrowania za pomocą tego samego klucza, co na drugim urządzeniu.
+ Udany transfer klucza end-to-end. To urządzenie jest teraz gotowe do użycia automatycznego szyfrowania za pomocą tego samego klucza, co na drugim urządzeniu.PowtórzZły kod konfiguracyjny. Spróbuj ponownie.\n\nJeśli nie pamiętasz kodu konfiguracji, po prostu uruchom ponownie transfer klucza na drugim urządzeniu.
@@ -789,6 +870,7 @@
Potwierdzenie odczytuTo jest potwierdzenie odczytu dla wiadomości ”%1$s„.\n\nTo potwierdzenie odczytu tylko informuje, że wiadomość została wyświetlona na urządzeniu odbiorcy. Nie ma gwarancji, że odbiorca przeczytał treść wiadomości.
+ Tej wiadomości nie można odszyfrować.\n\n• Możesz teraz pomóc odpowiadając po prostu na tą wiadomość i poprosić nadawcę o ponowne wysłanie wiadomości.\n\n• Jeśli właśnie ponownie zainstalowałeś Delta Chat, najlepiej będzie, jeśli ponownie skonfigurujesz Delta Chat teraz i wybierzesz „Dodaj jako drugie urządzenie” lub zaimportujesz kopię zapasową.Nieznany nadawca tego czatu. Więcej szczegółów znajdziesz w sekcji „Informacje”.Wiadomość od %1$sNie udało się wysłać wiadomości do %1$s.
@@ -800,6 +882,8 @@
Obraz grupy zmieniony przez %1$s.
+ Dodano członka %1$s.
+
Dodano członka %1$s.Użytkownik %2$s dodał członka %1$s.
@@ -852,6 +936,14 @@
Ustawiono zegar znikających wiadomości na %1$s tyg. Użytkownik %2$s ustawił zegar znikających wiadomości na %1$s tyg.
+
+ Użytkownik %1$s wysłał wiadomość z innego urządzenia.
+ Od teraz gwarantujemy, że wiadomości będą szyfrowane metodą end-to-end. Dotknij, aby przeczytać więcej.
+ Teraz gwarantujemy, że wszystkie wiadomości w tym czacie są szyfrowane metodą end-to-end.\n\nSzyfrowanie end-to-end zapewnia prywatność wiadomości między tobą a twoimi partnerami czatów. Nawet dostawca twojej poczty e-mail nie może ich odczytać.
+ Użytkownik %1$s wysłał wiadomość z innego urządzenia. Dotknij, aby przeczytać więcej.
+ Nie można już zagwarantować szyfrowania end-to-end, prawdopodobnie z powodu ponownej instalacji Delta Chat przez %1$s lub wysłania wiadomości z innego urządzenia.\n\nMożesz spotkać się z tą osobą osobiście i ponownie zeskanować jej kod QR, aby przywrócić gwarantowane szyfrowanie end-to-end.
+ ⚠️ %1$s wymaga szyfrowania end-to-end, które nie zostało jeszcze skonfigurowane dla tego czatu. Dotknij, aby dowiedzieć się więcej.
+ Aby ustanowić szyfrowanie end-to-end, możesz spotkać się z kontaktami osobiście i zeskanować ich kod QR, żeby ich wprowadzić.Czytaj więcejUsunięto czat „Zapisane wiadomości”.\n\nℹ️ Aby ponownie użyć funkcji „Zapisane wiadomości”, utwórz nowy czat ze sobą.
@@ -869,6 +961,7 @@
Załaduj kod QR jako obrazSkanuj kod QRUmieść aparat nad kodem QR
+ Przysuń kod QR do kameryNie udało się zdekodować kodu QRCzy chcesz dołączyć do grupy „%1$s?Zeskanowany odcisk palca nie pasuje do odcisku palca ostatnio widzianego u %1$s
@@ -897,24 +990,29 @@
Brak połączenia z Internetem, nie można przeprowadzić konfiguracji kodu QR.Utworzyć nowy adres e-mail „%1$s” i się zalogować?Utworzyć nowy adres e-mail „%1$s” i się zalogować?\n\nTwoje istniejące konto nie zostanie usunięte. Użyj opcji „Przełącz konto”, aby przełączać się między kontami.
- Logowanie powiodło się – twój adres e-mail to %1$s\n\nJeśli chcesz, możesz teraz wprowadzić nazwę i zdjęcie profilowe, które będą wyświetlane osobom, do których piszesz.
+ Ustaw nazwę, którą rozpoznają twoje kontakty. Możesz także ustawić zdjęcie profilowe.
+ Wpisz nazwę.Zeskanowanego kodu QR nie można użyć do założenia nowego konta.
+
Zeskanowany kod QR służy do zakładania nowego konta. Możesz zeskanować kod QR podczas konfigurowania nowej instalacji Delta Chat.
-
+
Zalogować się do „%1$s”?
-
+
Zalogować się do „%1$s”?\n\nTwoje istniejące konto nie zostanie usunięte. Użyj opcji „Przełącz konto”, aby przełączyć się między swoimi kontami.Użytkownik %1$s zaprosił cię do dołączenia do tej grupy.\n\nCzekam na odpowiedź urządzenia %2$s…Użytkownik %1$s odpowiedział, czekając na dodanie do grupy…
+ Ustanawiam gwarantowane szyfrowanie typu end-to-end, proszę czekać…
+ Nie można jeszcze ustanowić gwarantowanego szyfrowania typu end-to-end, ale być może już wysłałeś wiadomość.Kontakt %1$s zweryfikowany.
- Nie można zweryfikować %1$s
+ Nie można zweryfikować szyfrowania typu end-to-end %1$sZweryfikowano przez %1$sZweryfikowane przez ciebieZmieniono konfigurację dla %1$s
+ Aby zagwarantować szyfrowanie end-to-end, do tej grupy możesz dodawać wyłącznie kontakty oznaczone zielonym znacznikiem wyboru.\n\nMożesz spotkać się z kontaktami osobiście i zeskanować ich kod QR, aby je przedstawić.Skopiowano adres kodu QR do schowkaWybierz czat, do którego chcesz wysłać wiadomość
@@ -933,6 +1031,8 @@
Brak nazwy lub wiadomościPowiadomienia wyłączoneNowe wiadomości
+
+ Masz nowe wiadomości%1$d wiadomości w %2$d czatach
@@ -994,13 +1094,14 @@
Wybierz obraz grupyEksport kopii zapasowejPomyślnie przetransferowano konfigurację Autocrypt!
- Usunąć ten login? Wszystko zostanie usunięte, w tym kompletna konfiguracja, kontakty, czaty, wiadomości i multimedia. Ta akcja jest ostateczna i nie można jej odwrócić.
+ Usunąć ten login? Wszystko zostanie usunięte, w tym kompletna konfiguracja end-to-end, kontakty, czaty, wiadomości i multimedia. Ta akcja jest ostateczna i nie można jej odwrócić.
+
E-mail: %1$s\nRozmiar: %2$s\nID konta: %3$swysłaneodebraneOtwórz folder dziennikaOtwórz bieżący plik dziennika
- Ikona w zasobniku nie może być wyłączona, ponieważ Delta Chat został uruchomiony z opcją --minimized.
+ Ikona w zasobniku nie może być wyłączona, ponieważ Delta Chat został uruchomiony z opcją --minimized.Nie znaleziono propozycji pisowni.Pokaż oknoObsługa SOCKS5 jest obecnie eksperymentalna. Proszę używać na własne ryzyko. Jeśli wpiszesz adres w polu e-mail, nastąpi wyszukiwanie DNS, które nie będzie tunelowane przez SOCKS5.
@@ -1066,14 +1167,23 @@
- Powiadomienia w tle
- Używa połączenia z serwerem w tle i wymaga ignorowania optymalizacji baterii.
+ Natychmiastowe dostarczenie
+ Użyj usługi push
+ Niezawodne powiadomienia push dla serwerów chatmail
+ Wyłączyć korzystanie z usługi Push?\n\nMoże to skutkować opóźnieniami w powiadomieniach.
+ Użyj połączenia w tle
+ Wymaga zignorowania optymalizacji baterii. Użyj, jeśli usługa Push jest niedostępna
+ Wymuś połączenie w tle
+ Powoduje trwałe powiadomienie
+
Aby utrzymać połączenie z serwerem e-mail i odbierać wiadomości w tle, zignoruj optymalizacje baterii w następnym kroku.\n\nDelta Chat zużywa niewiele zasobów i dba o to, aby nie wyczerpać baterii.
- Niezawodne połączenie w tle
- Wymaga stałego powiadomieniaDotknij tutaj, aby odbierać wiadomości, podczas gdy Delta Chat działa w tle.Pozwolono już Delta Chat na odbieranie wiadomości w tle.\n\nJeśli wiadomości nadal nie docierają w tle, sprawdź też ustawienia systemu.
-
-
+
+ Co nowego:\n\n❤️ Tak! To było długo oczekiwane: naciśnij i przytrzymaj wiadomość, aby zareagować\n\n🔗 Jeśli nie możesz zeskanować kodów QR, udostępnij go jako linki z zaproszeniem\n\n🔵 Nieprzeczytane wiadomości ze wszystkich kont są teraz zliczane i wyświetlane w tytule\n\n … i MNÓSTWO poprawek błędów… %1$s\n\nPomóż w ulepszaniu aplikacji: użyj opcji „Ustawienia » Zaawansowane » Wyślij statystyki”, aby pomóc programistom w lepszej optymalizacji pod kątem rzeczywistego użytkowania. Możesz sprawdzić dane przed wysłaniem
+ Co nowego:\n\n❤️ Tak! To było długo oczekiwane: naciśnij i przytrzymaj wiadomości, aby zareagować\n\n🫸 Powiadomienia PUSH, jeśli są obsługiwane przez dostawców, takich jak https://nine.testrun.org\n\n🔗 Jeśli nie możesz zeskanować kodów QR, udostępnij go jako linki z zaproszeniem \n\n… i MNÓSTWO poprawek błędów…%1$s
+ Nowe wdrożenie 🐣 i nie tylko:\n\n⚡️ Zarejestruj się, aby korzystać z bezpiecznych i szybkich serwerów chatmail (https://delta.chat/chatmail) lub korzystaj z klasycznych serwerów e-mail\n\n👉 Powiadomienia PUSH dla dowolnego serwera chatmail\n\n👤 Połącz bezpiecznie znajomych za pomocą opcji „Dołącz kontakty”\n\n🥰 Reaguj dowolnymi emoji\n\n📌 Przypinaj czaty bezpośrednio z wyszukiwarki… i wiele WIĘCEJ na %1$s
+ Nowe wdrożenie 🐣 i nie tylko:\n\n⚡️ Zarejestruj się, aby korzystać z bezpiecznych i szybkich serwerów chatmail (https://delta.chat/chatmail) lub korzystaj z klasycznych serwerów e-mail\n\n👉 Powiadomienia PUSH dla dowolnego serwera chatmail\n\n👤 Odbierz „Dołączone kontakty” i łącz się ze znajomymi\n\n🥰 Szybszy wybór reakcji… i wiele WIĘCEJ na %1$s
+
diff --git a/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml
similarity index 97%
rename from res/values-pt-rBR/strings.xml
rename to src/main/res/values-pt-rBR/strings.xml
index a819971c8..42ef5a8e8 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/src/main/res/values-pt-rBR/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -271,7 +271,6 @@
Mensagens desse aparelhoMensagens geradas localmenteMensagens nesta conversa são geradas localmente pelo app Delta Chat. Essas mensagens são para informar sobre atualizações do app e problemas durante seu uso.
- Bem vindo ao Delta Chat! - O Delta Chat se parece com outros aplicativos de mensagens populares, mas não envolve controle centralizado, rastreamento ou venda de você, amigos, colegas ou família para grandes organizações.\n\nTecnicamente, o Delta Chat é um aplicativo de e-mail com uma interface de bate-papo moderna. E-mail de cara nova se você 👻\n\nUtilize o Delta Chat com qualquer pessoa dentre bilhões de pessoas: basta usar o endereço de e-mail. Os destinatários não precisam instalar o Delta Chat, visitar sites ou se inscrever em qualquer lugar - no entanto, é claro, se quiserem, você pode direcioná-los para 👉 https://get.delta.chatEditar contatoFixar conversa
@@ -383,11 +382,12 @@
%d novas mensagens
- Envie uma mensagem. Tudo bem se %1$s não usar o Chat Delta.
+ Envie uma mensagem. Tudo bem se %1$s não usar o Chat Delta.Compor a primeira mensagem habilitará os participantes a ingressar no grupo.\n\n• Não tem problema se nem todos usarem o Delta Chat.\n\n• O envio da primeira mensagem pode demorar.Deslize para cancelarToque e segure para gravar uma mensagem de voz e, depois, solte para enviarCaixa vazia.\nPressione \"+\" para conversar com alguém.
+
Você pode conversar com usuários do Delta Chat e com qualquer e-mail.Apenas conversas arquivadas.\nPressione \"+\" para uma nova conversa.Compartilhar com
@@ -405,7 +405,6 @@
Tentar enviar mensagem novamenteVocê não pode escrever porque não está neste grupo. Para entrar, peça a outro membro.
- Esta conversa contém mensagens geradas localmente. Portanto, você não pode escrever nenhuma mensagem.O envio de mensagens para lista de e-mails ainda não é suportado Não é possível exibir este tipo de arquivo: %sFalha ao carregar anexo
@@ -425,7 +424,6 @@
Enviar \"%1$s\" para…Enviar Mensagem para…
-
Exibir localização no tempo.Exibir pegadas
@@ -490,6 +488,7 @@
Certifique-se de que ambos os dispositivos estejam na mesma Wi-Fi ou na mesma redeIsso cria um código QR que outro dispositivo pode digitalizar para copiar a conta.Instalar o Delta Chat em seu outro dispositivo (https://get.delta.chat)
+
Inicie o Delta Chat, clique em \"Adicionar como outro dispositivo\" e escaneie o código mostrado aquiEscaneie para configurar outro dispositivo para %1$s
@@ -535,11 +534,11 @@
%1$s de %2$s usado
-
- Bate-papo por E-mailEscanear Código De ConviteAcessar
+
Acesse seu servidor
+
Acesse com uma conta de email existentePara os provedores de e-mail mais conhecidos as configurações adicionais são detectadas automaticamente. Por vezes, o IMAP precisa estar ativado nas configurações do servidor. Consulte seu provedor de e-mail ou amigos para obter ajuda.O Delta Chat não tem servidores. Seus dados ficam no seu aparelho!
@@ -605,13 +604,12 @@
Foto do perfilContatos bloqueadosSe você bloquear contatos, eles serão mostrados aqui.
+
Senha e contaSua foto de perfil e nome serão exibidos com suas mensagens a outros usuários. Informações já enviadas não podem ser apagas ou removidas.Seu nomeAssinatura
-
- Enviado pelo meu Delta Chat Messenger: https://delta.chatO botão enter enviaAs mensagens serão enviadas pressionando-se o enterQualidade de mídia de saída
@@ -677,6 +675,7 @@
Se você mudar esta opção, certifique-se de que seu servidor e demais aplicativos estejam configurados de acordo.\n\nDo contrário, funcionalidades podem não funcionar.Verificar a caixa de saídaEnviar cópia para mim
+
Necessário ao utilizar esta conta em múltiplos dispositivos.Mover automaticamente para a pasta DeltaChatConversas serão movidas para evitar desordem na caixa de entrada
@@ -748,7 +747,9 @@
Após 1 ano
+
Autocrypt
+
A criptografia automática (Autocrypt) é um padrão novo e aberto para criptografia de e-mail de ponta a ponta. \n\n A sua configuração é feita automaticamente conforme necessário e pode ser compartilhada entre dispositivos diferentes com \"mensagens de configuração do Autocrypt\".Enviar \"mensagem de configuração do Autocrypt\"?A \"mensagem de configuração do Autocrypt\" compartilha com segurança a sua configuração de ponta a ponta com outros aplicativos compatíveis. \n\nA configuração será criptografada por um código de configuração que será exibido aqui e deverá ser digitado no outro dispositivo.
@@ -874,12 +875,12 @@
Sem conexão à rede não é possível realizar configuração por código QR.Criar novo endereço de e-mail em \"%1$s\" e entrar nele?Criar novo endereço de e-mail em \"%1$s\" e entrar nele?\n\n nSua conta existente não será excluída. Use o item \"Trocar conta\" para alternar entre suas contas.
- Entrada bem-sucedida - seu endereço de e-mail é %1$s\n\nSe desejar, agora você pode inserir um nome e uma imagem do perfil que será exibida para as pessoas para quem você escrever.O código QR lido não pode ser usado para configurar uma nova conta.
+
O código QR digitalizado é para configurar uma nova conta. Você pode ler o código QR ao configurar uma nova instalação Delta Chat.
-
+
Conectar-se em \"%1$s\"?
-
+
Conectar-se em \"%1$s\"?\n\nSua conta existente não será excluída. Use a opção \"Mudar conta\" para alternar entre suas contas.%1$ste convidou para entrar neste grupo.\n\nEsperando o dispositivo de %2$s responder...
@@ -964,12 +965,13 @@
Exportar becapeConfiguração Autocrypt completada!Apagar este login? Tudo será apagado, incluindo sua configuração de criptografia, contatos, conversas, mensagens e mídia. Esta ação é final e irreversível.
+
E-Mail: %1$s\nTamanho: %2$s\nConta Id: %3$senviadorecebidoAbrir pasta de relatóriosAbrir relatório atual
- O ícone da bandeja não pode ser desativado porque o Delta Chat foi iniciado com a opção --minimized.
+ O ícone da bandeja não pode ser desativado porque o Delta Chat foi iniciado com a opção --minimized.Nenhuma sugestão de ortografia encontrada.Mostrar JanelaO suporte a SOCKS5 é atualmente experimental. Por favor, use a seu próprio risco. Se você digitar um endereço no campo de e-mail, haverá uma pesquisa de DNS que não será encapsulada pelo SOCKS5.
@@ -1034,15 +1036,9 @@
O Delta Chat deseja salvar imagens em sua biblioteca de fotos.
-
- Notificações de segundo plano
- Usa uma conexão de segundo plano com seu servidor e requer otimizações de bateria ignoradas.Para manter a conexão com seu servidor de e-mail e receber mensagens em segundo plano, ignore as otimizações de bateria na próxima etapa.\n\nO Delta Chat usa poucos recursos e toma cuidado para não descarregar a bateria.
- Conexão de segundo plano confiável
- Requer uma notificação permanenteToque aqui para receber mensagens enquanto o Delta Chat estiver em segundo plano.Você já permitiu que o Delta Chat receba mensagens em segundo plano.\n\nSe as mensagens ainda não chegarem em segundo plano, verifique também as configurações do sistema.
-
diff --git a/res/values-pt/strings.xml b/src/main/res/values-pt/strings.xml
similarity index 98%
rename from res/values-pt/strings.xml
rename to src/main/res/values-pt/strings.xml
index 5f9ee0911..3fb9f3740 100644
--- a/res/values-pt/strings.xml
+++ b/src/main/res/values-pt/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -205,6 +205,7 @@
EncriptaçãoVisualização de mídiaLogin
+
Login no seu servidorPara os provedores de e-mail conhecidos as configurações adicionais são configuradas automaticamente. Por vezes, o IMAP precisa estar activado no frontend da web. Consulte seu provedor de e-mail ou amigos para obter ajuda.Caixa de entrada
@@ -243,8 +244,6 @@
O seu nomeInformação do estado
-
- Enviado com meu Delta Chat Messenger: https://delta.chatTecla ENTER para enviarPressionar a tecla ENTER enviará mensagens de textoVibrar
@@ -304,7 +303,9 @@
Não, apenas conversasTudo
+
Encriptação automática
+
A encriptação automática (autocrypt) é uma especificação nova e aberta para encriptação e-mail de ponta a ponta. \n\n A sua configuração de ponta a ponta é criada automaticamente conforme necessário e pode transferi-la entre dispositivos com mensagens de configuração de autocrypt.Enviar mensagem com a definição da encriptação automáticaA \"Mensagem de Configuração Autocrypt\" compartilha com segurança a sua configuração de ponta a ponta com outros aplicativos compatíveis com Autocrypt. \n\nA configuração será encriptada por um código de configuração que é exibido aqui e deve ser digitado no outro dispositivo.
@@ -415,5 +416,6 @@
recebidoAbrir pasta de LogAbrir o aqrquio do log actual
+
Toque aqui para receber mensagens mesmo que o Delta Chat esteja em segundo plano.
diff --git a/res/values-ro/strings.xml b/src/main/res/values-ro/strings.xml
similarity index 97%
rename from res/values-ro/strings.xml
rename to src/main/res/values-ro/strings.xml
index d9e257ae7..f5487eba8 100644
--- a/res/values-ro/strings.xml
+++ b/src/main/res/values-ro/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -265,7 +265,6 @@
Mesajele DispozitivuluiMesaje generate la nivel localMesajele din acest chat sunt generate pe dispozitivul dumneavoastră pentru a vă informa cu privire la actualizările app-ului și la problemele apărute în timpul utilizării.
- Bine ați venit la Delta Chat! - Delta Chat arată și se simte ca și alte app-uri populare de mesagerie, dar nu implică control centralizat, urmărire sau vânzarea dumneavoastră, a prietenilor, colegilor sau a familiei către organizații mari.\n\nTehnic, Delta Chat este o aplicație de e-mail cu o interfață de chat modernă. E-mail într-o rochie nouă, dacă vreți 👻\n\nUtilizați Delta Chat cu oricine din miliardele de oameni: folosiți doar adresa lor de e-mail. Destinatarii nu trebuie să instaleze Delta Chat, să viziteze site-uri web sau să se înregistreze nicăieri - totuși, desigur, dacă doresc, le puteți indica 👉 https://get.delta.chat.Editați ContactulFixați Chat
@@ -377,11 +376,12 @@
%d de mesaje noi
- Trimiteți un mesaj către %1$s; ei îl pot primi chiar și fără Delta Chat.
+ Trimiteți un mesaj către %1$s.Ceilalți vor vedea acest grup numai după ce ați trimis un prim mesaj.Glisați pentru a anulaAtingeți continuu pentru a înregistra un mesaj vocal, apoi eliberați-l pentru a-l trimiteGoliți inbox.\nPress \"+\" pentru a începe un nou chat.
+
Puteți discuta cu alți utilizatori Delta Chat și cu orice adresă de e-mail.Toate chat-urile sunt archived.\nPress \"+\" pentru a începe un nou chat.Împărtășiți cu
@@ -399,7 +399,6 @@
Reîncercarea de a trimite mesajulTrebuie să fiți în acest grup pentru a posta un mesaj. Pentru a vă alătura, întrebați un alt membru.
- Acest chat conține mesaje generate local; scrierea este dezactivată.Trimiterea de mesaje în listele de discuții nu este încă acceptată.Nu se poate afișa acest tip de fișier: %sNu s-a reușit încărcarea atașamentului
@@ -479,6 +478,7 @@
Asigurați-vă că ambele dispozitive se află în aceeași rețea Wi-Fi sau în aceeași rețeaAstfel se creează un cod QR pe care cel de-al doilea dispozitiv îl poate scana pentru a copia contul.Instalați Delta Chat pe celălalt dispozitiv (https://get.delta.chat)
+
Porniți Delta Chat, atingeți \" Adăugați ca al doilea dispozitiv\" și scanați codul afișat aiciScanare pentru a configura un al doilea dispozitiv pentru %1$s
@@ -524,11 +524,11 @@
%1$s de %2$s folosit
-
- Chat prin e-mail.Scanați Codul InvitațieiAutentificare
+
Autentificați-vă în contul dumneavoastră de e-mail
+
Conectați-vă cu un cont de e-mail existentÎn cazul furnizorilor de e-mail cunoscuți, setările suplimentare sunt configurate automat. Uneori, IMAP trebuie să fie activat în setările web. Consultați furnizorul dumneavoastră de e-mail sau prietenii pentru ajutor.Nu există servere Delta Chat, datele tale rămân pe dispozitivul tău.
@@ -594,13 +594,12 @@
Imagine de profilContacte blocateContactele blocate vor apărea aici.
+
Parolă și contImaginea de profil, numele și semnătura dumneavoastră vor fi trimise împreună cu mesajele dumneavoastră atunci când comunicați cu alți utilizatori.Numele dumneavoastrăSemnătură Text
-
- Trimis cu Delta Chat Messenger: https://delta.chatTasta Enter trimiteApăsarea tastei Enter va trimite mesaje textCalitatea Mediilor de Ieșire
diff --git a/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
similarity index 79%
rename from res/values-ru/strings.xml
rename to src/main/res/values-ru/strings.xml
index ac9565083..b558ea89a 100644
--- a/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -34,7 +34,7 @@
ВерифицированЗакрыть
- Закрыть окно
+ Закрыть ОкноПереслатьСоздатьПозже
@@ -55,7 +55,7 @@
Начать чатПоказать сообщение полностью…
- Отметить всё как прочитанное
+ Отметить Все как ПрочитанныеПрочитано
@@ -66,9 +66,9 @@
Удалённые изображения могут использоваться для отслеживания вас.\n\nЭта настройка также позволяет загружать удалённые шрифты и другое содержимое. Даже если она отключена, вы все равно сможете видеть встроенные или кешированные изображения.\n\nЗагружать удалённые изображения?Всегда
- Всегда загружать удаленные сообщения
+ Всегда Загружать Изображения с Удалённого СервераТолько сейчас
- Показывать предупреждение
+ Показывать ПредупреждениеПоказать парольСкрыть парольНе сейчас
@@ -108,7 +108,7 @@
%d минуту%d минуты
- %d минут
+ %d минут%d мин
@@ -119,27 +119,27 @@
%d часов
- %d чатов
- %d чатов
- %d чатов
+ %d чат
+ %d чата
+ %d чатов%d чатов
- %d
- %d contact
- %d контактов
+ %d контакт
+ %d контакта
+ %d контактов%d контактов
- %d message
- %d messages
- %d messages
+ %d сообщение
+ %d сообщения
+ %d сообщений%d сообщений
- %d участников
- %d member
- %d member
+ %d участник
+ %d участника
+ %d участников%d участников
@@ -164,9 +164,9 @@
GIFСтикер
- Добавить в коллекцию стикеров
- Чтобы добавить стикеры, нажмите \"Открыть папку со стикерами\", создайте подпапку для набора стикеров и перетащите туда изображения или файлы стикеров
- Открыть папку со стикерами
+ Добавить в Коллекцию Стикеров
+ Для добавления стикеров, нажмите \"Открыть Папку со Стикерами\", создайте подпапку для набора ваших стикеров и перетащите туда изображения и файлы стикеров
+ Открыть Папку со СтикерамиИзображенияАудиоГолосовое сообщение
@@ -189,7 +189,7 @@
ФайлФайлы
- Личное приложение
+ ПриложениеПриложенияНеизвестно
@@ -215,29 +215,31 @@
Новый контакт
+ Добавить Контакт Вручную
+ Контакты добавленные вручную, можно использовать для отправки текстовых сообщений по обычной эл. почте, без гарантий сквозного шифрования.Новый чатНовая группа
- Клонировать чат
+ Клонировать ЧатСписок рассылкиСписки рассылкиНовый список рассылкиДобавить получателей
- Редактировать список рассылки
- Название списка рассылки
+ Редактировать Список Рассылки
+ Название Списка РассылкиВведите название списка рассылки.ОтправитьВключить эмодзи клавиатуруРедактировать группуНазвание и изображение группы
- Показать все местоположения
+ Все МестоположенияАрхивировать чатРазархивировать чатПрикрепить вложениеПокинуть группуУдалить чат
- Очистить чат
+ Очистить ЧатВы уверены, что хотите удалить \"%1$s\"?Удалить сообщенияУдалить контакт
@@ -250,7 +252,7 @@
Копировать изображениеКопировать E-MailВставить из буфера обмена
- Ссылка \"%1$d\" не может быть открыта в браузере. Хотите ли вы скопировать ссылку?
+ Ссылка \"%1$d\" не может быть открыта в браузере. Желаете скопировать ссылку?Переслать сообщениеОтветить на сообщениеОтключить уведомления
@@ -260,7 +262,7 @@
Все медиафайлыПоказать в чате
- Показать приложение в чате
+ Показать Приложение в ЧатеПоделитьсяЗаблокировать
@@ -271,16 +273,16 @@
ПаузаПрокрутить внизПрокрутить вверх
- Помощь
+ СправкаЧто такое Webxdc?Политика конфиденциальностиВыбрать всё
- Выбрать чат
+ Выбрать ЧатВыбрать большеИзменить имяНастройкиДополнительные параметры
- Просмотреть профиль
+ Просмотреть ПрофильУвеличить масштабУменьшить масштабСохранить журнал
@@ -294,7 +296,7 @@
Сообщения устройстваСообщения, созданные устройствомСообщения в этом чате генерируются локально вашим приложением Delta Chat. Разработчики используют его для информирования об обновлениях приложения и проблемах во время использования.
- Добро пожаловать в Delta Chat! – Delta Chat выглядит как другие популярные мессенджеры, но не включает в себя централизованный контроль, отслеживание и продажу ваших данных большим компаниям.\n\nФактически, Delta Chat это почтовый клиент с современным интерфейсом.\n\nИспользуйте Delta Chat с любым из миллиардов людей: достаточно их адреса электронной почты. Получателям не нужно устанавливать Delta Chat, посещать веб-сайты или регистрироваться где-либо — хотя, конечно, если хотите, вы можете указать им на 👉 https://get.delta.chat
+ Оставайтесь на связи!\n\n🙌 Нажмите \"QR-код\" на главном экране обоих устройств. Выберите \"Сканировать QR-код\" на одном устройстве и покажите его на другом.\n\n🌍 Если вы не находитесь в одном помещении, отсканируйте код с помощью видеозвонка или поделитесь приглашающей ссылкой из раздела \"Сканировать QR-код\".\n\nЗатем: наслаждайтесь работой мессенджера через самую крупную децентрализованную сеть, которая когда-либо существовала — электронную почту. И, в отличие от других популярных приложений, без централизованного контроля, отслеживания или продажи вас, ваших друзей, коллег или семьи крупным организациям.Изменить контактЗакрепить чат
@@ -308,7 +310,7 @@
Ответить личноИсходный код
- Добавить на главный экран
+ Добавить на Главный ЭкранПожертвовать1 час
@@ -340,7 +342,7 @@
Нажмите, чтобы открыть.Инстанс видеочатовВаш инстанс видеочатов
- Примеры: https://meet.jit.si/$ROOM или basicwebrtc:https://your-server
+ Пример: https://your-server.org/$ROOMЕсли функция видеочата активирована, вы можете запустить видеочат из любого чата. Для видеочата требуется совместимое приложение или браузер у всех участников.Использовать \"%1$s\" чтобы приглашать других в видеочаты?\n\nНастроив один раз, вы можете начинать видеочат из каждого чата. Это заменит предыдущие настройки видеочатов, если они были.Приглашение в видеочат
@@ -356,9 +358,9 @@
Вы уверены, что хотите удалить это сообщение?
- Delete %d message here and on the server?
- Удалить %d сообщений здесь и на сервере?
- Delete %d message here and on the server?
+ Удалить %d сообщение здесь и на сервере?
+ Удалить %d сообщения здесь и на сервере?
+ Удалить %d сообщений здесь и на сервере?Удалить %d сообщений здесь и на сервере?
@@ -393,14 +395,14 @@
- %d chat archived
- %d chat archived
- %d чатов архивировано
- %d архивированных чатов
+ %d чат заархивирован
+ %d чата заархивировано
+ %d чатов заархивировано
+ %d чатов заархивировано
- %d chat unarchived
- %d chat unarchived
+ %d чат разархивирован
+ %d чата разархивировано%d чатов разархивировано%d чатов разархивировано
@@ -415,12 +417,13 @@
%d новых сообщений
- Отправьте сообщение. Всё нормально, даже если %1$s не использует Delta Chat.
+ Отправьте сообщение %1$s.В списке рассылки получатели будут получать сообщения в чате с вами, доступном только для чтения.Другие пользователи смогут видеть эту группу только после того, как вы отправите первое сообщение.Сдвиньте для отменыНажмите и удерживайте для записи голосового сообщения, отпустите для отправки
- Пустой ящик.\nНажмите на \"+\" для начала нового чата.
+ Нет Чатов.\nНажмите \"+\" чтобы начать чат.
+
Вы можете общаться с другими пользователями Delta Chat и с любым адресом электронной почты.Все чаты заархивированы.\nНажмите на \"+\" для начала нового чата.Поделиться с
@@ -438,7 +441,6 @@
Повторить отправку сообщенияВы не можете писать, потому что вы не в этой группе. Чтобы присоединиться, попросите другого участника.
- Этот чат содержит локально сгенерированные сообщения. Поэтому вы не можете писать сообщения.Отправка сообщений в списках рассылки пока не поддерживается Невозможно отобразить этот тип файла: %sНе удалось загрузить вложение
@@ -457,7 +459,9 @@
Отправить \"%1$s\" …
- Отправить сообщение...
+ Отправить Сообщение...
+ Каналы реального времени Webxdc
+ Активировать Webxdc API реального времени для создания прямого подключения между устройствами.Показать местоположения с интервалом времени
@@ -481,10 +485,10 @@
Поиск
- Искать в чате
- Искать файлы
+ Искать в Чате
+ Искать ФайлыПоиск чатов, контактов и сообщений
- Ничего не найдено по запросу «%s»
+ Ничего не найдено по запросу «%s»
@@ -498,7 +502,7 @@
Необходимо быть участником группы для данного действия.ШифрованиеОбщие чаты
- Похожие чаты
+ Похожие ЧатыКонтактыГруппаГалерея
@@ -506,46 +510,47 @@
СсылкиКартаЗдесь будут отображены совместные фото и видео файлы которыми поделились в этом чате.
- Здесь будут отображены совместные документы, музыка и другие файлы которыми поделились в этом чате.
+ Документы и другие совместные файлы этого чата, появятся здесь.Изображения, размещённые в этом чате, будут отображаться здесь.Видео, размещённые в этом чате, будут отображаться здесь.
- Аудиофайлы и голосовые сообщения, размещённые в этом чате, будут отображаться здесь.
- Приложения, отправленные в этот чат, появятся здесь.
- Медиафайлы, отправленные в этот чат, появятся здесь.
+ Совместные аудиофайлы и голосовые сообщения этого чата, появятся здесь.
+ Совместные приложения этого чата, появятся здесь.
+ Совместные медиафайлы в любом чате, появятся здесь.Предпросмотр медиафайлов
- Пропорциональная сетка
+ Пропорциональная Сетка
- Квадратная сетка
+ Квадратная СеткаОтправить сообщение
- %1$s изменила свой адрес с %2$s на %3$s
+ %1$s изменил свой адрес с %2$s на %3$s
- Вы изменили свой адрес электронной почты с %1$s на %2$s.\n\nЕсли теперь вы отправите сообщение в проверенную группу, контакты там автоматически заменят старый адрес на ваш новый.\n\nНастоятельно рекомендуется настроить вашего старого поставщика услуг электронной почты на пересылку всех писем на ваш новый адрес электронной почты. В противном случае вы можете пропустить сообщения контактов, которые еще не получили ваш новый адрес.
+ Вы изменили свой адрес электронной почты с %1$s на %2$s.\n\nЕсли сейчас вы отправите сообщение в проверенную группу, контакты там, автоматически заменят старый адрес на ваш новый.\n\nНастоятельно рекомендуется настроить вашего старого поставщика услуг эл. почты на пересылку всех писем на ваш новый адрес электронной почты. В противном случае вы можете пропустить сообщения контактов, которые еще не получили ваш новый адрес.
- Добавить второе устройство
- Подключите оба устройства к одной и той же сети Wi-Fi
- Это создает QR-код, который второе устройство может отсканировать для копирования учетной записи.
- Установите Delta Chat на другое устройство (https://get.delta.chat)
- Запустите Delta Chat, нажмите \"Добавить второе устройство\" и отсканируйте показанный здесь код
+ Добавить Второе Устройство
+ Убедитесь что оба устройства в одной и той же сети или Wi-Fi
+ Это создаст QR-код, который второе устройство может отсканировать для копирования профиля.
+ Установите Delta Chat на другое ваше устройство (https://delta.chat/ru/download)
+
+ Запустите Delta Chat, нажмите \"У меня уже есть Аккаунт / Добавить Второе Устройство\" и отсканируйте отображаемый здесь кодОтсканируйте, чтобы настроить второе устройство для %1$s
- Добавить как второе устройство
- На первом устройстве перейдите в \"Настройки / Добавить второе устройство\" и отсканируйте показанный код
- Скопировать аккаунт с другого устройства на это устройство?
+ Добавить как Второе Устройство
+ На первом устройстве, перейдите в \"Настройки / Добавить Второе Устройство\" и отсканируйте отображаемый код
+ Скопировать профиль с другого устройства на это устройство?Прервать установку второго устройства?Это сделает недействительным QR-код, скопированный в буфер обмена.(экспериментально, требуется версия 1.36)
- ℹ️ Аккаунт перенесен на ваше второе устройство.
+ ℹ️ Профиль перенесён на ваше второе устройство.
- Готовим аккаунт...
+ Готовим профиль...Ожидаем получателя...
- Получатель подключен...
+ Получатель подключён...Передача...Устранение неполадок
@@ -576,13 +581,43 @@
- Чат через электронную почту.
+
+ Создать Новый Профиль
+
+ У Меня уже Есть Профиль
+
+ Логин в классическую Эл. Почту
+
+ Ваш Профиль
+
+ Читать Политику Конфиденциальности
+
+ Политика Конфиденциальности для %1$s
+
+ О профилях на %1$s
+
+ Принять и Создать Профиль
+
+ Использовать Другой Сервер
+ Список Серверов Chatmail
+
+ Создайть профиль чтобы присоединиться к группе \"%1$s\".
+
+ Создать профиль для чата с \"%1$s\".
+
+ Вы хотите создать новый профиль и начать чат с %1$s?
+
+ Вы хотите создать новый профиль и присоединиться к чату группы \"%1$s\"?
+
+ Безопасный Децентрализованный ЧатСканировать код приглашения
- Логин
+ Войти
+
Войти в ваш имэйл-аккаунт
+
Войти с существующим аккаунтом эл.почтыДля известных почтовых систем, дополнительные настройки устанавливаются автоматически. Иногда для IMAP требуется разрешение в веб-интерфейсе. Проконсультируйтесь с технической поддержкой вашей почтовой службы или друзьями, для получения помощи.
- У Delta Chat нет собственных серверов, ваши данные остаются только на вашем устройстве!
+ Delta Chat не собирает данные пользователей, все данные остаются на вашем устройстве!ВходящиеЛогин IMAPСервер IMAP
@@ -603,7 +638,7 @@
Пользователь SOCKS5Пароль SOCKS5Продолжить упрощенную настройку?
- Введённый адрес электронной почты поддерживает упрощённую настройку (OAuth 2.0).\n\nНа следующем шаге разрешите, пожалуйста, Delta Chat выступать в качестве Вашего приложения для чата с помощью электронной почты.\n\nУ Delta Chat нет серверов, Ваши данные остаются на Вашем устройстве.
+ Введённый адрес эл. почты поддерживает упрощённую настройку (OAuth 2.0).\n\nНа следующем шаге пожалуйста, разрешите Delta Chat выступать в качестве Вашего приложения для Чата по Эл. почте.\n\nDelta Chat не собирает данные пользователей, все данные остаются на вашем устройстве.Проверки сертификатовУкажите действительный адрес эл. почтыУкажите действительный сервер / IP адрес
@@ -617,13 +652,13 @@
Принимать недействительные сертификатыИспользуемые настройки:
- Сменить аккаунт
- Добавить аккаунт
- Удалить аккаунт
- Вы уверены, что хотите удалить данные учётной записи?
- Все данные учётной записи \"%s\" на этом устройстве будут удалены, включая настройки сквозного шифрования, контакты, чаты, сообщения и мультимедиа. Это действие не может быть отменено.
- Ненастроенный аккаунт
- Откройте аккаунт чтобы настроить его.
+ Сменить Профиль
+ Добавить Профиль
+ Удалить Профиль
+ Вы уверены, что хотите удалить данные профиля?
+ Все данные профиля \"%s\" на этом устройстве будут удалены, включая настройки сквозного шифрования, контакты, чаты, сообщения и мультимедиа. Это действие не может быть отменено.
+ Ненастроенный профиль
+ Откройте профиль чтобы настроить его.Попробуй подключиться сейчасСинхронизировать все
@@ -641,17 +676,16 @@
Использовать персонализованно: %sИспользовать по умолчанию: %s
- Информация профиля
- Изображение профиля
+ Ваш Профиль
+ Изображение ПрофиляЗаблокированные контактыЕсли вы заблокируете контакты, они будут показаны здесь.
+
Пароль и аккаунт
- Изображение профиля, имя и подпись будут отправлены вместе с сообщениями при общении с другими пользователями.
+ Изображение вашего профиля, имя и биография будут отправлены вместе с сообщениями при общении с другими пользователями.Ваше имя
- Текст подписи
-
- Отправлено из моего Delta Chat: https://delta.chat
+ БиографияОтправка кнопкой EnterНажатие клавиши Enter отправит текстовые сообщенияКачество отправляемых медиафайлов
@@ -685,11 +719,15 @@
Запрос клавиатуре на отключение в обучении персонализированных подсказокУведомления о прочтенииЕсли уведомления о прочтении отключены, вы не будете видеть подтверждения прочтения сообщений другими пользователями
+ Сервер
+ ШифрованиеУправление ключамиИспользовать системные эмодзиОтключить поддержку встроенных эмодзи Delta Chat
- Использовать камеру в приложении
- Камера в приложении обычно имеет меньше функций, чем системная
+ Использовать Камеру приложения
+ Камера приложения обычно имеет меньше функций, чем системная
+ Чтение Системной Адресной Книги
+ Предложение создать чаты с контактами из адресной книги. Некоторым провайдерам сначала необходимо настроить сквозное шифрование.Доступ приложенияЧатыЗвуки в чате
@@ -702,10 +740,10 @@
Резервное копированиеСохранить чаты на внешний носительРезервное копирование позволяет восстанавливать предыдущие настройки приложения во время новой установки на этом или другом устройстве.\n\nРезервная копия содержит все сообщения, контакты и чаты, а также параметры сквозного шифрования Autocrypt. После того, как резервная копия будет создана, как можно скорее перенесите её в надёжное место.
-
+
Экспортировать %1$s
-
- Экспортировать все %1$d аккаунтов
+
+ Экспортировать все %1$d профилиНачать резервное копированиеРезервная копия успешно записана на %1$sУправление ключами
@@ -723,6 +761,7 @@
При отключении этого параметра убедитесь, что сервер и ваши другие приложения для работы с электронной почтой настроены таким же образом.\n\nВ противном случае, всё может перестать работать.Следить за папкой ИсходящиеОтправлять копию себе
+
Требуется при использовании этого аккаунта на нескольких устройствах.Автоматически Перемещать в папку DeltaChatСообщения чатов переносятся, чтобы избежать путаницы в папке «Входящие»
@@ -736,7 +775,7 @@
Трансляция местоположения по запросуРежим разработчикаАктивирует отладочные опции, которые могут сделать приложение менее стабильным. Только для разработчиков.
- Фон по умолчанию
+ Изображение по умолчаниюЦвет по умолчаниюПользовательское изображениеПользовательский цвет
@@ -751,13 +790,15 @@
%1$s сообщениеМаксимальная загрузка доступна до %1$s
- Выбрать изображение профиля
+ Выбрать Изображение ПрофиляВыбрать новое изображение профиля
- Удалить фото профиля
+ Удалить Фото ПрофиляПоказать значок в трее
- Редактировать профиль
+ Редактировать ПрофильОтключить IMAP IDLE
- Не использовать расширение IMAP IDLE даже если сервер поддерживает его. Включение этой опции замедлит получение сообщений, включайте только для отладки.
+ Не используйте расширение IMAP IDLE даже если сервер поддерживает его. Включение этой опции замедлит получение сообщений, включайте только для тестирования.
+ Отправлять статистику разработчикам Delta Chat
+
Результаты поиска
@@ -774,6 +815,12 @@
Реакции
+
+ Реагировать
+
+ Вы отреагировали %1$s на \"%2$s\"
+
+ %1$s отреагировал %2$s на \"%3$s\"Удалить старые сообщения
@@ -800,12 +847,14 @@
Через 1 год
+
Autocrypt
+
Autocrypt — новый и открытый протокол установления сквозного шифрования для электронной почты.\n\nВаши настройки шифрования создаются автоматически, вы можете передавать их между устройствами используя сообщения настройки Autocrypt.Сообщение с параметрами Autocrypt\"Сообщение с параметрами Autocrypt\" служит для безопасной передачи параметров шифрования между собственными приложениями для работы с электронной почтой, поддерживающими протокол Autocrypt.\n\nЭти параметры шифруются с использованием специального кода, который показан здесь и должен быть введён в настраиваемом приложении. Отправить сообщение с параметрами Autocrypt
- Параметры шифрования были вам отправлены. Откройте сообщение с параметрами в настраиваемой программе, после чего программа запросит код подтверждения. Введите следующий код.\n\nПосле завершения настройки, программа сможет использовать Autocrypt.
+ Ваши настройки были оправлены вам. Подключите другое устройство и откройте сообщение настройки. Вам будет предложено задать код настройки. Введите следующие цифры:Предпочитать сквозное шифрованиеСообщение с параметрами AutocryptЭто сообщение с параметрами Autocrypt служит для передачи параметров сквозного шифрования между устройствами.\n\nДля расшифровывания параметров откройте это сообщение в приложении, поддерживающем Autocrypt и введите код подтверждения, показанный на исходном устройстве.
@@ -820,7 +869,7 @@
Уведомление о прочтенииЭто подтверждение того, что сообщение \"%1$s\" было открыто на устройстве получателя. Данное подтверждение не означает, что сообщение было прочитано.
- Сообщение не может быть расшифровано.\n\n• Возможно, поможет просто ответить на это сообщение и попросить отправителя отправить сообщение еще раз.\n\n• Если вы только что переустановили Delta Chat, лучше всего перенастроить Delta Chat сейчас и выбрать «Добавить как второе устройство» или импортировать резервную копию.
+ Это сообщение не может быть расшифровано.\n\n• Возможно, вам поможет простой ответ на это сообщение и просьба отправителю, отправить сообщение еще раз.\n\n• Если вы только что переустановили Delta Chat, лучше всего перенастроить Delta Chat сейчас и выбрать «Добавить как второе устройство» или импортировать резервную копию.Неизвестный отправитель для данного чата. Смотрите \"информацию\" для подробностей.Сообщение от %1$sНе удалось отправить сообщение %1$s.
@@ -840,11 +889,11 @@
Вы удалили участника %1$s.
- Участник %1$s удален %2$s.
+ Участник %1$s удалён %2$s.
- Вы вышли из группы.
+ Вы покинули группу.
- %1$s вышел из группы.
+ %1$s покинул группу.Вы удалили изображение группы.Изображение группы удалено %1$s.
@@ -853,7 +902,7 @@
%1$s включил трансляцию местоположения.Вы отключили таймер исчезающих сообщений.
- Таймер исчезающих сообщений отключен %1$s.
+ Таймер исчезающих сообщений отключён %1$s.Вы установили таймер исчезающих сообщений в %1$s с
@@ -887,28 +936,31 @@
%2$s установил таймер исчезающих сообщений на %1$s недель.
- %1$s отправил(а) сообщение с другого устройства.
+ %1$s отправил сообщение с другого устройства.Теперь сообщения гарантированно шифруются сквозным шифрованием. Нажмите, чтобы узнать подробности.
- Теперь все сообщения в этом чате имеют гарантированное сквозное шифрование.\n\nСквозное шифрование обеспечивает конфиденциальность сообщений между вами и вашими партнерами по чату. Даже ваш провайдер электронной почты не может их прочитать.
- %1$s отправил(а) сообщение с другого устройства. Нажмите, чтобы узнать больше.
+ Теперь все сообщения в этом чате имеют гарантированное сквозное шифрование.\n\nСквозное шифрование обеспечивает конфиденциальность сообщений между вами и вашими партнерами по чату. Даже ваш провайдер эл.почты не может их прочитать.
+ %1$s отправил сообщение с другого устройства. Нажмите, чтобы узнать больше.Сквозное шифрование больше не может быть гарантировано, вероятно потому что %1$s переустановил Delta Chat или отправил сообщение с другого устройства.\n\nВы можете встретиться с ним лично и отсканировать QR-код снова чтобы восстановить гарантированное сквозное шифрование.
- Подробнее
+ ⚠️ %1$s требуется сквозное шифрование, которое ещё не настроено для данного чата. Нажмите, чтобы узнать больше.
+ Чтобы установить сквозное шифрование, вы можете встретиться с контактами лично и отсканировать их QR-код, чтобы представиться друг другу.
+ Узнать БольшеВы удалили чат \"Сохраненные сообщения\".\n\nℹ️ Чтобы снова использовать функцию \"Сохраненные сообщения\", создайте новый чат с самим собой.
- ⚠️ Хранилище вашего провайдера скоро будет превышено, уже использовано %1$s%%.\n\nВозможно, вы не сможете получать сообщения, когда хранилище будет переполнено.\n\n👉 Пожалуйста, проверьте, можете ли вы удалить старые данные в веб-интерфейсе провайдера и подумайте о том, чтобы включить \"Настройки / Удалить старые сообщения\". Вы можете проверить текущее использование хранилища в любое время в \"Настройки / Соединение\".
+ ⚠️ Хранилище вашего провайдера скоро будет превышено, уже использовано %1$s%%.\n\nВозможно, вы не сможете получать сообщения, когда хранилище будет переполнено.\n\n👉 Пожалуйста, проверьте, можете ли вы удалить старые данные в веб-интерфейсе провайдера и подумайте о том, чтобы включить \"Настройки / Чаты и Медиафайлы / Удалить Старые Сообщения\". Вы можете проверить текущее использование хранилища в любое время в \"Настройки / Соединение\".⚠️ Дата или время вашего устройства кажутся неточными (%1$s).\n\nНастройте свои часы ⏰🔧, чтобы убедиться, что ваши сообщения принимаются правильно.⚠️ Ваша версия Delta Chat может быть устаревшей.\n\nЭто может вызвать проблемы, поскольку ваши собеседники используют версии новее - вам не хватает новых функций 😳\nПожалуйста, проверьте https://get.delta.chat или магазин приложений на наличие обновлений.
- Пожалуйста, введите защитный код вашей системы, чтобы продолжить.
+ Разблокируйте для продолженияQR-кодЗагрузить QR-код как изображениеСканировать QR-кодНаведите камеру на QR-код
+ Поднесите QR-код к камереQR-код не может быть декодированПрисоединиться к группе «%1$s»?Отсканированный отпечаток не совпадает с последним известным отпечатком %1$s
@@ -933,26 +985,30 @@
Отсканируйте код, чтобы присоединиться к группе «%1$s».QR-код приглашения
- Отсканируйте, чтобы создать контакт с %1$s
+ Отсканируйте, чтобы начать чат с %1$sНет соединения к интернету, невозможно начать процесс настройки по QR-коду.
- Создать новый адрес электронной почты на \"%1$s\" и войти?
- Создать новый адрес почты на \"%1$s\" и войти?\n\nВаш существующий аккаунт не будет удалён. Используйте пункт меню «Сменить аккаунт», чтобы переключаться между аккаунтами.
- Вход успешно выполнен—ваш адрес электронной почты %1$s\n\nЕсли хотите, можете ввести имя и установить аватар, которые будут отображаться людям, которым вы пишете.
- Отсканированный QR-код не может быть использован для создания нового аккаунта.
- Отсканированный QR-код предназначен для создания нового аккаунта. Вы можете отсканировать QR-код при установке Delta Chat.
-
+ Создать новый профиль на \"%1$s\" и войти?
+ Создать новый профиль на \"%1$s\" и войти?\n\nВаш существующий профиль не будет удалён. Используйте пункт меню «Сменить профиль», чтобы переключаться между профилями.
+ Укажите имя, под которым вас будут видеть ваши контакты. Также можно установить изображение профиля.
+ Введите имя.
+ Отсканированный QR-код не может быть использован для создания нового профиля.
+
+ Отсканированный QR-код предназначен для создания нового профиля. Вы можете отсканировать QR-код при установке Delta Chat.
+
Войти в «%1$s»?
-
- Войти в «%1$s»?\n\nВаш существующий аккаунт не будет удален. Используйте пункт «Сменить аккаунт» чтобы переключаться между аккаунтами.
+
+ Войти в «%1$s»?\n\nВаш существующий профиль не будет удалён. Используйте пункт «Сменить Профиль» чтобы переключаться между профилями.%1$s пригласил вас в группу.\n\nОжидаем ответа от %2$s…%1$s ответил, ожидаем добавления в группу…
- %1$s подтвержден.
- Невозможно подтвердить %1$s
+ Устанавливается гарантированное сквозное шифрование, пожалуйста, подождите...
+ Гарантированное сквозное шифрование ещё не установлено, но, возможно, вы уже отправили сообщение.
+ %1$s подтверждён.
+ Невозможно установить гарантированное сквозное шифрование с %1$sВерифицирован %1$s
- Проверено вами
+ Верифицирован мнойИзменены параметры для %1$sЧтобы обеспечить сквозное шифрование, вы можете добавлять только контакты с зеленой галкой в эту группу.\n\nВы можете отсканировать QR-коды контактов при встрече чтобы представить их.
@@ -974,6 +1030,8 @@
Без имени или сообщенияУведомления отключеныНовые сообщения
+
+ Есть новые сообщения%1$d сообщений в %2$d чатах
@@ -982,9 +1040,9 @@
ПродолжитьДля съемки фотографий или видео приложению Delta Chat требуется разрешение использовать Камеру, но сейчас она заблокирована. Перейдите в меню настроек приложения, выберите \"Разрешения приложений\" и включите \"Камера\".Для отправки аудио сообщений приложению Delta Chat нужно разрешение использовать микрофон, но сейчас микрофон заблокирован. Перейдите в меню настроек приложения, выберите \"Разрешения приложений\" и включите \"Микрофон\".
- Для вложения или экспорта фотографий, видео или аудио файлов в Delta Chat требуется доступ к памяти устройства, однако в этом разрешении было отказано навсегда. Перейдите в меню настроек приложения, выберите \"Разрешения приложений\" и включите \"Память\".
+ Для получения и отправки файлов, зайдите в настройки приложения, выберите \"Разрешения\" и включите \"Хранилище\".Чтобы передать местоположение приложению Delta Chat нужно разрешить доступ к нему, но сейчас он заблокирован. Перейдите в меню настроек приложения, выберите \"Разрешения приложений\" и включите \"Местоположение\".
- Чтобы получать уведомления, перейдите в «Системные настройки» > «Приложения» > «Delta Chat» и включите «Уведомления».
+ Для получения уведомлений, зайдите в «Системные настройки» > «Приложения» > «Delta Chat» и включите «Уведомления».Рисуйте, чтобы размывать
@@ -1006,17 +1064,17 @@
Выбор языкаФайлВыйти
- Редактировать
+ ПравкаОтменитьПовторитьВырезатьКопироватьВставить
- Просмотреть
- Показывать сверху
+ Вид
+ Поверх всех оконРазработчикИнструменты разработчика
- Помощь
+ СправкаУзнать больше о Delta ChatПрисоединиться к разработке на GitHubСообщить о проблеме
@@ -1028,7 +1086,7 @@
Информация о шифрованииУдалить сообщениеБольше информации
- МММ Д
+ MMM DУдалитьСохранитьИмя
@@ -1036,18 +1094,19 @@
Экспорт резервной копииНастройки Autocrypt успешно переданы!Удалить эту учётную запись? Все данные будут удалены, включая настройки сквозного шифрования, контакты, чаты, сообщения и медиа файлы. Это действие нельзя будет отменить.
+
Эл.почта: %1$s\nРазмер: %2$s\nПуть: %3$sОтправленополученоОткрыть папку журналовОткрыть текущий файл журнала
- Значок в трее нельзя отключить, так как Delta Chat был запущен с параметром --свернуть
+ Значок в трее нельзя отключить, так как Delta Chat был запущен с параметром --свернутьПредложений по правописанию не найдено. Показать ОкноПоддержка SOCKS5 в настоящее время экспериментальная. Используйте на свой риск. Если вы введете адрес электронной почты, DNS-запросы, которые не туннелируются через SOCKS5, не будут произведены.
- Привязка кнопок
+ Горячие клавишиПереключение между чатамиПрокрутка сообщений
@@ -1074,7 +1133,7 @@
После записи нажмите дважды, чтобы отправить. Для отмены записи проведите слева-направо двумя пальцами.Дважды нажмите, чтобы увидеть подробности соединения.Отсутствует подключение к Интернету, войти не удалось.
- Учетная запись не настроена
+ Профиль не настроен.Этот аудиофайл не может быть проигран.Чтобы делать фотографии, снимать видео и использовать сканер QR-кодов, откройте системные настройки и включите \"Камера\".
@@ -1092,9 +1151,9 @@
В среднем каждые %1$d часовПроверено в %1$s
- Приложения, полученные или отправленные в любом чате, появятся здесь. «Файлы» показывают недавно загруженные личные приложения.
+ Приложения, полученные или отправленные в любом чате, появятся здесь. «Файлы» показывают недавно загруженные.
- Нажмите кнопку «поделиться»
+ Нажмите кнопку поделитьсяВыберите «Добавить на главный экран», чтобы добавить приложение на ваш главный экран.Delta Chat использует вашу камеру для фото и видео съёмки и сканирования QR-кодов.
@@ -1107,19 +1166,24 @@
- Фоновые уведомления
- Используется фоновое соединение с вашим сервером игнорируя требования по оптимизации батареи.
+ Мгновенная Доставка
+ Использовать Службу Push
+ Надёжные Push Уведомления для Серверов Chatmail
+ Отключить использование Службы Push?\n\nЭто может привести к задержке уведомлений.
+ Использовать Фоновое Соединение
+ Требуется отключение оптимизации батареи, используется, если служба Push Уведомлений недоступна
+ Принудительное Фоновое Соединение
+ Активирует постоянное уведомление
+
Чтобы поддерживать соединение с вашим сервером и получать уведомления в фоновом режиме, отключите оптимизацию батареи на следующем шаге.\n\nDelta Chat использует мало ресурсов и старается не расходовать вашу батарею.
- Надёжное фоновое соединение
- Требует постоянного уведомленияНажмите здесь, чтобы получать сообщения, когда Delta Chat находится в фоновом режиме.
Вы уже разрешили Delta Chat получать сообщения в фоне.\n\nЕсли сообщения всё ещё не приходят в фоне, пожалуйста, проверьте также системные настройки.
-
- Что нового:\n\n💌 личные чаты теперь гарантируют сквозное шифрование для контактов с зеленой галкой\n\n😌 чтобы вам было проще, эти чаты также отмечены зеленой галкой\n\n👥 группы создаются автоматически с гарантированным шифрованием если это возможно\n\n🔄 Принятие/Блокирование, Архивирование, Закрепление и заглушение чатов синхронизируется между вашими устройствами
-
- Следите за новыми улучшениями в камере, голосовых сообщениях, резервном копировании всех аккаунтов, программе чтения с экрана, обоях для каждой учетной записи, выборе всех в файлов в галерее, альбомной ориентации webxdc... или прочитайте о них на %1$s
+ Что нового:\n\n❤️ Да! Долгожданная возможность: Долгое нажатие на сообщение для реакций\n\n🔗 При невозможности сканировать QR-код можно отправить приглашающую ссылку\n\n🔵 Непрочитанные сообщения всех аккаунтов теперь подсчитываются и отображаются в заголовке\n\n… а также ТОННЫ исправленных ошибок … %1$s\n\nПомогите улучшить приложение: включите в \"Настройки / Дополнительные параметры / Отправлять статистику\", чтобы помочь разработчикам оптимизировать работу в реальных условиях. Вы можете просмотреть данные перед отправкой.
+ Что нового:\n\n❤️ Да! Долгожданная возможность: Долгое нажатие на сообщение для реакций\n\n🫸 PUSH Уведомления, если они поддерживаются провайдерами вроде https://nine.testrun.org\n\n🔗 При невозможности сканировать QR-код можно отправить приглашающие ссылки\n\n… а также ТОННЫ исправленных ошибок … %1$s
+ Новые Объявления 🐣 и другое:\n\n⚡️ Зарегистрируйтесь на защищённых быстрых серверах электронной почты (https://delta.chat/chatmail) или используйте классические почтовые серверы\n\n👉 Push-уведомления для любого почтового сервера чата\n\n👤 Безопасное подключение друзей с помощью функции \"Прикрепить контакты\".\n\n🥰 Реагируйте на сообщения эмоциями\n\n📌 Закрепляйте чаты прямо из поиска … и ещё МНОГОЕ на %1$s
+ Новые Объявления 🐣 и Многое другое:\n\n⚡️ Зарегистрируйтесь на одном из безопасных и быстрых среверов chatmail (https://delta.chat/chatmail) или используйте классические сервера эл.почты\n\n👉 PUSH уведомления на любом из chatmail серверов\n\n👤 Получите \"Прикреплённые контакты\" и присоединяйтесь к вашим друзья\n\n🥰 Выбор быстрой реакции … и Многое другое на %1$s
diff --git a/res/values-sc/strings.xml b/src/main/res/values-sc/strings.xml
similarity index 95%
rename from res/values-sc/strings.xml
rename to src/main/res/values-sc/strings.xml
index 49f68a78e..fb1162dc6 100644
--- a/res/values-sc/strings.xml
+++ b/src/main/res/values-sc/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatAB
@@ -181,7 +181,6 @@
Messàgios de su dispositivuMessàgios ingendrados localmenteSos messàgios in custa tzarrada benint ingendrados localmente dae s\'aplicatzone Delta Chat tua. Sos isvilupadores los impreant pro informare a pitzu de sos agiornamentos de s\'aplicatzione e de problemas durante s\'impreu.
- Bene bènnidu in Delta Chat! – Delta Chat paret simigiante a àteras aplicatziones populares pro imbiare messàgios, ma non tenet controllos tzentralizados, arrastamentu o bèndida de sos datos tuos, de sos collegas tuos o de sos familiares tuos a organizatziones mannas.\n\nTecnicamente, Delta Chat est un\'aplicatzione de posta eletrònica cun un\'interfache de tzarrada moderna. Sa posta eletrònica in una bestimenta noa, diamus pòdere nàrrere 👻\n\nImprea Delta Chat cun chie si siat: depes impreare petzi s\'indiritzu de posta eletrònica issoro. Sos destinatàrios non tenent bisòngiu de installare Delta Chat, de bisitare sitos web o de si registrare in noddue - ma craru chi, si sunt interessados, li podes nàrrere de andare a s\'indiritzu 👉 https://get.delta.chatModìfica su cuntatuApica sa tzarrada
@@ -270,6 +269,7 @@
Iscurre pro annulareIncarca e mantene incarcadu pro registrare unu messàgiu vocale, lassa pro imbiareCartella de intrada bòida.\nIncarca \"+\" pro abèrrere una tzarrada noa.
+
Podes tzarrare cun àteros impreadores de Delta Chat e cun cale si siat indiritzu de posta eletrònica.Tzarradas archiviadas.\nIncarca \"+\" pro abèrrere una tzarrada noa.Cumpartzi cun
@@ -284,7 +284,6 @@
Torra a proare a imbiare su messàgiuNon podes iscrìere ca non ses in custu grupu. Pro b\'intrare pedi a un\'àteru membru.
- Custa tzarrada cuntenet messàgios ingendrados localmente. Duncas non podet iscrìere messàgiu perunu.Impossìbile ammustrare custa casta de documentu: %sAmmustra sas positziones in su tempus
@@ -319,7 +318,9 @@
Anteprima de su documentu multimedialeImbia messàgiuIntra
+
Intra in su servidore tuo
+
Intra cun un\'indiritzu de posta eletrònica chi esistatPro sos frunidores de posta eletrònica connotos sas impostatziones additzionales benint impostadas in automàticu. Cada tantu s\'IMAP cheret abilitadu in sas impostatziones web. Si ti serbit agiudu pedi a su frunidore de posta eletrònica tuo o a sos amigos tuos.No esistint serbidores de Delta Chat, sos datos tuos abarrant in su dispositivu tuo.
@@ -374,13 +375,12 @@
Fotografia de profiluCuntatos blocadosSi as a blocare cuntatos ant a èssere allistados inoghe.
+
Crae de intrada e contuS\'immàgine de profilu tua e su nùmene tuo ant a èssere ammustrados in paris cun sos messàgios tuos cando ses comunichende cun àteros impreadores. Sas informatziones giai imbiadas non podent èssere iscantzelladas o bogadas.Su nùmene tuoFirma
-
- Imbiadu cun Delta Chat: https://delta.chatImbia cun \"Imbiu\"Incarchende sa tecla Imbiu as a imbiare sos messàgiosCalidade de sos documentos multimediales in essida
@@ -482,7 +482,9 @@
A pustis de 1 annu
+
Autocrypt
+
Autocrypt est un ispetzìfica noa e aberta pro sa tzifradura automàtica a nodu terminale (end-to-end) de sas lìteras de posta eletrònica.\n\nS\'impostatzione a nodu terminale tua benit creada automaticamente icando sebit e la podes tramudare dae unu dispositivu a s\'àteru cun sos Messàgios de impostatzione de Autocrypt.Imbia unu messàgiu de impostatzione de AutocryptUnu \'Messàgiu de configuratzione Autocrypt\' cumpartzit sa configuratzione a nodu terminale (end-to-end) cun àteras aplicatziones cumpatìbiles cun Autocrypt.\n\nSa configuratzione ant a èssere tzifradas cun unu còdighe ammustradu inoghe chi depet èssere insertadu in s\'àteru dispositivu.
@@ -494,7 +496,4 @@
Informatziones de tzifraduraÀteras informatzionesLuchete de tzifradura
-
- Connessione de isfundu de fide
- Tenet bisòngiu de una notìfica permanente
diff --git a/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml
similarity index 97%
rename from res/values-sk/strings.xml
rename to src/main/res/values-sk/strings.xml
index c77ba3a94..819d0c6a0 100644
--- a/res/values-sk/strings.xml
+++ b/src/main/res/values-sk/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -265,7 +265,6 @@
Správy zariadeniaMiestne generované správySprávy v tejto konverzácií sú generované lokálne vašou aplikáciou Delta Chat. Jeho tvorcovia ho používajú na informovanie o aktualizáciách aplikácií a problémoch počas používania.
- Vitajte na chatu Delta! - Delta Chat vyzerá a vyzerá ako iné populárne aplikácie pre komunikáciu, nezahŕňa však centralizované riadenie, sledovanie ani predaj vašich priateľov, kolegov alebo rodiny veľkým organizáciám.\n\nTechnicky je Delta Chat e-mailová aplikácia s moderným rozhraním pre chat. . Ak budete chcieť, pošlite e-mail v novom šate 👻\n\nPoužite program Delta Chat s kýmkoľvek z miliárd ľudí: stačí použiť jeho e-mailovú adresu. Príjemcovia nemusia inštalovať Delta Chat, navštevovať webové stránky alebo sa kdekoľvek registrovať - samozrejme, ak sa im páči, môžete ich odkázať na 👉 https://get.delta.chatUpraviť kontaktPripnúť konverzáciu
@@ -389,6 +388,7 @@
Posunutím akciu zrušíteKlepnutím a podržaním nahráte hlasovú správu, uvoľnením ju odošletePrázdna doručená pošta.\nStlačením tlačidla + začnete novú konverzáciu
+
Môžete konverzovať s ostatnými používateľmi služby Delta Chat a s ľubovoľnou e-mailovou adresou.Všetky konverzácie boli archivované.\nStlačením tlačidla „+“ začnete novú konverzáciuZdieľať s
@@ -406,7 +406,6 @@
Skúste správu odoslať znovaNemôžete písať, pretože nie ste v tejto skupine. Ak sa chcete pripojiť, požiadajte iného člena.
- Táto konverzácia obsahuje miestne generované správy. Preto nemôžete písať žiadne správy.Posielanie správ do diskusných skupín (mailing list) zatiaľ nie je podporované.Nie je možné zobraziť tento typ súboru: %sPrílohu sa nepodarilo načítať
@@ -500,11 +499,11 @@
%1$s z %2$svyužitých
-
- Chatovanie cez e-mail.Skenovať kód pozvánkyPrihlásiť sa
+
Prihláste sa na server
+
Prihláste sa pomocou existujúceho e-mailového účtuPre známych poskytovateľov e-mailov sa automaticky nastavujú ďalšie nastavenia. Niekedy je potrebné v nastaveniach webu povoliť protokol IMAP. Požiadajte o pomoc svojho poskytovateľa e-mailu alebo priateľovNeexistujú žiadne servery Delta Chat, vaše dáta zostanú vo vašom zariadení.
@@ -570,13 +569,12 @@
Profilový obrázokBlokované kontaktyAk zablokujete kontakty, zobrazia sa tu.
+
Heslo a účetPri komunikácii s ostatnými používateľmi sa vedľa vašich správ zobrazí váš profilový obrázok a meno. Už odoslané informácie nemožno vymazať ani odstrániť.Vaše menoText v podpise
-
- Odoslané pomocou Delta Chat Messenger-a: https://delta.chatZadajte odoslanie kľúčaTextové správy sa odošlú po stlačení EnteruKvalita odchádzajúcich médií
@@ -642,6 +640,7 @@
Ak túto možnosť zakážete, uistite sa, že váš server a ostatní klienti sú zodpovedajúcim spôsobom nakonfigurovaní.\n\nV opačnom prípade nemusí fungovať vôbec.Pozrieť priečinok OdoslanéOdoslať kópiu sebe
+
Vyžaduje sa, ak používate tento účet na viacerých zariadeniach.Automaticky presúvať do priečinka DeltaChatKonverzácie sa presunú, aby sa predišlo preplneniu doručenej pošty
@@ -713,7 +712,9 @@
Po 1 roku
+
Autokrypt
+
Autokrypt je nová a otvorená špecifikácia automatického šifrovania e-mailov typu end-to-end.\n\nVaše komplexné nastavenie sa vytvára automaticky podľa potreby a môžete ho medzi zariadeniami prenášať pomocou správ o nastavení automatického šifrovania.Pošlite správu s nastavením autokryptovaniaSpráva o nastavení automatického šifrovania bezpečne zdieľa vaše komplexné nastavenie s ostatnými aplikáciami kompatibilnými s automatickým šifrovaním.\n\nNastavenie bude šifrované tu zobrazeným nastavovacím kódom a musí byť zadané na druhom zariadení.
@@ -839,10 +840,10 @@
Nie je pripojenie na internet, nedá sa nastaviť kód QR.Vytvoriť novú e-mailovú adresu na „%1$s“ a prihlásiť sa tam?Vytvorte novú e-mailovú adresu na „%1$s“ a prihláste sa tam?\n\nVáš existujúci účet nebude odstránený. Medzi položkami môžete prepínať pomocou položky „Prepnúť účet“.
- Prihlásenie bolo úspešné - vaša e-mailová adresa je %1$s\n\nlf chcete, teraz môžete zadať meno a profilový obrázok, ktoré sa zobrazia ľuďom, s ktorými si píšete.Naskenovaný QR kód nie je možné použiť na založenie nového účtu.
+
Naskenovaný QR kód slúži na založenie nového účtu. QR kód môžete naskenovať pri nastavovaní novej inštalácie Delta Chat.
-
+
Prihlásiť sa na \"%1$s\"?%1$s vás pozval, aby ste sa pripojili k tejto skupine.\n\nČaká sa na odpoveď zo zariadenia používateľa %2$s...
@@ -925,12 +926,13 @@
Exportovať zálohuNastavenie automatického šifrovania bolo prenesené.Odstrániť tieto prihlasovacie údaje? Odstráni sa všetko vrátane vášho kompletného nastavenia, kontaktov, konverzácií, správ a médií. Túto akciu nie je možné vrátiť späť.
+
E-Mail: %1$s\nVeľkosť: %2$s\n ID Účtu: %3$sodoslanéprijatéOtvoriť priečinok denníkaOtvoriť aktuálny súbor protokolu
- Ikonu v systémovej lište nie je možné vypnúť, pretože Delta Chat bol spustený s prepínačom --minimized.
+ Ikonu v systémovej lište nie je možné vypnúť, pretože Delta Chat bol spustený s prepínačom --minimized.Neboli nájdené žiadne návrhy opravy preklepov.Zobraziť oknoPodpora SOCKS5 je momentálne experimentálna. Prosím, používajte na vlastné riziko. Ak zadáte adresu do poľa e-mail, vykoná sa vyhľadávanie DNS, ktoré nebude tunelované cez SOCKS5.
@@ -993,15 +995,9 @@
Delta Chat chce uložiť obrázky do vašej knižnice fotografií.
-
- Oznámenia na pozadí
- Používa pripojenie na pozadí k vášmu serveru a vyžaduje ignorované optimalizácie batérie.Ak chcete zachovať pripojenie k svojmu e-mailovému serveru a prijímať správy na pozadí, v ďalšom kroku ignorujte optimalizáciu batérie. \n\nDelta Chat využíva málo zdrojov a dbá na to, aby sa batéria nevybíjala.
- Spoľahlivé pripojenie na pozadí
- Vyžaduje trvalé upozornenieKlepnutím sem prijmete správy, zatiaľ čo je Delta Chat na pozadí.Službe Delta Chat ste už povolili príjem správ na pozadí.\n\nAk správy stále neprichádzajú na pozadí, skontrolujte tiež svoje systémové nastavenia.
-
diff --git a/res/values-sq/strings.xml b/src/main/res/values-sq/strings.xml
similarity index 70%
rename from res/values-sq/strings.xml
rename to src/main/res/values-sq/strings.xml
index 39c408eb4..01ab8ecaa 100644
--- a/res/values-sq/strings.xml
+++ b/src/main/res/values-sq/strings.xml
@@ -1,12 +1,12 @@
-
+Delta ChatOKAnulojeose
- Spastroje kërkimin
+ Spastroje KërkiminPoJoPërzgjidhni
@@ -22,11 +22,11 @@
HapShkarkojePo shkarkohet…
- Hape bashkëngjitjen
+ Hap BashkëngjitjenHyniRihyniFshije
- Të dhëna
+ HollësiPërditësojeEmojiBashkëngjitje
@@ -45,32 +45,33 @@
ÇarkivojeHeshtoje
- Mesazhe që zhduken
+ Mesazhe Që ZhdukenKëto rregullime zbatohen mbi krejt pjesëmarrësit që përdorin Delta Chat-in. Sidoqoftë, ata mund të kopjojnë, ruajnë dhe përcjellin mesazhe ose të përdorin klientë të tjerë email-i.RuajeFjalosjeMedia
- Profile
- Menuja kryesore
- Nisni fjalosje
- Shfaq mesazhin e plotë…
+ Profil
+ Menuja Kryesore
+ Nisni Fjalosje
+ Shfaq Mesazhin e Plotë…
- Krejt të Lexuar
+ Vëru Shenjë të Tërave Si të Lexuar
+ Vëri Shenjë Si të Lexuar
- I lexuar
+ Të lexuarPo ngarkohet…FshiheAktivizoje
- Ngarko figura të largëta
+ Ngarko Figura të LargëtaFigurat e largëta mund të përdoren për t’ju ndjekur.\n\nRregullimi lejon gjithashtu të ngarkohen shkronja dhe lëndë tjetër. Edhe nëse është e çaktivizuar, prapë mund të shihni figura të trupëzuara ose të ruajtura në fshehtinë.\n\nTë ngarkohen figura të largëta?PërherëNgarko Përherë Figura të Largëta
- Vetëm njëherë
+ Vetëm një herëShfaq Sinjalizim
- Shfaqe fjalëkalimin
- Fshihe fjalëkalimin
+ Shfaqe Fjalëkalimin
+ Fshihe FjalëkaliminJo taniKurrëNjë çast…
@@ -86,10 +87,10 @@
S\’u gjet dot %1$s.U kopjua në të papastër.Kontakte
- Adresë email
+ Adresë EmailAdresë email e keqe.Fjalëkalim
- Fjalëkalimi ekzistues
+ Fjalëkalimi EkzistuesTaniRrezik
@@ -145,7 +146,7 @@
FigurëPërgjigje
- Gif
+ GIFNgjitësShtoje te Koleksion Ngjitësish
@@ -153,27 +154,27 @@
Hap Dosje NgjitësishFiguraAudio
- Mesazh zanor
+ Mesazh ZanorPërcjellë
- Mesazhi u përcoll
+ Mesazhi u PërcollPërcjellë nga %1$sVideoDokumenteKontaktKamerë
- Ndërro kamera
- Kalo në / Dil nga mënyra sa krejt ekrani
+ Ndërro Kamera
+ Kalo në / Dil nga mënyra “Sa krejt ekrani”VendndodhjeVendndodhjeGaleri
- Figura dhe video
+ Figura dhe VideoKartelëKartela
- Aplikacion Privat
+ Aplikacion
- Aplikacione Private
+ AplikacioneE panjohurE gjelbër
@@ -181,8 +182,8 @@
BluPortokalliGurkali
- E purpurt
- I purpurt
+ E purpurt
+ RozëE bardhëZoom
@@ -196,9 +197,11 @@
Ngadalë
- Kontakt i ri
- Fjalosje e re
- Grup i ri
+ Kontakt i Ri
+ Shtoni Kontakt Dorazi
+ Kontaktet e shtuar dorazi mund të përdoren për të dërguar tekst te email klasik dhe për ta s’garantohet fshehtëzim skaj-më-skaj.
+ Fjalosje e Re
+ Grup i RiKlononi FjalosjenListë Transmetimi
@@ -209,85 +212,85 @@
Emër Liste TransmetimeshJu lutemi, jepni një emër për listën e transmetimeveDërgoje
- Shfaq/fshih tastierë emoji
- Përpunoni grup
- Emër dhe figurë grupi
- Shfaqi krejt vendndodhjet
- Arkivoje fjalosjen
- Çarkivoje fjalosjen
- Shtoni bashkëngjitje
- Braktiseni grupin
- Fshije fjalosjen
+ Shfaq/fshih Tastierë Emoji-sh
+ Përpunoni Grup
+ Emër dhe Figurë Grupi
+ Krejt Vendndodhjet
+ Arkivoje Fjalosjen
+ Çarkivoje Fjalosjen
+ Shtoni Bashkëngjitje
+ Braktiseni Grupin
+ Fshije FjalosjenSpastroje Fjalosjen
- Jeni i sigurt se doni të fshihet \"%1$s\"?
- Fshiji mesazhet
- Fshije kontaktin
- Të fshihet kjo vendndodhje?
- Hollësi mesazhi
- Kopjoje në të papastër
- Kopjoje përzgjedhjen
- Kopjoje lidhjen
- Kopjo tekstin
- Kopjo figurën
- Kopjo Email
- Ngjite prej të papastre
+ Jeni i sigurt se doni të fshihet “%1$s”?
+ Fshiji Mesazhet
+ Fshije Kontaktin
+ Të fshihet kjo Vendndodhje?
+ Hollësi Mesazhi
+ Kopjoje në të Papastër
+ Kopjoje Përzgjedhjen
+ Kopjoje Lidhjen
+ Kopjo Tekstin
+ Kopjo Figurën
+ Kopjo Email-in
+ Ngjite prej të PapastreLidhja “%1$d” s’mund të hapet te shfletuesi. Doni, në vend të kësaj, të kopjohet lidhja në të papastër?
- Përcille mesazhin
- Përgjigju mesazhit
- Heshto njoftimet
+ Përcille Mesazhin
+ Përgjigjuni Mesazhit
+ Heshto NjoftimetÇheshtoji
- Eksporto bashkëngjitje
+ Eksporto BashkëngjitjeEksporto Bashkëngjitje
- Krejt mediat
+ Krejt Mediat
- Shfaqe në fjalosje
+ Shfaqe në FjalosjeShfaqe Aplikacionin në FjalosjeNdajeni me të tjerëBllokoje
- Bllokoje kontaktin
- Zhbllokoje kontaktin
+ Bllokoje Kontaktin
+ Zhbllokoje KontaktinPranojeLuajePushoje
- Rrëshqit drejt fundit
- Rrëshqit sipër në krye
- Nidhmë
+ Rrëshqit drejt Fundit
+ Rrëshqit sipër në Krye
+ NdihmëÇ’është Webxdc?Rregulla Privatësie
- Përzgjidhi krejt
+ Përzgjidhi KrejtPërzgjidhni FjalosjePërzgjidhni më tepër
- Përpunoni emrin
+ Përpunoni EmrinRregullimeTë mëtejshme
- Shihini profilin
+ Shihini ProfilinZmadhimZvogëlim
- Ruaje regjistrin
- Më tepër mundësi
- Mëso drejtshkrim
+ Ruaje Regjistrin
+ Më Tepër Mundësi
+ Mëso DrejtshkrimRegjistër Auditimi Fjalosjeje
- Hidhu te mesazh
+ Hidhu te MesazhKopjo JSON
- Zëvendëso skicë
- Jepua vendndodhjen krejt anëtarëve të grupit
+ Zëvendëso Skicë
+ Tregojua vendndodhjen krejt anëtarëve të grupitMesazhe PajisjejeMesazhe të prodhuar lokalishtMesazhet në këtë fjalosje prodhohen lokalisht nga aplikacioni juaj Delta Chat. Krijuesit e tij e përdorin për t’ju bërë të ditur përditësime dhe probleme gjatë përdorimit.
- Mirë se vini te Delta Chat! – Delta Chat duket si aplikacione të tjerë popullorë për shkëmbim mesazhesh, por nuk përmban kontroll të centralizuar, s’ju gjurmon apo shet te ente të mëdha ju, shokët tuaj, kolegët apo familjen tuaj.\n\nTeknikisht, Delta Chat është një aplikacion email me një ndërfaqe moderne. Email me rroba të reja, nëse doni kështu 👻\n\nPërdoreni Delta Chat-in me cilindo prej miliarda vetash: thjesht përdorni adresat e tyre email. Marrësit s’ka nevojë të instalojnë Delta Chat-in, të vizitojnë sajte apo të regjistrohen diku - por sigurisht, nëse duan, mund t’i drejtoni te 👉 https://get.delta.chat
- Përpunoni kontaktin
+ Lidhuni!\n\n🙌 Prekni “Kod QR” te skena kryesore në të dyja pajisjet. Zgjidhni “Skano Kod QR” në një pajisje dhe drejtojani tjetrës\n\n🌍 Nëse s’gjenden në të njëjtën dhomë, skanojeni përmes një thirrjeje video, ose ndani një lidhje ftese që nga “Skanoni kod QR”\n\nMandej: Shijoni punimin e shkëmbyesit të mesazheve përmes rrjetit më të madh të decentralizuar që ka ekzistuar ndonjëherë: email-it. Dhe, në kontrast me aplikacione të tjera popullore, pa kontroll të centralizuar, apo gjurmim, apo shitje të dhënash tuajat, të shokëve, kolegëve apo familjes te ente të mëdha.
+ Përpunoni Kontaktin
- Fiksojeni bisedën
+ Fiksojeni Bisedën
- Hiqeni bisedën nga e fiksuar
+ Hiqeni Bisedën Nga e FiksuarFiksojeÇfiksojeS’u gjet mesazhi origjinal
- Përgjigjuni privatisht
+ Përgjigjuni PrivatishtKod BurimShtoje te Skena e Kreut
@@ -299,38 +302,38 @@
Heshtoji për 7 ditëHeshtoje përgjithmonë
- për 5 minuta
- për 30 minuta
- për 1 orë
- për 2 orë
- për 6 orë
+ Për 5 minuta
+ Për 30 minuta
+ Për 1 orë
+ Për 2 orë
+ Për 6 orëTë dërgohet kartela vijuese te %s?Të dërgohen %d kartelat vijuese te %s?
- Kartela u ruajt te \"%1$s\".
+ Kartela u ruajt te “%1$s”.
- Fjalosje me video
+ Fjalosje me VideoTë ftohet %1$s te një thirrje me video?Kjo lyp në të dy anët një aplikacion të përputhshëm ose një shfletues të përputhshëm%1$s ftoi te një fjalosje me video.Ftuat te një fjalosje me video.
- Prekeni që të hyni
- Prekeni që të hapet
- Instancë fjalosjeje me video
- Instanca juaj e fjalosjes me video
- Shembuj: https://meet.jit.si/$ROOM, ose basicwebrtc:https://shërbyesi-juaj
- Nëse është aktivizuar fjalosje me video, mund të nisni një fjalosje me video prej secilës fjalosje. Fjalosjet me video kanë të domosdoshëm në të dy skajet një aplikacion të përputhshëm ose një shfletues të përputhshëm.
- Të përdoret \"%1$s\" për të ftuar të tjerë në fjalosje me video?\n\nPasi të ujdiset kjo, mund të filloni një fjalosje me video që prej një fjalosjeje tek-për-tek. Kështu do të zëvendësohet rregullimi i mëparshëm për fjalosje video, në pastë.
+ Prekeni që të Hyni
+ Prekeni që të Hapet
+ Instancë Fjalosjeje me Video
+ Instanca juaj e Fjalosjes me Video
+ Shembull: https://shërbyesi-juaj.org/$ROOM
+ Nëse është aktivizuar, mund të nisni një fjalosje me video prej secilës fjalosje. Kjo lyp në të dy skajet një aplikacion të përputhshëm, ose një shfletues të përputhshëm.
+ Të përdoret “%1$s” për të ftuar të tjerë në fjalosje me video?\n\nPasi të ujdiset kjo, mund të filloni një fjalosje me video që prej një fjalosjeje tek-për-tek. Kështu do të zëvendësohet rregullimi i mëparshëm për fjalosje video, në pastë.Ftesë për fjalosje me videoJeni ftuar në një fjalosje video, klikoni mbi %1$s që të hyni në të.Jeni i sigurt se doni ta braktisni këtë grup?
- Të fshihet %d fjalosje? S’do të duket më te lista e bisedave, mesazhet e saj do të mbeten te shërbyesi.
- Të fshihen %d fjalosje? S\’do të duken më te lista e fjalosjeve, mesazhet e tyre do të mbeten te shërbyesi.
+ Të fshihet %d fjalosje? S’do të duket më te lista e bisedave; mesazhet e saj do të mbeten te shërbyesi.
+ Të fshihen %d fjalosje? S\’do të duken më te lista e fjalosjeve; mesazhet e tyre do të mbeten te shërbyesi.Jeni i sigurt se doni të fshihet ky mesazh?
@@ -374,7 +377,7 @@
U çarkivua %d fjalosjeU çarkivuan %d fjalosje
- Fjalosje të arkivuara
+ Fjalosje të ArkivuaraJu lutemi, jepni një mesazh.Kamerë jo gati.S\’arrihet të incizohet audio.
@@ -383,22 +386,23 @@
%d mesazhe të rinj
- Dërgoni një mesazh. S’ka problem nëse %1$s nuk përdor Delta Chat.
+ Dërgoni një mesazh për %1$s.Në një listë transmetimesh, marrësit do të marrin mesazhe në një fjalosje të llojit “vetëm lexim” me ju.
- Hartoni mesazhin e parë, duke u lejuar të tjerëve të përgjigjen brenda këtij grupi.\n\n• S\’ka problem nëse Delta Chat-in s\’e përdorin të tërë anëtarë.\n\n• Dërgimi i mesazhit të parë mund të zgjasë ca.
+ Të tjerët do ta shohin këtë grup pasi të keni dërguar një mesazh të parë.Rrëshqiteni që të anulohetPrekeni dhe mbajeni të prekur që të incizoni një mesazh zanor; lëshojeni, që të dërgohet
- Kuti mesazhesh e zbrazët.\nShtypni \"+\" që të nisni një fjalosje të re.
+ Kuti mesazhesh e zbrazët.\nShtypni “+” që të nisni një fjalosje të re.
+
Mund të bisedoni me përdorues të tjerë të Delta Chat-it dhe me çfarëdo adrese email.
- Krejt fjalosjet janë të arkivuara.\nShtypni \"+\" që të nisni një bisedë të re.
+ Krejt fjalosjet janë të arkivuara.\nShtypni “+” që të nisni një bisedë të re.Ndajeni me MesazhArkivuar
- Kërkoje
+ KërkesëS\’ka mesazhe.
- Mesazhe që i kam dërguar vetes
+ Mesazhe VetesNëse arkivoni fjalosje, ato do të shfaqen këtu.
- Mesazhe të ruajtur
+ Mesazhe të Ruajtur• Përcillini mesazhet këtu për përdorim të lehtë\n\n• Mbani shënime ose kujtesa zanore\n\n• Bashkëngjitni media për t’i ruajturTë ruajtur
@@ -406,27 +410,25 @@
Riprovo të dërgosh mesazhinS’mund të shkruani, ngaqë s’jeni në këtë grup. Për t’u bërë pjesë, kërkojani një anëtari tjetër.
- Kjo fjalosje përmban mesazhe të prodhuar lokalisht. Ndaj s’mund të shkruani ndonjë mesazh.Dërgimi i mesazheve në lista postimesh nuk mbulohet endeS’mund të shfaqet ky lloj kartelash: %sS’u arrit të ngarkohet bashkëngjitje
- Kyçe incizimin
+ Kyçe Incizimin
- Listë postimesh
+ Listë PostimeshNdryshime në emër dhe figurë liste postimesh aplikohen vetëm në këtë pajisje.
- Fillo…
+ Niseni…Ju lutemi, së pari pranoni kërkesën për fjalosje.Dërgoni “%1$s” për …Dërgoni Mesazh për…
-
Shfaq vendndodhje në rrjedhë kohoreShfaq gjurmë
@@ -435,7 +437,7 @@
Mesazhet e sistemit në këtë fjalosje do të shfaqen këtuRegjistër Auditimi Fjalosjeje %1$s
- Kjo pamje ju shfaq vetëm mesazhe sistemi dhe informacionesh. E dobishme për gjetjen e veprimeve të fundit pa u dashur të parakalohet nëpër mjaft mesazhe normale.
+ Shfaq vetëm mesazhe sistemi dhe informacionesh; e dobishme për gjetjen e veprimeve të fundit pa u dashur të parakalohet nëpër mjaft mesazhe.
@@ -452,20 +454,20 @@
Kërko në FjalosjeKërko në KartelaKërkoni për fjalosje, kontakte dhe mesazhe.
- S\’u gjetën përfundime për \"%s\"
+ S\’u gjetën përfundime për “%s”
- Emër grupi
- Avatar grupi
- Hiqe figurën e grupit
- Ndryshoni figurën e grupit
- Krijoni grup
+ Emër Grupi
+ Avatar Grupi
+ Hiqe Figurën e Grupit
+ Ndryshoni Figurë Grupi
+ Krijoni GrupJu lutemi, jepni një emër për grupin.
- Shtoni anëtarë
- Duhet të jeni anëtar i grupit që të kryeni këtë veprim.
+ Shtoni Anëtarë
+ Që të kryeni këtë veprim, duhet të jeni anëtar i grupit.Fshehtëzim
- Fjalosje të përbashkëta
+ Fjalosje të PërbashkëtaFjalosje të AfërtaKontaktGrup
@@ -477,19 +479,19 @@
Dokumentet, muzika dhe kartela të tjera të dhëna në këtë fjalosje do të shfaqen këtu.Figurat e dhëna në këtë fjalosje do të shfaqen këtu.Videot e dhëna në këtë fjalosje do të shfaqen këtu.
- Kartelat Audio dhe Mesazhet Zanore të dhëna në këtë fjalosje do të shfaqen këtu.
+ Kartelat audio dhe mesazhet zanore të dhëna në këtë fjalosje do të shfaqen këtu.Këtu do të shfaqen aplikacione private të përbashkët në këtë fjalosje Këtu do të duke media e dhënë në çfarëdo fjalosjeje.
- Paraparje media
+ Paraparje MediashMozaik Përpjesëtimor Mozaik Katror
- Dërgo mesazh
+ Dërgo Mesazh%1$s ndryshoi adresën e vet nga %2$s në %3$s
- Ndryshuat adresën tuaj nga %1$s në %2$s.\n\nNëse dërgoni tani një mesazh te një grup i verifikuar, kontaktet atje do të zëvendësojnë automatikisht adresën tuaj të vjetër me të renë.\n\nËshtë tejet e këshillueshme të ujdisni shërbimin tuaj të vjetër të email-it të përcjellë krejt email-et te adresa juaj e re email. Përndryshme, mund të humbni mesazhe të kontakteve që s’e kanë marrë ende adresën tuaj të re.
+ Ndryshuat adresën tuaj nga %1$s në %2$s.\n\nNëse dërgoni tani një mesazh te një grup i verifikuar, kontaktet atje do të zëvendësojnë automatikisht adresën tuaj të vjetër me të renë.\n\nËshtë tejet e këshillueshme të ujdisni shërbimin tuaj të vjetër të email-it të përcjellë krejt email-et te adresa juaj e re email. Përndryshe, mund të humbni mesazhe të kontakteve që s’e kanë marrë ende adresën tuaj të re.
@@ -498,6 +500,7 @@
Sigurohuni se të dy pajisjet janë në të njëjtin rrjet Wi-Fi ose klasikKjo krijon një kod QR që pajisja e dytë mund ta skanojë për të kopjuar llogarinë.Instaloni Delta Chat-in në pajisjen tuaj tjetër (https://get.delta.chat)
+
Nisni Delta Chat-in, prekni mbi “Shtoje si Pajisje të Dytë” dhe skanoni kodin e treguar këtuSkanojeni, që të ujdisni pajise të dytë për %1$s
@@ -544,25 +547,55 @@
- Fjalosje përmes Email-i
+
+ Le T’ia Fillojmë!
+
+ Kam Krendenciale Tashmë
+
+ Hyrje Klasike Me Email
+
+ Profili Juaj
+
+ Lexoni Rregullat e Privatësisë
+
+ Rregulla Privatësie për %1$s
+
+ Rreth profilesh në %1$s
+
+ Pranojeni & Krijoni Profil
+
+ Përdor Shërbyes Tjetër
+ Paraqit Shërbyes Chatmail
+
+ Krijoni një profil, që të merrni pjesë te grupi “%1$s”.
+
+ Krijoni një profil, që të bisedoni me %1$s.
+
+ Doni të krijohet një profil i ri dhe të fillohet të bisedohet me %1$s?
+
+ Doni të krijohet një profil i ri dhe të hyhet te grupi “%1$s” i fjalosjeve?
+
+ Fjalosje e Decentralizuar, e ParrezikSkanoni Kod Ftese
- Hyrje
- Hyrje te shërbyesi juaj
- Hyrje me një llogari email ekzistuese.
+ Hyni
+
+ Hyni te Llogaria juaj Email
+
+ Hyni me një llogari email ekzistuese.Për shërbime të njohura email-i, rregullimet shtesë caktohen automatikisht. Ndonjëherë shërbyesi IMAP lyp të aktivizohet te pjesa e dukshme web. Për ndihmë këshillohuni me shërbimin tuaj email ose shokë tuajt.S\’ka shërbyes Delta Chat, të dhënat tuaja rrinë në pajisjen tuaj!Të marrë
- Emër hyrjeje në IMAP
+ Emër Hyrjeje në IMAPShërbyes IMAPPortë IMAPSiguri IMAPTë dërguar
- Emër hyrjeje SMTP
+ Emër Hyrjeje SMTPFjalëkalim SMTPShërbyes SMTPPortë SMTPSiguri SMTP
- Metodë autorizimi
+ Metodë AutorizimiSOCKS5Përdor SOCKS5
@@ -571,25 +604,25 @@
Përdorues SOCKS5Fjalëkalim SOCKS5Të vazhdohet me rregullimin e thjeshtuar?
- Adresa email e dhënë mbulon një ujdisje të thjeshtuar (OAuth2).\n\nNë hapin pasues, ju lutemi, lejojeni Delta Chat-in të veprojë si aplikacioni juaj për Fjalosje Përmes Email-i.\n\nS\’ka shërbyes Delta Chat, të dhënat tuaja rrinë në pajisjen tuaj!
- Kontrolle dëshmish
+ Adresa email e dhënë mbulon një ujdisje të thjeshtuar (OAuth 2.0).\n\nNë hapin pasues, ju lutemi, lejojeni Delta Chat-in të veprojë si aplikacioni juaj për Fjalosje Përmes Email-i.\n\nS\’ka shërbyes Delta Chat, të dhënat tuaja rrinë në pajisjen tuaj!
+ Kontrolle DëshmishJu lutemi, jepni një adresë email të vlefshmeJu lutemi, jepni një shërbyes / adresë IP të vlefshmeJu lutemi, jepni një portë të vlefshme (1–65535)Ju lutemi, jepni një adresë email dhe fjalëkalim të vlefshëm
- Importo kopjeruajtje
- U gjet kopjeruajtje te \"%1$s\".\n\nDoni të importohen dhe përdoren krejt të dhënat dhe rregullimet prej atij?
- S\’u gjetën kopjeruajtje.\n\nKopjojeni kopjeruajtjen te \"%1$s\" dhe riprovoni. Ndryshe, shtypni \"Filloni të shkëmbeni mesazhe\", që të vazhdoni me procesin normal të rregullimit.
+ Rikthe prej Kopjeruajtje
+ U gjet kopjeruajtje te “%1$s”.\n\nDoni të importohen dhe përdoren krejt të dhënat dhe rregullimet prej atij?
+ S\’u gjetën kopjeruajtje.\n\nKopjojeni kopjeruajtjen te “%1$s” dhe riprovoni. Ndryshe, shtypni “Filloni të shkëmbeni mesazhe”, që të vazhdoni me procesin normal të rregullimit.
- S\’bëhet dot hyrja si %1$s. Ju lutemi, shihni nëse adresa email dhe fjalëkalimi janë të saktë.
+ S\’bëhet dot hyrja si “%1$s”. Ju lutemi, shihni nëse adresa email dhe fjalëkalimi janë të saktë.Prano dëshmi të pavlefshme
- Rregullime të përdorura
- Ndërroni llogari
- Shtoni llogari
- Fshije llogarinë
+ Rregullime të përdorura:
+ Ndërroni Llogari
+ Shtoni Llogari
+ Fshije LlogarinëJeni i sigurt se doni të fshihen të dhënat e llogarisë tuaj?
- Krejt të dhënat e llogarisë për \"%s\" në këtë pajisje do të fshihen, përfshi ato të ujdisjes tuaj për fshehtëzim skaj-më-skaj, kontakte, fjalosje, mesazhe dhe media. Ky veprim s’mund të zhbëhet.
+ Krejt të dhënat e llogarisë për “%s” në këtë pajisje do të fshihen, përfshi ato të ujdisjes tuaj për fshehtëzim skaj-më-skaj, kontakte, fjalosje, mesazhe dhe media. Ky veprim s’mund të zhbëhet.Llogari e paformësuarQë ta formësoni, hapeni llogarinë.Provo të lidhesh tani
@@ -599,37 +632,36 @@
- Përcilljani …
- Të dërgohen %1$d kartela te fjalosja e përzgjedhur?\n\nKartelat dërgohen të pandryshuara, në madhësinë e tyre origjinale, p.sh., figurat dhe videot nuk rikodohen.
- Doni të dërgohet %1$d kartelë(a) te 2 %2$d fjalosje?\n\nKartelat dërgohen të pandryshuara, në madhësinë e tyre origjinale, p.sh., figura dhe video nuk rikodohen.
- Të dërgohet ky tekst te %1$d fjalosje?\n\n\"%2$s\"
+ Përcilljani…
+ Të dërgohen %1$d kartela te fjalosja e përzgjedhur?\n\nKartelat dërgohen të pandryshuara, në madhësinë e tyre origjinale (p.sh., figurat dhe videot nuk rikodohen).
+ Doni të dërgohet %1$d kartelë(a) te %2$d fjalosje?\n\nKartelat dërgohen të pandryshuara, në madhësinë e tyre origjinale (p.sh., figura dhe video nuk rikodohen).
+ Të dërgohet ky tekst te %1$d fjalosje?\n\n“%2$s”Ndarja me të tjerë dështoi ngaqë mungojnë leje.Po përdoret vetjak: %sPo përdoret parazgjedhje: %s
- Të dhëna tuajat të profilit
- Foto profili
- Kontakte të bllokuar
+ Hollësi Profili Tuajt
+ Foto Profili
+ Kontakte të BllokuarNëse bllokoni kontakte, do të shfaqen këtu.
- Fjalëkalim dhe llogari
- Fotoja dhe emri juaj i profilit do të shfaqen tok me mesazhet, kur komunikoni me përdorues të tjerë. Informacioni i dërguar tashmë s\’mund të fshihet apo të hiqet.
+
+ Fjalëkalim dhe Llogari
+ Fotoja juaj e profilit, emri dhe nënshkrimi do të dërgohen tok me mesazhet tuaj, kur komunikoni me përdorues të tjerë.Emri juaj
- Tekst nënshkrimi
-
- Dërguar me Delta Chat Messenger: https://delta.chat
- Tasti Enter dërgon
+ Tekst Nënshkrimi
+ Tasti Enter DërgonShtypja e tastit Enter do të dërgojë mesazhe tekst
- Cilësi mediash në dalje
+ Cilësi Mediash Në DaljeE baraspeshuarCilësia më e ulët, madhësi e vogëlDridhu
- Siguri ekrani
+ Siguri EkraniKërko të bllokohen foto ekrani në lista të freskëta dhe brenda aplikacionit
- QË të hyjnë në fuqi rregullimet mbi sigurinë e ekranit, ju lutemi, rinisni aplikacionin.
+ Që të hyjnë në fuqi rregullimet mbi sigurinë e ekranit, ju lutemi, rinisni aplikacionin.NjoftimeShfaqiPërparësi
@@ -640,7 +672,7 @@
TingullHeshtaziPrivatësi
- Fjalosje dhe media
+ Fjalosje dhe MediaParazgjedhje sistemiE çelët
@@ -648,62 +680,66 @@
DukjeTemëGjuhë
- Mos ruaj gjë
+ Tastierë IncognitoKërkoji tastierës të çaktivizojë nxënie të personalizuar
- Lexoni dëftesa
- Nëse leximi i dëftesave është i çaktivizuar, s\’do të jeni në gjendje të shihni mesazh \"Lexoni dëftesa\" prej të tjerësh
- Administroni kyçe
- Përdor emoji sistemi
+ Dëftesa Leximi
+ Nëse dëftesat e leximit janë të çaktivizuara, s\’do të jeni në gjendje të shihni dëftesa leximi prej të tjerësh.
+ Shërbyes
+ Fshehtëzim
+ Administroni Kyçe
+ Përdor Emoji SistemiÇaktivizo mbulimin e brendshëm Delta Chat për emoji-tPërdor Kamerën e Vetë AplikacionitKamera e vetë aplikacionit, zakonisht, ka më pak veçori se kamera e sistemit
- Hyrje aplikacioni
+ Të Lexojë Libër Adresash Sistemi
+ Ofro krijim fjalosjesh me kontakte prej libri adresash. Disa shërbime lypin ujdisje fshehtëzimi skaj-më-skaj së pari.Fjalosje
- Tinguj brenda fjalosjeje
- Madhësi shkronjash mesazhi
- Shihni regjistrin
- Regjistri u ruajt te dosja Shkarkime
+ Tinguj Brenda Fjalosjeje
+ Madhësi Shkronjash Mesazhi
+ Shihni Regjistrin
+ Regjistri u ruajt te dosja “Shkarkime”Dështoi ruajtja e regjistritRegjistërTë tjeraKopjeruajtje
- Kopjeruaji fjalosjet në depozitim të jashtëm
- Një kopjeruajtje ju lejon të rregulloni një instalim të ri në këtë apo në një tjetër pajisje.\n\nKopjeruajtja do të përmbajë krejt mesazhet, kontaktet dhe fjalosjet, si dhe rregullimin tuaj për Autocrypt skaj-më-skaj. Mbajeni kartelën e kopjeruajtjes diku të parrezikuar, përndryshe fshijeni as më shpejt që të jetë e mundur.
-
+ Kopjeruaji Fjalosjet në Depozitim të Jashtëm
+ Një kopjeruajtje ju lejon të rregulloni një instalim të ri në këtë apo në një tjetër pajisje.\n\nKopjeruajtja do të përmbajë krejt mesazhet, kontaktet dhe fjalosjet, si dhe rregullimin tuaj për Autocrypt skaj-më-skaj. Mbajeni kartelën e kopjeruajtjes diku të parrezik, përndryshe fshijeni as më shpejt që të jetë e mundur.
+
Eksporto %1$s
-
+
Eksporto krejt llogaritë e %1$d
- Fillo kopjeruajtjen
- Kopjeruajtje e shkruar me sukses te %1$s
- Administroni kyçe
- Eksportoni kyçe të fshehtë
- Të eksportohen kyçet e fshehtë te \"%1$s\"?
- Importoni kyçe të fshehtë
- Të importohen kyçe të fshehtë prej \"%1$s\"?\n\n• Kyçet e fshehtë ekzistues s\’do të fshihen\n\n• Kyçi i fundit i importuar do të përdoret si kyçi i ri parazgjedhje, hiq rastin ku përmban te emri i kartelës fjalën \"legacy\"
- Kyçe të fshehtë shkruar me sukses te \"%1$s\".
- U importuan kyçe të fshehtë nga \"%1$s\".
+ Nis Kopjeruajtjen
+ Kopjeruajtje e shkruar me sukses te “%1$s”
+ Administroni Kyçe
+ Eksportoni Kyçe të Fshehtë
+ Të eksportohen kyçet e fshehtë te “%1$s”?
+ Importoni Kyçe të Fshehtë
+ Të importohen kyçe të fshehtë prej “%1$s”?\n\n• Kyçet e fshehtë ekzistues s\’do të fshihen\n\n• Kyçi i fundit i importuar do të përdoret si kyçi i ri parazgjedhje, hiq rastin kur përmban te emri i kartelës fjalën “legacy”
+ Kyçe të fshehtë shkruar me sukses te “%1$s”.
+ U importuan kyçe të fshehtë nga “%1$s”.Sfond
- Përdor figurën parazgjedhje
- Përzgjidhni nga galeri
- Trajtim dosjeje IMAP
- Nëse e çaktivizoni këtë mundësi, garantoni që shërbyesi juaj dhe klientët tuaj të tjerët të jenë formësuar për këtë.\n\nPërndryshe gjërat mund të mos punojnë fare.
- Vëzhgo dosje Të dërguarish
- Dërgojini kopje vetes
+ Përdor Figurën Parazgjedhje
+ Përzgjidhni Nga Galeri
+ Trajtim Dosjesh IMAP
+ Nëse e ndryshoni këtë mundësi, garantoni që shërbyesi juaj dhe klientët tuaj të tjerët të jenë formësuar për këtë.\n\nPërndryshe gjërat mund të mos punojnë fare.
+ Vëzhgo Dosje Të dërguarish
+ Dërgojini Kopje Vetes
+
E domosdoshme kur kjo llogari përdoret në një numër pajisjesh.
- Lëvizje të Vetvetishme te dosja DeltaChat
+ Kaloji vetvetiu te Dosja DeltaChatBisedat zhvendosen, që të shmanget rrëmuja te dosja Të marrëSill Vetëm nga Dosje DeltaChatShpërfill dosje të tjera. Lyp që shërbyesi juaj të kalojë mesazhe fjalosjeje te dosje DeltaChat.
- Shfaq email-e klasikë
+ Shfaq Email-e KlasikëJo, vetëm fjalosjePër kontakte të pranuarKrejt
- Veçori eksperimentale
+ Veçori EksperimentaleMënyra ZhvilluesAktivizon mundësi diagnostikimi dhe mund ta bëjë aplikacionin më pak të qëndrueshëm. Vetëm për zhvillues.
- Sfond parazgjedhje
+ Figurë parazgjedhjeNgjyrë parazgjedhjeFigurë vetjakeNgjyrë vetjake
@@ -718,20 +754,22 @@
Mesazh %1$sShkarko maksimumin e mundshëm deri më %1$s
- Përzgjidhni figurë profili
+ Përzgjidhni Figurë ProfiliPërzgjidhni figurën tuaj të re të profilit
- Fshini figurën e profilit
- Shfaq ikonë paneli
- Përpunoni profil
+ Fshini Figurën e Profilit
+ Shfaq Ikonë Paneli
+ Përpunoni ProfilÇaktivizo IMAP IDLEMos e përdor zgjerimin IMAP IDLE, edhe kur shërbyesi e mbulon. Aktivizimi i kësaj mundësie do të vonojë marrjen e mesazheve, aktivizojeni vetëm për testime.
+ Dërgojuni zhvilluesve të Delta Chat-it statistika
+
- Përfundime kërkimi
+ Përfundime KërkimiS’u gjetën emoji
- Përdorur së fundi
+ Përdorur Së FundiNjerëz & Trupi
- Kafshë & Naturë
+ Kafshë & NatyrëUshqim & PijeVeprimtariUdhëtime & Vende
@@ -741,15 +779,21 @@
Reagime
+
+ Reagoni
+
+ Reaguat me %1$s ndaj “%2$s”
+
+ %1$s reagoi me %2$s ndaj “%3$s”
- Fshiji mesazhet e vjetër
- Fshini mesazhe prej pajisjes
- Fshini mesazhe prej shërbyesi
+ Fshiji Mesazhet e Vjetër
+ Fshiji Mesazhet prej Pajisjes
+ Fshiji Mesazhe prej Shërbyesi
- Doni të fshihen %1$d mesazhe tani dhe krejt mesazhet e prurë rishtazi \"%2$s\" në të ardhmen?\n\n• Kjo përfshin krejt mediat\n\n• Mesazhi do të fshihet, qoftë kur e kanë parë, qoftë kur s’e kanë parë\n\n• \"Mesazhe të ruajtur\" do të anashkalohen nga fshirja vendore
+ Doni të fshihen %1$d mesazhe tani dhe krejt mesazhet e prurë rishtazi “%2$s” në të ardhmen?\n\n• Kjo përfshin krejt mediat\n\n• Mesazhi do të fshihet, qoftë kur është parë, qoftë kur s’është parë\n\n• “Mesazhe të ruajtur” do të anashkalohen nga fshirja vendore
- Doni të fshihen tani %1$d mesazhe dhe krejt mesazhet e prurë rishtas \"%2$s\" më vonë në të ardhmen?\n\n⚠️ Kjo përfshin email-et, media dhe \"Mesazhe të ruajtur\" në krejt dosjet e shërbyesit\n\n⚠️ Mos e përdorni këtë funksion, nëse doni të mbani të dhënat në shërbyes\n\n⚠️ Mos e përdorni këtë funksion, nëse po përdorni klientë të tjerët përkrah Delta Chat-it
+ Doni të fshihen tani %1$d mesazhe dhe krejt mesazhet e prurë rishtas “%2$s” më vonë në të ardhmen?\n\n⚠️ Kjo përfshin email-et, media dhe “Mesazhe të ruajtur” në krejt dosjet e shërbyesit\n\n⚠️ Mos e përdorni këtë funksion, nëse doni të mbani të dhënat në shërbyes\n\n⚠️ Mos e përdorni këtë funksion, nëse po përdorni klientë të tjerët përkrah Delta Chat-itKjo përfshin email-et, media dhe “Mesazhe të ruajtur” në krejt dosjet e shërbyesit. Mos e përdorni këtë funksion, nëse doni të mbani të dhënat te shërbyesi ose nëse po përdorni klientë të tjerët përkrah Delta Chat-itE kuptoj, fshiji krejt këto mesazhe
@@ -767,26 +811,28 @@
Pas 1 viti
+
Autocrypt
+
Autocrypt-i është një protokoll i ri dhe i hapur për fshehtëzim automatik email-esh skaj-më-skaj.\n\nRregullimi skaj-më-skaj për ju krijohet vetvetiu kur duhet dhe mund ta shpërngulni nga një pajisje në tjetër përmes Mesazhesh Rregullimi Autocrypt-i.Dërgo Mesazh Rregullimi Autocrypt-i
- Një \"Mesazh Rregullimi Autocrypt-i\" ua jep, në mënyrë të parrezikuar, rregullimin tuaj skaj-më-skaj pajisjeve të tjera që përdorin Autocrypt-in.\n\nRregullimi do të fshehtëzohet përmes një kodi rregullimi i cili shfaqet këtu dhe duhet dhënë te pajisja tjetër.
+ Një “Mesazh Rregullimi Autocrypt-i“ ua jep, në mënyrë të parrezik, rregullimin tuaj për fshehtëzimin skaj-më-skaj pajisjeve të tjera që përdorin Autocrypt-in.\n\nRregullimi do të fshehtëzohet përmes një kodi rregullimi i cili shfaqet këtu dhe duhet dhënë te pajisja tjetër.Dërgo Mesazh Rregullimi Autocrypt-iRregullimi juaj u dërgua te ju. Kaloni te pajisja tjetër dhe hapni mesazhin e rregullimit. Do t\’ju kërkohet një kod rregullimi. Shtypni atje shifrat vijuese.\n\nPasi të keni mbaruar, pajisja juaj tjetër do të jetë gati të përdorë Autocrypt-in.
- Parapëlqe fshehtëzim skaj-më-skaj
+ Parapëlqe Fshehtëzim Skaj-Më-SkajMesazh Rregullimi Autocrypt-iKy është Mesazhi i Rregullimit të Autocrypt-it i përdorur për të shpërngulur rregullimin tuaj skaj-më-skaj në klientë të tjerë.\n\nQë ta shfshehtëzoni rregullimin tuaj, hapeni mesazhin te një klient që mund të përdorë Autocrypt-in dhe jepni kodin e rregullimit të treguar te pajisja që e prodhoi.Ky është mesazhi i Rregullimit të Autocrypt-it i përdorur për të shpërngulur mes klientësh rregullimin tuaj skaj-më-skaj.\n\nPër ta fshehtëzuar dhe përdorur rregullimin tuaj, prekni ose klikoni mbi këtë mesazh.Mesazh Rregullimi Autocrypt-iJu lutemi, jepni kodin e rregullimit që është shfaqur te pajisja tjetër.
- Rregullimi skaj-më-skaj u shpërngul. Kjo pajisje tani është gati të përdorë Autocrypt-in me të njëjtin rregullim si pajisja tjetër.
+ Rregullimi për fshehtëzim skaj-më-skaj u shpërngul. Kjo pajisje tani është gati të përdorë Autocrypt-in me të njëjtin rregullim si pajisja tjetër.RiprovoKod i gabuar rregullimi. Ju lutemi, riprovoni.\n\nNëse s\’e mbani mend kodin e rregullimit, thjesht dërgoni një tjetër Mesazh Rregullimi Autocrypt-i prej pajisjes tjetër.
- Dëftesë leximi
- Kjo është dëftesë leximi për mesazhin \"%1$s\".\n\nDo të thotë që mesazhi u shfaq te pajisja e marrësit, jo domosdo që lënda u lexua.
+ Mesazhi u hap
+ Mesazhi “%1$s” që dërguat, u shfaq në ekranin e marrësit.\n\nKjo s’është garanci se lënda u lexua.Ky mesazh s’mund të shfshehtëzohet.\n\n• Mundet t’ju ndihë thjesht t’i përgjigjeni këtij mesazhi dhe t’i kërkoni dërguesit ta ridërgojë mesazhin.\n\n• Nëse sapo riinstaluat Delta Chat-in, atëherë më e mira është të riujdisni Delta Chat-in tani dhe të zgjidhni “Shtoje si pajisje të dytë”, ose të importoni një kopjeruajtje.Dërgues i panjohur për këtë fjalosje. Për më tepër hollësi, shihni \'info\'.Mesazh nga %1$s
@@ -855,10 +901,12 @@
Kohëmatësi i zhdukjes së mesazheve u vu në %1$s javë nga %2$s.%1$s dërgoi një mesazh nga një pajisje tjetër.
- Nga sot e tutje për mesazhet garantohet fshehtëzimi skaj-më-skaj. Prekeni që të mësoni më tepër.
+ Nga sot e tutje për mesazhet garantohet fshehtëzimi skaj-më-skaj. Prekeni, që të mësoni më tepër.Tanimë për mesazhet në këtë fjalosje garantohet fshehtëzimi skaj-më-skaj.\n\nFshehtëzimi skaj-më-skaj i mban private mesazhet mes jush dhe partnerëve tuaj të fjalosjes. Ato s’mund t’i lexojë as furnizuesi i shërbimit tuaj email.
- %1$s dërgoi një mesazh nga një pajisje tjetër. Prekeni që të mësoni më tepër.
- Fshehtëzimi skaj-më-skaj s’mund të garantohet më, ngaqë, sipas gjasash, %1$s riinstaloi Delta Chat-in, ose dërgoi një mesazh nga një tjetër pajisje.\n\nMund t’i takoni dhe të skanoni KODIN e tyre QR sërish, që të rivendoset fshehtëzim skaj-më-skaj i garantuar.
+ %1$s dërgoi një mesazh nga një pajisje tjetër. Prekeni, që të mësoni më tepër.
+ Fshehtëzimi skaj-më-skaj s’mund të garantohet më, ngaqë, sipas gjasash, %1$s riinstaloi Delta Chat-in, ose dërgoi një mesazh nga një tjetër pajisje.\n\nMund ta takoni dhe të skanoni sërish KODIN e tij QR, që të rivendoset fshehtëzim skaj-më-skaj i garantuar.
+ ⚠️ %1$s lyp fshehtëzim, i cili s’është ujdisur ende për këtë fjalosje. Që të mësoni më tepër, prekeni.
+ Për të vendosur fshehtëzim skaj-më-skaj, mund të takoheni personalisht me kontaktet dhe të skanoni kodin e tyre QR, për t’i pranuar.Mësoni Më TepërFshitë fjalosjen “Mesazhe të ruajtur”.\n\nℹ️ Që të përdorni sërish veçorinë “Mesazhe të ruajtur”, krijoni një fjalosje të re me veten tuaj.
@@ -869,60 +917,65 @@
⚠️ Versioni juaj i Delta Chat-it duket të jetë i vjetruar.\n\nKjo mund të shkaktojë probleme, ngaqë partnerët tuaj të fjalosjes përdorin versione të rinj - dhe ju mungojnë veçoritë më të reja 😳\nPër përditësime, ju lutemi, shihni te https://get.delta.chat ose te shitorja juaj e aplikacioneve.
- Që të vazhdohet, ju lutemi, jepni të fshehtën tuaj të përcaktuar nga sistemi.
+ Që të vazhdohet, shkyçeniKod QR
- Ngarkoje kodin QR si figurë
- Skanoni kod QR
- Vendoseni kamerën tuaj përmbi kodin QR
+ Ngarkoje Kodin QR si Figurë
+ Skanoni Kod QR
+ Mbajeni kamerën tuaj përmbi kodin QR
+ Kalojeni kodin QR te kameraKodi QR s’u shkodua dot
- Doni të bëheni pjesë e grupit \"%1$s\"?
+ Doni të bëheni pjesë e grupit “%1$s”?Shenjat e gishtave të skanuar nuk përputhen me shenjat e gishtave parë së fundi për %1$s.
- Ky kod QR përmban shenja gishtash, por jo adresë email.\n\nPër një verifikim out-of-band, ju lutemi, së pari vendosni me marrësin një lidhje të fshehtëzuar.
+ Ky kod QR përmban shenja gishtash, por jo adresë email.\n\nPër një verifikim “out-of-band”, ju lutemi, së pari vendosni me marrësin një lidhje të fshehtëzuar.Tekst kodi QR të skanuar:\n\n%1$sURL kodi QR të skanuar:\n\n%1$sShenja gishtashKy kod QR mund të skanohet nga të tjerë për t’u lidhur me ju.\n\nKodin QR mund ta çaktivizoni këtu dhe ta riaktivizoni duke e riskanuar.
- Ky kod QR mund të skanohet nga të tjerë për t’u bërë pjesë e grupit \"%1$s\".\n\nKodin QR mund ta çaktivizoni këtu dhe ta riaktivizoni duke e riskanuar.
- Çaktivizoni kodin QR
+ Ky kod QR mund të skanohet nga të tjerë për t’u bërë pjesë e grupit “%1$s”.\n\nKodin QR mund ta çaktivizoni këtu dhe ta riaktivizoni duke e riskanuar.
+ Çaktivizoni Kodin QRKy kod QR mund të skanohet nga të tjerë për të ujdisur kontakt me ju.\n\nKodi QR s’është aktiv në këtë pajisje.
- Ky kod QR mund të skanohet nga të tjerë për t’u bërë pjesë e grupit \"%1$s\".\n\nKodi QR s’është aktiv në këtë pajisje.
- Aktivizoni kod QR
- Kod QR ftese
+ Ky kod QR mund të skanohet nga të tjerë për t’u bërë pjesë e grupit “%1$s”.\n\nKodi QR s’është aktiv në këtë pajisje.
+ Aktivizoni Kod QR
+ Kod QR Ftese%1$s vjen.
- %1$s u verifikua.
- %1$s u bë pjesë e grupit në mënyrë të sigurt.
- Kod QR ftese
+ %1$s u prezantua.
+ %1$s u bë pjesë e grupit.
+ Kod QR Ftese
- Që të bëheni pjesë e grupit \"%1$s\", skanoni këtë.
- Kod QR ftese
+ Për t’u bërë pjesë e grupit “%1$s”, skanojeni
+ Kod QR Ftese
- Skanojeni këtë që të rregullohet një kontakt %1$s
+ Që të bisedoni me %1$s, skanojeniS\’ka lidhje në internet, s\’bëhet dot ujdisja e kodit QR.
- Të krijohet adresë email e re te \"%1$s\" dhe të bëhet hyrja atje?
- Të krijohet adresë e re email në \"%1$s\" dhe të bëhet hyrja atje?\n\nLlogaria juaj ekzistuese s’do të fshihet. Që të kaloni nga një llogari në tjetrën, përdorni zërin \"Ndërroni llogari\".
- Hyrje e suksesshme—adresa juaj email është %1$s\n\nNëse doni, tani mund të jepni një emër dhe një figurë avatari që do t’u shfaqet personave që ju shkruajnë.
+ Të krijohet adresë email e re te “%1$s” dhe të bëhet hyrja atje?
+ Të krijohet adresë e re email në “%1$s” dhe të bëhet hyrja atje?\n\nLlogaria juaj ekzistuese s’do të fshihet. Që të kaloni nga një llogari në tjetrën, përdorni zërin “Ndërroni llogari”.
+ Caktoni një emër, që kontaktet tuaj do ta njohin. Mundeni edhe të caktoni një emër profili.
+ Ju lutemi, jepni një emër.Kodi QR i skanuar s’mund të përdoret për të ujdisur një llogari të re.
+
Kodi QR i skanuar është për ujdisje të një llogarie të re. Kodin QR mund ta skanoni kur ujdisni një instalim të ri të Delta Chat-it.
-
+
Të hyhet si “%1$s”?
-
+
Të hyhet si “%1$s”?\n\nLlogaria juaj ekzistuese s’do të fshihet. Që të kaloni nga një llogari e juaja në një tjetër, përdorni zërin “Ndërroni Llogari”.%1$s ju ftoi të bëheni pjesë e këtij grupi.\n\nPo pritet për pajisjen e %2$s që të përgjigjet…%1$s u përgjigj, po pritet që të shtohet te grupi…
+ Po vendoset fshehtëzim skaj-më-skaj i garantuar, ju lutemi, pritni…
+ S’u vendos dot fshehtëzim skaj-më-skaj i garantuar, por mundeni tashmë të dërgoni një mesazh.%1$s u verifikua.
- S\’verifikohet dot %1$s
+ S’vendoset dot fshehtëzim i garantuar skaj-më-skaj me %1$s.
- Verifikuar nga %1$s
- Verifikuar nga ju
+ Sjellë nga %1$s
+ Sjellë nga unë
- U ndryshua rregullimi për %1$s
- Që të garantohte fshehtëzim skaj-më-skaj, mund të shtoni në këtë grup vetëm kontakte me shenjën e gjelbër të verifikimit.\n\nMund të takoheni drejtpërsëdrejti me kontakte të paverifikuar dhe të skanoni kodin e tyre QR për t’i verifikuar ata.
+ U ndryshua udjisja për %1$s
+ Që të garantohet fshehtëzim skaj-më-skaj, mund të shtoni në këtë grup vetëm kontakte me shenjën e gjelbër të verifikimit.\n\nMund të takoheni drejtpërsëdrejti me kontakte të paverifikuar dhe të skanoni kodin e tyre QR për t’i verifikuar ata.URL-ja QR u kopjua në të papastërPërzgjidhni fjalosje ku të dërgohet mesazhi
@@ -931,7 +984,7 @@
Hidhe tej
- Përgjigju
+ PërgjigjuniMesazh i riU vendos lidhje në prapaskenëE lartë
@@ -941,21 +994,23 @@
Pa emër apo mesazhNjoftimet të çaktivizuaraMesazhe të rinj
+
+ Keni mesazhe të rinj%1$d mesazhe në %2$d fjalosjeLypset lejeVazhdo
- Delta Chat lyp leje mbi Kamerën që të mund të bëjë foto apo video, por kjo i është mohuar. Ju lutemi, vazhdoni te menuja e rregullimeve të aplikacionit, përzgjidhni \"Leje\", dhe aktivizojini për \"Kamerën\".
- Delta Chat lyp leje mbi Mikrofonin që të mund të dërgojë mesazhe audio, por kjo i është mohuar. Ju lutemi, vazhdoni te menuja e rregullimeve të aplikacionit, përzgjidhni \"Leje\", dhe aktivizojini për \"Mikrofonin\".
- Delta Chat lyp leje mbi Depozitimin që të mund të bashkëngjisë apo eksportojë foto, video ose audio, por kjo i është mohuar. Ju lutemi, vazhdoni te menuja e rregullimeve të aplikacionit, përzgjidhni \"Leje\", dhe aktivizojini për \"Depozitimin\".
- Delta Chat lyp leje mbi Vendndodhjen që të mund të bashkëngjisë një vendndodhje, por kjo i është mohuar. Ju lutemi, vazhdoni te menuja e rregullimeve të aplikacionit, përzgjidhni \"Leje\", dhe aktivizojini për \"Vendndodhjen\".
+ Që të mund të bëhen foto apo video, kaloni te rregullimet e aplikacionit, përzgjidhni “Leje” dhe aktivizoni “Kamerën”.
+ Që të mund të dërgohen mesazhe audio, kaloni te rregullime aplikacioni, përzgjidhni “Leje” dhe aktivizoni “Mikrofonin”.
+ Që të merren apo dërgohen kartela, kaloni te rregullime aplikacioni, përzgjidhni “Leje” dhe aktivizoni “Depozitimin”.
+ Që të mund të bashkëngjitet një vendndodhje, kaloni te rregullimet e aplikacionit, përzgjidhni “Leje” dhe aktivizoni “Vendndodhjen”.Që të merrni njoftime, kaloni te “Rregullime Sistemi / Aplikacione / Delta Chat” dhe aktivizoni “Njoftime”.Që të turbullohet, vizatoni kudo qoftë
- Shtoni tekst
+ Shtoni TekstTurbullojePenel ShënimeshPenel Theksimesh
@@ -968,9 +1023,9 @@
Ky është aplikacioni zyrtar Delta Chat Desktop.
- Ky program licencohet sipar GNU GPL version 3 dhe kodi burim mund të kihet që prej GitHub-i.
+ Ky program licencohet sipas GNU GPL version 3 dhe kodi burim mund të kihet që prej GitHub-i.Mirë se vini në Delta Chat
- Zgjidhni Gjuhë…
+ GjuhëKartelëDilniPërpunoni
@@ -988,30 +1043,31 @@
Jepni ndihmesë në GitHubNjoftoni një ProblemRreth Delta Chat-it
- Hap Fjalosje Delta
+ Hap Delta Chat-inMinimizojePërzgjidhni një fjalosje ose krijoni një të tillë të reShkruani një mesazh
- Të dhëna fshehtëzimi
- Fshije mesazhin
- Më tepër të dhëna
- MMM D
+ Hollësi Fshehtëzimi
+ Fshije Mesazhin
+ Më tepër Hollësi
+ D MMMHiqeRuajeEmër
- Përzgjidhni figurë grupi
- Eksportoni kopjeruajtje
- Rregullimi Autocrypt u shpërngul me sukses!
- Të fshihet kjo hyrje? Do të fshihet gjithçka, përfshi rregullimin tuaj për skaj-më-skaj, kontaktet, fjalosjet, mesazhet dhe mediat. Ky veprim është përfundimtar dhe s\’mund të prapësohet.
+ Përzgjidhni Figurë Grupi
+ Eksportoni Kopjeruajtje
+ Ujdisja e Autocrypt-it u shpërngul.
+ Të fshihet kjo hyrje? Do të fshihet gjithçka, përfshi rregullimin tuaj për skaj-më-skaj, kontaktet, fjalosjet, mesazhet dhe mediat. Ky veprim s\’mund të zhbëhet.
+
Email: %1$s\nMadhësi: %2$s\nID Llogarie: %3$stë dërguartë marrëHap Dosje RegjistrashHap Kartelën Regjistër të Tanishme
- Ikona e panelit s’mund të çaktivizohet, ngaqë Delta Chat qe nisur me mundësinë --minimized.
+ Ikona e panelit s’mund të çaktivizohet, ngaqë Delta Chat qe nisur me mundësinë --minimized.S’u gjetën sugjerimi drejtshkrimi.Shfaq Dritare
- Mbulimi për SOCKS5 aktualisht është eksperimental. Ju lutemi, përdoreni duke pasur parasysh rrezikun. Nëse shtypni një adresë te fusha e email-it, do të ketë kërkim DNS që nuk do të kalohet përmes SOCKS5.
+ Mbulimi për SOCKS5 aktualisht është eksperimental. Ju lutemi, përdoreni duke pasur vetë përgjegjësinë. Nëse shtypni një adresë te fusha e email-it, do të ketë kërkim DNS që nuk do të kalohet përmes SOCKS5.Kombinim tastesh
@@ -1063,27 +1119,30 @@
Që ta shtoni aplikacionin te skena juaj e kreut, përzgjidhni “Shtoje te Skena e Kreut”.Lejimi i përdorimi të kamerës ju bën të mundur të bëni foto dhe video.
- Lejimi i përdorimi të librit tuaj të adresave kamerës ju bën të mundur të bisedoni me kontakte prej pajisjes tuaj.
- Që të mund t’u tregojë të tjerëve vendndodhjen tuaj, Delta Chat lyp lejen vendore, për aq kohë sa keni aktivizuar tregim vendndodhjeje.
- Që të mund t’u tregojë të tjerëve vendndodhjen tuaj, Delta Chat lyp lejen vendore, për aq kohë sa keni aktivizuar tregim vendndodhjeje.
- Lejimi i përdorimi të mikrofonit ju bën të mundur të bëni incizoni audio.
- Lejimi i përdorimi të fototekës tuaj ju bën të mundur të ngarkoni figura prej saj.
+ Lejimi i përdorimi të librit tuaj të adresave ju bën të mundur të bisedoni me kontakte prej pajisjes tuaj.
+ Që të mund t’u tregojë të tjerëve vendndodhjen tuaj, Delta Chat lyp leje, për aq kohë sa keni aktivizuar tregim vendndodhjeje.
+ Që të mund t’u tregojë të tjerëve vendndodhjen tuaj, Delta Chat lyp leje, për aq kohë sa keni aktivizuar tregim vendndodhjeje.
+ Delta Chat-i përdor mikrofonin tuaj për të incizuar dhe dërguar mesazhe zanorë dhe video me zë.
+ Delta Chat-i do t’ju lejojë të zgjidhni cilat foto të dërgohen nga fototeka juaj.Delta Chat dëshiron të ruajë figura në fototekën tuaj.
- Njoftime në prapaskenë
- Përdor një lidhje në prapaskenë me shërbyesin tuaj dhe lyp shpërfillje optimizimesh baterie.
+ Dërgim i Menjëhershëm
+ Përdor Shërbim Push
+ Të çaktivizohet përdorimi i Shërbimit Push?\n\nKjo mund të sjellë njoftime të vonuara.
+ Përdor Lidhje Në Prapaskenë
+ Lyp shpërfillje optimizimesh baterie, përdoreni nëse Shërbimi Push është jashtë funksionimi
+ Detyro Lidhje Në Prapaskenë
+ Shkakton një njoftim permanent
+
Që të ruhet lidhja me shërbyesin tuaj të email-eve dhe të merren mesazhe në prapaskenë, në hapin pasues shpërfillini optimizimet për baterinë.\n\nDelta Chat-i përdor pak burime dhe kujdeset të mos e shterojë baterinë tuaj.
- Lidhje e qëndrueshme në prapaskenë
- Lyp një njoftim permanentPrekeni këtu që të merrni mesazhe, teksa Delta Chat rri në prapaskenë.E keni lejuar tashmë Delta Chat-in të marrë mesazhe në prapaskenë.\n\nNëse mesazhet prapë nuk mbërrijnë në prapaskenë, ju lutemi, kontrolloni edhe rregullimet e sistemit tuaj.
-
- Ç’ka të re:\n\n💌 tanimë, fjalosjet tek-për-tek garantojnë fshehtëzim skaj-më-skaj për kontakte të prezantuar\n\n😌 për thjeshtësi për këdo, u vëmë shenjë këtyre kontakteve dhe fjalosjeve me shenja të gjelbra\n\n👥 grupet krijohen automatikisht me fshehtëzim skaj-më-skaj të garantuar, nëse është e mundur\n\n🔄 Pranoje/Bllokuar, Arkivuar, Fiksuar, Heshtoje njëkohësohen në krejt pajisjet tuaja
-
- Shihni për më tepër përmirësime në kamera, mesazhe zanorë, kopjeruajtje tërësore, lexues ekrani, sfonde sipas llogarish, përzgjedhje figurash të krejt galerisë, peizazh webxdc … ose lexoni për to në %1$s
-
+ Ç’ka të re:\n\n❤️ Po! Kjo ka kohë që pritej: Prekni gjatë mbi një mesazh, për të reaguar\n\n🔗 Nëse nuk skanoni dot kode QR, jepini si lidhje ftesë\n\n🔵 Tashmë mesazhet e palexuar të krejt llogarive numërohen dhe numri shfaqet te titulli\n\n… dhe TONELATA ndreqje të metash … %1$s\n\nNdihmoni të përmirësohet aplikacioni: Përdorni “Rregullime / Të thelluara / Dërgo statistika”, për të ndihmuar zhvilluesit ta bëjnë më optimal për përdorim të përditshëm. Para se të dërgohen, të dhënat mund t’i shqyrtoni
+ Ç’ka të re:\n\n❤️ Po! Kjo ka kohë që pritej: Prekni gjatë mbi një mesazh, për të reaguar\n\n🫸 Njoftime PUSH, nëse kjo mbulohet nga furnizuesit e shërbimeve internet, b.f., https://nine.testrun.org\n\n🔗 Nëse nuk skanoni dot kode QR, jepini si lidhje ftesë\n\n… dhe TONELATA ndreqje të metash … %1$s
+ Hapa të Rinj Mirëseardhjeje 🐣 Etj.:\n\n⚡️ Regjistrohuni te shërbyes të siguruar, të shpejtë, chatmail-i (https://delta.chat/chatmail), ose përdorni shërbyes klasikë email-i\n\n👉 Njoftime PUSH për çfarëdo shërbyesi “chatmail”\n\n👤 Lidhuni me shokët tuaj në mënyrë të parrezik, përmes “Bashkëngjitni kontakte”\n\n🥰 Reagoni me çfarëdo emoxhi\n\n📌 Fiksoni fjalosje drejt e nga kërkimi … dhe PLOT të TJERA te %1$s
+
diff --git a/res/values-sr/strings.xml b/src/main/res/values-sr/strings.xml
similarity index 97%
rename from res/values-sr/strings.xml
rename to src/main/res/values-sr/strings.xml
index 5e1d96582..0b5164ef9 100644
--- a/res/values-sr/strings.xml
+++ b/src/main/res/values-sr/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatУ реду
@@ -270,7 +270,6 @@
Поруке уређајаПоруке генерисане на уређајуПоруке у овом ћаскању се генеришу на вашем уређају да обавештавају о ажурирањима апликација и проблемима током коришћења.
- Добродошли на Delta Chat! – Delta Chat изгледа и делује као друге популарне апликације за слање порука, али нема централизовану контролу, праћење или продају ваших података, података ваших пријатеља, колега, или ваше фамилије великим организацијама.\n\nТехнички, Delta Chat је апликација за имејл са модерним интерфејсом за ћаскање. Такорећи имејл у новом руху 👻\n\nКористите Delta Chat са било ким ко има приступ интернету: само користите њихову е-адресу. Примаоци не морају да инсталирају Delta Chat, посећују веб-сајтове или се пријављују било где – међутим, наравно, ако желе, можете их упутити на 👉 https://get.delta.chatИзмени контактЗакачи ћаскање
@@ -387,6 +386,7 @@
Превуците за отказивањеДодирните и држите за снимање гласовне поруке, пустите за слањеСандуче је празно.\nПритисните „+“ да почнете ново ћаскање.
+
Можете ћаскати са другим Delta Chat корисницима и са онима који имају било коју другу е-адресу.Сва ћаскања су архивирана.\nПритисните „+“ да почнете ново ћаскање.Подели са
@@ -404,7 +404,6 @@
Покушај поново да пошаљеш порукуМорате бити у овој групи да би сте послали поруку. Да се придружите групи, питајте неког члана групе за позивницу.
- Ово ћаскање садржи поруке генерисане на овом уређају; писање није дозвољено.Слање порука на списак имејл адреса још увек није подржаноТип фајла %sне може бити приказанУчитавање прилога је неуспешно
@@ -502,11 +501,11 @@
%1$sод %2$sискоришћени
-
- Ћаскање преко е-поште.Скенирај код позива за приступ.Пријави се
+
Пријавите се у ваш налог е-поште
+
Пријавите се преко постојећег налога е-поштеЗа познате пружаоце услуге е-поште, додатне поставке се одређују аутоматски. Каткад, морате омогућити ИМАП у поставкама на веб сучељу ваше е-поште.\n\nПосаветујте се са пружаоцем услуге е-поште или пријатељима ако наиђете на проблеме.Не постоји сервер Делта ћаскања. Апликација користи само сервер ваше е-поште.
@@ -572,13 +571,12 @@
Слика профилаБлокирани контактиБлокирани контакти ће се појавити овде.
+
Лозинка и налогСлика вашег профила, име и потпис ће бити послан заједно са вашом поруком када комуницирате са другим корисницима.Ваше имеТекст потписа
-
- Послато Делта ћаскањем: https://delta.chatШаљи ЕНТЕР тастеромПритиском на ЕНТЕР тастер тексутале поруке ће бити послатеКвалитет медија за слање
@@ -644,6 +642,7 @@
Ако промените ову опцију, морате проверити да су ваш сервер и ваши други клијенти конфигурисани у складу са тим.\n\nУ супротном апликација можда уопште неће функционисати.Посматрај директоријум са пошиљкамаПошаљи копију поруке себи
+
Обавезно када користите овај налог на више уређаја.Аутоматски премести у DeltaChat директоријумЋаскања се померају да би се избегло затрпавање пријемног сандучета
@@ -715,7 +714,9 @@
За 1 годину
+
Аутошифровање
+
Аутошифровање је нова и отворена спецификација за аутоматско с-краја-на-крај шифровање е-поште.\n\nПостаке се стварају аутоматски по потреби и можете да их преносите између уређаја помоћу Порука поставки за аутошифровање.Пошаљите поруку поставки за аутошифровањеПорука о подешавању аутоматског шифровања безбедно дели ваше комплетно подешавање са другим апликацијама које су компатибилне са аутоматским шифровањем.\n\nПодешавање ће бити шифровано кодом за подешавање приказаним овде и мора се унети на другом уређају.
@@ -841,12 +842,12 @@
Нисте повезани на интернет, није могуће подесити бар-кôд.Направите нову е-адресу на „%1$s“ и приступите јој тамо?Направите нову е-адресу на „%1$s“ и приступите јој тамо?\n\nВаш постојећи налог неће бити избрисан. Користите „Промени налог“ да пређете са једног налога на други.
- Пријава је успела—ваша е-адреса је %1$s\n\nАко желите, сада можете да унесете име и слику профила који ће бити приказани људима којима пишете.Очитани бар-кôд не може бити коришћен да подеси нови налог.
+
Очитани бар-кôд је за подешавање новог налога. Можете очитати овај бар-кôд за подешавања после инсталације Delta Chat апликације.
-
+
Пријави се у „%1$s“?
-
+
Пријави се у „%1$s“? Ваш постојећи налог неће бити избрисан. Користите „Промени налог“ опцију да прелазите са једног на други налог.%1$sвас је позвао да се придружите групи.\n\nЧекамо да уређај од %2$sодговори...
@@ -931,12 +932,13 @@
Извези резервну копијуПоставке за аутошифровање су послате.Да ли желите да избришете овај налог? Све ће бити избрисано, укључујући и ваше подешавање с-краја-на-крај шифровања, контакти, ћаскања, поруке и медији. Ова радња се не може опозвати.
+
Е-пошта: %1$s\nВеличина: %2$s\nИдентификатор налога: %3$sпослатопримљеноОтвори директоријум где се налазе дневнициОтвори тренутни дневник
- Иконица на системској касети не може да се онемогући јер је Delta Chat покренут са --minimized опцијом.
+ Иконица на системској касети не може да се онемогући јер је Delta Chat покренут са --minimized опцијом.Нема предлога за исправке правописа.Прикажи прозорSOCKS5 подршка је тренутно у експерименталној фази. Користе је на личну одговорност. Ако унесете е-адресу у поље за е-адресу, следи захтев за ДНС претрагу која неће ићи кроз SOCKS5 тунел.
@@ -1001,15 +1003,9 @@
Delta Chat жели да сними слике у ваш фото албум.
-
- Обавештења у позадини
- Користи везу у позадини са вашим сервером и захтева да поставке игноришу оптимизације ефикасности батерије.Да би сте одржавали везу са вашим сервером за е-пошту и да би сте примали поруке у позадини, игноришите оптимизације ефикасности батерије у следећем кораку.\n\nDelta Chat не користи много енергије и води рачуна да вам не испразни батерију.
- Поуздана веза у позадини
- Захтева трајна обавештењаДодирните овде да би примали поруке када је Delta Chat у позадини.Ви сте већ омогућили Delta Chat-у достављање порука у позадини.\n\nАко поруке и даље не стижу у позадини, погледајте поставке у оперативном систему.
-
diff --git a/res/values-sv/strings.xml b/src/main/res/values-sv/strings.xml
similarity index 96%
rename from res/values-sv/strings.xml
rename to src/main/res/values-sv/strings.xml
index f57c996b5..da527fec8 100644
--- a/res/values-sv/strings.xml
+++ b/src/main/res/values-sv/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -220,7 +220,6 @@
EnhetsmeddelandenLokalt genererade meddelandenMeddelanden i denna chatt är lokalt genererade av din Delta Chat-app. Dess skapare använder den för att informera om app-uppdateringar och problem vid användning.
- Välkommen till Delta Chat! - Delta Chat ser ut och känns som andra populära meddelandeappar, men innefattar ingen centraliserad kontroll eller spårning eller säljer dig och dina vänner, kollegor eller familj till stora organisationer/företag.\n\nTekniskt är Delta Chat ett e-postprogram med modernt utseende. E-post i ny skrud, om du vill. 👻\n\nAnvänd Delta Chat med vem som helst av alla miljarder människor som har en e-postadress. Mottagaren behöver inte installera Delta Chat, besöka webbsidor eller registrera sig någonstans, men om de vill så kan du såklart visa dem till 👉 https://get.delta.chatRedigera kontaktFäst chatten
@@ -317,6 +316,7 @@
Svep för att avbrytaTryck och håll ner för att spela in ett röstmeddelande, släpp för att skicka.Tom inkorg.\nTryck på \"+\" för att starta en ny chatt.
+
Du kan chatta med andra Delta Chat-användare och med vilken e-postadress som helst.Alla chattar arkiverade.\nTryck på \"+\" för att starta en ny chatt.Dela med
@@ -333,7 +333,6 @@
Skicka om meddelandetDu kan inte skriva eftersom du inte är med i denna grupp. Be en medlem bjuda in dig, för att gå med
- Den här chatten innehåller meddelanden som har genererats lokalt. Därför kan du inte skriva meddelanden.Att skicka meddelande till e-postlistor stöds inte ännuDenna filtyp kan inte visas: %sBilagan kunde inte visas
@@ -372,7 +371,9 @@
Förhandsvisning av mediaSkicka meddelandeLogga in
+
Logga in på din server
+
Logga in med ett befintligt e-postkontoFör kända e-postleverantörer installeras ytterligare inställningar automatiskt. Ibland måste IMAP aktiveras i webbinställningarna. Kontakta din e-postleverantör eller vänner för hjälp.Det finns ingen Delta Chat-server, din data stannar på din enhet.
@@ -422,13 +423,12 @@
Din profilinformationProfilbildBlockerade kontakter
+
Lösenord och kontoDin profilbild och ditt namn visas tillsammans med dina meddelanden när du kommunicerar med andra användare. Information som redan skickats kan inte tas bort eller flyttas.Ditt namnSignaturtext
-
- Skickat från Delta Chat: https://delta.chatReturtangenten skickarTryck på returtangenten för att skicka textmeddelandenUtgående ljudkvalitet
@@ -522,7 +522,9 @@
Efter 1 år
+
Autocrypt
+
Autocrypt är en ny och öppen specifikation för automatisk slutpunkt-till-slutpunkt e-postkryptering.\n\nDin slutpunkt-till-slutpunkt-inställning skapas automatiskt vid behov och du kan överföra den mellan olika enheter med Autocrypt inställningsmeddelanden.Skicka Autocrypt inställningsmeddelandeEtt meddelande för att ställa in Autocrypt, delar den informationen med andra Autocrypt-anpassade program på ett säkert sätt. Informationen krypteras med en kod som visas här och som måste matas in på den mottagande enheten.
@@ -605,8 +607,8 @@
Ingen internetanslutning, kan inte utföra QR-kod-inställning.Skapa ny e-postadress på \"%1$s\" och logga in där?Vill du skapa en ny e-postadress på \"%1$s\" och logga in där?\n\nDitt befintliga konto kommer inte att tas bort. Använd \"Byt konto\" för att växla mellan dina konton.
- Inloggning slutförd. - Din e-postadress är %1$s\n\nOm du vill, kan du nu ange ett namn och en bild som visas för folk du skriver till.Den skannade QR-koden kan inte användas för att konfigurera ett nytt konto.
+
Den skannade QR-koden är till för att konfigurera ett nytt konto. Du kan skanna QR-koden när du konfigurerar en ny Delta Chat-installation.%1$s verifierad.Kan inte verifiera %1$s.
@@ -686,15 +688,9 @@
Delta Chat vill spara bilder i ditt fotogalleri.
-
- Bakgrundsaviseringar
- Använder en bakgrundsanslutning till din server och kräver undantagna batterioptimeringar.För att behålla anslutningen till din e-postserver och fortsätta ta emot meddelanden i bakgrunden, behöver du skippa batterioptimeringen i nästa steg.\n\nDelta Chat använder små resurser och ser till att inte dra ur ditt batteri.
- Tillförlitlig bakgrundsanslutning
- Kräver permanent aviseringTryck här för att ta emot meddelanden medan Delta Chat är i bakgrunden.Du har redan gett Delta Chatt tillstånd att ta emot meddelanden i bakgrunden.\n\nKontrollera dina systeminställningar också, om det fortfarande inte kommer några meddelanden i bakgrunden.
-
diff --git a/res/values-sw320dp/dimens.xml b/src/main/res/values-sw320dp/dimens.xml
similarity index 100%
rename from res/values-sw320dp/dimens.xml
rename to src/main/res/values-sw320dp/dimens.xml
diff --git a/res/values-sw360dp-v13/values-preferences.xml b/src/main/res/values-sw360dp-v13/values-preferences.xml
similarity index 100%
rename from res/values-sw360dp-v13/values-preferences.xml
rename to src/main/res/values-sw360dp-v13/values-preferences.xml
diff --git a/res/values-sw480dp/dimens.xml b/src/main/res/values-sw480dp/dimens.xml
similarity index 100%
rename from res/values-sw480dp/dimens.xml
rename to src/main/res/values-sw480dp/dimens.xml
diff --git a/res/values-sw600dp/attrs.xml b/src/main/res/values-sw600dp/attrs.xml
similarity index 100%
rename from res/values-sw600dp/attrs.xml
rename to src/main/res/values-sw600dp/attrs.xml
diff --git a/res/values-ta/strings.xml b/src/main/res/values-ta/strings.xml
similarity index 98%
rename from res/values-ta/strings.xml
rename to src/main/res/values-ta/strings.xml
index a6061cfc6..38ae0b0f7 100644
--- a/res/values-ta/strings.xml
+++ b/src/main/res/values-ta/strings.xml
@@ -1,5 +1,5 @@
-
+Delta Chatசரி
@@ -181,10 +181,9 @@
SMTP போர்ட்உங்கள் சுயவிவரத் தகவல்தடுக்கபட்ட தொடர்புகள்
+
கணக்கு அமைப்புகள்எனது பெயர்
-
- என்னுடைய Delta Chat செயலியில் இருந்து அனுப்பி உள்ளேன் : https://delta.chat\"enter\" மூலம் அனுப்பவும்அதிர்வு உண்டாக்குதிரை பாதுகாப்பு
diff --git a/res/values-te/strings.xml b/src/main/res/values-te/strings.xml
similarity index 97%
rename from res/values-te/strings.xml
rename to src/main/res/values-te/strings.xml
index c6d3aecf8..e483d3fc4 100644
--- a/res/values-te/strings.xml
+++ b/src/main/res/values-te/strings.xml
@@ -1,5 +1,5 @@
-
+Delta Chatసరే
@@ -150,10 +150,9 @@
మీ రూప సమాచారంరూపచిత్రంనిరోధించిన పరిచయాలు
+
ఖాతా సెట్టింగులుమీ పేరు
-
- నా Delta Chat మెసెంజర్ ద్వారా పంపబడినది: https://delta.chat\"ఎంటర్\" నొక్కితే పంపువైబ్రేషన్స్క్రీన్ భద్రత
diff --git a/res/values-tr/strings.xml b/src/main/res/values-tr/strings.xml
similarity index 86%
rename from res/values-tr/strings.xml
rename to src/main/res/values-tr/strings.xml
index e731b48de..1f31a903b 100644
--- a/res/values-tr/strings.xml
+++ b/src/main/res/values-tr/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatTamam
@@ -56,6 +56,7 @@
Tam İletiyi Göster…Tümünü Okundu Olarak İmle
+ Okundu Olarak İmleOkundu
@@ -199,6 +200,8 @@
Yeni Kişi
+ Elle Kişi Ekle
+ Elle eklenen kişiler, klasik e-postaya metin göndermede kullanılabilir ve uçtan uca şifreleme güvencelenmez.Yeni SohbetYeni ÖbekSohbeti Çoğalt
@@ -226,7 +229,7 @@
İletileri SilKişiyi SilBu Konumu Sil
- İleti Ayrıntıları
+ İleti BilgisiPanoya KopyalaSeçimi KopyalaBağlantıyı Kopyala
@@ -278,7 +281,7 @@
Aygıt İletileriYerel olarak oluşturulan iletilerBu sohbetteki iletiler, uygulama güncelleştirmeleri ve kullanım sırasındaki sorunlar hakkında bilgilendirmek için aygıtınızda oluşturulur.
- Delta Chat\'e hoş geldiniz! – Delta Chat, diğer yaygın ulak uygulamaları gibi görünür ve hissettirir; ama merkezi denetim, izleme içermez ya da sizi, arkadaşlarınızı, iş arkadaşlarınızı ya da ailenizi büyük kuruluşlara satmaz.\n\nTeknik olarak Delta Chat, çağdaş bir sohbet arabirimli bir e-posta uygulamasıdır. 👻 olacaksanız, e-posta yeni bir elbisedir\n\nMilyarlarca insanın herhangi biriyle Delta Chat kullanın: Yalnızca onların e-posta adresini kullanın. Alıcıların Delta Chat\'i kurması, web sitelerini ziyaret etmesi ya da herhangi bir yere kaydolması gerekmez - ancak elbette isterlerse onlara 👉 https://get.delta.chat adresini işaret edebilirsiniz
+ İletişime geçin!\n\n🙌 Her iki aygıtın ana ekranındaki \"QR Kodu\"na dokunun. Bir aygıtta \"QR Kodunu Tara\"yı seçin ve onu diğerine doğrultun\n\n🌍 Aynı odada değilse, video araması aracılığıyla tarayın ya da \"QR Kodu\"ndan bir çağırma bağlantısı paylaşın\n\nDaha sonra: Şimdiye kadar varolan en büyük merkezi olmayan ağ üzerinden ulak deneyiminizin keyfini çıkarın: E-posta. Ve diğer yaygın uygulamaların tersine, merkezi denetim ya da izleme olmadan ya da sizi, arkadaşlarınızı, iş arkadaşlarınızı ya da ailenizi büyük kuruluşlara satmadan.Kişiyi DüzenleSohbeti Sabitle
@@ -385,12 +388,13 @@
%d yeni ileti
- %1$s kişisine bir ileti gönderin; Delta Chat olmadan bile onu alabilir.
+ %1$s kişisine bir ileti gönderin.Bir yayın listesinde, alıcılar sizinle salt okunur bir sohbette iletiler alacak.Diğerleri, yalnızca siz bir ilk ileti gönderdikten sonra bu öbeği görecek.İptal etmek için kaydırınBir sesli ileti kaydetmek için dokunun ve basılı tutun, göndermek için bırakın
- Boş gelen kutusu.\nYeni bir sohbet başlatmak için \"+\" simgesine basın.
+ Sohbet yok.\nYeni bir sohbet başlatmak için \"+\" tuşuna basın.
+
Diğer Delta Chat kullanıcılarıyla ve herhangi bir e-posta adresiyle sohbet edebilirsiniz.Tüm sohbetler arşivlendi.\nYeni bir sohbet başlatmak için \"+\" simgesine basın.Paylaş
@@ -408,7 +412,6 @@
İletiyi göndermeyi yeniden deneBir ileti göndermek için bu öbekte olmalısınız. Katılmak için başka bir üyeye sorun.
- Bu sohbet, yerel olarak oluşturulan iletileri içerir; yazma etkisizleştirilir.Posta listelerine iletiler gönderme henüz desteklenmiyorBu dosya türü görüntülenemiyor: %sİlişiği yükleme başarısız
@@ -428,6 +431,8 @@
\"%1$s\" dosyasını gönder…İletiyi gönder…
+ Gerçek Zamanlı Webxdc Kanalları
+ Aygıtlar arasında doğrudan bağlantılar oluşturmak için Webxdc gerçek zamanlı API\'lerini etkinleştirin.Konumları zaman çerçevesinde göster
@@ -497,21 +502,22 @@
İkinci Aygıt Ekle
- İki aygıtın da aynı Wi-Fi\'da ya da ağda olduğundan emin olun
- Bu, ikinci aygıtın hesabı kopyalamak için tarayabileceği bir QR kodu oluşturur.
+ Her iki aygıtın da aynı Wi-Fi\'da ya da ağda olduğundan emin olun
+ Bu, ikinci aygıtın profili kopyalamak için tarayabileceği bir QR kodu oluşturur.Delta Chat\'i diğer aygıtınıza kurun (https://get.delta.chat)
- Delta Chat\'i başlatın, “İkinci Aygıt Olarak Ekle”ye dokunun ve burada gösterilen kodu tarayın
+
+ Delta Chat\'i başlatın, “Zaten Bir Girişim Var / İkinci Aygıt Olarak Ekle”ye dokunun ve burada gösterilen kodu tarayın%1$s için ikinci aygıtı ayarlamak üzere tarayınİkinci Aygıt Olarak AyarlaBirinci aygıtta “Ayarlar / İkinci Aygıt Ekle”ye gidin ve orada gösterilen kodu tarayın
- Diğer aygıttan gelen hesap bu aygıta kopyalansın mı?
+ Diğer aygıttan gelen profil bu aygıta kopyalansın mı?İkinci aygıtı ayarlamadan vazgeçilsin mi?Bu, panoya kopyalanan QR kodunu geçersizleştirecek.(deneysel, sürüm 1.36 gerekli)
- ℹ️ Hesap, ikinci aygıtınıza aktarıldı.
+ ℹ️ Profil, ikinci aygıtınıza aktarıldı.
- Hesap hazırlanıyor…
+ Profil hazırlanıyor…Alıcı bekleniyor…
@@ -546,13 +552,43 @@
- E-Posta Üzerinden Sohbet.
+
+ Yeni Profil Oluştur
+
+ Zaten Bir Profilim Var
+
+ Klasik E-Posta Girişi
+
+ Profiliniz
+
+ Gizlilik İlkesi\'ni Okuyun
+
+ %1$s için Gizlilik İlkesi
+
+ %1$s üzerindeki profiller hakkında
+
+ Kabul Et & Profil Oluştur
+
+ Diğer Sunucuyu Kullan
+ Chatmail Sunucularını Listele
+
+ \"%1$s\" öbeğine katılmak için bir profil oluşturun.
+
+ %1$s ile sohbet etmek için bir profil oluşturun.
+
+ Yeni bir profil oluşturmak ve %1$s ile sohbet etmeye başlamak istiyor musunuz?
+
+ Yeni bir profil oluşturmak ve \"%1$s\" sohbet öbeğine katılmak istiyor musunuz?
+
+ Güvenli Merkezi Olmayan SohbetÇağrı Kodunu TaraGiriş Yap
+
E-Posta Hesabınıza Giriş Yapın
+
Varolan bir e-posta hesabıyla giriş yapınBilinen e-posta sağlayıcıları için ek ayarlar otomatik olarak ayarlanır. Bazen IMAP\'in web ayarlarından etkinleştirilmesi gerekir. Yardım için e-posta sağlayıcınıza ya da arkadaşlarınıza danışın.
- Delta Chat sunucuları yoktur; verileriniz aygıtınızda kalır.
+ Delta Chat kullanıcı verisi toplamaz; her şey aygıtınızda kalır.Gelen KutusuIMAP Giriş AdıIMAP Sunucusu
@@ -573,7 +609,7 @@
SOCKS5 KullanıcısıSOCKS5 ParolasıBasitleştirilen ayarlamayla sürdürülsün mü?
- Girilen e-posta adresi basitleştirilen bir ayarlamayı (OAuth 2.0) destekliyor.\n\nSonraki adımda, lütfen Delta Chat\'in E-posta Üzerinden Sohbet uygulamanız olarak davranmasına izin verin.\n\nDelta Chat sunucuları yoktur; verileriniz aygıtınızda kalır.
+ Girilen e-posta adresi basitleştirilen bir ayarlamayı (OAuth 2.0) destekliyor.\n\nSonraki adımda, lütfen Delta Chat\'in E-posta Üzerinden Sohbet uygulamanız olarak davranmasına izin verin.\n\nDelta Chat kullanıcı verisi toplamaz; her şey aygıtınızda kalır.Sertifika DenetimleriLütfen geçerli bir e-posta adresi girinLütfen geçerli bir sunucu / IP adresi girin
@@ -587,13 +623,13 @@
Geçersiz sertifikaları kabul etKullanılan ayarlar:
- Hesabı Değiştir
- Hesap Ekle
- Hesabı Sil
- Hesap verilerinizi silmek istediğinizden emin misiniz?
- Uçtan uca şifreleme ayarlamanızı, kişilerinizi, sohbetlerinizi, iletilerinizi ve ortamlarınızı kapsayarak \"%s\" hesabının bu aygıttaki verilerinin tümü silinecek. Bu eylem geri alınamaz.
- Yapılandırılmayan hesap
- Yapılandırmak için hesabı açın.
+ Profili Değiştir
+ Profil Ekle
+ Profili Sil
+ Profil verilerinizi silmek istediğinizden emin misiniz?
+ Uçtan uca şifreleme ayarlamanızı, kişilerinizi, sohbetlerinizi, iletilerinizi ve ortamlarınızı kapsayarak \"%s\" profilinin bu aygıttaki verilerinin tümü silinecek. Bu eylem geri alınamaz.
+ Yapılandırılmayan profil
+ Yapılandırmak için profili açın.Şimdi bağlanmayı deneTümünü Eşzamanla
@@ -611,17 +647,16 @@
Özel kullanılıyor: %sVarsayılan kullanılıyor: %s
- Profil Bilginiz
+ ProfilinizProfil GörseliEngellenen KişilerEngellenen kişiler burada görünecek.
+
Parola ve Hesap
- Profil görseliniz, adınız ve imzanız diğer kullanıcılarla iletişim kurulurken iletilerinizle birlikte gönderilecek.
+ Profil görseliniz, adınız ve biyografiniz diğer kullanıcılarla iletişim kurulurken iletilerinizle birlikte gönderilecek.Adınız
- İmza Metni
-
- Delta Chat Messenger\'ımla gönderildi: https://delta.chat
+ BiyografiEnter Tuşu GöndersinEnter tuşuna basma, metin iletileri gönderecekGiden Ortam Kalitesi
@@ -655,11 +690,15 @@
Kişiselleştirilen öğrenmeyi etkisizleştirmek için klavye isteOkundu OnaylarıOkundu onayları etkisizleştirilirse, diğerlerinden gelen okundu onaylarını göremeyeceksiniz.
+ Sunucu
+ ŞifrelemeAnahtarları YönetSistem Emojisini KullanDelta Chat\'in gömülü emoji desteğini kapatUygulama İçi Kamerayı KullanUygulama içi kameranın genellikle sistem kamerasından daha az özelliği vardır
+ Sistem Adres Defterini Oku
+ Adres defterinden gelen kişilerle sohbet oluşturmayı teklif edin. Bazı sağlayıcılara önce uçtan uca şifreleme ayarlaması gerekir.Uygulama ErişimiSohbetlerSohbet İçi Sesler
@@ -672,10 +711,10 @@
YedeklemeSohbetleri Dış Depolamaya YedekleBir yedek, bu ya da başka bir aygıtta yeni bir kurulum ayarlamanıza yardımcı olur.\n\nYedek; tüm iletileri, kişileri ve sohbetleri ve uçtan uca Autocrypt ayarlamanızı içerecek. Yedek dosyasını güvenli bir yerde tutun ya da olanaklıysa en kısa sürede silin.
-
+
%1$s hesabını dışa aktar
-
- Tüm %1$d hesabı dışa aktar
+
+ Tüm %1$d profili dışa aktarYedeklemeyi BaşlatYedek \"%1$s\" üzerine başarıyla yazıldı.Anahtarları Yönet
@@ -693,6 +732,7 @@
Bu seçeneği değiştirirseniz, sunucunuzun ve diğer istemcilerinizin uygun olarak yapılandırıldığından emin olun.\n\nDeğilse özellikler hiç çalışmayabilir.Gönderilen Klasörünü İzleKendime Kopya Gönder
+
Bu hesap çoklu aygıtlarda kullanılırken gereklidir.DeltaChat Klasörüne Otomatik Olarak TaşıSohbet görüşmeleri, Gelen Kutusu\'ndaki dağınıklığı önlemek için taşınır
@@ -728,6 +768,8 @@
Profili DüzenleIMAP IDLE\'ı EtkisizleştirSunucu desteklese bile IMAP IDLE uzantısını kullanmayın. Bu seçeneği etkinleştirmek ileti getirmeyi geciktirecek; yalnızca sınama için etkinleştirin.
+ Delta Chat\'in geliştiricilerine istatistikleri gönder
+
Arama Sonuçları
@@ -744,6 +786,12 @@
Tepkiler
+
+ Tepki Ver
+
+ \"%2$s\" öğesine %1$s ile tepki verdiniz
+
+ %1$s, \"%3$s\" öğesine %2$s ile tepki verdiEski İletileri Sil
@@ -770,7 +818,9 @@
1 yıl sonra
+
Autocrypt
+
Autocrypt, otomatik uçtan uca e-posta şifrelemesi için yeni ve açık bir belirtimdir.\n\nUçtan uca ayarlamanız, gerektiğinde otomatik olarak oluşturulur ve Autocrypt Ayarlama İletileri ile aygıtlar arasında aktarabilirsiniz.Autocrypt Ayarlama İletisi GönderBir Autocrypt Ayarlama İletisi, uçtan uca ayarlamanızı diğer Autocrypt uyumlu uygulamalarla güvenli olarak paylaşır.\n\nAyarlama, burada görüntülenen ve diğer aygıtta yazılması gereken bir ayarlama kodu tarafından şifrelenecek.
@@ -862,11 +912,13 @@
Artık bu sohbetteki tüm iletiler uçtan uca şifreleme güvencelidir.\n\nUçtan uca şifreleme, iletilerinizi sizin ve sohbet ortaklarınızın arasında özel tutar. E-posta sağlayıcınız bile onları okuyamaz.%1$s başka bir aygıttan bir ileti gönderdi. Daha fazlasını öğrenmek için dokunun.Uçtan uca şifreleme artık güvencelenemiyor; çünkü büyük olasılıkla %1$s Delta Chat\'i yeniden yükledi ya da başka bir aygıttan ileti gönderdi.\n\nOnlarla kişisel olarak tanışabilir ve güvenceli uçtan uca şifrelemeyi yeniden kurmak için onların QR kodunu yeniden tarayabilirsiniz.
+ ⚠️ %1$s, bu sohbet için henüz ayarlanmayan uçtan uca şifrelemeyi gerektirir. Daha fazlasını öğrenmek için dokunun.
+ Uçtan uca şifrelemeyi kurmak için kişilerle kişisel olarak tanışabilir ve onları tanıtmak için onların QR kodunu tarayabilirsiniz.Daha Fazlasını Öğrenin\"Kaydedilen iletiler\" sohbetini sildiniz.\n\nℹ️ \"Kaydedilen iletiler\" özelliğini yeniden kullanmak için kendinizle yeni bir sohbet oluşturun.
- ⚠️ Sağlayıcınızın depolama alanı tükenmek üzere: %1$s%% zaten kullanılıyor.\n\nDepolama alanı dolarsa iletileri alamayabilirsiniz.\n\n👉 Lütfen sağlayıcınızın web arabiriminden eski verileri silip silemeyeceğinizi denetleyin ve \"Ayarlar / Eski İletileri Sil\"i etkinleştirmeyi düşünün. Şu anki depolama alanı kullanımınızı herhangi bir zamanda \"Ayarlar / Bağlanabilirlik\"ten denetleyebilirsiniz.
+ ⚠️ Sağlayıcınızın depolaması dolmak üzere: %1$s%% zaten kullanımda.\n\nDepolama tam dolduğunda iletileri alamayabilirsiniz.\n\n👉 Lütfen sağlayıcınızın web arabiriminden eski verileri silip silemeyeceğinizi denetleyin ve \"Ayarlar / Sohbetler ve Ortamlar / Eski İletileri Sil\"i etkinleştirmeyi düşünün. Herhangi bir zamanda şu anki depolama kullanımınızı \"Ayarlar / Bağlanabilirlik\"ten denetleyebilirsiniz.⚠️ Aygıtınızdaki tarih ya da saat yanlış görünüyor (%1$s).\n\nİletilerinizin doğru şekilde alınmasını sağlamak için saatinizi ⏰🔧 ayarlayın.⚠️ Delta Chat sürümünüz eski olabilir.\n\nBu, sorunlara neden olabilir; çünkü sohbet ortaklarınız daha yeni sürümleri kullanıyor - ve en yeni özellikleri kaybediyorsunuz 😳\nGüncelleştirmeler için lütfen https://get.delta.chat ya da uygulama mağazanızı denetleyin.
@@ -878,7 +930,8 @@
QR KoduQR Kodunu Görsel Olarak YükleQR Kodu Tara
- Kameranızı QR kodunun üzerinde tutun.
+ Kameranızı QR kodunun üzerinde tutun
+ QR kodunu kameraya taşıyınQR kodu çözülemedi\"%1$s\" öbeğine katılmak istiyor musunuz?Taranan parmak izi, %1$s için son görülenle eşleşmiyor.
@@ -905,19 +958,23 @@
%1$s ile sohbet etmek için bunu tarayınInternet bağlantısı yok; QR kodu ayarlaması gerçekleştirilemiyor.
- \"%1$s\" üzerinde yeni e-posta adresi oluşturulsun ve orada giriş yapılsın mı?
- \"%1$s\" üzerinde yeni e-posta adresi oluşturulsun ve orada giriş yapılsın mı?\n\nVarolan hesabınız silinmeyecek. Hesaplarınız arasında geçiş yapmak için \"Hesabı Değiştir\" öğesini kullanın.
- Giriş başarılı—e-posta adresiniz %1$s\n\nİsterseniz şimdi yazdığınız insanlara görüntülenecek bir ad ve bir profil görseli girebilirsiniz.
- Taranan QR kodu, yeni bir hesap ayarlamak için kullanılamıyor.
- Taranan QR kodu, yeni bir hesap ayarlamak içindir. QR kodunu yeni bir Delta Chat kurulumu ayarlanırken tarayabilirsiniz.
-
+ \"%1$s\" üzerinde yeni profil oluşturulsun ve orada giriş yapılsın mı?
+ \"%1$s\" üzerinde yeni profil oluşturulsun ve orada giriş yapılsın mı?\n\nVarolan profiliniz silinmeyecek. Profilleriniz arasında geçiş yapmak için \"Profili Değiştir\" öğesini kullanın.
+ Kişilerinizin tanıyacağı bir ad ayarlayın. Bir profil görseli de ayarlayabilirsiniz.
+ Lütfen bir ad girin.
+ Taranan QR kodu, yeni bir profil ayarlamak için kullanılamıyor.
+
+ Taranan QR kodu, yeni bir profil ayarlamak içindir. QR kodunu yeni bir Delta Chat kurulumu ayarlanırken tarayabilirsiniz.
+
\"%1$s\" adresine giriş yapılsın mı?
-
- \"%1$s\" adresine giriş yapılsın mı?\n\nVarolan hesabınız silinmeyecek. Hesaplarınız arasında geçiş yapmak için \"Hesabı Değiştir\" öğesini kullanın.
+
+ \"%1$s\" adresine giriş yapılsın mı?\n\nVarolan profiliniz silinmeyecek. Profilleriniz arasında geçiş yapmak için \"Profili Değiştir\" öğesini kullanın.%1$s sizi bu öbeğe katılmaya çağırdı.\n\n%2$s kişisinin aygıtının yanıt vermesi bekleniyor…%1$s yanıtladı; öbeğe eklenmesi bekleniyor…
+ Güvencelenen uçtan uca şifreleme kuruluyor, lütfen bekleyin…
+ Henüz güvencelenen uçtan uca şifreleme kurulamadı; ama zaten bir ileti gönderebilirsiniz.%1$s tanıtıldı.%1$s ile güvencelenen uçtan uca şifreleme kurulamıyor.
@@ -944,6 +1001,8 @@
Ad ya da ileti yokBildirimler etkisizleştirildiYeni iletiler
+
+ Yeni iletileriniz var%2$d sohbette %1$d ileti
@@ -1006,12 +1065,13 @@
Yedeği Dışa AktarAutocrypt ayarlaması aktarıldı.Bu giriş silinsin mi? Uçtan uca ayarlamanızı, kişilerinizi, sohbetlerinizi, iletilerinizi ve ortamlarınızı kapsayarak her şey silinecek. Bu eylem geri alınamaz.
+
E-Posta: %1$s\nBoyut: %2$s\nHesap Kimliği: %3$sgönderilmealınmaGünlük Klasörünü AçŞu Anki Günlük Dosyasını Aç
- Delta Chat --minimized seçeneğiyle başlatıldığından tepsi simgesi etkisizleştirilemez.
+ Delta Chat --minimized seçeneğiyle başlatıldığından tepsi simgesi etkisizleştirilemez.Yazım önerileri bulunamadı.Pencereyi GösterSOCKS5 desteği şu anda deneysel. Lütfen riski size ait olarak kullanın. E-posta alanına bir adres yazarsanız, SOCKS5 üzerinden tünellenmeyen DNS araması olacak.
@@ -1044,7 +1104,7 @@
Kaydettikten sonra göndermek için çift dokunun. Kaydı atmak için iki parmakla sarın.Bağlanabilirlik ayrıntılarını görüntülemek için çift dokunun.Internet bağlantısı yok; giriş başarısız.
- Hesap yapılandırılmadı.
+ Profil yapılandırılmadı.Ses dosyası oynatılamıyor.Fotoğraflar çekmek, videolar yakalamak ya da QR Kodu tarayıcısını kullanmak için sistem ayarlarını açın ve \"Kamera\"yı etkinleştirin.
@@ -1077,18 +1137,23 @@
- Arka Plan Bildirimleri
- Sunucunuza bir arka plan bağlantısı kullanır ve pil iyileştirmelerinin yoksayılmasını gerektirir.
+ Anında Teslimat
+ Anında İletme Hizmeti Kullan
+ Chatmail Sunucuları için Güvenilir Anında İletme Bildirimleri
+ Anında İletme Hizmeti kullanımı etkisizleştirilsin mi?\n\nBu, bildirimlerin gecikmesiyle sonuçlanabilir.
+ Arka Plan Bağlantısı Kullan
+ Pil iyileştirmelerinin yoksayılmasını gerektirir, Anında İletme Hizmeti kullanım dışıysa kullanın
+ Arka Plan Bağlantısını Zorla
+ Kalıcı bir bildirime neden olur
+
E-posta sunucunuza bağlantıyı sürdürmek ve arka planda iletileri almak için sonraki adımda pil iyileştirmelerini yoksayın.\n\nDelta Chat, az kaynak kullanır ve pilinizi boşaltmamaya özen gösterir.
- Güvenilir Arka Plan Bağlantısı
- Kalıcı bir bildirim gerektirirDelta Chat arka plandayken iletileri almak için buraya dokunun.Delta Chat\'in arka planda iletileri almasına zaten izin verdiniz.\n\nİletiler arka planda hâlâ gelmiyorsa, lütfen sistem ayarlarınızı da denetleyin.
-
- Ne yeni:\n\n💌 bire bir sohbetler artık yeşil bir onay kutusu bulunan kişiler için uçtan uca şifrelemeyi güvenceler\n\n😌 Herkesin basitliği için bu sohbetleri yeşil onay imleriyle imliyoruz\n\n👥 olanaklıysa, otomatik olarak öbekler güvencelenen uçtan uca şifrelemeyle oluşturulur\n\n🔄 Kabul edilen/Engellenen, Arşivlenen, Sabitlenen, Sessize Alınan aygıtlarınız arasında eşzamanlanır
-
- Kamera, sesli iletiler, tümünü yedekleme, ekran okuyucusu, hesap başına duvar kâğıtları, galeride tümünü seç, webxdc manzarasındaki daha fazla iyileştirmeye dikkat edin … ya da onları %1$s adresinde okuyun
+ Ne yeni:\n\n❤️ Evet! Bu uzun zamandır bekleniyordu: Tepki vermek için bir iletiye uzun dokunun\n\n🔗 QR kodlarını tarayamıyorsanız, onları çağırma bağlantısı olarak paylaşın\n\n🔵 Artık tüm hesapların okunmayan iletileri sayılır ve başlıkta gösterilir\n\n… ve TONLARCA hata düzeltmesi … %1$s\n\nUygulamanın iyileştirilmesine yardımcı olun: Gerçek dünya kullanımını daha da iyileştirmek için \"Ayarlar / Gelişmiş / İstatistikleri gönder\"i kullanarak geliştiricilere yardımcı olun. Göndermeden önce verilerinizi inceleyebilirsiniz
+ Ne yeni:\n\n❤️ Evet! Bu uzun zamandır bekleniyordu: Tepki vermek için bir iletiye uzun dokunun\n\n🫸 https://nine.testrun.org gibi sağlayıcılar tarafından destekleniyorsa ANLIK bildirimler\n\n🔗 QR kodlarını tarayamıyorsanız, onları çağırma bağlantısı olarak paylaşın\n\n… ve TONLARCA hata düzeltmesi … %1$s
+ Yeni Katılım 🐣 ve Daha Fazlası:\n\n⚡️ Hızlı güvenli Chatmail sunucularına kayıt olun (https://delta.chat/chatmail) ya da klasik e-posta sunucularını kullanın\n\n👉 Herhangi bir Chatmail sunucusu için ANINDA İLETME bildirimleri\n\n👤 \"Kişileri iliştir\" üzerinden arkadaşlarınıza güvenlice bağlanın\n\n🥰 Herhangi bir emojiyle tepki verin\n\n📌 Sohbetleri doğrudan aramadan sabitleyin … ve DAHA FAZLASI %1$s
+ Yeni Katılım 🐣 ve Daha Fazlası:\n\n⚡️ Güvenli hızlı Chatmail sunucularına kaydolun (https://delta.chat/chatmail) ya da klasik e-posta sunucularını kullanın\n\n👉 Herhangi bir Chatmail sunucusu için ANLIK bildirimler\n\n👤 \"İliştirilen kişileri\" alın ve arkadaşlarınıza bağlanın\n\n🥰 Daha hızlı tepki seçimi … ve DAHA FAZLASI için %1$s
diff --git a/res/values-uk/strings.xml b/src/main/res/values-uk/strings.xml
similarity index 72%
rename from res/values-uk/strings.xml
rename to src/main/res/values-uk/strings.xml
index 574b47b68..db7a83a35 100644
--- a/res/values-uk/strings.xml
+++ b/src/main/res/values-uk/strings.xml
@@ -1,10 +1,12 @@
-
+Delta ChatГараздСкасувати
- Очистити пошук
+
+ або
+ Очистити пошукТакНіОбрати
@@ -43,7 +45,7 @@
РозархівуватиВимкнути сповіщення
- Зникнення повідомлень
+ Зникаючі повідомленняЦі налаштування застосовуються до всіх учасників, що використовують DeltaChat. Однак вони можуть копіювати, зберігати та пересилати повідомлення або використовувати інші клієнти електронної пошти.ЗберегтиЧат
@@ -54,6 +56,7 @@
Показати повне повідомлення...Позначити все як прочитане
+ Позначити як прочитанеПрочитане
@@ -62,7 +65,7 @@
АктивуватиЗавантажувати віддалені зображення
- Віддалені зображення можна використовувати для слідкування за вами.\n\nЦе налаштування також дозволяє завантажувати шрифти та інший вміст. Якщо воно вимкнене, ви можете побачити вбудовані або кешовані зображення.\n\nЗавантажувати віддалені зображення?
+ Віддалені зображення можуть вас відстежувати.\n\nЦей параметр також може завантажувати шрифти та інший вміст. Якщо його вимкнено, можуть з\'являтися вбудовані або кешовані зображення.\n\nЗавантажувати віддалені зображення?ЗавждиЗавжди завантажувати віддалені зображенняОдин раз
@@ -85,7 +88,7 @@
Скопійовано до буферу обміну.КонтактиАдреса електронної пошти
- Невірна адреса електронної пошти.
+ Неправильна адреса електронної пошти.ПарольНаявний парольЗараз
@@ -98,10 +101,10 @@
Останнього тижняОстаннього місяця
- З\'являвся останній раз %1$s
+ З\'являвся зʼявлялася востаннє %1$s
- З\'являлися останній раз %1$s
- Невідомо коли з\'являвся останній раз
+ З\'являвся (зʼявлялася) востаннє %1$s
+ Невідомо коли з\'являвся (зʼявлялася) востаннє%d хвилину
@@ -154,7 +157,7 @@
%d обрано
- Мої
+ ЯЧернеткаЗображення
@@ -213,6 +216,8 @@
Новий контакт
+ Додати контакт вручну
+ Контакти, додані вручну, можна використовувати для надсилання тексту на класичну електронну пошту, але вони не гарантовано зашифровані наскрізним шифруванням.Новий чатНова групаКлонувати чат
@@ -223,7 +228,7 @@
Додати одержувачівРедагувати список трансляційНазва списку трансляцій
- Будь-ласка введіть назву для списку трансляцій.
+ Будь ласка, введіть назву для списку трансляцій.ВідправитиУвімкнути емодзі-клавіатуруРедагувати групу
@@ -248,7 +253,7 @@
Копіювати зображенняКопіювати електронну поштуВставити із буферу обміну
- Посилання «%1$d» не можна відкрити у веб-браузері. Скопіювати посилання в буфер обміну?
+ Посилання \"%1$d\" не можна відкрити у веб-браузері. Скопіювати посилання в буфер обміну?Переслати повідомленняВідповісти на повідомленняВимкнути сповіщення
@@ -292,7 +297,7 @@
Повідомлення пристроюЛокально згенеровані повідомленняПовідомлення у цьому чаті згенеровані на вашому пристрої для інформування про оновлення та проблеми при використанні.
- Вітаємо у Delta Chat! - Delta Chat дуже схожий на інші популярні програми обміну повідомленнями, але не передбачає централізованого контролю, відстеження або продажу вас, друзів, колег чи родини великим організаціям.\n\nТехнічно, Delta Chat - це програма електронної пошти з сучасним інтерфейсом чату. Електронна пошта у новому вбранні, якщо вам забажається 👻\n\nВикористовуйте Delta Chat з будь ким із мільярдів людей: просто використовуйте їхню електронну адресу. Одержувачам не потрібно встановлювати Delta Chat, відвідувати веб-сайти або десь реєструватись - однак, звичайно, ви можете направити їх на 👉 https://get.delta.chat
+ Виходьте на зв\'язок!\n\n🙌 Торкніться \"QR-код\" на головному екрані обох пристроїв. Виберіть \"Відсканувати QR-код\" на одному пристрої та наведіть його на інший\n\n🌍 Якщо ви не перебуваєте в одній кімнаті, відскануйте за допомогою відеодзвінка або поділіться посиланням-запрошенням зі сторінки \"Відсканувати QR-код\"\n\nПотім: Насолоджуйтесь спілкуванням у найбільшій децентралізованій мережі, яка коли-небудь існувала -- електронній пошті. І, на відміну від інших популярних додатків, без централізованого контролю, відстеження або продажу вас, друзів, колег чи сім\'ї великим організаціям.Редагувати контактЗакріпити чат
@@ -331,16 +336,16 @@
Відео чатЗапросити %1$s у відео чат?
- Це потребує сумісного додатку або сумісного браузера на обох кінцях.
+ Для цього обидві сторони повинні встановити сумісний додаток або браузер.%1$s запрошено у відео чат.Ви надіслали запрошення у відео чат.
- Торкніться щоб приєднатися
- Торкніться щоб відкрити
+ Торкніться, щоб приєднатися
+ Торкніться, щоб відкритиВідео чатВаш відео чатПриклади: https://meet.jit.si/$ROOM або basicwebrtc:https://your-server
- Якщо ввімкнено, ви можете почати відеочат із кожного чату. Потрібен сумісний додаток або браузер на обох сторонах.
- Використовуйте \"%1$s\" аби запросити інших у відеочат?\n\nПісля встановлення ви можете розпочати відеочат із кожного індивідуального чату. Це замінить попереднє налаштування для відеочату, якщо воно є.
+ Якщо ввімкнено, Ви можете почати відеочат із кожного чату. Обидві сторони повинні встановити сумісний додаток або браузер.
+ Використовувати \"%1$s\" аби запросити інших у відеочат?\n\nПісля встановлення Ви можете розпочати відеочат із кожного індивідуального чату. Це замінить попереднє налаштування для відеочату, якщо воно є.Запрошення до відео чатуВас запрошено у відео-чат, клікніть %1$s аби приєднатися.
@@ -366,7 +371,7 @@
Видалити %d повідомлення?Переслати повідомлення %1$s?
- Пересилати повідомлення у %1$d?
+ Переслати повідомлення в %1$d?Якщо експортувати вкладені файли, інші програми на вашому пристрої отримають до них доступ.\n\nПродовжити?Заблокувати цей контакт? Ви більше не будете отримувати від нього повідомлення.Розблокувати цей контакт? Ви знову зможете отримувати від нього повідомлення.
@@ -413,21 +418,22 @@
%d нових повідомлень
- Відправити повідомлення. Це нічого, якщо %1$s не використовує Delta Chat.
- У списку трансляцій одержувачі будуть отримувати повідомлення у чаті з вами в режимі тільки-для-читання.
+ Надіслати повідомлення до %1$s.
+ У списку трансляцій одержувачі будуть отримувати повідомлення в чаті з Вами в режимі тільки-для-читання.Інші побачать цю групу лише після того, як ви надішлете перше повідомлення.Рухайте для скасування
- Натисніть і утримуйте для запису голосового повідомлення, відпустіть для відправки
+ Натисніть й утримуйте для запису голосового повідомлення, відпустіть для відправкиНемає вхідних повідомлень.\nНатисніть \"+\" щоб почати новий чат.
- Ви можете спілкуватись з іншими користувачами Delta Chat та з будь якими адресами ел. пошти.
- Всі чати заархівовано.\nНатисніть \"+\" щоб почати новий чат.
+
+ Ви можете спілкуватись з іншими користувачами Delta Chat та з будь-якими адресами ел. пошти.
+ Всі чати заархівовано.\nНатисніть \"+\", щоб почати новий чат.ПоділитисяПовідомленняЗаархівованоЗапитНемає повідомлень.Повідомлення, відправлені самому собі
- Заархівовані вами чати будуть відображені тут.
+ Заархівовані Вами чати будуть відображені тут.Збережені повідомлення• Пересилайте повідомлення сюди для швидкого доступу\n\n• Робіть нотатки або голосові нагадування\n\n• Вкладайте медіа для збереження
@@ -435,8 +441,7 @@
Зберегти якСпробувати надіслати повідомлення ще раз
- Ви не можете тут писати, бо ви не в цій групі. Запитайте іншого члена групи про приєднання.
- Цей чат містить повідомлення, створені локально. Тому ви не можете писати жодних повідомлень
+ Ви не можете нічого писати, бо Ви не в цій групі. Запитайте іншого члена групи про приєднання.Надсилання повідомлень у списках розсилки поки не підтримуєтьсяНеможливо відобразити цей тип файлів: %sНе вдалося завантажити вкладення
@@ -456,6 +461,8 @@
Надіслати \"%1$s\" до…Надіслати повідомлення до...
+ Канали Webxdc в реальному часі
+ Увімкніть API реального часу Webxdc для створення прямих з\'єднань між пристроями.Показати місця у часовому проміжку
@@ -474,7 +481,7 @@
Ви впевнені, що хочете відвідати %1$s?
- Це посилання може спотворювати символи, використовуючи подібні до них символи з різних алфавітів. Перехід за посиланням %1$s приведе до %2$s, що є нормальним для нелатинських символів. Якщо ви не очікували таких символів, це посилання може бути шкідливим
+ Це посилання може спотворювати символи, використовуючи подібні до них символи з різних алфавітів. Перехід за посиланням %1$s приведе на %2$s, що є нормальним для нелатинських символів. Якщо Ви не очікували таких символів, це посилання може бути шкідливим
@@ -482,7 +489,7 @@
Шукати в чатіШукати файлиПошук чатів, контактів і повідомлень
- Запит «%s» не дав результатів
+ Запит \"%s\" не дав результатів
@@ -509,7 +516,7 @@
Відео, якими поділилися у цьому чаті, будуть відображатися тут.Аудіозаписи та голосові повідомлення, якими поділилися у цьому чаті, будуть відображатися тут.Застосунки, якими поділилися у цьому чаті, будуть відображатися тут.
- Тут відображатимуться медіафайли, якими ви ділилися в будь-якому чаті.
+ Тут відображатимуться медіафайли, якими Ви ділилися в будь-якому чаті.Попередній перегляд медіаСітка співвідношення сторін
@@ -519,7 +526,7 @@
%1$s змінили їх адресу з %2$s на %3$s
- Ви змінили вашу електронну адресу з %1$s на %2$s.\n\nЯкщо зараз ви відправите повідомлення у підтверджену групу, контакти в ній автоматично замінять вашу стару адресу на нову.\n\nНастійно рекомендується налаштувати старий аккаунт електронної пошти на пересилання всіх електронних листів на вашу нову електронну адресу. Інакше ви можете пропустити повідомлення контактів, які ще не отримали вашу нову адресу.
+ Ви змінили електронну адресу з %1$s на %2$s.\n\nЯкщо зараз Ви відправите повідомлення в підтверджену групу, контакти в ній автоматично замінять Вашу стару адресу на нову.\n\nРекомендується налаштувати старий обліковий запис електронної пошти на пересилання всіх електронних листів на Вашу нову електронну адресу. Інакше Ви можете пропустити повідомлення контактів, які ще не отримали Вашу нову адресу.
@@ -527,8 +534,9 @@
Додати другий пристрійПереконайтеся, що обидва пристрої підключено до однієї мережі Wi-FiЦе створить QR-код, який другий пристрій може сканувати, щоб скопіювати обліковий запис.
- Установіть Delta Chat на ваш інший пристрій (https://get.delta.chat)
- Запустіть Delta Chat, натисніть «Додати як другий пристрій» і відскануйте показаний тут код
+ Установіть Delta Chat на Ваш інший пристрій (https://get.delta.chat)
+
+ Запустіть Delta Chat, торкніться \"У мене вже є логін / Додати як другий пристрій\" і відскануйте код, показаний тутСкануйте, щоб налаштувати другий пристрій %1$sДодати як другий пристрій
@@ -574,12 +582,42 @@
- Чат через електронну пошту.
+
+ Почнемо!
+
+ У мене вже є логін
+
+ Класичний вхід до електронної пошти
+
+ Ваш профіль
+
+ Прочитайте Політику конфіденційності
+
+ Політика конфіденційності для %1$s
+
+ Про профілі на %1$s
+
+ Погодитися та створити профіль
+
+ Інший сервер
+ Список серверів Chatmail
+
+ Створіть профіль, щоб приєднатися до групи \"%1$s\".
+
+ Створіть профіль для спілкування з %1$s.
+
+ Бажаєте створити новий профіль і почати спілкуватися з %1$s?
+
+ Ви хочете створити новий профіль і приєднатися до групи чату \"%1$s\"?
+
+ Безпечний децентралізований чатСканувати код запрошенняУвійти
+
Увійдіть до свого облікового запису електронної пошти
+
Увійти з наявним обліковим записом електронної пошти
- Для відомих провайдерів електронної пошти додаткові налаштування встановлюються автоматично. Іноді IMAP потрібен дозвіл в веб-інтерфейсі. Проконсультуйтеся з Вашим провайдером електронної пошти або друзями для отримання допомоги.
+ Для відомих провайдерів електронної пошти додаткові налаштування встановлюються автоматично. Іноді IMAP потрібен дозвіл у веб-інтерфейсі. Проконсультуйтеся з Вашим провайдером електронної пошти або друзями для отримання допомоги.У Delta Chat немає серверів, Ваші дані залишаються на Вашому пристрої!ВхідніIMAP-логін
@@ -601,19 +639,19 @@
Ім\'я користувача SOCKS5Пароль SOCKS5Продовжити спрощене налаштування?
- Введена адреса електронної пошти підтримує спрощене налаштування (OAuth2).\n\nНа наступному кроці дозвольте, будь ласка, Delta Chat виступати у якості Вашого додатку для чату за допомогою електронної пошти.\n\nУ Delta Chat немає серверів, Ваші дані залишаються на Вашому пристрої!
+ Введена адреса електронної пошти підтримує спрощене налаштування (OAuth 2.0).\n\nНа наступному кроці дозвольте, будь ласка, Delta Chat виступати в якості Вашого додатку для чату за допомогою електронної пошти.\n\nУ Delta Chat немає серверів, Ваші дані залишаються на Вашому пристрої!Перевірки сертифікатівВкажіть дійсну адресу електронної поштиВкажіть дійсний сервер / IP-адресуВкажіть дійсний порт (1–65535)
- Вкажіть вірні адресу електронної пошти та пароль
+ Вкажіть дійсну адресу електронної пошти та парольВідновити з резервної копії
- Знайдена резервна копія «%1$s».\n\nВідновити з неї всі дані і параметри?
- Резервних копій не знайдено.\n\nПомістить резервну копію у папку «%1$s» і спробуйте знову запустити відновлення. Для установлення без відновлення параметрів натисніть «Почати спілкування».
+ Знайдена резервна копія \"%1$s\".\n\nВідновити з неї всі дані й параметри?
+ Резервних копій не знайдено.\n\nПомістіть резервну копію в папку \"%1$s\" та спробуйте знову запустити відновлення. Для встановлення без відновлення параметрів натисніть \"Почати спілкування\".
- Не вдалося увійти як «%1$s». Будь ласка, перевірте правильність адреси електронної пошти і пароля.
+ Не вдалося увійти як \"%1$s\". Будь ласка, перевірте правильність адреси електронної пошти та паролю.
- Приймати невірні сертифікати
+ Приймати недійсні сертифікатиВикористані налаштування:Перемкнути обліковий записДодати обліковий запис
@@ -631,8 +669,8 @@
Переслати...Надіслати %1$d файлів у обраний чат?\n\nФайли надсилаються незмінними в оригінальному розмірі (тобто зображення та відео не перекодовуються).
- Надіслати %1$d файлів у %2$d чати?\n\nФайли надсилаються незмінними в оригінальному розмірі (тобто зображення та відео не перекодовуються).
- Надіслати цей текст у %1$d чат?\n\n\"%2$s\"
+ Надіслати %1$d файл (файлів) у %2$d чати?\n\nФайли надсилаються незмінними в оригінальному розмірі (тобто зображення та відео не перекодовуються).
+ Надіслати цей текст у %1$d чати?\n\n\"%2$s\"Надсилання обірване через відсутність дозволів.
@@ -642,20 +680,19 @@
Ваш профільФото профілюЗаблоковані контакти
- Заблоковані вами контакти будуть відображені тут.
+ Заблоковані Вами контакти будуть відображені тут.
+
Пароль та обліковий записЗображення профілю та ім\'я будуть відображатися в чатах з іншими користувачами. Відправлена інформація не може бути видалена або відкликана.Ваше ім\'яТекст підпису
-
- Відправлено з мого Delta Chat: https://delta.chatВідправлення клавішею EnterНатискання клавіші Enter відправить текстові повідомленняЯкість вихідних медіа файлів
- Збалансовано
+ Збалансована якістьГірша якість, менший розмір
- Вібрує
+ ВібраціяБезпека екрануЗапит на блокування скріншотів у списку останніх і всередині програми
@@ -670,8 +707,8 @@
ЗвукБеззвучнийКонфіденційність
- Чати і медіа
- Системне значення за замовчуванням
+ Чати й медіа
+ За замовчуванням системиСвітлаТемна
@@ -683,14 +720,18 @@
Вимагати вимкнення персоналізації підказок клавіатуриОтримувати сповіщення про прочитанняЯкщо сповіщення про прочитання відключені, Ви не будете бачити підтвердження прочитання повідомлень іншими користувачами.
+ Сервер
+ ШифруванняУправління ключамиВикористовувати системні емодзіВимкнути вбудовану підтримку емодзіВикористовувати вбудовану в додаток камеруВбудована в додаток камера зазвичай має менше функцій ніж системна.
+ Прочитати адресну книгу системи
+ Пропозиція створювати чати з контактами з адресної книги. Деякі провайдери потребують попереднього налаштування наскрізного шифрування.Доступ додаткуЧати
- Звуки у чаті
+ Звуки в чатіРозмір шрифту повідомленняПереглянути журналЛог збережено у папку \"Завантаження\"
@@ -699,31 +740,32 @@
ІншеРезервне копіюванняЗберегти чати на зовнішній носій
- Резервне копіювання дозволяє відновлювати попередні налаштування програми під час нової установки на цьому або іншому пристрої.\n\nРезервная копія містить всі повідомлення, контакти і чати, а також параметри наскрізного Autocrypt. Після того як резервна копія буде створена, якомога швидше перенесіть її у надійне місце.
-
+ Резервне копіювання дозволяє відновлювати попередні налаштування програми під час нової установки на цьому або іншому пристрої.\n\nРезервна копія містить всі повідомлення, контакти та чати, а також параметри Autocrypt. Після створення резервної копії якомога швидше перенесіть її в надійне місце.
+
Експортувати %1$s
-
- Експортувати усі %1$d облікові записи
+
+ Експортувати всі %1$d облікові записиПочати резервне копіюванняРезервна копія успішно записана на %1$sУправління ключамиЕкспорт секретних ключів
- Експортувати секретні ключі до «%1$s»?
+ Експортувати секретні ключі до \"%1$s\"?Імпорт секретних ключів
- Імпортувати секретні ключі з «%1$s»?\n\n• Існуючі секретні ключі не будуть видалені\n\n• Останній імпортований ключ буде використаний як новий ключ за замовчуванням, якщо він не містить слова legacy у назві файлу.
- Секретні ключі успішно збережені в «%1$s».
- Секретні ключі імпортовані з «%1$s».
+ Імпортувати секретні ключі з \"%1$s\"?\n\n• Існуючі секретні ключі не будуть видалені\n\n• Останній імпортований ключ буде використаний як новий ключ за замовчуванням, якщо він не містить слова legacy у назві файлу.
+ Секретні ключі успішно збережені в \"%1$s\".
+ Секретні ключі імпортовані з \"%1$s\".ФонВикористовувати зображення за замовчуваннямВибрати з галереїПараметри IMAP-папок
- Якщо ви змінюєте цей параметр, переконайтеся, що ваш сервер та інші ваші клієнти налаштовані відповідним чином.\n\nІнакше щось може взагалі не працювати.
+ Якщо ви змінюєте цей параметр, переконайтеся, що Ваш сервер та інші Ваші клієнти налаштовані відповідним чином.\n\nІнакше щось може взагалі не працювати.Стежити за папкою «Надіслані»Відправити копію собі
- Обов’язковий при використанні цього облікового запису на кількох пристроях.
+
+ Обов’язково при використанні цього облікового запису на кількох пристроях.Автоматично пересувати до папки DeltaChat
- Чати були переміщені, щоб уникнути плутанини у папці «Вхідні».
+ Чати були переміщені, щоб уникнути плутанини в папці «Вхідні».Збирати лише з теки DeltaChat.Ігнорувати інші теки. Вимагає від вашого сервера переміщувати повідомлення чату до теки DeltaChat.Показувати звичайну пошту
@@ -748,14 +790,16 @@
Повідомлення розміром %1$s\'
- Максимум завантажень доступний до %1$s
+ Доступний для завантаження максимум до %1$sВибрати зображення профілю
- Вибрати ваше нове зображення профілю
+ Вибрати нове зображення профілюВидалити зображення профілюПоказати іконку в треїРедагувати профільВимкнути IMAP IDLEНе використовувати розширення IMAP IDLE навіть якщо сервер підтримує його. Увімкнення цієї опції затримає отримання повідомлень, вмикайте її лише для тестування.
+ Надсилати статистику розробникам Delta Chat
+
Результати пошуку
@@ -772,18 +816,24 @@
Реакції
+
+ Реакція
+
+ Ви відреагували %1$s на \"%2$s\"
+
+ %1$s відреагували %2$s на \"%3$s\"Видалити старі повідомленняВидалити повідомлення з пристроюВидалити повідомлення на сервері
- Ви бажаєте видалити %1$d повідомлень та всі щойно отримані повідомлення \"%2$s\" у майбутньому?\n\n• Це включає усі медіа\n\n• Повідомлення будуть видалені незалежно від того бачили їх чи ні\n\n• \"Збережені повідомлення\" будуть пропущені при локальному видаленні
+ Ви хочете видалити %1$d повідомлень зараз і всі нові повідомлення \"%2$s\" у майбутньому?\n\n- Це включає всі медіа\n\n- Повідомлення буде видалено незалежно від того, чи були вони переглянуті чи ні\n\n- \"Збережені повідомлення\" буде пропущено при локальному видаленні
- Ви бажаєте видалити %1$d повідомлень зараз та всі наступні повідомлення протягом %2$s?\n\n⚠️ Це стосується повідомлень електронної пошти, медіа та \"Збережених повідомлень\" у всіх серверних папках\n\n⚠️ Не використовуйте цю функцію якщо ви хочете зберегти дані на сервері\n\n⚠️ Не використовуйте цю функцію якщо ви користуєтесь іншими клієнтами електронної пошти окрім Delta Chat
+ Ви хочете видалити %1$dповідомлень зараз і всі нові повідомлення \"%2$s\" в майбутньому?\n\n⚠️ Сюди входять електронні листи, медіа та \"Збережені повідомлення\" у всіх папках сервера\n\n⚠️ Не використовуйте цю функцію, якщо Ви хочете зберегти дані на сервері\n\n⚠️ Не використовуйте цю функцію, якщо користуєтеся ще й іншими поштовими клієнтами крім Delta Chat
- Це стосується повідомлень електронної пошти, медіа та \"Збережених повідомлень\" у всіх серверних папках. Не використовуйте цю функцію якщо ви хочете зберегти дані на сервері або якщо ви користуєтесь іншими клієнтами електронної пошти окрім Delta Chat.
- Я все розумію, видалити усі повідомлення
+ Це стосується повідомлень електронної пошти, медіа та \"Збережених повідомлень\" у всіх серверних папках. Не використовуйте цю функцію, якщо хочете зберегти дані на сервері або якщо користуєтесь іншими клієнтами електронної пошти крім Delta Chat.
+ Я все розумію, видалити всі повідомленняОдразуЧерез 30 секунд
@@ -798,103 +848,110 @@
Через 1 рік
- Автошифрування
- Autocrypt – новий і відкритий протокол встановлення наскрізного шифрування для електронної пошти.\n\nНеобхідні параметри шифрування призначаються автоматично і їх можна передавати між своїми пристроями, використовуючи повідомлення з параметрами Autocrypt.
- Надіслати повідомлення з параметрами Autocrypt
- «Повідомлення з параметрами Autocrypt» слугує для безпечної передачі параметрів наскрізного шифрування між власними додатками для роботи з електронною поштою, що підтримують протокол Autocrypt.\n\nЦі параметри шифруються з використанням спеціального інсталяційного коду, що показаний тут і повинен бути введений у налаштовуємому додатку.
- Надіслати повідомлення з параметрами Autocrypt
- Параметри шифрування були Вам надіслані. Відкрийте інсталяційне повідомлення у налаштовуємій програмі, після чого вона запросить інсталяційний код. Введіть наступний код.\n\nПісля завершення налаштування програма зможе використовувати Autocrypt.
+
+ Autocrypt
+
+ Autocrypt – новий і відкритий протокол встановлення наскрізного шифрування для електронної пошти.\n\nНеобхідні параметри шифрування призначаються автоматично та їх можна передавати між своїми пристроями, використовуючи повідомлення з Autocrypt.
+ Надіслати повідомлення з налаштуваннями Autocrypt
+ Повідомлення з налаштуваннямм Autocrypt слугує безпечній передачі параметрів наскрізного шифрування між власними додатками для роботи з електронною поштою, що підтримують протокол Autocrypt.\n\nЦі параметри шифруються з використанням спеціального інсталяційного коду, що показаний тут і має бути введений на іншому пристрої.
+ Надіслати повідомлення з налаштуваннями Autocrypt
+ Налаштування було Вам надіслано. Перейдіть на інший пристрій і відкрийте повідомлення про налаштування. У Вас має з\'явитися запит на введення коду налаштування. Введіть наступні цифри:Віддавати перевагу наскрізному шифруванню
- Повідомлення з параметрами Autocrypt
- Це повідомлення з параметрами Autocrypt, що слугує для передачі параметрів наскрізного шифрування між пристроями.\n\nДля розшифрування параметрів відкрийте це повідомлення у додатку, що підтримує Autocrypt і введіть інсталяційний код, показаний на початковому пристрої.
- Це повідомлення з параметрами Autocrypt, що слугує для передавання параметрів наскрізного шифрування між пристроями.\n\nДля розшифрування і використання параметрів відкрийте це повідомлення.
- Повідомлення з параметрами Autocrypt
+ Повідомлення з налаштуваннями Autocrypt
+ Це повідомлення з налаштуваннями Autocrypt, що слугує для передачі параметрів наскрізного шифрування між пристроями.\n\nДля розшифрування параметрів відкрийте це повідомлення в додатку, що підтримує Autocrypt і введіть інсталяційний код, показаний на початковому пристрої.
+ Це повідомлення з налаштуваннями Autocrypt, що слугує для передавання параметрів наскрізного шифрування між пристроями.\n\nДля розшифрування й використання параметрів відкрийте це повідомлення.
+ Повідомлення з налаштуваннями AutocryptВведіть інсталяційний код, що показаний на іншому пристрої.Параметри наскрізного шифрування успішно передані. Цей пристрій буде використовувати такі ж параметри Autocrypt, як і інший.Повторити
- Невірний інсталяційний код. Спробуйте ввести його ще раз.\n\nЯкщо інсталяційний код загублений, надішліть з іншого пристрою ще одне повідомлення з параметрами Autocrypt.
+ Неправильний інсталяційний код. Спробуйте ще раз.\n\nЯкщо інсталяційний код загублений, надішліть з іншого пристрою ще одне повідомлення з налаштуваннями Autocrypt.Сповіщення про прочитання.
- Це підтвердження того, що повідомлення «%1$s» було відкрито на пристрої одержувача. Дане підтвердження не означає, що повідомлення було прочитано.
+ Це підтвердження того, що повідомлення \"%1$s\" було відкрито на пристрої одержувача. Дане підтвердження не означає, що повідомлення було прочитано.
+ Це повідомлення неможливо розшифрувати.\n\n- Можливо, допоможе просто відповісти на це повідомлення і попросити відправника надіслати повідомлення ще раз.\n\n- Якщо ви щойно переінсталювали Delta Chat, то краще за все переналаштувати Delta Chat зараз і вибрати \"Додати як другий пристрій\" або імпортувати резервну копію.Невідомий відправник для цього чату. Дивіться \"Інформацію\" для деталей.Повідомлення від %1$s
- Неможлива надіслати повідомлення до %1$s.
+ Неможливо надіслати повідомлення до %1$s.
- Ви змінили назву групи з «%1$s» на «%2$s».
+ Ви змінили назву групи з \"%1$s\" на \"%2$s\".
- %3$s змінили назву групи з «%1$s» на «%2$s».
+ %3$s змінив (-ла) назву групи з \"%1$s\" на \"%2$s\".Ви змінили зображення групи.
- %1$s змінили зображення групи.
+ %1$s змінив (-ла) зображення групи.
+
+ Додано учасника %1$s.Ви додали учасника %1$s.
- %2$s додали учасника %1$s.
+ %2$s додав (-ла) учасника %1$s.Ви видалили учасника %1$s.
- %2$s видалили учасника %1$s.
+ %2$s видалив (-ла) учасника %1$s.Ви залишили групу.
- %1$s залишили групу.
+ %1$s залишив (-ла) групу.Ви видалили зображення групи.
- %1$s видалили зображення групи.
+ %1$s видалив (-ла) зображення групи.Ви увімкнули стримінг геоданих.
- %1$s увімкнули стримінг геоданих.
+ %1$s увімкнув (-ла) стримінг геоданих.Ви вимкнули таймер зникнення повідомлень.
- %1$s вимкнули таймер зникнення повідомлень.
+ %1$s вимкнув (-ла) таймер зникнення повідомлень.Ви встановили таймер зникнення повідомлень на %1$s сек.
- %2$s встановили таймер повідомлень, що зникають на %1$s сек.
+ %2$s встановив (-ла) таймер повідомлень, що зникають на %1$s сек.Ви встановили таймер зникнення повідомлень на 1 хвилину.
- %1$s встановили таймер повідомлень, що зникають на 1 хвилину.
+ %1$s встановив (-ла) таймер зникнення повідомлень на 1 хвилину.Ви встановили таймер зникнення повідомлень на 1 годину.
- %1$s встановили таймер повідомлень, що зникають на 1 годину.
+ %1$s встановив (-ла) таймер зникнення повідомлень на 1 годину.Ви встановили таймер зникнення повідомлень на 1 день.
- %1$s встановили таймер повідомлень, що зникають на 1 день.
+ %1$s встановив (-ла) таймер зникнення повідомлень на 1 день.Ви встановили таймер зникнення повідомлень на 1 тиждень.
- %1$s встановили таймер повідомлень, що зникають на 1 тиждень.
+ %1$s встановив (-ла) таймер зникнення повідомлень на 1 тиждень.Ви встановили таймер зникнення повідомлень на %1$s хвилин.
- %2$s встановили таймер повідомлень, що зникають на %1$s хвилин.
+ %2$s встановив (-ла) таймер зникнення повідомлень на %1$s хвилин.Ви встановили таймер зникнення повідомлень на %1$s годин.
- %2$s встановили таймер повідомлень, що зникають на %1$s годин.
+ %2$s встановив (-ла) таймер зникнення повідомлень на %1$s годин.Ви встановили таймер зникнення повідомлень на %1$s днів.
- %2$s встановили таймер повідомлень, що зникають на %1$s днів.
+ %2$s встановив (-ла) таймер зникнення повідомлень на %1$s днів.Ви встановили таймер зникнення повідомлень на %1$s тижнів.
- %2$s встановили таймер повідомлень, що зникають на %1$s тижнів.
+ %2$s встановив (-ла) таймер зникнення повідомлень на %1$s тижнів.
- %1$s відправили повідомлення з іншого пристрою.
+ %1$s відправив (-ла) повідомлення з іншого пристрою.Відтепер повідомлення гарантовано будуть мати наскрізне шифрування. Торкніться, щоб дізнатися більше.
- Тепер гарантовано, що всі повідомлення в цьому чаті мають наскрізне шифрування.\n\nНаскрізне шифрування зберігає конфіденційність повідомлень між вами та вашими партнерами по чату. Навіть ваш постачальник послуг електронної пошти не може їх прочитати.
- %1$s відправили повідомлення з іншого пристрою. Торкніться, щоб дізнатися більше.
- Наскрізне шифрування більше не гарантується, ймовірно, через те, що %1$s перевстановили Delta Chat або надіслали повідомлення з іншого пристрою.\n\nВи можете зустрітися з ними особисто та знову відсканувати їхній QR-код, щоб відновити гарантоване наскрізне шифрування.
+ Тепер гарантовано, що всі повідомлення в цьому чаті матимуть наскрізне шифрування.\n\nНаскрізне шифрування зберігає конфіденційність повідомлень між Вами та партнерами по чату. Навіть Ваш провайдер електронної пошти не може їх прочитати.
+ %1$s відправив (-ла) повідомлення з іншого пристрою. Торкніться, щоб дізнатися більше.
+ Наскрізне шифрування більше не гарантується, імовірно, через те, що %1$s перевстановив (-ла) Delta Chat або надіслав (-ла) повідомлення з іншого пристрою.\n\nВи можете зустрітися з ним (нею) особисто та знову відсканувати його (її) QR-код, щоб відновити гарантоване наскрізне шифрування.
+ ⚠️ %1$s вимагає наскрізного шифрування, яке ще не налаштоване для цього чату. Натисніть, щоб дізнатися більше.
+ Щоб установити наскрізне шифрування, Ви можете зустрітися з контактами особисто та відсканувати їхній QR-код, щоб додати їх.Дізнатися більшеВи видалили чат \"Збережені повідомлення\".\n\nℹ️ Аби використовувати функцію \"Збережені повідомлення\" знову, створіть новий чат самі із собою.
- ⚠️ Сховище вашого провайдера електронної пошти майже заповнено, вже використовується %1$s%%.\n\nМожливо, ви не зможете отримати повідомлення, коли сховище буде заповнене.\n\n👉 Перевірте, чи можна видалити старі дані у веб -інтерфейсі провайдера та включіть \"Налаштування / Видалити старі повідомлення\". Ви можете будь-коли перевірити своє поточне використання сховища в \"Налаштування / Підключення\".
+ ⚠️ Сховище вашого провайдера електронної пошти майже заповнено, уже використовується %1$s%%.\n\nМожливо, Ви не зможете отримувати повідомлення, коли сховище буде заповнене.\n\n👉 Перевірте, чи можна видалити старі дані у веб-інтерфейсі провайдера та ввімкніть \"Налаштування / Видалити старі повідомлення\". Ви можете будь-коли перевірити своє поточне використання сховища в \"Налаштування / Підключення\".
- ⚠️ Дата і час на вашому пристрої видаються неточними (%1$s).\n\nНалаштуйте свій годинник ⏰🔧 для правильного отримання ваших повідомлень.
- ⚠️ Ваша версія Delta Chat може бути застарілою.\n\nЦе може спричинити проблеми, оскільки ваші співрозмовники в чаті використовують новіші версії, а вам не вистачає найновіших функцій 😳 \nПеревірте оновлення на https://get.delta.chat або у вашому магазині додатків.
+ ⚠️ Дата й час на вашому пристрої видаються неточними (%1$s).\n\nНалаштуйте свій годинник ⏰🔧 для правильного отримання повідомлень.
+ ⚠️ Ваша версія Delta Chat може бути застарілою.\n\nЦе може спричинити проблеми, оскільки Ваші співрозмовники в чаті використовують новіші версії, а Вам не вистачає найновіших функцій 😳 \nПеревірте оновлення на https://get.delta.chat або в магазині додатків. Введіть захисний код, щоб продовжити.
@@ -904,64 +961,69 @@
Завантажити зображення QR-кодуСканувати QR-кодНаведіть камеру на QR-код
+ Піднесіть QR-код до камериНеможливо декодувати QR-кодПриєднатися до групи «%1$s»?Відсканований відбиток не збігається з останнім відомим відбитком %1$s
- QR-код містить відбиток ключа, але не містить адресу електронної пошти.\n\nДля перевірки автентичності з використанням альтернативного каналу зв\'язку слід спочатку встановити з одержувачем захищене з\'єднання.
+ QR-код містить відбиток, але не містить адресу електронної пошти.\n\nДля перевірки автентичності з використанням альтернативного каналу зв\'язку слід спочатку встановити з одержувачем захищене з\'єднання.Текст з QR-коду:\n\n%1$sURL з QR-коду:\n\n%1$sВідбиток
- Цей QR-код можуть сканувати інші, щоб зв’язатися з вами.\n\nВи можете деактивувати QR-код і знову активувати його, відсканувавши повторно.
+ Цей QR-код можуть сканувати інші, щоб зв’язатися з Вами.\n\nВи можете деактивувати QR-код і знову активувати його, відсканувавши повторно.Цей QR-код можуть сканувати інші, щоб приєднатися до групи \"%1$s\".\n\nВи можете деактивувати QR-код і знову активувати його, відсканувавши повторно.Деактивувати QR-код
- Цей QR-код можуть сканувати інші, щоб зв’язатися з вами.\n\nQR-код неактивний на цьому пристрої.
+ Цей QR-код можуть сканувати інші, щоб зв’язатися з Вами.\n\nQR-код неактивний на цьому пристрої.Цей QR-код можуть сканувати інші, щоб приєднатися до групи \"%1$s\".\n\nQR-код неактивний на цьому пристрої.Активувати QR-кодQR-код запрошення%1$s приєднався(-лася).
- %1$s перевірений(-а).
+ %1$s перевірено.%1$s приєднався(-лася) до групи.QR-код запрошення
- Відскануйте код, щоб приєднатися до групи «%1$s».
+ Відскануйте код, щоб приєднатися до групи \"%1$s\".QR-код запрошенняВідскануйте код, щоб спілкуватись з %1$s
- Відсутнє інтернет з\'єднання, не можу налаштувати QR-код.
+ Відсутнє інтернет з\'єднання, не вдалося налаштувати QR-код.Створити нову електронну адресу на \"%1$s\" та увійти у неї?Створити нову електронну адресу на \"%1$s\" та увійти у неї?\n\nВаш поточний обліковий запис не буде видалено. Використовуйте \"Перемкнути обліковий запис\".
- Вхід успішний — ваша ел. адреса %1$s\n\nЯкщо ви бажаєте, ви можете ввести ім\'я та аватар.
- Зісканований QR-код не може бути використаний для створення нового облікового запису.
- Зісканований QR-код для створення нового облікового запису. Ви можете зісканувати QR-код коли налаштовуєте нову інсталяцію.
-
+ Встановіть ім’я, яке зможуть розпізнати Ваші контакти. Ви також можете встановити зображення профілю.
+ Будь ласка, введіть ім\'я.
+ Вісканований QR-код не може бути використаний для створення нового облікового запису.
+
+ Відсканований QR-код призначений для створення нового облікового запису. Ви можете відсканувати QR-код під час нового налаштування Delta Chat.
+
Увійти до \"%1$s\"?
-
- Увійти до \"%1$s\"?\n\nВаш обліковий запис, що вже існує, не буде видалено. Використовуйте \"Перемкнути обліковий запис\" для переключання між вашими обліковими записами.
+
+ Увійти до \"%1$s\"?\n\nВаш обліковий запис, що вже існує, не буде видалено. Використовуйте \"Перемкнути обліковий запис\" для переключання між обліковими записами.
- %1$s запросили вас приєднатися до цієї групи.\n\nОчікуємо на відповідь від пристрою %2$s…
+ %1$s запросив (-ла) Вас приєднатися до цієї групи.\n\nОчікуємо на відповідь від пристрою %2$s…%1$s відповіли, очікуємо на додавання до групи…
- %1$s підтверджений(-а)
- Неможливо підтвердити %1$s
+ Встановлення гарантованого наскрізного шифрування, будь ласка, зачекайте...
+ Ще не вдалося встановити гарантоване наскрізне шифрування, але ви вже можете надсилати повідомлення.
+ %1$s представив (-ла).
+ Не вдається встановити гарантоване наскрізне шифрування з %1$s
- Підтверджено %1$s
- Підтверджено вами
+ Представлений (-а) %1$s
+ Представлений (-а) ВамиЗмінені параметри для %1$s
- Щоб гарантувати наскрізне шифрування, ви можете додавати до цієї групи лише контакти із зеленою галочкою.\n\nВи можете зустрітися з контактами особисто та відсканувати їхній QR-код, щоб представити їх.
+ Щоб гарантувати наскрізне шифрування, Ви можете додавати до цієї групи лише контакти із зеленою галочкою.\n\nВи можете зустрітися з контактами особисто та відсканувати їхній QR-код, щоб представити їх.URL з QR-коду скопійовано в буфер
- Виберіть чат, якому потрібно надіслати повідомлення
+ Виберіть чат, куди потрібно надіслати повідомлення
- %1$s вже містить чернетку повідомлення, бажаєте його замінити?
+ %1$s уже містить чернетку повідомлення, бажаєте її замінити?неможливо декодувати посилання mailto: %1$sВідхилитиВідповістиНове повідомлення
- З\'єднання у фоновому режимі увімкнено
+ З\'єднання у фоновому режимі ввімкненоВисокийМаксимальнийІм\'я та повідомлення
@@ -969,20 +1031,22 @@
Без імені або повідомленняСповіщення вимкненоНові повідомлення
- %1$d повідомлень з %2$d чатів
+
+ У вас нові повідомлення
+ %1$d повідомлень в %2$d чатахПотрібен дозвілПродовжити
- Для зйомки фотографій або відео додатку потрібен дозвіл на використання камери, але зараз його не надано. Для надання дозволу перейдіть у системне меню налаштувань, у розділі «Додатки» знайдіть Delta Chat і дозвольте доступ до камери.
- Для надсилання голосових повідомлень додатку потрібен дозвіл на використання мікрофону, але зараз його не надано. Для надання дозволу перейдіть у системне меню налаштувань, у розділі «Додатки» знайдіть Delta Chat і дозвольте доступ до мікрофону.
- Для збереження або передавання фотографій перейдіть до налаштувань додатку, оберіть \"Дозволи\" та включіть \"Сховище\"
- Щоб передати місцезнаходження, додатку потрібен доступ до геоданих пристрою, але зараз його не надано. Для надання доступу перейдіть у системне меню налаштувань, у розділі «Додатки» знайдіть Delta Chat, виберіть пункт «Права доступу» і дозвольте доступ до місцезнаходження пристрою.
+ Для зйомки фотографій або відео додатку потрібен дозвіл на використання камери, але зараз його не надано. Для надання дозволу перейдіть у системне меню налаштувань, у розділі \"Додатки\" знайдіть Delta Chat і надайте доступ до камери.
+ Для надсилання голосових повідомлень додатку потрібен дозвіл на використання мікрофону, але зараз його не надано. Для надання дозволу перейдіть у системне меню налаштувань, у розділі \"Додатки\" знайдіть Delta Chat і надайте доступ до мікрофону.
+ Для збереження або передавання фотографій перейдіть до налаштувань додатку, оберіть \"Дозволи\" та ввімкніть \"Сховище\"
+ Щоб передати місцезнаходження, додатку потрібен доступ до геоданих пристрою, але зараз його не надано. Для надання доступу перейдіть у системне меню налаштувань, у розділі \"Додатки\" знайдіть Delta Chat, оберіть \"Дозволи\" і надайте доступ до місцезнаходження пристрою.Щоб отримувати сповіщення зайдіть у \"Налаштування системи / Застосунки / Delta Chat\" і увімкніть \"Сповіщення\"
- Малюйте де завгодно для розмиття
+ Малюйте будь-де для розмиттяДодати текстРозмитиМаркер
@@ -1008,11 +1072,11 @@
КопіюватиВставитиПереглянути
- Поплавок зверху
+ Виводити на перший планРозробникІнструменти розробникаДопомога
- Дізнайтеся більше про Delta Chat
+ Дізнатися більше про Delta ChatПриєднатися до розробки на GitHubПовідомити про проблемуПро Delta Chat
@@ -1023,7 +1087,7 @@
Інформація про шифруванняВидалити повідомленняБільше інформації
- d MMMM
+ MMMM DВидалитиЗберегтиІм\'я
@@ -1031,18 +1095,19 @@
Експорт резервної копіїНалаштування Autocrypt успішно передані!Видалити цей обліковий запис? При цьому будуть видалені всі дані, включно з параметрами наскрізного шифрування, списками контактів, чатами, повідомленнями та медіафайлами. Цю дію не можна буде скасувати.
+
E-Mail: %1$s\nРозмір: %2$s\nІдентиф. аккаунту: %3$s
- Надіслано
- Отримано
+ надіслано
+ отриманоВідкрити папку журналівВідкрити поточний файл журналу
- Іконку в треї не можна вимкнути, оскільки Delta Chat було запущено за допомогою параметра --minimized.
+ Іконку в треї не можна вимкнути, оскільки Delta Chat було запущено за допомогою параметра --minimized.Пропозицій щодо написання не знайдено.Показати вікно
- Підтримка SOCKS5 наразі експериментальна. Використовуйте її на власний ризик. Якщо ви введете адресу в поле \"e-mail\", буде здійснено запит до DNS який не буде тунельовано через SOCKS5.
+ Підтримка SOCKS5 наразі експериментальна. Використовуйте її на власний ризик. Якщо Ви введете адресу в поле \"e-mail\", буде здійснено запит до DNS, який не буде тунельовано через SOCKS5.
- Прив\'язки клавіш
+ Сполучення клавішПереключитися між чатамиПрокрутити повідомлення
@@ -1059,14 +1124,14 @@
Статус доставки: ЧернеткаСтатус доставки: ДоставленоСтатус доставки: Прочитано
- Невірний статус доставки
+ Недійсний статус доставкиДії з повідомленнямПопередній перегляд фону
- Активовано зникнення повідомлень
+ Зникнення повідомлень увімкненоПрипинити надсилати геодані
- Після запису двічі торкніться, щоб надіслати. Щоб викинути запис потріть двома пальцями.
+ Після запису двічі торкніться для відправки. Щоб скинути запис, проведіть двома пальцями.Двічі торкніться, щоб переглянути деталі підключення.Немає підключення до Інтернету, не вдалося ввійти.Обліковий запис не налаштовано.
@@ -1076,40 +1141,49 @@
Відкрити налаштуванняІмпорт контактів з пристрою
- Щоб спілкуватися з контактами зі свого пристрою, відкрийте «Налаштування» та ввімкніть «Контакти».
+ Щоб спілкуватися з контактами з пристрою, відкрийте \"Налаштування\" та ввімкніть \"Контакти\".Вимкнено в Delta ChatВимкнено в налаштуваннях системи
- «Фонове оновлення додатка» вимкнено в налаштуваннях системи
+ \"Фонова активність додатку\" вимкнена в налаштуваннях системи
- Запізнюється
- В середньому %1$d хвилин
- В середньому %1$d годин
+ Затримка
+ У середньому %1$d хвилин
+ У середньому %1$d годинПеревірено о %1$s
- Застосунки, отримані або надіслані у цьому чаті, будуть відображатися тут. \"Файли\" відображають щойно завантажені застосунки.
+ Додатки, отримані або надіслані у цьому чаті, будуть відображатися тут. \"Файли\" відображають щойно завантажені додатки.
- Натисніть кнопку поділитися
- Виберіть «Додати на головний екран», щоб додати застосунок на головний екран.
+ Натисніть кнопку \"Поділитися\"
+ Виберіть \"Додати на головний екран\", щоб додати застосунок на головний екран.Delta Chat використовує вашу камеру для знімання та надсилання фото та відео, а також для сканування QR-кодів.
- Delta Chat використовує ваші контакти аби показати список адрес ел.пошти на які ви можете написати. Delta Chat не має сервера, тож ваші контакти нікуди не надсилаються.
- Delta Chat потребує дозволу на доступ до геоданих щоб ділитися вашим місцезнаходженням на протязі часу який ви встановили в налаштуваннях місцезнаходження.
- Delta Chat потребує дозволу на доступ до геоданих щоб ділитися вашим місцезнаходженням на протязі часу який ви встановили в налаштуваннях місцезнаходження.
- Delta Chat використовує ваш мікрофон для запису і надсилання голосових повідомлень та відео зі звуком.
- Delta Chat дасть вам обрати які фото з вашої бібліотеки надіслати.
- Delta Chat хоче зберігати зображення у вашу фото-бібліотеку.
+ Delta Chat використовує Ваші контакти аби показати список адрес ел.пошти, на які Ви можете написати. Delta Chat не має серверів, тож Ваші контакти нікуди не надсилаються.
+ Delta Chat потребує дозволу на доступ до геоданих, щоб ділитися місцезнаходженням протягом часу, який Ви встановили в налаштуваннях місцезнаходження.
+ Delta Chat потребує дозволу на доступ до геоданих, щоб ділитися вашим місцезнаходженням протягом часу, який Ви встановили в налаштуваннях місцезнаходження.
+ Delta Chat використовує Ваш мікрофон для запису й надсилання голосових повідомлень та відео зі звуком.
+ Delta Chat дасть Вам обрати, які фото з Вашої бібліотеки надіслати.
+ Delta Chat хоче зберігати зображення до Вашої фото-бібліотеки.
- Фонові сповіщення
- Використовує фонове з\'єднання з вашим сервером та потребує ігнорування оптимізації батареї.
- Для підтримки з\'єднання з вашим сервером електронної пошти і отримання повідомлень у фоновому режимі, вимкніть оптимізації батареї на наступному кроці.\n\nDelta Chat використовує менше ресурсів і намагається не витрачати вашу батарею.
+ Миттєва доставка
+ Використовувати Push-сервіс
+ Надійні push-сповіщення для Chatmail-серверів
+ Вимкнути використання Push-сервісу?\n\nЦе може призвести до затримки сповіщень.
+ Використовувати фонове підключення
+ Потребує ігнорування оптимізації батареї, використовуйте, якщо Push-сервіс недоступний
+ Примусове фонове підключення
+ Призводить до постійного сповіщення
+
+ Для підтримки з\'єднання з Вашим сервером електронної пошти й отримання повідомлень у фоновому режимі вимкніть оптимізацію батареї на наступному кроці.\n\nDelta Chat використовує небагато ресурсів і намагається не витрачати Вашу батарею.
- Надійне фонове з\'єднання
- Потребує перманентного сповіщенняНатисніть тут, щоб отримувати повідомлення, коли Delta Chat знаходиться у фоновому режимі.
- Ви вже дозволили Delta Chat отримувати повідомлення у фоні.\n\nЯкщо повідомлення досі не приходять у фоні, перевірте налаштування вашої системи.
+ Ви вже дозволили Delta Chat отримувати повідомлення у фоновому режимі.\n\nЯкщо повідомлення досі не приходять у фоновому режимі, перевірте налаштування системи.
-
-
+
+ Що нового:\n\n❤️ Так! Це було довгоочікувано: Довге натискання на повідомлення, щоб відреагувати\n\n🔗 Якщо ви не можете сканувати QR-коди, діліться ними як посилання-запрошення\n\n🔵 Непрочитані повідомлення всіх акаунтів тепер підраховуються і показуються в заголовку\n\n... і ТОННИ виправлень... %1$s\n\nДопомагайте покращувати додаток: Використовуйте \"Налаштування / Додатково / Надсилати статистику\", щоб допомогти розробникам краще оптимізувати додаток для реального використання. Ви можете переглянути дані перед відправкою
+ Що нового:\n\n❤️ Так! Це було довгоочікувано: Довге натискання на повідомлення, щоб відреагувати\n\n🫸 PUSH-сповіщення, якщо підтримується провайдерами, як https://nine.testrun.org\n\n🔗 Якщо ви не можете відсканувати QR-коди, діліться ними як посиланнями-запрошеннями\n\n... і ТОННИ виправлень ... %1$s
+ Новий онбордінг 🐣 та багато іншого:\n\n⚡️ Підпишіться на безпечні сервери швидкої пошти (https://delta.chat/chatmail) або використовуйте класичні сервери електронної пошти\n\n👉 PUSH-сповіщення для будь-якого сервера чату\n\n👤 Безпечно підключайте друзів через \"Прикріпити контакти\"\n\n🥰 Реагуйте будь-якими емодзі\n\n📌 Прикріплюйте чати прямо з пошуку ... та багато іншого на %1$s
+ Новий онбордінг 🐣 та багато іншого:\n\n⚡️ Підпишіться на безпечні швидкі chatmail-сервери (https://delta.chat/chatmail) або використовуйте класичні сервери електронної пошти\n\n👉 PUSH-повідомлення для будь-якого сервера чату\n\n👤 Отримуйте \"Прикріплені контакти\" та з\'єднуйтеся з друзями\n\n🥰 Швидший вибір реакції ... та багато іншого на %1$s
+
diff --git a/res/values-v19/colors.xml b/src/main/res/values-v19/colors.xml
similarity index 100%
rename from res/values-v19/colors.xml
rename to src/main/res/values-v19/colors.xml
diff --git a/res/values-v19/themes.xml b/src/main/res/values-v19/themes.xml
similarity index 100%
rename from res/values-v19/themes.xml
rename to src/main/res/values-v19/themes.xml
diff --git a/res/values-v29/arrays.xml b/src/main/res/values-v29/arrays.xml
similarity index 100%
rename from res/values-v29/arrays.xml
rename to src/main/res/values-v29/arrays.xml
diff --git a/res/values-vi/strings.xml b/src/main/res/values-vi/strings.xml
similarity index 96%
rename from res/values-vi/strings.xml
rename to src/main/res/values-vi/strings.xml
index cd427b855..c80d14669 100644
--- a/res/values-vi/strings.xml
+++ b/src/main/res/values-vi/strings.xml
@@ -1,5 +1,5 @@
-
+Delta ChatOK
@@ -270,7 +270,6 @@
Tin nhắn thiết bịTin nhắn được tạo cục bộTin nhắn trong cuộc trò chuyện này được tạo trên thiết bị của bạn để thông báo về các bản cập nhật ứng dụng và sự cố trong quá trình sử dụng.
- Chào mừng bạn đến với Delta Chat! – Delta Chat có giao diện giống như các ứng dụng nhắn tin phổ biến khác nhưng không liên quan đến việc kiểm soát tập trung, theo dõi hoặc bán bạn, bạn bè, đồng nghiệp hoặc gia đình cho các tổ chức lớn.\n\nVề mặt kỹ thuật, Delta Chat là một ứng dụng e-mail hiện đại giao diện trò chuyện. Gửi email trong bộ váy mới nếu bạn muốn 👻\n\nSử dụng Delta Chat với bất kỳ ai trong số hàng tỷ người: chỉ cần sử dụng địa chỉ e-mail của họ. Người nhận không cần cài đặt Delta Chat, truy cập trang web hoặc đăng ký ở bất kỳ đâu - tuy nhiên, tất nhiên, nếu họ thích, bạn có thể chỉ họ tới 👉 https://get.delta.chatChỉnh sửa liên hệGhim trò chuyện
@@ -370,12 +369,13 @@
%d tin nhắn mới
- Gửi tin nhắn tới %1$s; họ thậm chí có thể nhận được nó mà không cần Delta Chat.
+ Gửi tin nhắn tới %1$s.Trong danh sách phát sóng, người nhận sẽ nhận được tin nhắn trong cuộc trò chuyện chỉ đọc với bạn.Những người khác sẽ chỉ nhìn thấy nhóm này sau khi bạn gửi tin nhắn đầu tiên.Trượt để hủyNhấn và giữ để ghi tin nhắn thoại, thả ra để gửiHộp thư đến trống.\nNhấn \"+\" để bắt đầu cuộc trò chuyện mới.
+
Bạn có thể trò chuyện với những người dùng Delta Chat khác và với bất kỳ địa chỉ e-mail nào.Tất cả các cuộc trò chuyện đã được lưu trữ.\nNhấn \"+\" để bắt đầu cuộc trò chuyện mới.Chia sẻ với
@@ -393,7 +393,6 @@
Thử gửi lại tin nhắnBạn phải ở trong nhóm này để gửi tin nhắn. Để tham gia, hãy hỏi thành viên khác.
- Cuộc trò chuyện này chứa các tin nhắn được tạo cục bộ; việc viết bị vô hiệu hóa.Gửi tin nhắn trong danh sách gửi thư chưa được hỗ trợKhông thể hiển thị loại tệp này: %sKhông tải được tệp đính kèm
@@ -413,7 +412,6 @@
Gửi \"%1$s\" tới…Gửi tin nhắn tới…
-
Hiển thị vị trí trong khung thời gianHiển thị dấu vết
@@ -485,6 +483,7 @@
Đảm bảo cả hai thiết bị đều sử dụng cùng một Wi-Fi hoặc mạngThao tác này sẽ tạo mã QR mà thiết bị thứ hai có thể quét để sao chép tài khoản.Cài đặt Delta Chat trên thiết bị khác của bạn (https://get.delta.chat)
+
Bắt đầu Delta Chat, nhấn vào “Thêm làm thiết bị thứ hai” và quét mã được hiển thị ở đâyQuét để thiết lập thiết bị thứ hai cho %1$s
@@ -530,11 +529,11 @@
%1$s trong tổng số %2$s đã được sử dụng
-
- Trò chuyện qua E-Mail.Quét mã mờiĐăng nhập
+
Đăng nhập vào tài khoản E-Mail của bạn
+
Đăng nhập bằng tài khoản e-mail hiện cóĐối với các nhà cung cấp e-mail đã biết, cài đặt bổ sung sẽ được thiết lập tự động. Đôi khi IMAP cần được bật trong cài đặt web. Hãy tham khảo nhà cung cấp e-mail hoặc bạn bè của bạn để được trợ giúp.Không có máy chủ Delta Chat, dữ liệu của bạn vẫn còn trên thiết bị của bạn.
@@ -600,13 +599,12 @@
Ảnh hồ sơLiên hệ bị chặnCác liên hệ bị chặn sẽ xuất hiện ở đây.
+
Mật khẩu và tài khoảnẢnh hồ sơ, tên và chữ ký của bạn sẽ được gửi cùng với tin nhắn của bạn khi giao tiếp với người dùng khác.Tên của bạnVăn bản chữ ký
-
- Đã gửi bằng Delta Chat Messenger của tôi: https://delta.chatNhập khóa gửiNhấn phím Enter sẽ gửi tin nhắn văn bảnChất lượng phương tiện truyền thông đi
@@ -657,9 +655,9 @@
Sao lưuSao lưu cuộc trò chuyện vào bộ nhớ ngoàiBản sao lưu giúp bạn thiết lập cài đặt mới trên thiết bị này hoặc trên thiết bị khác.\n\nBản sao lưu sẽ chứa tất cả tin nhắn, danh bạ và cuộc trò chuyện cũng như thiết lập Autocrypt hai đầu của bạn. Giữ tập tin sao lưu ở nơi an toàn hoặc xóa nó càng sớm càng tốt.
-
+
Xuất %1$s
-
+
Xuất tất cả tài khoản %1$dBắt đầu sao lưuSao lưu được ghi thành công vào \"%1$s\".
@@ -678,6 +676,7 @@
Nếu bạn thay đổi tùy chọn này, hãy đảm bảo rằng máy chủ và các máy khách khác của bạn được cấu hình tương ứng.\n\nNếu không, mọi thứ có thể không hoạt động.Xem thư mục đã gửiGửi bản sao cho chính mình
+
Bắt buộc khi sử dụng tài khoản này trên nhiều thiết bị.Tự động di chuyển đến Thư mục DeltaChatCác cuộc trò chuyện được di chuyển để tránh làm lộn xộn Hộp thư đến
@@ -713,7 +712,6 @@
Chỉnh sửa hồ sơTắt IMAP IDLEKhông sử dụng tiện ích mở rộng IMAP IDLE ngay cả khi máy chủ hỗ trợ nó. Bật tùy chọn này sẽ trì hoãn việc truy xuất tin nhắn, chỉ bật nó để kiểm tra.
-
Kết quả tìm kiếmKhông tìm thấy emoji nào
@@ -729,7 +727,6 @@
Phản ứng
-
Xóa tin nhắn cũXóa tin nhắn khỏi thiết bị
@@ -755,7 +752,9 @@
Sau 1 năm
+
Autocrypt
+
Autocrypt là một đặc tả mới và mở để mã hóa e-mail hai đầu tự động.\n\nThiết lập hai đầu của bạn được tạo tự động khi cần và bạn có thể chuyển nó giữa các thiết bị bằng Tin nhắn thiết lập Autocrypt.Gửi tin nhắn thiết lập AutocryptThông báo thiết lập Autocrypt chia sẻ an toàn thiết lập end-to-end của bạn với các ứng dụng tương thích Autocrypt khác.\n\nThiết lập sẽ được mã hóa bằng mã thiết lập được hiển thị ở đây và phải được nhập trên thiết bị kia.
@@ -892,12 +891,12 @@
Không có kết nối internet, không thể thực hiện thiết lập mã QR.Tạo địa chỉ email mới trên \"%1$s\" và đăng nhập vào đó?Tạo địa chỉ email mới trên \"%1$s\" và đăng nhập vào đó?\n\nTài khoản hiện tại của bạn sẽ không bị xóa. Sử dụng mục \"Chuyển tài khoản\" để chuyển đổi giữa các tài khoản của bạn.
- Đăng nhập thành công—địa chỉ email của bạn là %1$s\n\nNếu muốn, bây giờ bạn có thể nhập tên và ảnh hồ sơ sẽ được hiển thị cho những người mà bạn viết thư cho.Mã QR được quét không thể được sử dụng để thiết lập tài khoản mới.
+
Mã QR được quét là để thiết lập một tài khoản mới. Bạn có thể quét mã QR khi thiết lập cài đặt Delta Chat mới.
-
+
Đăng nhập vào \"%1$s\"?
-
+
Đăng nhập vào \"%1$s\"?\n\nTài khoản hiện tại của bạn sẽ không bị xóa. Sử dụng mục \"Chuyển tài khoản\" để chuyển đổi giữa các tài khoản của bạn.%1$s đã mời bạn tham gia nhóm này.\n\nĐang chờ thiết bị của %2$s trả lời…
@@ -991,12 +990,13 @@
Xuất bản sao lưuĐã chuyển thiết lập Autocrypt.Xóa thông tin đăng nhập này? Mọi thứ sẽ bị xóa, bao gồm thiết lập đầu cuối, danh bạ, cuộc trò chuyện, tin nhắn và phương tiện của bạn. Hành động này không thể hoàn tác được.
+
E-mail: %1$s\nKích thước: %2$s\nId tài khoản: %3$sđã gửiđã nhận đượcMở thư mục nhật kýMở tệp nhật ký hiện tại
- Không thể tắt biểu tượng khay vì Delta Chat đã được bắt đầu bằng tùy chọn --giảm-thiểu.
+ Không thể tắt biểu tượng khay vì Delta Chat đã được bắt đầu bằng tùy chọn --giảm-thiểu.Không tìm thấy gợi ý chính tả.Hiển thị cửa sổHỗ trợ SOCKS5 hiện đang thử nghiệm. Vui lòng sử dụng có nguy cơ của riêng bạn. Nếu bạn nhập một địa chỉ vào trường e-mail, việc tra cứu DNS sẽ không được chuyển qua SOCKS5.
@@ -1061,19 +1061,9 @@
Delta Chat muốn lưu hình ảnh vào thư viện ảnh của bạn.
-
- Thông báo nền
- Sử dụng kết nối nền tới máy chủ của bạn và yêu cầu bỏ qua tối ưu hóa pin.Để duy trì kết nối với máy chủ e-mail của bạn và nhận tin nhắn ở chế độ nền, hãy bỏ qua tối ưu hóa pin trong bước tiếp theo.\n\nDelta Chat sử dụng ít tài nguyên và chú ý không làm tiêu hao pin của bạn.
- Kết nối nền đáng tin cậy
- Yêu cầu thông báo vĩnh viễnNhấn vào đây để nhận tin nhắn khi Delta Chat ở chế độ nền.Bạn đã cho phép Delta Chat nhận tin nhắn trong nền.\n\nNếu tin nhắn vẫn không đến trong nền, vui lòng kiểm tra cài đặt hệ thống của bạn.
-
-
- Có gì mới:\n\n💌 cuộc trò chuyện một-một đảm bảo mã hóa hai đầu cho những người liên hệ được giới thiệu\n\n😌 để mọi người đơn giản, chúng tôi đánh dấu những người liên hệ và cuộc trò chuyện này bằng dấu kiểm màu xanh lá cây\n\n👥 nhóm được tạo tự động với mã hóa hai đầu được đảm bảo nếu có thể\n\n🔄 Chấp nhận/Chặn, Đã lưu trữ, Đã ghim, Tắt tiếng được đồng bộ hóa trên tất cả các thiết bị của bạn
-
- Hãy chú ý đến những cải tiến khác về máy ảnh, tin nhắn thoại, sao lưu tất cả, trình đọc màn hình, hình nền cho mỗi tài khoản, chọn tất cả thư viện, phong cảnh webxdc … hoặc đọc chúng tại %1$s
-
+
diff --git a/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
similarity index 87%
rename from res/values-zh-rCN/strings.xml
rename to src/main/res/values-zh-rCN/strings.xml
index a45f83d5e..42b787052 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -1,5 +1,5 @@
-
+Delta Chat确定
@@ -41,9 +41,9 @@
重新发送
- 归档
+ 存档
- 解档
+ 取消存档静音消息定时销毁对本聊天内使用 Delta Chat 的成员有效;不过,这些成员还是能够保存、复制和转发消息,以及使用其他的电子邮件客户端。
@@ -53,9 +53,10 @@
概要主菜单开始聊天
- 显示完整消息…
+ 显示完整消息…将所有标记为已读
+ 标为已读已读
@@ -81,7 +82,7 @@
下一步错误错误:%1$s
- 无法找到用于处理此类数据的应用程序。
+ 找不到用于处理此类数据的应用。没有安装浏览器。无法找到 %1$s。已复制到剪贴板。
@@ -100,10 +101,10 @@
上周上个月
- 最后见到时间:%1$s
+ 最后上线于:%1$s
- 上次在线 %1$s
- 最后见到时间:未知
+ 最后上线 %1$s
+ 最后上线:未知%d 分钟
@@ -129,7 +130,7 @@
- 选中了 %d
+ %d 已选择我
@@ -191,6 +192,8 @@
新建联系人
+ 手动添加联系人
+ 手动添加的联系人可用于向传统电子邮件发送文本,并且不能保证端到端加密。新建聊天新建群组克隆聊天
@@ -207,8 +210,8 @@
编辑群组群组名称和图像显示所有位置
- 归档聊天
- 解档聊天
+ 存档聊天
+ 取消存档聊天添加附件离开群组删除聊天
@@ -270,7 +273,7 @@
设备消息本地生成的消息此聊天中的消息是由 Delta Chat 应用本地生成的。 它的制作者使用它来通知应用更新和使用过程中出现的问题。
- 欢迎使用 Delta Chat! – Delta Chat 看起来、用起来就跟其他流行的通讯应用一样,但是却不涉及中心化的控制、跟踪以及将您、朋友、同事或家庭出卖给大型组织。\n\n从技术上来说,Delta Chat 是具有现代聊天界面的电子邮件应用程序。若您愿意,电子邮件将装扮一新👻\n\n与数十亿人中的任何人一起使用 Delta Chat:只需使用他们的电子邮件地址即可。收件人不需要安装 Delta Chat、访问网站或是在什么地方注册 - 当然,如果他们愿意,您可以指给他们👉 https://get.delta.chat
+ 取得联系!\n\n🙌 轻按两台设备主屏上的“二维码”。 在其中一台设备上选择“扫描二维码”,并将其对准另一台设备上显示的二维码\n\n🌍 如果双方不在同一个房间内,可以通过视频通话进行扫描,或从“扫描二维码”那里分享一个邀请链接\n\n接下来: 通过有史以来存在的最大去中心化网络:电子邮件来享受收发消息。和其他流行的即时聊天应用相比,DeltaChat 没有中央控制,不跟踪您本人、您的好友、同事或家人,也不售卖你们的数据给大型组织。编辑联系人固定聊天
@@ -357,12 +360,12 @@
- %d 个聊天已归档
+ %d 个聊天已存档
- %d 个聊天已解档
+ %d 个聊天已取消存档
- 已归档聊天
+ 已存档聊天请输入消息。相机不可用。无法录制音频。
@@ -370,21 +373,22 @@
%d 条新消息
- 发一条消息给 %1$s。即使对方不使用 Delta Chat 也没问题。
+ 发一条消息给 %1$s。在广播列表中,收件人会在和你进行的只读聊天中收到消息在您发出第一条消息后,其他人才会看到此群组。滑动来取消按住来录制语音消息,松开来发送收件箱为空。\n按“+”来开始新聊天。
+
您可以与其他 Delta Chat 用户以及任意电子邮件地址聊天。
- 所有聊天已归档。\n按\"+\"来开始新聊天。
+ 所有聊天已存档。\n按“+”来开始新聊天。分享给输入消息…
- 已归档
+ 已存档请求没有消息。发给自己的消息
- 被归档的聊天将显示于此。
+ 已存档的聊天将显示在此处。保存的消息• 转发消息于此以便于访问\n\n• 做笔记或语音备忘录\n\n• 附加媒体以保存它们
@@ -393,7 +397,6 @@
尝试重发消息您必须在此群组之中才能发送消息。要加入,请询问其他成员。
- 此聊天用于本地生成的消息。您不能在这里编写消息。尚不支持在邮件列表中发送消息无法显示此类文件:%s加载附件失败
@@ -413,6 +416,8 @@
发送“%1$s\"到...发送消息到...
+ 实时 Webxdc 频道
+ 启用 Webxdc 实时 API 来创建设备间的直接连接显示时间范围内的位置
@@ -485,6 +490,7 @@
让两台设备连接相同的 Wi-Fi 或网络这会创建供第二台设备扫描、用于复制此账户的二维码。在你的其他设备上安装 Delta Chat (https://get.delta.chat)
+
启动 Delta Chat 应用,点击“添加为第二台设备”并扫描显示的二维码扫描此处为 %1$s 设置第二台设备
@@ -531,10 +537,40 @@
- 通过电子邮件聊天。
+
+ 让我们开始吧!
+
+ 我已经有登录凭据了
+
+ 传统电子邮件登录
+
+ 个人资料
+
+ 阅读隐私政策
+
+ %1$s 的隐私政策
+
+ 关于 %1$s 上的个人资料
+
+ 同意 & 创建个人资料
+
+ 使用其他服务器
+ 列出聊天邮件服务器
+
+ 创建个人资料加入“%1$s” 群。
+
+ 创建个人资料和 %1$s 聊天
+
+ 你想新建个人资料并开始和 %1$s 聊天吗?
+
+ 你想新建个人资料并加入 \"%1$s\" 聊天群吗?
+
+ 安全的去中心化聊天扫描邀请码登录
+
登录您的电子邮件账户
+
使用现有电子邮件帐户登录对于已知的电子邮件提供商,附加设置会被自动设置。有时 IMAP 需要在网页版设置里启用。 请咨询您的电子邮件提供商或朋友来寻求帮助。不存在 Delta Chat 服务器,您的数据保留于您的设备!
@@ -600,15 +636,14 @@
个人资料图片已屏蔽的联系人被您屏蔽的联系人将显示于此。
+
密码和账户在与其他用户交流时,您的个人资料图片和名称将与您的消息一起发送。您的名称签名档
-
- 由我的 Delta Chat Messenger 发送: https://delta.chat
- 回车键发送
- 按回车键发送文本消息
+ Enter 键发送
+ 按 Enter 键发送文本消息发出媒体质量平衡体积小,但质量更差
@@ -640,11 +675,15 @@
请求输入法禁用个性化学习已读回执禁用已读回执后,您将无法看到其他人的已读回执。
+ 服务器
+ 加密管理密钥使用系统 emoji关闭 Delta Chat 内置 emoji 支持使用应用内相机应用内相机功能通常比系统相机少
+ 读取系统通讯录
+ 从通讯录建立和联系人的聊天。一些邮件服务商需要先行设置才能进行端到端加密的聊天。应用程序访问聊天聊天音
@@ -657,9 +696,9 @@
备份将聊天备份至外部存储备份可帮助您在此设备或另一台设备上设置全新安装的本应用。\n\n备份将包含所有消息、联系人、聊天以及端到端的 Autocrypt 设置。请将备份文件保存在安全的地方,或尽快将其删除。
-
+
导出 %1$s
-
+
导出全部 %1$d 个账户开始备份备份已成功写入到“%1$s”。
@@ -678,6 +717,7 @@
若要更改此选项,请您务必调整服务器以及其他客户端的相应设置。\n\n否则软件可能无法正常工作。监视已发送文件夹给自己发送副本
+
在多台设备上使用此账户时,这是必需的。自动移动至 DeltaChat 文件夹移动聊天对话以免弄乱收件箱
@@ -713,6 +753,8 @@
编辑个人资料禁用 IMAP IDLE即便服务器支持,也不要使用 IMAP IDLE 扩展。启用后会造成消息获取延迟,请仅出于测试目的启用该功能。
+ 发送统计数据给 Delta Chat 开发者
+
搜索结果
@@ -729,6 +771,12 @@
回应
+
+ 回应
+
+ 你对 “%2$s” 回应了 %1$s
+
+ %1$s 对 “%3$s” 回应了 %2$s删除旧消息
@@ -755,7 +803,9 @@
1 年后
+
Autocrypt
+
Autocrypt 是一种用于自动端到端电子邮件加密的全新开放规范。\n\n您的端到端设置会根据需要自动创建;之后您可以使用 Autocrypt 设置消息在设备间传输此设置。发送 Autocrypt 设置消息Autocrypt 设置消息安全地共享您的端到端设置至其他兼容 Autocrypt 的应用程序。\n\n该设置将通过在此显示的、必须在另一台设备上输入的设置码进行加密。
@@ -847,6 +897,8 @@
现在此聊天中的所有消息保证都是端到端加密的。\n\n端到端加密使消息保持私密状态,只有你和你的聊天伙伴知道内容。即便是你的电子邮件服务提供商也无法读取它们。%1$s 从另一台设备发送了一则消息。轻按了解更多。无法再确保端到端加密,可能的原因是 %1$s 重新安装了 Delta Chat 或从其他设备发送了一则消息。\n\n你可以和联系人线下见面并再次扫描联系人的二维码重新建立端到端加密的通信。
+ ⚠️ %1$s要求端到端加密,而此聊天尚未建立端到端加密。轻按了解更多。
+ 要建立端到端加密,你可以亲自和联系人碰面并扫描联系人的二维码了解更多您已删除“保存的消息”聊天。\n\nℹ️要再次使用“保存的消息”功能,请创建一个与自己的新聊天。
@@ -864,6 +916,7 @@
从图像加载二维码扫描二维码将摄像头对准二维码。
+ 移动二维码到相机二维码无法被解码您要加入群组“%1$s”吗?扫描到的指纹与上次见到的 %1$s 的指纹不匹配。
@@ -892,25 +945,29 @@
没有互联网连接,无法进行二维码设置。在“%1$s”创建新的电子邮件地址并登录?在“%1$s”创建新的电子邮件地址并登录?\n\n已存在的账户不会被删除。使用“切换账户”来在账户之间切换。
- 登录成功——电子邮件地址是 %1$s\n\n如果您愿意,您现在可以去设置一个名称和个人资料图片。它们将显示给您发消息到的人。
+ 设置一个你的联系人认得出的名字。你还可以设置头像图片
+ 请输入名字无法使用扫描到的二维码建立新账户。
+
扫描到的二维码是用于设置新帐户的。设置新的 Delta Chat 安装时,您可以扫描此二维码。
-
+
登录 \"%1$s\"吗?
-
+
登录“%1$s“吗?\n\n你现有的账户不会被删除。使用“切换账户”来在不同账户间进行切换。%1$s 邀请你加入此群组。\n\n等待 %2$s 的设备回复…%1$s 已回复,等待被加入群组…
+ 正在建立有保证的端到端加密,请稍候…
+ 无法建立有保证的端到端加密,但您可能已经发送了一条消息。%1$s 已验证。
- 无法验证 %1$s。
+ 无法与 %1$s 建立有保证的端到端加密。验证人 %1$s由您验证%1$s 的加密设置已更改。
- 要确保端到端加密,你只能将带有略色验证标识的联系人到此群中。\n\n你可以亲自和未验证联系人线下碰面并扫描联系人二维码来验证。
+ 要确保端到端加密,你只能将带有绿色验证标识的联系人到此群中。\n\n你可以亲自和未验证联系人线下碰面并扫描联系人二维码来验证。已复制二维码链接到剪贴板选择要发送消息的聊天
@@ -929,6 +986,8 @@
不显示名称或消息已禁用通知新消息
+
+ 你有新消息%1$d 条消息,位于 %2$d 个聊天内
@@ -991,12 +1050,13 @@
导出备份Autocrypt 设置已传输 。删除此登录? 一切都将被删除,包括您的端到端设置、联系人、聊天、消息及媒体。 此操作无法撤消。
+
电子邮件:%1$s\n大小:%2$s\n账户 Id:%3$s发送于接收于打开日志文件夹打开当前日志文件
- 在 Delta Chat 带 --minimized 参数启动时,无法禁用托盘图标。
+ 在 Delta Chat 带 --minimized 参数启动时,无法禁用托盘图标。未找到拼写建议显示窗口SOCKS5 支持目前还处于试验阶段。请自行承担使用风险。如果您在电子邮件字段中输入一个地址,会有不流经 SOCKS5 隧道的 DNS 查找流量。
@@ -1062,18 +1122,23 @@
- 后台通知
- 使用到服务器的后台连接。需要忽略电池优化。
+ 即时传送
+ 使用推送服务
+ Chatmail 服务器的可靠推送通知
+ 停用推送服务吗?\n\n这可能导致通知延迟。
+ 使用后台连接
+ 需要忽略电池优化,请在推送服务不可用时使用它
+ 强制后台连接
+ 会形成永久通知
+
要保持到电子邮件服务器的连接并在后台接收消息,请在下一步中忽略电池优化。\n\nDelta Chat 仅使用少量的资源并且会注意不去耗尽电池电量。
- 可靠后台连接
- 需要一个持久通知点击此处以在 Delta Chat 处于后台时接收消息。您已允许 Delta Chat 在后台接收消息。\n\n若 Delta Chat 在后台时消息仍未到达,请检查系统设置。
-
- 新变化\n\n💌 对引入的联系人,一对一聊天确保端到端加密\n\n😌 为了方便识别,这样的联系人和聊天会带有绿色钩形符号\n\n👥 如果可能,自动创建确保端到端加密的群\n\n🔄 在所有设备间同步接受/拦截、存档、固定、静音
-
- 留心相机、语音消息、backup-all、屏幕阅读器、不同账户壁纸、图库全选、webxdc landscape 等方面的更多改进… 或访问 %1$s 进行了解
+ 变化:\n\n❤️ 耶!等待已久的功能来了:长按消息做出回应\n\n🔗 如果你无法扫描二维码,将它们分享为邀请链接\n\n🔵 计算所有账户的未读消息并显示在标题中\n\n… 以及修复许多 bug … %1$s\n\n帮助改进应用:使用“设置/高级、发送统计数据”帮助开发者为实际使用而更好地优化。发送前你可以查看数据
+ 变化:\n\n❤️ 耶!等待已久的功能来了:长按消息做出回应\n\n🫸 支持推送通知,不过需要提供商像 https://nine.testrun.org 一样支持该功能\n\n🔗 如果你无法扫描二维码,将它们分享为邀请链接\n\n… 以及修复许多 bug … %1$s
+ 新用户引导流程 🐣 以及更多信息:\n\n⚡️ 注册安全的快速聊天邮件服务器(https://delta.chat/chatmail)或使用传统的电子邮件服务器\n\n👉 为任何聊天邮件服务器推送通知\n\n👤 通过“附加联系人”安全地连接您的朋友\n\n🥰 使用任何表情符号进行回应\n\n📌 直接从搜索中固定聊天…以及更多信息,请访问 %1$s
+ 新用户引导流程 🐣 以及更多信息:\n\n⚡️ 注册安全的快速聊天邮件服务器(https://delta.chat/chatmail)或使用传统的电子邮件服务器\n\n👉 为任何聊天邮件服务器推送通知\n\n👤 接收“附加联系人”安全地连接您的朋友\n\n🥰 更快选择消息回应 …更多信息,请访问 %1$s
diff --git a/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml
similarity index 97%
rename from res/values-zh-rTW/strings.xml
rename to src/main/res/values-zh-rTW/strings.xml
index 617d20d85..266fc2970 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/src/main/res/values-zh-rTW/strings.xml
@@ -1,5 +1,5 @@
-
+Delta Chat確定
@@ -230,7 +230,6 @@
裝置訊息本機產生的訊息這個聊天室內的訊息是由 Delta Chat 軟體在本地產生的。開發者會在這裡發送軟體更新和使用幫助。
- 歡迎使用 Delta Chat!Delta Chat 看起來就如同大部分的聊天軟體一樣,但並沒有集中式的控制,且不會追蹤或販賣你、或與你有關人士的資料給大公司。\n\n嚴格來說,Delta Chat 是一款擁有聊天界面的電子郵件軟體;簡單來說就是幫電子郵件穿上新衣啦👻\n\n使用 Delta Chat 來跟全世界的人溝通,全程只需要他們的電郵地址。對方不需要安裝 Delta Chat、造訪網頁或額外註冊帳號 - 但如果他們想要的話,你也可以透過這個連結來分享給他們 👉 https://get.delta.chat編輯聯絡人釘選聯絡人
@@ -323,6 +322,7 @@
滑動以取消按住不放錄音,放開後傳送目前沒有對話\n請按 + 開始新的對話
+
你可以和其它 Delta Chat 的使用者對話,也可以和任何 email 信箱對話。已封存所有的對話\n請按 + 開始新的對話分享給...
@@ -360,6 +360,7 @@
本對話中共享的文件、音樂和其它檔案會顯示在這裡。媒體預覽登入
+
登入你的伺服器我們能自動處理大多數常見的郵件伺服器設定。有時候你需要在 web 界面上手動打開 IMAP 服務,請詢問郵件服務商或請朋友幫忙。Delta Chat 沒有伺服器,你的資料只會存在你自己的裝置上!
@@ -402,8 +403,6 @@
你的名字簽名檔
-
- 使用 Delta Chat 傳送: https://delta.chat換行鍵送出訊息按下換行鍵就送出訊息傳送的媒體品質
@@ -470,7 +469,9 @@
顯示已接受的聯絡人所有郵件
+
Autocrypt
+
AutoCrypt是一種新的 email 端到端自動加密的開放規格。\n\n你的端到端設定會按需求自動新增,並且可以轉移到其它可開啟AutoCrypt設定訊息(ASM)的設備。傳送AutoCrypt設定訊息「AutoCrypt設定訊息」可以安全地和你使用的其它支援AutoCrypt的 app 共享端到端加密設定。\n\n本訊息含一組設定碼,請在其它支援的設備中輸入這組設定碼。
diff --git a/res/values/arrays.xml b/src/main/res/values/arrays.xml
similarity index 100%
rename from res/values/arrays.xml
rename to src/main/res/values/arrays.xml
diff --git a/res/values/attrs.xml b/src/main/res/values/attrs.xml
similarity index 93%
rename from res/values/attrs.xml
rename to src/main/res/values/attrs.xml
index 6dea05223..bb65e167a 100644
--- a/res/values/attrs.xml
+++ b/src/main/res/values/attrs.xml
@@ -223,23 +223,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/res/values/colors.xml b/src/main/res/values/colors.xml
similarity index 95%
rename from res/values/colors.xml
rename to src/main/res/values/colors.xml
index ad6a6d053..07a576730 100644
--- a/res/values/colors.xml
+++ b/src/main/res/values/colors.xml
@@ -61,9 +61,6 @@
#55444444
- #552090ea
- #ff2090ea
-
#fffdf7b2#ff101010#fffd0b00
@@ -79,7 +76,7 @@
#ffffff#88dddddd#545863
- @color/gray5
+ @color/light_green@color/reaction_pill_border@color/reaction_pill_text_color
diff --git a/res/values/core_colors.xml b/src/main/res/values/core_colors.xml
similarity index 100%
rename from res/values/core_colors.xml
rename to src/main/res/values/core_colors.xml
diff --git a/res/values/crop_area_renderer.xml b/src/main/res/values/crop_area_renderer.xml
similarity index 100%
rename from res/values/crop_area_renderer.xml
rename to src/main/res/values/crop_area_renderer.xml
diff --git a/res/values/dimens.xml b/src/main/res/values/dimens.xml
similarity index 91%
rename from res/values/dimens.xml
rename to src/main/res/values/dimens.xml
index e1f860fea..e915874ae 100644
--- a/res/values/dimens.xml
+++ b/src/main/res/values/dimens.xml
@@ -57,11 +57,6 @@
10dp
- 6dp
- 14dp
- 4dp
- 12sp
- 8dp45dp
diff --git a/res/values/emoji.xml b/src/main/res/values/emoji.xml
similarity index 100%
rename from res/values/emoji.xml
rename to src/main/res/values/emoji.xml
diff --git a/res/values/ic_launcher_background.xml b/src/main/res/values/ic_launcher_background.xml
similarity index 100%
rename from res/values/ic_launcher_background.xml
rename to src/main/res/values/ic_launcher_background.xml
diff --git a/res/values/ids.xml b/src/main/res/values/ids.xml
similarity index 100%
rename from res/values/ids.xml
rename to src/main/res/values/ids.xml
diff --git a/res/values/integers.xml b/src/main/res/values/integers.xml
similarity index 100%
rename from res/values/integers.xml
rename to src/main/res/values/integers.xml
diff --git a/res/values/material_colors.xml b/src/main/res/values/material_colors.xml
similarity index 100%
rename from res/values/material_colors.xml
rename to src/main/res/values/material_colors.xml
diff --git a/res/values/strings.xml b/src/main/res/values/strings.xml
similarity index 86%
rename from res/values/strings.xml
rename to src/main/res/values/strings.xml
index 2e6007066..3325994fc 100644
--- a/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1,5 +1,5 @@
-
+DeltaChat LiteOK
@@ -56,6 +56,7 @@
Show Full Message…Mark All as Read
+ Mark as ReadRead
@@ -199,6 +200,8 @@
New Contact
+ Add Contact Manually
+ Manually added contacts can be used to text to classic e-mail and are not guaranteed end-to-end encrypted.New ChatNew GroupClone Chat
@@ -226,7 +229,7 @@
Delete MessagesDelete ContactDelete this Location?
- Message Details
+ Message InfoCopy to ClipboardCopy SelectionCopy Link
@@ -278,13 +281,13 @@
Device MessagesLocally generated messagesMessages in this chat are generated on your device to inform about app updates and problems during usage.
- Welcome to Delta Chat! – Delta Chat looks and feels like other popular messenger apps, but does not involve centralized control, tracking or selling you, friends, colleagues or family out to large organizations.\n\nTechnically, Delta Chat is an e-mail application with a modern chat interface. E-mail in a new dress if you will 👻\n\nUse Delta Chat with anyone out of billions of people: just use their e-mail address. Recipients don\'t need to install Delta Chat, visit websites or sign up anywhere - however, of course, if they like, you may point them to 👉 https://get.delta.chat
+ Get in contact!\n\n🙌 Tap \"QR code\" on the main screen of both devices. Choose \"Scan QR Code\" on one device, and point it at the other\n\n🌍 If not in the same room, scan via video call or share an invite link from \"Scan QR code\"\n\nThen: Enjoy your messenger experience over the largest decentralized network that ever existed: E-mail. And in contrast to other popular apps, without central control or tracking or selling you, friends, colleagues or family out to large organizations.Edit Contact
-
+
Pin ChatUnpin Chat
-
+
PinUnpin
@@ -385,12 +388,13 @@
%d new messages
- Send a message to %1$s; they can even receive it without Delta Chat.
+ Send a message to %1$s.In a broadcast list, recipients will receive messages in a read-only chat with you.Others will only see this group after you sent a first message.Slide to cancelTap and hold to record a voice message, release to send
- Empty inbox.\nPress \"+\" to start a new chat.
+ No Chats.\nPress \"+\" to start a new chat.
+
You can chat with other Delta Chat users and with any e-mail address.All chats archived.\nPress \"+\" to start a new chat.Share with
@@ -408,7 +412,6 @@
Retry to send messageYou must be in this group to post a message. To join, ask another member.
- This chat contains locally generated messages; writing is disabled.Sending messages in mailing lists is not yet supportedCannot display this file type: %sFailed to load attachment
@@ -428,6 +431,8 @@
Send \"%1$s\" to…Send Message to…
+ Realtime Webxdc Channels
+ Enable Webxdc realtime APIs to create direct connections between devices.Show locations in time frame
@@ -498,20 +503,21 @@
Add Second DeviceMake sure both devices are on the same Wi-Fi or network
- This creates a QR code that the second device can scan to copy the account.
+ This creates a QR code that the second device can scan to copy the profile.Install Delta Chat on your other device (https://get.delta.chat)
- Start Delta Chat, tap “Add as Second Device” and scan the code shown here
+
+ Start Delta Chat, tap “I Already Have a Profile / Add as Second Device” and scan the code shown hereScan to set up second device for %1$sAdd as Second DeviceOn the first device, go to “Settings / Add Second Device“ and scan the code shown there
- Copy the account from the other device to this device?
+ Copy the profile from the other device to this device?Abort setting up second device?This will invalidate the QR code copied to clipboard.(experimental, version 1.36 required)
- ℹ️ Account transferred to your second device.
+ ℹ️ Profile transferred to your second device.
- Preparing account…
+ Preparing profile…Waiting for receiver…
@@ -546,13 +552,43 @@
- Chat over E-Mail.
+
+ Create New Profile
+
+ I Already Have a Profile
+
+ Classic E-Mail Login
+
+ Your Profile
+
+ Read the Privacy Policy
+
+ Privacy Policy for %1$s
+
+ About profiles on %1$s
+
+ Agree & Create Profile
+
+ Use Other Server
+ List Chatmail Servers
+
+ Create a profile to join the group \"%1$s\".
+
+ Create a profile to chat with %1$s.
+
+ Do you want to create a new profile and start chatting with %1$s?
+
+ Do you want to create a new profile and join the \"%1$s\" chat group?
+
+ Secure Decentralized ChatScan Invitation CodeLog In
+
Log into your E-Mail Account
+
Log in with an existing e-mail accountFor known e-mail providers additional settings are set up automatically. Sometimes IMAP needs to be enabled in the web settings. Consult your e-mail provider or friends for help.
- There are no Delta Chat servers, your data stays on your device.
+ Delta Chat does not collect user data, everything stays on your device.InboxIMAP Login NameIMAP Server
@@ -573,7 +609,7 @@
SOCKS5 UserSOCKS5 PasswordContinue with simplified setup?
- The entered e-mail address supports a simplified setup (OAuth 2.0).\n\nIn the next step, please allow Delta Chat to act as your Chat over E-mail app.\n\nThere are no Delta Chat servers, your data stays on your device.
+ The entered e-mail address supports a simplified setup (OAuth 2.0).\n\nIn the next step, please allow Delta Chat to act as your Chat over E-mail app.\n\nDelta Chat does not collect user data, everything stays on your device.Certificate ChecksPlease enter a valid e-mail addressPlease enter a valid server / IP address
@@ -587,13 +623,13 @@
Accept invalid certificatesUsed settings:
- Switch Account
- Add Account
- Delete Account
- Are you sure you want to delete your account data?
- All account data of \"%s\" on this device will be deleted, including your end-to-end encryption setup, contacts, chats, messages and media. This action cannot be undone.
- Unconfigured account
- Open account to configure it.
+ Switch Profile
+ Add Profile
+ Delete Profile
+ Are you sure you want to delete your profile data?
+ All profile data of \"%s\" on this device will be deleted, including your end-to-end encryption setup, contacts, chats, messages and media. This action cannot be undone.
+ Unconfigured profile
+ Open profile to configure it.Try to connect nowSync All
@@ -611,17 +647,16 @@
Using custom: %sUsing default: %s
- Your Profile Info
+ Your ProfileProfile ImageBlocked ContactsBlocked contacts will appear here.
+
Password and Account
- Your profile image, name and signature will be sent together with your messages when communicating with other users.
+ Your profile image, name and bio will be sent together with your messages when communicating with other users.Your Name
- Signature Text
-
- Sent with my Delta Chat Messenger: https://delta.chat
+ BioEnter Key SendsPressing the Enter key will send text messagesOutgoing Media Quality
@@ -655,11 +690,15 @@
Request keyboard to disable personalized learningRead ReceiptsIf read receipts are disabled, you won\'t be able to see read receipts from others.
+ Server
+ EncryptionManage KeysUse System EmojiTurn off Delta Chat\'s built-in emoji supportUse In-App CameraIn-app camera usually has less features than the system camera
+ Read System Address Book
+ Offer to create chats with contacts from the address book. Some providers need end-to-end encryption setup first.App AccessChatsIn-Chat Sounds
@@ -672,10 +711,10 @@
BackupBack Up Chats to External StorageA backup helps you to set up a new installation on this or on another device.\n\nThe backup will contain all messages, contacts and chats and your end-to-end Autocrypt setup. Keep the backup file in a safe place or delete it as soon as possible.
-
+
Export %1$s
-
- Export all %1$d accounts
+
+ Export all %1$d profilesStart BackupBackup written successfully to \"%1$s\".Manage Keys
@@ -693,6 +732,7 @@
If you change this option, make sure, your server and your other clients are configured accordingly.\n\nOtherwise things may not work at all.Watch Sent FolderSend Copy to Self
+
Required when using this account on multiple devices.Move automatically to DeltaChat FolderChat conversations are moved to avoid cluttering the Inbox
@@ -728,6 +768,8 @@
Edit ProfileDisable IMAP IDLEDo not use IMAP IDLE extension even if the server supports it. Enabling this option will delay message retrieval, enable it only for testing.
+ Send statistics to Delta Chat\'s developers
+
Search Results
@@ -744,6 +786,12 @@
Reactions
+
+ React
+
+ You reacted %1$s to \"%2$s\"
+
+ %1$s reacted %2$s to \"%3$s\"Delete Old Messages
@@ -755,9 +803,11 @@
Do you want to delete %1$d messages now and all newly fetched messages \"%2$s\" in the future?\n\n⚠️ This includes e-mails, media and \"Saved messages\" in all server folders\n\n⚠️ Do not use this function if you want to keep data on the server\n\n⚠️ Do not use this function if you are using other e-mail clients besides Delta ChatThis includes e-mails, media and \"Saved messages\" in all server folders. Do not use this function if you want to keep data on the server or if you are using other e-mail clients besides Delta Chat.
+ Turn on at-once deletion
+ If you enable at-once deletion you cannot use multiple devices on this profile anymore.I understand, delete all these messages
- At once
+ At once after DownloadAfter 30 secondsAfter 1 minuteAfter 5 minutes
@@ -765,12 +815,15 @@
After 1 hourAfter 1 dayAfter 1 week
+
After 4 weeksAfter 5 weeksAfter 1 year
+
Autocrypt
+
Autocrypt is a new and open specification for automatic end-to-end e-mail encryption.\n\nYour end-to-end setup is created automatically as needed and you can transfer it between devices with Autocrypt Setup Messages.Send Autocrypt Setup MessageAn Autocrypt Setup Message securely shares your end-to-end setup with other Autocrypt-compliant apps.\n\nThe setup will be encrypted by a setup code displayed here and must be typed on the other device.
@@ -862,11 +915,13 @@
It is now guaranteed that all messages in this chat are end-to-end encrypted.\n\nEnd-to-end encryption keeps messages private between you and your chat partners. Not even your email provider can read them.%1$s sent a message from another device. Tap to learn more.End-to-end encryption cannot be guaranteed anymore, likely because %1$s reinstalled Delta Chat or sent a message from another device.\n\nYou may meet them in person and scan their QR code again to reestablish guaranteed end-to-end encryption.
+ ⚠️ %1$s requires end-to-end encryption which is not setup for this chat yet. Tap to learn more.
+ To establish end-to-end-encryption, you may meet contacts in person and scan their QR Code to introduce them.Learn MoreYou deleted the \"Saved messages\" chat.\n\nℹ️ To use the \"Saved messages\" feature again, create a new chat with yourself.
- ⚠️ Your provider\'s storage is about to run out: %1$s%% are already used.\n\nYou may not be able to receive messages if storage is full.\n\n👉 Please check if you can delete old data in the provider\'s web interface and consider enabling \"Settings / Delete Old Messages\". You can check your current storage usage anytime at \"Settings / Connectivity\".
+ ⚠️ Your provider\'s storage is about to run out: %1$s%% are already used.\n\nYou may not be able to receive messages if storage is full.\n\n👉 Please check if you can delete old data in the provider\'s web interface and consider enabling \"Settings / Chats and Media / Delete Old Messages\". You can check your current storage usage anytime at \"Settings / Connectivity\".⚠️ Date or time on your device seems to be inaccurate (%1$s).\n\nAdjust your clock ⏰🔧 to ensure your messages are received correctly.⚠️ Your Delta Chat version might be outdated.\n\nThis may cause problems because your chat partners use newer versions - and you are missing the latest features 😳\nPlease check https://get.delta.chat or your app store for updates.
@@ -878,7 +933,8 @@
QR CodeLoad QR Code as ImageScan QR Code
- Hold your camera over the QR code.
+ Hold your camera over the QR code
+ Move the QR code to the cameraQR code could not be decodedDo you want to join the group \"%1$s\"?The scanned fingerprint does not match the last seen for %1$s.
@@ -905,19 +961,23 @@
Scan to chat with %1$sNo internet connection, can\'t perform QR code setup.
- Create new e-mail address on \"%1$s\" and log in there?
- Create new e-mail address on \"%1$s\" and log in there?\n\nYour existing account will not be deleted. Use the \"Switch Account\" item to switch between your accounts.
- Login successful—your e-mail address is %1$s\n\nIf you like, you can now enter a name and an profile image that will be displayed to people you write to.
- The scanned QR code cannot be used to set up a new account.
- The scanned QR code is for setting up a new account. You can scan the QR code when setting up a new Delta Chat installation.
-
+ Create new profile on \"%1$s\" and log in there?
+ Create new profile on \"%1$s\" and log in there?\n\nYour existing profile will not be deleted. Use the \"Switch Profile\" item to switch between your profiles.
+ Set a name that your contacts will recognize. You can also set a profile image.
+ Please enter a name.
+ The scanned QR code cannot be used to set up a new profile.
+
+ The scanned QR code is for setting up a new profile. You can scan the QR code when setting up a new Delta Chat installation.
+
Log into \"%1$s\"?
-
- Log into \"%1$s\"?\n\nYour existing account will not be deleted. Use the \"Switch Account\" item to switch between your accounts.
+
+ Log into \"%1$s\"?\n\nYour existing profile will not be deleted. Use the \"Switch Profile\" item to switch between your profiles.%1$s invited you to join this group.\n\nWaiting for the device of %2$s to reply…%1$s replied, waiting for being added to the group…
+ Establishing guaranteed end-to-end encryption, please wait…
+ Could not yet establish guaranteed end-to-end encryption, but you may already send a message.%1$s introduced.Cannot establish guaranteed end-to-end encryption with %1$s.
@@ -944,6 +1004,8 @@
No name or messageNotifications disabledNew messages
+
+ You have new messages%1$d messages in %2$d chats
@@ -1005,13 +1067,14 @@
Select Group ImageExport BackupAutocrypt setup transferred.
- Delete this login? Everything will be deleted, including your end-to-end setup, contacts, chats, messages and media. This action cannot be undone.
+ Delete this profile? Everything will be deleted, including your end-to-end setup, contacts, chats, messages and media. This action cannot be undone.
+
E-Mail: %1$s\nSize: %2$s\nAccount Id: %3$ssentreceivedOpen the Log FolderOpen Current Logfile
- Tray icon cannot be disabled as Delta Chat was started with the --minimized option.
+ Tray icon cannot be disabled as Delta Chat was started with the --minimized option.No spelling suggestions found.Show WindowSOCKS5 support is currently experimental. Please use at your own risk. If you type in an address in the e-mail field, there will be DNS lookup that won\'t get tunneled through SOCKS5.
@@ -1044,7 +1107,7 @@
After recording, double-tap to send. To discard the recording, scrub with two fingers.Double tap to view connectivity details.No internet connection, login failed.
- Account is not configured.
+ Profile is not configured.The audio file cannot be played.To take photos, capture videos or use the QR-Code scanner, open the system settings and enable \"Camera\".
@@ -1077,18 +1140,23 @@
- Background Notifications
- Uses a background connection to your server and requires ignored battery optimizations.
+ Instant Delivery
+ Use Push Service
+ Reliable Push Notifications for Chatmail-Servers
+ Disable using Push Service?\n\nThis may result in delayed notifications.
+ Use Background Connection
+ Requires ignored battery optimizations, use if Push Service is unavailable
+ Force Background Connection
+ Causes a permanent notification
+
To maintain connection to your e-mail server and receive messages in the background, ignore battery optimizations in the next step.\n\nDelta Chat uses few resources and takes care not to drain your battery.
- Reliable Background Connection
- Requires a permanent notificationTap here to receive messages while Delta Chat is in the background.You already allowed Delta Chat to receive messages in the background.\n\nIf messages still do not arrive in background, please also check your system settings.
-
- What\'s new:\n\n💌 one-to-one chats guarantee end-to-end encryption for contacts with a green checkmark\n\n😌 for everyone\'s simplicity, we also mark these chats with green checkmarks\n\n👥 groups are created automatically with guaranteed end-to-end encryption if possible\n\n🔄 Accept/Blocked, Archived, Pinned, Mute is synced across all your devices
-
- Watch out for more improvements in camera, voice messages, backup-all, screen reader, per-account wallpapers, gallery select-all, webxdc landscape … or read them at %1$s
+ What\'s new:\n\n❤️ Yeah! This was long-awaited: Long tap a message to react\n\n🔗 If you cannot scan QR codes, share them as invite links\n\n🔵 Unread messages of all accounts are counted and shown in title now\n\n… and TONS of bugfixes … %1$s\n\nHelp improving the app: Use \"Settings / Advanced / Send statistics\" to help devs to optimize better for real-world usage. You can review the data before sending
+ What\'s new:\n\n❤️ Yeah! This was long-awaited: Long tap a message to react\n\n🫸 PUSH notifications if supported by providers as https://nine.testrun.org\n\n🔗 If you cannot scan QR codes, share them as invite links\n\n… and TONS of bugfixes … %1$s
+ New Onboarding 🐣 and More:\n\n⚡️ Sign up to secure fast chatmail servers (https://delta.chat/chatmail) or use classic e-mail servers\n\n👉 PUSH notifications for any chatmail server\n\n👤 Connect your friends securely via \"Attach contacts\"\n\n🥰 React with any emoji\n\n📌 Pin chats directly from search … and MORE at %1$s
+ New Onboarding 🐣 and More:\n\n⚡️ Sign up to secure fast chatmail servers (https://delta.chat/chatmail) or use classic e-mail servers\n\n👉 PUSH notifications for any chatmail server\n\n👤 Receive \"Attached contacts\" and connect to your friends\n\n🥰 Faster reaction selection … and MORE at %1$s
diff --git a/res/values/styles.xml b/src/main/res/values/styles.xml
similarity index 100%
rename from res/values/styles.xml
rename to src/main/res/values/styles.xml
diff --git a/res/values/text_styles.xml b/src/main/res/values/text_styles.xml
similarity index 100%
rename from res/values/text_styles.xml
rename to src/main/res/values/text_styles.xml
diff --git a/res/values/themes.xml b/src/main/res/values/themes.xml
similarity index 100%
rename from res/values/themes.xml
rename to src/main/res/values/themes.xml
diff --git a/res/values/themes_splash.xml b/src/main/res/values/themes_splash.xml
similarity index 100%
rename from res/values/themes_splash.xml
rename to src/main/res/values/themes_splash.xml
diff --git a/res/values/vector_paths.xml b/src/main/res/values/vector_paths.xml
similarity index 100%
rename from res/values/vector_paths.xml
rename to src/main/res/values/vector_paths.xml
diff --git a/res/xml-v29/preferences_appearance.xml b/src/main/res/xml-v29/preferences_appearance.xml
similarity index 100%
rename from res/xml-v29/preferences_appearance.xml
rename to src/main/res/xml-v29/preferences_appearance.xml
diff --git a/res/xml/file_provider_paths.xml b/src/main/res/xml/file_provider_paths.xml
similarity index 100%
rename from res/xml/file_provider_paths.xml
rename to src/main/res/xml/file_provider_paths.xml
diff --git a/res/xml/preferences.xml b/src/main/res/xml/preferences.xml
similarity index 100%
rename from res/xml/preferences.xml
rename to src/main/res/xml/preferences.xml
diff --git a/res/xml/preferences_advanced.xml b/src/main/res/xml/preferences_advanced.xml
similarity index 64%
rename from res/xml/preferences_advanced.xml
rename to src/main/res/xml/preferences_advanced.xml
index 703639de0..9098d943d 100644
--- a/res/xml/preferences_advanced.xml
+++ b/src/main/res/xml/preferences_advanced.xml
@@ -1,24 +1,97 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/res/xml/preferences_appearance.xml b/src/main/res/xml/preferences_appearance.xml
similarity index 100%
rename from res/xml/preferences_appearance.xml
rename to src/main/res/xml/preferences_appearance.xml
diff --git a/res/xml/preferences_chats.xml b/src/main/res/xml/preferences_chats.xml
similarity index 85%
rename from res/xml/preferences_chats.xml
rename to src/main/res/xml/preferences_chats.xml
index c4233e6ad..74d5bab24 100644
--- a/res/xml/preferences_chats.xml
+++ b/src/main/res/xml/preferences_chats.xml
@@ -1,14 +1,6 @@
-
-
-
+
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/res/xml/shortcuts.xml b/src/main/res/xml/shortcuts.xml
similarity index 100%
rename from res/xml/shortcuts.xml
rename to src/main/res/xml/shortcuts.xml
diff --git a/src/org/thoughtcrime/securesms/AttachContactActivity.java b/src/org/thoughtcrime/securesms/AttachContactActivity.java
deleted file mode 100644
index 1cdbf9c81..000000000
--- a/src/org/thoughtcrime/securesms/AttachContactActivity.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.thoughtcrime.securesms;
-
-import android.content.Intent;
-
-import com.b44t.messenger.DcContext;
-
-import org.thoughtcrime.securesms.connect.DcHelper;
-
-public class AttachContactActivity extends ContactSelectionActivity {
-
- public static final String NAME_EXTRA = "name_extra";
- public static final String ADDR_EXTRA = "addr_extra";
-
- @Override
- public void onContactSelected(int specialId, String addr) {
- String name = "";
- DcContext dcContext = DcHelper.getContext(this);
- int contactId = dcContext.lookupContactIdByAddr(addr);
- if (contactId != 0) {
- name = dcContext.getContact(contactId).getDisplayName();
- }
- Intent intent = new Intent();
- intent.putExtra(NAME_EXTRA, name);
- intent.putExtra(ADDR_EXTRA, addr);
- setResult(RESULT_OK, intent);
- finish();
- }
-}
diff --git a/src/org/thoughtcrime/securesms/ConversationListFragment.java b/src/org/thoughtcrime/securesms/ConversationListFragment.java
deleted file mode 100644
index 9fdb7e443..000000000
--- a/src/org/thoughtcrime/securesms/ConversationListFragment.java
+++ /dev/null
@@ -1,652 +0,0 @@
-/*
- * Copyright (C) 2015 Open Whisper Systems
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package org.thoughtcrime.securesms;
-
-import android.Manifest;
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.Context;
-import android.content.Intent;
-import android.content.res.TypedArray;
-import android.graphics.Color;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.Build;
-import android.os.Bundle;
-import android.text.TextUtils;
-import android.util.Log;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.view.ActionMode;
-import androidx.core.content.ContextCompat;
-import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.b44t.messenger.DcChat;
-import com.b44t.messenger.DcChatlist;
-import com.b44t.messenger.DcContext;
-import com.b44t.messenger.DcEvent;
-import com.b44t.messenger.DcMsg;
-import com.google.android.material.snackbar.Snackbar;
-
-import org.thoughtcrime.securesms.ConversationListAdapter.ItemClickListener;
-import org.thoughtcrime.securesms.components.recyclerview.DeleteItemAnimator;
-import org.thoughtcrime.securesms.components.registration.PulsingFloatingActionButton;
-import org.thoughtcrime.securesms.components.reminder.DozeReminder;
-import org.thoughtcrime.securesms.connect.DcEventCenter;
-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.util.Prefs;
-import org.thoughtcrime.securesms.util.RelayUtil;
-import org.thoughtcrime.securesms.util.SendRelayedMessageUtil;
-import org.thoughtcrime.securesms.util.Util;
-import org.thoughtcrime.securesms.util.ViewUtil;
-import org.thoughtcrime.securesms.util.task.SnackbarAsyncTask;
-import org.thoughtcrime.securesms.util.views.ProgressDialog;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-import java.util.Timer;
-import java.util.TimerTask;
-
-import static org.thoughtcrime.securesms.util.RelayUtil.acquireRelayMessageContent;
-import static org.thoughtcrime.securesms.util.RelayUtil.getSharedText;
-import static org.thoughtcrime.securesms.util.RelayUtil.getSharedUris;
-import static org.thoughtcrime.securesms.util.RelayUtil.isForwarding;
-import static org.thoughtcrime.securesms.util.RelayUtil.isRelayingMessageContent;
-
-
-public class ConversationListFragment extends Fragment
- implements ActionMode.Callback, ItemClickListener, DcEventCenter.DcEventDelegate {
- public static final String ARCHIVE = "archive";
- public static final String RELOAD_LIST = "reload_list";
-
- private static final String TAG = ConversationListFragment.class.getSimpleName();
-
- private ActionMode actionMode;
- private RecyclerView list;
- private View emptyState;
- private TextView emptySearch;
- private PulsingFloatingActionButton fab;
- private Locale locale;
- private final String queryFilter = "";
- private boolean archive;
- private Timer reloadTimer;
- private boolean chatlistJustLoaded;
- private boolean reloadTimerInstantly;
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- locale = (Locale) getArguments().getSerializable(PassphraseRequiredActionBarActivity.LOCALE_EXTRA);
- archive = getArguments().getBoolean(ARCHIVE, false);
-
- DcEventCenter eventCenter = DcHelper.getEventCenter(getActivity());
- eventCenter.addObserver(DcContext.DC_EVENT_CHAT_MODIFIED, this);
- eventCenter.addObserver(DcContext.DC_EVENT_CONTACTS_CHANGED, this);
- eventCenter.addObserver(DcContext.DC_EVENT_INCOMING_MSG, this);
- eventCenter.addObserver(DcContext.DC_EVENT_MSGS_CHANGED, this);
- eventCenter.addObserver(DcContext.DC_EVENT_MSGS_NOTICED, this);
- eventCenter.addObserver(DcContext.DC_EVENT_MSG_DELIVERED, this);
- eventCenter.addObserver(DcContext.DC_EVENT_MSG_FAILED, this);
- eventCenter.addObserver(DcContext.DC_EVENT_MSG_READ, this);
- eventCenter.addObserver(DcContext.DC_EVENT_CONNECTIVITY_CHANGED, this);
- eventCenter.addObserver(DcContext.DC_EVENT_SELFAVATAR_CHANGED, this);
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- DcHelper.getEventCenter(getActivity()).removeObservers(this);
- }
-
- @SuppressLint("RestrictedApi")
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle bundle) {
- final View view = inflater.inflate(R.layout.conversation_list_fragment, container, false);
-
- list = ViewUtil.findById(view, R.id.list);
- fab = ViewUtil.findById(view, R.id.fab);
- emptyState = ViewUtil.findById(view, R.id.empty_state);
- emptySearch = ViewUtil.findById(view, R.id.empty_search);
-
- if (archive) {
- fab.setVisibility(View.GONE);
- TextView emptyTitle = ViewUtil.findById(view, R.id.empty_title);
- TextView emptySubtitle = ViewUtil.findById(view, R.id.empty_subtitle);
- emptyTitle.setText(R.string.archive_empty_hint);
- emptySubtitle.setVisibility(View.GONE);
- } else {
- fab.setVisibility(View.VISIBLE);
- }
-
- list.setHasFixedSize(true);
- list.setLayoutManager(new LinearLayoutManager(getActivity()));
- list.setItemAnimator(new DeleteItemAnimator());
-
- return view;
- }
-
- @Override
- public void onActivityCreated(Bundle bundle) {
- super.onActivityCreated(bundle);
-
- setHasOptionsMenu(true);
- initializeFabClickListener(false);
- list.setAdapter(new ConversationListAdapter(getActivity(), GlideApp.with(this), locale, this));
- loadChatlistAsync();
- chatlistJustLoaded = true;
- }
-
- @Override
- public void onResume() {
- super.onResume();
-
- updateReminders();
-
- if (getActivity().getIntent().getIntExtra(RELOAD_LIST, 0) == 1
- && !chatlistJustLoaded) {
- Log.i(TAG, "🤠 resuming chatlist: loading chatlist");
- loadChatlist();
- reloadTimerInstantly = false;
- }
- chatlistJustLoaded = false;
-
- Log.i(TAG, "🤠 resuming chatlist: starting update timer");
- reloadTimer = new Timer();
- reloadTimer.scheduleAtFixedRate(new TimerTask() {
- @Override
- public void run() {
- Util.runOnMain(() -> {
- Log.i(TAG, "🤠 update timer: refreshing chatlist");
- list.getAdapter().notifyDataSetChanged();
- });
- }
- }, reloadTimerInstantly? 0 : 60 * 1000, 60 * 1000);
- }
-
- @Override
- public void onPause() {
- super.onPause();
-
- Log.i(TAG, "🤠 pausing chatlist: cancel update timer");
- reloadTimer.cancel();
- reloadTimerInstantly = true;
-
- fab.stopPulse();
- }
-
- public void onNewIntent() {
- initializeFabClickListener(actionMode != null);
- }
-
- public ConversationListAdapter getListAdapter() {
- return (ConversationListAdapter) list.getAdapter();
- }
-
- private void initializeFabClickListener(boolean isActionMode) {
- Intent intent = new Intent(getActivity(), NewConversationActivity.class);
- if (isRelayingMessageContent(getActivity())) {
- if (isActionMode) {
- fab.setOnClickListener(v -> {
- final Set selectedChats = getListAdapter().getBatchSelections();
- ArrayList uris = getSharedUris(getActivity());
- String message;
- if (isForwarding(getActivity())) {
- message = String.format(Locale.getDefault(), getString(R.string.ask_forward_multiple), selectedChats.size());
- } else if (uris.size() > 0) {
- message = String.format(Locale.getDefault(), getString(R.string.share_multiple_attachments_multiple_chats), uris.size(), selectedChats.size());
- } else {
- message = String.format(Locale.getDefault(), getString(R.string.share_text_multiple_chats), selectedChats.size(), getSharedText(getActivity()));
- }
- Context context = getContext();
- if (context != null) {
- new AlertDialog.Builder(context)
- .setMessage(message)
- .setCancelable(false)
- .setNegativeButton(android.R.string.cancel, ((dialog, which) -> {}))
- .setPositiveButton(R.string.menu_send, (dialog, which) -> {
- SendRelayedMessageUtil.immediatelyRelay(getActivity(), selectedChats.toArray(new Long[selectedChats.size()]));
- actionMode.finish();
- actionMode = null;
- getActivity().finish();
- })
- .show();
- }
- });
- } else {
- acquireRelayMessageContent(getActivity(), intent);
- fab.setOnClickListener(v -> getActivity().startActivity(intent));
- }
- } else {
- fab.setOnClickListener(v -> startActivity(intent));
- }
- }
-
- @SuppressLint({"StaticFieldLeak", "NewApi"})
- private void updateReminders() {
- // by the time onPostExecute() is asynchronously run, getActivity() might return null, so get the activity here:
- Activity activity = getActivity();
- new AsyncTask() {
- @Override
- protected Void doInBackground(Context... params) {
- final Context context = params[0];
- try {
- if (DozeReminder.isEligible(context)) {
- DozeReminder.addDozeReminderDeviceMsg(context);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-
- @Override
- protected void onPostExecute(Void result) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
- if (!Prefs.getBooleanPreference(activity, Prefs.ASKED_FOR_NOTIFICATION_PERMISSION, false)) {
- Prefs.setBooleanPreference(activity, Prefs.ASKED_FOR_NOTIFICATION_PERMISSION, true);
- Permissions.with(activity)
- .request(Manifest.permission.POST_NOTIFICATIONS)
- .ifNecessary()
- .onAllGranted(() -> {
- DozeReminder.maybeAskDirectly(activity);
- })
- .onAnyDenied(() -> {
- final DcContext dcContext = DcHelper.getContext(activity);
- DcMsg msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
- msg.setText("\uD83D\uDC49 "+activity.getString(R.string.notifications_disabled)+" \uD83D\uDC48\n\n"
- +activity.getString(R.string.perm_explain_access_to_notifications_denied));
- dcContext.addDeviceMsg("android.notifications-disabled", msg);
- })
- .execute();
- }
- } else {
- DozeReminder.maybeAskDirectly(activity);
- }
- }
- }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, activity);
- }
-
- private void handlePinAllSelected() {
- final DcContext dcContext = DcHelper.getContext(getActivity());
- final Set selectedConversations = new HashSet<>(getListAdapter().getBatchSelections());
- boolean doPin = areSomeSelectedChatsUnpinned();
- for (long chatId : selectedConversations) {
- dcContext.setChatVisibility((int)chatId,
- doPin? DcChat.DC_CHAT_VISIBILITY_PINNED : DcChat.DC_CHAT_VISIBILITY_NORMAL);
- }
- if (actionMode != null) {
- actionMode.finish();
- actionMode = null;
- }
- }
-
- @SuppressLint("StaticFieldLeak")
- private void handleArchiveAllSelected() {
- final DcContext dcContext = DcHelper.getContext(getActivity());
- final Set selectedConversations = new HashSet<>(getListAdapter().getBatchSelections());
- final boolean archive = this.archive;
-
- int snackBarTitleId;
-
- if (archive) snackBarTitleId = R.plurals.chat_unarchived;
- else snackBarTitleId = R.plurals.chat_archived;
-
- int count = selectedConversations.size();
- String snackBarTitle = getResources().getQuantityString(snackBarTitleId, count, count);
-
- new SnackbarAsyncTask(getView(), snackBarTitle,
- getString(R.string.undo),
- Snackbar.LENGTH_LONG, true)
- {
-
- @Override
- protected void onPostExecute(Void result) {
- super.onPostExecute(result);
-
- if (actionMode != null) {
- actionMode.finish();
- actionMode = null;
- }
- }
-
- @Override
- protected void executeAction(@Nullable Void parameter) {
- for (long chatId : selectedConversations) {
- dcContext.setChatVisibility((int)chatId,
- !archive? DcChat.DC_CHAT_VISIBILITY_ARCHIVED : DcChat.DC_CHAT_VISIBILITY_NORMAL);
- }
- }
-
- @Override
- protected void reverseAction(@Nullable Void parameter) {
- for (long threadId : selectedConversations) {
- dcContext.setChatVisibility((int)threadId,
- !archive? DcChat.DC_CHAT_VISIBILITY_NORMAL : DcChat.DC_CHAT_VISIBILITY_ARCHIVED);
- }
- }
- }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
- }
-
- @SuppressLint("StaticFieldLeak")
- private void handleDeleteAllSelected() {
- final DcContext dcContext = DcHelper.getContext(getActivity());
- int conversationsCount = getListAdapter().getBatchSelections().size();
- AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
- alert.setMessage(getActivity().getResources().getQuantityString(R.plurals.ask_delete_chat,
- conversationsCount, conversationsCount));
- alert.setCancelable(true);
-
- alert.setPositiveButton(R.string.delete, (dialog, which) -> {
- final Set selectedConversations = (getListAdapter())
- .getBatchSelections();
-
- if (!selectedConversations.isEmpty()) {
- new AsyncTask() {
- private ProgressDialog dialog;
-
- @Override
- protected void onPreExecute() {
- dialog = ProgressDialog.show(getActivity(),
- "",
- getActivity().getString(R.string.one_moment),
- true, false);
- }
-
- @Override
- protected Void doInBackground(Void... params) {
- int accountId = dcContext.getAccountId();
- for (long chatId : selectedConversations) {
- DcHelper.getNotificationCenter(getContext()).removeNotifications(accountId, (int) chatId);
- dcContext.deleteChat((int) chatId);
- DirectShareUtil.clearShortcut(getContext(), (int) chatId);
- }
- return null;
- }
-
- @Override
- protected void onPostExecute(Void result) {
- dialog.dismiss();
- if (actionMode != null) {
- actionMode.finish();
- actionMode = null;
- }
- }
- }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
- }
- });
-
- alert.setNegativeButton(android.R.string.cancel, null);
- alert.show();
- }
-
- private void handleSelectAllThreads() {
- getListAdapter().selectAllThreads();
- actionMode.setTitle(String.valueOf(getListAdapter().getBatchSelections().size()));
- }
-
- private void handleCreateConversation(int chatId) {
- ((ConversationSelectedListener)getActivity()).onCreateConversation(chatId);
- }
-
- private final Object loadChatlistLock = new Object();
- private boolean inLoadChatlist;
- private boolean needsAnotherLoad;
- private void loadChatlistAsync() {
- synchronized (loadChatlistLock) {
- needsAnotherLoad = true;
- if (inLoadChatlist) {
- Log.i(TAG, "chatlist loading debounced");
- return;
- }
- inLoadChatlist = true;
- }
-
- Util.runOnAnyBackgroundThread(() -> {
- while(true) {
- synchronized (loadChatlistLock) {
- if (!needsAnotherLoad) {
- inLoadChatlist = false;
- return;
- }
- needsAnotherLoad = false;
- }
-
- Log.i(TAG, "executing debounced chatlist loading");
- loadChatlist();
- Util.sleep(100);
- }
- });
- }
-
- private void loadChatlist() {
- int listflags = 0;
- if (archive) {
- listflags |= DcContext.DC_GCL_ARCHIVED_ONLY;
- } else if (RelayUtil.isRelayingMessageContent(getActivity())) {
- listflags |= DcContext.DC_GCL_FOR_FORWARDING;
- } else {
- listflags |= DcContext.DC_GCL_ADD_ALLDONE_HINT;
- }
-
- Context context = getContext();
- if (context == null) {
- // can't load chat list at this time, see: https://github.com/deltachat/deltachat-android/issues/2012
- Log.w(TAG, "Ignoring call to loadChatlist()");
- return;
- }
- DcChatlist chatlist = DcHelper.getContext(context).getChatlist(listflags, queryFilter.isEmpty() ? null : queryFilter, 0);
-
- Util.runOnMain(() -> {
- if (chatlist.getCnt() <= 0 && TextUtils.isEmpty(queryFilter)) {
- list.setVisibility(View.INVISIBLE);
- emptyState.setVisibility(View.VISIBLE);
- emptySearch.setVisibility(View.INVISIBLE);
- fab.startPulse(3 * 1000);
- } else if (chatlist.getCnt() <= 0 && !TextUtils.isEmpty(queryFilter)) {
- list.setVisibility(View.INVISIBLE);
- emptyState.setVisibility(View.GONE);
- emptySearch.setVisibility(View.VISIBLE);
- emptySearch.setText(getString(R.string.search_no_result_for_x, queryFilter));
- } else {
- list.setVisibility(View.VISIBLE);
- emptyState.setVisibility(View.GONE);
- emptySearch.setVisibility(View.INVISIBLE);
- fab.stopPulse();
- }
-
- getListAdapter().changeData(chatlist);
- });
- }
-
- @Override
- public void onItemClick(ConversationListItem item) {
- if (actionMode == null) {
- int chatId = (int)item.getChatId();
- handleCreateConversation(chatId);
- } else {
- ConversationListAdapter adapter = (ConversationListAdapter) list.getAdapter();
- adapter.toggleThreadInBatchSet(item.getChatId());
-
- if (adapter.getBatchSelections().size() == 0) {
- actionMode.finish();
- } else {
- updateActionModeItems(actionMode.getMenu());
- actionMode.setTitle(String.valueOf(getListAdapter().getBatchSelections().size()));
- }
-
- adapter.notifyDataSetChanged();
- }
- }
-
- @Override
- public void onItemLongClick(ConversationListItem item) {
- actionMode = ((AppCompatActivity)getActivity()).startSupportActionMode(ConversationListFragment.this);
-
- if (actionMode != null) {
- getListAdapter().initializeBatchMode(true);
- getListAdapter().toggleThreadInBatchSet(item.getChatId());
- getListAdapter().notifyDataSetChanged();
- Menu menu = actionMode.getMenu();
- if (menu != null) {
- updateActionModeItems(menu);
- }
- }
- }
-
- @Override
- public void onSwitchToArchive() {
- ((ConversationSelectedListener)getActivity()).onSwitchToArchive();
- }
-
- public interface ConversationSelectedListener {
- void onCreateConversation(int chatId);
- void onSwitchToArchive();
- }
-
- private boolean areSomeSelectedChatsUnpinned() {
- DcContext dcContext = DcHelper.getContext(getActivity());
- final Set selectedChats = getListAdapter().getBatchSelections();
- for (long chatId : selectedChats) {
- DcChat dcChat = dcContext.getChat((int)chatId);
- if (dcChat.getVisibility()!=DcChat.DC_CHAT_VISIBILITY_PINNED) {
- return true;
- }
- }
- return false;
- }
-
- private void updateActionModeItems(Menu menu) {
- // We do not show action mode icons when relaying (= sharing or forwarding).
- if (!isRelayingMessageContent(getActivity())) {
- MenuItem pinItem = menu.findItem(R.id.menu_pin_selected);
- if (areSomeSelectedChatsUnpinned()) {
- pinItem.setIcon(R.drawable.ic_pin_white);
- pinItem.setTitle(R.string.pin_chat);
- } else {
- pinItem.setIcon(R.drawable.ic_unpin_white);
- pinItem.setTitle(R.string.unpin_chat);
- }
- }
- }
-
- @Override
- public boolean onCreateActionMode(ActionMode mode, Menu menu) {
- if (isRelayingMessageContent(getActivity())) {
- Context context = getContext();
- if (context != null) {
- fab.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_send_sms_white_24dp));
- }
- fab.setVisibility(View.VISIBLE);
- initializeFabClickListener(true);
- } else {
-
- MenuInflater inflater = getActivity().getMenuInflater();
-
- inflater.inflate(R.menu.conversation_list_batch_pin, menu);
-
- if (archive) inflater.inflate(R.menu.conversation_list_batch_unarchive, menu);
- else inflater.inflate(R.menu.conversation_list_batch_archive, menu);
-
- inflater.inflate(R.menu.conversation_list, menu);
- }
-
- mode.setTitle("1");
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- getActivity().getWindow().setStatusBarColor(getResources().getColor(R.color.action_mode_status_bar));
- }
-
- return true;
- }
-
- @Override
- public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
- return false;
- }
-
- @Override
- public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
- switch (item.getItemId()) {
- case R.id.menu_select_all: handleSelectAllThreads(); return true;
- case R.id.menu_delete_selected: handleDeleteAllSelected(); return true;
- case R.id.menu_pin_selected: handlePinAllSelected(); return true;
- case R.id.menu_archive_selected: handleArchiveAllSelected(); return true;
- }
-
- return false;
- }
-
- @Override
- public void onDestroyActionMode(ActionMode mode) {
- getListAdapter().initializeBatchMode(false);
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- TypedArray color = getActivity().getTheme().obtainStyledAttributes(new int[] {android.R.attr.statusBarColor});
- getActivity().getWindow().setStatusBarColor(color.getColor(0, Color.BLACK));
- color.recycle();
- }
-
- Context context = getContext();
- if (context != null) {
- fab.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.ic_add_white_24dp));
- }
- if (archive) fab.setVisibility(View.GONE);
- else fab.setVisibility(View.VISIBLE);
- initializeFabClickListener(false);
-
- actionMode = null;
- }
-
- @Override
- public void handleEvent(@NonNull DcEvent event) {
- if (event.getId() == DcContext.DC_EVENT_CONNECTIVITY_CHANGED) {
- Activity activity = getActivity();
- if (activity instanceof ConversationListActivity) {
- ((ConversationListActivity) activity).refreshTitle();
- }
-
- } else if (event.getId() == DcContext.DC_EVENT_SELFAVATAR_CHANGED) {
- Activity activity = getActivity();
- if (activity instanceof ConversationListActivity) {
- ((ConversationListActivity) activity).refreshAvatar();
- }
-
- } else {
- loadChatlistAsync();
- }
- }
-
-}
-
-
diff --git a/src/org/thoughtcrime/securesms/attachments/AttachmentServer.java b/src/org/thoughtcrime/securesms/attachments/AttachmentServer.java
deleted file mode 100644
index aebd4f899..000000000
--- a/src/org/thoughtcrime/securesms/attachments/AttachmentServer.java
+++ /dev/null
@@ -1,373 +0,0 @@
-package org.thoughtcrime.securesms.attachments;
-
-
-import android.content.Context;
-import android.net.Uri;
-import androidx.annotation.NonNull;
-import android.util.Log;
-
-import org.thoughtcrime.securesms.mms.PartAuthority;
-import org.thoughtcrime.securesms.util.Util;
-import org.thoughtcrime.securesms.util.Hex;
-
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.InetAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketException;
-import java.net.SocketTimeoutException;
-import java.net.UnknownHostException;
-import java.security.MessageDigest;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-import java.util.StringTokenizer;
-
-/**
- * @author Stefan "frostymarvelous" Froelich
- */
-public class AttachmentServer implements Runnable {
-
- private static final String TAG = AttachmentServer.class.getSimpleName();
-
- private final Context context;
- private final Attachment attachment;
- private final ServerSocket socket;
- private final int port;
- private final String auth;
-
- private volatile boolean isRunning;
-
- public AttachmentServer(Context context, Attachment attachment)
- throws IOException
- {
- try {
- this.context = context;
- this.attachment = attachment;
- this.socket = new ServerSocket(0, 0, InetAddress.getByAddress(new byte[]{127, 0, 0, 1}));
- this.port = socket.getLocalPort();
- this.auth = Hex.toStringCondensed(Util.getSecretBytes(16));
-
- this.socket.setSoTimeout(5000);
- } catch (UnknownHostException e) {
- throw new AssertionError(e);
- }
- }
-
- public Uri getUri() {
- return Uri.parse(String.format(Locale.ROOT, "http://127.0.0.1:%d/%s", port, auth));
- }
-
- public void start() {
- isRunning = true;
- new Thread(this).start();
- }
-
- public void stop() {
- isRunning = false;
- }
-
- @Override
- public void run() {
- while (isRunning) {
- Socket client = null;
-
- try {
- client = socket.accept();
-
- if (client != null) {
- StreamToMediaPlayerTask task = new StreamToMediaPlayerTask(client, "/" + auth);
-
- if (task.processRequest()) {
- task.execute();
- }
- }
-
- } catch (SocketTimeoutException e) {
- Log.w(TAG, e);
- } catch (IOException e) {
- Log.e(TAG, "Error connecting to client", e);
- } finally {
- try {if (client != null) client.close();} catch (IOException e) {}
- }
- }
-
- Log.d(TAG, "Proxy interrupted. Shutting down.");
- }
-
-
- private class StreamToMediaPlayerTask {
-
- private final @NonNull Socket client;
- private final @NonNull String auth;
-
- private long cbSkip;
- private Properties parameters;
- private Properties request;
- private Properties requestHeaders;
-// private String filePath;
-
- public StreamToMediaPlayerTask(@NonNull Socket client, @NonNull String auth) {
- this.client = client;
- this.auth = auth;
- }
-
- public boolean processRequest() throws IOException {
- InputStream is = client.getInputStream();
- final int bufferSize = 8192;
- byte[] buffer = new byte[bufferSize];
- int splitByte = 0;
- int readLength = 0;
-
- {
- int read = is.read(buffer, 0, bufferSize);
- while (read > 0) {
- readLength += read;
- splitByte = findHeaderEnd(buffer, readLength);
- if (splitByte > 0)
- break;
- read = is.read(buffer, readLength, bufferSize - readLength);
- }
- }
-
- // Create a BufferedReader for parsing the header.
- ByteArrayInputStream hbis = new ByteArrayInputStream(buffer, 0, readLength);
- BufferedReader hin = new BufferedReader(new InputStreamReader(hbis));
-
- request = new Properties();
- parameters = new Properties();
- requestHeaders = new Properties();
-
- try {
- decodeHeader(hin, request, parameters, requestHeaders);
- } catch (InterruptedException e1) {
- Log.e(TAG, "Exception: " + e1.getMessage());
- e1.printStackTrace();
- }
-
- for (Map.Entry