Compare commits

..

922 Commits

Author SHA1 Message Date
adbenitez 18384f9c69 Merge remote-tracking branch 'upstream/main' into adb/merge-code-tree-changes 2024-06-13 18:50:37 +02:00
adbenitez 708ea8378e move assets, res and java source code to src/main 2024-06-13 17:18:48 +02:00
adbenitez b591775512 fix README and webxdc.js 2024-06-05 22:36:31 +02:00
adbenitez 03a42c5858 update core 2024-06-03 22:47:03 +02:00
adbenitez 3f4773a819 Merge remote-tracking branch 'upstream/main' 2024-06-03 22:46:31 +02:00
adbenitez be5de4a98c improve webxdc experience for communities 2024-06-03 22:44:07 +02:00
adbenitez 0e76055939 update core 2024-05-30 22:55:39 +02:00
adbenitez c49918aefb update version 2024-05-30 22:54:38 +02:00
adbenitez 91deb76d82 disable extra webxdc/bots in communities 2024-05-30 22:53:39 +02:00
adbenitez 2bdeb614fc Merge remote-tracking branch 'upstream/main' 2024-05-30 17:04:38 +02:00
adbenitez 387e8d073e Merge remote-tracking branch 'upstream/main' 2024-05-24 21:32:06 +02:00
adbenitez f6abe8d4c0 fix problem with gson and R8 2024-05-24 21:24:22 +02:00
adbenitez 0116e73b26 allow to open communities from Apps tab and draft 2024-05-22 14:49:28 +02:00
adbenitez 2d1aae44b2 Merge remote-tracking branch 'upstream/main' 2024-05-22 14:14:05 +02:00
adbenitez 99d7f0443f Merge remote-tracking branch 'upstream/main' 2024-05-20 14:07:29 +02:00
adbenitez 412cfdf047 fix bug in Recipient 2024-05-20 12:48:53 +02:00
adbenitez d0bfe3a386 Merge remote-tracking branch 'upstream/main' 2024-05-20 12:31:10 +02:00
adbenitez b346444530 reset name after device transfer of community and ask for new name 2024-05-19 23:24:07 +02:00
adbenitez f6be87a4d7 don't show reply-privately in communities 2024-05-19 23:05:55 +02:00
adbenitez 8badffbc69 remove unused strings 2024-05-19 21:41:54 +02:00
adbenitez 7fcf7344c1 disable reactions in community 2024-05-19 21:33:48 +02:00
adbenitez 21fae7e799 fix ConversationAdaptiveActionsToolbar 2024-05-19 21:33:14 +02:00
adbenitez 52982e549e update full_description.txt 2024-05-19 20:24:21 +02:00
adbenitez 59f4c139a3 remove member add/remove from message settings 2024-05-19 20:23:33 +02:00
adbenitez ce72ddd5f8 remove http/https handling from ShareActivity 2024-05-19 19:42:25 +02:00
adbenitez 5763a92301 Merge remote-tracking branch 'upstream/main' 2024-05-19 19:15:38 +02:00
adbenitez e2379e5b5f update README 2024-05-19 18:31:51 +02:00
adbenitez 9fb5d11039 fix some bugs 2024-05-18 18:11:57 +02:00
adbenitez 8cdc361ec1 Merge remote-tracking branch 'upstream/main' 2024-05-18 17:03:55 +02:00
adbenitez b4cddd2c28 display xdc community files 2024-05-18 16:56:45 +02:00
adbenitez 023578fa6e limit logcat output 2024-05-15 23:11:01 +02:00
adbenitez fdcf314894 fix bug after merge 2024-05-15 23:10:42 +02:00
adbenitez 4c23607356 Merge remote-tracking branch 'upstream/main' 2024-05-15 22:39:24 +02:00
adbenitez 7ff34ed43c Merge remote-tracking branch 'upstream/main' 2024-05-15 22:34:14 +02:00
adbenitez ee08b612c1 avoid dangerous server auto-deletion in communities 2024-05-15 06:18:46 +02:00
adbenitez 6be90cef21 display community label instead of address in account list
also display groups as super groups
2024-05-15 06:18:12 +02:00
adbenitez 34ab6bd458 remove duplicated settings in advanced 2024-05-15 05:49:25 +02:00
adbenitez c2dc1a979e update intro1.png 2024-05-15 05:35:44 +02:00
adbenitez 3c3bd4a77d nice support for communities 2024-05-15 05:35:19 +02:00
adbenitez 9c82d622af don't display as sticker if message is in partial-download state 2024-05-08 17:24:04 +02:00
adbenitez 27e2e66f84 Merge remote-tracking branch 'upstream/adb/improve-welcome-activity' 2024-05-07 18:56:50 +02:00
adbenitez ab03c02d3e remove subject setting 2024-05-07 18:54:52 +02:00
adbenitez a221a05768 fix QrShowFragment 2024-05-07 18:16:17 +02:00
adbenitez 431ab02bf5 Merge remote-tracking branch 'upstream/main' 2024-05-07 18:15:56 +02:00
adbenitez 128ce7574e use OnBackPressedCallback 2024-05-06 19:29:12 +02:00
adbenitez 79da2da30a InstantOnboardingActivity: return to chatlist if not started from WelcomeActivity 2024-05-06 18:50:10 +02:00
adbenitez 80b319a457 remove unused code in startQrAccountCreation() and rename to startBackupTransfer() 2024-05-06 18:00:51 +02:00
adbenitez f85007617c remove unused field manualConfigure 2024-05-06 17:44:44 +02:00
adbenitez cd9203bda5 fix bug: open WelcomeActivity when scanning backup from chatlist 2024-05-06 17:44:06 +02:00
adbenitez d4072c81bd Merge remote-tracking branch 'upstream/main' 2024-05-06 14:31:57 +02:00
adbenitez 258ca9742a allow to reply to some system messages 2024-04-26 13:45:08 +02:00
adbenitez 13274b95be fix openOnlineUrl() 2024-04-26 12:32:33 +02:00
adbenitez 5986e60e3a Merge remote-tracking branch 'upstream/main' 2024-04-25 22:10:23 +02:00
adbenitez e620463951 Merge remote-tracking branch 'upstream/main' 2024-04-25 17:17:11 +02:00
adbenitez 5f1da797a1 Merge remote-tracking branch 'upstream/main' 2024-04-25 17:11:44 +02:00
adbenitez e02de092c4 Merge remote-tracking branch 'upstream/main' 2024-04-19 23:48:20 +02:00
adbenitez 57404bfe1e Merge remote-tracking branch 'upstream/main' 2024-04-09 20:08:53 -04:00
adbenitez 3d73ca43b6 Merge remote-tracking branch 'upstream/main' 2024-04-05 18:12:38 -04:00
adbenitez 5c0b0d84dc change public bots instance 2024-03-28 07:30:05 -04:00
adbenitez f1b02d9960 try to fix android 4 2024-03-28 07:28:13 -04:00
adbenitez e24fa54bb3 Merge remote-tracking branch 'upstream/main' 2024-03-27 12:38:14 -04:00
adbenitez b0234e3c70 update submodule 2024-03-09 18:46:07 -05:00
adbenitez a46221335f Merge remote-tracking branch 'upstream/main' 2024-03-09 18:27:28 -05:00
adbenitez 25d65178b2 try to fix carsh on android 4 2024-03-07 00:25:55 -05:00
adbenitez 7690dbd9ac Merge remote-tracking branch 'upstream/main' 2024-03-06 23:55:19 -05:00
adbenitez 76d5da358c update description 2024-02-24 01:35:07 -05:00
adbenitez e4c73b04f2 Merge remote-tracking branch 'upstream/main' 2024-02-24 01:08:06 -05:00
adbenitez f95789d622 update full description 2024-02-24 01:04:59 -05:00
adbenitez 60ff22f4e9 update submodule 2024-02-11 22:51:28 -05:00
adbenitez 4c8407f6e1 add back camera permission 2024-02-11 22:41:34 -05:00
adbenitez 2b96fcbe06 avoid crash in android 4 2024-02-11 10:34:32 -05:00
adbenitez 424afdf702 update version 2024-02-10 00:48:18 -05:00
adbenitez 3576aa47a7 update submodule 2024-02-10 00:37:28 -05:00
adbenitez 47b2f4d259 enable arm64-v8a again 2024-02-10 00:36:33 -05:00
adbenitez f599cda957 try to fix crash in android 4 2024-02-09 23:45:08 -05:00
adbenitez f3b476eef3 update dev email 2024-02-09 23:44:46 -05:00
adbenitez 885378ebfc update core and version number 2024-02-07 19:14:28 -05:00
adbenitez 84b92f4693 remove CONFIG_SENTBOX_WATCH 2024-02-07 19:13:23 -05:00
adbenitez eafeda8d74 Merge remote-tracking branch 'upstream/main' 2024-02-07 18:48:42 -05:00
adbenitez f574734b93 fix bug 2024-02-07 18:40:45 -05:00
adbenitez d7219edbe1 add "Create Account" button 2024-02-06 22:57:28 -05:00
adbenitez 101b09a2e1 update version number 2024-02-06 21:07:29 -05:00
adbenitez d73ca4be0b update submodule 2024-02-06 21:06:59 -05:00
adbenitez 1ac333daab Merge remote-tracking branch 'upstream/main' 2024-02-06 20:54:26 -05:00
Asiel Díaz Benítez 431b17baec Merge pull request #16 from deltalab-org/adb/issue-15
remove unnecessary CAMERA permission (since built-in camera was removed)
2024-02-06 20:48:58 -05:00
adbenitez c264daa666 remove unnecessary CAMERA permission (since built-in camera was removed)
also tweak build.gradle to avoid unnecessary metadata
2024-02-06 16:57:37 -05:00
adbenitez 221965a747 update submodule 2024-02-06 01:20:01 -05:00
adbenitez 6e66645af0 Merge remote-tracking branch 'upstream/main' 2024-02-03 20:41:14 -05:00
adbenitez aa83cb2980 update public-bots address 2024-02-03 20:39:45 -05:00
adbenitez 5b2dbd2400 Merge remote-tracking branch 'upstream/main' 2024-02-02 13:43:36 -05:00
adbenitez 5c21a9781f update menu links to bots 2024-02-02 13:41:47 -05:00
adbenitez dfe8ce7bff update values-es/strings.xml 2024-02-02 13:41:29 -05:00
adbenitez 3660fe87a8 Merge remote-tracking branch 'upstream/main' 2024-02-01 04:39:27 -05:00
adbenitez 22db66811d tweak reactions pills 2024-02-01 04:23:32 -05:00
adbenitez c83806b005 tweak reactions pills 2024-02-01 02:08:18 -05:00
adbenitez a414564367 Merge remote-tracking branch 'upstream/main' 2024-02-01 01:37:11 -05:00
adbenitez 9cc0f79fe2 Merge remote-tracking branch 'upstream/main' 2024-01-31 09:36:06 -05:00
adbenitez 78c0734d1d Merge remote-tracking branch 'upstream/main' 2024-01-31 09:25:05 -05:00
adbenitez 18b949bcf3 limit global badge 2024-01-31 02:02:25 -05:00
adbenitez 1518f54bb8 Merge remote-tracking branch 'upstream/adb/issue-2939' 2024-01-31 01:37:12 -05:00
adbenitez eb3b7191ff Merge remote-tracking branch 'upstream/main' 2024-01-31 01:29:44 -05:00
adbenitez 4b5fe479fb Merge remote-tracking branch 'upstream/main' 2024-01-30 23:27:24 -05:00
adbenitez 657de60ebc share link together with QR image, improve QR image 2024-01-30 01:26:27 -05:00
adbenitez 5b7791e610 rename INVITE_PAGE to INVITE_DOMAIN 2024-01-30 01:14:04 -05:00
adbenitez 7143711f0f copy invite links to clipboard 2024-01-29 09:44:45 -05:00
adbenitez 020acbc988 remove outdated tip 2024-01-28 07:54:24 -05:00
adbenitez 4f22230833 tweak self-reaction color 2024-01-28 07:54:04 -05:00
adbenitez 76da7857a6 Merge remote-tracking branch 'upstream/main' 2024-01-28 07:16:15 -05:00
adbenitez a7d08328ad show address if no last-seen info is available 2024-01-26 21:41:55 -05:00
adbenitez cd63487628 Merge remote-tracking branch 'upstream/main' 2024-01-25 04:44:20 -05:00
adbenitez f976f66334 undo change introduced for debugging 2024-01-20 19:34:32 -05:00
adbenitez 9fa07fe8f3 improve coversation title's subtitle 2024-01-20 02:46:34 -05:00
adbenitez b1df4a70b2 Merge remote-tracking branch 'upstream/adb/show-last-seen' 2024-01-20 01:04:02 -05:00
adbenitez 7f46e56b6d Merge remote-tracking branch 'upstream/main' 2024-01-20 01:03:15 -05:00
adbenitez d6d59d52f6 display last-seen information if address will not be shown 2024-01-20 00:33:02 -05:00
adbenitez 270cbbeded Merge remote-tracking branch 'upstream/main' 2024-01-13 22:14:50 -05:00
adbenitez 3b8b8ec6f2 update core with recent bug fixes 2024-01-05 20:04:43 -05:00
adbenitez 60e067511b update README 2023-12-30 23:05:59 -05:00
adbenitez 7cda4b8880 update fastline data 2023-12-30 21:41:35 -05:00
adbenitez 886a5d2517 update build.gradle 2023-12-30 18:07:06 -05:00
adbenitez 0d5217cdba update core 2023-12-30 18:05:01 -05:00
adbenitez c7289b50e6 add "working.." indicator 2023-12-30 18:03:43 -05:00
adbenitez 822400ede7 fix issues with account switch in recycleview 2023-12-30 16:57:27 -05:00
adbenitez 514b65ce12 Merge remote-tracking branch 'upstream/main' 2023-12-30 15:37:43 -05:00
adbenitez d30fea1211 update proguard-rules.pro 2023-12-14 22:20:20 -05:00
adbenitez 46dc8c157d increase enable_switch right padding 2023-12-12 15:08:37 -05:00
adbenitez 95a33be26c improve event handling in account list 2023-12-12 12:03:37 -05:00
adbenitez 5afe2cacb4 Merge remote-tracking branch 'upstream/main' 2023-12-12 11:47:54 -05:00
adbenitez 6d217e64e1 allow to enable and disable accounts 2023-12-11 16:15:12 -05:00
adbenitez adea9016b9 remove unnecessary code 2023-12-10 16:08:30 -05:00
adbenitez ab5c3bf4d6 properly display green checkmark 2023-12-10 14:08:52 -05:00
adbenitez 49e691a560 update full description 2023-12-10 13:04:16 -05:00
adbenitez 4e300faf96 update fastlane full description 2023-12-09 23:37:49 -05:00
adbenitez 30ca11cd36 Merge remote-tracking branch 'upstream/main' 2023-12-09 23:25:56 -05:00
adbenitez b09b1a10f1 fix: handle big html files 2023-12-09 20:07:34 -05:00
adbenitez 3ab7370682 update gradle plugin 2023-11-20 20:53:04 +01:00
adbenitez 80f1b55122 use same number for armeabi-v7a and universal 2023-11-19 13:09:41 +01:00
adbenitez 8c79f50781 update version number 2023-11-17 21:04:13 +01:00
adbenitez ed89eca893 remove pref_system_emoji from res/xml-v29/ 2023-11-17 21:03:11 +01:00
adbenitez 7098e7fa2e remove pref_system_emoji preference 2023-11-17 20:57:34 +01:00
adbenitez 910cf4e6cd remove unused emojis 2023-11-17 18:20:22 +01:00
adbenitez e8455c7c1c update workflows 2023-11-17 17:29:27 +01:00
adbenitez 13ada60f68 update core 2023-11-17 16:42:47 +01:00
adbenitez 9e6e597215 Merge remote-tracking branch 'upstream/main' 2023-11-17 16:42:21 +01:00
adbenitez cb1ccee136 upodate strings 2023-11-17 00:20:18 +01:00
adbenitez ac8a799df6 Merge remote-tracking branch 'upstream/main' 2023-11-16 23:42:14 +01:00
adbenitez 5a121015a5 use internal help instead of external link 2023-11-16 22:02:42 +01:00
adbenitez 1caca9ba28 show dialog if only self is in new group 2023-11-16 22:02:42 +01:00
adbenitez 78afdf2935 Merge remote-tracking branch 'upstream/main' 2023-11-16 22:00:31 +01:00
adbenitez e63808de04 Merge remote-tracking branch 'upstream/adb/issue-2857' 2023-11-14 23:27:06 +01:00
adbenitez d9e1345f0c Merge remote-tracking branch 'upstream/main' 2023-11-14 23:25:17 +01:00
adbenitez e8f664ec8f request lock-pattern to access "password and account" section 2023-11-14 20:49:24 +01:00
adbenitez 26b2141e55 improve "password and account" button 2023-11-14 19:47:56 +01:00
adbenitez 382220088c Merge remote-tracking branch 'upstream/main' 2023-11-14 18:57:42 +01:00
adbenitez 2c1e80fc1b Merge remote-tracking branch 'upstream/main' 2023-11-14 12:34:33 +01:00
adbenitez 04b48f1e49 Merge remote-tracking branch 'upstream/main' 2023-11-13 22:34:59 +01:00
adbenitez d23d84d677 Merge remote-tracking branch 'upstream/main' 2023-11-13 19:41:55 +01:00
adbenitez 5e6d997f13 remove broadcast and reactions experimental toggle 2023-11-13 18:56:30 +01:00
adbenitez b19091e5aa remove camera button from attachment selector
also always display the location streaming button
2023-11-13 18:52:31 +01:00
adbenitez 9350b60494 tweak new-contact activity 2023-11-13 12:56:40 +01:00
adbenitez f4cde4ab7a Merge remote-tracking branch 'upstream/main' 2023-11-13 12:40:58 +01:00
adbenitez cfd093c58b Merge remote-tracking branch 'upstream/adb/improve-new-contact' 2023-11-13 12:40:32 +01:00
adbenitez 6c1401670a add missing icon 2023-11-12 20:08:05 +01:00
adbenitez 97394a7321 add icons to "New Contact" screen 2023-11-12 20:07:35 +01:00
adbenitez 97ec5b835a Merge remote-tracking branch 'upstream/main' 2023-11-11 12:03:03 +01:00
adbenitez 51c0b2b7b8 Merge remote-tracking branch 'upstream/main' 2023-11-09 13:35:18 +01:00
adbenitez e500738954 remove built-in camera 2023-11-08 12:24:11 +01:00
adbenitez 841b893770 remove "watch sent folder" option 2023-11-07 23:28:24 +01:00
adbenitez 88ba4aeb9d Merge remote-tracking branch 'upstream/main' 2023-11-07 23:08:12 +01:00
adbenitez c5da934fc1 don't build 64bit architectures 2023-11-05 22:06:13 +01:00
adbenitez 0f093c8bd0 Merge remote-tracking branch 'upstream/main' 2023-11-05 21:20:16 +01:00
adbenitez d97c1572a1 create MarkdownUtil class 2023-11-05 19:19:05 +01:00
adbenitez 1ea13ce279 enable reactions by default, tweak default reactions 2023-11-05 02:02:36 +01:00
adbenitez e0f46ea320 update dependencies 2023-11-05 01:23:15 +01:00
adbenitez e0af047c61 prefer system emojis by default 2023-11-04 23:30:10 +01:00
adbenitez 56dd7dbd0b improve emoji detection when deciding to send as reaction 2023-11-04 05:08:35 +01:00
adbenitez b98f617a46 update submodule 2023-11-04 00:17:35 +01:00
adbenitez 8f3fc6171a Merge remote-tracking branch 'upstream/main' 2023-11-04 00:17:05 +01:00
adbenitez 6e4a463fb5 Merge remote-tracking branch 'upstream/main' 2023-11-04 00:06:42 +01:00
adbenitez 2e4046253d fix bug in handleSharing() 2023-10-29 17:23:51 +01:00
adbenitez d09ac452dc update app icon 2023-10-29 06:50:51 +01:00
adbenitez 9ebf8344a6 add transparency to apklis icon 2023-10-29 05:20:52 +01:00
adbenitez 37fb2ea4af change default theme to purple 2023-10-29 05:20:38 +01:00
adbenitez b06f5fe3f4 add Privacy section to settings 2023-10-29 04:09:45 +01:00
adbenitez 295357d946 add online indicator to account switcher 2023-10-28 23:15:54 +02:00
adbenitez 9e4256c8f1 add online indicator dot to account avatar 2023-10-28 20:19:39 +02:00
adbenitez 70888ab36f return deltalab version in webxdc.deltalab 2023-10-28 18:18:23 +02:00
adbenitez 68ee076a6c allow to set subject and HTML part in sendToChat() 2023-10-28 06:28:46 +02:00
adbenitez 79fe46a067 Merge remote-tracking branch 'upstream/main' 2023-10-28 01:28:40 +02:00
adbenitez 29a675a2be update submodule URL 2023-10-28 01:14:23 +02:00
adbenitez 32ca6d7a80 Merge remote-tracking branch 'upstream/main' 2023-10-24 20:11:13 +02:00
adbenitez 9b0ad97918 Merge remote-tracking branch 'upstream/main' 2023-10-22 23:16:27 +02:00
adbenitez df33f874ca only call setScreenMode() if "landscape" is not set 2023-10-22 19:49:42 +02:00
adbenitez e8cf36ccbf update TIPS message 2023-10-21 19:33:30 +02:00
adbenitez 4543569c34 Merge remote-tracking branch 'upstream/main' 2023-10-21 19:32:22 +02:00
adbenitez c65cabd301 update full description 2023-10-13 01:08:19 +02:00
adbenitez 68ac3bcc8f update release.yml 2023-10-12 23:33:18 +02:00
adbenitez a8dae330eb update core 2023-10-12 22:46:35 +02:00
adbenitez bace4d4da5 Merge remote-tracking branch 'upstream/main' 2023-10-12 22:46:05 +02:00
adbenitez 2a4f55546e update version number 2023-10-12 22:44:39 +02:00
adbenitez 80ed95077d allow to react with single-emoji reply and to remove reaction 2023-10-12 22:42:49 +02:00
adbenitez 6a83cbceb1 improve crash report 2023-10-12 22:14:12 +02:00
adbenitez 6692a56c88 Merge remote-tracking branch 'upstream/main' 2023-10-10 17:34:05 +02:00
adbenitez e8e542b374 update full description 2023-10-09 14:31:59 +02:00
adbenitez 60e9d7a939 fix bug with proguard rules, affecting encrypted databases and video recoding 2023-10-07 23:34:24 +02:00
adbenitez 1289ddb9e5 update proguard-rules.pro 2023-10-07 23:20:59 +02:00
adbenitez 9241a040ee Merge remote-tracking branch 'upstream/main' 2023-10-07 23:16:18 +02:00
adbenitez 9262c1b0cc Merge remote-tracking branch 'upstream/main' 2023-10-06 22:22:13 +02:00
adbenitez 80d17dfb0f Merge remote-tracking branch 'upstream/main' 2023-10-05 23:20:35 +02:00
adbenitez e81b4ef630 disable sending reactions for now 2023-10-05 23:18:00 +02:00
adbenitez f2155577d3 report crash 2023-10-05 23:17:46 +02:00
adbenitez fec0f67e5a avoid error in video recoding due to minification 2023-10-05 20:10:39 +02:00
adbenitez 2e5dc8a06a update full description 2023-10-05 15:18:58 +02:00
adbenitez d1345fd276 increase audio quality in "worse" mode 2023-10-05 15:02:24 +02:00
adbenitez 50f5aa3db7 avoid display issue with markdown in text emoji 2023-10-05 14:53:07 +02:00
adbenitez 8ae8da5ebc update readme 2023-10-05 14:02:35 +02:00
adbenitez 344e66b004 Merge remote-tracking branch 'upstream/main' 2023-10-05 13:59:14 +02:00
adbenitez e90be7c802 update readme 2023-10-05 13:58:09 +02:00
adbenitez ebb93c3d72 update readme 2023-10-05 13:56:36 +02:00
adbenitez b7f8172821 update README 2023-10-05 13:55:58 +02:00
adbenitez 9d77e75556 update readme 2023-10-05 13:55:19 +02:00
adbenitez cc6b2ce8ad Merge remote-tracking branch 'upstream/main' 2023-10-05 13:22:59 +02:00
adbenitez efc0d8d657 Merge remote-tracking branch 'upstream/main' 2023-10-05 01:06:40 +02:00
adbenitez 03c3020bef Merge remote-tracking branch 'upstream/main' 2023-10-04 05:07:34 +02:00
adbenitez 2e46725e07 Merge remote-tracking branch 'upstream/main' 2023-10-03 15:10:01 +02:00
adbenitez 1e0d8c4a8a Merge remote-tracking branch 'upstream/main' 2023-10-01 15:18:01 +02:00
adbenitez ad9f0db9ad Merge remote-tracking branch 'upstream/stable' 2023-10-01 13:53:20 +02:00
adbenitez 3507cb28c6 Merge remote-tracking branch 'upstream/stable' 2023-09-29 12:55:42 +02:00
adbenitez 1d5eb959d1 fix bug: don't react if it is draft saving 2023-09-28 16:20:54 +02:00
adbenitez 102f758528 send reaction if reply to message is a single emoji 2023-09-28 15:34:35 +02:00
adbenitez c952fb33e2 Merge remote-tracking branch 'upstream/stable' 2023-09-28 01:05:16 +02:00
adbenitez 3aaece7a6f fix WebxdcActivity 2023-09-26 13:03:10 +02:00
adbenitez 4cf35faedd Merge remote-tracking branch 'upstream/stable' 2023-09-26 02:11:29 +02:00
adbenitez 744060863b Merge remote-tracking branch 'upstream/master' 2023-09-26 02:06:23 +02:00
adbenitez ea8f5eda4c Merge remote-tracking branch 'upstream/stable' 2023-09-15 00:48:30 +02:00
adbenitez fcb88fbd24 remove "new chat" from menu 2023-09-15 00:29:43 +02:00
adbenitez 7ada361d18 add support for orientation="landscape" in manifest.toml 2023-09-11 02:01:28 +02:00
adbenitez b0d5923975 add support for orientation="landscape" in manifest.toml 2023-09-11 01:59:35 +02:00
adbenitez f34ab8aa7a add support for orientation="landscape" in manifest.toml 2023-09-11 01:57:37 +02:00
adbenitez 20742d32d0 update version number 2023-09-01 23:03:45 +02:00
adbenitez e6d6104eb3 Merge remote-tracking branch 'upstream/master' 2023-09-01 22:46:31 +02:00
adbenitez b5daf76b8b Merge remote-tracking branch 'upstream/stable' 2023-09-01 22:46:24 +02:00
adbenitez 6a7caa638a add public-bots bot 2023-08-29 08:39:21 +02:00
adbenitez 55d030cdd0 Merge remote-tracking branch 'upstream/master' 2023-08-29 07:21:29 +02:00
adbenitez f7b3bf53cc Merge remote-tracking branch 'upstream/stable' 2023-08-15 12:02:59 +02:00
adbenitez 39518927d6 improve mailto Intent handling in ShareActivity 2023-08-15 11:54:13 +02:00
adbenitez d867175168 hide menu in android <5 2023-08-10 22:41:54 +02:00
adbenitez e9adc96535 add mini-apps store bot to main menu 2023-08-09 23:29:12 +02:00
adbenitez 224eb1a89c Merge remote-tracking branch 'upstream/master' 2023-08-08 20:28:06 +02:00
adbenitez 503d48985b update version number 2023-07-26 20:55:36 +02:00
adbenitez 6798ed2dfe remove stickers from the image editor 2023-07-26 20:53:25 +02:00
adbenitez e5b1082b9f update submodule 2023-07-26 20:25:04 +02:00
adbenitez a6397d773b update description 2023-07-26 02:33:03 +02:00
adbenitez 449b1ac87e add proguard-rules.pro, enable R8 2023-07-26 02:23:46 +02:00
adbenitez 832b6fa968 Merge remote-tracking branch 'upstream/master' 2023-07-24 23:25:47 +02:00
adbenitez a87da41bf9 update res/values-es/strings.xml 2023-07-21 23:12:13 +02:00
adbenitez e7ab6fefca Merge remote-tracking branch 'upstream/master' 2023-07-21 23:06:54 +02:00
adbenitez b65b535cdc allow to select as app to open .xdc files, remove zhv 2023-07-20 02:27:52 +02:00
adbenitez 98bf26dd5a fix bug 2023-07-20 01:59:02 +02:00
adbenitez 558a233558 Merge remote-tracking branch 'upstream/master' 2023-07-20 01:51:08 +02:00
adbenitez 3193dd4270 update Spanish strings 2023-07-06 20:39:28 +02:00
adbenitez 35b081b046 fix bug in WebxdcActivity
* allow to open external links
* add window.webxdc.deltalab variable, set to true
* update version number
2023-07-06 20:15:31 +02:00
adbenitez 5e8c49e98d update submodule 2023-07-06 19:46:11 +02:00
adbenitez 8f35ea9a63 update submodule 2023-07-05 18:17:19 +02:00
adbenitez 35b483e79e fix bug due to removed iframe wrapper 2023-07-04 13:56:58 +02:00
adbenitez 3e833d4f08 Merge remote-tracking branch 'upstream/master' 2023-06-30 16:29:49 +02:00
adbenitez 983f365f28 update submodule 2023-06-27 18:33:35 +02:00
adbenitez c944bec0b7 Merge remote-tracking branch 'upstream/master' 2023-06-27 18:33:10 +02:00
adbenitez d5441bd6ad add support for message type in webxdc.sendToChat() 2023-06-25 23:35:07 +02:00
adbenitez 0cebf1a3a7 disable loading progress bar (500FILL WebRTC protection) 2023-06-25 21:28:08 +02:00
adbenitez c16782eb5b Merge remote-tracking branch 'upstream/master' 2023-06-25 20:49:40 +02:00
adbenitez e2cf5b8cb9 Merge remote-tracking branch 'upstream/master' 2023-06-25 20:49:29 +02:00
adbenitez 3209d0803f update submodule 2023-06-16 15:20:49 +02:00
adbenitez 88e8842b6d improve balanced quality of voice messages 2023-06-16 15:14:57 +02:00
adbenitez 705c9583ad update submodule 2023-06-12 10:35:02 +02:00
adbenitez 863e61b092 Merge remote-tracking branch 'upstream/master' 2023-06-12 10:29:43 +02:00
adbenitez 1dcc6f76b2 Merge remote-tracking branch 'upstream/master' 2023-06-09 13:44:36 +02:00
adbenitez e377596d4c don't open webxdc in android <5 2023-06-07 22:06:35 +02:00
adbenitez 1a0713133c update fastlane/metadata/android/en-US/full_description.txt 2023-06-06 13:44:50 +02:00
adbenitez 6e9c4df2d4 disable JavaScript inside ZHV (compressed HTML viewer) 2023-06-06 13:33:49 +02:00
adbenitez 599c58f131 update fastlane/metadata/android/en-US/full_description.txt 2023-06-06 13:29:14 +02:00
adbenitez 15bd5e1f1a update version number 2023-06-06 13:13:25 +02:00
adbenitez eb22a3af23 update submodule 2023-06-06 12:54:31 +02:00
adbenitez 39b361c913 Merge remote-tracking branch 'upstream/master' 2023-06-04 17:01:01 +02:00
adbenitez 6085b7d550 Merge remote-tracking branch 'upstream/master' 2023-05-02 04:57:36 -04:00
adbenitez 95683fa1fd Merge remote-tracking branch 'upstream/master' 2023-05-01 15:11:43 -04:00
adbenitez 5ffee1525d fix CI 2023-04-06 08:57:06 -04:00
adbenitez f5e00e5484 Merge remote-tracking branch 'upstream/master' 2023-04-06 08:56:38 -04:00
adbenitez 1298fde01e Merge remote-tracking branch 'upstream/master' 2023-04-06 06:50:34 -04:00
adbenitez c19ab98925 Merge remote-tracking branch 'upstream/link2xt/rust-1.68' 2023-04-05 10:00:45 -04:00
adbenitez 4ceb28429b Merge remote-tracking branch 'upstream/master' 2023-04-05 09:48:16 -04:00
link2xt 376161c0d5 Remove workaround for Rust built against r22b NDK
Rust 1.68.0 targets NDK r25, so the workaround is no longer needed.
2023-04-04 10:05:18 +00:00
link2xt 438d608590 Update to Rust 1.68.2 2023-04-04 10:05:18 +00:00
adbenitez b07d30033b Merge remote-tracking branch 'upstream/master' 2023-04-01 08:12:49 -04:00
adbenitez d0a57f91e6 Merge remote-tracking branch 'upstream/master' 2023-03-29 10:11:08 -04:00
adbenitez 0a834bf23c update store description 2023-03-29 10:06:15 -04:00
adbenitez bd16fdf703 Merge remote-tracking branch 'upstream/master' 2023-03-26 23:18:02 -04:00
adbenitez afad51e4fa Merge remote-tracking branch 'upstream/master' 2023-03-26 01:39:32 -04:00
adbenitez 6ad8d47edf Merge remote-tracking branch 'upstream/master' 2023-03-22 15:33:49 -04:00
adbenitez 7e02c6e0be Merge remote-tracking branch 'upstream/master' 2023-03-22 00:39:45 -04:00
adbenitez 3ef6b72555 Merge remote-tracking branch 'upstream/master' 2023-03-15 11:03:48 -04:00
adbenitez 951c58e69e Merge remote-tracking branch 'upstream/master' 2023-03-15 10:58:45 -04:00
adbenitez 855f3c3687 Merge remote-tracking branch 'upstream/master' 2023-03-13 15:50:35 -04:00
adbenitez 6e512fcd21 remove help option from menu 2023-03-05 02:55:16 -05:00
adbenitez 768adf4968 Merge branch 'adb/add-all-media' 2023-03-05 02:39:16 -05:00
adbenitez b7e5d673ce add "All Media" option to global menu 2023-03-05 01:47:07 -05:00
adbenitez 9558aabcdb update README.md 2023-03-04 23:57:02 -05:00
adbenitez 6d0a1fa814 update README.md 2023-03-04 23:49:30 -05:00
adbenitez 1c69fe2e21 update submodule 2023-03-04 23:37:59 -05:00
adbenitez c2618ccec2 Merge remote-tracking branch 'upstream/master' 2023-03-04 23:37:32 -05:00
adbenitez a33150e19d Merge remote-tracking branch 'upstream/master' 2023-02-27 00:41:52 -05:00
adbenitez d54d009da1 Merge remote-tracking branch 'upstream/master' 2023-02-22 18:05:46 -05:00
adbenitez 3a4753930a prepare device message 2023-02-16 01:35:07 -05:00
adbenitez 4fe449347e update submodule 2023-02-15 23:26:31 -05:00
adbenitez c43d80c122 Merge remote-tracking branch 'upstream/master' 2023-02-15 23:25:38 -05:00
adbenitez b13d941472 Merge remote-tracking branch 'upstream/master' 2023-02-07 19:36:56 -05:00
adbenitez b9518aa9b6 Merge branch 'adb/multi-account-notifications' 2023-02-04 17:53:35 -05:00
adbenitez 0d943d9b60 Merge branch 'adb/multi-account-notifications' 2023-02-04 14:45:00 -05:00
adbenitez 624c4688ee update README.md 2023-02-04 08:38:16 -05:00
adbenitez a4b85e7299 update README.md 2023-02-04 08:35:48 -05:00
adbenitez 824cdf7a99 Merge branch 'master' of https://github.com/adbenitez/deltalab-android 2023-02-04 08:30:56 -05:00
Asiel Díaz Benítez 3007fa6551 Merge pull request #12 from Poussinou/patch-1
Update README.md
2023-02-04 08:23:03 -05:00
adbenitez eac7723903 Merge remote-tracking branch 'upstream/master' 2023-02-04 05:35:36 -05:00
adbenitez 3f30a2789a Merge remote-tracking branch 'upstream/master' 2023-02-01 10:40:01 -05:00
Poussinou 2eb0fdd4dd Update README.md 2023-01-21 20:24:55 +09:30
adbenitez 834ac6fd51 Merge remote-tracking branch 'upstream/master' 2023-01-19 05:48:46 -05:00
adbenitez 0763a103a5 update version number 2023-01-18 16:31:36 -05:00
adbenitez 810f34da9c update submodule 2023-01-18 16:30:20 -05:00
adbenitez e16ffbd52c Merge remote-tracking branch 'upstream/master' 2023-01-18 16:29:59 -05:00
adbenitez b296f2251c update CI 2023-01-18 07:19:34 -05:00
adbenitez b938a9fc83 update CI 2023-01-18 07:14:57 -05:00
adbenitez 741353a399 fix device message 2023-01-18 06:52:44 -05:00
adbenitez 9cf80c8f82 fix ConversationListActivity 2023-01-18 06:44:38 -05:00
adbenitez f467ccb4d1 Merge branch 'adb/add-socks5' 2023-01-18 06:40:53 -05:00
adbenitez a3ab3e80a4 update submodule 2023-01-18 06:40:37 -05:00
adbenitez b737c05da2 update CI 2023-01-18 06:39:42 -05:00
adbenitez bef2b344c8 update device message 2023-01-18 06:39:06 -05:00
adbenitez accf1413dc allow to share location for 12 hours 2023-01-18 05:58:35 -05:00
adbenitez ec29ce0a1f Merge remote-tracking branch 'upstream/master' 2023-01-15 16:24:58 -05:00
adbenitez f04156dc9d Merge remote-tracking branch 'upstream/master' 2023-01-08 14:02:04 -05:00
adbenitez 19a2180b2b Merge remote-tracking branch 'upstream/master' 2023-01-04 13:36:03 -05:00
adbenitez 43bd273784 Merge remote-tracking branch 'upstream/master' 2022-12-26 14:06:21 -05:00
adbenitez 0af77c7e9c Merge remote-tracking branch 'upstream/master' 2022-12-21 15:01:29 -05:00
adbenitez 5959e6947d Merge remote-tracking branch 'upstream/master' 2022-12-21 13:34:13 -05:00
adbenitez a162b75794 Merge remote-tracking branch 'upstream/master' 2022-12-17 21:08:46 -05:00
adbenitez b9df85d856 Merge remote-tracking branch 'upstream/master' 2022-12-10 14:40:38 -05:00
adbenitez 38d59b655a Merge remote-tracking branch 'upstream/master' 2022-11-30 16:06:11 -05:00
adbenitez 5cafb63592 update submodule 2022-11-15 16:02:08 -05:00
adbenitez a877ae8fa4 update submodule 2022-11-15 15:37:37 -05:00
adbenitez f5831d3f3f Merge remote-tracking branch 'upstream/master' 2022-11-15 14:59:25 -05:00
adbenitez 0edc1cb0e0 update description 2022-11-15 14:56:49 -05:00
adbenitez a3bd2157f9 Merge remote-tracking branch 'upstream/master' 2022-11-15 12:26:34 -05:00
adbenitez 860f1b5b02 Merge remote-tracking branch 'upstream/master' 2022-11-01 01:43:50 -04:00
adbenitez 90366eeb46 fix AndroidManifest.xml 2022-10-31 03:29:18 -04:00
adbenitez fa99151c05 Merge remote-tracking branch 'upstream/master' 2022-10-31 02:13:17 -04:00
adbenitez 48dec04e83 Merge remote-tracking branch 'upstream/master' 2022-10-30 11:58:21 -04:00
adbenitez 0fbd65c237 Merge remote-tracking branch 'upstream/master' 2022-10-30 05:32:46 -04:00
adbenitez d452af4fec update version number 2022-10-18 20:15:26 -04:00
adbenitez 02bc54d517 update submodule 2022-10-18 20:01:44 -04:00
adbenitez 0b4e749f04 Merge remote-tracking branch 'upstream/master' 2022-10-18 20:01:09 -04:00
adbenitez b66998a832 update submodule 2022-10-11 16:13:18 -04:00
adbenitez c20e97d16d Merge remote-tracking branch 'upstream/master' 2022-10-11 16:12:54 -04:00
adbenitez e663e5e64a Merge remote-tracking branch 'upstream/master' 2022-10-03 23:58:16 -04:00
adbenitez 12afc63c02 Merge remote-tracking branch 'upstream/master' 2022-09-21 16:55:14 -04:00
adbenitez 5cd0aa5a90 Merge remote-tracking branch 'upstream/master' 2022-09-21 16:23:13 -04:00
adbenitez 38fd68c931 update full_description.txt 2022-09-18 02:16:02 -04:00
adbenitez 5d68450abe Merge remote-tracking branch 'upstream/master' 2022-09-18 02:11:39 -04:00
adbenitez 9885f101d0 Merge remote-tracking branch 'upstream/master' 2022-09-14 22:06:09 -04:00
adbenitez ffe4b69d11 Merge remote-tracking branch 'upstream/master' 2022-09-11 21:53:40 -04:00
adbenitez 9b5ce20376 Merge remote-tracking branch 'upstream/master' 2022-09-11 00:06:54 -04:00
adbenitez 75054e9e59 Merge remote-tracking branch 'upstream/master' 2022-08-29 14:45:11 -04:00
adbenitez 46555efa67 Merge remote-tracking branch 'upstream/master' 2022-08-27 14:40:14 -04:00
adbenitez 6c115bc8bf fix ConversationTitleView 2022-08-25 18:00:56 -04:00
adbenitez 1de35cacbc Merge remote-tracking branch 'upstream/master' 2022-08-25 17:49:06 -04:00
adbenitez 136a9d529b add device messages 2022-08-22 06:44:03 -04:00
adbenitez 1e8f420aab update version number 2022-08-22 01:16:21 -04:00
adbenitez 21d7d16e4c Merge remote-tracking branch 'upstream/master' 2022-08-22 00:50:58 -04:00
adbenitez d868aa913b Merge remote-tracking branch 'upstream/master' 2022-08-19 23:57:46 -04:00
adbenitez 8c9f274a10 Merge remote-tracking branch 'upstream/master' 2022-08-12 02:11:46 -04:00
adbenitez 59107d9216 display super group / channel instead of mailing list 2022-08-02 21:44:03 -04:00
adbenitez c800681ade Merge remote-tracking branch 'upstream/master' 2022-08-01 23:15:10 -04:00
adbenitez b3c08d4ad3 Merge remote-tracking branch 'upstream/master' 2022-07-30 12:15:20 -04:00
adbenitez e829e5cae0 Merge remote-tracking branch 'upstream/master' 2022-07-28 00:13:05 -04:00
adbenitez 79746a8af9 Merge remote-tracking branch 'upstream/master' 2022-07-23 01:46:01 -04:00
adbenitez 1f5150dc56 update version number 2022-07-15 07:23:56 -04:00
adbenitez bc70a276ef update submodule 2022-07-15 07:21:39 -04:00
adbenitez fd0907b912 Merge remote-tracking branch 'upstream/master' 2022-07-15 02:38:55 -04:00
adbenitez 7dbcf948a3 show account's display name in title bar 2022-07-11 04:01:44 -04:00
adbenitez 0876006655 update submodule 2022-07-11 03:35:51 -04:00
adbenitez 609f4a432f change default colors 2022-07-11 03:21:39 -04:00
adbenitez c6753c927e update store description 2022-07-11 01:58:14 -04:00
adbenitez 0b17897c1a Merge remote-tracking branch 'upstream/master' 2022-07-11 00:22:30 -04:00
adbenitez 2ddad6474d update submodule 2022-07-10 00:36:56 -04:00
adbenitez 6835576192 Merge remote-tracking branch 'upstream/master' 2022-07-10 00:36:07 -04:00
adbenitez 70eb693788 Merge remote-tracking branch 'upstream/master' 2022-07-09 15:23:15 -04:00
adbenitez 3873a2e45e Merge remote-tracking branch 'upstream/master' 2022-07-06 07:19:49 -04:00
adbenitez 2f3f603ef3 Merge remote-tracking branch 'upstream/master' 2022-07-06 05:01:28 -04:00
adbenitez ac7ba89eea Merge remote-tracking branch 'upstream/master' 2022-06-28 00:23:06 -04:00
adbenitez 6d31669752 Merge remote-tracking branch 'upstream/master' 2022-06-24 02:50:11 -04:00
adbenitez bfcb50a60c Merge remote-tracking branch 'upstream/master' 2022-06-07 03:58:25 -04:00
adbenitez 8bd9b23426 Merge remote-tracking branch 'upstream/master' 2022-06-04 00:32:53 -04:00
adbenitez e53e2ce4b9 Merge remote-tracking branch 'upstream/master' 2022-05-29 14:06:04 -04:00
adbenitez be3724d915 Merge remote-tracking branch 'upstream/master' 2022-05-26 03:17:37 -04:00
adbenitez ab8d8a3dc9 update description 2022-05-26 03:16:05 -04:00
Asiel Díaz Benítez db6d1f8ba5 Merge pull request #8 from adbenitez/exclude-gms
exclude com.google.android.gms from app
2022-05-18 01:38:36 -04:00
adbenitez b0cda59028 tweak online status dot 2022-05-18 01:35:20 -04:00
adbenitez a0c4ed8534 tweak full_description.txt 2022-05-18 01:03:58 -04:00
adbenitez 09ad084547 tweak intro image 2022-05-18 01:00:43 -04:00
adbenitez 234915053e exclude com.google.android.gms from app 2022-05-18 00:47:50 -04:00
adbenitez 442e67e894 update fastlane/metadata/android/en-US/images/featureGraphic.png 2022-05-18 00:47:24 -04:00
adbenitez f378337f75 improve fastline metadata 2022-05-18 00:38:41 -04:00
adbenitez b9a5c9ee1a remove empty spaces at the end 2022-05-17 21:46:45 -04:00
adbenitez 03e40491c9 Merge remote-tracking branch 'upstream/master' 2022-05-17 21:12:48 -04:00
adbenitez 4f1cd37eec Merge remote-tracking branch 'upstream/master' 2022-05-17 00:33:43 -04:00
adbenitez 27588ee5c9 add icon to fastlane metadata 2022-05-09 04:48:51 -04:00
adbenitez afc88f4e04 Merge remote-tracking branch 'upstream/master' 2022-05-09 03:49:52 -04:00
adbenitez 628b004987 add fastline validation to CI 2022-05-09 03:46:29 -04:00
adbenitez a5bdcd4fec add fastlane metadata 2022-05-09 03:38:36 -04:00
adbenitez 97f86f20bb update app icon 2022-05-05 05:01:55 -04:00
adbenitez 21f4140cd1 update device message 2022-05-05 02:42:35 -04:00
adbenitez 8a3bf0c02b Merge remote-tracking branch 'upstream/master' 2022-05-04 15:35:06 -04:00
adbenitez 9077d02cc8 update submodule 2022-05-04 13:51:16 -04:00
adbenitez 6d0b7d0315 Merge remote-tracking branch 'upstream/master' 2022-05-04 13:49:54 -04:00
adbenitez 6f6ad942c8 update device message 2022-05-04 01:05:22 -04:00
adbenitez 8805fb21e4 Merge remote-tracking branch 'upstream/master' 2022-05-03 23:32:13 -04:00
adbenitez 47371c311f Merge remote-tracking branch 'upstream/master' 2022-05-02 21:56:06 -04:00
adbenitez a91fe925fc update intro banner 2022-05-02 01:22:47 -04:00
adbenitez 298d3d7b2d update welcome_activity.xml 2022-05-01 22:48:33 -04:00
adbenitez 20d0c6f1d4 fix res/drawable/button_secondary_background.xml 2022-05-01 19:27:17 -04:00
adbenitez 7bd9918849 fix themes.xml 2022-05-01 19:08:42 -04:00
adbenitez 41362ae50c Merge remote-tracking branch 'upstream/master' 2022-05-01 18:51:54 -04:00
adbenitez d73a9c2c80 Merge remote-tracking branch 'upstream/master' 2022-04-30 06:30:52 -04:00
adbenitez 9513c60c31 Merge remote-tracking branch 'upstream/master' 2022-04-27 04:32:16 -04:00
adbenitez 4bffab4709 Merge remote-tracking branch 'upstream/master' 2022-04-24 03:40:49 -04:00
adbenitez f240d29618 Merge remote-tracking branch 'upstream/master' 2022-04-22 01:04:15 -04:00
adbenitez 8f891a7e86 Merge remote-tracking branch 'upstream/master' 2022-04-12 13:42:22 -04:00
adbenitez 67cc6b6b4f Merge remote-tracking branch 'upstream/master' 2022-04-11 14:14:32 -04:00
adbenitez 87732faf02 Merge remote-tracking branch 'upstream/master' 2022-04-10 18:27:28 -04:00
adbenitez 83b96b9065 Merge remote-tracking branch 'upstream/master' 2022-04-10 00:39:38 -04:00
adbenitez 5b21863954 Merge remote-tracking branch 'upstream/master' 2022-04-10 00:36:09 -04:00
adbenitez 5198e286ed revert branch adb-issue-1753 2022-04-05 19:29:36 -04:00
adbenitez 051260d0ba Merge remote-tracking branch 'upstream/master' 2022-04-05 15:39:57 -04:00
adbenitez 0a2d9e750c Merge remote-tracking branch 'upstream/master' 2022-04-03 17:29:23 -04:00
adbenitez 00d099f830 Merge remote-tracking branch 'upstream/master' 2022-04-02 10:53:26 -04:00
adbenitez 2436f3299e Merge remote-tracking branch 'upstream/master' 2022-04-01 15:30:41 -04:00
adbenitez 467733ab78 update submodule 2022-03-29 18:19:04 -04:00
adbenitez 510f0ed9e5 Merge remote-tracking branch 'upstream/master' 2022-03-29 18:17:57 -04:00
adbenitez 2f8aa55c4b Merge remote-tracking branch 'upstream/master' 2022-03-29 01:20:44 -04:00
adbenitez fafbd94012 Merge remote-tracking branch 'upstream/master' 2022-03-27 11:44:22 -04:00
adbenitez 785b4d03fd Merge remote-tracking branch 'upstream/master' 2022-03-24 16:58:57 -04:00
adbenitez ba418f4a64 Merge remote-tracking branch 'upstream/master' 2022-03-22 18:04:33 -04:00
adbenitez 6ad9e19b51 Merge remote-tracking branch 'upstream/master' 2022-02-20 23:52:50 -05:00
adbenitez ec3cf9da49 do not unmark selected files after exporting so it is possible to delete them 2022-02-20 23:44:46 -05:00
adbenitez b1c4c3bdea Merge remote-tracking branch 'upstream/master' 2022-02-20 23:07:27 -05:00
adbenitez 624a867008 update version number 2022-02-12 14:16:05 -05:00
adbenitez 3b6895d507 update submodule 2022-02-12 14:08:54 -05:00
adbenitez b498e8781c allow to open webxdc in Android <5 2022-02-12 13:57:18 -05:00
adbenitez 4d2639a485 update device message 2022-02-02 23:57:50 -05:00
adbenitez c3a8d41177 Merge remote-tracking branch 'upstream/master' 2022-02-02 23:50:59 -05:00
adbenitez 5fb7beb7c8 Merge remote-tracking branch 'upstream/master' 2022-02-01 18:07:06 -05:00
adbenitez 2e0b8ea654 Merge remote-tracking branch 'upstream/master' 2022-02-01 18:01:36 -05:00
adbenitez 4f153672f7 Merge remote-tracking branch 'upstream/master' 2022-01-30 22:20:37 -05:00
adbenitez bdccf3cb82 update version number 2022-01-29 02:49:29 -05:00
adbenitez 5e5c3a9ecb update submodule 2022-01-29 01:52:36 -05:00
adbenitez 9e03480d93 update submodule 2022-01-29 01:31:08 -05:00
adbenitez dba3b8fda5 Merge remote-tracking branch 'upstream/master' 2022-01-29 01:29:55 -05:00
adbenitez 05be3c0fe7 Merge remote-tracking branch 'upstream/master' 2022-01-28 16:41:44 -05:00
adbenitez e198fa0ed6 Merge remote-tracking branch 'upstream/master' 2022-01-28 15:48:31 -05:00
adbenitez 9b079003cb Merge remote-tracking branch 'upstream/master' 2022-01-27 06:34:38 -05:00
adbenitez 41c05fae68 avoid issues with long-pressing images in webxdc 2022-01-27 05:56:05 -05:00
adbenitez 9eaf238181 Merge remote-tracking branch 'upstream/master' 2022-01-26 18:58:51 -05:00
adbenitez 22790badc4 update version number 2022-01-25 14:50:22 -05:00
adbenitez 530dc082ba Merge remote-tracking branch 'upstream/master' 2022-01-25 14:42:33 -05:00
adbenitez c79f22aac7 Merge remote-tracking branch 'upstream/master' 2022-01-25 14:26:26 -05:00
adbenitez 51f56644b6 Merge remote-tracking branch 'upstream/master' 2022-01-23 15:01:01 -05:00
adbenitez f5bb3f23c6 update version number 2022-01-22 18:13:38 -05:00
adbenitez 52c3c54443 Merge remote-tracking branch 'upstream/master' 2022-01-22 17:16:57 -05:00
adbenitez 1f7ae6852d Merge remote-tracking branch 'upstream/master' 2022-01-22 14:12:39 -05:00
adbenitez 730762f393 make broadcast list enabled by default 2022-01-21 00:13:01 -05:00
adbenitez bcc0389006 Merge remote-tracking branch 'upstream/master' 2022-01-20 23:28:16 -05:00
adbenitez 4ccc164b86 Merge remote-tracking branch 'upstream/master' 2022-01-18 14:43:40 -05:00
adbenitez 889b9b160a Merge remote-tracking branch 'upstream/master' 2022-01-17 18:52:09 -05:00
adbenitez cf82d67814 Merge remote-tracking branch 'upstream/master' 2022-01-15 23:16:48 -05:00
adbenitez d871f7f927 Merge remote-tracking branch 'upstream/master' 2022-01-14 00:06:25 -05:00
adbenitez 170afbb74d Merge remote-tracking branch 'upstream/master' 2022-01-13 02:30:41 -05:00
adbenitez 4aebbcff83 update version number 2022-01-03 03:21:23 -05:00
adbenitez eb96a5efa4 update submodule 2022-01-03 03:20:48 -05:00
adbenitez bb8ef5aa64 loop videos 2022-01-03 03:00:46 -05:00
adbenitez 36abc07a9b Merge branch 'adb-display-svg-images' 2022-01-03 02:15:56 -05:00
adbenitez 950dda1a67 Merge branch 'adb-clear-chat' 2022-01-03 01:45:02 -05:00
adbenitez 7f4e866870 update submodule 2022-01-02 14:57:43 -05:00
adbenitez 935929fd97 Merge remote-tracking branch 'upstream/master' 2021-12-30 14:44:37 -05:00
adbenitez 5369df34a5 update build.gradle 2021-12-28 18:27:57 -05:00
adbenitez 73c21747fd update submodule 2021-12-28 18:25:47 -05:00
adbenitez 120cfb0c7b Merge branch 'adb-add-tgs-support' 2021-12-28 18:22:33 -05:00
adbenitez e799c6a208 Merge remote-tracking branch 'upstream/master' 2021-12-28 14:52:06 -05:00
adbenitez 2a4bc95c28 fix lottie stickers animation 2021-12-25 01:44:29 -05:00
adbenitez 20ca58e9af display SVG images in chats 2021-12-24 18:46:56 -05:00
adbenitez 12ba6ba3b6 add support for .tgs stickers 2021-12-24 18:39:29 -05:00
adbenitez d75f77c75e Merge remote-tracking branch 'upstream/master' 2021-12-23 14:59:32 -05:00
adbenitez 6fdf23646d Merge remote-tracking branch 'upstream/master' 2021-12-18 15:49:45 -05:00
adbenitez 7eb1724c75 allow to remove all messages from current chat 2021-12-16 22:58:39 -05:00
adbenitez f0efb4845a remove add-attachment option from chat's menu 2021-12-16 17:49:04 -05:00
adbenitez 6d8b292320 improve release process, generate split apks for each arch 2021-12-16 17:20:15 -05:00
adbenitez 5e20c7a3dc update submodule 2021-12-16 17:04:54 -05:00
adbenitez 011c8232e6 Merge remote-tracking branch 'upstream/master' 2021-12-15 11:41:30 -05:00
adbenitez d0194a939b Merge remote-tracking branch 'upstream/master' 2021-12-15 11:39:02 -05:00
adbenitez 9a18c2b93c Merge remote-tracking branch 'upstream/master' 2021-12-08 15:54:50 -05:00
adbenitez e3de77cf08 Merge remote-tracking branch 'upstream/master' 2021-12-01 19:29:44 -05:00
adbenitez 7821571b5a Merge remote-tracking branch 'upstream/master' 2021-11-30 12:21:59 -05:00
adbenitez 8b0d4e4d6e Merge remote-tracking branch 'upstream/master' 2021-11-29 19:06:21 -05:00
adbenitez e260107bc5 update strings 2021-11-28 22:01:52 -05:00
adbenitez cc54c8c679 Merge remote-tracking branch 'upstream/master' 2021-11-28 20:23:37 -05:00
adbenitez fb749d5bcf Merge remote-tracking branch 'upstream/master' 2021-11-25 10:08:51 -05:00
adbenitez 3eb380a834 Merge remote-tracking branch 'upstream/master' 2021-11-24 19:26:16 -05:00
adbenitez d910bb9e3e avoid gradle warnings 2021-11-24 18:38:28 -05:00
adbenitez 23b3932738 add option to remove user from group when selecting message 2021-11-24 18:38:12 -05:00
adbenitez 0c6c658d92 Merge remote-tracking branch 'upstream/master' 2021-11-24 00:40:02 -05:00
adbenitez af3b0670d1 show online status 2021-11-24 00:37:27 -05:00
adbenitez d017f1692a show verified checkmark in chat list 2021-11-23 15:22:53 -05:00
adbenitez 663e027208 Merge remote-tracking branch 'upstream/master' 2021-11-23 12:52:38 -05:00
adbenitez 10f42db613 Merge remote-tracking branch 'upstream/master' 2021-11-17 13:37:29 -05:00
adbenitez eca779bc32 Merge remote-tracking branch 'upstream/master' 2021-11-15 17:38:05 -05:00
adbenitez cca7c1a2ed Merge remote-tracking branch 'upstream/master' 2021-11-15 14:42:28 -05:00
adbenitez ca09d02836 Merge remote-tracking branch 'upstream/master' 2021-11-13 13:47:12 -05:00
adbenitez 387476936c Merge branch 'master' of github.com:adbenitez/deltalab-android 2021-11-13 01:08:30 -05:00
Asiel Díaz Benítez d360648d6b Merge pull request #5 from adbenitez/update-readme
update readme
2021-11-13 01:08:06 -05:00
adbenitez c10216b037 tweak workflows 2021-11-13 01:03:18 -05:00
adbenitez 0ff604794c Merge branch 'master' into update-readme 2021-11-13 00:17:41 -05:00
adbenitez 06bfce75ea tweak workflows 2021-11-13 00:16:57 -05:00
adbenitez ff442b64eb update readme 2021-11-12 22:32:00 -05:00
adbenitez 5c1e55e61b update CI 2021-11-12 22:25:24 -05:00
adbenitez ecd4157b48 update CI 2021-11-12 22:20:41 -05:00
adbenitez 2b7e341da2 tweak CI 2021-11-12 15:53:28 -05:00
adbenitez b2e918c3e1 fix CI 2021-11-12 15:42:55 -05:00
adbenitez d83346c689 configure default webrtc instance 2021-11-12 01:14:18 -05:00
adbenitez c3658ed33a update device message 2021-11-12 00:04:50 -05:00
adbenitez 4b75149c8b allow to disable Subject 2021-11-11 23:30:56 -05:00
adbenitez 0e7b20ef00 Merge remote-tracking branch 'upstream/master' 2021-11-11 21:13:08 -05:00
adbenitez 1fad77671c Merge remote-tracking branch 'upstream/master' 2021-11-10 13:58:14 -05:00
adbenitez 9edf780604 Merge remote-tracking branch 'upstream/master' 2021-11-09 22:24:13 -05:00
adbenitez 288888020e update submodule 2021-11-08 20:39:33 -05:00
adbenitez 9eb852db96 update build.gradle 2021-11-08 19:42:34 -05:00
adbenitez 3a6ff8a066 use accent for notification 2021-11-08 17:22:13 -05:00
adbenitez 952f82f1a3 Merge remote-tracking branch 'upstream/master' 2021-11-07 14:20:21 -05:00
adbenitez 7bbd24f916 likify QR-join and Mumble links 2021-11-05 20:01:11 -04:00
adbenitez 7ccd42a91f Merge remote-tracking branch 'upstream/master' 2021-11-05 15:37:32 -04:00
adbenitez 32f835f583 Merge remote-tracking branch 'upstream/master' 2021-11-04 18:22:38 -04:00
adbenitez 752d7867b4 Merge remote-tracking branch 'upstream/master' 2021-11-04 18:19:08 -04:00
adbenitez 995b88d620 Merge remote-tracking branch 'upstream/master' 2021-11-04 15:18:12 -04:00
adbenitez a2703a38d4 Merge remote-tracking branch 'upstream/master' 2021-11-03 01:39:46 -04:00
adbenitez c0eb147b74 Merge remote-tracking branch 'upstream/master' 2021-11-02 16:26:58 -04:00
adbenitez 4687b64ebd Merge remote-tracking branch 'upstream/master' 2021-11-01 01:30:20 -04:00
adbenitez 0d8c9870d7 Merge remote-tracking branch 'upstream/master' 2021-10-30 17:25:22 -04:00
adbenitez 76b4e41692 Merge remote-tracking branch 'upstream/master' 2021-10-30 14:40:21 -04:00
adbenitez 7d2175f6dc tweak colors 2021-10-29 18:18:22 -04:00
adbenitez 8b431cbda2 Merge remote-tracking branch 'upstream/master' 2021-10-29 17:48:42 -04:00
adbenitez 8e957d3ca2 tweak colors 2021-10-28 23:36:26 -04:00
adbenitez 20868a041a tweak default color 2021-10-28 18:08:54 -04:00
adbenitez 197b5441e5 Merge remote-tracking branch 'upstream/master' 2021-10-27 03:12:06 -04:00
adbenitez 5352518b80 update version name 2021-10-27 01:53:08 -04:00
adbenitez c5a2b72e64 Merge remote-tracking branch 'upstream/master' 2021-10-26 22:50:06 -04:00
adbenitez 077aa691af tweak colors 2021-10-26 21:18:56 -04:00
adbenitez 59b7b90f09 tweak themes 2021-10-25 06:48:30 -04:00
adbenitez 8e9bd50bb9 add missing drawable 2021-10-25 02:41:08 -04:00
adbenitez e564f8bfa8 update submodule 2021-10-24 04:00:47 -04:00
adbenitez de1695710c update version name 2021-10-24 03:56:36 -04:00
adbenitez 845947b97c Merge remote-tracking branch 'upstream/master' 2021-10-20 16:01:45 -04:00
adbenitez 6e422a85a1 Merge remote-tracking branch 'upstream/master' 2021-10-17 20:35:36 -04:00
adbenitez d99b4f683b Merge remote-tracking branch 'upstream/master' 2021-10-15 15:48:51 -04:00
adbenitez b30f15524d Merge remote-tracking branch 'upstream/master' 2021-10-15 14:57:41 -04:00
adbenitez 953016d60c Merge remote-tracking branch 'upstream/master' 2021-10-13 21:53:54 -04:00
adbenitez d4d18e6cd1 adapt selected account's checkbox and unread count badge to theme 2021-10-13 20:49:58 -04:00
adbenitez 90e64b4e56 Merge remote-tracking branch 'upstream/master' 2021-10-13 15:37:01 -04:00
adbenitez b55ea930ca Merge remote-tracking branch 'upstream/master' 2021-10-12 17:28:01 -04:00
adbenitez fd0e168f47 tweak accent color 2021-10-11 16:27:19 -04:00
adbenitez a8db12a2c6 show account switch dialog when long-pressing the fab 2021-10-11 15:46:48 -04:00
adbenitez 7e6683bde0 Merge remote-tracking branch 'upstream/master' 2021-10-11 14:50:39 -04:00
adbenitez b2c449ec03 change app icon 2021-10-11 14:41:24 -04:00
adbenitez 3a792751df revert background 2021-10-11 04:04:50 -04:00
adbenitez f52dbdc6a5 tweak themes 2021-10-11 03:42:12 -04:00
adbenitez 13dafd3e2a tweak colors 2021-10-10 02:53:22 -04:00
adbenitez 454822b36a tweak indigo theme 2021-10-10 02:32:08 -04:00
adbenitez 8becb09aa7 Merge remote-tracking branch 'upstream/master' 2021-10-05 14:40:30 -04:00
adbenitez e1c1302c3f Merge remote-tracking branch 'upstream/master' 2021-10-04 23:58:08 -04:00
adbenitez f1d287da1f update submodule 2021-10-03 02:29:58 -04:00
adbenitez 2a269ffc3c enable broadcast feature by default 2021-10-03 02:29:19 -04:00
adbenitez 06962b11f3 Merge remote-tracking branch 'upstream/master' 2021-10-02 14:55:04 -04:00
adbenitez 65805318ed Merge remote-tracking branch 'upstream/master' 2021-10-01 22:40:58 -04:00
adbenitez 13d49431dd Merge remote-tracking branch 'upstream/master' 2021-10-01 16:43:43 -04:00
adbenitez a2a47bf270 use isMultiUser() instead of isGroup() 2021-09-30 17:16:02 -04:00
adbenitez 81848ddb7e Merge remote-tracking branch 'upstream/master' 2021-09-30 17:09:56 -04:00
adbenitez 428f8e6156 update res/values-es/strings.xml 2021-09-30 13:57:22 -04:00
adbenitez 378f9da946 Merge remote-tracking branch 'upstream/master' 2021-09-30 13:56:24 -04:00
adbenitez 40d122aa93 Merge remote-tracking branch 'upstream/master' 2021-09-26 17:27:49 -04:00
adbenitez c42d1592fa Merge remote-tracking branch 'upstream/master' 2021-09-20 16:16:00 -04:00
adbenitez 78f478faa0 update readme 2021-09-15 01:18:14 -04:00
adbenitez 01332cf6b0 update submodule 2021-09-15 00:45:38 -04:00
adbenitez 1f9753c433 Merge remote-tracking branch 'upstream/master' 2021-09-14 11:52:31 -04:00
adbenitez 994681d194 update version number 2021-09-13 21:49:05 -04:00
adbenitez a3e52ed8a0 update device message 2021-09-13 21:35:34 -04:00
adbenitez e46510ecd4 Merge remote-tracking branch 'upstream/master' 2021-09-13 20:28:26 -04:00
adbenitez d326e02fc3 update device message 2021-09-13 20:28:23 -04:00
adbenitez b35e0eb952 Merge remote-tracking branch 'upstream/master' 2021-09-13 17:31:25 -04:00
adbenitez 3b7365e56c update device message 2021-09-06 20:24:56 -04:00
adbenitez c91f56c0f1 tweak image editor's stickers 2021-09-06 20:05:52 -04:00
adbenitez bc90c9ef29 Merge remote-tracking branch 'upstream/master' 2021-09-06 18:51:16 -04:00
adbenitez e30e3af526 Merge branch 'issue-1828' 2021-09-06 18:48:49 -04:00
Asiel Díaz Benítez 94e44531cb Merge branch 'master' into issue-1828 2021-09-06 14:38:40 -04:00
adbenitez 949f262824 block network loads in ZHV 2021-09-05 16:03:22 -04:00
adbenitez 21fd3b900b update version number 2021-08-26 13:25:26 -04:00
adbenitez 803201ae4f update submodule 2021-08-26 13:25:14 -04:00
adbenitez f58c8b512d update device messages 2021-08-26 13:24:03 -04:00
adbenitez b60b3537cb Merge remote-tracking branch 'upstream/master' 2021-08-25 19:46:52 -04:00
adbenitez 22f0cb0d7a avoid loading content from network in html.zip viewer 2021-08-23 18:21:02 -04:00
adbenitez ca150da128 Merge remote-tracking branch 'upstream/master' 2021-08-23 17:40:13 -04:00
adbenitez d46c95c9e5 Merge remote-tracking branch 'upstream/master' 2021-08-21 15:19:08 -04:00
adbenitez 659a017168 Merge remote-tracking branch 'upstream/master' 2021-08-20 16:59:07 -04:00
adbenitez 5df3039ab5 Merge remote-tracking branch 'upstream/master' 2021-08-20 15:17:02 -04:00
adbenitez d75d8888ce tweak device messages 2021-08-20 15:13:09 -04:00
adbenitez 099f4a33d0 add more kaomojis 2021-08-20 15:01:26 -04:00
adbenitez 662f61b6c2 tweak update message 2021-08-20 13:58:28 -04:00
adbenitez 4f37d11ef5 Merge remote-tracking branch 'upstream/master' 2021-08-20 13:54:22 -04:00
adbenitez 1feba7bd3c update version name 2021-08-19 16:18:36 -04:00
adbenitez a8d52fe7fc don't add /web command 2021-08-19 16:14:13 -04:00
adbenitez f5b2ec498f Merge remote-tracking branch 'upstream/master' 2021-08-19 12:42:44 -04:00
adbenitez 076b1b893b add more kaomoji 2021-08-13 18:58:24 -04:00
adbenitez f361e928cb Merge remote-tracking branch 'upstream/master' 2021-08-12 15:08:48 -04:00
adbenitez 1f79494747 Merge remote-tracking branch 'upstream/master' 2021-08-10 17:59:05 -04:00
adbenitez 0fcc6f4661 Merge remote-tracking branch 'upstream/master' 2021-08-04 16:08:57 -04:00
adbenitez 97df2ceea5 Merge remote-tracking branch 'upstream/master' 2021-08-03 04:15:28 -04:00
adbenitez cec9a5e5b1 Merge remote-tracking branch 'upstream/master' 2021-08-01 17:41:27 -04:00
adbenitez 0a72a96c0a Merge remote-tracking branch 'upstream/master' 2021-07-31 16:22:17 -04:00
adbenitez 195c71af9a Merge remote-tracking branch 'upstream/master' 2021-07-30 19:19:23 -04:00
adbenitez d7620a817a Merge remote-tracking branch 'upstream/master' 2021-07-29 22:25:27 -04:00
adbenitez 2ca65a39d3 Merge remote-tracking branch 'upstream/master' 2021-07-28 21:39:32 -04:00
adbenitez 30a92fe63d fix automatic dark mode for themes 2021-07-28 01:46:33 -04:00
adbenitez 1402f5a726 Merge remote-tracking branch 'upstream/master' 2021-07-27 20:41:40 -04:00
adbenitez 221956f62e Merge remote-tracking branch 'upstream/master' 2021-07-26 14:18:41 -04:00
adbenitez 532ba23287 Merge remote-tracking branch 'upstream/master' 2021-07-24 16:05:36 -04:00
adbenitez 81a275343b Merge remote-tracking branch 'upstream/master' 2021-07-22 14:11:38 -04:00
adbenitez ca05afc0af update version name 2021-07-21 21:24:27 -04:00
adbenitez 37d5d3ed97 improve zhv 2021-07-21 21:23:25 -04:00
adbenitez 0e82c24d25 Merge remote-tracking branch 'upstream/master' 2021-07-21 15:49:39 -04:00
adbenitez 33f64e5d87 Merge remote-tracking branch 'upstream/master' 2021-07-20 23:44:19 -04:00
adbenitez 274a62f889 Merge remote-tracking branch 'upstream/master' 2021-07-15 18:03:26 -04:00
adbenitez b7924a1f6d Merge remote-tracking branch 'upstream/master' 2021-07-15 17:46:16 -04:00
adbenitez 6df617948f Merge remote-tracking branch 'upstream/master' 2021-07-08 23:34:27 -04:00
adbenitez 60757fc375 add context menu to webview, implement "copy link" action 2021-07-08 19:50:02 -04:00
adbenitez 610dc4fd6a Merge remote-tracking branch 'upstream/master' 2021-07-02 14:26:13 -04:00
adbenitez b095276bd6 Merge remote-tracking branch 'upstream/master' 2021-06-29 13:13:03 -04:00
adbenitez 7d7152c4a1 Merge remote-tracking branch 'upstream/master' 2021-06-25 18:36:39 -04:00
adbenitez 9237c417ba Merge remote-tracking branch 'upstream/master' 2021-06-25 15:38:37 -04:00
adbenitez feb58bffb9 Merge remote-tracking branch 'upstream/master' 2021-06-22 22:34:52 -04:00
adbenitez 1162210ade Merge remote-tracking branch 'upstream/master' 2021-06-21 14:11:04 -04:00
adbenitez 62b05664ed Merge remote-tracking branch 'upstream/master' 2021-06-18 17:28:03 -04:00
adbenitez bd53a7ebe1 Merge remote-tracking branch 'upstream/master' 2021-06-17 18:27:41 -04:00
adbenitez f09a1e31c1 Merge remote-tracking branch 'upstream/master' 2021-06-07 20:08:42 -04:00
adbenitez 894748b01b Merge remote-tracking branch 'upstream/master' 2021-06-07 12:27:38 -04:00
adbenitez ad5bc91cda update submodule 2021-06-07 12:21:24 -04:00
adbenitez bb01305e4c Merge remote-tracking branch 'upstream/master' 2021-05-22 18:26:55 -04:00
adbenitez efc1b1f28b Merge branch 'adb-issue-1753' 2021-05-22 17:20:25 -04:00
adbenitez 71d8fbac58 fix strings.xml 2021-05-22 17:19:29 -04:00
adbenitez 052f2ebe8a update submodule 2021-05-22 15:10:21 -04:00
adbenitez 7164ef8d18 Merge remote-tracking branch 'upstream/master' 2021-05-22 15:05:36 -04:00
adbenitez ea5be6b07b Merge branch 'adb-notify-quote-mentions' 2021-05-17 13:58:24 -04:00
adbenitez 8513444e26 notify quote-mentions in muted groups 2021-05-16 13:13:02 -04:00
adbenitez e94a4535f9 prepare 1.20.2 release 2021-05-16 01:38:21 -04:00
adbenitez 630025944e Merge remote-tracking branch 'upstream/master' 2021-05-15 23:25:52 -04:00
adbenitez a0e90208dc Merge remote-tracking branch 'upstream/master' 2021-05-14 11:24:19 -04:00
adbenitez 7ec3332f3b update device messages 2021-05-11 16:21:12 -04:00
adbenitez 2959164c96 Merge remote-tracking branch 'upstream/master' 2021-05-11 15:42:11 -04:00
adbenitez ba633f442c Merge remote-tracking branch 'upstream/master' 2021-05-07 20:17:45 -04:00
adbenitez 3dda9cb600 update version number 2021-05-07 20:12:07 -04:00
adbenitez eb657b46fb update submodule 2021-05-03 17:53:00 -04:00
adbenitez c32812f68a Merge remote-tracking branch 'upstream/master' 2021-05-03 17:51:20 -04:00
adbenitez 3bb183bf0d Merge remote-tracking branch 'upstream/master' 2021-05-02 16:47:25 -04:00
adbenitez 91a83c5cb0 make chatlist item divider darker in dark themes to improve amoled experience 2021-04-28 22:32:31 -04:00
adbenitez 2c81c8f318 handle advanced mailto links 2021-04-28 18:53:17 -04:00
adbenitez 1ad9a4dc02 Merge remote-tracking branch 'upstream/master' 2021-04-28 16:18:37 -04:00
adbenitez da3bda123c make new themes adaptive 2021-04-26 01:34:23 -04:00
adbenitez 1db14a5f1f Merge remote-tracking branch 'upstream/master' 2021-04-25 19:44:26 -04:00
adbenitez e35977012b rename hasDefaultRingtone to isChatRingtoneSet 2021-04-25 17:10:55 -04:00
adbenitez 05f9d035f4 Merge remote-tracking branch 'upstream/master' 2021-04-24 01:24:27 -04:00
adbenitez 22675eb90f update submodule 2021-04-23 13:33:15 -04:00
adbenitez 40f06d2f75 add new indigo theme and tweak purple theme 2021-04-23 01:05:47 -04:00
adbenitez 8ff44085f9 Merge remote-tracking branch 'upstream/master' 2021-04-22 15:01:52 -04:00
adbenitez 7504dd6488 update submodule 2021-04-20 18:21:20 -04:00
adbenitez 375d998e45 Merge remote-tracking branch 'upstream/master' 2021-04-20 18:19:48 -04:00
adbenitez 71d1b6a26f fix sound notifications, allow to set to "silent", and do some refactoring to move the complex logic to one single place 2021-04-20 17:29:11 -04:00
adbenitez 6669267ef0 Merge remote-tracking branch 'upstream/master' 2021-04-19 20:06:14 -04:00
adbenitez 6105fb2977 Merge remote-tracking branch 'upstream/master' 2021-04-19 17:07:25 -04:00
adbenitez 34ba56cb29 Merge remote-tracking branch 'upstream/master' 2021-04-18 22:53:07 -04:00
adbenitez 539c03bf08 do not disable markdown in message selection mode 2021-04-18 02:59:15 -04:00
adbenitez 8b948a220e update default status 2021-04-18 02:03:41 -04:00
adbenitez 78512f87a3 make outgoing bubble darker 2021-04-17 23:44:08 -04:00
adbenitez ad011f37bc update submodule 2021-04-17 22:59:50 -04:00
adbenitez 0db042d42d update submodule 2021-04-17 19:28:37 -04:00
adbenitez ddaf094a44 fix issue with markdown links 2021-04-17 16:38:07 -04:00
adbenitez 7d4c08449a move template to ISSUE_TEMPLATE folder 2021-04-17 14:29:24 -04:00
adbenitez 4bdda5fab2 add template metadata 2021-04-17 14:26:17 -04:00
adbenitez c16d69958f update submodule 2021-04-17 14:07:56 -04:00
adbenitez 6e8018fbcc Merge remote-tracking branch 'upstream/master' 2021-04-17 13:54:37 -04:00
adbenitez ee13eb36e7 Merge remote-tracking branch 'upstream/master' 2021-04-15 17:48:04 -04:00
adbenitez 9233799572 update version name 2021-04-15 14:05:11 -04:00
adbenitez 5a3a36b930 Merge remote-tracking branch 'upstream/master' 2021-04-15 13:51:52 -04:00
adbenitez acd3a3cbc5 Merge remote-tracking branch 'upstream/master' 2021-04-11 21:41:25 -04:00
adbenitez c246e9f9e6 update submodule 2021-04-10 00:34:40 -04:00
adbenitez caf88748e3 fix bug in release.yml 2021-04-10 00:09:48 -04:00
adbenitez 2d98dcb15b fix release.yml again 2021-04-10 00:05:06 -04:00
adbenitez 76a215413c update version number 2021-04-10 00:01:10 -04:00
Asiel Díaz Benítez dd3a69df19 Merge pull request #4 from adbenitez/markdown-allow-softbreak
force new lines
2021-04-09 23:58:57 -04:00
adbenitez 45f4b878ab force new lines 2021-04-09 23:56:55 -04:00
adbenitez 869f1e16f9 fix release.yml 6 2021-04-09 23:15:59 -04:00
adbenitez 89e48bad5e fix release.yml 5 2021-04-09 23:11:10 -04:00
adbenitez 72c1f5acb0 fix release.yml 4 2021-04-09 23:09:48 -04:00
adbenitez 22a64cdd58 fix release.yml 3 2021-04-09 22:54:07 -04:00
adbenitez d0e429ed2d fix release.yml 2 2021-04-09 22:53:10 -04:00
adbenitez 16a1b878f0 fix release.yml 2021-04-09 22:43:13 -04:00
adbenitez 34f8b098ec Merge remote-tracking branch 'upstream/master' 2021-04-09 22:37:22 -04:00
Asiel Díaz Benítez baf9c916ac Merge pull request #3 from adbenitez/integrate-redir
integrate Redir
2021-04-09 22:28:55 -04:00
adbenitez 9ddefb8649 handle http intents 2021-04-09 22:21:53 -04:00
adbenitez e5e8211015 Merge remote-tracking branch 'upstream/master' 2021-04-09 14:47:00 -04:00
adbenitez 13ceebe22a allow videochat in groups 2021-04-08 00:43:19 -04:00
adbenitez 060363635a add task list support 2021-04-07 17:34:15 -04:00
adbenitez 2545034065 update version number 2021-04-07 06:17:50 -04:00
adbenitez 3b02cae775 add basic markdown support 2021-04-07 06:13:40 -04:00
adbenitez 8f08fa92d0 update welcome message 2021-04-07 04:00:12 -04:00
adbenitez 4f49bc2180 add device messages 2021-04-07 03:43:29 -04:00
adbenitez 4634f42c91 add APNG and animated webp support 2021-04-07 03:36:22 -04:00
adbenitez dff820ad76 Merge remote-tracking branch 'upstream/master' 2021-04-06 14:32:30 -04:00
adbenitez e64ad8a03c Merge remote-tracking branch 'upstream/master' 2021-04-05 15:08:19 -04:00
adbenitez d40b4668c6 Merge remote-tracking branch 'upstream/master' 2021-03-31 19:42:53 -04:00
adbenitez ee047ab520 update version number 2021-03-26 15:57:09 -04:00
adbenitez 22573b1a89 tweak AudioCodec.java 2021-03-26 15:18:59 -04:00
adbenitez f8c1634f77 add submodule 2021-03-26 14:55:44 -04:00
adbenitez 6651c35cac Merge remote-tracking branch 'upstream/master' 2021-03-24 12:39:26 -04:00
adbenitez 4813f385f4 Merge remote-tracking branch 'upstream/master' 2021-03-16 13:22:39 -04:00
adbenitez b711b44efa Merge remote-tracking branch 'upstream/master' 2021-03-15 04:38:31 -04:00
adbenitez 45c6112c0a Merge remote-tracking branch 'upstream/master' 2021-03-10 07:00:58 -05:00
adbenitez 24c8cd49b5 Merge remote-tracking branch 'upstream/master' 2021-03-07 17:05:45 -05:00
adbenitez cc2e44fb70 Merge remote-tracking branch 'upstream/master' 2021-03-05 18:59:29 -05:00
adbenitez e3513222f5 update version number 2021-03-01 20:39:19 -05:00
adbenitez db37b93c7e update release.yml 2021-03-01 20:35:57 -05:00
adbenitez f1985d71f6 update submodule 2021-03-01 19:56:07 -05:00
adbenitez 08a0baaf1d Merge remote-tracking branch 'upstream/master' 2021-03-01 19:52:03 -05:00
adbenitez 6a6efde411 tweak AudioCodec 2021-03-01 00:54:29 -05:00
adbenitez adb55fdd68 Merge remote-tracking branch 'upstream/master' 2021-02-26 10:37:51 -05:00
adbenitez e5c191c6e8 Merge remote-tracking branch 'upstream/master' 2021-02-22 00:18:08 -05:00
adbenitez aeb73350a1 Merge remote-tracking branch 'upstream/master' 2021-02-16 15:54:59 -05:00
adbenitez 9fd37033b4 Merge remote-tracking branch 'upstream/master' 2021-02-12 18:59:00 -05:00
adbenitez a10ae76ab7 update submodule 2021-02-11 01:29:37 -05:00
adbenitez e3b4775c73 Merge remote-tracking branch 'upstream/master' 2021-02-11 01:28:38 -05:00
adbenitez 7228413088 Merge remote-tracking branch 'upstream/master' 2021-02-10 14:33:26 -05:00
adbenitez ccee7adeb2 Merge remote-tracking branch 'upstream/master' 2021-02-08 14:54:57 -05:00
adbenitez 791a756a4f update version number 2021-02-08 01:22:46 -05:00
adbenitez 0777ffc503 Merge remote-tracking branch 'upstream/master' 2021-02-07 23:31:00 -05:00
adbenitez 96271b367e Merge remote-tracking branch 'upstream/master' 2021-02-07 15:13:44 -05:00
adbenitez 2e190a974f update submodule 2021-02-07 14:45:53 -05:00
adbenitez d177f4eaef update release workflow 2021-02-06 19:44:16 -05:00
adbenitez b02a263664 update version number 2021-02-02 14:44:31 -05:00
adbenitez 56ce243376 update submodule 2021-02-01 20:22:16 -05:00
adbenitez fb0beb77f6 undo video tweaks 2021-02-01 19:34:11 -05:00
adbenitez 8d07dcf0a5 Merge branch 'lite' 2021-02-01 17:01:56 -05:00
adbenitez 6d4ddba654 Merge branch 'lite' 2021-02-01 16:59:39 -05:00
adbenitez 3361e426fb Merge branch 'lite' 2021-02-01 16:57:14 -05:00
adbenitez 34df284caf Merge branch 'master' of github.com:adbenitez/deltalab-android 2021-01-31 02:33:10 -05:00
adbenitez c9e5d216f0 Merge remote-tracking branch 'upstream/master' 2021-01-31 02:32:52 -05:00
Asiel Díaz Benítez 0402755258 Merge pull request #2 from adbenitez/zhv_1.5.1
Some fixes from the zhv 1.5.1 code that does it get the same theme of…
2021-01-30 23:56:25 -05:00
david bb210d9751 Some fixes from the zhv 1.5.1 code that does it get the same theme of Delta 2021-01-29 13:07:12 -05:00
adbenitez 6791172098 Merge branch 'lite' 2021-01-27 16:01:53 -05:00
adbenitez a7952dbdf7 Merge branch 'lite' 2021-01-26 14:54:55 -05:00
adbenitez e320999f38 Merge branch 'lite' 2021-01-22 23:12:37 -05:00
adbenitez 9f358d7f50 Merge branch 'lite' 2021-01-22 22:41:41 -05:00
adbenitez 1a3cc4519f Merge branch 'lite' 2021-01-22 17:31:28 -05:00
Asiel Díaz Benítez 4f7974d317 Merge pull request #1 from adbenitez/build-apk-per-pr
Build apk per pr
2021-01-22 15:57:25 -05:00
adbenitez 08eeff88bb update release action 2021-01-22 15:34:41 -05:00
adbenitez d4d5c90229 cache gradle 2021-01-22 15:25:00 -05:00
adbenitez 62c6eb47da build only for armeabi-v7a 2021-01-22 15:10:46 -05:00
adbenitez e63fe78cf2 add preview-apk action to generate preview apk per pull request 2021-01-22 14:28:49 -05:00
adbenitez 16841920f1 build release apk only 2021-01-22 13:40:54 -05:00
adbenitez ff2e8154de update action 2021-01-22 13:16:39 -05:00
adbenitez 900d29c1ae fix target path 2021-01-22 03:52:51 -05:00
adbenitez 907c82958a add cache to action 2021-01-22 03:49:49 -05:00
adbenitez c3e819206e update action 2021-01-22 02:42:47 -05:00
adbenitez 0306245748 update action 2021-01-22 02:34:59 -05:00
adbenitez 65b47140fe update action 2021-01-22 02:21:04 -05:00
adbenitez d5f77cf0e8 update action 2021-01-22 02:00:51 -05:00
adbenitez 254d3874b5 update action 2021-01-22 01:45:29 -05:00
adbenitez 9c120fba21 update action 2021-01-22 01:44:31 -05:00
adbenitez c78ee0049f update action 2021-01-22 01:18:19 -05:00
adbenitez cdade00464 update action 2021-01-22 01:02:24 -05:00
adbenitez eb65f51b15 update action 2021-01-22 00:55:05 -05:00
adbenitez 4ac01646ca update action 2021-01-22 00:44:44 -05:00
adbenitez 3e68cccafb add release action 2021-01-22 00:31:26 -05:00
adbenitez bc3071f95c sign release only if DC_RELEASE_STORE_FILE property exists 2021-01-22 00:10:40 -05:00
adbenitez 6bf25b73f0 add submodule 2021-01-21 22:05:27 -05:00
adbenitez 005b5a58bd Merge branch 'lite' 2021-01-16 12:49:39 -05:00
adbenitez 2ad6da4f56 Merge remote-tracking branch 'upstream/master' 2021-01-06 17:29:14 -05:00
adbenitez 0a29e32680 add missing import 2020-12-31 15:41:35 -05:00
adbenitez ee75dfedfe Merge remote-tracking branch 'upstream/master' 2020-12-31 13:12:31 -05:00
adbenitez 72910b3f57 Merge branch 'lite' 2020-12-19 15:33:32 -05:00
adbenitez db168d47c7 Merge remote-tracking branch 'upstream/master' 2020-12-19 15:32:43 -05:00
adbenitez 11ed8f4ae0 Merge remote-tracking branch 'upstream/master' 2020-12-16 13:09:52 -05:00
adbenitez 2ce2dd0630 Merge branch 'lite' 2020-12-13 13:10:14 -05:00
adbenitez 246395e62c Merge branch 'lite' 2020-12-06 21:16:13 -05:00
adbenitez 1fdb40865a fix ndk-make.sh 2020-12-06 21:14:47 -05:00
adbenitez 49b783e7a2 add .gitmodules 2020-12-06 16:51:41 -05:00
adbenitez 072dafda97 set unread count badge color 2020-12-06 14:15:01 -05:00
adbenitez 79720b3982 update Spanish strings 2020-12-06 13:14:23 -05:00
adbenitez 2ed1253904 update from upstream code 2020-12-06 13:05:32 -05:00
adbenitez 0dc7571848 remove old code 2020-12-06 13:00:37 -05:00
adbenitez a3f0c12598 remove sticker icon 2020-12-06 10:03:50 -05:00
adbenitez 0ed2e7fce9 update res folder 2020-12-06 10:00:54 -05:00
adbenitez 59279c1c90 Merge branch 'lite' 2020-12-06 09:37:46 -05:00
adbenitez 0f2e3ff30d update build.gradle and jni/Application.mk 2020-12-06 09:30:52 -05:00
adbenitez ba8c905106 update manifest and build.gradle 2020-12-06 08:27:18 -05:00
adbenitez 7fe3db1294 Merge remote-tracking branch 'upstream/master' 2020-12-06 08:15:28 -05:00
adbenitez f71146a242 Merge branch 'deltachat' 2020-09-18 13:57:50 -04:00
adbenitez 4787678833 make app compile again 2020-09-15 17:53:52 -04:00
adbenitez f862822059 Merge branch 'deltachat' 2020-09-15 13:40:25 -04:00
adbenitez f85f9f1c97 Merge branch 'deltachat' 2020-09-10 12:05:33 -04:00
adbenitez c3af593235 fix typo 2020-09-08 01:06:32 -04:00
adbenitez 1947badb7f Merge branch 'deltachat' 2020-09-08 00:36:22 -04:00
adbenitez 1b2efe05f6 remove old code 2020-08-24 16:42:26 -04:00
adbenitez 18f2349c01 Merge branch 'deltachat' 2020-08-24 16:07:28 -04:00
adbenitez 56db35b238 enable location streaming by default 2020-08-24 16:00:47 -04:00
adbenitez 116206193c update changelog 2020-06-02 11:04:28 -04:00
adbenitez 518afb7246 allow to import/export maps db 2020-06-02 11:01:52 -04:00
adbenitez f042b9484a update app name 2020-08-22 16:23:38 -04:00
adbenitez 297d6af7c0 update bot-list and changelog device messages 2020-08-22 15:53:30 -04:00
adbenitez c47936d614 update version number 2020-08-22 15:52:50 -04:00
adbenitez 34c93d1195 show location-streaming option again 2020-08-22 15:49:28 -04:00
adbenitez 4e3665b714 hide sticker button while recording voice message 2020-08-22 15:43:27 -04:00
adbenitez 528d1c4e2d update message changelog 2020-08-21 20:56:13 -04:00
adbenitez baa021c3c2 add support for sticker type visualization 2020-08-21 20:53:22 -04:00
adbenitez 31eae1ad2e open search on #hastag click 2020-08-21 18:06:41 -04:00
adbenitez f2c0c29efc remove progress dialog 2020-08-21 16:06:18 -04:00
adbenitez a28983a7ed change image editor layout 2020-08-21 16:05:42 -04:00
adbenitez 33681bc84f update version number 2020-08-21 16:05:26 -04:00
adbenitez a52a6fa637 update link 2020-08-21 15:07:00 -04:00
adbenitez d0d0e13396 Merge remote-tracking branch 'upstream/master' 2020-08-21 15:05:12 -04:00
adbenitez ec86a1c337 update readme 2020-08-19 17:44:35 -04:00
adbenitez ae49966aff improve linkifyMessageBody 2020-08-18 13:21:33 -04:00
adbenitez af42244dcd improve linkifyMessageBody 2020-08-18 13:19:43 -04:00
adbenitez 7883139e07 Merge remote-tracking branch 'upstream/master' 2020-08-18 01:33:37 -04:00
adbenitez 0d348f6551 allow to add/remove sticker packs 2020-08-18 01:02:47 -04:00
adbenitez 11bd7d0781 update app version and changelog message 2020-08-17 18:02:14 -04:00
adbenitez ffe33ba70b fix linkifyMessageBody for API < 24 2020-08-17 17:53:05 -04:00
adbenitez 834f848e92 remove unused code 2020-08-17 17:52:27 -04:00
adbenitez 80892e2159 update readme and screenshots 2020-08-17 01:59:38 -04:00
adbenitez fe9127f3d7 avoid pause on chat updates 2020-08-16 17:21:50 -04:00
adbenitez d1e9a28730 don't send sticker automatically 2020-08-16 16:13:01 -04:00
adbenitez 1a803fdb1c add missing import 2020-08-16 15:41:50 -04:00
adbenitez 604fd0ccb0 improve tgs loading 2020-08-16 15:38:35 -04:00
adbenitez 58560240c1 update .gitignore 2020-08-16 14:44:47 -04:00
adbenitez 53ea6231db target sdk 28, update changelog and app version 2020-08-16 14:42:37 -04:00
adbenitez d0cd7a227c add stickers selector part 1 2020-08-16 14:14:40 -04:00
adbenitez ad7b4de92d Merge remote-tracking branch 'upstream/master' into deltalab 2020-08-16 12:24:41 -04:00
adbenitez eef12c8e67 tweak sticker footer 2020-08-12 15:16:39 -04:00
adbenitez 5ea208dbbc update changelog 2020-08-11 21:37:23 -04:00
adbenitez 4410a4bd26 Merge remote-tracking branch 'upstream/master' into deltalab 2020-08-11 21:20:44 -04:00
adbenitez 763721111f update changelog 2020-08-11 21:20:12 -04:00
adbenitez b6ecda1319 avoid paused animations 2020-08-11 20:08:46 -04:00
adbenitez 912033d6c9 add new background 2020-08-11 17:59:59 -04:00
adbenitez 24dcc075bf tweak icon, add artwork 2020-08-11 16:05:33 -04:00
adbenitez 1347c3af52 tweak icon, add artwork 2020-08-11 16:05:15 -04:00
adbenitez 84bf0e2107 disable chache 2020-08-10 17:54:09 -04:00
adbenitez b310788307 improve linkifyMessageBody 2020-08-10 15:18:57 -04:00
adbenitez 19c56fbd04 add new icon and use DeltaLab branding 2020-08-10 03:49:22 -04:00
adbenitez f840d87ce7 loop forever, pause/resume on click 2020-08-10 00:58:16 -04:00
adbenitez 776fb8881a add support for .tgs files (part 2) 2020-08-09 18:26:28 -04:00
adbenitez ac4c4e24ab add support for .tgs files (part 1) 2020-08-09 16:38:21 -04:00
adbenitez 700879fe1b Merge remote-tracking branch 'upstream/master' into deltalab 2020-08-08 18:03:42 -04:00
adbenitez a3e5cddc0c update minSDK 2020-08-08 17:58:56 -04:00
adbenitez 8c1c6a73bf linkify mentions and hastags 2020-08-08 01:51:05 -04:00
adbenitez d36cd19f8d update icon 2020-08-08 00:46:09 -04:00
adbenitez c618920589 remove debug icons 2020-08-08 00:45:48 -04:00
adbenitez 08ebc065ce Merge remote-tracking branch 'upstream/master' into deltalab 2020-08-06 00:08:27 -04:00
adbenitez 5c53fd6600 remove location feature from menu 2020-08-06 00:07:51 -04:00
adbenitez d42ae2fe54 Merge remote-tracking branch 'upstream/master' into deltalab 2020-08-02 23:24:42 -04:00
adbenitez 3f4546acf7 update messages id 2020-08-02 23:23:18 -04:00
adbenitez cdefa8e6b5 remove uncommon architectures 2020-07-30 20:05:11 -04:00
adbenitez 80353a8c73 Merge remote-tracking branch 'upstream/master' into deltalab 2020-07-30 19:17:19 -04:00
adbenitez 7982b667ad Merge branch 'master' into deltalab 2020-07-30 18:38:55 -04:00
adbenitez 5c1f30fbf1 set icon, update device messages 2020-07-30 18:26:27 -04:00
adbenitez d617d39b9c copy message info to clipboard 2020-07-27 23:53:55 -04:00
adbenitez 5bc385d3c9 Merge remote-tracking branch 'upstream/master' into deltalab 2020-07-27 19:43:36 -04:00
adbenitez b193eeda58 Merge remote-tracking branch 'upstream/master' into deltalab 2020-07-27 18:45:32 -04:00
adbenitez f25a0734b6 Merge remote-tracking branch 'upstream/master' into deltalab 2020-07-14 05:48:43 -04:00
adbenitez 5d3e68157c update version number and changelog 2020-07-13 15:06:52 -04:00
adbenitez a07d20b865 Merge branch 'master' into deltalab 2020-07-13 13:08:11 -04:00
adbenitez e9ca447bcb update changelog message 2020-07-11 23:30:01 -04:00
adbenitez aee68fe49f Merge remote-tracking branch 'upstream/master' into deltalab 2020-07-11 19:12:27 -04:00
adbenitez 5dceb5cfea Merge remote-tracking branch 'upstream/master' into deltalab 2020-07-10 19:22:42 -04:00
adbenitez e7649d54e7 Merge branch 'master' into deltalab 2020-07-09 21:23:09 -04:00
adbenitez 18d6e4f3fa update changelog message 2020-07-07 21:04:16 -04:00
adbenitez b1001af04e Merge remote-tracking branch 'upstream/master' into deltalab 2020-07-07 17:31:12 -04:00
adbenitez e95dfabd06 update bots msg 2020-07-06 17:19:43 -04:00
adbenitez 8af77665be auto-accept contact requests 2020-07-06 17:09:10 -04:00
adbenitez 2d7108e248 Merge branch 'master' into deltalab 2020-07-02 17:43:06 -04:00
adbenitez c3388881f7 Merge branch 'master' into deltalab 2020-07-01 14:10:40 -04:00
adbenitez 1cfdafc9d2 update version number and changelog 2020-07-01 00:48:19 -04:00
adbenitez 74036fc301 Merge branch 'master' into deltalab 2020-06-30 23:07:54 -04:00
adbenitez 5abcbe2c15 Merge branch 'master' into deltalab 2020-06-29 18:05:38 -04:00
adbenitez c9d289ab2e fix typo 2020-06-25 20:40:53 -04:00
adbenitez 3703cf09be Merge branch 'master' into deltalab 2020-06-25 19:33:26 -04:00
adbenitez b3aec695c5 add device message 2020-06-25 19:32:28 -04:00
adbenitez 8de820f2c7 Merge branch 'master' into deltalab 2020-06-25 18:30:53 -04:00
adbenitez 5e24ca3650 reduce sample rate 2020-06-25 17:21:15 -04:00
adbenitez 5c64bffe20 update icon 2020-06-24 18:10:16 -04:00
adbenitez f903c804c8 Merge branch 'master' into deltalab 2020-06-24 15:30:29 -04:00
adbenitez e179a1ab06 update icon 2020-06-24 15:23:21 -04:00
adbenitez 4b358e615f Merge branch 'master' into deltalab 2020-06-24 01:25:23 -04:00
adbenitez c972a28a96 Merge branch 'master' into deltalab 2020-06-22 15:57:49 -04:00
adbenitez 56d3a95290 change app name in all locales 2020-06-21 04:24:14 -04:00
adbenitez 3797611307 change app name and logo 2020-06-21 04:14:48 -04:00
adbenitez d8836d64b2 Merge remote-tracking branch 'upstream/master' into deltalab 2020-06-19 23:43:32 -04:00
adbenitez 1a39e78962 fix themes 2020-06-17 21:15:54 -04:00
adbenitez 2518dcade7 update Spanish translations 2020-06-17 21:15:01 -04:00
adbenitez 63ee5a050c add pink theme 2020-06-17 20:25:16 -04:00
adbenitez 6e36e08c4d port to fork (first official commit) 2020-06-17 19:22:09 -04:00
339 changed files with 5040 additions and 2817 deletions
+2
View File
@@ -14,6 +14,8 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Validate Fastlane Metadata
uses: ashutoshgngwr/validate-fastlane-supply-metadata@v2
- uses: Swatinem/rust-cache@v2
with:
working-directory: jni/deltachat-core-rust
+9 -8
View File
@@ -23,16 +23,17 @@ jobs:
name: Upload Release APK
runs-on: ubuntu-latest
steps:
- 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
java-version: 17
distribution: 'temurin'
- uses: android-actions/setup-android@v3
- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
@@ -53,13 +54,13 @@ 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 assembleFossRelease
./gradlew --no-daemon assembleGplayRelease
- name: Release
uses: softprops/action-gh-release@v1
with:
token: "${{ secrets.GITHUB_TOKEN }}"
body: "WARNING: DeltaChat Lite is not DeltaLab! it is a lightweight version of Delta Chat"
body: "DeltaLab release, download the APK file for your phone's CPU architecture, if you don't know your phone's architecture, use the universal APK which works for all architectures"
prerelease: ${{ contains(github.event.ref, '-beta') }}
fail_on_unmatched_files: true
files: build/outputs/apk/foss/release/*.apk
files: build/outputs/apk/gplay/release/*.apk
+3 -1
View File
@@ -46,4 +46,6 @@ jni/armeabi
jni/armeabi-v7a
jni/arm64-v8a
*~
artwork/drawable*/
artwork/mipmap-*/
*~
+1 -1
View File
@@ -1,3 +1,3 @@
[submodule "jni/deltachat-core-rust"]
path = jni/deltachat-core-rust
url = https://github.com/adbenitez/deltalab-core
url = https://github.com/deltalab-org/deltalab-core
-22
View File
@@ -1,27 +1,5 @@
# 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
+30 -231
View File
@@ -1,247 +1,46 @@
## Delta Chat Android Client
## DeltaLab Android Client
This is the Android client for [Delta Chat](https://delta.chat/).
It is available on [F-Droid](https://f-droid.org/app/com.b44t.messenger) and
the [Google Play Store](https://play.google.com/store/apps/details?id=chat.delta).
The APK can also be downloaded from [get.delta.chat](https://get.delta.chat).
DeltaLab is a [Delta Chat](https://delta.chat/) client for Android.
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).
<img alt="Screenshot Chat List" src="docs/images/2019-01-chatlist.png" width="298" /> <img alt="Screenshot Chat View" src="docs/images/2019-01-chat.png" width="298" />
[<img src="store/get-it-on-IzzyOnDroid.png"
alt="Get it on IzzyOnDroid"
height="48">](https://apt.izzysoft.de/fdroid/index/apk/chat.delta.lite)
[<img src="store/get-it-on-apklis.png"
alt="Disponible en Apklis"
height="48">](https://www.apklis.cu/application/chat.delta.lite)
[<img src="store/get-it-on-github.png"
alt="Get it on GitHub"
height="48">](https://github.com/adbenitez/deltalab-android/releases/latest)
# Check Out Repository
<img alt="Screenshot Chat List" src="fastlane/metadata/android/en-US/images/phoneScreenshots/02.png" width="298" /> <img alt="Screenshot Chat View" src="fastlane/metadata/android/en-US/images/phoneScreenshots/04.jpg" width="298" />
When checking out _deltachat-android_, make sure also to check out the
subproject _deltachat-core-rust_:
# WebXDC
- When using Git, you can do this initially by
`$ git clone --recursive https://github.com/deltachat/deltachat-android`
or later by `git submodule update --init --recursive`. If you do this in your
home directory, this results in the folder `~/deltachat-android` which is just fine.
DeltaLab has some extended support for WebXDC apps:
# Build Using Nix
The repository contains [Nix](https://nixos.org/) development environment
described in `flake.nix` file.
If you don't have Nix installed,
the easiest way is to use [The Determinate Nix Installer](https://github.com/DeterminateSystems/nix-installer)
which installs Nix with [Flakes](https://nixos.wiki/wiki/Flakes) feature enabled out of the box
and can be cleanly uninstalled with `/nix/nix-installer uninstall` once you don't need it anymore.
Once you have Nix with Flakes feature set up start the development environment shell:
```
nix develop
```
Nix development environment contains Rust with cross-compilation toolchains and Android SDK.
To [build an APK](https://developer.android.com/studio/build/building-cmdline) run the following 2 steps.
Note that the first step may take some time to build for all architectures. You can optionally read
[the first comment block in the `ndk-make.sh` script](https://github.com/deltachat/deltachat-android/blob/master/scripts/ndk-make.sh)
for pointers on how to build for a specific architecture.
```
$ scripts/ndk-make.sh
$ ./gradlew assembleDebug
```
Resulting APK files can be found in
`build/outputs/apk/gplay/debug/` and
`build/outputs/apk/fat/debug/`.
# Build Using Dockerfile
Another way to build APK is to use provided `Dockerfile`
with [Docker](https://www.docker.com/) or [Podman](https://podman.io/).
Podman is a drop-in replacement for Docker that does not require root privileges.
If you don't have Docker or Podman setup yet, read [how to setup Podman](#setup-podman)
below. If you don't want to use Docker or Podman, read [how to manually install the
build environment](#install-build-environment).
First, build the image `deltachat-android` by running
```
podman build --build-arg UID=$(id -u) --build-arg GID=$(id -g) . -t deltachat-android
```
or
```
docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) . -t deltachat-android
```
Then, run the image:
```
podman run --userns=keep-id -it --name deltachat -v $(pwd):/home/app:z -w /home/app localhost/deltachat-android
```
or
```
docker run -it --name deltachat -v $(pwd):/home/app:z -w /home/app localhost/deltachat-android
```
You can leave the container with Ctrl+D or by typing `exit` and re-enter it with
`docker start -ia deltachat` or `podman start -ia deltachat`.
Within the container, install toolchains and build the native library:
```
deltachat@6012dcb974fe:/home/app$ scripts/install-toolchains.sh
deltachat@6012dcb974fe:/home/app$ scripts/ndk-make.sh
```
Then, [build an APK](https://developer.android.com/studio/build/building-cmdline):
```
deltachat@6012dcb974fe:/home/app$ ./gradlew assembleDebug
```
## Troubleshooting
- Executing `./gradlew assembleDebug` inside the container fails with `The SDK directory '/home/user/Android/Sdk' does not exist.`:
The problem is that Android Studio (outside the container) automatically creates a file `local.properties` with a content like `sdk.dir=/home/username/Android/Sdk`,
so, Gradle-inside-the-container looks for the Sdk at `/home/username/Android/Sdk`, where it can't find it.
You could:
- either: remove the file or just the line starting with `sdk.dir`
- or: run `./gradlew assembleDebug` from outside the container (however, there may be incompatibility issues if different versions are installed inside and outside the container)
- Running the image fails with `ERRO[0000] The storage 'driver' option must be set in /etc/containers/storage.conf, guarantee proper operation.`:
In /etc/containers/storage.conf, replace the line: `driver = ""` with: `driver = "overlay"`.
You can also set the `driver` option to something else, you just need to set it to _something_.
[Read about possible options here](https://github.com/containers/storage/blob/master/docs/containers-storage.conf.5.md#storage-table).
# <a name="setup-podman"></a>Setup Podman
These instructions were only tested on a Manjaro machine so far. If anything doesn't work, please open an issue.
First, [Install Podman](https://podman.io/getting-started/installation).
Then, if you want to run Podman without root, run:
```
sudo touch /etc/subgid
sudo touch /etc/subuid
sudo usermod --add-subuids 165536-231072 --add-subgids 165536-231072 yourusername
```
(replace `yourusername` with your username).
See https://wiki.archlinux.org/index.php/Podman#Rootless_Podman for more information.
# <a name="install-build-environment"></a>Install Build Environment (without Docker or Podman)
To setup build environment manually:
- _Either_, in Android Studio, go to "Tools / SDK Manager / SDK Tools", enable "Show Package Details",
select "CMake" and the desired NDK (install the same NDK version as the [Dockerfile](https://github.com/deltachat/deltachat-android/blob/master/Dockerfile)), hit "Apply".
- _Or_ read [Dockerfile](https://github.com/deltachat/deltachat-android/blob/master/Dockerfile) and mimic what it does.
Then, in both cases, install Rust using [rustup](https://rustup.rs/)
and Rust toolchains for cross-compilation by executing `scripts/install-toolchains.sh`.
Then, configure `ANDROID_NDK_ROOT` environment variable to point to the Android NDK
installation directory e.g. by adding this to your `.bashrc`:
```bash
export ANDROID_NDK_ROOT=${HOME}/Android/Sdk/ndk/[version] # (or wherever your NDK is) Note that there is no `/` at the end!
export PATH=${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/:${ANDROID_NDK_ROOT}
```
After that, call `scripts/ndk-make.sh` in the root directory to build core-rust.
Afterwards run the project in Android Studio. The project requires API 25.
With chance, that's it :) - if not, read on how to set up a proper development
environment.
# Install Development Environment
1. Some libs required by Android Studio may be missing on 64 bit Linux machines
[Source](https://developer.android.com/studio/install.html)], so for Ubuntu execute
`$ sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386`
and for Fedora execute
`$ sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686`.
2. Download Android Studio from <https://developer.android.com> (android-studio-ide-...-linux.zip)
and unpack the archive which contains a single folder called `android-studio`;
move this folder e.g. to `~/android-studio`.
3. To launch Android Studio for the first time, open a terminal, navigate to
`~/android-studio/bin`, execute `./studio.sh` and use all the standard values
from the wizard.
4. Android Studio now asks you if you want to open an existing project;
choose `~/deltachat-android` as created in the "Build" chapter (Android Studio starts to
build the project, however, there are some steps missing before this will
succeed).
5. If components are missing, click on the corresponding error
message and install eg. required SDKs and the "Build-Tools" (you should
also find the option at "Tools / Android / SDK Manager / SDK Platforms").
Now the build should succeed - but the app still misses the native part.
6. Download Android NDK from
[NDK Archives](https://developer.android.com/ndk/downloads)
and extract the archive containing a single folder
called something like `android-ndk-r23b-linux`; move this folder e.g. to `~/android-ndk`.
7. Export the folder path to your environment as `ANDROID_NDK_ROOT` and add it to `PATH`.
You can achieve this e.g. by adding this to your `.bashrc`
```bash
export ANDROID_NDK_ROOT=${HOME}/android-ndk
export PATH=${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/:${ANDROID_NDK_ROOT}
```
# Run UI Tests and Benchmarks
- You don't necessarily need a dedicated testing device.
Backup your current account first, maybe there are some bugs in switching accounts.
- You can run benchmarks on either an emulated device or a real device.
You need at least Android 9. For better benchmark results,
you should run the benchmark on a real device and make sure that the core is compiled in release mode.
- Disable animations on your device, otherwise the test may fail:
at "Developer options"
set all of "Window animation scale", "Transition animation scale" and "Animator duration scale" to 0x
- In Android Studio: "File" / "Sync project with gradle files"
- In Android Studio: "Run" / "Edit configurations" / "+" / "Android Instrumented test":
Either select a specific class or select "All in Module" / "OK" /
Select your configuration in the toolbar / Click on the green "run" button in the toolbar to run the tests
## Get the benchmark results
When the benchmark is done, you will get a result like
`MEASURED RESULTS (Benchmark) - Going thorough all 10 chats: 11635,11207,11363,11352,11279,11183,11137,11145,11032,11057`.
You can paste `11635,11207,11363,11352,11279,11183,11137,11145,11032,11057`
into a cell in a LibreOffice spreadsheet, do "Data" / "Text to columns",
choose `,` as a separator, hit "OK", and create a diagram.
## Run online tests
For some tests, you need to provide the credentials to an actual email account.
You have 2 ways to do this:
1. (Recommended): Put them into the file ~/.gradle/gradle.properties (create it if it doesn't exist):
```
TEST_ADDR=youraccount@yourdomain.org
TEST_MAIL_PW=youpassword
```
2. Or set them via environment variables.
# Translations
Android metadata and changelogs are translated using [Weblate](https://hosted.weblate.org/projects/deltachat/android-metadata/).
<a href="https://hosted.weblate.org/engage/deltachat/">
<img src="https://hosted.weblate.org/widget/deltachat/android-metadata/svg-badge.svg" alt="Translation status" />
</a>
- `window.webxdc.deltalab` a string with the DeltaLab version and can be used by app developers
to detect when they can use the DeltaLab-specific features.
- `window.webxdc.isCommunity` true if the current account is a community account
- `sendToChat()`: extra property `subject` can be set to a text string to set message/email's subject.
- `sendToChat()`: extra property `html` can be set to a string of html markup to set the HTML part of the email/message.
- `sendToChat()`: the file object parameter also accepts a `type` field that can be one of:
* `"sticker"`
* `"image"`
* `"audio"`
* `"video"`
* `"file"` (default if `type` field is not present)
- Inside apps, clicking external links is supported, ex. to open in browser, so you can include links to your website or donation pages.
- `manifest.toml` field: `orientation`, if you set it to `"landscape"` your app will be launched in landscape mode.
# Credits
The user interface classes are based on the Signal messenger.
DeltaLab is based on the [official Delta Chat client](https://github.com/deltachat/deltachat-android) with some improvements.
DeltaLab uses a [modified](https://github.com/adbenitez/deltalab-core) version of the [Delta Chat Core Library](https://github.com/deltachat/deltachat-core-rust).
# License
Licensed GPLv3+, see the LICENSE file for details.
Copyright © 2022 Delta Chat contributors.
Copyright © 2024 DeltaLab contributors.
-10
View File
@@ -109,16 +109,6 @@ on <https://developer.amazon.com/dashboard>:
f) on "Step 4" page: "Submit app"
## Release on Huawei AppGallery
on <https://developer.huawei.com/consumer/en/appgallery>:
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.
+439
View File
@@ -0,0 +1,439 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Capa_1"
x="0px"
y="0px"
viewBox="0 0 384 384"
style="enable-background:new 0 0 384 384;"
xml:space="preserve"
sodipodi:docname="ic_launcher.svg"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/ic_launcher.png"
inkscape:export-xdpi="49.038963"
inkscape:export-ydpi="49.038963"><metadata
id="metadata43"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs41"><linearGradient
id="linearGradient4695"
osb:paint="solid"><stop
style="stop-color:#5743ff;stop-opacity:1;"
offset="0"
id="stop4693" /></linearGradient><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath866"><g
style="fill:url(#linearGradient968);fill-opacity:1"
id="use868"
inkscape:label="Clip"><circle
style="fill:url(#linearGradient966);fill-opacity:1;stroke-width:0.75687599"
id="circle962"
cx="125"
cy="259"
inkscape:export-xdpi="71.111115"
inkscape:export-ydpi="71.111115"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/mipmap-xxxhdpi/ic_launcher_round.png"
r="125" /></g></clipPath><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath880"><g
id="use882"
inkscape:label="Clip"><g
id="g4833"
clip-path="url(#clipPath866-3)"><g
inkscape:label="Clip"
id="g4831"><circle
r="125"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/mipmap-xxxhdpi/ic_launcher_round.png"
inkscape:export-ydpi="71.111115"
inkscape:export-xdpi="71.111115"
cy="259"
cx="125"
id="circle4829"
style="fill:#5a6f78;fill-opacity:1;stroke-width:0.75687599" /></g></g><g
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
transform="matrix(0.17680256,0,0,0.19688889,-101.30692,70.72311)"
id="g4839"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/drawable-xxhdpi-v11/icon_notification.png"
inkscape:export-xdpi="46.080002"
inkscape:export-ydpi="46.080002"><g
transform="translate(0,256.33)"
id="g4837"><path
inkscape:connector-curvature="0"
d="m 1280,510.454 -202.69,364.022 477.87,130.194 H 855.796 L 1280,242.819 1704.2,1004.67 h -149.02 z"
style="fill:#ffffff"
id="path4835" /></g></g></g></clipPath><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath866-3"><g
inkscape:label="Clip"
id="use868-5"><circle
r="125"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/mipmap-xxxhdpi/ic_launcher_round.png"
inkscape:export-ydpi="71.111115"
inkscape:export-xdpi="71.111115"
cy="259"
cx="125"
id="circle4843"
style="fill:#5a6f78;fill-opacity:1;stroke-width:0.75687599" /></g></clipPath><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath955"><g
id="use957"
inkscape:label="Clip"><rect
style="fill:#5a6f78;fill-opacity:1;stroke-width:0.83070838"
id="rect101"
width="324"
height="324"
x="0"
y="60"
inkscape:export-xdpi="128"
inkscape:export-ydpi="128"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/mipmap-xxxhdpi/ic_launcher_foreground.png" /><g
style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"
transform="matrix(0.17680256,0,0,0.19688889,-64.306924,35.72311)"
id="g107"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/drawable-xxhdpi-v11/icon_notification.png"
inkscape:export-xdpi="46.080002"
inkscape:export-ydpi="46.080002"><g
transform="translate(0,256.33)"
id="g105"><path
inkscape:connector-curvature="0"
d="m 1280,510.454 -202.69,364.022 477.87,130.194 H 855.796 L 1280,242.819 1704.2,1004.67 h -149.02 z"
style="fill:#ffffff"
id="path103" /></g></g></g></clipPath><linearGradient
id="linearGradient4409"><stop
style="stop-color:#f9f9f9;stop-opacity:1"
offset="0"
id="stop4411" /><stop
style="stop-color:#cccccc;stop-opacity:0;"
offset="1"
id="stop4413" /></linearGradient><linearGradient
id="linearGradient4399"><stop
style="stop-color:#f9f9f9;stop-opacity:1;"
offset="0"
id="stop4401" /><stop
style="stop-color:#f9f9f9;stop-opacity:0;"
offset="1"
id="stop4403" /></linearGradient><linearGradient
id="linearGradient4375"><stop
style="stop-color:#364e59;stop-opacity:1;"
offset="0"
id="stop4377" /><stop
style="stop-color:#364e59;stop-opacity:0;"
offset="1"
id="stop4379" /></linearGradient><linearGradient
id="linearGradient4367"><stop
style="stop-color:#dc000f;stop-opacity:1;"
offset="0"
id="stop4369" /><stop
style="stop-color:#00ff00;stop-opacity:0;"
offset="1"
id="stop4371" /></linearGradient><linearGradient
id="linearGradient4359"><stop
style="stop-color:#dc000f;stop-opacity:1;"
offset="0"
id="stop4361" /><stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop4363" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4409"
id="linearGradient4415"
x1="16.345125"
y1="3.8388948"
x2="36.001561"
y2="24.359164"
gradientUnits="userSpaceOnUse" /><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath866-2"><use
x="0"
y="0"
xlink:href="#g862-6"
id="use868-7"
width="100%"
height="100%" /></clipPath><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4695"
id="linearGradient966"
gradientUnits="userSpaceOnUse"
x1="0"
y1="259"
x2="250"
y2="259" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4695"
id="linearGradient968"
gradientUnits="userSpaceOnUse"
x1="0"
y1="259"
x2="250"
y2="259" /><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath866-2-3"><use
x="0"
y="0"
xlink:href="#g862-6-3"
id="use868-7-6"
width="100%"
height="100%" /></clipPath><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath866-2-3-0"><use
x="0"
y="0"
xlink:href="#g862-6-3-6"
id="use868-7-6-9"
width="100%"
height="100%"
transform="translate(46.974772,-79.626121)" /></clipPath><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath866-2-3-3"><use
x="0"
y="0"
xlink:href="#g862-6-3-8"
id="use868-7-6-7"
width="100%"
height="100%" /></clipPath><clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath866-2-3-0-5"><use
x="0"
y="0"
xlink:href="#g862-6-3-6-3"
id="use868-7-6-9-9"
width="100%"
height="100%"
transform="translate(46.974772,-79.626121)" /></clipPath></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="800"
inkscape:window-height="835"
id="namedview39"
showgrid="false"
inkscape:zoom="1.2291667"
inkscape:cx="171.72731"
inkscape:cy="164.26327"
inkscape:window-x="800"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Capa_1"
inkscape:pagecheckerboard="true" /><g
id="g8" /><g
id="g10" /><g
id="g12" /><g
id="g14" /><g
id="g16" /><g
id="g18" /><g
id="g20" /><g
id="g22" /><g
id="g24" /><g
id="g26" /><g
id="g28" /><g
id="g30" /><g
id="g32" /><g
id="g34" /><g
id="g36" /><g
id="g916"
transform="translate(-7.0058859,32.979264)"
inkscape:export-filename="/home/DATA/Projects/deltalab-android/artwork/mipmap-xxxhdpi/ic_launcher_foreground.png"
inkscape:export-xdpi="128"
inkscape:export-ydpi="128"><g
style="fill:#6200ed;fill-opacity:1"
transform="translate(-722.44068,-167.59322)"
id="g4704"><rect
style="fill:#6200ed;fill-opacity:1;stroke-width:0.83070832"
id="rect830-9-3"
width="324"
height="324"
x="0"
y="60"
inkscape:export-xdpi="128"
inkscape:export-ydpi="128"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/mipmap-xxxhdpi/ic_launcher_foreground.png" /></g><g
transform="matrix(3.2309634,0,0,3.2309634,-639.59928,-24.75182)"
inkscape:label="Layer 1"
id="layer1-6"><path
inkscape:connector-curvature="0"
d="m 24.015625,1.2871094 c -12.549421,0 -22.7285156,10.1790936 -22.7285156,22.7285156 0,12.549422 10.1790946,22.728516 22.7285156,22.728516 14.337742,-0.342877 9.614062,-4.703116 23.697266,0.96875 -7.545453,-13.001555 -1.082562,-13.32935 -0.96875,-23.697266 0,-12.549422 -10.179094,-22.7285156 -22.728516,-22.7285156 z M 24,4.7636719 C 34.612549,4.6345328 43.220703,13.143938 43.220703,23.765625 43.078418,31.966952 36.761278,33.237209 42.871094,42.78125 31.717586,37.600152 34.090255,43.195768 24,43.236328 13.387453,43.365468 4.7792969,34.856059 4.7792969,24.234375 4.7792969,13.612691 13.387453,4.8928107 24,4.7636719 Z"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.57405078;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.43921569"
id="path3769-7" /><g
id="text4383-5"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" /><g
id="text4421-3"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" /><g
id="text3797-5"
style="font-style:normal;font-weight:normal;font-size:42.10587311px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
transform="scale(1.1122373,0.89908874)"><path
inkscape:connector-curvature="0"
id="path4161-6"
style="font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman';fill:#ffffff;fill-opacity:1"
d="m 21.688854,23.636251 q -1.027975,-1.151333 -2.857771,-2.754974 -2.014832,-1.768118 -2.713855,-2.775534 -0.699024,-1.027975 -0.699024,-2.240986 0,-1.809237 1.68588,-2.837212 1.68588,-1.048535 4.399735,-1.048535 2.713855,0 4.728687,0.925178 2.035391,0.925177 2.035391,2.549379 0,0.781261 -0.493428,1.295249 -0.493428,0.513987 -1.151333,0.513987 -0.945737,0 -2.220426,-1.418606 -1.295249,-1.439165 -2.199868,-2.014832 -0.884059,-0.596225 -2.07651,-0.596225 -1.521404,0 -2.50826,0.678463 -0.966297,0.678464 -0.966297,1.726999 0,0.986857 0.801821,1.850356 0.801821,0.863499 4.132461,3.145605 3.556795,2.446581 5.01652,3.824068 1.480285,1.377487 2.405462,3.3512 0.925178,1.973713 0.925178,4.17358 0,3.865188 -2.734414,6.825757 -2.713855,2.94001 -6.352888,2.94001 -3.310081,0 -5.592187,-2.364344 -2.282105,-2.364343 -2.282105,-6.311769 0,-3.803509 2.50826,-6.352888 2.528819,-2.549379 6.208971,-3.083926 z m 0.904619,0.945737 q -5.900579,0.966297 -5.900579,8.100447 0,3.680152 1.459725,5.715543 1.480285,2.035391 3.433438,2.035391 2.035391,0 3.3512,-1.953153 1.315808,-1.973713 1.315808,-5.324913 0,-4.852044 -3.659592,-8.573315 z" /></g></g></g><g
id="g960"
inkscape:export-filename="/home/DATA/Projects/deltalab-android/artwork/mipmap-hdpi/ic_launcher.png"
inkscape:export-xdpi="27.647999"
inkscape:export-ydpi="27.647999"
transform="translate(-8.1355932,8.1355932)"><g
transform="translate(-385.62712,-169.22034)"
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero"
clip-path="url(#clipPath866-2)"
id="g864-3"><g
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero"
id="g862-6"
inkscape:label="Clip"><circle
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero;stroke-width:0.75687599"
id="path51-0"
cx="125"
cy="259"
inkscape:export-xdpi="71.111115"
inkscape:export-ydpi="71.111115"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/mipmap-xxxhdpi/ic_launcher_round.png"
r="125" /></g></g><g
transform="matrix(3.2309634,0,0,3.2309634,-339.78572,10.62106)"
inkscape:label="Layer 1"
id="layer1-62"><path
inkscape:connector-curvature="0"
d="m 24.015625,1.2871094 c -12.549421,0 -22.7285156,10.1790936 -22.7285156,22.7285156 0,12.549422 10.1790946,22.728516 22.7285156,22.728516 14.337742,-0.342877 9.614062,-4.703116 23.697266,0.96875 -7.545453,-13.001555 -1.082562,-13.32935 -0.96875,-23.697266 0,-12.549422 -10.179094,-22.7285156 -22.728516,-22.7285156 z M 24,4.7636719 C 34.612549,4.6345328 43.220703,13.143938 43.220703,23.765625 43.078418,31.966952 36.761278,33.237209 42.871094,42.78125 31.717586,37.600152 34.090255,43.195768 24,43.236328 13.387453,43.365468 4.7792969,34.856059 4.7792969,24.234375 4.7792969,13.612691 13.387453,4.8928107 24,4.7636719 Z"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.57405078;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.43921569"
id="path3769-6" /><g
id="text4383-1"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" /><g
id="text4421-8"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" /><g
id="text3797-7"
style="font-style:normal;font-weight:normal;font-size:42.10587311px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
transform="scale(1.1122373,0.89908874)"><path
inkscape:connector-curvature="0"
id="path4161-9"
style="font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman';fill:#ffffff;fill-opacity:1"
d="m 21.688854,23.636251 q -1.027975,-1.151333 -2.857771,-2.754974 -2.014832,-1.768118 -2.713855,-2.775534 -0.699024,-1.027975 -0.699024,-2.240986 0,-1.809237 1.68588,-2.837212 1.68588,-1.048535 4.399735,-1.048535 2.713855,0 4.728687,0.925178 2.035391,0.925177 2.035391,2.549379 0,0.781261 -0.493428,1.295249 -0.493428,0.513987 -1.151333,0.513987 -0.945737,0 -2.220426,-1.418606 -1.295249,-1.439165 -2.199868,-2.014832 -0.884059,-0.596225 -2.07651,-0.596225 -1.521404,0 -2.50826,0.678463 -0.966297,0.678464 -0.966297,1.726999 0,0.986857 0.801821,1.850356 0.801821,0.863499 4.132461,3.145605 3.556795,2.446581 5.01652,3.824068 1.480285,1.377487 2.405462,3.3512 0.925178,1.973713 0.925178,4.17358 0,3.865188 -2.734414,6.825757 -2.713855,2.94001 -6.352888,2.94001 -3.310081,0 -5.592187,-2.364344 -2.282105,-2.364343 -2.282105,-6.311769 0,-3.803509 2.50826,-6.352888 2.528819,-2.549379 6.208971,-3.083926 z m 0.904619,0.945737 q -5.900579,0.966297 -5.900579,8.100447 0,3.680152 1.459725,5.715543 1.480285,2.035391 3.433438,2.035391 2.035391,0 3.3512,-1.953153 1.315808,-1.973713 1.315808,-5.324913 0,-4.852044 -3.659592,-8.573315 z" /></g></g></g><g
id="g214"
inkscape:export-xdpi="384"
inkscape:export-ydpi="384"
transform="translate(-380.83094,180.63582)"><g
transform="matrix(0.54438354,0,0,0.55505241,77.882295,0.71067353)"
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero"
clip-path="url(#clipPath866-2-3)"
id="g864-3-5"><g
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero"
id="g862-6-3"
inkscape:label="Clip"><circle
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero;stroke-width:0.75687599"
id="path51-0-5"
cx="125"
cy="259"
inkscape:export-xdpi="71.111115"
inkscape:export-ydpi="71.111115"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/mipmap-xxxhdpi/ic_launcher_round.png"
r="125" /></g></g><g
inkscape:transform-center-y="4.1811826"
inkscape:transform-center-x="5.0611235"
transform="matrix(0.09576995,0,0,0.23533009,182.58194,121.9428)"
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero"
clip-path="url(#clipPath866-2-3-0)"
id="g864-3-5-3"><g
transform="matrix(0.7789728,-0.36970944,1.0635416,0.7789728,-294.80364,183.08585)"
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero"
id="g862-6-3-6"
inkscape:label="Clip"><circle
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero;stroke-width:0.75687599"
id="path51-0-5-0"
cx="125"
cy="259"
inkscape:export-xdpi="71.111115"
inkscape:export-ydpi="71.111115"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/mipmap-xxxhdpi/ic_launcher_round.png"
r="125" /></g></g><g
transform="matrix(3.2309634,0,0,3.2309634,64.084451,63.801879)"
inkscape:label="Layer 1"
id="layer1-62-6"><path
inkscape:connector-curvature="0"
d="m 24.015625,1.2871094 c -12.549421,0 -22.7285156,10.1790936 -22.7285156,22.7285156 0,12.549422 10.1790946,22.728516 22.7285156,22.728516 14.337742,-0.342877 9.614062,-4.703116 23.697266,0.96875 -7.545453,-13.001555 -1.082562,-13.32935 -0.96875,-23.697266 0,-12.549422 -10.179094,-22.7285156 -22.728516,-22.7285156 z M 24,4.7636719 C 34.612549,4.6345328 43.220703,13.143938 43.220703,23.765625 43.078418,31.966952 36.761278,33.237209 42.871094,42.78125 31.717586,37.600152 34.090255,43.195768 24,43.236328 13.387453,43.365468 4.7792969,34.856059 4.7792969,24.234375 4.7792969,13.612691 13.387453,4.8928107 24,4.7636719 Z"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.57405078;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.43921569"
id="path3769-6-2" /><g
id="text4383-1-9"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" /><g
id="text4421-8-1"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" /><g
id="text3797-7-2"
style="font-style:normal;font-weight:normal;font-size:42.10587311px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
transform="scale(1.1122373,0.89908874)"><path
inkscape:connector-curvature="0"
id="path4161-9-7"
style="font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman';fill:#ffffff;fill-opacity:1"
d="m 21.688854,23.636251 q -1.027975,-1.151333 -2.857771,-2.754974 -2.014832,-1.768118 -2.713855,-2.775534 -0.699024,-1.027975 -0.699024,-2.240986 0,-1.809237 1.68588,-2.837212 1.68588,-1.048535 4.399735,-1.048535 2.713855,0 4.728687,0.925178 2.035391,0.925177 2.035391,2.549379 0,0.781261 -0.493428,1.295249 -0.493428,0.513987 -1.151333,0.513987 -0.945737,0 -2.220426,-1.418606 -1.295249,-1.439165 -2.199868,-2.014832 -0.884059,-0.596225 -2.07651,-0.596225 -1.521404,0 -2.50826,0.678463 -0.966297,0.678464 -0.966297,1.726999 0,0.986857 0.801821,1.850356 0.801821,0.863499 4.132461,3.145605 3.556795,2.446581 5.01652,3.824068 1.480285,1.377487 2.405462,3.3512 0.925178,1.973713 0.925178,4.17358 0,3.865188 -2.734414,6.825757 -2.713855,2.94001 -6.352888,2.94001 -3.310081,0 -5.592187,-2.364344 -2.282105,-2.364343 -2.282105,-6.311769 0,-3.803509 2.50826,-6.352888 2.528819,-2.549379 6.208971,-3.083926 z m 0.904619,0.945737 q -5.900579,0.966297 -5.900579,8.100447 0,3.680152 1.459725,5.715543 1.480285,2.035391 3.433438,2.035391 2.035391,0 3.3512,-1.953153 1.315808,-1.973713 1.315808,-5.324913 0,-4.852044 -3.659592,-8.573315 z" /></g></g></g><path
style="fill:#ffffff;stroke-width:0.57527333"
d="M 0,222.06056 V 60.121123 H 161.93945 323.87889 V 222.06056 384 H 161.93945 0 Z"
id="path223"
inkscape:connector-curvature="0"
inkscape:export-filename="/home/dc/projects/deltalab-android/artwork/mipmap-xxxhdpi/ic_launcher_foreground.png"
inkscape:export-xdpi="128.04787"
inkscape:export-ydpi="128.04787" /><g
transform="matrix(1.1866667,0,0,1.1866667,-10.73076,53.100552)"
id="g214-2"
inkscape:export-xdpi="384"
inkscape:export-ydpi="384"
inkscape:export-filename="/home/dc/projects/deltalab-android/artwork/mipmap-xxhdpi/ic_launcher_foreground.png"><g
transform="matrix(0.54438354,0,0,0.55505241,77.882295,0.71067353)"
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero"
clip-path="url(#clipPath866-2-3-3)"
id="g864-3-5-2"><g
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero"
id="g862-6-3-8"
inkscape:label="Clip"><circle
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero;stroke-width:0.75687599"
id="path51-0-5-9"
cx="125"
cy="259"
inkscape:export-xdpi="71.111115"
inkscape:export-ydpi="71.111115"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/mipmap-xxxhdpi/ic_launcher_round.png"
r="125" /></g></g><g
inkscape:transform-center-y="4.1811826"
inkscape:transform-center-x="5.0611235"
transform="matrix(0.09576995,0,0,0.23533009,182.58194,121.9428)"
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero"
clip-path="url(#clipPath866-2-3-0-5)"
id="g864-3-5-3-7"><g
transform="matrix(0.7789728,-0.36970944,1.0635416,0.7789728,-294.80364,183.08585)"
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero"
id="g862-6-3-6-3"
inkscape:label="Clip"><circle
style="fill:#6200ed;fill-opacity:1;fill-rule:nonzero;stroke-width:0.75687599"
id="path51-0-5-0-6"
cx="125"
cy="259"
inkscape:export-xdpi="71.111115"
inkscape:export-ydpi="71.111115"
inkscape:export-filename="/home/adb/projects/deltachat-android/ic_launcher/mipmap-xxxhdpi/ic_launcher_round.png"
r="125" /></g></g><g
transform="matrix(3.2309634,0,0,3.2309634,64.084451,63.801879)"
inkscape:label="Layer 1"
id="layer1-62-6-1"><path
inkscape:connector-curvature="0"
d="m 24.015625,1.2871094 c -12.549421,0 -22.7285156,10.1790936 -22.7285156,22.7285156 0,12.549422 10.1790946,22.728516 22.7285156,22.728516 14.337742,-0.342877 9.614062,-4.703116 23.697266,0.96875 -7.545453,-13.001555 -1.082562,-13.32935 -0.96875,-23.697266 0,-12.549422 -10.179094,-22.7285156 -22.728516,-22.7285156 z M 24,4.7636719 C 34.612549,4.6345328 43.220703,13.143938 43.220703,23.765625 43.078418,31.966952 36.761278,33.237209 42.871094,42.78125 31.717586,37.600152 34.090255,43.195768 24,43.236328 13.387453,43.365468 4.7792969,34.856059 4.7792969,24.234375 4.7792969,13.612691 13.387453,4.8928107 24,4.7636719 Z"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.57405078;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.43921569"
id="path3769-6-2-2" /><g
id="text4383-1-9-9"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" /><g
id="text4421-8-1-3"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none" /><g
id="text3797-7-2-1"
style="font-style:normal;font-weight:normal;font-size:42.10587311px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none"
transform="scale(1.1122373,0.89908874)"><path
inkscape:connector-curvature="0"
id="path4161-9-7-9"
style="font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman';fill:#ffffff;fill-opacity:1"
d="m 21.688854,23.636251 q -1.027975,-1.151333 -2.857771,-2.754974 -2.014832,-1.768118 -2.713855,-2.775534 -0.699024,-1.027975 -0.699024,-2.240986 0,-1.809237 1.68588,-2.837212 1.68588,-1.048535 4.399735,-1.048535 2.713855,0 4.728687,0.925178 2.035391,0.925177 2.035391,2.549379 0,0.781261 -0.493428,1.295249 -0.493428,0.513987 -1.151333,0.513987 -0.945737,0 -2.220426,-1.418606 -1.295249,-1.439165 -2.199868,-2.014832 -0.884059,-0.596225 -2.07651,-0.596225 -1.521404,0 -2.50826,0.678463 -0.966297,0.678464 -0.966297,1.726999 0,0.986857 0.801821,1.850356 0.801821,0.863499 4.132461,3.145605 3.556795,2.446581 5.01652,3.824068 1.480285,1.377487 2.405462,3.3512 0.925178,1.973713 0.925178,4.17358 0,3.865188 -2.734414,6.825757 -2.713855,2.94001 -6.352888,2.94001 -3.310081,0 -5.592187,-2.364344 -2.282105,-2.364343 -2.282105,-6.311769 0,-3.803509 2.50826,-6.352888 2.528819,-2.549379 6.208971,-3.083926 z m 0.904619,0.945737 q -5.900579,0.966297 -5.900579,8.100447 0,3.680152 1.459725,5.715543 1.480285,2.035391 3.433438,2.035391 2.035391,0 3.3512,-1.953153 1.315808,-1.973713 1.315808,-5.324913 0,-4.852044 -3.659592,-8.573315 z" /></g></g></g></svg>

After

Width:  |  Height:  |  Size: 27 KiB

+38 -24
View File
@@ -1,6 +1,6 @@
plugins {
id 'com.android.application' version '8.1.4'
// id 'com.google.gms.google-services' version '4.4.1'
id 'com.google.gms.google-services' version '4.4.1'
}
repositories {
@@ -15,6 +15,12 @@ repositories {
}
android {
dependenciesInfo {
// Disables dependency metadata when building APKs.
includeInApk = false
// Disables dependency metadata when building Android App Bundles.
includeInBundle = false
}
namespace "org.thoughtcrime.securesms"
flavorDimensions "none"
compileSdk 34
@@ -29,8 +35,8 @@ android {
useLibrary 'org.apache.http.legacy'
defaultConfig {
versionCode 688
versionName "1.46.5"
versionCode 679
versionName "1.46.3"
applicationId "com.b44t.messenger"
multiDexEnabled true
@@ -50,6 +56,9 @@ android {
buildConfigField("String", "TEST_ADDR", buildConfigProperty("TEST_ADDR"))
buildConfigField("String", "TEST_MAIL_PW", buildConfigProperty("TEST_MAIL_PW"))
buildConfigField("String", "NDK_ARCH", getNdkArch())
ndk {
abiFilters "armeabi-v7a", "arm64-v8a", "x86"
}
}
compileOptions {
@@ -67,12 +76,6 @@ android {
signingConfigs {
debug {
// add `DC_DEBUG_STORE_FILE=/path/to/debug.keystore` to `~/.gradle/gradle.properties`
if(project.hasProperty("DC_DEBUG_STORE_FILE" )) {
storeFile file(DC_DEBUG_STORE_FILE )
}
}
release {
// can be defined at `~/.gradle/gradle.properties` or at "Build/Generate signed APK"
if(project.hasProperty("DC_RELEASE_STORE_FILE")) {
@@ -86,7 +89,7 @@ android {
buildTypes {
release {
applicationIdSuffix ".lite2"
applicationIdSuffix ".lite"
// minification and proguard disabled for now.
//
// when enabled, it can cut down apk size about 6%,
@@ -97,8 +100,7 @@ android {
// nb: it is highly recommended to use the same settings in debug+release -
// otherwise problems might be noticed delayed only
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
if(project.hasProperty("DC_RELEASE_STORE_FILE")) {
signingConfig signingConfigs.release
@@ -114,7 +116,7 @@ android {
gplay {
dimension "none"
applicationId "chat.delta"
//apply plugin: "com.google.gms.google-services"
apply plugin: "com.google.gms.google-services"
buildConfigField "boolean", "USE_PLAY_SERVICES", "true"
}
}
@@ -123,23 +125,23 @@ android {
abi {
enable true
reset()
include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
include "armeabi-v7a", "arm64-v8a", "x86"
universalApk true
}
}
project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9]
project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 3, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 9, 'x86_64': 9]
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
output.outputFileName = output.outputFileName
.replace("deltalab-android", "deltachat-lite")
.replace("deltalab-android", "deltalab")
.replace("-gplay", "")
.replace("-release", "")
.replace(".apk", "-${variant.versionName}.apk")
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(
com.android.build.OutputFile.ABI), 0) * 10000000 + android.defaultConfig.versionCode
com.android.build.OutputFile.ABI), 3) * 10000000 + android.defaultConfig.versionCode
}
}
@@ -158,7 +160,15 @@ android {
}
final def markwon_version = '4.6.2'
dependencies {
// DeltaLab-only dependencies:
implementation "io.noties.markwon:core:$markwon_version"
implementation "io.noties.markwon:ext-strikethrough:$markwon_version"
implementation "io.noties.markwon:inline-parser:$markwon_version"
implementation 'com.airbnb.android:lottie:4.2.2' // Lottie animations support.
implementation 'androidx.sharetarget:sharetarget:1.2.0'
implementation 'androidx.webkit:webkit:1.8.0'
implementation 'androidx.multidex:multidex:2.0.1'
@@ -195,11 +205,15 @@ dependencies {
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.
// 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.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'
}
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'
}
@@ -211,11 +225,11 @@ dependencies {
// <https://github.com/cketti/SafeContentResolver>
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'
// }
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'
+21 -21
View File
@@ -2,22 +2,22 @@
- <https://f-droid.org/en/packages/com.b44t.messenger/>
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.
- <https://github.com/deltachat/deltachat-android/tree/main/metadata>
- <https://github.com/deltachat/deltachat-android/tree/master/metadata>
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).
- <https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/com.b44t.messenger.yml>
contains [additional F-Droid-specific metadata](https://f-droid.org/en/docs/All_About_Descriptions_Graphics_and_Screenshots/#in-the-f-droid-repo)
- <https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/com.b44t.messenger.yml> and
<https://gitlab.com/fdroid/fdroiddata/-/tree/master/metadata/com.b44t.messenger>
contain [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
<https://github.com/deltachat/deltachat-android/blob/main/RELEASE.md#release-on-f-droid>.
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).
- 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).
# F-Droid Build status
@@ -25,7 +25,7 @@
- <https://monitor.f-droid.org/builds>
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 :)
- <https://f-droid.org/repo/com.b44t.messenger_VERSIONCODE.apk>
(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:<versionCode>
(via <https://f-droid.org/docs/Installing_the_Server_and_Repo_Tools/>
and <https://f-droid.org/docs/Building_Applications/> -
(via https://f-droid.org/docs/Installing_the_Server_and_Repo_Tools/
and https://f-droid.org/docs/Building_Applications/ -
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 <https://github.com/deltachat/deltachat-android/> repository.
- Make sure there is a "newline" at the end of the description
(see <https://gitlab.com/fdroid/fdroiddata/merge_requests/3580>).
- make sure there is a "newline" at the end of the description
(see <https://gitlab.com/fdroid/fdroiddata/merge_requests/3580>)
# Changing F-Droid metadata
- The file `com.b44t.messenger.yml` can be changed via a PR to the <https://gitlab.com/fdroid/fdroiddata/> repository.
- the file `com.b44t.messenger.yml` can be changed via a PR to the <https://gitlab.com/fdroid/fdroiddata/> repository
- Reformat the metadata using
- reformat the metadata using
$ ../fdroidserver/fdroid rewritemeta com.b44t.messenger # called from fdroiddata dir
@@ -0,0 +1,30 @@
<i>DeltaLab</i> is a friendly fork of <i>Delta Chat</i> messenger, a chat app compatible with the existing e-mail infrastructure.
DeltaLab was created with a focus on usability, good user experience, and saving data plan and comes with some different default settings than Delta Chat. Also the app usually experiments with new features and alternative paths of development that eventually might get added to the official Delta Chat client.
<b>Main differences with official Delta Chat client:</b>
<ul>
<li>Basic markdown support (bold, italic, strike, etc.)</li>
<li>Support for displaying Telegram's animated stickers (.tgs files)</li>
<li>Support for SVG images previews</li>
<li>Multiple color themes/skins</li>
<li>It is possible to enable/disable accounts</li>
<li>A videochat instance is set by default</li>
<li>Replies to your messages in muted groups trigger notifications</li>
<li>Quote-reply a message with a single emoji to set it as reaction</li>
<li>Location streaming feature enabled by default and have extra option to share location for 12 hours</li>
<li>Verified icon is shown in the chat list for the "Device Messages" chat</li>
<li>Videos are played in loop, useful for short GIF videos</li>
<li>It is possible to click <b>OPENPGP4FPR:</b> and <b>mumble:</b> links in messages</li>
<li>Voice messages have more aggressive compression in "worse quality" mode to save data plan</li>
<li>Default configuration changed: automatic download of messages limited to 640KB</li>
<li>Account's display name is shown in the app's title bar instead of the name of the app</li>
<li>Your avatar is visible to other users in Mailing Lists</li>
<li>Can be selected as application when clicking/opening links, this is useful to share the link with web grabber bots</li>
<li>Can be selected as app to open .xdc files</li>
<li>For mini-apps developers: there are some differences in the WebXDC API, check https://github.com/deltalab-org/deltalab-android/#webxdc</li>
<li>Better settings organization with additional "Privacy" section</li>
</ul>
<b>WARNING:</b> Be careful when running WebXDC apps in DeltaLab, the sandboxed webview can't currently prevent WebRTC connections, so in theory information inside the WebXDC app could be leaked and also your IP, the risk is low, for most people this is not even important, but if you are a person at risk, only use trusted apps, or use official Delta Chat.
Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

@@ -0,0 +1 @@
Encrypted chat over e-mail (Delta Chat client)
@@ -0,0 +1 @@
DeltaLab
+20 -1
View File
@@ -43,6 +43,25 @@
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:922391085500:android:aff82fbc40c8172e3e2bb9",
"android_client_info": {
"package_name": "chat.delta.lite"
}
},
"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",
@@ -83,4 +102,4 @@
}
],
"configuration_version": "1"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

+1 -1
View File
@@ -1,5 +1,5 @@
APP_PLATFORM := android-16
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
APP_ABI := armeabi-v7a arm64-v8a x86
APP_STL := none
ifneq ($(NDK_DEBUG),1)
+33 -2
View File
@@ -250,7 +250,7 @@ JNIEXPORT jlong Java_com_b44t_messenger_DcAccounts_getJsonrpcInstanceCPtr(JNIEnv
}
JNIEXPORT void Java_com_b44t_messenger_DcAccounts_startIo(JNIEnv *env, jobject obj)
JNIEXPORT void Java_com_b44t_messenger_DcAccounts_startIo2(JNIEnv *env, jobject obj)
{
dc_accounts_start_io(get_dc_accounts(env, obj));
}
@@ -1420,6 +1420,16 @@ JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getId(JNIEnv *env, jobject obj)
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_isOutgoing(JNIEnv *env, jobject obj)
{
return (jboolean)(dc_msg_is_outgoing(get_dc_msg(env, obj))!=0);
}
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getSenderColor(JNIEnv *env, jobject obj)
{
return dc_msg_get_sender_color(get_dc_msg(env, obj));
}
JNIEXPORT jstring Java_com_b44t_messenger_DcMsg_getText(JNIEnv *env, jobject obj)
{
char* temp = dc_msg_get_text(get_dc_msg(env, obj));
@@ -1462,7 +1472,7 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_hasLocation(JNIEnv *env, jobjec
}
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getType(JNIEnv *env, jobject obj)
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getViewType(JNIEnv *env, jobject obj)
{
return dc_msg_get_viewtype(get_dc_msg(env, obj));
}
@@ -1666,6 +1676,14 @@ JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getVideochatType(JNIEnv *env, jobje
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setSubject(JNIEnv *env, jobject obj, jstring text)
{
CHAR_REF(text);
dc_msg_set_subject(get_dc_msg(env, obj), textPtr);
CHAR_UNREF(text);
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setText(JNIEnv *env, jobject obj, jstring text)
{
CHAR_REF(text);
@@ -1674,6 +1692,14 @@ JNIEXPORT void Java_com_b44t_messenger_DcMsg_setText(JNIEnv *env, jobject obj, j
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setHtml(JNIEnv *env, jobject obj, jstring text)
{
CHAR_REF(text);
dc_msg_set_html(get_dc_msg(env, obj), textPtr);
CHAR_UNREF(text);
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setFile(JNIEnv *env, jobject obj, jstring file, jstring filemime)
{
CHAR_REF(file);
@@ -1845,6 +1871,11 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcContact_isBlocked(JNIEnv *env, jobj
return (jboolean)(dc_contact_is_blocked(get_dc_contact(env, obj))!=0);
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcContact_isBot(JNIEnv *env, jobject obj)
{
return (jboolean)(dc_contact_is_bot(get_dc_contact(env, obj))!=0);
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcContact_isVerified(JNIEnv *env, jobject obj)
{
-19
View File
@@ -1,19 +0,0 @@
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 <a href="https://autocrypt.org">Autocrypt</a>
* 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
+1 -1
View File
@@ -1 +1 @@
Chatta via e-mail. Elegantemente Retrò, Decentralizzato e Aperto. Riservatezza da Progettazione.
Chatta via e-mail. Elegantemente Retrò, Decentralizzato e Aperto. Privacy da Progettazione.
-10
View File
@@ -1,10 +0,0 @@
当传统电子邮件用户向群组发送邮件并添加新收件人时,这些新收件人将成为群组成员。
将来自传统电子邮件用户的附带PGP密钥视为倾向于互相加密的信号。
将来自传统电子邮件用户的加密或签名消息视为倾向于互相加密的信号。
修复旧数据库的迁移问题。
修复:仅在聊天已被其他成员知晓的情况下发送临时计时器变更消息。
修复:使用相对路径访问数据库,以避免在迁移到其他设备或路径时出现问题。
修复通过SOCKS5的IMAP连接的读写超时问题。
修复:如果没有修改任何字符,则不发送“群组名称变更”信息。
新增希腊语翻译,更新其他语言翻译。
更新至core104版本。
-13
View File
@@ -1,13 +0,0 @@
修复:使归档的对话可见,这些对话不会自动解除归档(静音的对话):添加未读计数器并将归档移至顶部
修复:直接发送AVIF、HEIC、TXT、PPT、XLS、XML等格式的文件,不进行转换
修复:当获取现有消息失败时触发重新连接
修复:在消息获取失败后不再重试,以防止无限重新连接循环
修复:如果消息已加密但未签名,不再添加错误提示
修复:不再从消息行首删除前导空格
修复发送引用文本时的边缘情况问题
修复STARTTLS连接问题
修复:不将无效的电子邮件地址视为异常处理
修复:及时清理在1.34.8版本中引入的相对数据库路径问题
加快聊天列表和联系人列表的更新速度
更新翻译
更新至core106版本
-5
View File
@@ -1,5 +0,0 @@
* 在“添加账户”和“配置”中增加SOCKS5代理选项
* 引入DNS缓存功能:如果网络中的DNS服务停止工作,Delta Chat仍能通过使用先前的IP地址成功连接到IMAP服务器
* 显示完整邮件内容:不自动加载远程内容以请求
* 修复多种错误并增强日志记录功能
* 更新翻译内容
-8
View File
@@ -1,8 +0,0 @@
* 添加第二台设备到账号的新简便方法:安装后选择“作为第二台设备添加”,然后扫描第一台设备上的二维码
* 查看所有聊天中的“所有媒体”
* 新增“清空聊天”选项
* 为所有账号显示通知
* 在“显示完整消息”中更好地利用深色/浅色模式
* 在应用信息消息旁显示图标
* 通过缓存SMTP和IMAP连接的DNS结果以提高对解析中断的处理能力
* 加速并提升了可靠性的改进与修复
-8
View File
@@ -1,8 +0,0 @@
* 在使用“设置/添加第二台设备”设置好第二台设备后,添加一条设备添加消息
* 显著加快“作为第二台设备添加”在接收端的连接时间
* 如有可能,在扫描“添加第二台设备”二维码后直接显示Wi-Fi名称
* 修复“添加第二台设备”立即重启的问题
* 修复:在“所有媒体”视图中不只显示已删除的媒体
* 修复:在“添加第二台设备”后如有需要则更新数据库
* 更新翻译内容和本地帮助文档
* 更新至core112.6版本
-6
View File
@@ -1,6 +0,0 @@
* 根据系统主题自动选择浅色/深色模式启动
* 修复一对一聊天中的验证图标问题
* 修正因在长IMAP响应中错误的EOF检测导致的获取错误
* 更多错误修复
* 更新翻译内容和本地帮助文档
* 更新至core112.7版本
-4
View File
@@ -1,4 +0,0 @@
* 将SOCKS5配置来也用来加载HTML邮件中的远程图片
* 错误修复
* 更新翻译内容和本地帮助文档
* 更新至core112.8版本
-6
View File
@@ -1,6 +0,0 @@
* 新的Webxdc API:importFiles()和sendToChat()
* 移除附件的大小限制
* 节省流量和存储空间:对大的PNG及其他受支持的图像格式进行重新编码(大的JPEG文件一直都会被重新编码;以“文件”形式发送的图像仍不会被重新编码或以其他方式改变)
* 节省本地存储空间:对数据库中的HTML邮件进行压缩
* 提升群组成员身份一致性
* 大量错误修复
-5
View File
@@ -1,5 +0,0 @@
* 在可能的情况下,使用图像编辑器来选择头像
* 改进深色模式下的加载屏幕显示效果
* 更新“已验证图标”
* 添加卢尔语(Luri) 巴克提尔利语(Bakhtiari)语翻译,更新其他语言翻译
* 大量错误修复
-5
View File
@@ -1,5 +0,0 @@
* 在可能的情况下,使用图像编辑器来选择头像
* 改进深色模式下的加载屏幕显示效果
* 更新“已验证图标”
* 添加卢尔语(Luri) 巴克提尔利语(Bakhtiari)语翻译,更新其他语言翻译
* 大量错误修复
-6
View File
@@ -1,6 +0,0 @@
- 现在一对一聊天为保证了端到端的加密的联系人使用绿色对勾标记
- 为了简化每个人的体验,我们也用绿色对勾标记这些聊天
- 如有可能,群聊会自动创建并尽可能保证端到端的加密
- 接受/屏蔽、已存档、置顶、静音状态在您所有设备间同步
- 相机、语音消息、备份全部、屏幕阅读器、每个账户单独的壁纸、相册全选、Webxdc横屏模式等方面有更多的改进
- 大量的错误修复
-6
View File
@@ -1,6 +0,0 @@
- 现在一对一聊天为保证了端到端的加密的联系人使用绿色对勾标记
- 为了简化每个人的体验,我们也用绿色对勾标记这些聊天
- 如有可能,群聊会自动创建并尽可能保证端到端的加密
- 接受/屏蔽、已存档、置顶、静音状态在您所有设备间同步
- 相机、语音消息、备份全部、屏幕阅读器、每个账户单独的壁纸、相册全选、Webxdc横屏模式等方面有更多的改进
- 大量的错误修复
-6
View File
@@ -1,6 +0,0 @@
- 在设备间同步“您的个人资料名称”、“显示组邮件”和“阅读回执”选项的更改
- 取消对.xdc文件大小的接收方限制
- 修复针对如163.com等提供商的登录错误
- 修复在使用多个私钥时的解密错误
- 修复在webxdc更新时的数据库锁定错误
- 更新翻译内容
-8
View File
@@ -1,8 +0,0 @@
- "反应功能":长按消息以作出回应
- 如果无法扫描二维码,可以将它们分享为“邀请链接”
- 现在,所有账户的未读消息会被计数并在标题中显示
- 移除了Webxdc的发送限制
- 长按聊天列表项现在可以直接使聊天静音/取消静音
- 在打开“密码与账户”前,会要求输入系统解锁密码
- 新选项:“设置/高级/读取系统通讯录”
- 大量错误修复
-16
View File
@@ -1,16 +0,0 @@
Delta Chat 是一款完全兼容现有电子邮件基础设施的即时通讯应用程序。
因此,使用 Delta Chat,您既能享受到知名即时通讯软件的便捷性,又能拥有电子邮件的广泛可达性。此外,您将独立于其他公司或服务——因为您的数据不依赖于 Delta Chat,您在这里也不会增加新的依赖关系。
部分功能亮点包括:
* 安全性:自动端到端加密,并支持最新的<a href="https://autocrypt.org">Autocrypt</a>标准
* 速度:通过Push-IMAP技术实现快速通信
* 最大用户基数:未使用 Delta Chat 的接收者也能顺利接收到信息
* 兼容性强:不仅限于 Delta Chat 用户之间的交流
* 优雅且简单的用户界面
* 分布式系统
* 无垃圾邮件:默认仅显示已知联系人的消息
* 可靠性高:适合专业用途
* 值得信赖:可用于商业信息交流
* 完全开源且基于标准构建
+1 -1
View File
@@ -1 +1 @@
通过电子邮件进行即时通信。经典优雅,去中心化且开源。保护隐私。
通过电子邮件进行即时通信
+1 -1
View File
@@ -1 +1 @@
透過電子郵件聊天。優雅復古、去中心化而且開源。隱私設計。
通過電子郵件即時通信
-1
View File
@@ -1 +0,0 @@
Delta Chat
+13 -2
View File
@@ -1,9 +1,20 @@
# native methods
-keep class com.b44t.messenger.** { *; }
-keep class org.thoughtcrime.securesms.util.FileUtils* { *; }
-keep class com.b44t.messenger.** { * ; }
# Gson uses generic type information stored in a class file when working with
# fields. Proguard removes such information by default, keep it.
-keepattributes Signature
# This is also needed for R8 in compat mode since multiple
# optimizations will remove the generic signature such as class
# merging and argument removal. See:
# https://r8.googlesource.com/r8/+/refs/heads/main/compatibility-faq.md#troubleshooting-gson-gson
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.google.gson.reflect.TypeToken
# bug with video recoder
-keep class com.coremedia.iso.** { *; }
# unused SealedData constructor needed by JsonUtils
-keep class org.thoughtcrime.securesms.crypto.KeyStoreHelper* { *; }
-dontwarn com.google.firebase.analytics.connector.AnalyticsConnector
+9 -9
View File
@@ -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 installFossDebug; notify-send "install finished")}
# nmake() {(cd ../..; scripts/ndk-make.sh arm64-v8a && ./gradlew installFatDebug; notify-send "install finished")}
#
#
# If anything doesn't work, please open an issue!!
@@ -141,14 +141,14 @@ if test -z $1 || test $1 = x86; then
cp target/i686-linux-android/$RELEASE/libdeltachat.a $jnidir/x86
fi
if test -z $1 || test $1 = x86_64; then
echo "-- cross compiling to x86_64-linux-android (x86_64) --"
TARGET_CC="$TOOLCHAIN/bin/x86_64-linux-android21-clang" \
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
cargo build $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi --features jsonrpc
cp target/x86_64-linux-android/$RELEASE/libdeltachat.a $jnidir/x86_64
fi
# if test -z $1 || test $1 = x86_64; then
# echo "-- cross compiling to x86_64-linux-android (x86_64) --"
# TARGET_CC="$TOOLCHAIN/bin/x86_64-linux-android21-clang" \
# TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
# TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
# cargo build $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi --features jsonrpc
# cp target/x86_64-linux-android/$RELEASE/libdeltachat.a $jnidir/x86_64
# fi
rm -fr "$TMPLIB"
+2 -2
View File
@@ -15,7 +15,7 @@ if [[ ${VERSION:0:1} == "v" ]]; then
fi
APKGPLAY="gplay/release/deltachat-gplay-release-$VERSION.apk"
APKDEV="build/outputs/apk/foss/debug/deltachat-foss-debug-$VERSION.apk"
APKDEV="build/outputs/apk/fat/debug/deltachat-fat-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-foss-debug-$VERSION.apk (android, fully FOSS, can be installed beside gplay)"
echo "- 🍉 https://download.delta.chat/android/beta/deltachat-fat-debug-$VERSION.apk (android, 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"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

+13
View File
@@ -74,6 +74,17 @@
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.GET_CONTENT"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content"/>
<data android:scheme="file"/>
<data android:mimeType="*/*" />
<data android:mimeType="application/octet-stream" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT"/>
@@ -209,6 +220,8 @@
<intent-filter>
<data android:scheme="mailto"/>
<data android:scheme="http"/>
<data android:scheme="https"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
+2 -4
View File
@@ -545,7 +545,7 @@ for Delta Chat users.</p>
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
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
<a href="#privacy-notifications">Delta Chat’s privacy-minimizing Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<h3 id="android-push">
@@ -1214,9 +1214,7 @@ independent security analysis, from most recent to older:</p>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information.</p>
</li>
<li>
<p>2023 April, we fixed security and privacy issues with the “web
+28 -27
View File
@@ -507,7 +507,7 @@ anstelle von proprietärem Google-Code auf dem Telefon.</p>
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
<a href="#privacy-notifications">Delta Chats datenschutzwahrendes Push-Benachrichtigungssystem</a>
<a href="#privacy-notifications">Delta Chats datenschutzminimierendes Push-Benachrichtigungssystem</a>
keine Daten an Apple weitergibt, die Apple nicht bereits hat.</p>
<h3 id="android-push">
@@ -556,46 +556,47 @@ können sicher ausprobiert werden, wenn Sie feststellen, dass Nachrichten nur mi
</h3>
<p>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.</p>
<p>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.</p>
<p>So verwendet Delta Chat Push-Benachrichtigungen:</p>
<p>Here is how Delta Chat apps perform Push Notification delivery:</p>
<ul>
<li>
<p>Eine Delta-Chat-Anwendung erhält lokal ein „Geräte-Token“ (eine zufällige Zahl) und speichert es
auf dem <a href="https://delta.chat/chatmail">Chatmail</a>-Server.</p>
<p>A Delta Chat app obtains a “device token” locally and stores it
on the <a href="https://delta.chat/chatmail">chatmail</a> server.</p>
</li>
<li>
<p>Wenn ein <a href="https://delta.chat/chatmail">Chatmail</a>-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.</p>
<p>When a <a href="https://delta.chat/chatmail">chatmail</a> server receives an e-mail for a Delta Chat user
it forwards the “device token” to the central Delta Chat notification proxy.</p>
</li>
<li>
<p>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.</p>
<p>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.</p>
</li>
<li>
<p>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).</p>
<p>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).</p>
</li>
</ul>
<p>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.</p>
<p>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.</p>
<p>Der zentrale Delta-Chat-Benachrichtigungs-Proxy <a href="https://github.com/deltachat/notifiers">ist klein und vollständig in Rust implementiert</a>
und vergisst die Geräte-Token, sobald Apple/Google/etc. sie verarbeitet hat,
normalerweise innerhalb weniger Millisekunden.</p>
<p>The central Delta Chat notification proxy <a href="https://github.com/deltachat/notifiers">is small and fully implemented in Rust</a>
and forgets about device-tokens as soon as Apple/Google/etc processed them,
usually in a matter of milliseconds.</p>
<p>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.</p>
<p>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.</p>
<h3 id="warum-integriert-sich-delta-chat-in-zentralisierte-proprietäre-applegoogle-push-dienste">
@@ -1150,7 +1151,7 @@ Für andere Programme können Sie online eine Lösung finden.</p>
<ul>
<li>
<p>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 <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> und in der hinterher publizierten <a href="https://eprint.iacr.org/2024/918.pdf">Kryptografischen Analyse von Delta Chat</a></p>
Weitere Informationen finden Sie in unserem Blogbeitrag über <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a>.</p>
</li>
<li>
<p>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 <a href="https://delta.chat/en/2023-05-22-webxdc-security">hier für die vollständige Hintergrundgeschichte</a>.</p>
+2 -4
View File
@@ -549,7 +549,7 @@ for Delta Chat users.</p>
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
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
<a href="#privacy-notifications">Delta Chat’s privacy-minimizing Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<h3 id="android-push">
@@ -1220,9 +1220,7 @@ independent security analysis, from most recent to older:</p>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information.</p>
</li>
<li>
<p>2023 April, we fixed security and privacy issues with the “web
+2 -4
View File
@@ -542,7 +542,7 @@ for Delta Chat users.</p>
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
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
<a href="#privacy-notifications">Delta Chat’s privacy-minimizing Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<h3 id="android-push">
@@ -1182,9 +1182,7 @@ independent security analysis, from most recent to older:</p>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information.</p>
</li>
<li>
<p>2023 April, we fixed security and privacy issues with the “web
+2 -4
View File
@@ -523,7 +523,7 @@ for Delta Chat users.</p>
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
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
<a href="#privacy-notifications">Delta Chat’s privacy-minimizing Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<h3 id="android-push">
@@ -1186,9 +1186,7 @@ independent security analysis, from most recent to older:</p>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information.</p>
</li>
<li>
<p>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.
+2 -4
View File
@@ -549,7 +549,7 @@ for Delta Chat users.</p>
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
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
<a href="#privacy-notifications">Delta Chat’s privacy-minimizing Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<h3 id="android-push">
@@ -1220,9 +1220,7 @@ independent security analysis, from most recent to older:</p>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information.</p>
</li>
<li>
<p>2023 April, we fixed security and privacy issues with the “web
+6 -8
View File
@@ -538,11 +538,11 @@ per gli utenti di Delta Chat.</p>
</h3>
<p>Sì, Delta Chat utilizza automaticamente le notifiche push per i profili <a href="https://delta.chat/chatmail">chatmail</a>.
<p>Sì, Delta Chat utilizza automaticamente le Notifiche Push per i profili <a href="https://delta.chat/chatmail">chatmail</a>.
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é
<a href="#privacy-notifications">Sistema di notifiche push che tutela la privacy di Delta Chat</a>
Le Notifiche Push vengono attivate automaticamente per gli utenti iOS perché
<a href="#privacy-notifications">Sistema di Notifiche Push per ridurre al minimo la privacy di Delta Chat</a>
non espone ad Apple i dati che non possiede già.</p>
<h3 id="android-push">
@@ -1205,11 +1205,9 @@ un’analisi di sicurezza indipendente, dal più recente al più vecchio:</p>
<ul>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
<p>Marzo 2024, abbiamo ricevuto un’analisi approfondita della sicurezza dalla Crittografia Applicata
gruppo di ricerca dell’ETH di Zurigo e ha affrontato tutte i problemi emersi.
Consulta il nostro post sul blog sul <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">rafforzamento della crittografia end-to-end garantita</a> per informazioni più dettagliate.</p>
</li>
<li>
<p>A partire dal 2023, abbiamo risolto i problemi di sicurezza e privacy con il servizio “web
+2 -4
View File
@@ -542,7 +542,7 @@ for Delta Chat users.</p>
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
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
<a href="#privacy-notifications">Delta Chat’s privacy-minimizing Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<h3 id="android-push">
@@ -1212,9 +1212,7 @@ independent security analysis, from most recent to older:</p>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information.</p>
</li>
<li>
<p>Sinds begin 2023 hebben we diverse beveiligings- en privacyproblemen met ‘webapps
+19 -14
View File
@@ -459,7 +459,7 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
</h3>
<p>Tak, Delta Chat automatycznie korzysta z powiadomień push dla profili <a href="https://delta.chat/chatmail">chatmail</a>
. 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ż <a href="#privacy-notifications">system prywatności powiadomień Delta Chat</a> nie udostępnia Apple danych, których jeszcze nie posiada.</p>
. 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ż <a href="#privacy-notifications">minimalizujący prywatność system powiadomień push Delta Chat</a> nie udostępnia Apple danych, których jeszcze nie posiada.</p>
<h3 id="android-push">
@@ -575,22 +575,32 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
</h3>
<p>Jeśli masz drugi kanał komunikacji ze swoim partnerem na czacie, np. czat wideo lub inny komunikator, możesz wygenerować link zaproszenia.</p>
<p>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.</p>
<p>Jeśli jesteście razem osobiście, możesz pokazać kod QR swojemu rozmówcy.</p>
<p>If you are together in person,
you can show a QR code to your chat partner.</p>
<ul>
<li>
<p>W przypadku <strong>zaproszeń grupowych</strong> dotknij tytułu czatu grupy, aby wyświetlić listę jej członków, i wybierz „Kod QR zaproszenia”.</p>
<p>For <strong>Group invitations</strong>,
tap the chat group title to see its member list,
and select “QR Invite code”.</p>
</li>
<li>
<p>Aby uzyskać <strong>bezpośrednie zaproszenia na czat 1:1</strong>, dotknij ikony kodu QR <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" /> na ekranie głównym aplikacji Delta Chat.</p>
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>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.</p>
<p>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.</p>
<p>Teraz poczekaj, aż między obydwoma urządzeniami <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">nastąpi wymiana wiadomości sieciowych Secure-Join</a>.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">Secure-Join network messages are exchanged</a> between both devices.</p>
<ul>
<li>
@@ -876,14 +886,9 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
<p>Projekt Delta Chat przeszedł cztery niezależne audyty bezpieczeństwa i jedną niezależną analizę bezpieczeństwa, od najnowszego do najstarszego:</p>
<p>W marcu 2024 r. otrzymaliśmy dogłębną analizę bezpieczeństwa od grupy badawczej ds. kryptografii stosowanej w ETH Zuerich i zajęliśmy się wszystkimi poruszonymi kwestiami. Bardziej szczegółowe informacje można znaleźć w naszym poście na blogu na temat <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">szyfrowania typu „end-to-end” z gwarancją hartowania</a>.</p>
<ul>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
</li>
<li>
<p>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. <a href="https://delta.chat/en/2023-05-22-webxdc-security">Pełną historię bezpieczeństwa end-to-end w sieci można znaleźć tutaj</a>.</p>
</li>
+2 -4
View File
@@ -543,7 +543,7 @@ for Delta Chat users.</p>
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
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
<a href="#privacy-notifications">Delta Chat’s privacy-minimizing Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<h3 id="android-push">
@@ -1214,9 +1214,7 @@ independent security analysis, from most recent to older:</p>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information.</p>
</li>
<li>
<p>2023 April, we fixed security and privacy issues with the “web
File diff suppressed because it is too large Load Diff
+2 -4
View File
@@ -549,7 +549,7 @@ for Delta Chat users.</p>
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
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
<a href="#privacy-notifications">Delta Chat’s privacy-minimizing Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<h3 id="android-push">
@@ -1220,9 +1220,7 @@ independent security analysis, from most recent to older:</p>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information.</p>
</li>
<li>
<p>2023 April, we fixed security and privacy issues with the “web
+2 -4
View File
@@ -550,7 +550,7 @@ for Delta Chat users.</p>
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
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
<a href="#privacy-notifications">Delta Chat’s privacy-minimizing Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<h3 id="android-push">
@@ -1221,9 +1221,7 @@ independent security analysis, from most recent to older:</p>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information.</p>
</li>
<li>
<p>Në fillim të 2023-shit, ndreqëm probleme sigurie dhe privatësie me
+2 -11
View File
@@ -457,12 +457,7 @@
</h3>
<p>Yes, Delta Chat automatically uses Push Notifications for <a href="https://delta.chat/chatmail">chatmail</a> profiles.
And no, there is no alternative on Apple’s phones to achieve instant message delivery
because Apple devices do not allow Delta Chat to fetch data in the background.
Push notifications are automatically activated for iOS users because
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<p>Так, Delta Chat автоматично використовує push-повідомлення для <a href="https://delta.chat/chatmail">chatmail</a>-профілів. І ні, на телефонах Apple немає альтернативи миттєвій доставці повідомлень тому що пристрої Apple не дозволяють Delta Chat отримувати дані у фоновому режимі. Push-сповіщення автоматично активуються для користувачів iOS, тому що <a href="#privacy-notifications">система push-сповіщень Delta Chat, що мінімізує конфіденційність</a> не передає Apple дані, яких у неї ще немає.</p>
<h3 id="android-push">
@@ -882,11 +877,7 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
<ul>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
<p>2024 березня ми отримали глибокий аналіз безпеки від дослідницької групи Applied Cryptography з прикладної криптографії в ETH Zuerich і вирішили всі порушені питання. Більш детальну інформацію можна знайти в нашому блозі в статті <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-end encryption</a>.</p>
</li>
<li>
<p>Починаючи з 2023 року, ми виправили проблеми з безпекою та конфіденційністю у функції “веб застосунків, що поширені у чаті”, пов’язані зі збоями в роботі пісочниці особливо в Chromium. Згодом ми отримали незалежний аудит безпеки аудит безпеки від Cure53, і всі знайдені проблеми були виправлені в серії додатків 1.36, випущених у квітні 2023 року. Повну історію про наскрізну безпеку в Інтернеті дивіться <a href="https://delta.chat/en/2023-05-22-webxdc-security">тут</a>.</p>
+71 -58
View File
@@ -6,7 +6,7 @@
<li><a href="#与其他通信软件相比delta-chat-有哪些优势">与其他通信软件相比,Delta Chat 有哪些优势?</a></li>
<li><a href="#如果希望收到我从未发送过消息的人的消息该怎么办">如果希望收到我从未发送过消息的人的消息,该怎么办?</a></li>
<li><a href="#delta-chat-支持图像视频和其他附件吗">Delta Chat 支持图像、视频和其他附件吗?</a></li>
<li><a href="#multiple-accounts">什么是账户资料?如何在它们之间切换?</a></li>
<li><a href="#multiple-accounts">What are profiles? How can I switch between them?</a></li>
<li><a href="#谁会看见我的个人资料图片">谁会看见我的个人资料图片?</a></li>
<li><a href="#signature">我可以为 Delta Chat 设置签名文本/状态/格言吗?</a></li>
<li><a href="#固定静音归档是什么意思">固定、静音、归档是什么意思?</a></li>
@@ -115,14 +115,14 @@
</h2>
<p>Delta Chat 是一款可靠、去中心化和安全的消息应用程序、
适用于移动和桌面平台。</p>
<p>Delta Chat is a reliable, decentralized and secure messaging app,
available for mobile and desktop platforms.</p>
<p>Delta Chat 感觉就像 Whatsapp 或 Telegram,但你也可以把它当作电子邮件应用程序来使用。
你可以匿名注册到各种<a href="https://delta.chat/chatmail">可互操作的聊天邮件服务器</a>
这些都是为快速安全运行而优化的最小电子邮件服务器。
您也可以使用传统的电子邮件服务器和现有的电子邮件账户
在这种情况下, Delta Chat 可充当邮件客户端。</p>
<p>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 <a href="https://delta.chat/chatmail">interoperable chatmail servers</a>
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.</p>
<p><img style="float:right; width:50%; max-width:360%; margin:1em;" src="../delta-what-optim.png" /></p>
@@ -134,15 +134,15 @@
</h3>
<p>要安全地与他人建立联系[扫描邀请二维码
或分享邀请链接](#howtoe2ee)。
使用(默认的)基于chatmail的聊天账户时需要这样做
因为chatmail会拒绝未加密的发送信息。</p>
<p>To securely setup contact with others <a href="#howtoe2ee">scan an invite QR code
or share an invite link</a>.
This is required when using a (default) chatmail-based chat profile
because chatmail servers reject un-encrypted outgoing messages.</p>
<p>当使用经典电子邮件地址创建聊天配置文件时
如果您知道联系人的电子邮件地址,您可以手动创建联系人
然后给他们写信息
即使收件人没有使用Delta Chat 。</p>
<p>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.</p>
<h3 id="与其他通信软件相比delta-chat-有哪些优势">
@@ -154,23 +154,23 @@
<ul>
<li>
<p>使用快速、安全、可互操作的 <a href="https://delta.chat/chatmail">chatmail 服务器</a> 创建匿名聊天账户
为 iOS 和 Android 设备提供即时推送通知。</p>
<p>Anonymous chat profiles with fast, secure and interoperable <a href="https://delta.chat/chatmail">chatmail servers</a>
which offer instant Push Notifications for iOS and Android devices.</p>
</li>
<li>
<p>跨平台支持 [多配置文件](#多账户)和多设备。</p>
<p>Pervasive <a href="#multiple-accounts">multi-profile</a> and multi-device support on all platforms.</p>
</li>
<li>
<p>交互性 <a href="https://webxdc.org/apps">聊天中的网页小程序</a></p>
<p>Interactive <a href="https://webxdc.org/apps">web apps in chats</a> for gaming and collaboration</p>
</li>
<li>
<p><a href="#security-audits">经审计的端到端加密</a>
安全地抵御网络和服务器攻击。</p>
<p><a href="#security-audits">Audited end-to-end encryption</a>
safe against network and server attacks.</p>
</li>
<li>
<p>免费开源软件,包括应用程序和服务器端。
基于<a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">电子邮件和网络互联网标准</a>、
<a href="https://xkcd.com/927/">避免 “又一个标准综合症(xkcd 927)”</a></p>
<p>Free and Open Source software, both app and server side.
Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">E-mail and Web Internet Standards</a>,
<a href="https://xkcd.com/927/">to avoid “yet another standard syndrome (xkcd 927)”</a></p>
</li>
</ul>
@@ -208,25 +208,25 @@
<h3 id="multiple-accounts">
什么是账户资料?如何在它们之间切换? <a href="#multiple-accounts" class="anchor"></a>
What are profiles? How can I switch between them? <a href="#multiple-accounts" class="anchor"></a>
</h3>
<p>一份账户资料包括<strong>姓名、照片</strong>和一些额外的加密信息。
个人配置只存在于您的设备(们)中
并使用聊天邮件或传统电子邮件服务器传输信息。</p>
<p>A profile is <strong>a name, a picture</strong> 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.</p>
<p>首次安装Delta Chat 时,会创建第一个账户资料文件。</p>
<p>On first installation of Delta Chat a first profile is created.</p>
<p>之后,您可以点击左上角的个人资料图像,<strong>添加个人账户</strong>
或<strong>切换账户</strong>。</p>
<p>Later, you can tap your profile image in the upper left corner to <strong>Add Profiles</strong>
or to <strong>Switch Profiles</strong>.</p>
<p>您可能希望为政治、家庭或工作相关的活动使用不同的账户资料,
或者例如,为专门用于注册网站和平台的“垃圾邮件账户资料”,
这些网站和平台往往会早晚导致未经请求的消息(即“垃圾邮件”)</p>
<p>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.</p>
<p>您可能还想了解 <a href="#multiclient">如何在多台设备上使用同一账户资料</a>。</p>
<p>You may also wish to learn <a href="#multiclient">how to use the same profile on multiple devices</a>.</p>
<h3 id="谁会看见我的个人资料图片">
@@ -438,18 +438,16 @@ They will most likely also not be decryptable anymore
<ul>
<li>
<p>默认情况下,Delta Chat 会在本地设备上存储您的所有消息。
如果您,例如,想要节省邮件提供商处的存储空间,
那么可以选择配置Delta Chat 以开启服务端自动删除旧消息。
这些消息还将保存在您的设备上,除非您在设备上删除它们。</p>
<p>默认情况下,Delta Chat 会在本地设备上存储您的所有消息。如果您,例如,想要节省邮件提供商处的存储空间,那么可以选择开启自动删除旧消息。这些消息还将保存在您的设备上(除非您在设备上删除它们)。</p>
</li>
<li>
<p>要打开它,请转到 “聊天和媒体 “设置中的<strong>删除旧信息 → 从服务器删除信息</strong>。
您可以在 “立即 “和 “1 年后 “之间设置时限。
Delta Chat 收到的所有电子邮件都将在此期限后从服务器中删除。</p>
<p>To turn it on, go to <strong>Delete Old Messages → Delete Messages from Server</strong>
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.</p>
</li>
<li>
<p>注意:如果在多台设备上使用 Delta Chat,请将消息在服务器上保存足够长的时间,以便其他设备能够下载消息。在这种情况下,您应当根据其他设备(们)的使用频率,将自动删除设置到“一天后”或相似的选项上。</p>
<p>注意:如果在多台设备上使用 Delta Chat,请将消息在服务器上保存足够长的时间,以便其他设备能够下载消息。在这种情况下,您应当根据其他设备的使用频率,将自动删除设置到“一天后”或相似的选项上。</p>
</li>
</ul>
@@ -514,7 +512,7 @@ for Delta Chat users.</p>
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
<a href="#privacy-notifications">Delta Chat’s privacy-preserving Push Notification system</a>
<a href="#privacy-notifications">Delta Chat’s privacy-minimizing Push Notification system</a>
does not expose data to Apple that it doesn’t already have.</p>
<h3 id="android-push">
@@ -1175,9 +1173,7 @@ independent security analysis, from most recent to older:</p>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information and the
<a href="https://eprint.iacr.org/2024/918.pdf">Cryptographic Analysis of Delta Chat</a>
research paper published afterwards.</p>
See our blog post about <a href="https://delta.chat/en/2024-03-25-crypto-analysis-securejoin">Hardening Guaranteed End-to-End encryption</a> for more detailed information.</p>
</li>
<li>
<p>2023 April, we fixed security and privacy issues with the “web
@@ -1729,7 +1725,7 @@ if you set a <a href="#signature">signature text</a>.</p>
<p>副本会被发送到收件箱,然后会被移动到 DeltaChat 文件夹;它不会被放到“已发送”文件夹里。Delta Chat <em>从不</em> 将东西上传到已发送文件夹,因为这意味着上传一条消息两次(一次通过 SMTP,一次通过 IMAP 到已发送文件夹)。</p>
<p>“给自己发送副本”的默认设置为 “开”。</p>
<p>The default setting for “Send Copy to Self” is “on”.</p>
<h3 id="为什么我可以选择监视已发送文件夹">
@@ -1739,7 +1735,7 @@ if you set a <a href="#signature">signature text</a>.</p>
</h3>
<p>监视已发送文件夹的唯一原因是:您在使用Delta Chat软件的同时也使用其他的邮件应用程序(比如 Thunderbird),并且想让邮件分发代理参与聊天对话。</p>
<p>监视已发送文件夹的唯一原因是:您在同时使用其他的邮件应用程序(比如 Thunderbird),并且想让邮件分发代理参与聊天对话。</p>
<p>不过,我们推荐使用 Delta Chat 桌面客户端;您可以在 <a href="https://get.delta.chat">get.delta.chat</a> 下载它。监视“已发送”文件夹的选项是在还没有 Delta Chat 桌面客户端的时候引入的,这个选项可能会在未来消失。</p>
@@ -1811,31 +1807,48 @@ it is recommended to leave any group chat before uninstalling Delta Chat.</p>
</h3>
<p>Delta Chat 没有接受风险投资,也没有负债累累,更没有承受产生巨额利润或将用户及其朋友和家人卖给广告商(或更糟)的压力。我们宁愿使用目前来自欧盟和美国的公共资金,来帮助我们努力建立一个基于自由开源社区开发的、去中心化的、多样化的聊天消息软件生态系统。</p>
<p>Delta Chat 没有接受风险投资,也没有负债累累,更没有承受产生巨额利润或将用户及其朋友和家人卖给广告商(或更糟)的压力。我们宁愿使用(目前来自欧盟和美国的)公共资金,来帮助我们努力建立一个基于自由开源社区开发的、去中心化的、多样化的聊天消息(软件)生态系统。</p>
<p>具体来说,到目前为止,对 Delta Chat 开发的资助有这些来源:</p>
<ul>
<li>
<p><a href="https://nextleap.eu">NEXTLEAP</a>欧盟项目资助了以下研究和实施工作:在 2017 年和 2018 年实施的验证组和设置联系协议和通过 <a href="https://autocrypt.org">Autocrypt</a>整合了端到端加密。</p>
<p>The <a href="https://nextleap.eu">NEXTLEAP</a> 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 <a href="https://autocrypt.org">Autocrypt</a>.</p>
</li>
<li>
<p>在<a href="https://opentechfund.org">开放技术基金</a> 2018/2019 年提供的第一笔赠款(约 20 万美元)期间,我们显著改善了安卓应用,发布了第一个桌面测试版,并根据人权方面的用户体验研究进行了功能开发,请参阅我们的结论<a href="https://delta.chat/en/2019-07-19-uxreport">《需求发现与用户体验报告》</a>。2019/2020 年的第二笔赠款(约 30 万美元)对发布 Delta/iOS 版本,将核心库转换到 Rust ,以及为所有平台开发新功能提供了帮助。</p>
</li>
<li>
<p><a href="https://nlnet.nl/">NLnet 基金会</a> 2019/2020 年拨款 4.6 万欧元,用于完成 Rust/Python 绑定并建立聊天机器人生态系统。</p>
<p>The <a href="https://nlnet.nl/">NLnet foundation</a> granted in 2019/2020 EUR 46K for
completing Rust/Python bindings and instigating a Chat-bot eco-system.</p>
</li>
<li>
<p>在 2021 年,我们从两项下一代互联网提案收到了欧盟的进一步资助,即 <a href="https://dapsi.ngi.eu/hall-of-fame/eppd/">EPPD - 电子邮件提供商可移植性目录</a>(约 9.7 万欧元)和 <a href="https://nlnet.nl/project/EmailPorting/">AEAP - 电子邮件地址移植</a>(约 9 万欧元)。这带来了更好的多账户支持,改进的二维码联系人和群组设置,和所有平台上的多处网络改进。</p>
</li>
<li>
<p>从 2021 年底到 2023 年 3 月,我们从美国民主、人权和劳工局(DRL)获得了<em>互联网自由</em>资金(50 万美元)。这笔资金支持了我们的长期目标,即让Delta Chat 更好用,并与全球范围内的各种电子邮件服务器兼容,而且在经常受到互联网审查制度影响的地方更具弹性和安全性。</p>
<p>From End 2021 till March 2023 we received <em>Internet Freedom</em> 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.</p>
</li>
<li>
<p>从 2023 年开始,我们的 “私有去中心化应用程序 “提案获得了 下一代互联网(NGI)托付计划的青睐。 具体金额待定(约 10 万欧元)。这笔资金将支持<a href="https://webxdc.org">webxdc “聊天共享应用程序”</a>的进一步开发。</p>
<p>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 <a href="https://webxdc.org">webxdc “apps shared in a chat”</a>.</p>
</li>
<li>
<p>我们有时会收到个人的一次性捐款。 例如,2021 年,一位慷慨的人士以 “继续保持良好的发展态势!”为主题通过银行向我们捐赠了4千欧元💜。 我们用这些钱来资助发展活动或支付不容易预测或从公共基金中报销的临时费用。收到更多的捐款也有助于我们作为一个贡献者社区变得更加独立和长期可持续。</p>
<p>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.</p>
</li>
@@ -1846,8 +1859,8 @@ it is recommended to leave any group chat before uninstalling Delta Chat.</p>
<p>上面提到的钱款资助主要是由在弗赖堡(德国)的 merlinux GmbH 组织的,分发给了来自世界各地的十多位贡献者。</p>
<p>请参阅 [Delta Chat 捐款渠道](捐款)
以了解货币捐款和其他捐款的可能性。</p>
<p>Please see <a href="https://delta.chat/zh_CN/contribute">Delta Chat Contribution channels</a>
for both monetary and and other contribution possibilities.</p>
@@ -21,7 +21,15 @@ public class DcAccounts {
public DcEventEmitter getEventEmitter () { return new DcEventEmitter(getEventEmitterCPtr()); }
public DcJsonrpcInstance getJsonrpcInstance () { return new DcJsonrpcInstance(getJsonrpcInstanceCPtr()); }
public native void startIo ();
public void startIo () {
for (int accountId : getAll()) {
DcContext acc = getAccount(accountId);
if (acc.isEnabled()) {
acc.startIo();
}
}
};
public native void startIo2 ();
public native void stopIo ();
public native void maybeNetwork ();
public native void setPushDeviceToken (String token);
@@ -56,6 +56,7 @@ public class DcContact {
public native long getLastSeen ();
public native boolean wasSeenRecently();
public native boolean isBlocked ();
public native boolean isBot ();
public native boolean isVerified ();
public native int getVerifierId ();
+32 -15
View File
@@ -88,6 +88,8 @@ public class DcContext {
public final static int DC_CONNECTIVITY_WORKING = 3000;
public final static int DC_CONNECTIVITY_CONNECTED = 4000;
private static final String CONFIG_ACCOUNT_ENABLED = "ui.enabled";
// when using DcAccounts, use DcAccounts.addAccount() instead
public DcContext(String osName, String dbfile) {
contextCPtr = createContextCPtr(osName, dbfile);
@@ -214,6 +216,19 @@ public class DcContext {
public native boolean isSendingLocationsToChat(int chat_id);
public DcProvider getProviderFromEmailWithDns (String email) { long cptr = getProviderFromEmailWithDnsCPtr(email); return cptr!=0 ? new DcProvider(cptr) : null; }
public boolean isEnabled() {
return !"0".equals(getConfig(CONFIG_ACCOUNT_ENABLED));
}
public void setEnabled(boolean enabled) {
setConfigInt(CONFIG_ACCOUNT_ENABLED, enabled? 1 : 0);
if (enabled) {
startIo();
} else {
stopIo();
}
}
public String getNameNAddr() {
String displayname = getConfig("displayname");
String addr = getConfig("addr");
@@ -232,25 +247,27 @@ public class DcContext {
return ret.trim();
}
public boolean isCommunity() {
return getConfigInt("is_community") == 1;
}
public void setCommunityMode(boolean enable) {
setConfig("is_community", enable? "1" : null);
}
public String getCommunityUser() {
String name = getConfig("ui.community.selfname");
return name == null? "" : name;
}
public void setCommunityUser(String name) {
setConfig("ui.community.selfname", name);
}
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
*/
+6 -5
View File
@@ -120,7 +120,8 @@ public class DcMsg {
public native long getSortTimestamp ();
public native boolean hasDeviatingTimestamp();
public native boolean hasLocation ();
public native int getType ();
private native int getViewType ();
public int getType () { return getDownloadState()==DC_DOWNLOAD_DONE? getViewType() : DC_MSG_TEXT; }
public native int getInfoType ();
public native int getState ();
public native int getDownloadState ();
@@ -156,6 +157,8 @@ public class DcMsg {
public native int getVideochatType ();
public native boolean isIncreation ();
public native void setText (String text);
public native void setSubject (String text);
public native void setHtml (String text);
public native void setFile (String file, String filemime);
public native void setDimension (int width, int height);
public native void setDuration (int duration);
@@ -164,6 +167,8 @@ public class DcMsg {
public native String getQuotedText ();
public native String getError ();
public native String getOverrideSenderName();
public native boolean isOutgoing();
public native int getSenderColor();
public String getSenderName(DcContact dcContact, boolean markOverride) {
String overrideName = getOverrideSenderName();
@@ -203,10 +208,6 @@ public class DcMsg {
return ids;
}
public boolean isOutgoing() {
return getFromId() == DcContact.DC_CONTACT_ID_SELF;
}
public String getDisplayBody() {
return getText();
}
@@ -126,18 +126,6 @@ public class Rpc {
return getResult("draft_self_report", accountId).getAsInt();
}
public void sendWebxdcRealtimeData(Integer accountId, Integer instanceMsgId, List<Integer> 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;
@@ -27,6 +27,7 @@ import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcEventEmitter;
import com.b44t.messenger.rpc.Rpc;
import org.thoughtcrime.securesms.components.emoji.EmojiProvider;
import org.thoughtcrime.securesms.connect.AccountManager;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
@@ -49,6 +50,8 @@ import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.SignalProtocolLoggerProvider;
import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.concurrent.TimeUnit;
//import com.squareup.leakcanary.LeakCanary;
@@ -76,6 +79,26 @@ public class ApplicationContext extends MultiDexApplication {
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> {
StringWriter stringWriter = new StringWriter();
throwable.printStackTrace(new PrintWriter(stringWriter, true));
String errorMsg = "Android " + Build.VERSION.RELEASE +":\n" + stringWriter.getBuffer().toString();
String subject = "DeltaLab " + BuildConfig.VERSION_NAME + " Crash Report";
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
intent.putExtra(android.content.Intent.EXTRA_TEXT, subject + "\n\n" + errorMsg);
intent.putExtra(Intent.EXTRA_EMAIL, "adb@merlinux.eu");
Intent chooser = Intent.createChooser(intent, subject);
chooser.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
chooser.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(chooser);
try {
ApplicationContext.this.finalize();
} catch (Throwable e) {}
});
// if (LeakCanary.isInAnalyzerProcess(this)) {
// // This process is dedicated to LeakCanary for heap analysis.
// // You should not init your app in this process.
@@ -85,6 +108,11 @@ public class ApplicationContext extends MultiDexApplication {
Log.i("DeltaChat", "++++++++++++++++++ ApplicationContext.onCreate() ++++++++++++++++++");
// The first call to `getInstance` takes about 100ms-300ms, so, do it on a background thread
Thread t = new Thread(() -> EmojiProvider.getInstance(this), "InitEmojiProviderThread");
t.setPriority(Thread.MIN_PRIORITY);
t.start();
System.loadLibrary("native-utils");
dcAccounts = new DcAccounts(new File(getFilesDir(), "accounts").getAbsolutePath());
@@ -104,6 +132,9 @@ public class ApplicationContext extends MultiDexApplication {
e.printStackTrace();
}
}
if ("deltafans@nine.testrun.org".equals(ac.getConfig("configured_addr")) && !ac.isCommunity()) {
ac.setCommunityMode(true);
}
}
if (allAccounts.length == 0) {
dcAccounts.addAccount();
@@ -215,10 +246,11 @@ public class ApplicationContext extends MultiDexApplication {
TimeUnit.MILLISECONDS)
.setConstraints(constraints)
.build();
WorkManager.getInstance(this).enqueueUniquePeriodicWork(
"FetchWorker",
ExistingPeriodicWorkPolicy.KEEP,
fetchWorkRequest);
try {
// in Android 4 this throws exception due to R8/shrinking
WorkManager.getInstance(this)
.enqueueUniquePeriodicWork("FetchWorker", ExistingPeriodicWorkPolicy.KEEP, fetchWorkRequest);
} catch (Throwable e) {}
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
if (BuildConfig.USE_PLAY_SERVICES) {
@@ -47,6 +47,7 @@ import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.preferences.AdvancedPreferenceFragment;
import org.thoughtcrime.securesms.preferences.AppearancePreferenceFragment;
import org.thoughtcrime.securesms.preferences.ChatsPreferenceFragment;
import org.thoughtcrime.securesms.preferences.PrivacyPreferenceFragment;
import org.thoughtcrime.securesms.preferences.CorrectedPreferenceFragment;
import org.thoughtcrime.securesms.preferences.NotificationsPreferenceFragment;
import org.thoughtcrime.securesms.preferences.widgets.ProfilePreference;
@@ -69,6 +70,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
private static final String PREFERENCE_CATEGORY_NOTIFICATIONS = "preference_category_notifications";
private static final String PREFERENCE_CATEGORY_APPEARANCE = "preference_category_appearance";
private static final String PREFERENCE_CATEGORY_CHATS = "preference_category_chats";
private static final String PREFERENCE_CATEGORY_PRIVACY = "preference_category_privacy";
private static final String PREFERENCE_CATEGORY_MULTIDEVICE = "preference_category_multidevice";
private static final String PREFERENCE_CATEGORY_ADVANCED = "preference_category_advanced";
private static final String PREFERENCE_CATEGORY_CONNECTIVITY = "preference_category_connectivity";
@@ -146,6 +148,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_APPEARANCE));
this.findPreference(PREFERENCE_CATEGORY_CHATS)
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_CHATS));
this.findPreference(PREFERENCE_CATEGORY_PRIVACY)
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_PRIVACY));
this.findPreference(PREFERENCE_CATEGORY_MULTIDEVICE)
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_MULTIDEVICE));
this.findPreference(PREFERENCE_CATEGORY_ADVANCED)
@@ -197,6 +201,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
.setSummary(AppearancePreferenceFragment.getSummary(getActivity()));
this.findPreference(PREFERENCE_CATEGORY_CHATS)
.setSummary(ChatsPreferenceFragment.getSummary(getActivity()));
this.findPreference(PREFERENCE_CATEGORY_PRIVACY)
.setSummary(PrivacyPreferenceFragment.getSummary(getActivity()));
this.findPreference(PREFERENCE_CATEGORY_CONNECTIVITY)
.setSummary(DcHelper.getConnectivitySummary(getActivity(), R.string.connectivity_connected));
this.findPreference(PREFERENCE_CATEGORY_HELP)
@@ -209,6 +215,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
Drawable swap = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_swap_vert_white_24dp));
Drawable appearance = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_brightness_6_white_24dp));
Drawable chats = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_forum_white_24dp));
Drawable privacy = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_lock_white_24dp));
Drawable advanced = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_advanced_white_24dp));
Drawable help = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_help_white_24dp));
@@ -221,6 +228,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
DrawableCompat.setTint(swap, color);
DrawableCompat.setTint(appearance, color);
DrawableCompat.setTint(chats, color);
DrawableCompat.setTint(privacy, color);
DrawableCompat.setTint(advanced, color);
DrawableCompat.setTint(help, color);
@@ -228,6 +236,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
this.findPreference(PREFERENCE_CATEGORY_CONNECTIVITY).setIcon(swap);
this.findPreference(PREFERENCE_CATEGORY_APPEARANCE).setIcon(appearance);
this.findPreference(PREFERENCE_CATEGORY_CHATS).setIcon(chats);
this.findPreference(PREFERENCE_CATEGORY_PRIVACY).setIcon(privacy);
this.findPreference(PREFERENCE_CATEGORY_ADVANCED).setIcon(advanced);
this.findPreference(PREFERENCE_CATEGORY_HELP).setIcon(help);
}
@@ -266,6 +275,9 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
case PREFERENCE_CATEGORY_CHATS:
fragment = new ChatsPreferenceFragment();
break;
case PREFERENCE_CATEGORY_PRIVACY:
fragment = new PrivacyPreferenceFragment();
break;
case PREFERENCE_CATEGORY_MULTIDEVICE:
if (!ScreenLockUtil.applyScreenLock(getActivity(), getString(R.string.multidevice_title),
getString(R.string.multidevice_this_creates_a_qr_code) + "\n\n" + getString(R.string.enter_system_secret_to_continue),
@@ -1,6 +1,7 @@
package org.thoughtcrime.securesms;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
@@ -16,6 +17,8 @@ import com.b44t.messenger.DcMsg;
import com.b44t.messenger.rpc.Rpc;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.recipients.Recipient;
@@ -61,11 +64,20 @@ public abstract class BaseConversationItem extends LinearLayout
}
protected void setInteractionState(DcMsg messageRecord, boolean pulseHighlight) {
final int[] attributes = new int[] {
R.attr.conversation_item_background,
R.attr.conversation_item_background_animated,
};
if (batchSelected.contains(messageRecord)) {
setBackgroundResource(R.drawable.conversation_item_background);
final TypedArray attrs = context.obtainStyledAttributes(attributes);
ViewUtil.setBackground(this, attrs.getDrawable(0));
attrs.recycle();
setSelected(true);
} else if (pulseHighlight) {
setBackgroundResource(R.drawable.conversation_item_background_animated);
final TypedArray attrs = context.obtainStyledAttributes(attributes);
ViewUtil.setBackground(this, attrs.getDrawable(1));
attrs.recycle();
setSelected(true);
postDelayed(() -> setSelected(false), PULSE_HIGHLIGHT_MILLIS);
} else {
@@ -165,31 +165,14 @@ public abstract class BaseConversationListFragment extends Fragment implements A
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<Long> selectedConversations = new HashSet<Long>(getListAdapter().getBatchSelections());
for (long chatId : selectedConversations) {
dcContext.marknoticedChat((int)chatId);
}
if (actionMode != null) {
actionMode.finish();
actionMode = null;
@@ -365,7 +348,6 @@ public abstract class BaseConversationListFragment extends Fragment implements A
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;
@@ -17,7 +17,10 @@
package org.thoughtcrime.securesms;
import static org.thoughtcrime.securesms.TransportOption.Type;
import static org.thoughtcrime.securesms.util.RelayUtil.getSharedHtml;
import static org.thoughtcrime.securesms.util.RelayUtil.getSharedSubject;
import static org.thoughtcrime.securesms.util.RelayUtil.getSharedText;
import static org.thoughtcrime.securesms.util.RelayUtil.getSharedType;
import static org.thoughtcrime.securesms.util.RelayUtil.isForwarding;
import static org.thoughtcrime.securesms.util.RelayUtil.isSharing;
@@ -90,6 +93,7 @@ import org.thoughtcrime.securesms.components.KeyboardAwareLinearLayout.OnKeyboar
import org.thoughtcrime.securesms.components.ScaleStableImageView;
import org.thoughtcrime.securesms.components.SendButton;
import org.thoughtcrime.securesms.components.emoji.EmojiKeyboardProvider;
import org.thoughtcrime.securesms.components.emoji.EmojiProvider;
import org.thoughtcrime.securesms.components.emoji.MediaKeyboard;
import org.thoughtcrime.securesms.connect.AccountManager;
import org.thoughtcrime.securesms.connect.DcEventCenter;
@@ -150,6 +154,9 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
public static final String CHAT_ID_EXTRA = "chat_id";
public static final String FROM_ARCHIVED_CHATS_EXTRA = "from_archived";
public static final String TEXT_EXTRA = "draft_text";
public static final String MSG_TYPE_EXTRA = "msg_type";
public static final String MSG_HTML_EXTRA = "msg_html";
public static final String MSG_SUBJECT_EXTRA = "msg_subject";
public static final String STARTING_POSITION_EXTRA = "starting_position";
private static final int PICK_GALLERY = 1;
@@ -499,13 +506,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
Log.e(TAG, "cannot set up in-chat-search: ", e);
}
if (!dcChat.canSend()) {
MenuItem attachItem = menu.findItem(R.id.menu_add_attachment);
if (attachItem!=null) {
attachItem.setVisible(false);
}
}
super.onPrepareOptionsMenu(menu);
return true;
}
@@ -514,7 +514,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.menu_add_attachment: handleAddAttachment(); return true;
case R.id.menu_leave: handleLeaveGroup(); return true;
case R.id.menu_archive_chat: handleArchiveChat(); return true;
case R.id.menu_clear_chat: fragment.handleClearChat(); return true;
@@ -696,10 +695,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
.setPositiveButton(R.string.menu_send, (dialog, which) -> SendRelayedMessageUtil.immediatelyRelay(this, chatId))
.show();
} else {
if (uriList.isEmpty()) {
dcContext.setDraft(chatId, SendRelayedMessageUtil.createMessage(this, null, getSharedText(this)));
if (getSharedHtml(this) != null || getSharedSubject(this) != null || ("sticker".equals(getSharedType(this)) && !uriList.isEmpty())) {
SendRelayedMessageUtil.immediatelyRelay(this, chatId);
} else {
dcContext.setDraft(chatId, SendRelayedMessageUtil.createMessage(this, uriList.get(0), getSharedText(this)));
Uri uri = uriList.isEmpty()? null : uriList.get(0);
dcContext.setDraft(chatId, SendRelayedMessageUtil.createMessage(this, uri, getSharedType(this), null, null, getSharedText(this)));
}
initializeDraft();
}
@@ -718,6 +718,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (draft == null) {
if (TextUtils.isEmpty(sharedText)) {
composeText.setText("");
future.set(false);
} else {
composeText.setText(sharedText);
@@ -731,6 +732,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if(!text.isEmpty()) {
composeText.setText(text);
composeText.setSelection(composeText.getText().length());
} else {
composeText.setText("");
}
DcMsg quote = draft.getQuotedMsg();
@@ -867,9 +870,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if(!backgroundImagePath.isEmpty()) {
background = Drawable.createFromPath(backgroundImagePath);
}
else if(DynamicTheme.isDarkTheme(this)) {
background = getResources().getDrawable(R.drawable.background_hd_dark);
}
else {
background = getResources().getDrawable(R.drawable.background_hd);
}
@@ -993,6 +993,14 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
protected static final int ACTION_SEND_OUT = 1;
protected static final int ACTION_SAVE_DRAFT = 2;
private String getSelfReaction(int msgId) {
try {
final String [] selfReactions = rpc.getMsgReactions(dcContext.getAccountId(), msgId).getReactionsByContact().get(DcContact.DC_CONTACT_ID_SELF);
if (selfReactions != null && selfReactions.length > 0) return selfReactions[0];
} catch(Exception e) { e.printStackTrace(); }
return null;
}
protected ListenableFuture<Integer> processComposeControls(int action) {
return processComposeControls(action, composeText.getTextTrimmed(),
attachmentManager.isAttachmentPresent() ?
@@ -1050,6 +1058,18 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
e.printStackTrace();
}
}
else if (action == ACTION_SEND_OUT && quote.isPresent() && EmojiProvider.getInstance(this).maybeEmoji(body)){
int quotedMsg = quote.get().getQuotedMsg().getId();
try {
rpc.sendReaction(dcContext.getAccountId(), quotedMsg, body.equals(getSelfReaction(quotedMsg))? "" : body);
future.set(chatId);
return future;
} catch (RpcException e) {
e.printStackTrace();
msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
msg.setText(body);
}
}
else if (!body.isEmpty()){
msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
msg.setText(body);
@@ -1428,8 +1448,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
} else if ((eventId == DcContext.DC_EVENT_INCOMING_MSG
|| eventId == DcContext.DC_EVENT_MSG_READ)
&& event.getData1Int() == chatId) {
DcContact contact = recipient.getDcContact();
titleView.setSeenRecently(contact!=null? dcContext.getContact(contact.getId()).wasSeenRecently() : false);
dcChat = dcContext.getChat(chatId);
titleView.setTitle(glideRequests, dcChat);
}
}
@@ -338,7 +338,7 @@ public class ConversationFragment extends MessageSelectorFragment
menu.findItem(R.id.menu_context_share).setVisible(messageRecord.hasFile());
boolean canReply = canReplyToMsg(messageRecord);
menu.findItem(R.id.menu_context_reply).setVisible(chat.canSend() && canReply);
boolean showReplyPrivately = chat.isMultiUser() && !messageRecord.isOutgoing() && canReply;
boolean showReplyPrivately = !dcContext.isCommunity() && chat.isMultiUser() && !messageRecord.isOutgoing() && canReply;
menu.findItem(R.id.menu_context_reply_privately).setVisible(showReplyPrivately);
menu.findItem(R.id.menu_add_to_home_screen).setVisible(messageRecord.getType() == DcMsg.DC_MSG_WEBXDC);
}
@@ -363,7 +363,22 @@ public class ConversationFragment extends MessageSelectorFragment
}
static boolean canReplyToMsg(DcMsg dcMsg) {
return !dcMsg.isInfo() && dcMsg.getType() != DcMsg.DC_MSG_VIDEOCHAT_INVITATION;
boolean canReply = dcMsg.getType() != DcMsg.DC_MSG_VIDEOCHAT_INVITATION;
if (canReply && dcMsg.isInfo()) {
switch (dcMsg.getInfoType()) {
case DcMsg.DC_INFO_GROUP_NAME_CHANGED:
case DcMsg.DC_INFO_GROUP_IMAGE_CHANGED:
case DcMsg.DC_INFO_MEMBER_ADDED_TO_GROUP:
case DcMsg.DC_INFO_MEMBER_REMOVED_FROM_GROUP:
case DcMsg.DC_INFO_LOCATIONSTREAMING_ENABLED:
case DcMsg.DC_INFO_EPHEMERAL_TIMER_CHANGED:
case DcMsg.DC_INFO_WEBXDC_INFO_MESSAGE:
break;
default:
canReply = false;
}
}
return canReply;
}
public void handleClearChat() {
@@ -819,6 +834,9 @@ public class ConversationFragment extends MessageSelectorFragment
list.getAdapter().notifyDataSetChanged();
actionMode = ((AppCompatActivity)getActivity()).startSupportActionMode(actionModeCallback);
if (dcContext.isCommunity()) return;
addReactionView.show(messageRecord, view, () -> {
if (actionMode != null) {
actionMode.finish();
@@ -23,7 +23,7 @@ import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.Rect;
import android.os.Build;
import android.text.SpannableString;
import android.text.Spannable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.Log;
@@ -70,6 +70,7 @@ import org.thoughtcrime.securesms.mms.VcardSlide;
import org.thoughtcrime.securesms.reactions.ReactionsConversationView;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.LongClickMovementMethod;
import org.thoughtcrime.securesms.util.MarkdownUtil;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.Util;
@@ -180,7 +181,7 @@ public class ConversationItem extends BaseConversationItem
bind(messageRecord, dcChat, batchSelected, pulseHighlight, recipients);
this.locale = locale;
this.glideRequests = glideRequests;
this.showSender = (dcChat.isMultiUser() && !messageRecord.isOutgoing()) || messageRecord.getOverrideSenderName() != null;
this.showSender = dcContext.isCommunity() || (dcChat.isMultiUser() && !messageRecord.isOutgoing()) || messageRecord.getOverrideSenderName() != null;
if (showSender) {
this.dcContact = dcContext.getContact(messageRecord.getFromId());
@@ -400,7 +401,7 @@ public class ConversationItem extends BaseConversationItem
bodyText.setVisibility(View.GONE);
}
else {
SpannableString spannable = new SpannableString(text);
Spannable spannable = (Spannable) MarkdownUtil.toMarkdown(context, text);
if (batchSelected.isEmpty()) {
spannable = EmojiTextView.linkify(spannable);
}
@@ -432,10 +433,10 @@ public class ConversationItem extends BaseConversationItem
} else if (messageRecord.getType() == DcMsg.DC_MSG_WEBXDC) {
msgActionButton.setVisibility(View.VISIBLE);
msgActionButton.setEnabled(true);
msgActionButton.setText(R.string.start_app);
msgActionButton.setText(webxdcViewStub.get().isCommunity()? R.string.join: R.string.start_app);
msgActionButton.setOnClickListener(view -> {
if (batchSelected.isEmpty()) {
WebxdcActivity.openWebxdcActivity(getContext(), messageRecord);
DcHelper.openWebxdc(getContext(), messageRecord);
} else {
passthroughClickListener.onClick(view);
}
@@ -679,7 +680,9 @@ public class ConversationItem extends BaseConversationItem
if (!showSender || dcContact ==null) {
contactPhoto.setVisibility(View.GONE);
} else {
contactPhoto.setAvatar(glideRequests, new Recipient(context, dcContact), true);
int color = messageRecord.getSenderColor();
Recipient recipient = new Recipient(context, dcContact, messageRecord.getSenderName(dcContact, !dcContext.isCommunity()), color);
contactPhoto.setAvatar(glideRequests, recipient, true);
contactPhoto.setVisibility(View.VISIBLE);
}
}
@@ -704,7 +707,7 @@ public class ConversationItem extends BaseConversationItem
Recipient author = null;
SlideDeck slideDeck = new SlideDeck();
if (msg != null) {
author = new Recipient(context, dcContext.getContact(msg.getFromId()));
author = new Recipient(context, dcContext.getContact(msg.getFromId()), msg.getSenderColor());
if (msg.getType() != DcMsg.DC_MSG_TEXT) {
Slide slide = MediaUtil.getSlideForMsg(context, msg);
if (slide != null) {
@@ -811,7 +814,8 @@ public class ConversationItem extends BaseConversationItem
}
else if (showSender && dcContact !=null) {
this.groupSender.setText(messageRecord.getSenderName(dcContact, true));
this.groupSender.setTextColor(Util.rgbToArgbColor(dcContact.getColor()));
int color = messageRecord.getSenderColor();
this.groupSender.setTextColor(Util.rgbToArgbColor(color!=0? color : dcContact.getColor()));
}
}
@@ -894,7 +898,7 @@ public class ConversationItem extends BaseConversationItem
if (shouldInterceptClicks(messageRecord) || !batchSelected.isEmpty()) {
performClick();
} else if (slide.isWebxdcDocument()) {
WebxdcActivity.openWebxdcActivity(context, messageRecord);
msgActionButton.performClick();
} else if (slide.isVcard()) {
try {
String path = slide.asAttachment().getRealPath(context);
@@ -27,8 +27,10 @@ import static org.thoughtcrime.securesms.util.RelayUtil.isRelayingMessageContent
import static org.thoughtcrime.securesms.util.RelayUtil.resetRelayingMessageContent;
import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
@@ -45,6 +47,7 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.widget.TooltipCompat;
import androidx.core.view.MenuCompat;
import com.amulyakhare.textdrawable.TextDrawable;
import com.b44t.messenger.DcAccounts;
@@ -54,7 +57,7 @@ import com.b44t.messenger.DcMsg;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import org.thoughtcrime.securesms.components.AvatarImageView;
import org.thoughtcrime.securesms.components.AvatarView;
import org.thoughtcrime.securesms.components.SearchToolbar;
import org.thoughtcrime.securesms.connect.AccountManager;
import org.thoughtcrime.securesms.connect.DcHelper;
@@ -84,7 +87,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
private ConversationListFragment conversationListFragment;
public TextView title;
private AvatarImageView selfAvatar;
private AvatarView selfAvatar;
private ImageView unreadIndicator;
private SearchFragment searchFragment;
private SearchToolbar searchToolbar;
@@ -104,8 +107,8 @@ 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 deviceMsgLabel = "update_1_46_0l_android";
if (!dcContext.wasDeviceMsgEverAdded(deviceMsgLabel)) {
final String deviceMsgId = "update_1_46_0l_android";
if (!dcContext.wasDeviceMsgEverAdded(deviceMsgId)) {
DcMsg msg = null;
if (!getIntent().getBooleanExtra(FROM_WELCOME, false)) {
msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
@@ -117,15 +120,15 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
msg.setText(getString(R.string.update_1_46_android, "https://get.delta.chat/#changelogs"));
}
dcContext.addDeviceMsg(deviceMsgLabel, msg);
dcContext.addDeviceMsg(deviceMsgId, msg);
if (Prefs.getStringPreference(this, Prefs.LAST_DEVICE_MSG_LABEL, "").equals(deviceMsgLabel)) {
if (Prefs.getStringPreference(this, Prefs.LAST_DEVICE_MSG_ID, "").equals(deviceMsgId)) {
int deviceChatId = dcContext.getChatIdByContactId(DcContact.DC_CONTACT_ID_DEVICE);
if (deviceChatId != 0) {
dcContext.marknoticedChat(deviceChatId);
}
}
Prefs.setStringPreference(this, Prefs.LAST_DEVICE_MSG_LABEL, deviceMsgLabel);
Prefs.setStringPreference(this, Prefs.LAST_DEVICE_MSG_ID, deviceMsgId);
}
} catch(Exception e) {
e.printStackTrace();
@@ -261,7 +264,14 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} else {
title.setText(DcHelper.getConnectivitySummary(this, R.string.app_name));
DcContext dcContext = DcHelper.getContext(this);
DcContact self = dcContext.getContact(DcContact.DC_CONTACT_ID_SELF);
String name = dcContext.getConfig("displayname");
if (TextUtils.isEmpty(name)) {
name = self.getAddr();
}
title.setText(name);
selfAvatar.setConnectivity(DcHelper.getContext(this).getConnectivity());
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
}
@@ -294,14 +304,23 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
if(unreadCount == 0) {
unreadIndicator.setVisibility(View.GONE);
} else {
boolean isDarkTheme = DynamicTheme.isDarkTheme(this);
int badgeColor = Color.WHITE;
if (isDarkTheme) {
final TypedArray attrs = obtainStyledAttributes(new int[] {
R.attr.conversation_list_item_unreadcount_color,
});
badgeColor = attrs.getColor(0, Color.BLACK);
}
String label = unreadCount>99? "99+" : String.valueOf(unreadCount);
unreadIndicator.setImageDrawable(TextDrawable.builder()
.beginConfig()
.width(ViewUtil.dpToPx(this, 24))
.height(ViewUtil.dpToPx(this, 24))
.textColor(Color.WHITE)
.width(ViewUtil.dpToPx(this, 20))
.height(ViewUtil.dpToPx(this, 20))
.textColor(isDarkTheme? Color.WHITE : Color.BLACK)
.bold()
.endConfig()
.buildRound(String.valueOf(unreadCount), getResources().getColor(R.color.unread_count)));
.buildRound(label, badgeColor));
unreadIndicator.setVisibility(View.VISIBLE);
}
}
@@ -309,6 +328,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
@Override
public void onResume() {
super.onResume();
refreshTitle();
DirectShareUtil.triggerRefreshDirectShare(this);
}
@@ -327,6 +347,12 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
if (!Prefs.isLocationStreamingEnabled(this)) {
menu.findItem(R.id.menu_global_map).setVisible(false);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
MenuCompat.setGroupDividerEnabled(menu, true);
} else{
menu.setGroupVisible(R.id.extra_services, false);
}
}
super.onPrepareOptionsMenu(menu);
@@ -377,9 +403,6 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.menu_new_chat:
createChat();
return true;
case R.id.menu_settings:
startActivity(new Intent(this, ApplicationPreferencesActivity.class));
return true;
@@ -398,6 +421,12 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
case R.id.menu_all_media:
startActivity(new Intent(this, ProfileActivity.class));
return true;
case R.id.menu_webxdc_apps_store:
handleShowBot("xstore@testrun.org", "OPENPGP4FPR:37DC2B704A2AE2F6A96235CE0C3A0EBCA4F5801D#a=xstore%40testrun.org&n=&i=-1IGtynaivZ&s=JqHsvvcDmnW");
return true;
case R.id.menu_public_bots:
handleShowBot("publicbots@testrun.org", "OPENPGP4FPR:4DB8117591B27184A903FF7E9F469E00D40E13E7#a=publicbots%40testrun.org&n=Public%20Bots&i=zSuQpFtBa_Q&s=weLMu1-o1o1");
return true;
}
return false;
@@ -426,6 +455,21 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
invalidateOptionsMenu();
}
private void handleShowBot(String addr, String qrdata) {
final DcContext dcContext = DcHelper.getContext(this);
int contactId = dcContext.lookupContactIdByAddr(addr);
int chatId = 0;
if (contactId!=0 && dcContext.getChatIdByContactId(contactId)!=0) {
chatId = dcContext.createChatByContactId(contactId);
}
if (chatId != 0 && dcContext.getChat(chatId).isProtected()) {
openConversation(chatId, -1);
} else {
QrCodeHandler qrCodeHandler = new QrCodeHandler(this);
qrCodeHandler.handleQrData(qrdata);
}
}
@Override
public void onCreateConversation(int chatId) {
openConversation(chatId, -1);
@@ -42,6 +42,7 @@ 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.AccountManager;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.mms.GlideApp;
@@ -113,7 +114,9 @@ public class ConversationListFragment extends BaseConversationListFragment
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);
}
@@ -167,10 +167,12 @@ public class ConversationListItem extends RelativeLayout
DcContact contact = recipient.getDcContact();
avatar.setSeenRecently(contact!=null? contact.wasSeenRecently() : false);
boolean isProtected = thread.isProtected() || DcHelper.getContext(getContext()).getChat((int)chatId).isDeviceTalk();
fromView.setCompoundDrawablesWithIntrinsicBounds(
thread.isMuted()? R.drawable.ic_volume_off_grey600_18dp : 0,
0,
thread.isProtected()? R.drawable.ic_verified : 0,
isProtected? R.drawable.ic_verified : 0,
0);
}
@@ -184,7 +186,7 @@ public class ConversationListItem extends RelativeLayout
this.glideRequests = glideRequests;
fromView.setText(getHighlightedSpan(locale, contact.getDisplayName(), highlightSubstring));
fromView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
fromView.setCompoundDrawablesWithIntrinsicBounds(0, 0, contact.isVerified()? R.drawable.ic_verified : 0, 0);
subjectView.setText(getHighlightedSpan(locale, contact.getAddr(), highlightSubstring));
dateView.setText("");
dateView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
@@ -288,7 +290,15 @@ public class ConversationListItem extends RelativeLayout
if(unreadCount==0 || isContactRequest) {
unreadIndicator.setVisibility(View.GONE);
} else {
final int color = getResources().getColor(isMuted ? (ThemeUtil.isDarkTheme(getContext()) ? R.color.unread_count_muted_dark : R.color.unread_count_muted) : R.color.unread_count);
final int color;
if(isMuted){
color = getResources().getColor(ThemeUtil.isDarkTheme(getContext()) ? R.color.unread_count_muted_dark : R.color.unread_count_muted);
} else {
final TypedArray attrs = getContext().obtainStyledAttributes(new int[] {
R.attr.conversation_list_item_unreadcount_color,
});
color = attrs.getColor(0, Color.BLACK);
}
unreadIndicator.setImageDrawable(TextDrawable.builder()
.beginConfig()
.width(ViewUtil.dpToPx(getContext(), 24))
@@ -19,8 +19,12 @@ import org.thoughtcrime.securesms.components.AvatarView;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.DateUtils;
import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.ViewUtil;
import java.util.Locale;
public class ConversationTitleView extends RelativeLayout {
private View content;
@@ -74,17 +78,20 @@ public class ConversationTitleView extends RelativeLayout {
if (dcChat.isMuted()) {
imgLeft = R.drawable.ic_volume_off_white_18dp;
}
if (dcChat.isProtected()) {
if (dcChat.isProtected() || dcChat.isDeviceTalk()) {
imgRight = R.drawable.ic_verified;
}
boolean isOnline = false;
int[] chatContacts = dcContext.getChatContacts(chatId);
if (dcChat.isMailingList()) {
if (profileView) {
subtitleStr = dcChat.getMailinglistAddr();
} else {
subtitleStr = context.getString(R.string.mailing_list);
subtitleStr = dcChat.getMailinglistAddr();
if (!profileView) {
if (TextUtils.isEmpty(subtitleStr)) {
subtitleStr = context.getString(R.string.channel);
} else {
subtitleStr = context.getString(R.string.super_group);
}
}
} else if (dcChat.isBroadcast()) {
if (!profileView) {
@@ -92,7 +99,10 @@ public class ConversationTitleView extends RelativeLayout {
}
} else if( dcChat.isMultiUser() ) {
if (!profileView) {
subtitleStr = context.getResources().getQuantityString(R.plurals.n_members, chatContacts.length, chatContacts.length);
if (dcContext.isCommunity() && chatContacts.length == 1)
subtitleStr = context.getString(R.string.super_group);
else
subtitleStr = context.getResources().getQuantityString(R.plurals.n_members, chatContacts.length, chatContacts.length);
}
} else if( chatContacts.length>=1 ) {
if( dcChat.isSelfTalk() ) {
@@ -103,10 +113,22 @@ public class ConversationTitleView extends RelativeLayout {
}
else {
DcContact dcContact = dcContext.getContact(chatContacts[0]);
if (profileView || !dcChat.isProtected()) {
subtitleStr = dcContact.getAddr();
}
isOnline = dcContact.wasSeenRecently();
if (profileView) {
subtitleStr = dcContact.getAddr();
} else if (dcContact.isBot()) {
subtitleStr = context.getString(R.string.bot);
} else if (isOnline) {
subtitleStr = context.getString(R.string.online);
} else {
long timestamp = dcContact.getLastSeen();
if (timestamp == 0) {
subtitleStr = dcContact.getAddr();
} else {
Locale locale = DynamicLanguage.getSelectedLocale(context);
subtitleStr = context.getString(R.string.last_seen_at, DateUtils.getExtendedTimeSpanString(context, locale, timestamp));
}
}
}
}
@@ -17,6 +17,7 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
@@ -25,9 +26,11 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.loader.app.LoaderManager;
import com.b44t.messenger.DcContext;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.google.android.material.textfield.TextInputLayout;
import com.soundcloud.android.crop.Crop;
import org.thoughtcrime.securesms.components.AvatarSelector;
@@ -62,6 +65,7 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
private InputAwareLayout container;
private ImageView avatar;
private EditText name;
private EditText overridenName;
private MediaKeyboard emojiDrawer;
private EditText statusView;
@@ -201,16 +205,28 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
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);
this.overridenName = ViewUtil.findById(this, R.id.overriden_name);
this.emojiDrawer = ViewUtil.findById(this, R.id.emoji_drawer);
this.container = ViewUtil.findById(this, R.id.container);
this.statusView = ViewUtil.findById(this, R.id.status_text);
if (fromWelcome) {
String addr = DcHelper.get(this, "addr");
loginSuccessText.setText(R.string.set_name_and_avatar_explain);
if (DcHelper.getContext(this).isCommunity()) {
ViewUtil.findById(this, R.id.community_user_container).setVisibility(View.VISIBLE);
loginSuccessText.setText(R.string.community_set_name_explain);
ViewUtil.findById(this, R.id.avatar_and_name).setVisibility(View.GONE);
} else {
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);
} else {
if (DcHelper.getContext(this).isCommunity()) {
ViewUtil.findById(this, R.id.community_user_container).setVisibility(View.VISIBLE);
ViewUtil.findById(this, R.id.information_label).setVisibility(View.GONE);
((TextInputLayout)ViewUtil.findById(this, R.id.name)).setHint(R.string.community);
((TextInputLayout)ViewUtil.findById(this, R.id.status_text_layout)).setHint(R.string.description);
}
loginSuccessText.setVisibility(View.GONE);
}
}
@@ -221,6 +237,10 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
name.setText(profileName);
name.setSelection(profileName.length(), profileName.length());
}
DcContext dcContext = DcHelper.getContext(this);
if (dcContext.isCommunity()) {
overridenName.setText(dcContext.getCommunityUser());
}
}
private void initializeProfileAvatar() {
@@ -274,16 +294,22 @@ public class CreateProfileActivity extends BaseActionBarActivity implements Emoj
}
private void updateProfile() {
if (TextUtils.isEmpty(this.name.getText())) {
boolean isCommunity = DcHelper.getContext(this).isCommunity();
if (TextUtils.isEmpty(this.name.getText()) && !(isCommunity && fromWelcome)) {
Toast.makeText(this, R.string.please_enter_name, Toast.LENGTH_LONG).show();
return;
}
final String name = this.name.getText().toString();
final String ovName = this.overridenName.getText().toString().trim();
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
Context context = CreateProfileActivity.this;
if (isCommunity) {
DcHelper.getContext(context).setCommunityUser(ovName);
}
DcHelper.set(context, DcHelper.CONFIG_DISPLAY_NAME, name);
setStatusText();
@@ -1,10 +1,14 @@
package org.thoughtcrime.securesms;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import android.webkit.WebResourceResponse;
import android.webkit.WebSettings;
import android.webkit.WebView;
import androidx.appcompat.app.AlertDialog;
@@ -24,6 +28,7 @@ public class FullMsgActivity extends WebViewActivity
{
public static final String MSG_ID_EXTRA = "msg_id";
public static final String BLOCK_LOADING_REMOTE = "block_loading_remote";
private String imageUrl;
private int msgId;
private DcContext dcContext;
private Rpc rpc;
@@ -46,6 +51,7 @@ public class FullMsgActivity extends WebViewActivity
protected void onCreate(Bundle state, boolean ready) {
super.onCreate(state, ready);
registerForContextMenu(webView);
blockLoadingRemote = getIntent().getBooleanExtra(BLOCK_LOADING_REMOTE, false);
loadRemoteContent = !blockLoadingRemote && Prefs.getAlwaysLoadRemoteContent(this);
webView.getSettings().setBlockNetworkLoads(!loadRemoteContent);
@@ -77,6 +83,41 @@ public class FullMsgActivity extends WebViewActivity
loadHtmlAsync(new WeakReference<>(this));
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
if (v instanceof WebView) {
WebView.HitTestResult result = ((WebView) v).getHitTestResult();
if (result != null) {
int type = result.getType();
if (type == WebView.HitTestResult.IMAGE_TYPE || type == WebView.HitTestResult.SRC_IMAGE_ANCHOR_TYPE) {
imageUrl = result.getExtra();
if (!imageUrl.startsWith("data:")) {
super.onCreateContextMenu(menu, v, menuInfo);
this.getMenuInflater().inflate(R.menu.web_view_context, menu);
menu.setHeaderIcon(android.R.drawable.ic_menu_gallery);
menu.setHeaderTitle(imageUrl);
menu.findItem(R.id.action_export_image).setVisible(false);
}
}
}
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_export_image:
// TODO: extract image from "data:" link or download URL
return true;
case R.id.action_copy_link:
Util.writeTextToClipboard(this, imageUrl);
Toast.makeText(this, getString(R.string.copied_to_clipboard), Toast.LENGTH_SHORT).show();
return true;
default:
return super.onContextItemSelected(item);
}
}
private static void loadHtmlAsync(final WeakReference<FullMsgActivity> activityReference) {
Util.runOnBackground(() -> {
try {
@@ -17,6 +17,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.loader.app.LoaderManager;
import com.b44t.messenger.DcChat;
@@ -220,7 +221,22 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
updateGroup(groupName);
} else {
verified = !broadcast && allMembersVerified();
createGroup(groupName);
if (verified && getAdapter().getContacts().size() == 1) {
new AlertDialog.Builder(this)
.setMessage(R.string.create_verified_group_ask)
.setNeutralButton(R.string.learn_more, (d, w) -> DcHelper.openHelp(this, "#e2eeguarantee"))
.setPositiveButton(R.string.yes, (d, w) -> {
createGroup(groupName);
})
.setNegativeButton(R.string.no, (d, w) -> {
verified = false;
createGroup(groupName);
})
.setCancelable(true)
.show();
} else {
createGroup(groupName);
}
}
return true;
@@ -50,7 +50,6 @@ 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;
@@ -330,7 +329,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
privacyPolicyBtn.setText(getString(R.string.qrlogin_ask_login, providerHost));
} else {
signUpBtn.setText(R.string.instant_onboarding_create);
privacyPolicyBtn.setTextColor(getResources().getColor(R.color.delta_accent));
privacyPolicyBtn.setTextColor(getResources().getColor(R.color.def_accent));
if (DEFAULT_CHATMAIL_HOST.equals(providerHost)) {
privacyPolicyBtn.setText(getString(R.string.instant_onboarding_agree_default2, providerHost));
} else {
@@ -373,7 +372,6 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
progressUpdate((int)progress);
} else if (progress==1000/*done*/) {
DcHelper.getAccounts(this).startIo();
dcContext.assumeSingleDevice();
progressSuccess();
}
}
@@ -396,7 +394,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
Intent intent = new Intent(getApplicationContext(), ConversationListActivity.class);
intent.putExtra(ConversationListActivity.FROM_WELCOME, true);
startActivity(intent);
finishAffinity();
finish();
}
public static void maybeShowConfigurationError(Activity activity, String data2) {
@@ -474,16 +472,12 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
DcHelper.getEventCenter(this).captureNextError();
new Thread(() -> {
if (!dcContext.setConfigFromQr(qrCode)) {
Util.runOnMain(() -> {
progressError(dcContext.getLastError());
});
return;
}
DcHelper.getAccounts(this).stopIo();
dcContext.configure();
}).start();
if (!dcContext.setConfigFromQr(qrCode)) {
progressError(dcContext.getLastError());
return;
}
DcHelper.getAccounts(this).stopIo();
dcContext.configure();
}
private class AvatarSelectedListener implements AvatarSelector.AttachmentClickedListener {
@@ -127,27 +127,21 @@ public class LogViewFragment extends Fragment {
return logFile;
}
private static String grabLogcat(LogViewFragment fragment) {
private static String grabLogcat() {
try {
final Process process = Runtime.getRuntime().exec("logcat -v threadtime -d");
final Process process = Runtime.getRuntime().exec("logcat -v threadtime -d -t 1000");
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) {
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);
}
line = line.replaceFirst(" (\\d+) D ", " $1 \uD83D\uDFE2 ");
log.append(line);
log.append(separator);
}
return log.toString();
} catch (Exception e) {
@@ -168,7 +162,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" + grabLogcat(fragment);
buildDescription(fragment) + "\n" + grabLogcat();
}
@Override
@@ -104,7 +104,6 @@ public abstract class MessageSelectorFragment
}
SaveAttachmentTask saveTask = new SaveAttachmentTask(getContext());
saveTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, attachments);
if (actionMode != null) actionMode.finish();
}
protected void handleShowInChat(final DcMsg dcMsg) {
@@ -81,6 +81,11 @@ public class NewConversationActivity extends ContactSelectionActivity {
startActivity(shareIntent);
finish();
}
} else if(scheme != null && scheme.startsWith("http")) {
Intent shareIntent = new Intent(this, ShareActivity.class);
shareIntent.putExtra(Intent.EXTRA_TEXT, uri.toString());
startActivity(shareIntent);
finish();
}
}
}
@@ -7,12 +7,6 @@ import android.content.Intent;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
@@ -21,6 +15,13 @@ import android.view.ViewGroup;
import android.view.Window;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader;
import androidx.recyclerview.widget.RecyclerView;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcMsg;
@@ -179,7 +180,7 @@ public class ProfileDocumentsFragment
}
if (dcMsg.getType() == DcMsg.DC_MSG_WEBXDC) {
WebxdcActivity.openWebxdcActivity(context, dcMsg);
DcHelper.openWebxdc(context, dcMsg);
} else {
DcHelper.openForViewOrShare(getActivity(), dcMsg.getId(), Intent.ACTION_VIEW);
}
@@ -334,7 +334,7 @@ public class ProfileSettingsAdapter extends RecyclerView.Adapter
itemData.add(new ItemData(ItemData.CATEGORY_INFO, INFO_LAST_SEEN, lastSeenTxt, 0, 0));
itemData.add(new ItemData(ItemData.CATEGORY_INFO, INFO_SEND_MESSAGE_BUTTON, context.getString(R.string.send_message), R.color.delta_accent, 0));
itemData.add(new ItemData(ItemData.CATEGORY_INFO, INFO_SEND_MESSAGE_BUTTON, context.getString(R.string.send_message), R.color.def_accent, 0));
}
itemDataStatusText = dcContact.getStatus();

Some files were not shown because too many files have changed in this diff Show More