Compare commits

...

2290 Commits

Author SHA1 Message Date
genofire aa8b9f338f fix usage directTLS of manuelle enter an address 2021-12-11 16:42:31 +01:00
genofire 658c1c58d5 Merge remote-tracking branch 'upstream/master' into develop 2021-11-25 21:20:44 +01:00
genofire 39792f0815 fix Language merge 2021-11-20 22:37:21 +01:00
Daniel Gultsch db834a1f07 indicate call reconnect in notification 2021-11-19 12:26:11 +01:00
Daniel Gultsch f8a94161db don't play tone going from connect->reconnect->connect 2021-11-19 12:25:27 +01:00
Daniel Gultsch 5d526a77e3 include uncertainty into shared geo uri 2021-11-18 11:24:10 +01:00
Daniel Gultsch a508a81553 externalize rtc config generation into seperate method 2021-11-17 11:33:15 +01:00
Daniel Gultsch 61fb38cd84 clean up some error handling error ICE restarts 2021-11-17 10:49:16 +01:00
Daniel Gultsch 1bf2d5dd8f video calls: leave full screen mode during reconnect 2021-11-16 22:01:48 +01:00
Daniel Gultsch 0a18c8613f assume credentials are the same for all contents when restarting ICE 2021-11-16 17:08:34 +01:00
Daniel Gultsch abb671616c synchronize setDescription calls 2021-11-16 15:17:12 +01:00
Daniel Gultsch 297a843b9c use implicit rollback (needed to be enabled on libwebrtc) 2021-11-16 13:17:10 +01:00
Daniel Gultsch 0698fa0d8c store peer dtls setup for later use in ice restart 2021-11-16 11:21:11 +01:00
Daniel Gultsch 70b5d8d81a set proper peer dtls setup on ice restart received 2021-11-15 21:49:31 +01:00
Daniel Gultsch 0a3947b8e3 terminate with application failure when failing to apply ICE restart
This is fairly unlikely to happen in practice
2021-11-15 17:18:45 +01:00
Daniel Gultsch 3f402b132b respond with tie-break to prevent ICE restart race 2021-11-15 13:03:04 +01:00
Daniel Gultsch 5b80c62a63 treat transport-info w/o candidates and changed credentials as offer 2021-11-14 18:22:18 +01:00
Daniel Gultsch 717c83753f delay discovered ice candidates until JingleRtpConnection is ready to receive
otherwise setLocalDescription and the arrival of first candidates might race
the rtpContentDescription being set
2021-11-11 21:02:17 +01:00
Daniel Gultsch b6dee6da6a reverse: webrtc: include oldState in onConnectionChange
turns out we don’t need it and a better way is for RtpConnection to keep track of *all*
states in the current generation
2021-11-11 17:05:36 +01:00
Daniel Gultsch 9c3f55bef2 use stopwatch to keep track of jingle rtp session duration 2021-11-11 16:52:18 +01:00
Daniel Gultsch 9843b72f6f always use Camera2Enumerator 2021-11-11 15:23:45 +01:00
Daniel Gultsch 61851e5f84 do not automacially hang up failed webrtc sessions 2021-11-11 14:40:15 +01:00
Daniel Gultsch 4ec0996dff webrtc: include oldState in onConnectionChange 2021-11-11 11:19:37 +01:00
genofire fa1363cea0 Merge tag '2.10.2' into develop 2021-11-11 00:28:16 +01:00
Daniel Gultsch fda45a7c86 use implicit descriptions for WebRTC
using the parameter-free form of setLocalDescription() solves some potential race conditions
that can occur - especially once we introduce restartIce()
2021-11-10 16:40:24 +01:00
Daniel Gultsch b5786787f0 bump libphone number library 2021-11-09 14:27:26 +01:00
Daniel Gultsch d4cbf2e11e take intent type into account when sharing with conversations 2021-11-07 11:35:00 +01:00
Daniel Gultsch 7d7e158fd7 code clean up for LocationProvider 2021-11-03 16:00:26 +01:00
Daniel Gultsch a8ff88398d version bump to 2.10.2 + changelog 2021-11-03 15:59:05 +01:00
Daniel Gultsch bae9fc45c2 make rtcpMux optional 2021-10-31 10:20:58 +01:00
Daniel Gultsch ba4a47204b fixed IndexOutOfBounds when rendering quotes 2021-10-31 10:20:34 +01:00
Daniel Gultsch 226eb739bd make custom 'xmpp' protocol in address book case insensitve
fixes #4215
2021-10-31 08:35:44 +01:00
Daniel Gultsch 869a135bab bump okhttp 2021-10-20 10:19:59 +02:00
Daniel Gultsch 7ddd60d314 bump jxmpp. fix crash in magic create when entering @ 2021-10-20 10:19:46 +02:00
Daniel Gultsch 2ca00265db bump speed dial version to something that uses AndroidX 2021-10-20 09:52:10 +02:00
Daniel Gultsch e0c4964cc2 bump gradle plugin version 2021-10-14 17:32:07 +02:00
Daniel Gultsch 3706981645 fix mime type detection in urls that have query params or an anchor 2021-10-14 17:30:55 +02:00
genofire a124b3df9a metadata: add changelog 2.10.1 2021-10-13 18:19:29 +02:00
genofire 5a7bae592d Merge tag '2.10.1' into develop 2021-10-13 18:14:50 +02:00
Daniel Gultsch 6d2e406ee5 attempt to parse Link header from https url scanned from welcome screen 2021-10-07 09:48:49 +02:00
Daniel Gultsch cc489ef7bf bump version code 2021-10-06 12:33:36 +02:00
Daniel Gultsch 495537d087 minor code cleanup in UriHandlerActivity 2021-10-06 12:18:58 +02:00
Daniel Gultsch 20e4d108d4 fixed regression of not handling jingle content map parsing failures 2021-10-05 15:43:05 +02:00
Daniel Gultsch d0af5a002e leave code comment about xmpp vs jabber vcard entry 2021-10-04 15:18:37 +02:00
Daniel Gultsch 86de21f6a8 allow encrypted backups. fixes #4190 2021-10-04 14:17:01 +02:00
Daniel Gultsch e664a27cd0 fix typo in action matcher 2021-10-03 18:51:18 +02:00
Daniel Gultsch 4a6df90f0c attempt to read both jabber and xmpp IM fields from address book 2021-10-03 17:26:24 +02:00
Daniel Gultsch fdaab1c27e remove unused import in favor of fqn 2021-10-03 17:01:51 +02:00
Daniel Gultsch f8c59a7b75 support imto://xmpp intents 2021-10-03 17:01:32 +02:00
Daniel Gultsch f182fe6697 use PM on direct reply if last message in notifacation stack is PM 2021-10-03 16:38:30 +02:00
Daniel Gultsch daf1bbfca5 bump version code 2021-10-02 19:49:18 +02:00
Daniel Gultsch b8eec6ae5b pulled translations from transifex 2021-10-02 16:59:39 +02:00
Daniel Gultsch 3ede2d00bd remove logging 2021-10-02 16:54:19 +02:00
Daniel Gultsch d2a387e82f correctly calculate socks destination 2021-10-02 16:44:36 +02:00
Daniel Gultsch da14f83a42 ensure all bytes are read in socks handshake. fixes #4188 2021-10-02 14:24:36 +02:00
Daniel Gultsch 586fff5485 Quicksy: theme choose country activity 2021-09-29 10:51:25 +02:00
Daniel Gultsch ea9b73c1fe Quicksy: fix drawables not being styled in enter phone number screen 2021-09-29 10:42:26 +02:00
Daniel Gultsch e791e19265 ignore non letters when parsing action from xmpp uri 2021-09-27 11:15:56 +02:00
Daniel Gultsch 3de8147b41 pulled translations from transifex 2021-09-27 10:48:04 +02:00
Daniel Gultsch b9ceb67104 version bump to 2.10.1 + changelog 2021-09-24 09:25:27 +02:00
Daniel Gultsch 90a0d36362 fix not recognizing message as download. fixes #4178 2021-09-24 09:15:21 +02:00
Daniel Gultsch bd4d939a29 backport requireActivity method 2021-09-21 11:55:37 +02:00
Daniel Gultsch 64a6edd3fb Revert "Migrate Fragments to AndroidX"
This reverts commit 231d97ea81.

Migrating to AndroidX Fragments seems to have some unforseen side effects
and no clear benefits
2021-09-21 11:41:35 +02:00
Daniel Gultsch 75c20a7a2b handle on-device contacts with unstable system uri
on device contacts (contacts not synced) have an unstable system uri.
For quicksy.im contacts we can identify the contact based on the phone number
instead.

fixes #4174
2021-09-21 10:20:23 +02:00
Daniel Gultsch d5994a8d65 add to address book should add phone number for Quicksy+quicksy.im
fixes #4165
2021-09-21 10:19:09 +02:00
Daniel Gultsch 572b9c2dc6 pulled translations from transifex 2021-09-20 11:29:35 +02:00
Daniel Gultsch f9f994c540 Intent.EXTRA_ALLOW_MULTIPLE is now supported by minSdk 2021-09-20 10:08:11 +02:00
Daniel Gultsch ba9596b37d catch rare exception around execute pending fragment transactions 2021-09-20 10:07:38 +02:00
Daniel Gultsch b01bca74fd fix some linter warnings 2021-09-20 09:54:42 +02:00
Daniel Gultsch bfc8668803 bump appcompat version 2021-09-20 09:27:40 +02:00
Alexei Sorokin 951d84f404 make sure messages_index is always cleaned up fully. fixes #4170 2021-09-20 06:26:35 +00:00
Ashique Bava 231d97ea81
Migrate Fragments to AndroidX 2021-09-20 06:22:55 +00:00
Daniel Gultsch 73000962fe bump transcoder version
fixes #4167
2021-09-15 21:54:03 +02:00
Daniel Gultsch 3075833ab3 swap out transcoder library
the transcoder library we used hasn’t been updated in years

this commit switches to a maintained fork https://natario1.github.io/Transcoder/
2021-09-15 11:38:06 +02:00
Geno eba5dd8654 metadata: add changelog 2.10.0 2021-09-13 00:04:35 +02:00
Geno abe3718353 Merge tag '2.10.0' into develop 2021-09-13 00:02:16 +02:00
Daniel Gultsch 3f315751a1 version bump to 2.10.0 2021-09-11 10:28:34 +02:00
Daniel Gultsch 68d8e2b9cf delete targe file after unsuccessful image compression 2021-09-11 09:55:44 +02:00
Daniel Gultsch c195e8b3d2 run file observer on its own thread. fixes #4164 2021-09-10 19:07:57 +02:00
Daniel Gultsch 25f137441b catch security exception when viewing file from media preview 2021-09-10 18:46:37 +02:00
Daniel Gultsch d436c5f856 catch exception when trying to read display name. fixes #4163 2021-09-10 18:46:10 +02:00
Daniel Gultsch 8d9c51d755 pulled translations from transifex 2021-09-10 10:25:31 +02:00
Daniel Gultsch 2957bccb33 Revert "Fixing trailing characters treated as part of URI error (#3938)."
This reverts commit 8d45cc5827.
2021-09-08 21:30:21 +02:00
Daniel Gultsch 3135550b83 pulled translations from transifex 2021-09-08 20:53:11 +02:00
Millesimus 4d36231fa5 >.< should be quoteable (bugfix). 2021-09-08 16:29:01 +00:00
Millesimus dfeeaff74c >.< should not be rendered as quote (bugfix). 2021-09-08 16:29:01 +00:00
Daniel Gultsch 5a9777f7f1 version bump to 2.10.0-beta.2 + changelog 2021-09-08 11:13:22 +02:00
Daniel Gultsch 63f5f8c89d modify TODOs in JingleRtpConnection upon better understanding of the WebRTC stack 2021-09-08 10:47:34 +02:00
Millesimus ca08c27eef Parse IPv6 URIs (#3841). 2021-09-07 15:14:09 +00:00
Millesimus 4040d5f647 Treat dollar signs as URI chars (fixing #3859). 2021-09-07 15:14:09 +00:00
Millesimus 8d45cc5827 Fixing trailing characters treated as part of URI error (#3938). 2021-09-07 15:14:09 +00:00
Daniel Gultsch 96f0a09a5d pulled translations from transifex 2021-09-07 16:56:24 +02:00
Maximilian Weiler 38a77dbba6 Fix ImportBackupActivity not covered by screenshot prevention feature 2021-09-07 14:50:50 +00:00
Daniel Gultsch 8b817b3bd8 add database migration for new fts scheme 2021-09-07 16:47:40 +02:00
Alexei Sorokin 754773be55 match messages from the full-text index by rowid
"uuid" is a primary key in "messages" but not in "messages_index",
the implication of that is very slow matching by UUID.

What can be done instead is matching messages_index.rowid to messages.rowid,
that is, an always-present clustered index.

This not only improves performance of full-text search but also of just
updating messages in any shape or form.
2021-09-07 16:19:49 +02:00
Alexei Sorokin 4f362aafac make the fulltext index for search more space-efficient
It now uses the data from the messages table instead of having a copy of each
message.

The message UUIDs are no longer part of the index.
2021-09-07 16:19:40 +02:00
Daniel Gultsch ea0dc558cb use androidx ExifInterface to parse rotation. fixes #4154 2021-09-05 16:29:24 +02:00
Daniel Gultsch 80d8b6dd88
Upload APKs after CI 2021-08-27 07:47:55 +00:00
Daniel Gultsch 2819545a43 click on action bar title should open chat details screen 2021-08-25 20:04:47 +02:00
Daniel Gultsch 9526456d75 pulled translations from transifex 2021-08-25 18:57:20 +02:00
Daniel Gultsch f975b5ddac executePendingTransactions before trying to access secondary_fragment
If we don’t executePendingTransactions we might still access the overview fragment
while a replacement operation is in the works. This will lead to two
conversationfragments opening.
2021-08-25 18:54:03 +02:00
Daniel Gultsch 581eb511b9 version bump to 2.10.0-beta 2021-08-24 18:48:50 +02:00
Daniel Gultsch af42e34654 Revert "Always show Quote as last action"
This reverts commit e528b9f5df.

I was originally convinced by the argumentation (quote always in same place)
but testing this out for a while really seems to break 'last correct' for me.

I use that way more frequently that quote
2021-08-24 16:53:23 +02:00
Daniel Gultsch 0495470ca8 pulled translations from transifex 2021-08-24 15:32:10 +02:00
Daniel Gultsch 6c88a4b4fa reset affiliation when inviting someone not currently in group. fixes #4146 2021-08-24 14:42:50 +02:00
Daniel Gultsch 88d7ddf124 PIP aspect ratio should match video aspect ratio. fixes #4077 2021-08-24 14:40:12 +02:00
Daniel Gultsch e6d8bee035 stop agp7 complaining about missing proguard rules 2021-08-24 13:33:19 +02:00
Daniel Gultsch 208c9d91db dexOptions is no longer used in agp7 2021-08-24 13:02:31 +02:00
Licaon_Kter bf3c1d573b Avoid description repetition screenshots 2021-08-24 11:00:43 +00:00
Daniel Gultsch 4e90c0dbbb
Update android.yml to download webrtc 2021-08-24 09:21:17 +00:00
Daniel Gultsch caefec2fbf
Create android.yml 2021-08-24 09:19:08 +00:00
Daniel Gultsch 339ee8f6ea bump libwebrtc version to m92 2021-08-24 11:15:50 +02:00
Daniel Gultsch b00b8996d5 bump gradle version and agp 2021-08-24 10:13:03 +02:00
Maximilian Weiler 06fbb06aee Remove unused import 2021-08-24 07:15:30 +00:00
Maximilian Weiler ef8f10cc13 Optionally prevent taking screenshots
- Add setting to prevent screenshots
- Enforce using FLAG_SECURE in onResume for each activity
2021-08-24 07:15:30 +00:00
Millesimus b6fe1898e7 Minor duplication fix. 2021-08-24 07:14:34 +00:00
Millesimus 955a6f3fe1 Bugfix for 6cc06bcb98acc05c7677c642adf8ded90ffc8372. 2021-08-24 07:14:34 +00:00
Millesimus a0529a4e1e On quoting, translate French quotes to XEP-0393 quotes. 2021-08-24 07:14:34 +00:00
Millesimus 2db2ca95ce Move differentiation between XEP-0393 quotes and French quotes to QuoteHelper. 2021-08-24 07:14:34 +00:00
Millesimus a0bca08997 Rewrite QuoteHelper to integrate French quotes logics. Also reallow QuoteChars not followed by whitespace as indicated in XEP-0393. 2021-08-24 07:14:34 +00:00
Millesimus 748443cd4e Fixing message preview. 2021-08-24 07:14:34 +00:00
Millesimus 3921f3a940 QUOTING_MAX_DEPTH=1 for transitory compatibility with older versions. QUOTE_MAX_DEPTH=7 for performance testing and hiding of a rerendering bug occuring when two adjacent messages are merged. 2021-08-24 07:14:34 +00:00
Millesimus c81c8a62b3 Small refactoring for a more intuitive config. 2021-08-24 07:14:34 +00:00
Millesimus e850900b40 Quoting quotes, limited by nesting depth. 2021-08-24 07:14:34 +00:00
Millesimus 74d60d0131 Implement nested quotes through iteration. 2021-08-24 07:14:34 +00:00
Millesimus 65a72827bc New helper to help with quotes. 2021-08-24 07:14:34 +00:00
Millesimus 309082a9b3 Fixing xmpp:uri bug in channel details. #4139 2021-08-12 08:28:43 +00:00
Licaon_Kter e528b9f5df Always show Quote as last action 2021-08-12 08:28:36 +00:00
Daniel Gultsch 1e1dad780b add .opus file extension to mime table 2021-07-28 16:57:57 +02:00
Daniel Gultsch 0e54cde4bf add omemo media sharing to doap file 2021-07-23 08:04:36 +02:00
Alexei Sorokin b99f9d4f1c make search case-insensitive not only for ASCII 2021-05-26 06:16:20 +00:00
Daniel Gultsch 7466d12505 ring during device discovery 2021-05-22 19:37:20 +02:00
Daniel Gultsch 98ffadd87d log exception when file is not a ceb 2021-05-18 10:11:35 +02:00
Daniel Gultsch af33a57bf2 add description for text/plain 2021-05-17 16:00:00 +02:00
Daniel Gultsch 87f99d3570 Transferables interface needs to differentiate between 0 and null file size 2021-05-17 15:51:21 +02:00
Daniel Gultsch b025265f91 execute status code check on HEAD 2021-05-16 16:17:06 +02:00
Daniel Gultsch 0f3181555a FileParams indicate unavailable file size as null
since 0 is a valid file size we should use null to indicate absence
2021-05-16 15:32:57 +02:00
Daniel Gultsch 76fb0180d6 bump gradle plugin version 2021-05-16 15:29:45 +02:00
Daniel Gultsch e02aaed7d2 call SVGs 'vector graphic' instead of 'image' 2021-05-14 08:37:42 +02:00
Daniel Gultsch c9f1bdc551 fixup: update some libraries 2021-05-13 11:05:26 +02:00
Daniel Gultsch 2b9862adea update some libraries 2021-05-13 10:27:05 +02:00
Daniel Gultsch d91cd3e9e8 bump jxmpp-jid version 2021-05-13 09:19:16 +02:00
Geno e21d49efc8 Merge tag '2.9.13' into develop 2021-05-10 12:38:11 +02:00
Daniel Gultsch 56535e07ff show black bars in video call when video orientation doesn’t match screen orientation
fixes #4056
2021-05-10 09:24:20 +02:00
Dheeraj Chintaluri 60c5906fe9 Update libwebrtc version 2021-05-10 07:20:53 +00:00
Daniel Gultsch 67e5f839f1 ignore crypto callbacks when rtp session has already been terminated 2021-05-08 11:50:18 +02:00
Daniel Gultsch 89012b0f8b synchronize startRinging() to not create multiple vibrate futures 2021-05-08 11:49:24 +02:00
Daniel Gultsch 7476dccc0e do not fetch keys before making call 2021-05-08 11:21:33 +02:00
Daniel Gultsch 9182a300c5 report fingerprint missmatch as securiy exception 2021-05-08 10:35:07 +02:00
Daniel Gultsch faa4c87b5f build omemo session when encountering unknown on RTP proceed 2021-05-08 09:25:51 +02:00
Daniel Gultsch 8d391753d7 encrypt rtp map as future 2021-05-08 08:45:31 +02:00
Daniel Gultsch 337aa4a110 consider Config.REQUIRE_RTP_VERIFICATION on decrypt. fail as future 2021-05-07 22:55:20 +02:00
Daniel Gultsch ddf597e0d3 invoke x509 verification upon receiving prekey message in rtp session 2021-05-06 18:40:35 +02:00
Daniel Gultsch 9c16af25fb bump gradle version 2021-05-06 17:57:06 +02:00
Daniel Gultsch e2324209ed make sure omemo sessions are verified if the the respective config flag is set 2021-05-04 19:04:01 +02:00
Daniel Gultsch 9544b994dc invoke omemo trust/fetch activity when triggering phone call in require_verification mode 2021-05-04 17:52:17 +02:00
Daniel Gultsch 3b25fb9038 encrypt to inactive and untrusted devices in jingle
encrypting to untrusted devices means no degradition of security
compared to not encrypting at all. Trust status display (shield) is made
independently at a later stage.
2021-05-04 10:49:45 +02:00
Daniel Gultsch 48156dd27f a/v calls: seperate out SECURITY error from APP_FAILURE
until now problems with verifying the call (omemo or DTLS missing) would
just be another app failure. This commit displays verifications problems as
their own thing.
2021-05-04 10:10:34 +02:00
Daniel Gultsch 905489e237 bump firebase-messaging libray version 2021-05-04 09:47:09 +02:00
Daniel Gultsch a5ad2b7fc6 version bump to 2.9.13 + changelog 2021-05-03 16:21:10 +02:00
Daniel Gultsch 5d3ad6e36b pulled translations from transifex 2021-05-03 13:14:09 +02:00
Daniel Gultsch 6d91551f59 use onAddTrack instead of deprecated onAddStream 2021-05-03 13:06:42 +02:00
Daniel Gultsch 0717f9ba18 upgrade libwebrtc to m90 and enable extmap-allow-mixed 2021-05-03 09:48:46 +02:00
Daniel Gultsch ac7855a332 show domains in manual cert accept dialog 2021-05-03 08:28:03 +02:00
Daniel Gultsch a40b82b85b version bump to 2.9.12 + changelog 2021-05-02 08:23:00 +02:00
Daniel Gultsch c5e90199c3 trigger registration dialog on roster;ibr=y only if no accounts are configured
fixes #4065
2021-04-30 11:32:42 +02:00
Daniel Gultsch 53908dd56e pulled translations from transifex 2021-04-30 11:00:03 +02:00
Daniel Gultsch 9d9514a091 Add User-Agent to all HTTP calls 2021-04-30 10:54:36 +02:00
Daniel Gultsch bc58fb0fbd Always verify hostname/domain
There might be corner cases where it is required to use self signed
certificates. However there should be no corner cases where it is
required to use a wrong domain name. This commit swaps out the
MemorizingHostnameVerifier that let users accept wrong domains with the
standard XmppDomainVerifier.

closes #4066
2021-04-30 09:55:22 +02:00
Daniel Gultsch ec061bedc1 always show contact permission explain dialog on Quicksy
Until now Conversations and Quicksy would only disply the dialog that explains
why we want contact read permissions after the user rejected the request once

(following Android design guidelines and `shouldShowRequestPermissionRationale()`)

However for PlayStore policy this is no longer enough and the app needs to
explain and ask for consent before starting to upload the data.

This commit now displays the explain dialog immediately before asking for the
first time.
2021-04-24 08:20:30 +02:00
Geno a7f4abbab5 Merge tag '2.9.11' into develop 2021-04-20 12:08:34 +02:00
Daniel Gultsch f9b292fd6a version bump to 2.9.11 + changelog 2021-04-18 18:46:05 +02:00
Daniel Gultsch 8aed588405 ensure vibration future is canceled when scheduling a new one 2021-04-18 16:09:36 +02:00
Daniel Gultsch ea2acc2963 use new hasInternet() API only on Android Q+
some VPN apps are broken on Android 7.1 (and below?)

fixes #4058
2021-04-18 15:47:31 +02:00
Daniel Gultsch 2760f07307 disable read timeout for HTTP Upload
fixes #4057
2021-04-18 15:46:47 +02:00
Daniel Gultsch ec22a39538 link to help.conversations.im from feature list in readme
fixes #4053
2021-04-13 16:10:50 +02:00
Daniel Gultsch 331fd30699 version bump to 2.9.10 + changelog 2021-04-09 15:50:19 +02:00
Daniel Gultsch c469b2dc22 pulled translations from transifex 2021-04-09 15:50:11 +02:00
Daniel Gultsch 202bde46ed properly error out if upload fails. fixes #4052 2021-04-09 15:49:33 +02:00
Daniel Gultsch 37ce311764 do not attempt to play ringtone if none was found 2021-04-08 10:53:01 +02:00
Daniel Gultsch 9fc04c4b1e when receiving out-of-order session-init in terminal state do not move to terminal again
fixes #4049
2021-04-08 10:23:39 +02:00
Daniel Gultsch 5f020af2cc pulled translations from transifex 2021-04-08 09:34:16 +02:00
Daniel Gultsch 55b2f2656d fix HTTP up/download for users that dont trust system CAs 2021-04-08 08:56:58 +02:00
Daniel Gultsch fb681dfd60 ammend 2.9.9 changelog 2021-04-03 09:34:24 +02:00
Daniel Gultsch 5e59f20685 delete issue template and contributing guidelines
people with half a brain will implicitly follow those guidelines any way and
provide the information requested in the issue template.

The vast majority of people have ignored the issue template in the past anyway.
2021-04-03 09:32:24 +02:00
Daniel Gultsch 0fc191d004 migrate hasInternetConnection() to new api
Thank you to @ailicic for figuring out the new API.

Closes #4050
2021-03-29 10:58:15 +02:00
Daniel Gultsch 30c9e7399e log track class in onAddTrack 2021-03-29 10:57:56 +02:00
Geno 35e6c476dd Merge tag '2.9.9' into develop 2021-03-28 10:36:21 +02:00
Daniel Gultsch f632c7bbc9 version bump to 2.9.9 + changelog 2021-03-26 14:54:46 +01:00
Daniel Gultsch 08f27ddcf8 don’t show video call button if no camera is available 2021-03-26 14:04:36 +01:00
Daniel Gultsch 1822a71c2a Do not crash when receiving video call on device w/o camera
Upon accepting a video call on a device that can not establish a video track on
its own (for example by not having a camera), displaying the video enable/disable
button would fail. This commit defaults this button to disabled.
2021-03-26 12:54:26 +01:00
Daniel Gultsch 77f448692c catch security exception when reading file 2021-03-24 10:47:50 +01:00
Daniel Gultsch 9cc95d4cc2 pulled translations from transifex 2021-03-24 09:59:12 +01:00
Daniel Gultsch ff756647a9 clear dns cache on network switch 2021-03-23 21:03:58 +01:00
Daniel Gultsch 9a7fc3d9b8 disable omemo by default for *.covid.monal.im domains 2021-03-23 11:52:34 +01:00
Daniel Gultsch d37140ebf0 pulled translations from transifex 2021-03-23 11:48:17 +01:00
Daniel Gultsch d288f5bff2 version bump to 2.9.9-beta 2021-03-23 10:36:56 +01:00
Daniel Gultsch aad34783ad remove logging from needsUploading() 2021-03-22 19:05:46 +01:00
Daniel Gultsch 914ea9c398 use http proxy below android 7.1 2021-03-22 18:03:25 +01:00
Daniel Gultsch 02b16063c6 show popup dialog when backup has been started. fixes #4031 2021-03-22 15:40:22 +01:00
Daniel Gultsch 45c5f9aa90 bump okhttp version 2021-03-22 15:26:13 +01:00
Daniel Gultsch 4ac64f3a3b clean up code for posh cache 2021-03-22 15:15:35 +01:00
Daniel Gultsch 8b90c1c498 port POSH code to OkHttp 2021-03-22 14:32:31 +01:00
Daniel Gultsch 70fc08314f remove unused method 2021-03-22 11:14:35 +01:00
Daniel Gultsch ce7f59a76c use okhttp to fetch captcha 2021-03-22 10:39:53 +01:00
Daniel Gultsch 1cd95aefa6 migrate redirection urls to HttpUrl 2021-03-22 10:12:53 +01:00
Daniel Gultsch 739d20428a optimize imports 2021-03-21 21:39:04 +01:00
Daniel Gultsch 6ee2807027 bump gradle plugin 2021-03-21 21:18:33 +01:00
Daniel Gultsch a6244d986a use settable futures for slot requester 2021-03-21 20:45:26 +01:00
Daniel Gultsch 8ac97b0027 disable extmap_allow_mixed by default 2021-03-21 19:40:52 +01:00
Daniel Gultsch 7a115cb967 pulled translations from transifex 2021-03-21 19:36:21 +01:00
Daniel Gultsch d1195d21ae pulled translations from transifex 2021-03-20 11:58:43 +01:00
Daniel Gultsch 72828c6c4e fix 'checking file size' status display 2021-03-20 11:21:48 +01:00
Daniel Gultsch 38ef69a926 do not display toast for cancelled downloads 2021-03-20 11:00:20 +01:00
Daniel Gultsch aaac8296b3 only overwrite body in text messages 2021-03-19 19:51:13 +01:00
Daniel Gultsch e217551a82 migrate to OkHttp instead of HttpUrlConnection
OkHttp gives us more fine grained control over the HTTP library and frees us from any platform bugs
2021-03-19 14:57:20 +01:00
Daniel Gultsch b09a1432a3 Stanza.getErrorCondation only ever needs the tag name 2021-03-18 11:35:41 +01:00
Geno f161a9c4bf metadata: add changelog 2.9.8 2021-03-17 10:18:53 +01:00
Geno f8e69f9fc2 Merge tag '2.9.8' into develop 2021-03-17 10:17:05 +01:00
Daniel Gultsch 6f1b71970d parse extmap-allow-mixed 2021-03-16 18:52:38 +01:00
Daniel Gultsch 3baacf8862 switch to unified plan 2021-03-16 18:52:38 +01:00
Daniel Gultsch 9c2da0a1b8 upgrade libwebrtc to m89 2021-03-16 18:52:38 +01:00
Daniel Gultsch 2681ad82e1 complain if mLineIndex can not be found when receiving candidates 2021-03-16 18:52:25 +01:00
Daniel Gultsch 8764d11cce kill pending queries when archiving conversation 2021-03-16 10:22:52 +01:00
Daniel Gultsch 3c60de54cb minor code clean up 2021-03-16 08:16:07 +01:00
Daniel Gultsch d30a08266a
Fix typo in readme 2021-03-15 06:51:00 +00:00
Daniel Gultsch 859f3b2a1d fix NPE after race condition. fixes #4033 2021-03-13 11:13:19 +01:00
Daniel Gultsch bf25b24967 modify away when locked behaviour to locked || screen off
this new behaviour still takes care of not going online when quickly
checking for the time but it also includes systems that don’t have a
lock screen or incorrectly report being unlocked.
2021-03-13 10:52:06 +01:00
Daniel Gultsch 7c53dcc4f4 fixed NPE when service isnt bound 2021-03-13 10:51:41 +01:00
Daniel Gultsch bf9d1a5759 remove docs folder
* mission statement is now hosted on https://gultsch.de
* XEPs.md has been replaced by conversations.doap
* observations.md is just outdated and boring by now
2021-03-12 18:31:11 +01:00
Daniel Gultsch ddb54bb222 version bump to 2.9.8 + changelog 2021-03-11 10:37:29 +01:00
Daniel Gultsch 813b07e18d pulled translations from transifex 2021-03-09 09:58:33 +01:00
Daniel Gultsch 0fa06d65b5 overwrite body for plaintext group chat messages only 2021-03-07 09:59:09 +01:00
Daniel Gultsch e947a3f808 modify boyy on muc reflection 2021-03-06 12:43:59 +01:00
Daniel Gultsch b34f6e0720 null check weak reference value 2021-03-06 09:45:42 +01:00
Daniel Gultsch b8c61b795e use different top margin for vert and land for duration display 2021-03-06 09:45:13 +01:00
Daniel Gultsch cf68c544aa pulled translations from transifex 2021-03-06 08:58:28 +01:00
Christopher Vollick ef24d2050b Remove Renomination from WebRTC Options
This is a feature of WebRTC that's [not standardized][1] and only
supported by libwebrtc. Since there's no support in jingle for passing
this capability from one peer to another, we're currently hard-coding
this option into both the local candidate and also the remote candidate
so they can use it.

But I'm trying to call a user that isn't using WebRTC, and renomination
is causing the call to stay in "connecting..." state for 10 or 20
seconds, sometimes longer, while both sides wait for the other to
nominate something based on their individual beliefs about the standards
they're using.

Removing this seems to make connecting relatively instantaneous.

If we want to reintroduce this feature, we should probably make a XEP so
the peers can negotiate honestly about it, and only use it if both sides
truely support the feature.

[1]: https://datatracker.ietf.org/doc/html/draft-thatcher-ice-renomination-01
2021-03-04 08:26:52 +00:00
Daniel Gultsch 4a175f915d version bump to 2.9.8-beta 2021-03-04 09:25:20 +01:00
Daniel Gultsch 5848013a1e handle pre key messages in dtls verification 2021-03-03 14:03:08 +01:00
Daniel Gultsch c5f801c1fe do not push empty candidates to backlog 2021-03-03 13:12:10 +01:00
Daniel Gultsch d52c46d582 use omemo verification only if omemo is enabled in conversation 2021-03-03 12:55:27 +01:00
Daniel Gultsch e81fb1b24e pulled translations from transifex 2021-03-03 09:48:29 +01:00
Daniel Gultsch 3ee70b1d48 show verified shield in rtp session activity 2021-03-03 09:41:05 +01:00
Daniel Gultsch e4b2bb4a42 throw exception when unable to encrypt 2021-03-03 08:22:21 +01:00
Daniel Gultsch 8a6430ae29 ground work for omemo dtls verification 2021-03-02 21:13:49 +01:00
Geno a213b00091 Merge tag '2.9.7' into develop 2021-02-26 15:46:02 +01:00
Geno 64e88d946f fix crashes with internal database error 2021-02-26 14:46:41 +01:00
Daniel Gultsch 47a904b4fc pulled translations from transifex 2021-02-26 10:18:59 +01:00
Daniel Gultsch 33e73a2b47 bump version code for release 2021-02-24 12:18:14 +01:00
Daniel Gultsch d889c02a0a make ascii armor parsing more resiliant 2021-02-24 11:05:11 +01:00
Daniel Gultsch 073b6a998a pulled translations from transifex 2021-02-24 10:35:46 +01:00
Daniel Gultsch 9450d49b0b do not vibrate when in DND mode 2021-02-24 10:35:33 +01:00
Daniel Gultsch 5e0c158cde fix default ringtone for incoming call setting 2021-02-22 13:59:07 +01:00
Daniel Gultsch 16b1c561d4 pulled translations from transifex 2021-02-22 09:31:13 +01:00
Daniel Gultsch 24f2f52512 limit http upload / download to 4 parallel connections 2021-02-22 09:24:41 +01:00
Daniel Gultsch e98ec40b7f pulled translations from transifex 2021-02-21 14:15:33 +01:00
Daniel Gultsch f92ea5c70b resend <propose/> only if server has stream mgmt 2021-02-21 13:37:08 +01:00
Daniel Gultsch 81505c6202 version bump to 2.9.7-beta + changelog 2021-02-20 11:07:02 +01:00
Daniel Gultsch 638f30b902 pulled translations from transifex 2021-02-20 10:16:56 +01:00
Daniel Gultsch 0812bae1ab do not run alpha check on jpegs 2021-02-20 10:08:43 +01:00
Daniel Gultsch 6bfe16f044 replace away when screen off with away when locked
fixes #3978
2021-02-19 15:59:56 +01:00
Daniel Gultsch 53da64b7e2 do not attempt to play 'none' ringtone
trying to play 'none' ringtone resulted in the default ring tone being played
2021-02-19 15:31:01 +01:00
Daniel Gultsch ebb38d7d75 consume volume down event 2021-02-18 22:16:28 +01:00
Daniel Gultsch 484f633180 let Conversations (not Android) play ringtone and vibration
fixes #3972 fixes #3801 fixes #3931
2021-02-18 20:55:31 +01:00
Daniel Gultsch 78c89664c4 moved translations into new resource on transifex
the 'strings' resource on transifex was in the internal 'Android 1' format
instead of the more modern 'Android 2' format.

This according to transifex support caused some weird issues…

The only work around (apparently) was to create a new resource (now call
main-strings) and use that instead.

I hope we didn’t mess anything up in the process.

Let's be extra careful with the next release
2021-02-18 16:56:59 +01:00
Daniel Gultsch 90270069da pulled translations from transifex 2021-02-18 11:05:02 +01:00
Daniel Gultsch 49992f300b repharse omemo fingerprint description 2021-02-18 10:35:10 +01:00
Daniel Gultsch 72e268e6b1 add TODO comments wrt to missing <retract/> parsing 2021-02-18 09:36:51 +01:00
Daniel Gultsch 78901e3339 use detached signatures 2021-02-17 22:47:40 +01:00
Daniel Gultsch 149224a073 do not deduplicate disco queries
Conversations used to deduplicate disco queries based on their hash.
However that relies on the first query to go through (device to actually
respond) and to respond properly (hash matches).

Creating a proper retry behaviour for this is actually quite challanging.
(which one would you try next, how long do you wait?)
2021-02-17 18:14:18 +01:00
Daniel Gultsch db447f845e resend session proposal on rebind 2021-02-12 11:36:44 +01:00
Daniel Gultsch 6cab0ad496 make rtp proposal tracked by SM. fixes #3983 2021-02-12 10:35:13 +01:00
Daniel Gultsch 9f869d3895 slightly change wording of sync_with_contacts_long 2021-02-11 18:55:27 +01:00
Daniel Gultsch b808a03702 update dependencies
now that we have minSdk=21 we can bump retrofit and okhttp
2021-02-11 18:28:48 +01:00
Daniel Gultsch 7330d8a7f0 fixed race conditions around PROCEED state. fixes #3989 2021-02-11 16:56:57 +01:00
Daniel Gultsch 6e3dc0eef6 fix up for last commit. (re-add \n) 2021-02-11 09:05:29 +01:00
Geno 696f791dca release 2.9.6.1 : fix crashes with internal database error 2021-02-10 21:00:45 +01:00
Geno e101bd8ba2 fix sum7 translation 2021-02-10 21:00:45 +01:00
Daniel Gultsch 3847ab8465 paramaterize app name in more places 2021-02-10 15:56:02 +01:00
Daniel Gultsch deee31e517 pulled translations from transifex 2021-02-10 14:29:36 +01:00
mimi89999 ab17f935c3 Fix formatting of openkeychain_required_long message 2021-02-10 13:16:56 +00:00
mimi89999 d51b4380d7 Add variable app name in res strings
Closes #3988
2021-02-10 11:35:49 +00:00
Daniel Gultsch b6d62c13ef use ascii notation for punycode domains in SNI 2021-02-07 09:38:55 +01:00
Daniel Gultsch b76b60df5c verify against IDN variant of domain 2021-02-04 11:15:59 +01:00
Daniel Gultsch f82ae0a9b8 Merge branch 'maxim432-fix_leaks' 2021-01-31 10:13:35 +01:00
Daniel Gultsch 358c70828f close inputstream in image meta data analysers 2021-01-31 10:13:20 +01:00
maxim432 156c4da2b3 Fix couple of leaks 2021-01-30 17:56:54 -08:00
Daniel Gultsch ca496fd39f look at only subset of pixels to check for alpha 2021-01-30 01:50:03 +01:00
Daniel Gultsch 53a038d90e fix rtp offline discovery 2021-01-30 01:47:03 +01:00
Daniel Gultsch d77d89b356 mention in changelog that Android 5 is required 2021-01-30 00:37:09 +01:00
Daniel Gultsch 2155a50875 do not compress images with alpha channels 2021-01-29 21:25:00 +01:00
Daniel Gultsch 4a9dfb9567 fix copy url to clipboard action for undownloaded files 2021-01-28 17:49:34 +01:00
Daniel Gultsch 10382e83bf remove unused methods 2021-01-28 17:40:58 +01:00
Daniel Gultsch c11ac40df4 use 'missed call' as label for missed call status 2021-01-28 11:00:27 +01:00
Geno 3c8a5d138a Merge tag '2.9.6' into develop 2021-01-27 14:00:45 +01:00
Daniel Gultsch aee37c3e3e bump version code for release 2021-01-26 09:35:21 +01:00
Daniel Gultsch 0a2c753620 do not use offline fallback rtp capability if account is disabled 2021-01-26 09:35:03 +01:00
Daniel Gultsch d907d590d9 pulled translations from transifex 2021-01-26 08:39:26 +01:00
Daniel Gultsch 8e57a7622c use DayNight theme for splas screen
it doesn’t seem to be possible to make the splash screen use the configured
theme but we can follow the system’s theme on supported Android versions
2021-01-26 08:34:45 +01:00
Daniel Gultsch 8abf861303 version bump to 2.9.6 + changelog 2021-01-25 10:07:42 +01:00
Daniel Gultsch 247998ff81 add libwebrtc to library list 2021-01-24 08:38:56 +01:00
Daniel Gultsch 1068f16473 time flies 2021-01-24 08:29:38 +01:00
Daniel Gultsch 15a33adaae pulled translations from transifex 2021-01-24 08:27:27 +01:00
Daniel Gultsch 619af9c6c5 back button should not end call if call is connected. fixes #3975 2021-01-23 18:42:34 +01:00
Daniel Gultsch bc97d0b0bb pulled translations from transifex 2021-01-23 11:43:55 +01:00
Daniel Gultsch 9c9a953281 pluralize x_unread_conversations string 2021-01-23 11:25:22 +01:00
Daniel Gultsch 6a89a472e1 bump gradle plugin version 2021-01-23 10:09:34 +01:00
Daniel Gultsch 8ce7bfb95e automated code clean up 2021-01-23 09:25:34 +01:00
Daniel Gultsch 582aee4718 do not use empty display name for /me command 2021-01-22 12:51:01 +01:00
Daniel Gultsch 3b43cb0bda do not offer share button when file hasnt been downloaded. fixes #3971 2021-01-22 08:24:19 +01:00
Daniel Gultsch e711b3d294 remember last rtp capability 2021-01-22 08:24:19 +01:00
Daniel Gultsch e087b594ff do not include own phone number in sycn
fixes #3960
2021-01-22 08:24:19 +01:00
Daniel Gultsch b37f25335c version bump to 2.9.5 2021-01-22 08:24:19 +01:00
Daniel Gultsch 9c087b9dd4 pulled translations from transifex 2021-01-22 08:24:19 +01:00
Molly Miller ebbf1ff6b1 Use the account's display name (if set) when rendering /me messages in one-to-one chats. 2021-01-22 07:23:58 +00:00
Daniel Gultsch 20d0206859 pulled translations from transifex 2021-01-20 08:23:24 +01:00
Daniel Gultsch 9db0808306 show self contact with display name 2021-01-20 08:15:06 +01:00
Daniel Gultsch eea484af01 move SMS receiver into its own BroadcastReceiver 2021-01-20 08:14:36 +01:00
Daniel Gultsch 47d619b28e Quicksy: accept http status code 201 for account creation 2021-01-19 22:26:27 +01:00
Daniel Gultsch 60b23882fd fixed typo in travis file 2021-01-19 16:34:50 +01:00
Daniel Gultsch 47adf646c6 travis specificy all free build flavors 2021-01-19 16:03:11 +01:00
Daniel Gultsch 26a4598f3c automatically receive Quicksy SMS. fixes #3962
requires new version of QuicksyServer
2021-01-19 15:45:43 +01:00
Daniel Gultsch 624bb565a8 code clean up in tos activity 2021-01-19 13:53:47 +01:00
Daniel Gultsch 87e9b8037e request input focus in VerifyActivity 2021-01-19 13:31:49 +01:00
Daniel Gultsch 49d0558da1 fix tab height in StartConversation screen 2021-01-19 12:58:05 +01:00
Daniel Gultsch 6e5240fe2e more beans 2021-01-19 09:17:59 +01:00
Daniel Gultsch 260b203ea3 Revert "just xmpp things"
This reverts commit d0a2f1f45f.
2021-01-19 08:55:22 +01:00
Daniel Gultsch 864b0b3b3d Merge branch 'BlauerHunger-androidx_port' 2021-01-19 08:54:41 +01:00
Daniel Gultsch 91cc8f5011 bump various libraries that have been waiting for androidx 2021-01-18 21:49:31 +01:00
Ferdinand Pöll 453ca7c0ed Migrate from Android Support Library to AndroidX
Unignored gradle.properties since androidX requires additions there
See also https://developer.android.com/jetpack/androidx/migrate
2021-01-18 20:49:35 +01:00
Daniel Gultsch 5fd0700daa added XEPs for a/v calls to doap file 2021-01-18 09:32:36 +01:00
Daniel Gultsch 55fd0b8504 pulled translations from transifex 2021-01-18 09:32:20 +01:00
Geno d2cd482a07 Merge tag '2.9.4' into develop 2021-01-17 23:28:55 +01:00
Daniel Gultsch bfccfba00e fix in call notification being shown twice 2021-01-15 13:03:54 +01:00
Daniel Gultsch 5b48b4027e code clean up 2021-01-15 10:45:03 +01:00
Daniel Gultsch 41c045d779 pulled translations from transifex 2021-01-11 11:30:53 +01:00
Daniel Gultsch 07cc5c13ca version bump to 2.9.4 + changelog 2021-01-11 11:30:11 +01:00
Daniel Gultsch b0584137b4 pulled translations from transifex 2021-01-07 09:12:11 +01:00
Daniel Gultsch d0a2f1f45f just xmpp things 2021-01-06 11:46:09 +01:00
Daniel Gultsch 372ddbfb49 Revert "offline presences aborts session proposals. fixes #3943"
This reverts commit f23016c967.
2021-01-06 09:03:42 +01:00
Emmanuel Gil Peyrot 17c697eed9 add 'id' attribute to outgoing ICE-UDP candidates
this attribute is mandatory as per the XEP.
2021-01-03 16:32:28 +00:00
Daniel Gultsch 69dca53bf3 use libwebrtc-m87 2021-01-03 16:17:33 +01:00
Daniel Gultsch 6c2f0d29d8 use svg logo in doap file 2021-01-03 16:10:51 +01:00
Daniel Gultsch 2bec5459c5 properly null check ufrag and pwd before whitespace checking. fixes #3956 2021-01-03 16:05:17 +01:00
Daniel Gultsch 8eb685a7eb pulled translations from transifex 2021-01-02 09:09:23 +01:00
Daniel Gultsch 6d13ee52f0 version bump to 2.9.3 + changelog 2020-12-31 10:49:29 +01:00
Daniel Gultsch adb5a2b2c2 pulled translations from transifex 2020-12-31 10:41:14 +01:00
Daniel Gultsch 0569febf67 minor code clean up in XmppConnection class 2020-12-31 10:27:06 +01:00
Daniel Gultsch 0e54d8a2cf implement SCRAM-SHA512 2020-12-31 09:32:05 +01:00
Daniel Gultsch 2a57c92f63 rewrote scram cache implementation 2020-12-30 22:01:08 +01:00
Daniel Gultsch 692ee6c9fb SCRAM remove cache. made digest and hmac non static
DIGEST and HMAC were static variables. Those are initialized by
what ever concrete implementation gets executed first.

(Perform SCRAM-SHA1 first and those variables got initialized with
SHA1 variants)

For subsequent SHA256 executions those variables contained wrong
values.
2020-12-30 15:57:44 +01:00
Geno 1257ad8509 metadata: add changelog 2.9.2 2020-12-24 13:41:16 +01:00
Geno 1a0b4b441d Merge tag '2.9.2' into develop 2020-12-24 13:39:02 +01:00
Daniel Gultsch f23016c967 offline presences aborts session proposals. fixes #3943 2020-12-22 17:50:26 +01:00
Daniel Gultsch b4db2e5284 make ongoing call check null safe. fixes #3951 2020-12-22 14:30:54 +01:00
Daniel Gultsch 39229c34f6 cancel touch event after opening context menu in search view 2020-12-18 21:18:09 +01:00
Daniel Gultsch 090b3b18d0 don’t check for inRoster when doing jingle with oneself. fixes #3947 2020-12-11 14:25:56 +01:00
Daniel Gultsch d1490673bb work around race condition after opening easy invite dialog 2020-12-11 11:29:23 +01:00
Daniel Gultsch e38aa30a84 minor code clean up 2020-12-11 11:05:08 +01:00
Daniel Gultsch 00bc7a4b06 version bump to 2.9.2 + changelog 2020-12-10 19:32:40 +01:00
Daniel Gultsch f584179f2f store avatars in cache folder 2020-12-10 19:05:04 +01:00
Daniel Gultsch 07e965f8f3 pulled translations from transifex 2020-12-10 18:47:23 +01:00
Daniel Gultsch 9c67e8fec2 fix long pressing on a textview with link 2020-12-08 07:10:54 +01:00
Daniel Gultsch 849968107e remove unused CopyTextView
after removing the ability to select and copy text the transformation methods
provided by CopyTextView are no longer necessary.
2020-12-08 07:08:59 +01:00
Daniel Gultsch 7179d72f7e pulled translations from transifex 2020-12-07 16:14:25 +01:00
Daniel Gultsch 261207a4c0 ignore whitespace when trying to detect provisioning json
fixes #3940
2020-12-07 09:03:05 +01:00
Daniel Gultsch 303e205276 if file extension doesn’t exist. try to guess from content type. fixes #3939 2020-12-06 19:22:36 +01:00
Daniel Gultsch 99cb23fe14 share xmpp uri if landing url is not available 2020-12-06 17:57:55 +01:00
Daniel Gultsch 528f192f76 stop parsing random strings as xmpp addresses when scanning uris 2020-12-02 08:19:06 +01:00
Daniel Gultsch 778cfa846b implement stub easy onboarding activity for quicksy 2020-12-02 07:21:50 +01:00
Daniel Gultsch 00e1a93014 fixed typo in easy invites request code 2020-12-01 22:39:56 +01:00
Daniel Gultsch 1f392a688d initial (untested) support for easy onboarding invites 2020-12-01 20:31:30 +01:00
Daniel Gultsch 92083fec83 version bump to 2.9.1 2020-11-25 08:47:21 +01:00
Daniel Gultsch 35316ad93a pulled translations from transifex 2020-11-25 07:43:47 +01:00
Daniel Gultsch 3c7ac2524f update changelog file in preparation for 2.9.1 release 2020-11-16 12:54:40 +01:00
Daniel Gultsch 600f243797 pulled translations from transifex 2020-11-16 12:22:50 +01:00
Daniel Gultsch 36f5f77c30 disable autofill for password field when not in init mode
maybe fixes #3924
2020-11-16 12:08:10 +01:00
Daniel Gultsch c7ec6a9dae let media scanner scan backup file. fixes #3913
note that the ROMs I tested this on don’t require scanning for it
to appear on MTP. However it certainly don’t hurt either.
2020-11-15 10:43:21 +01:00
eta 0c563134da Enable the android:largeHeap flag
- With large accounts (such as mine), Conversations starts hitting up against
  the default heap limit pretty quickly, at which point it grinds to a halt as
  GC pause times increase.
- Furthermore, it's impossible to complete a backup with such an account, since
  Conversations will just run out of memory before the backup can complete.
- Enabling the `android:largeHeap` flag asks the OS for a bit more memory, which
  hopefully alleviates the problem for larger accounts.
2020-11-14 12:55:30 +00:00
Daniel Gultsch fc53271212 bump version to 2.9.1-beta 2020-11-14 12:01:43 +01:00
Daniel Gultsch 6485c77e09 pulled translations from transifex 2020-11-14 12:01:28 +01:00
Daniel Gultsch 1fafe4287d don’t send origin-ids to rooms that support stable-ids. fixes #3905 2020-11-14 11:59:35 +01:00
Daniel Gultsch 16c4e3eec7 keep conversation bold (unread) after responding to a call. fixes #3926 2020-11-14 09:55:43 +01:00
Daniel Gultsch afb2fb1326 use CoW data structure for read markers. fixes #3904 2020-11-13 20:37:32 +01:00
Daniel Gultsch 952387cb5a use lower margins on between in-call buttons on small displays
hopefully fixes #3890
2020-11-13 16:11:41 +01:00
Christoph Scholz 386b224123 fix escapeing in local channel discovery 2020-11-13 13:35:46 +00:00
Alexei Sorokin 501cdd5edf do not prepend asterisks before words in search
An asterisk is a special FTS4 operator when appended to a word but has no
special meaning when prepended.
2020-11-13 12:43:18 +00:00
Daniel Gultsch b327548c85 show toast if no application found to attach 2020-11-13 12:50:05 +01:00
Daniel Gultsch aaebb3a536 bump gradle and targetSdk 2020-11-13 12:24:42 +01:00
Daniel Gultsch 5ad054617b use instead of message id for receipt processing 2020-11-12 13:33:27 +01:00
Daniel Gultsch ff13cc2766 extracting chat state for chat with self should not cause markRead event. fixes #3906 2020-10-20 10:20:58 +02:00
Daniel Gultsch dc72bc5bc3 extend logging for not finding query 2020-10-08 20:21:53 +02:00
nico fdfac102e2 spelling
* various spelling fixes
2020-10-06 13:15:51 +00:00
eta 364502d1a3 Fix various memory leaks reported by LeakCanary
- In some places, we weren't nulling out references to destroyed objects. This
  fixes that.
- (These were all discovered via LeakCanary instrumentation, and the fixes are
  hopefully rather straightforward-looking.)
2020-10-05 11:33:29 +00:00
eta b4805ac2c5 Remove the ListSelectionManager / message body selection (fixes memory leak!)
- When the `viewHolder.messageBody` `TextView` created by a `MessageAdapter` is
  set to selectable, it leaks an `android.widget.Editor` (because that editor
  registers a view observer that never gets unregistered).
  - This memory leak is really quite problematic, as the message adapter is used
    a lot!
- Having the text be selectable is useless anyway, though; there isn't any way
  to select it (because long pressing just opens the context menu anyway).
  - It looks like the ListSelectionManager was meant to track selections across
    multiple messages. However, I'm not sure this feature ever gets used.
- Accordingly, this commit removes the entire feature, thus fixing the memory
  leak (since no `Editor` objects are ever created).
  - It should also reduce memory usage in general, since we aren't attaching an
    `Editor` to every single textview we create.
  - A `TextView` only allocates an `Editor` if you ask it to do certain things,
    like make the text selectable or register custom selection callbacks.
2020-10-05 11:33:12 +00:00
genofire 571cb5dd44 metadata: add changelog 2.9.0 2020-09-11 16:56:50 +02:00
genofire 06b2043b24 Merge commit 'v2.9.0' into develop 2020-09-11 16:53:56 +02:00
Daniel Gultsch afffe01868 add changelog for fastlane 2020-09-11 15:57:34 +02:00
Daniel Gultsch 0b4d12782b version bump to 2.9.0 2020-09-09 13:52:43 +02:00
Daniel Gultsch ce1b707837 pulled translations from transifex 2020-09-09 10:47:48 +02:00
Daniel Gultsch 7fb617e39a disable 'leave before join'
leaving a MUC before joining it was a work around for servers that did not treat a
<x/> join as a full join and didn’t send the full user list if they thought the user was
still in the room.
this happens if Conversations restarts after an inproper disconnect. The MUC will think
the user is still in the room.

however nowadays most modern servers will treat <x/> joins as full joins. on the user hand
leave before join would trigger flood prevention on ejabberds and race the first message
with the actual join (making the message arrive before the user is considered in the room)
2020-09-02 10:14:02 +02:00
Daniel Gultsch 9db0c85cda rename 'add to favorites' to 'pin to top' 2020-09-02 10:13:10 +02:00
Daniel Gultsch 27c89e487a restructure conversation menu
we don’t want 'manage accounts' and 'settings' to show up when within a conversation.
we also move out disable notifications and add to favorites into an overflow overflow
to make the menu shorter (after adding 'Search messages' it became very crowded)
2020-09-01 16:50:28 +02:00
Daniel Gultsch 73dac680e5 show notification if message failed to deliver. closes #3540 2020-09-01 14:04:38 +02:00
Daniel Gultsch 23ed0ce2ad upgrade libwebrtc to m85. fixes #3870 2020-09-01 11:42:00 +02:00
Daniel Gultsch aa792a3af6 pulled translations from transifex 2020-09-01 11:41:16 +02:00
Daniel Gultsch 8d64e101c9 provide content description for fab in start conversation 2020-08-31 18:06:24 +02:00
Daniel Gultsch 3281a93dc3 use content description for play/pause button in audio player 2020-08-31 17:42:03 +02:00
Daniel Gultsch 81985ca7d7 shorten 'close conversation' string 2020-08-31 17:33:37 +02:00
Daniel Gultsch f76ef17494 provide content descriptions for call screen 2020-08-31 17:30:54 +02:00
Daniel Gultsch 4b12033bd3 pulled translations from transifex 2020-08-31 17:12:41 +02:00
Daniel Gultsch ce81123112 use content description in search fields 2020-08-31 17:12:31 +02:00
Daniel Gultsch 2de8f3d35b change title of lock icon when changing encryption 2020-08-31 16:56:23 +02:00
Daniel Gultsch 97fe9fa01f parse error messages from MAM results 2020-08-31 14:38:48 +02:00
Daniel Gultsch 6590dc922f homogenize accessibility traversal in sent and received messages 2020-08-31 13:20:17 +02:00
Daniel Gultsch c48499253b set content description for all avatars 2020-08-31 13:05:10 +02:00
Daniel Gultsch 3c0773c6e7 use darker accent color in light theme 2020-08-31 11:19:27 +02:00
Daniel Gultsch 064264c20b parse 'received' carbon-copied error messages. fixes #3803 2020-08-31 11:06:26 +02:00
Daniel Gultsch 3dcb36a417 persist presence name (pep, nick in subscribe) to DB. fixes #3856 2020-08-31 09:03:54 +02:00
Daniel Gultsch 35af8894d2 search individual conversations. fixes #3243 2020-08-29 08:16:08 +02:00
genofire 2cd0993534 release 2.8.10.1 with security fix
update WebRTC to Version 1.0.32006 / M86
Vulnerability: https://googleprojectzero.blogspot.com/2020/08/exploiting-android-messengers-part-3.html
2020-08-28 17:31:24 +02:00
genofire 35e064949d build.grandle: update webrtc lib 2020-08-28 12:10:02 +02:00
genofire 8f5e3978e4 build.grandle: use targetSdkVersion 28 2020-08-28 11:26:36 +02:00
genofire 08449e34ec fix Resolver for ip direct and invalidHostname 2020-08-25 19:46:41 +02:00
Daniel Gultsch d158eeaf72 terminate jingle call when regular call starts 2020-08-24 12:47:54 +02:00
Daniel Gultsch 91e94db747 extend isBusyState to check phone state as well 2020-08-24 09:51:26 +02:00
Daniel Gultsch 15b323ee69 fix crash after session-accept failed and session-accept contained candidates
Conversations would attempt to feed any candidates found in the session-accept into
WebRTC; even if the session wasn’t setup correctly.

this commit processes the candidates only if the session was setup correctly

fixes #3867
2020-08-22 08:12:28 +02:00
Daniel Gultsch f3362ebde5 add start/install orbot to error notification if applicable. fixes #3846 2020-08-19 15:29:25 +02:00
Daniel Gultsch 70c10fd0de listen to orbot events instead of using intent result to reconnect account 2020-08-19 13:57:33 +02:00
Daniel Gultsch 1958cded23 improve logging for app server failures. change wording to include 'push' 2020-08-19 13:18:27 +02:00
Daniel Gultsch 7d2a7d536d fix attachments getting lost when switching to chat during call
fixes #3854
2020-08-05 21:31:56 +02:00
genofire ef7cbbadca metadata: fix version dump 2.8.10 2020-08-03 07:53:30 +02:00
genofire c9c37dfb04 Merge tag '2.8.10' into develop 2020-08-03 07:51:42 +02:00
Daniel Gultsch 59d7bb63e9 version bump to 2.8.10 2020-08-03 07:38:49 +02:00
Daniel Gultsch 129f43a349 verify hostname is valid before letting user save it 2020-08-01 15:03:20 +02:00
Daniel Gultsch 637c0cb15a fixed rare race condition when receiving transport info right after WebRTCWrapper closes
fixes #3849
2020-08-01 14:18:03 +02:00
Daniel Gultsch 1ae7d6be16 recover from pre-jingle connection states (discover etc) into full fledged jingle connection
fixes #3847
2020-08-01 09:50:54 +02:00
Daniel Gultsch f22e33e3ea fixed race condition of WebRTCWrapper being closed before transitioning into terminal state
JingleRTPConnection shuts down the WebRTCWrapper before transitioning into a terminal state.
(This allows us to make sure it is actually closed when reaching that state);
However that means that, when we get a UI redrawn inbetween closing and transitioning we might
still be in SESSION_ACCEPTED but with no PeerConnection. This traditionally has triggered
an IllegalStateException on getting the EndUserState.
This commit catches the ISE and returns 'ENDING' instead.
Chances are that this is only visibiliy for a very brief time in the UI before the transition
triggers the UI to redraw with the proper state.

fixes #3848
2020-08-01 08:20:10 +02:00
Daniel Gultsch 47e3504a02 remove stale bot configuration 2020-07-30 16:56:26 +02:00
Daniel Gultsch 5ecd250565 pulled translations from transifex 2020-07-30 13:02:25 +02:00
Daniel Gultsch f5f9075da2 FileObserver: start monitoring new directories when they are created 2020-07-30 12:55:19 +02:00
Daniel Gultsch e10b182d6b version bump to 2.8.10-beta + changelog 2020-07-27 17:21:09 +02:00
Daniel Gultsch 9cd4e1d581 show toast when correction fails 2020-07-26 17:03:51 +02:00
Daniel Gultsch 6941d5edd1 ignore IQ result when MAM query had been killed 2020-07-26 16:39:48 +02:00
Daniel Gultsch 1c66772202 rename DnD to Busy in settings. fixes #3839 2020-07-26 16:30:02 +02:00
Daniel Gultsch 9bec186292 ignore RTP session logs when looking for LMC. fixes #3843 2020-07-26 13:46:01 +02:00
Daniel Gultsch 8b26c60f00 update gradle plugin 2020-07-26 11:35:09 +02:00
Daniel Gultsch 16300727d1 try to guess mime type via extension in display name 2020-07-21 10:19:21 +02:00
Daniel Gultsch 28856aaf9f add icons for gpx files 2020-07-19 21:27:43 +02:00
Daniel Gultsch 32d55346cc ensure server triggered jingle iq-errors get routed properly 2020-07-18 16:14:39 +02:00
genofire 1b28ea9dda Merge tag '2.8.9' into develop 2020-07-18 13:38:12 +02:00
Daniel Gultsch 994fd9ecad restore backup in one transaction 2020-07-16 11:25:25 +02:00
Daniel Gultsch cb9623703d version bump to 2.8.9 + changelog 2020-07-13 17:35:06 +02:00
Daniel Gultsch fd68bfb8ca pulled translations from transifex 2020-07-13 17:34:49 +02:00
Daniel Gultsch 9e6f7237af use smaller image previews on narrow screens 2020-07-12 12:31:13 +02:00
Daniel Gultsch 7aeb2b2740 pulled translations from transifex. re-enabled some linter warnings 2020-07-12 10:15:51 +02:00
Daniel Gultsch 590deef8e9 use ctrl+arrow up to correct last message. fixes #3806 2020-07-12 09:45:27 +02:00
Daniel Gultsch c9e6653e33 fixups and code clean up for 'Ctrl+Enter' 2020-07-12 08:28:09 +02:00
Marcin Mielniczuk e7e04837b6
Support sending messages with ctrl+enter
Currently Conversations lacks any keyboard shortcut to send a message if enter_is_send is disabled.

KeyboardListener has been extended to include the original KeyEvent as an argument.

fixes #3829
2020-07-12 05:18:40 +00:00
Daniel Gultsch aa47e53584 pulled translations from transifex 2020-07-11 12:48:20 +02:00
Daniel Gultsch c3fa1d5d30 show switch to chat button during audio call. fixes #3825 2020-07-10 19:30:16 +02:00
Daniel Gultsch fffa659881 download libwebrtc-m84 for travis 2020-07-10 16:29:20 +02:00
Daniel Gultsch bab9dd4893 make sure intent is only set to retracted if something was retracted. fixes #3826 2020-07-10 16:10:40 +02:00
Daniel Gultsch 7ff56a5087 upgrade to libwebrtc m84. fixes #3824 2020-07-10 15:33:31 +02:00
Daniel Gultsch bf85a55930 catch NPE when detecting camera facing. fixes #3820 2020-07-09 20:11:09 +02:00
Daniel Gultsch 1107529f56 ask for contact permission before adding to contact to phone book. fixes #3808 2020-07-09 20:03:02 +02:00
Daniel Gultsch 6a6c9fb3bf ignore race condition when toggling fixes #3822 2020-07-09 19:14:28 +02:00
Daniel Gultsch 9ab0fbe48c provide progress bar for import backup. fixes #3809 2020-07-09 18:52:46 +02:00
Daniel Gultsch 71a56002fe fix emojis not rendering correctly with trailing variant selector. fixes #3819 2020-07-09 17:43:30 +02:00
genofire 1865177d74 fix changelog 2020-07-07 12:49:24 +02:00
genofire 0bca11bdeb Merge tag '2.8.8' into develop 2020-07-07 12:47:52 +02:00
Martin 14bb8b0cf1
Fix typo (#3814)
camea -> camera
2020-07-01 13:36:53 +00:00
Daniel Gultsch 8f439a9c37 version bump to 2.8.8 + changelog 2020-06-25 20:35:46 +02:00
Daniel Gultsch 2881a1b946 pulled translations from transifex 2020-06-25 20:33:02 +02:00
Daniel Gultsch 13d8eb1c7e dismiss notification only if displayed id matches last remote id 2020-06-24 12:12:35 +02:00
Daniel Gultsch fada3a63c9 store entire transport info for after session was accepted. fixes #3790 2020-06-22 18:07:27 +02:00
Daniel Gultsch a5430d5ce1 retract call when user presses home button or back; not on stop. fixes #3802 2020-06-22 15:37:22 +02:00
Daniel Gultsch 57135e1a59 do not update recent quick action when recording voice mail. fixes #3799 2020-06-21 16:28:57 +02:00
Daniel Gultsch 15489547b7 add account provisioning via QR code to welcome screen 2020-06-21 15:40:51 +02:00
Daniel Gultsch 68960398b2 pulled translations from transifex 2020-06-21 08:59:10 +02:00
Andrey Tikhomirov 203e248a14
Fix screen blinking during the call for some Samsung phones (#3800) 2020-06-21 06:56:51 +00:00
genofire c57d5375e0 Merge tag '2.8.7' into develop 2020-06-19 20:57:06 +02:00
Daniel Gultsch d88f79e436 register Conversations to open *.ceb files from content and file uris 2020-06-19 09:31:23 +02:00
Daniel Gultsch dddb7ece25 show app failure instead of crashing when egl fails to init. fixes #3795 2020-06-18 20:37:56 +02:00
Daniel Gultsch 169ee99afa do not attempt to reject call if session had already ended. fixes #3798 2020-06-18 20:32:58 +02:00
Daniel Gultsch fe68aff23c validate install referrer beforing accepting it as xmpp uri 2020-06-18 10:15:51 +02:00
Daniel Gultsch 7bcb29c482 be more liberal in 0167 payload-type parameter parsing
some implementations will transform the following SDP coming from Firefox

m=audio 12346 RTP/AVP 101
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15

to

<payload-type channels="1" name="telephone-event" clockrate="8000" id="101">
  <parameter value="0-15" xmlns="urn:xmpp:jingle:apps:rtp:1"/>
</payload-type>

While a missing name attribute is not legal according to the XEP; and 0-15 are
technically not just one value the following commit will accept it if there is
just one paramater.
2020-06-17 21:15:12 +02:00
Daniel Gultsch 47804205b6 clear pending photo uri only when also clearing activity result
on some phones the onBackendConnected finishes prior to the onActivityResult()
leading to the pending photo uri being cleared before processing the result.

this leads to 'Take photo' not working.

but we probably don’t need to clear the photo uri if there is to activiyResult
to clear as well
2020-06-17 17:58:25 +02:00
Dmitry Markin 4493f6cc13
Leave the incoming call notification category as CATEGORY_CALL (#3792) 2020-06-16 19:07:01 +00:00
Daniel Gultsch 8356a1cfe1 fix render script for latest inkscape version 2020-06-16 20:51:25 +02:00
Daniel Gultsch 8534175057 renamed fastlane changelog file 2020-06-16 12:33:57 +02:00
Daniel Gultsch 9649ba16b5 version bump to 2.8.7 2020-06-16 10:22:48 +02:00
Daniel Gultsch 23c4a26404 pulled translations from transifex 2020-06-16 10:16:25 +02:00
Daniel Gultsch c8f23aef4e error response to sending the jingle ft hash should not file the transfer 2020-06-15 21:33:32 +02:00
Daniel Gultsch 98e1044bdd use Jid.ofLocalAndDomainEscaped when transforming account with locked domain 2020-06-15 19:17:21 +02:00
Daniel Gultsch d823cefe47 pulled translations from transifex 2020-06-15 12:40:43 +02:00
Daniel Gultsch 38b2764c81 version bump to 2.8.7-beta.2 2020-06-14 19:11:03 +02:00
Daniel Gultsch 20286ea8d2 fixed concurrent modification when displaying read markers 2020-06-14 19:09:55 +02:00
Daniel Gultsch 1f77d5e115 pass selected audio device to proximity sensor toggle 2020-06-14 16:22:53 +02:00
Daniel Gultsch 61aac78af0 pulled translations from transifex 2020-06-14 14:29:40 +02:00
Daniel Gultsch 16bc210211 fix regression for fixed domain 2020-06-14 11:28:25 +02:00
Daniel Gultsch c3b9a4dabc parse jmi proposals from MAM reloads. fixes #3778 2020-06-14 10:34:40 +02:00
Daniel Gultsch ccdc91a497 remove check that would ensure you use jingle only with full jids 2020-06-14 09:01:47 +02:00
Daniel Gultsch 400c8461fc fix feature discovery in jingle file transfer for empty resources 2020-06-13 22:53:24 +02:00
Daniel Gultsch fda9e7b51c make presence selector work with empty resources (bare jid) 2020-06-13 09:59:39 +02:00
Daniel Gultsch 0dba9f560c rework quicksy domain checks 2020-06-13 08:26:32 +02:00
Daniel Gultsch 56ea9647cd null check quicksy domain 2020-06-13 08:10:04 +02:00
Daniel Gultsch 971bb60f42 add more logging to caps fetching 2020-06-12 20:06:49 +02:00
Daniel Gultsch 8059aa7b0d version bump to 2.8.7-beta + changelog 2020-06-12 09:40:00 +02:00
Daniel Gultsch 01bfb5fd56 pulled translations from transifex 2020-06-12 09:19:56 +02:00
Daniel Gultsch 0ba4892d3e RTP: write log message on background thread 2020-06-12 09:08:09 +02:00
Daniel Gultsch b7f3b4333e show help button on certain error conditions in RTP session. fixes #3770 2020-06-12 08:26:33 +02:00
Daniel Gultsch 644ad99520 create rtp end user state for connection lost. fixes #3769 2020-06-12 07:57:11 +02:00
Daniel Gultsch adb3c77d31 fix travis for real 2020-06-11 21:41:22 +02:00
Daniel Gultsch 2cd0cc50d0 point travis to m83.aar 2020-06-11 21:32:52 +02:00
Daniel Gultsch f39daf565a upgrade libwebrtc to m83. fixes #3767 2020-06-11 21:22:49 +02:00
Daniel Gultsch 552e17e39a remember terminal RTP session state
if the activity is not connected during finish it won’t receive the last end user state.

this code remembers it even if the actual session is already gone. so when activity reconnects and
we can’t find the real rtp session we can look up the last state instead.
2020-06-11 21:17:15 +02:00
Daniel Gultsch 7e2d87f39c recover if attachImage can’t generate scalled down version of image. fixes #3773 2020-06-09 21:08:27 +02:00
Daniel Gultsch 1853242c66 do not throw when finishing jingle ft twice. fixes #3765
the state machine in jingle file transfer does not prevent that the connection
is being finished twice
2020-06-07 15:00:00 +02:00
Daniel Gultsch b78d45c7cc fix Jingle FT candidate selection for equal priority. fixes #3771 2020-06-07 12:47:03 +02:00
genofire c44b948228 Merge tag '2.8.6' into develop 2020-06-03 21:45:32 +02:00
Daniel Gultsch c029382410 version bump to 2.8.6 + changelog 2020-06-03 19:14:22 +02:00
Licaon_Kter f879d87f04
Fix typo (#3763)
* Fix typo

* Update README.md
2020-06-02 12:25:30 +00:00
Daniel Gultsch 4bc43af690 improve logging in export backup service. closes #3672 2020-06-02 07:59:46 +02:00
Daniel Gultsch 0391e78832 pulled translations from transifex. fixes crash in UK translation 2020-06-02 07:59:46 +02:00
Daniel Gultsch 3343d2665a
Provide link to homepage instead of paypal for funding 2020-06-01 20:12:10 +00:00
Daniel Gultsch 61f6ce317b pulled translations from transifex 2020-05-30 15:22:45 +02:00
Daniel Gultsch 637c208f55 ask for resource and use jingle direct init when JMI is not available. fixes #3751 2020-05-30 14:56:12 +02:00
Daniel Gultsch 8edfc61346 fixed concurrent modification when iterating over presences 2020-05-30 10:57:22 +02:00
Daniel Gultsch 8603d24bcb add record voice mail button to busy screen. fixes #3754 2020-05-30 10:30:57 +02:00
Daniel Gultsch bc6446beb8 pulled translations from transifex. closes #3760 2020-05-29 18:18:54 +02:00
Licaon_Kter ecb9039547
Update screenshots - pin & a/v (#3757) 2020-05-29 05:24:07 +00:00
Daniel Gultsch 59d1a2982e RtpSessionActivity: throw instead of finish when session wasn’t found 2020-05-28 09:22:58 +02:00
Daniel Gultsch 63ba21a512 catch ISE cause by race when displaying video track. fixes #3752 2020-05-27 15:53:05 +02:00
Daniel Gultsch 5e3aab3abe ensure that finishConnection succeeds 2020-05-27 13:54:35 +02:00
Daniel Gultsch 575ada3b27 fix scram crash for broken metronome servers 2020-05-27 13:53:28 +02:00
genofire 09c7d8298d Merge tag '2.8.5' into develop 2020-05-27 13:06:33 +02:00
Daniel Gultsch 8f7ff2c3dd version bump to 2.8.5 + changelog 2020-05-27 09:43:29 +02:00
Daniel Gultsch dc53976aec update readme; remove outdated compile information; new donation information 2020-05-25 13:16:49 +02:00
Daniel Gultsch cdcc34ff91 pulled translations from transifex 2020-05-25 11:21:19 +02:00
Daniel Gultsch 1c625e55a0 set candidate gathering to continually. fixes #3719
This should be good enough to survive some network switches where both networks are online at the same time to allow for some handover
(for example when enabling wifi the 3G connection will usually (probably depends on OS) live on for a moment
2020-05-25 11:11:29 +02:00
Daniel Gultsch 8475a28dc5 control voice call volume when playing audio through earpiece. fixes #3705 2020-05-25 10:43:56 +02:00
Daniel Gultsch 7ca543e42f replace /me when quoting messages. fixes #3669 2020-05-24 10:52:34 +02:00
Daniel Gultsch 88cc097732 fail pending messages on policy violation. fixes #3735 2020-05-22 18:23:53 +02:00
Daniel Gultsch ed4d7bff92 reset tone manager after reaching NULL status 2020-05-22 16:25:29 +02:00
Daniel Gultsch 550fbc6d2c make sure automatic jmi responses are sent before ack 2020-05-22 13:22:22 +02:00
Daniel Gultsch 685e01e83f give TonManager control over audio mode to play dial tones on earpiece. fixes #3738 2020-05-21 15:39:59 +02:00
genofire 2731b7b690 fix connection 2020-05-21 15:32:54 +02:00
genofire c3f392445f Merge tag '2.8.4' into develop 2020-05-21 15:19:54 +02:00
Daniel Gultsch a2a7256682 disable hardware AEC on some devices. fixes #3734 2020-05-21 11:13:46 +02:00
Daniel Gultsch de941f6036 use escaped jid for invites 2020-05-21 08:41:04 +02:00
Daniel Gultsch 574bccfc59 avoid unnecessary call to Jid.ofDomain() 2020-05-21 07:57:57 +02:00
Daniel Gultsch aa1e69d277 use escaped jid for EXTRA_ACCOUNT 2020-05-20 20:14:13 +02:00
Daniel Gultsch 304411fc09 return audio mode to normal (instead of previous mode) after call ended 2020-05-20 19:40:26 +02:00
Daniel Gultsch bfeebc141f invalide options menu after pinning/unpinning. fixes #3745 2020-05-19 19:39:05 +02:00
Daniel Gultsch dd0f354b62 publish pep bookmarks 1.0 to an item called 'current' 2020-05-19 19:39:05 +02:00
Licaon_Kter 24fb42c5f4
Fastlane update info (#3744) 2020-05-19 13:55:03 +00:00
Daniel Gultsch f8fedf0059 sasl prep password before hashing. fixes #1893 2020-05-19 15:28:12 +02:00
Daniel Gultsch d17f4acd3e mention that a/v calls are encrypted. fixes #3743 2020-05-19 14:48:08 +02:00
Daniel Gultsch 4e886ebbcc create libs directory after building with travis 2020-05-19 13:17:01 +02:00
Daniel Gultsch fa752b596d bump version code for 2.8.4 release 2020-05-19 11:06:12 +02:00
Daniel Gultsch 89c022f0cb pulled translations from transifex 2020-05-18 12:00:10 +02:00
Daniel Gultsch 22f3aac465 fix media browser for escapbed jids 2020-05-18 11:48:24 +02:00
Daniel Gultsch 3ca10b8fa9 show escaped jids when it comes to account selection 2020-05-18 09:35:35 +02:00
Daniel Gultsch df3273a6fc fix jid.withResource() for domain jids 2020-05-18 09:14:57 +02:00
Daniel Gultsch a0920b83e2 use Account.getDomain() for direct access to domain jid 2020-05-17 10:24:46 +02:00
Daniel Gultsch b347d57848 don’t escape jids when parsing from uri 2020-05-17 08:53:44 +02:00
Daniel Gultsch 351790b0c3 version bump to 2.8.4 + changelog 2020-05-17 08:35:10 +02:00
Daniel Gultsch 7abd37498e pulled translations from transifex 2020-05-17 08:33:25 +02:00
Daniel Gultsch 1da490f77a do not request storage permission for attaching location 2020-05-16 17:51:14 +02:00
Daniel Gultsch 4dd3b0c2aa allow to pin conversations on top. fixes #3480 2020-05-16 12:10:26 +02:00
Daniel Gultsch 7a21b2c5ed fixed parsing of unescaped jids with @ in local part 2020-05-16 10:40:26 +02:00
Daniel Gultsch 0aee863123 version bump to 2.8.4-beta 2020-05-16 08:56:46 +02:00
Daniel Gultsch 2195bce303 don’t allow escaped usernames in magic create 2020-05-16 08:55:13 +02:00
Daniel Gultsch 78a82a74bc use unescaped jid in ManageAccount 2020-05-15 20:20:22 +02:00
Daniel Gultsch dc29cf27a3 validate conference jid on input 2020-05-15 19:22:15 +02:00
Daniel Gultsch 198a7db954 use escaped jid in more places 2020-05-15 18:44:55 +02:00
Daniel Gultsch ef7d4fca86 show escaped jid in most of the UI
for historical reasons we store unescaped variants in DB and use them in intents.
2020-05-15 18:22:04 +02:00
Daniel Gultsch b6703dbe38 switch xmpp-addr to jxmpp-jid 2020-05-15 17:06:16 +02:00
Daniel Gultsch 3510f10e25 pulled translations from transifex 2020-05-15 11:30:12 +02:00
genofire dfee543df0 metadata: release changelog 2020-05-14 15:36:55 +02:00
genofire fca5e15aad Merge tag '2.8.3' into develop 2020-05-14 15:34:30 +02:00
Daniel Gultsch 1b4f9cc8ab allow 'login with certificate' from welcome screen. fixes #3724 2020-05-13 13:52:05 +02:00
Daniel Gultsch 36d2ecfcfa always use private key for TLS connection when one is configured 2020-05-13 09:38:30 +02:00
Licaon_Kter 7c4566e561
Add fastlange changelog too (#3720) 2020-05-11 13:57:35 +00:00
Daniel Gultsch 2c4788b7c7 send retract when unable to setup webrtc as initiator. fixes #3717 2020-05-11 12:20:32 +02:00
Daniel Gultsch b845c601d0 include senders in jingle file offer 2020-05-11 11:09:18 +02:00
Daniel Gultsch 90526efbd4 fixed destination calculation for direct socks candidates. fixes #3715 2020-05-11 11:08:45 +02:00
Daniel Gultsch 11de70312c version bump to 2.8.3 + changelog 2020-05-11 09:23:36 +02:00
Daniel Gultsch 907b4d2b8a pulled translations from transifex 2020-05-10 18:42:24 +02:00
Daniel Gultsch 46579550e4 fixed weird ToneGenerator crash. fixes #3712
obviously tones won’t work then anymore
2020-05-10 17:54:16 +02:00
Daniel Gultsch 4d3d3a7038 tie breaking racing jingle message proposals. fixes #3698 2020-05-10 14:09:16 +02:00
Daniel Gultsch 2c5bed61a1 introduce extra RTP state to handle going from sending proceed to receiving retract 2020-05-09 21:35:21 +02:00
Daniel Gultsch 9b8b4f1791 move call icon to left. fixes #3709 2020-05-09 21:10:35 +02:00
Daniel Gultsch 526e9eab61 rename locating devices to discovering devices. closes #3699 2020-05-09 21:09:56 +02:00
Daniel Gultsch f4247379bd catch UnsatisfiedLinkError when trying to init libwebrtc. fixes #3707 2020-05-09 19:48:54 +02:00
Daniel Gultsch 1d9b9e3bf0 pulled translations from transifex 2020-05-09 11:47:37 +02:00
Daniel Gultsch 04764eb989 fix Quicksy build flavor 2020-05-09 11:41:45 +02:00
Daniel Gultsch 92fc22b313 show call duration in audio calls. fixes #3708 2020-05-09 11:14:39 +02:00
Daniel Gultsch 6daaca496b externalize time passed utils 2020-05-09 09:42:33 +02:00
Daniel Gultsch 072edc5a62 hide microphone button in video-only calls. fixes #3700 2020-05-08 21:15:54 +02:00
Daniel Gultsch bd0234ba4d dismiss incoming call notification on crash. fixes #3701 2020-05-08 19:34:20 +02:00
Daniel Gultsch abfa4eae08 remove white space before parsing omemo bundle base64 2020-05-08 19:33:49 +02:00
Daniel Gultsch 285c750e69 throw IllegalStateException when trying to finish from a non terminal state 2020-05-08 18:36:52 +02:00
Daniel Gultsch 350fc57d87 properly wrap IPv6 addresses 2020-05-08 17:52:41 +02:00
Daniel Gultsch 5af4c865a7 make sure we finsh() the connection after transitioning into terminal state 2020-05-08 17:22:27 +02:00
Daniel Gultsch 1ece8e077e pulled translations from transifex 2020-05-08 16:26:58 +02:00
Daniel Gultsch 1b237e4ea0 pulled translations from transifex 2020-05-06 21:46:11 +02:00
genofire 99bb2b4698 metadata: release changelog 2020-05-06 18:31:15 +02:00
genofire 34241828ab sum7: fix colors 2020-05-06 18:31:15 +02:00
genofire 99a5c71b0b Merge tag '2.8.2' into develop 2020-05-06 18:19:50 +02:00
Daniel Gultsch 42563e6c29 version bump to 2.8.2 + changelog 2020-05-06 16:03:09 +02:00
Daniel Gultsch 5d28ae9f38 pulled translations from transifex 2020-05-05 09:46:26 +02:00
Daniel Gultsch fb57ef47bc catch IllegalStateException around acceptCall()
this can happen when the UI races a call retrection
2020-05-05 09:37:27 +02:00
Daniel Gultsch c159bbfc81 play dial sounds on wrong track to make them play in silent mode. fixes #3697 2020-05-03 23:15:21 +02:00
Daniel Gultsch 2018ae8ba0 fixed some r8 warnings 2020-05-03 22:09:31 +02:00
Daniel Gultsch 8a1bdd97e8 pulled translations from transifex 2020-05-03 22:08:29 +02:00
Daniel Gultsch a3b3b14bf1 yet again more wording 2020-05-03 21:56:30 +02:00
Daniel Gultsch 8fb8656e34 more wording 2020-05-03 21:52:27 +02:00
Licaon_Kter dcb02ee5e2
Typo you you (#3694)
* Typo you you

* Clarify this too

* Optimizations is plural

* Keep them in sync

* Sync the whole string
2020-05-03 19:49:00 +00:00
Daniel Gultsch b6d38f8e8b do not call bundles bundles 2020-05-03 18:57:11 +02:00
Daniel Gultsch 476fb23656 show timestamp for missed incoming calls. fixes #3692 2020-05-03 18:36:15 +02:00
Daniel Gultsch 3c3f5d8e6f mark missed calls as unread (bold) in overview. fixes #3687 2020-05-03 18:07:00 +02:00
Daniel Gultsch 6888f57191 pulled translations from transifex 2020-05-03 17:39:48 +02:00
Daniel Gultsch cacd3b8ed8 fixup Language rework. wrong use of singular they 2020-05-03 17:36:22 +02:00
Daniel Gultsch 0ee9dbcea7 fixed crash when attempting to start connection for install referer 2020-05-03 12:05:18 +02:00
Daniel Gultsch 3577afea4e fixed crash caused by race when dedecting if mic is on 2020-05-03 11:54:58 +02:00
Daniel Gultsch e70b6eec98 do not mirror back camera. fixes #3693 2020-05-03 11:54:58 +02:00
Daniel Gultsch 5a5f887229 code cleanup in bundle parsing
also switch to guavas base64 parser to avoid potential ROM bugs
2020-05-03 11:54:58 +02:00
Licaon_Kter 4f8715a349
Foreground service on by default 2020-05-02 18:05:34 +00:00
Daniel Gultsch abb33b048a fixed crash after accepting voice calls on devices that don’t have an earpiece (tablets)
fixes #3682
2020-05-02 18:06:56 +02:00
Daniel Gultsch 63ddd97b6b add button to switch cameras during video call
RIP symmetry :-(

fixes #3683
2020-05-02 17:15:50 +02:00
Allan Nordhøy f739752f76
Spelling: Language reworked (#3688) 2020-05-02 14:51:24 +00:00
Daniel Gultsch e4b906ebeb fix crash on unknown sasl mechanims 2020-05-02 10:20:18 +02:00
Daniel Gultsch 48163a5604 show proposal as ongoing call 2020-05-02 09:50:17 +02:00
Daniel Gultsch f7a0d2031a disable TLS cert validation for stun/turn server
turns out libwebrtc doesn’t use the system root CA store but comes with only a few default CAs.

in anyway we will probably only use tcp/443 to bypass firewalls and not to actually secure anything.
2020-05-01 20:17:23 +02:00
Daniel Gultsch 58429c42ee lower case protocol; we have seen upper case in the wild for some reason 2020-05-01 20:15:09 +02:00
Daniel Gultsch 7ac5e8e828 properly close WebRTCWrapper even when init failed 2020-05-01 13:56:24 +02:00
genofire 21da82885e Merge tag '2.8.1' into develop 2020-05-01 11:46:27 +02:00
Daniel Gultsch f8866d1bef change stale label to 'stale' 2020-05-01 08:40:52 +02:00
Daniel Gultsch 5aa42cda6c configure stale bot 2020-05-01 08:10:55 +02:00
Daniel Gultsch eab4ac017f minor code clean up 2020-05-01 07:58:58 +02:00
Daniel Gultsch 86b2631449 revert commit that attempted to do bare jid matching for LMC
That commit never worked because there were other checks in place later down the stream.

Allowing other clients (resources) to correct messages introduces the potential for nasty race conditions.
Furthermore we also have a check in place that would check that the OMEMO fingerprint is the same for security reasons. Removing that check is currently undesirable. Therefor correcting a message from another client would only work for plain text messages (and maybe PGP); this only adds confusion for users for very little benefit.
2020-05-01 07:45:00 +02:00
Daniel Gultsch ea1c2f27d1 fixed build instructions (checkout url) 2020-04-30 13:04:40 +02:00
Daniel Gultsch b6d3b49702 fixed the other travis link 2020-04-30 13:03:18 +02:00
Daniel Gultsch 00229d7d6d remove bounty source link for good. who cares? 2020-04-30 13:01:24 +02:00
Daniel Gultsch 419d2c91bc fix travis links 2020-04-30 13:00:17 +02:00
Licaon_Kter eea0f8579e
Update repo links (#3684)
* Update repo link

* Here too
2020-04-30 10:51:26 +00:00
Daniel Gultsch 8374df84aa do not change intent to retracted if end card had already been reached 2020-04-30 09:06:43 +02:00
Daniel Gultsch f106cbccf5 bump version code to 381 (2.8.1) 2020-04-29 16:28:31 +02:00
Daniel Gultsch deae2b109f do not crash UI after ignoring improperly formatted jingle init 2020-04-29 15:54:02 +02:00
Daniel Gultsch 8a586527c4 check if setting local description was succesful 2020-04-29 15:32:27 +02:00
Daniel Gultsch 52d416c6e6 version bump to 2.8.1 + changelog 2020-04-29 14:53:52 +02:00
Daniel Gultsch a49d69c878 parse candidates from session-init and session-accept 2020-04-29 10:36:54 +02:00
Daniel Gultsch 54ca3fb020 release video after end card reached. fixes video call retry 2020-04-29 09:22:49 +02:00
Daniel Gultsch 333f509e53 synchronize public WebRTCWrapper methods so closes don’t race 2020-04-29 09:10:15 +02:00
Daniel Gultsch 0d4b175760 better failure behaviour after direct init from jitsi 2020-04-29 08:51:38 +02:00
Daniel Gultsch daf234191b pulled translations from transifex 2020-04-28 20:15:34 +02:00
Daniel Gultsch f93bac6d73 catch ISE around peerconnection.dispose() 2020-04-28 20:15:23 +02:00
Daniel Gultsch faf1ff365d modify call connected tone 2020-04-28 11:22:42 +02:00
Daniel Gultsch 8183c54ba0 use stanza-id for display markers in group chats 2020-04-28 08:25:21 +02:00
Daniel Gultsch 27bf871472 play beep when voice call connects 2020-04-28 07:30:27 +02:00
Daniel Gultsch 418cecad11 remove XEP-0357 support for group chats 2020-04-28 06:50:04 +02:00
Daniel Gultsch fc4397e5b9 play busy and dial tones 2020-04-27 17:51:38 +02:00
Daniel Gultsch 07911b2094 indicate ongoing call. fixes #3675 2020-04-27 11:53:31 +02:00
Daniel Gultsch 9fbf73d1ea do not log failed calls that never rang 2020-04-26 10:38:19 +02:00
Daniel Gultsch 006d7447a3 put version code into crash report 2020-04-25 20:13:20 +02:00
Daniel Gultsch c41033e83c only take udp candidates from transport-info 2020-04-25 20:13:08 +02:00
genofire 749ff88ed0 Merge tag '2.8.0' into develop 2020-04-25 17:59:48 +02:00
Daniel Gultsch 45bb86c0f6 version bump for release 2020-04-24 22:01:48 +02:00
Daniel Gultsch a5beaaed9d null reference to rtpconnection when end card is reached
this will make re-init work if for example retry end card had been reached and we get another call
2020-04-24 21:27:03 +02:00
Daniel Gultsch 07ba70aef7 update fastlane metadata 2020-04-24 20:53:47 +02:00
Daniel Gultsch 32ab7775d7 pulled translations from transifex 2020-04-24 10:42:19 +02:00
Daniel Gultsch 99d2b6a268 add a/v calls to features 2020-04-24 10:39:15 +02:00
Daniel Gultsch cacd85b4f1 catch ISE when entering PIP 2020-04-24 10:37:46 +02:00
Daniel Gultsch 4f5415ecba terminated rtp connection do not count as busy 2020-04-24 09:41:54 +02:00
Daniel Gultsch c0036b4ca6 increase busy timeout to 30s 2020-04-24 09:16:59 +02:00
genofire c52121e6dc sum7: rename App without spaces and from sum7 #4 2020-04-24 01:22:16 +02:00
Daniel Gultsch 02a74b10a1 use better version code for universal to allow people to upgrade from abi to univerals as long is the base version is higher 2020-04-23 20:32:52 +02:00
Daniel Gultsch 96f6ae2b49 additional null check in case to is null 2020-04-23 20:11:45 +02:00
Daniel Gultsch 80cac3bd69 disable tcp candidates 2020-04-23 19:51:58 +02:00
Daniel Gultsch adad683b20 version bump to 2.8.0-rc.3 2020-04-23 14:07:05 +02:00
Daniel Gultsch c88d736cee pulled translations from transifex 2020-04-23 13:01:00 +02:00
Daniel Gultsch d7a8519ad6 do not continue to accept call if reinit() caused activity to finish 2020-04-23 12:52:02 +02:00
genofire dfa22954e5 sum7: announce client cap present 2020-04-23 12:32:31 +02:00
Daniel Gultsch cfb9368edb check if pip feature is available on top of doing version check 2020-04-23 12:14:45 +02:00
Daniel Gultsch 60cea03dce do not attempt retract if onStop was faster than backend connect 2020-04-23 10:13:10 +02:00
Daniel Gultsch a008993d06 add 20s busy timeout to incoming calls 2020-04-22 21:59:20 +02:00
Daniel Gultsch 22e93e4169 fix direct share for cases where the application id was changed 2020-04-22 20:23:13 +02:00
Daniel Gultsch fc7ecca1b3 build universal apk (easier to give to people manually) 2020-04-22 18:42:42 +02:00
Daniel Gultsch 892d913e2c parsing iq erros also need to finish the connection 2020-04-22 18:42:07 +02:00
Daniel Gultsch 9fa9ca9cbc catch securityException when parsing rtp description 2020-04-22 16:35:08 +02:00
Daniel Gultsch fa45422fa8 pulled translations from transifex 2020-04-22 14:59:23 +02:00
Daniel Gultsch 1fc98c0c11 version bump to 2.8.0-rc.2 2020-04-22 14:52:14 +02:00
Daniel Gultsch 9afac21b0b don’t throw when user double taps accept button 2020-04-22 14:49:48 +02:00
Daniel Gultsch 04a7b9da1c pulled translations from transifex 2020-04-22 08:54:20 +02:00
Daniel Gultsch 876b1149d5 avoid double termination after failed connection 2020-04-21 22:59:54 +02:00
Daniel Gultsch e0cb127005 retract call when pressing home or power button during ringing 2020-04-21 22:46:46 +02:00
Daniel Gultsch e5282b846f pulled translations from transifex 2020-04-21 22:01:01 +02:00
Daniel Gultsch 995856ffe0 fixed chinese translation 2020-04-21 18:43:53 +02:00
Daniel Gultsch 62c50d0089 pulled translations from transifex 2020-04-21 18:19:47 +02:00
Daniel Gultsch 3c0b3f4b94 allow dnd overwrite for incoming calls 2020-04-21 18:13:09 +02:00
Daniel Gultsch 442b952700 add jingle message init namespace to features 2020-04-21 14:59:03 +02:00
Daniel Gultsch 5b12e23382 improve logging for throws from native callbacks 2020-04-21 12:00:13 +02:00
Daniel Gultsch eb911b8196 show 215 status in server info 2020-04-21 11:40:05 +02:00
Daniel Gultsch d5e3d13158 do not just assume rtcp-mux 2020-04-21 09:11:17 +02:00
Daniel Gultsch 8b79808f02 try to stfu travis 2020-04-20 21:09:37 +02:00
Daniel Gultsch 7898ba65cd extend extended webrtcwrapper logging 2020-04-20 17:05:27 +02:00
Daniel Gultsch f858412d72 version bump to 2.8.0-rc.1 + changelog 2020-04-20 16:19:31 +02:00
Daniel Gultsch 23d1ee5e41 render contact’s avatar during incoming call 2020-04-20 15:57:31 +02:00
Daniel Gultsch 187dff3df9 put contact picture in incoming call notification 2020-04-20 15:57:31 +02:00
Daniel Gultsch df2ef0eeb0 automatically reject/ignore calls from strangers if the setting is set 2020-04-20 15:57:31 +02:00
Daniel Gultsch e661d5b7ad provide deep link from settings into call notification settings 2020-04-20 15:57:31 +02:00
Daniel Gultsch 1016e8d018 added note about libwebrtc 2020-04-20 15:57:31 +02:00
Daniel Gultsch 1cc0dfad84 move sdp logging to different tag 2020-04-20 15:57:31 +02:00
Daniel Gultsch c64779329b upgrade libwebrtc to m81 2020-04-20 15:57:31 +02:00
Daniel Gultsch 7f45f3ab54 build abi-split apk; use stable libwebrtc 2020-04-20 15:57:31 +02:00
Daniel Gultsch 5a0979b41e store 'ended call' when ended from proceed 2020-04-20 15:57:31 +02:00
Daniel Gultsch f7f0dc99a7 launch calls in new task 2020-04-20 15:57:31 +02:00
Daniel Gultsch c7269bc0aa check microphone availability on background thread 2020-04-20 15:57:31 +02:00
Daniel Gultsch 31dfb0c704 cache useTor information in activity 2020-04-20 15:57:31 +02:00
Daniel Gultsch 72c551d128 bump to 2.8.0-beta.2 2020-04-20 15:57:31 +02:00
Daniel Gultsch a12760300c ensure that rtp connection is registered with connection manager 2020-04-20 15:57:30 +02:00
Daniel Gultsch c20c40a807 ensure webrtc connection gets closed after connection failure 2020-04-20 15:57:30 +02:00
Daniel Gultsch 7dfd47a5c4 better crash than leave WebRTCWrapper unclosed 2020-04-20 15:57:30 +02:00
Daniel Gultsch 934b98d199 add microphone availability check 2020-04-20 15:57:30 +02:00
Daniel Gultsch ebda472c22 version bump 2020-04-20 15:57:30 +02:00
Daniel Gultsch 48f752366b paint local mic off button in pip 2020-04-20 15:57:30 +02:00
Daniel Gultsch 644e5aa856 remove video sinks when calling onStop. otherwise going in and out foreground will give us endless sinks 2020-04-20 15:57:30 +02:00
Daniel Gultsch 16d34c2ba0 parse turns and stuns (regression from earlier commit) 2020-04-20 15:57:30 +02:00
Daniel Gultsch ab2681640a allow pip during connecting 2020-04-20 15:57:30 +02:00
Daniel Gultsch 2f437ea845 ignore iq errors if session has already been terminated 2020-04-20 15:57:30 +02:00
Daniel Gultsch fa3ef07580 be more strict with ice candidate parsing 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0a18ab35c0 fixed 215 credential detection 2020-04-20 15:57:30 +02:00
Daniel Gultsch 8472712b3e play notification sound pre notification categories 2020-04-20 15:57:30 +02:00
Daniel Gultsch e545e95d39 getMedia() would throw null pointer when called after going from proposed to some error state 2020-04-20 15:57:30 +02:00
Daniel Gultsch ea2ed85ed7 support picture in picture for video calls 2020-04-20 15:57:30 +02:00
Daniel Gultsch 21e412ef6f only show remote video when connected 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0c4f0c074d improve busy behaviour with multiple devices 2020-04-20 15:57:30 +02:00
Daniel Gultsch 4558b9a7b0 select proper media for retry 2020-04-20 15:57:30 +02:00
Daniel Gultsch 45d5d1f635 capture in ~1920 resolution when available 2020-04-20 15:57:30 +02:00
Daniel Gultsch b95d406e61 use more approriate reason when failing because of parse errors 2020-04-20 15:57:30 +02:00
Daniel Gultsch ec6bcec849 use different aspect ratio for landscape 2020-04-20 15:57:30 +02:00
Daniel Gultsch 36e117979a put 'video' in ongoing video call notification 2020-04-20 15:57:30 +02:00
Daniel Gultsch d7e93e18e5 add a couple of todos to RtpSessionActivity 2020-04-20 15:57:30 +02:00
Daniel Gultsch f995965dea parse 0339 source groups from sdp 2020-04-20 15:57:30 +02:00
Daniel Gultsch 01a9a52990 show enable/disable video in video calls 2020-04-20 15:57:30 +02:00
Daniel Gultsch 445009c558 request camera permissions 2020-04-20 15:57:30 +02:00
Daniel Gultsch 5a20faaf0f show 'incoming video cal' notification 2020-04-20 15:57:30 +02:00
Daniel Gultsch d4788fc1f4 display video call based on availability 2020-04-20 15:57:30 +02:00
Daniel Gultsch b4df19177f make seperate menu items for audio and video calls 2020-04-20 15:57:30 +02:00
Daniel Gultsch 17d9b02f41 properly paint local video over remote 2020-04-20 15:57:30 +02:00
Daniel Gultsch d057ae3439 transmit media from proposal to actual session 2020-04-20 15:57:30 +02:00
Daniel Gultsch 8c273e7eee parse media from session proposal 2020-04-20 15:57:30 +02:00
Daniel Gultsch 1489dba44f release resource. stop caputuring when webrtc ends 2020-04-20 15:57:30 +02:00
Daniel Gultsch b20b00e77f use toolbar to display status text in RtpSessionActivity 2020-04-20 15:57:30 +02:00
Daniel Gultsch 339bdaea06 rudimentary video caputuring 2020-04-20 15:57:30 +02:00
Daniel Gultsch bfb9a6267a complete list of reasons 2020-04-20 15:57:30 +02:00
Daniel Gultsch dd42a6b850 don’t transition when calling endCall and session was already terminated 2020-04-20 15:57:30 +02:00
Daniel Gultsch 65b43661dd RtpConnection: synchronize all externally call methods to guard state transitions 2020-04-20 15:57:30 +02:00
Daniel Gultsch 172d2c693f depulicate 'propose's when doing mam catchup 2020-04-20 15:57:30 +02:00
Daniel Gultsch e16e0d895e cancle ongoing jingle sessions on xmpp rebind 2020-04-20 15:57:30 +02:00
Daniel Gultsch 493ca68464 add <rtcp-mux/> in description 2020-04-20 15:57:30 +02:00
Daniel Gultsch ef22071bd1 turn proximity wake lock and/off depending on speaker configuration 2020-04-20 15:57:30 +02:00
Daniel Gultsch 9bc264bd73 do not use proximity wake lock on speaker phone 2020-04-20 15:57:30 +02:00
Daniel Gultsch 981aeaf264 make mute and speaker button work 2020-04-20 15:57:30 +02:00
Daniel Gultsch b924a63d01 copy audio manager from AppRTCDemo 2020-04-20 15:57:30 +02:00
Daniel Gultsch 5b98107e9a put jingle messages in MAM and parse call log during catchup 2020-04-20 15:57:30 +02:00
Daniel Gultsch 9a41d11aed do not show context menu for call logs 2020-04-20 15:57:30 +02:00
Daniel Gultsch 4be2309202 more conditions under which to print call log 2020-04-20 15:57:30 +02:00
Daniel Gultsch 3439f40411 show call log messages in conversation stream 2020-04-20 15:57:30 +02:00
Daniel Gultsch 1dc88f38ca avoid terminating twice 2020-04-20 15:57:30 +02:00
Daniel Gultsch 82f9a77777 be more conservative when parsing rtp content 2020-04-20 15:57:30 +02:00
Daniel Gultsch deaa76b5ca when using onNewIntent make sure to store intent otherwise onBackground might just overwrite it again 2020-04-20 15:57:30 +02:00
Daniel Gultsch 609120c0d8 only ever create one wake lock in rtpsessionactivity 2020-04-20 15:57:30 +02:00
Daniel Gultsch c9f7e174f7 use foreground service for ongoing call notification 2020-04-20 15:57:30 +02:00
Daniel Gultsch c6db651322 allow all jingle states to transition into terminated 2020-04-20 15:57:30 +02:00
Daniel Gultsch 5eea961155 improved strategy for ignoring self addressed jingle messages 2020-04-20 15:57:30 +02:00
Daniel Gultsch 7b382d2ba5 include more human readable text in application errors 2020-04-20 15:57:30 +02:00
Daniel Gultsch 07e671d7c3 do not offer jingle calls when using Tor 2020-04-20 15:57:30 +02:00
Daniel Gultsch 9d83981f2c respond with busy if there is anthor rtp session 2020-04-20 15:57:30 +02:00
Daniel Gultsch d19b5e0634 show notification during ongoing call 2020-04-20 15:57:30 +02:00
Daniel Gultsch 2e8b91665b improvements to RtpSessionActivity 2020-04-20 15:57:30 +02:00
Daniel Gultsch 14d008d89d turn screen off during call 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0302eacac1 back button rejects or ends call 2020-04-20 15:57:30 +02:00
Daniel Gultsch f5c4de8770 make retry work 2020-04-20 15:57:30 +02:00
Daniel Gultsch 2ba84bd32e no need to be careful about Int parsing in session description; just fail 2020-04-20 15:57:30 +02:00
Daniel Gultsch 6884e427ef require dtls and ensure procceds get tracked 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0661c1bd37 add state transitions for iq service-unavailable errors and timeouts 2020-04-20 15:57:30 +02:00
Daniel Gultsch 39e3791345 incude human readable text in some session-terminates 2020-04-20 15:57:30 +02:00
Daniel Gultsch 6a1df0538e request recording permission when making or accepting audio calls 2020-04-20 15:57:30 +02:00
Daniel Gultsch 7749a7ce22 fixed rotation issues in RtpSessionActivity 2020-04-20 15:57:30 +02:00
Daniel Gultsch 268eedad89 proper iq tracing (handling of errors); responding to all iqs 2020-04-20 15:57:30 +02:00
Daniel Gultsch 15a2491d7b correctly parse turn server 2020-04-20 15:57:30 +02:00
Daniel Gultsch 845b3d8a0e properly parse transport info and apply ice candidates after direct init 2020-04-20 15:57:30 +02:00
Daniel Gultsch 3e5e4e813b reject call from proceed state; and deal with direct inits 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0bf991d95c make jingle->sdp parsing fail on some obvious errors 2020-04-20 15:57:30 +02:00
Daniel Gultsch ca9b95fc9c discover stun server 2020-04-20 15:57:30 +02:00
Daniel Gultsch 859bc0bef3 send and receive session terminates 2020-04-20 15:57:30 +02:00
Daniel Gultsch 00f273b0c0 show retry button after failed call 2020-04-20 15:57:30 +02:00
Daniel Gultsch f7d1e02d4b parse 'accept' messages 2020-04-20 15:57:30 +02:00
Daniel Gultsch 9edadc9835 process retract jingle messages 2020-04-20 15:57:30 +02:00
Daniel Gultsch a11d506bf0 support reject 2020-04-20 15:57:30 +02:00
Daniel Gultsch 7909a72d43 make retract jingle messages work 2020-04-20 15:57:30 +02:00
Daniel Gultsch e2f1cec2e5 prepare more state transitions 2020-04-20 15:57:30 +02:00
Daniel Gultsch ccfc55e9b6 show proper notification on incoming call 2020-04-20 15:57:30 +02:00
Daniel Gultsch 4c6ee9693a use appbarlayout in RtpSessionActivity 2020-04-20 15:57:30 +02:00
Daniel Gultsch 0e88b56eb4 display status information in ui 2020-04-20 15:57:30 +02:00
Daniel Gultsch a9a35fb74b show status in RtpSessionActivity 2020-04-20 15:57:30 +02:00
Daniel Gultsch f8c0328416 dummy Jingle activity 2020-04-20 15:57:30 +02:00
Daniel Gultsch 22c755c5ce implement session accept 2020-04-20 15:57:30 +02:00
Daniel Gultsch 9dfa9df790 implement sending of session-accept 2020-04-20 15:57:30 +02:00
Daniel Gultsch ac9a1a773e receive candidates/transport-info 2020-04-20 15:57:30 +02:00
Daniel Gultsch 885ec0febe a couple of bug fixes for SessionDescription.toString() 2020-04-20 15:57:30 +02:00
Daniel Gultsch f264ef9f8b create sdp string and set on peer connection 2020-04-20 15:57:30 +02:00
Daniel Gultsch b1c0e93b34 rudimentary rtpmap to session converter 2020-04-20 15:57:30 +02:00
Daniel Gultsch 2591a96945 sdp candidate to transport-info 2020-04-20 15:57:30 +02:00
Daniel Gultsch 4d70855b4c sdp to ice transport conversion 2020-04-20 15:57:30 +02:00
Daniel Gultsch b44a3aeac6 parse sdp to jingle (yet w/o transport) 2020-04-20 15:57:30 +02:00
Daniel Gultsch ef51ec2c1d create objects for ssma (xep-0339) 2020-04-20 15:57:30 +02:00
Daniel Gultsch 28ead10ca4 sdp media to description parsing 2020-04-20 15:57:30 +02:00
Daniel Gultsch 18059345c8 payload-type and rtp-hdrext sdp parsing 2020-04-20 15:57:30 +02:00
Daniel Gultsch 5b1d86d67e dummy code to get sdp out of (non-working) libwebrtc 2020-04-20 15:57:30 +02:00
Daniel Gultsch 3b857e6894 create temporary RtpSessionPropsoal as placeholder before we can create actual session 2020-04-20 15:57:30 +02:00
Daniel Gultsch e2e4390d51 untested sdp parser 2020-04-20 15:57:30 +02:00
Daniel Gultsch 766d1d603e show preliminary call button if contact supports it 2020-04-20 15:57:30 +02:00
Daniel Gultsch 4e13893662 create stub objects for most of what’s in description and transport 2020-04-20 15:57:30 +02:00
Daniel Gultsch 43cf1783a4 support multiple jingle contents 2020-04-20 15:57:30 +02:00
Daniel Gultsch b2aa0e3352 use final varible to mark initiator once connection object has been created 2020-04-20 15:57:30 +02:00
Daniel Gultsch 5b15348f13 process message inits 2020-04-20 15:57:30 +02:00
Daniel Gultsch 385692ea28 route jingle message inits 2020-04-20 15:57:30 +02:00
Daniel Gultsch a4acfb2a19 clean iq callback code in XmppConnection 2020-04-20 15:57:30 +02:00
Daniel Gultsch f9650b95d8 create stub JingleRTPConnection 2020-04-20 15:57:30 +02:00
Daniel Gultsch 963ddd11c2 refactor jingle code to use objects for TransportInfo 2020-04-20 15:57:29 +02:00
Daniel Gultsch eb22bd0499 create 'Description' object 2020-04-20 15:57:29 +02:00
Daniel Gultsch 7538e387ec fixed bug in ibb delivery introduced in earlier refactoring 2020-04-20 15:57:29 +02:00
Daniel Gultsch 34f42c73bc cleaned JinglePacket and Content element 2020-04-20 15:57:29 +02:00
Daniel Gultsch 23ebb6ae80 rename JingleConnection to JingleFileTransferConnection; use ID tuple to identify sessions 2020-04-20 15:57:29 +02:00
Daniel Gultsch 75f753e957 increase version name for easier debugging with multiple devices 2020-04-20 15:57:29 +02:00
Daniel Gultsch b40a65652f disable HTTP upload during jingle development
we are going to refactor jingle a lot. in order to better spot potential
bugs in the Jingle File Transfer implementation we are going to disable
HTTP upload during development.
2020-04-20 15:57:29 +02:00
Daniel Gultsch e964bb78ef added libwebrtc 2020-04-20 15:57:29 +02:00
Daniel Gultsch 1d62cb0024 pdf renderer might throw security exception on password protected pdf 2020-04-20 15:57:06 +02:00
Daniel Gultsch c5da699afe dont crash when fields names in caps are null 2020-04-20 15:53:52 +02:00
Daniel Gultsch 62934e6487 change wording of previous commit 2020-03-31 19:49:08 +02:00
Daniel Gultsch ff18ea452d display toast when trying to join channel with no enabled accounts 2020-03-31 19:46:05 +02:00
Daniel Gultsch 3d0138506d fixed typo. closes #3667 2020-03-31 11:18:16 +02:00
Daniel Gultsch 972e537ea1 conversations’ own backup makes system backup obsolete
closes #3666
2020-03-29 22:37:59 +02:00
Daniel Gultsch 7c13c8a4e5 pulled translations from transifex 2020-03-28 10:13:27 +01:00
Daniel Gultsch 4e33ebb308 close FileInputStream in MTM. fixes #1150 2020-03-26 08:25:22 +01:00
Daniel Gultsch 3cf469a43b update some dependencies 2020-03-20 12:59:30 +01:00
Daniel Gultsch e49ad3d573 pulled translations from transifex 2020-03-20 12:59:14 +01:00
Daniel Gultsch 0718c70f6b
clarify foreground notification for fdroid users 2020-03-19 09:51:32 +00:00
Daniel Gultsch 41ada3480c add jfif and jif as jpeg mime types 2020-03-12 21:28:54 +01:00
genofire 147a10a271
DOC: add screenshot to README.md 2020-03-10 20:50:54 +01:00
genofire 35b9745fc9
Merge tag '2.7.1' into develop 2020-03-10 20:30:04 +01:00
Daniel Gultsch 36de53cdec version bump to 2.7.1 + changelog 2020-03-10 11:54:11 +01:00
Daniel Gultsch 00191e2b60 explicitly use BouncyCastle for file crypto 2020-03-09 19:12:30 +01:00
Daniel Gultsch 257de4b51e fixed typo 2020-03-09 15:06:21 +01:00
Daniel Gultsch 7851174b77 modify 'create backup' faq entry 2020-03-08 21:10:58 +01:00
Daniel Gultsch aecb771ab5 use 16 byte IVs for http upload files larger than 768KiB
Ever since Android 9+ switched to Conscrypt we can no longer efficiently
encrypt (and decrypt) large files with AES-GCM. We did’t notice this before
because when using 16 byte IVs even modern Androids will fall back to bouncy
castle. However the 'bug'/'feature' in Conscrypt surfaced when we switched over
to 12 byte IVs (which uses Conscrypt on Android 9+)
Switching back entirely to 16 byte IVs is undesirable as this would break
compatibility with Monal. So we end up with a weird compromise where we use
12 byte for normale plain text OMEMO messages and 'small' files where the
inefficiencies aren’t a problem.

The result of this commit is that Monal won’t be able to receive our files
larger than 768KiB. However the alternative is that Conversations would always
OOM when attempting to send larger files (where large depends on the available
RAM.)

fixes #3653
2020-03-08 13:13:19 +01:00
Daniel Gultsch 3be7c3bca2 pulled translations from transifex 2020-03-07 23:15:43 +01:00
Daniel Gultsch 788b0f7f2d momentarily go back to 16 byte IVs
The Crypto provider used from Android P onwards (conscrypt) has a weird bug
that when 12 bytes IVs are used it will decrypt or encrypt the entire file
in RAM instead of streaming it. That will cause OOM for 'larger' files on http
upload. (both downloads and uploads are effected)

It is currently unclear why this is happening and why Conscrypt is put into a
different mode.
We are only observing that Android versions below P are fine and using 16 bytes
is fine on all Android versions.
2020-03-07 18:33:29 +01:00
Daniel Gultsch b2e9a954ab avoid bundled source selection that comes with ImageCropper on Android 10 2020-03-05 13:17:18 +01:00
Daniel Gultsch 7b5d0e034e when setting moderated also set non standard field to not make users participants by default 2020-03-02 11:11:23 +01:00
Daniel Gultsch 08bc3ca0d5 do not merge oob messages 2020-03-02 11:10:38 +01:00
genofire d353372768
fix typo (#3646)
sorry, this makes me crazy
2020-02-29 15:02:36 +01:00
genofire fed1dfa141
metadata: release changelog - happy eyeball caching ... 2020-02-29 13:28:49 +01:00
genofire 944779ba78
Merge tag '2.7.0' into develop 2020-02-29 13:20:50 +01:00
Daniel Gultsch 0f40e7e73b fixed typo in resolver that cause hostnames not to be marked as authenticated (with DNSSec)
usually this wasn’t a problem as this is only the fallback after no IPs
have been discovered.

this also isn‘t a security issue as worst case is the hostname doesn’t get
accepeted as fallback in cert validation.

thanks @genofire for spotting this
2020-02-29 12:55:54 +01:00
genofire 5dd666257d
[BUGFIX] crash on resolve.toString if hostname is null (#3635) 2020-02-29 10:14:52 +01:00
Daniel Gultsch 17e8aa43fb
Fixed link to group chat. closes #3624 2020-02-29 08:21:50 +00:00
Daniel Gultsch 12907a52e3 version bump to 2.7.0 + changelog 2020-02-19 19:55:36 +01:00
Daniel Gultsch d781bc9cb9 pulled translations from transifex 2020-02-19 19:49:38 +01:00
genofire c3bcaaa76b
reimplement dns resolver cache + add timeout for cache 2020-02-19 19:36:20 +01:00
genofire b28b1dd154
happy eyeball: fix dnssec for plain ip an srv-cname 2020-02-19 18:58:40 +01:00
genofire 89ecc47897
Revert "Drop own implementation of DNS-Server selection"
This reverts commit d4b6aff9c1.
2020-02-18 20:59:42 +01:00
genofire 0ec4088626
Merge commit '2.7.0-beta' into develop 2020-02-18 07:21:19 +01:00
Daniel Gultsch d73cb08ec6 version bump to 2.7.0-beta 2020-02-17 11:14:11 +01:00
Daniel Gultsch d6ae9d8d14 switch to sending 12 byte IVs 2020-02-17 11:13:38 +01:00
Daniel Gultsch 27ca031f93 pulled translations from transifex 2020-02-17 11:13:18 +01:00
Daniel Gultsch e4685ad47a hide local part of group chat xmpp address 2020-02-17 11:10:41 +01:00
Daniel Gultsch d37aeef182 prevent sharing of xmpp uri for group chat bookmarks 2020-02-16 17:30:54 +01:00
Daniel Gultsch 9b55d90705 do not warn user if bookmark already exists
fixes #3631
2020-02-16 16:04:45 +01:00
Daniel Gultsch d64bc1776b show pdf previews in media browser
fixes #3639
2020-02-14 16:02:15 +01:00
Daniel Gultsch c34d40ebff fix user adapter view recycling bug 2020-02-14 12:04:11 +01:00
Hugo Trentesaux 62021aae59
corrected typo (#3640) 2020-02-14 09:49:18 +01:00
genofire 80dd53c3f0
happy eyeball: fix NPE on connecting without dns 2020-02-13 15:57:12 +01:00
genofire e3b5be777c
doc: drop metadata from siacs 2020-02-13 14:30:01 +01:00
Daniel Gultsch a06eb10ed8 fixed rendering of transparent pdfs; white overlay for very dark pdf 2020-02-12 09:09:34 +01:00
Daniel Gultsch fc2b27c3b4 create pdf overlay for pdf thumbs 2020-02-11 19:55:31 +01:00
Daniel Gultsch 2aee26c49a display PDF previews 2020-02-11 17:41:54 +01:00
Daniel Gultsch 6acb15dd15 pulled translations from transifex 2020-02-11 17:41:24 +01:00
genofire 9247b8dc18
metadata: fix happy eyeball 2020-02-10 02:23:12 +01:00
genofire 3e29c21f80
sum7: fix fork translation 2020-02-10 02:23:11 +01:00
genofire 109d38e1b1
[BUGFIX] Resolver: fallback for invalid SRV CNAME entries 2020-02-10 02:23:10 +01:00
genofire a1ab687f6e
[BUGFIX] Resolver: allow srv entry with priority 0 2020-02-10 02:23:09 +01:00
genofire e54a2cc04e
improve logging of happy eyeball 2020-02-10 02:23:09 +01:00
genofire 3df33228a8
[BUGFIX] happy eyeball: concurrents resolve connect 2020-02-10 02:23:08 +01:00
genofire 5e0856ee69
[BUGFIX] happy eyeball fix null pointers 2020-02-10 02:22:46 +01:00
Licaon_Kter a520e93b1b
No need to format text here here (#3632) 2020-02-04 22:00:40 +01:00
James Lee ba2cca08e9
Update README.md to mention XEP-0198 is required for push notifications (#3633) 2020-02-04 22:00:18 +01:00
Daniel Gultsch 69680134c9 pulled translations from transifex 2020-01-28 10:24:46 +01:00
Daniel Gultsch 18a90fde8c fix country selector on older androids 2020-01-24 10:39:50 +01:00
Daniel Gultsch 09dff6310d fix button alignment on Andrid <4.4
fixes #3625
2020-01-24 10:38:54 +01:00
Licaon_Kter 37907e6d97 Add changelog for 362 (#3623) 2020-01-20 23:37:15 +01:00
genofire 3cc75939bc
metadata: add 2.6.4 changelogs 2020-01-20 22:04:41 +01:00
genofire cf6323cc00
Merge tag '2.6.4' into develop 2020-01-20 22:03:41 +01:00
Daniel Gultsch 4189ed7419 version bump to 2.6.4 + changelog 2020-01-20 21:37:03 +01:00
Daniel Gultsch 843d7fe12d evict cached previews when file gets deleted 2020-01-20 10:54:55 +01:00
Daniel Gultsch 66da5ffb6c fixed download of previously deleted omemo files 2020-01-20 10:43:17 +01:00
genofire ea2adcc4f5
[BUGFIX] fine print label for six month 2020-01-19 22:10:00 +01:00
genofire f80eac3a38
metadata: add 2.6.3 changelogs 2020-01-19 21:16:43 +01:00
genofire 2077bf739b
Merge tag '2.6.3' into develop 2020-01-19 21:13:45 +01:00
Daniel Gultsch 9af056bb16 temporarily go back to 16 byte iv for imminent bug fix release 2020-01-19 13:40:48 +01:00
Daniel Gultsch c62d5ebcb3 added failure logging to http download 2020-01-19 11:36:26 +01:00
Daniel Gultsch 99a98fe6c0 pulled translations from transifex 2020-01-19 10:42:04 +01:00
Daniel Gultsch c502503994 pass omemo decrypt up to higher layers to count as download error. decrypt all encrypted files 2020-01-19 10:01:43 +01:00
Daniel Gultsch 581eb5556f make theme depend on dark/night mode on android 10+
closes #3611
2020-01-18 14:14:43 +01:00
Daniel Gultsch e38a9cd729 omemo changes: use 12 byte IV, no longer accept auth tag appended to payload 2020-01-18 12:08:03 +01:00
Daniel Gultsch b56f6fbf4c updated screenshots 2020-01-18 09:12:50 +01:00
Licaon_Kter 1008bf405e Add faastlane folder with updated screenshots (#3617) 2020-01-17 19:53:17 +01:00
Daniel Gultsch 0fe47e5e4f removed logging that accidentally got commited earlier 2020-01-16 20:46:45 +01:00
Daniel Gultsch c8b5b96af9 support xmpp uris with single 'omemo' parameter for fingerprint (w/o sid) 2020-01-16 18:54:56 +01:00
Daniel Gultsch e0c034c2c9 version bump to 2.6.3 + changelog 2020-01-15 14:47:50 +01:00
Daniel Gultsch 91ca25d89c pulled translations from transifex 2020-01-15 14:20:58 +01:00
Daniel Gultsch 724f30bcc5 fixed adding omemo encrypted images to gallery 2020-01-15 14:19:17 +01:00
Daniel Gultsch f3fb108144 pulled translations from transifex 2020-01-11 15:37:50 +01:00
ChaosKid42 f1d4127ace simplify osm attribution (#3613) 2020-01-11 15:25:58 +01:00
Daniel Gultsch f57a28ca32 add scan qr button to welcome screen
closes #2920
2020-01-11 14:06:35 +01:00
Daniel Gultsch 8e0c02f3cc use installreferrer libray instead of broadcast listener 2020-01-11 11:08:09 +01:00
Daniel Gultsch 388c656bb9 fixed Quicksy flavor by implementing stubs for easy-xmpp utils 2020-01-10 17:54:17 +01:00
Daniel Gultsch 9653d68bdd parse install referrer from gplay 2020-01-10 12:51:04 +01:00
Daniel Gultsch 6025e5de28 make registration uris work with fixed usernames 2020-01-09 20:10:19 +01:00
Daniel Gultsch e57bd477a9 preselect proper account in create contact dialog after following invite 2020-01-09 17:42:02 +01:00
Daniel Gultsch 6205574bcb support ?roster;ibr=y xmpp uris 2020-01-09 17:42:02 +01:00
Daniel Gultsch d039c4870f support registration via pars tokens 2020-01-09 17:42:02 +01:00
Daniel Gultsch 387e32cf8e pulled translations from transifex 2020-01-09 17:41:37 +01:00
Daniel Gultsch 7803a073ec bump version code 2020-01-09 10:10:22 +01:00
Daniel Gultsch 80e83f77a7 pulled translations from transifex 2020-01-08 19:05:12 +01:00
Daniel Gultsch 05c3e047f6 fix retrofit to 2.6.x 2020-01-08 19:02:29 +01:00
Daniel Gultsch 471b02ce86 explicity set okhttp to 3.12.x 2020-01-08 11:07:15 +01:00
Daniel Gultsch 4e0f05f0a1 refactored xmpp uri parsing to expose all params 2020-01-08 10:51:18 +01:00
Daniel Gultsch 1dad70fbc3 version bump to 2.6.2 + changelog 2020-01-05 18:06:27 +01:00
Daniel Gultsch ac2b3150f4 pulled translations from transifex 2020-01-05 16:17:20 +01:00
Daniel Gultsch aef1b30f27 increase size of checkmark 2020-01-05 16:00:11 +01:00
Daniel Gultsch 9ccb5fdb46 show edit display name in all flavors 2020-01-05 15:59:54 +01:00
Daniel Gultsch 31ba7fab25 make omemo setting default to 'always' on Quicksy 2020-01-05 13:53:04 +01:00
Daniel Gultsch 83e1d0d0a5 make checkmark icon more material 2020-01-05 13:30:26 +01:00
Anjan Momi 0ddfc51d6c show number of participants in a MUC
fixes #3447
2020-01-05 11:22:39 +01:00
Anjan Momi 0315b3b5c2 added openstreetmap copyright notice to maps
fixes #3588
2020-01-04 20:44:05 +01:00
Daniel Gultsch 42d69fd5e3 don’t crash when long pressing invalid geo-uris 2019-12-30 00:23:44 +01:00
Daniel Gultsch af3c106dc8 reset file to normal message when attempting re-download after delete
fixes: #3604
2019-12-30 00:14:55 +01:00
Daniel Gultsch 2b375877eb extend omemo auto expiry to 42 days (6 weeks)
closes #3584
2019-12-29 15:34:06 +01:00
Daniel Gultsch ed4a73e1c7 persist file size across aborts
fixes #3601
2019-12-26 19:01:01 +01:00
Daniel Gultsch a60e29d4f4 removed c style array 2019-12-26 17:36:16 +01:00
Daniel Gultsch 9bcef7a8e7 display '#' in generated channel avatars 2019-12-22 19:30:58 +01:00
Daniel Gultsch c898486534 add request package install permission
starting with api 26 an app needs to hold that permission to even show the app install screen
2019-12-22 18:19:05 +01:00
Marc Schink 5117956648 Add missing space in debug output 2019-12-21 13:16:22 +01:00
Marc Schink 92cf221a2b Implement download resumption for OMEMO encrypted files 2019-12-21 13:16:18 +01:00
Marc Schink cae124d93f createOutputStream(): allow to disable decryption 2019-12-20 19:17:55 +01:00
Daniel Gultsch ef98a24bf6 add .heic to list of known mime types
fixes #3598
2019-12-12 18:54:46 +01:00
genofire 8e93f2423c
metadata: add 2.6.1 changelogs 2019-12-12 15:21:04 +01:00
genofire 7fa520e2fd
doc: F-Droid link in README 2019-12-12 15:15:42 +01:00
genofire d4f7c2b34a
Merge tag '2.6.1' into develop 2019-12-12 15:12:49 +01:00
Daniel Gultsch 94ee4d48c6 version bump to 2.6.1 + changelog 2019-12-08 12:02:20 +01:00
Daniel Gultsch 8d245fc754 don’t use secure delete when migrating edit column 2019-12-08 11:33:09 +01:00
Daniel Gultsch 1dad17ada4 pulled translations from transifex 2019-12-08 11:32:09 +01:00
Daniel Gultsch 00361e1e3d make + in e164 pattern not optional 2019-12-06 11:16:33 +01:00
Daniel Gultsch 4e66b25c11 pulled translations from transifex 2019-12-06 10:51:15 +01:00
Daniel Gultsch a3d639747a fixups for last commit 2019-12-05 14:03:54 +01:00
Daniel Gultsch 8263fb73e9 jingle ibb: wait to receive ibb
previously we signalled succesfull file reception after receiving enough bytes on ibb;
however that causes us to race with the session-info file hash. now the recipient will wait for
<close/> and the sender will make sure to send the session-info before sending close.

closes #3500
2019-12-05 13:28:14 +01:00
Daniel Gultsch 1cf7a2b832 pulled translations from transifex 2019-12-04 20:58:22 +01:00
Daniel Gultsch 8a5d658b2a reduce cursor size back to 4m; now that the cause is fixed 2019-12-04 20:46:22 +01:00
Daniel Gultsch cc79d8f6b3 properly restore LMC edits. switch to LMC v1.1
fixes #3566

closes #3592
2019-12-04 19:20:24 +01:00
Daniel Gultsch b3c00d7163 use Base64.NO_WRAP instead of trim() 2019-12-04 17:35:06 +01:00
Licaon_Kter c5ea734761 Update example versions (#3594) 2019-12-04 15:01:04 +01:00
Daniel Gultsch 83520ad8e7 show jabber accounts from local address in Quicksy flavor 2019-12-02 13:50:58 +01:00
Daniel Gultsch b135486bb4 prevent crash when deleting account on servers that don't support omemo 2019-12-02 13:21:18 +01:00
Daniel Gultsch a99d7a7400 increase cursor window size on Android P when restoring messages 2019-12-02 13:20:53 +01:00
genofire 76ad8f1389
metadata: update screenshots 2019-11-25 13:40:07 +01:00
genofire 8d996f390a
metadata: release happy eyeball 2019-11-21 15:55:39 +01:00
genofire 50456e3cac
Networkstack: easy happy eyeball 2019-11-21 15:39:12 +01:00
genofire c437fb067b
sum7: fix domain translation 2019-11-20 01:53:19 +01:00
Daniel Gultsch 10c5d151d3 delete cached posh file after not being able to verify 2019-11-18 19:12:04 +01:00
Daniel Gultsch 9fb94d83db
remove link to amazon app store 2019-11-17 20:56:48 +00:00
Daniel Gultsch 432fd3e3bf remove mentioning of Conversations Legacy 2019-11-12 09:12:05 +01:00
genofire 1c0c6a6fba
metadata: add 2.6.0 changelogs 2019-11-10 22:51:10 +01:00
genofire ec92294e41
Merge tag '2.6.0' into develop 2019-11-10 22:50:37 +01:00
Daniel Gultsch eb943619af do not crash when audio file reports zero length 2019-11-10 11:30:58 +01:00
Daniel Gultsch 97745bdfbe prevent crash when counterpart in message was null 2019-11-10 11:30:31 +01:00
Daniel Gultsch 7b7719db8c version bump to 2.6.0 2019-11-10 09:50:23 +01:00
Daniel Gultsch 77a46063e2 pulled translations from transifex 2019-11-09 22:59:29 +01:00
Daniel Gultsch 79e174743e check if sender is in contact list before accepting jingle file 2019-11-09 22:58:02 +01:00
Daniel Gultsch 8d6fdfbde7 disable local server disco on Quicksy flavor 2019-11-09 10:20:58 +01:00
Daniel Gultsch f6724e405e allow jingle state transition for fallback after proxy failure 2019-11-09 09:31:35 +01:00
Daniel Gultsch a651703a9e version bump to 2.6.0-beta.2 2019-11-08 22:37:24 +01:00
Daniel Gultsch 79f8b3dad2 pulled translations from transifex 2019-11-08 22:37:09 +01:00
Daniel Gultsch 8e42d0d39c make jingle state transitions less error prone 2019-11-08 22:27:14 +01:00
Daniel Gultsch 63cc5f96ed version bump to 2.6.0-beta + changelog 2019-11-08 14:42:44 +01:00
Daniel Gultsch b6ce3d9175 bump okhttp library 2019-11-08 14:14:56 +01:00
Daniel Gultsch aa50f8da9d move foreground setting and backup setting to main settings screen 2019-11-08 14:14:28 +01:00
Daniel Gultsch 7cc2478f5c remove 'send indicate' setting and default to true 2019-11-08 12:23:06 +01:00
Daniel Gultsch b320dea4d9 fixed spinning wheel when switching between local and jabber.network discovery 2019-11-08 12:18:39 +01:00
Daniel Gultsch abc1cb5a89 remove 'indicate received' setting and default to true 2019-11-08 12:06:38 +01:00
Daniel Gultsch 333f629b32 clarify image compression setting 2019-11-08 11:54:03 +01:00
Daniel Gultsch 7f25d91d33 do not validate port if hostname is empty. closes #3578 2019-11-03 22:03:46 +01:00
Daniel Gultsch f7b7464a65 fixed links in privacy warning in channel discovery. fixes #3577 2019-11-02 17:00:23 +01:00
Daniel Gultsch 07786d4576 optionally search local muc rooms instead of jabber.network 2019-11-02 09:43:37 +01:00
Daniel Gultsch adfbe59e57 mark silent notifications as local only
this will prevent silent notifications (for example those supressed by grace
period) showing up on my smart watch
2019-11-01 11:03:58 +01:00
Daniel Gultsch ecad9cbe3c catch security exception when passing on share intent that didn’t give us permission 2019-11-01 10:40:17 +01:00
Daniel Gultsch c83caad3f5 changed explanation for grace period 2019-10-26 14:11:14 +02:00
Daniel Gultsch 2bed0dad12 attempt to fix some rare crashes 2019-10-26 13:23:27 +02:00
Daniel Gultsch db3ca3f165 store message bodies up to 1MB 2019-10-23 22:34:43 +02:00
Daniel Gultsch ab516299e7 catch all exceptions when closing closable 2019-10-23 22:34:25 +02:00
Daniel Gultsch 2f59d66fd1 catch dead system exception when creating error notification 2019-10-23 22:33:51 +02:00
Daniel Gultsch 9c24ebd57b
README: removed personal JID and ref website instead 2019-10-21 19:23:21 +00:00
Daniel Gultsch 574ec66123
add github sponsors 2019-10-18 10:33:27 +00:00
Daniel Gultsch 7e37a325a0 updated btc address in readme 2019-10-15 20:46:23 +02:00
Daniel Gultsch 537c8bb300
recommend ejabberd in FAQ 2019-10-15 11:04:12 +00:00
Daniel Gultsch 9bea8074ab fixed loading channel results from cache 2019-10-11 19:39:45 +02:00
Daniel Gultsch e0b5010f24 don’t mark pgp encrypted files received from dino as deleted 2019-10-11 15:37:41 +02:00
Martin/Geno f33c486263
metadata: add 2.5.12 changelogs 2019-10-10 14:41:18 +02:00
Martin/Geno 72be751568
Merge tag '2.5.12' into develop 2019-10-10 14:37:39 +02:00
Daniel Gultsch ddffe198c6 change background if no results found in channel search. fixes #3559 2019-10-10 12:54:43 +02:00
Daniel Gultsch 2ab65609e4 always show 'contact details' on avatar long press in non-anon 2019-10-09 20:40:56 +02:00
Daniel Gultsch c17f2dfd56 version code bump + modified changelog 2019-10-07 22:16:11 +02:00
Daniel Gultsch c21e9c22a7 pulled translations from transifex 2019-10-07 22:08:13 +02:00
Daniel Gultsch 8578af2b2b flush on socks connection 2019-10-07 22:02:36 +02:00
Daniel Gultsch 799fffcb4a Revert "pulled translations from transifex"
This reverts commit ea633f3d8f.
2019-10-07 21:58:57 +02:00
Martin/Geno 9c5de8b13f
rename app_name 2019-10-07 15:18:48 +02:00
Daniel Gultsch 79c3135b4d properly guard bookmarks2 deletion 2019-10-07 13:49:39 +02:00
Daniel Gultsch 077e695f68 trigger omemo self healing for live msgs on server w/o MAM 2019-10-07 13:38:56 +02:00
Daniel Gultsch cb3dc48d5a pulled translations from transifex 2019-10-07 13:35:58 +02:00
Daniel Gultsch 4df8343b05 set autojoin=true after following invite 2019-10-07 09:51:03 +02:00
Daniel Gultsch b96ef1e591 update ui after bookmark change 2019-10-07 09:37:12 +02:00
Daniel Gultsch f530e395ca bookmarks2. introduce #compat namespace 2019-10-07 09:37:12 +02:00
Daniel Gultsch 94c592f213 leave/join on bookmark modifactions 2019-10-07 09:37:12 +02:00
Daniel Gultsch f26e0720c6 support for purge and delete 2019-10-07 09:37:12 +02:00
Daniel Gultsch 95bf66ca7d Bookmarks2: support retraction 2019-10-07 09:37:12 +02:00
Daniel Gultsch f1aa5f2cab support for delete bookmarks2 2019-10-07 09:37:12 +02:00
Daniel Gultsch 6923b2898c WIP Bookmarks 2 support 2019-10-07 09:37:12 +02:00
Daniel Gultsch ea633f3d8f pulled translations from transifex 2019-10-07 09:36:15 +02:00
Daniel Gultsch 3a0c6bc17e version bump to 2.5.12 + changelog 2019-10-06 14:37:35 +02:00
Daniel Gultsch 781ec93154 pulled translations from transifex 2019-10-06 14:37:28 +02:00
ChaosKid42 af898b3bc4 LMC: find replacedMessages based on bare JID (#3548) 2019-10-05 20:18:42 +00:00
Daniel Gultsch 6155938623 show reason in error message 2019-10-05 22:14:38 +02:00
Daniel Gultsch 01fc78d2a5 disable context menu on failed jingle files. fixes #3556 2019-10-05 22:05:03 +02:00
Daniel Gultsch d6835101b9 fixes for previous commit 2019-10-05 21:58:21 +02:00
Daniel Gultsch 7ce7a505a0 mark cancelled jingle ft as such on both sides
fixes #3554
2019-10-05 21:30:15 +02:00
Daniel Gultsch 6776603b90 fully read port in socks connection
incoming direct connections in receive mode wouldn’t clear the entire
destination from the input stream; thus adding a leading 0x00 to the file

fixes #3557
2019-10-03 20:47:31 +02:00
Martin/Geno 875d71e9be
fix - database update 2019-10-03 16:29:30 +02:00
Daniel Gultsch 3d332f6f35 set shorter timeouts when using direct candidates 2019-10-03 09:37:01 +02:00
Marcin Mielniczuk c7bbfaf061 Use a more meaningful name for old status (#3552) 2019-10-01 19:42:05 +00:00
Wiktor Kwapisiewicz 7c631c493a Use dark navigation bar in QR scanner activity (#3551)
* Use dark navigation bar on dark theme

This approach uses `tools:targetApi` instead of separate theme file and
avoids lint errors.

* Use dark navigation bar in QR scanner activity

This is consistent with the black background that is already used in
that activity.
2019-10-01 14:44:53 +00:00
Daniel Gultsch 322352ccbf use new jabber.search.network endpoint 2019-10-01 12:42:12 +02:00
Daniel Gultsch 37b87e18ee fix NPE when using channel search and DOMAIN_LOCK closes #3458 2019-10-01 12:24:57 +02:00
Daniel Gultsch f8bd4284a5 report not-acceptable on jingle errors 2019-10-01 11:31:15 +02:00
Daniel Gultsch d2d9bbe3da improved jingle debugging 2019-09-29 13:32:45 +02:00
Daniel Gultsch aef394c9f0 ability to open files from media preview. fixes #3521 2019-09-29 02:00:06 +02:00
Daniel Gultsch 618d892ae7 account deletion: only attempt to delete omemo id when connected 2019-09-29 01:40:40 +02:00
Daniel Gultsch 7b160a358e do not add 'quote' when sharing own msgs 2019-09-28 23:56:29 +02:00
Daniel Gultsch 863ac7f2e5 show resource prompt when sending uncompressed video 2019-09-28 23:56:02 +02:00
Daniel Gultsch 9276eff1db delete omemo keys when deleting account 2019-09-28 21:52:07 +02:00
Martin/Geno c3cb5f2838
metadata: add 2.5.9 - 2.5.11 changelogs 2019-09-28 17:23:34 +02:00
Martin/Geno 82e244b96b
Merge tag '2.5.11' into develop 2019-09-28 17:19:06 +02:00
Daniel Gultsch 175d9f539e version bump to 2.5.11 + changelog 2019-09-28 11:04:08 +02:00
Daniel Gultsch 705f31518c pulled translations from transifex 2019-09-28 10:37:21 +02:00
Daniel Gultsch a2d521568d demote okhttp to 3.12 to work with old android 2019-09-28 10:35:36 +02:00
Daniel Gultsch 0fc41d8c82 version bump to 2.5.10 + changelog 2019-09-27 20:29:22 +02:00
Daniel Gultsch a3227caa37 pulled translations from transifex 2019-09-27 16:30:33 +02:00
Daniel Gultsch 11736ce48c make list selection manager work with app compat 2019-09-26 23:47:55 +02:00
Daniel Gultsch f9e1e856d2
Merge pull request #3546 from marcellippmann/master
Correct a small typo in Romanian translation
2019-09-25 19:19:33 +00:00
Daniel Gultsch 4dd4886758 pulled translations from transifex 2019-09-25 21:19:09 +02:00
Daniel Gultsch c749aa1cae bumped okhttp 2019-09-25 21:12:12 +02:00
Marcel Lippmann e2886098fe Correct a small typo in Romanian translation 2019-09-25 18:15:36 +02:00
Daniel Gultsch 6c5b71440f channel search result long press to show join dialog 2019-09-24 17:29:34 +02:00
Daniel Gultsch 92e27a3649 pulled translations from transifex 2019-09-24 12:12:20 +02:00
Daniel Gultsch 3733148ac8 version bump to 2.5.9 + changelog 2019-09-24 12:11:51 +02:00
Daniel Gultsch bea94d565b use http link for join 2019-09-22 11:45:10 +02:00
Daniel Gultsch 98384314cd clarify transifex procedure 2019-09-22 11:43:44 +02:00
Daniel Gultsch 75d35c357e print emoji only status messages larger 2019-09-22 11:39:34 +02:00
Daniel Gultsch 426090c301 do not parse invites from type=groupchat 2019-09-22 10:00:09 +02:00
Daniel Gultsch d2ef0728a3 pulled translations from transifex 2019-09-21 10:52:34 +02:00
Daniel Gultsch 3820950408 show context menu in channel search to share uri 2019-09-21 10:51:05 +02:00
Daniel Gultsch ed46d12115 close correct socket after faulty jingle socks connection 2019-09-20 10:00:57 +02:00
Daniel Gultsch 5e1d2a92a6 uploaded doap file to new syntax 2019-09-19 15:33:21 +02:00
Daniel Gultsch d0d87cb8a6 added doap file 2019-09-19 15:19:09 +02:00
Daniel Gultsch abe01f18f2 improved logging for messages waiting for join 2019-09-19 10:00:50 +02:00
Daniel Gultsch af74c3604c fixed R8 weirdness 2019-09-18 11:04:36 +02:00
Daniel Gultsch 02351dc0fb fixed direct invites after adhoc 2019-09-18 09:55:18 +02:00
Daniel Gultsch 4c92d1b755 cancel spinning wheel on muclumbus error 2019-09-18 09:17:47 +02:00
Martin/Geno 4745ab65a1
fix(metadata): typo in summary 2019-09-17 19:12:40 +02:00
Daniel Gultsch 2ec1d0cc09 warn when using _only_ ambiguous cyrillic 2019-09-16 15:13:53 +02:00
Daniel Gultsch d963d95e30 fixed some minor NPE 2019-09-16 14:20:15 +02:00
Daniel Gultsch ab57c59838 clear notifications when deleting account 2019-09-15 12:23:56 +02:00
Daniel Gultsch 4cd652884c do not finish or repair sessions for untrusted senders
finishing (sending a key transport message in response to pre key message) as
well as reparing sessions will leak resource and availability and might in
certain situations in group chat leak the Jabber ID.

Therefor we disable that. Leaking resource might not be considered harmful by
a lot of people however we have always doing similar things with receipts.
2019-09-15 11:49:58 +02:00
Daniel Gultsch be4953b1e4 parse LMC 1.1 2019-09-13 16:38:15 +02:00
Daniel Gultsch e395da18bf when parsing omemo messages ensure we only find one element 2019-09-12 12:43:11 +02:00
Daniel Gultsch a7c47a33fa inherit language from parent message when finding localized body 2019-09-12 12:42:42 +02:00
Martin/Geno 68ee3d9994
metadata: add 2.5.7 changelog 2019-09-12 08:25:37 +00:00
Martin/Geno fa0452761f
Merge tag '2.5.8' into develop 2019-09-12 08:23:37 +00:00
Daniel Gultsch 9bf5fb98ac show language in message bubble if multiple language variants were received
XML and by inheritence XMPP has the feature of transmitting multiple language
variants for the same content. This can be really useful if, for example, you
are talking to an automated system. A chat bot could greet you in your own
language.

On the wire this will usually look like this:

```xml
<message to="you">
  <body>Good morning</body>
  <body xml:lang="de">Guten Morgen</body>
</message>
```

However receiving such a message in a group chat can be very confusing and
potentially dangerous if the sender puts conflicting information in there and
different people get shown different strings.

Disabeling support for localization entirely isn’t an ideal solution as on
principle it is still a good feature; and other clients might still show a
localization even if Conversations would always show the default language.

So instead Conversations now shows the displayed language in a corner of the
message bubble if more than one translation has been received.

If multiple languages are received Conversations will attempt to find one in
the language the operating system is set to. If no such translation can be
found it will attempt to display the English string.

If English can not be found either (for example a message that only has ru and
fr on a phone that is set to de) it will display what ever language came first.

Furthermore Conversations will discard (not show at all) messages with with
multiple bodies of the same language. (This is considered an invalid message)

The lanuage tag will not be shown if Conversations received a single body in
a language not understood by the user. (For example operating system set to
'de' and message received with one body in 'ru' will just display that body as
usual.)

As a guide line to the user: If you are reading a message where it is important
that this message is not interpreted differently by different people (like a
vote (+1 / -1) in a chat room) make sure it has *no* language tag.
2019-09-12 10:12:51 +02:00
Daniel Gultsch 9273ba5653 pulled translations from transifex 2019-09-12 10:09:28 +02:00
Daniel Gultsch a39fff5c8e fixed 2 issues reported by new linter 2019-09-11 15:42:43 +02:00
Daniel Gultsch 810d3455a2 bumped gradle version 2019-09-11 15:42:16 +02:00
Daniel Gultsch dfa6cebe99 version bump to 2.5.8 + changelog 2019-09-10 13:08:09 +02:00
Daniel Gultsch 24d1fc2bb5 pulled translations from transifex 2019-09-09 09:43:10 +02:00
Daniel Gultsch 8b69f8ae50 include ticker information in notification. fixes #3532 2019-09-08 17:58:15 +02:00
Daniel Gultsch dd9777a6b7 do not include scope in ipv6 annoucment 2019-09-08 17:44:26 +02:00
Martin/Geno 38c5ab7428
metadata: add 2.5.7 changelog 2019-09-08 06:55:10 +00:00
Martin/Geno 13b55fde20
Merge tag '2.5.7' into develop 2019-09-08 06:53:06 +00:00
Daniel Gultsch 9129c9acde JET uses plain text file size 2019-09-06 13:11:37 +02:00
Daniel Gultsch 0e1c26c569 do not include link local in direct candidates 2019-09-05 13:17:45 +02:00
Daniel Gultsch 571c29f92a make Tor connections work with direct TLS 2019-09-05 12:08:58 +02:00
Daniel Gultsch 7ec1b443ab implemented support for for jingle encrypted transports (XEP-0396) 2019-09-04 16:14:01 +02:00
Daniel Gultsch ff4d127b6f use higher priority for proxy on receiving end 2019-09-02 08:51:50 +02:00
Daniel Gultsch 90e669313e send fallback to ibb after proxy activation failed 2019-09-01 21:41:28 +02:00
Daniel Gultsch 10b1365264 also reply with direct connections on response 2019-09-01 20:42:07 +02:00
Daniel Gultsch 1c413edf06 bare minimum direct connections 2019-09-01 15:06:59 +02:00
Daniel Gultsch 783ed53d3a order canditates by priority before attempting to connect 2019-09-01 11:34:36 +02:00
Daniel Gultsch 7d6bd540d9 version bump to 2.5.7 + changelog 2019-08-29 12:14:01 +02:00
Daniel Gultsch e49473007e
fix russian localization (#3526) 2019-08-29 07:48:34 +00:00
Daniel Gultsch ab86cc4689 pulled translations from transifex 2019-08-29 09:48:13 +02:00
Daniel Gultsch 796db8ffb6 revert zxing library to 3.3.3 2019-08-29 09:46:33 +02:00
Martin/Geno 88179fb66e
add f-droid changelog 2019-08-28 11:25:17 +02:00
Martin/Geno e304b6b152
Merge tag '2.5.6' into develop 2019-08-28 11:22:27 +02:00
Daniel Gultsch 29d0bed38b when sharing text from Conversations to Conversations use quotes 2019-08-26 13:40:47 +02:00
Andrey Sokolov c16438c475 fix russian localization 2019-08-25 12:46:09 +03:00
Daniel Gultsch 219ae65ef7 more ibb fixes (include sid in transport-accept) 2019-08-22 14:47:30 +02:00
Daniel Gultsch 2706deedbd pulled translations from transifex 2019-08-22 10:01:02 +02:00
Daniel Gultsch 98eb49904c fixed unlikely race between enabling carbons and discovering last MAM id 2019-08-22 09:57:39 +02:00
Daniel Gultsch c92cc5f5b7 version bump to 2.5.6 + changelog 2019-08-19 14:48:10 +02:00
Daniel Gultsch c84a89924e include pgp sig and status in presence to non anon muc 2019-08-19 14:27:11 +02:00
Daniel Gultsch f11adf4c02 do not put default nick into bookmark if none has been set before 2019-08-19 13:55:52 +02:00
Daniel Gultsch 8574bea280 pulled translations from transifex 2019-08-18 13:12:02 +02:00
Daniel Gultsch fddd974412 do not put version info into disco
This will reduce traffic by limiting the variety of different caps version hashes.
It might also improve privacy by not leaking fdroid vs playstore vs self build information
2019-08-18 13:03:58 +02:00
Daniel Gultsch daf7e6224f fixed pgp decryption of automatically accepted jingle ft 2019-08-16 15:29:58 +02:00
Daniel Gultsch d3ccba445a increased reconnection interval after policy violation 2019-08-16 15:00:26 +02:00
Daniel Gultsch 9ea4f1534b pulled translations from transifex 2019-08-16 14:12:13 +02:00
Daniel Gultsch 0770914edf refactored filename and extension parsing 2019-08-16 14:09:42 +02:00
Daniel Gultsch c039ffcf35 clean up logging 2019-08-14 18:44:57 +02:00
Daniel Gultsch 195988398e removed dead code in location activity 2019-08-14 17:04:45 +02:00
Daniel Gultsch e735be323e catch npe on participants context menu 2019-08-14 17:04:31 +02:00
Daniel Gultsch 6e1394ab40 make config flag for leave before join 2019-08-14 12:04:27 +02:00
Daniel Gultsch ed95dd64ad create empty disco result on error to fire advance stream features event 2019-08-13 21:18:32 +02:00
Daniel Gultsch ad15fb1721 pulled translations from transifex 2019-08-12 13:09:02 +02:00
Daniel Gultsch 0f18f16dc2 show scrollbars in muc user screen 2019-08-12 13:08:13 +02:00
Daniel Gultsch 8ac042418b fixes #3514 2019-08-11 16:54:00 +02:00
Martin/Geno 30280289b8
fix composing light themen 2019-08-07 13:24:22 +02:00
Daniel Gultsch 1ff17fc3f0 catch more firebase library bugs 2019-08-06 15:04:59 +02:00
Daniel Gultsch ffc16faf7b pulled translations from transifex 2019-08-06 15:04:05 +02:00
Daniel Gultsch 011bdd8ef6 fixed send_multiple share intent with empty extras. fixes #3512 2019-08-05 21:32:20 +02:00
Daniel Gultsch 238df77a1e catch IllegalArgumentException when reading backup file 2019-07-25 17:01:43 +02:00
Martin/Geno 936c5011f5
add changelogs new version to fastlane/f-droid 2019-07-23 19:58:00 +02:00
Martin/Geno 3d81b4ea9d
use fastlane/f-droid bulletpoints 2019-07-23 19:57:35 +02:00
Martin/Geno 0f4d8439f5
fix naming 2019-07-23 19:23:34 +02:00
Martin/Geno c04494f42a
remove github sources 2019-07-23 18:55:09 +02:00
Martin/Geno 6c8f57912e
Merge tag '2.5.5' into develop 2019-07-23 18:54:38 +02:00
Daniel Gultsch 4957e50ac4 disable spell checking on country drop down field in Quicksy 2019-07-23 17:49:33 +02:00
Daniel Gultsch f597fc46da implement time out for waiting on voice recording 2019-07-23 17:31:56 +02:00
Daniel Gultsch 1af52a7a30 made some quicksy registration errors more explicit 2019-07-23 15:25:50 +02:00
Daniel Gultsch 68a20ecf63 pulled translations from transifex 2019-07-23 08:37:39 +02:00
Daniel Gultsch de66e9b6f9 version bump to 2.5.5 + changelog 2019-07-23 08:35:29 +02:00
Daniel Gultsch a4665d4657 made domain verifier case insensitive. fixes #3495 2019-07-20 17:51:37 +02:00
Daniel Gultsch c87e43eb92 put initial xmpp uri into signup intent 2019-07-20 15:58:05 +02:00
Daniel Gultsch c1589d76b5 resetToWaiting should include http uploaded files 2019-07-20 12:15:06 +02:00
Daniel Gultsch f5be53d08a jump into last field after re-enable pin entry 2019-07-20 12:14:33 +02:00
Daniel Gultsch 3837ec8122 do not include DNS servers from networks know to be inactive
* we still include DNS servers from VPNs because of edge cases where the XMPP server is hosted in the VPN
* on older Android versions we don’t know if a network is active or not (activeNetwork == null)

fixes #3465
2019-07-18 11:24:33 +02:00
Daniel Gultsch 6de6d054ac catch fcm library bugs 2019-07-17 21:03:56 +02:00
Daniel Gultsch d9f39df9c8 do password empty check in dialog not in restore backup service 2019-07-17 17:21:18 +02:00
Daniel Gultsch cb1feab350 open backup files on view action 2019-07-17 11:32:56 +02:00
Daniel Gultsch 603e1b35a5 allow backup to be restored from selected file 2019-07-16 16:49:47 +02:00
Daniel Gultsch b68851b719 create share button in backup done notification 2019-07-15 19:11:00 +02:00
Daniel Gultsch 97598c63dc split on first dot when using domain instead of black listed local part 2019-07-15 19:09:53 +02:00
Martin/Geno b459a4c6e3
add metadata/F-Droid changelog 2019-07-15 19:04:01 +02:00
Martin/Geno 415a105b41
Merge tag '2.5.4' into develop 2019-07-15 19:02:29 +02:00
Daniel Gultsch bc3e5f1dd4 muc message corrections only compare bare jid true counterpart
during live messages we only store the bare real jid; on muc catch up we might get the full jid
for that reason we only compare bare jids
2019-07-14 17:58:31 +02:00
Daniel Gultsch 719b35e431 prefer attachment in share intent if there is one 2019-07-14 16:39:09 +02:00
Daniel Gultsch 803334e42b pulled translations from transifex 2019-07-14 16:38:56 +02:00
Daniel Gultsch a274ed0ba6
fixed paypal link 2019-07-14 08:14:28 +00:00
Daniel Gultsch 31de7690af added new paypal link to readme 2019-07-14 10:10:36 +02:00
Daniel Gultsch 8b2e669da2 added paypal to funding 2019-07-14 10:02:03 +02:00
Daniel Gultsch ae51a37938 updated issue template and funding.yml 2019-07-14 09:57:03 +02:00
Daniel Gultsch b58d011737 version bump to 2.5.4 + changelog 2019-07-13 08:46:41 +02:00
Daniel Gultsch 553b65ffcd pulled translations from transifex 2019-07-11 08:14:07 +02:00
Daniel Gultsch 8c654abff6 updated retrofit 2019-07-10 22:10:36 +02:00
Daniel Gultsch 7e93c1021b handle blocking and unblocking of full jids 2019-07-10 17:58:48 +02:00
Daniel Gultsch c9bf1474e3 support status code 451 in quicksy registration 2019-07-04 19:35:03 +02:00
Daniel Gultsch 2956cfdb95 downgrade some deps that require androidX 2019-07-04 19:34:15 +02:00
Daniel Gultsch fe0493d93f android libphonenumber not yet up to date with upstream 2019-07-04 18:27:07 +02:00
Daniel Gultsch 8138eb0346 use more default values in LocationActivity
fixes #3475
2019-07-04 18:17:16 +02:00
Daniel Gultsch f3ab2dd33a updated some dependencies 2019-07-04 18:16:39 +02:00
Daniel Gultsch 98c4e9056f use helper method to close socket 2019-07-04 10:12:08 +02:00
Daniel Gultsch e9099acd97 accept status code 201 for Quicksy registration 2019-07-03 18:01:46 +02:00
Daniel Gultsch feba9a71ee code clean up 2019-07-02 11:10:21 +02:00
Daniel Gultsch 8c526de0af disable muc push on archive instead of leave
leave can be triggered on swipe and doesn’t mean we don’t want pushes
2019-07-01 14:35:00 +02:00
Daniel Gultsch 5304ac60a7 version bump to 2.5.4-beta 2019-07-01 14:34:13 +02:00
Daniel Gultsch 59a2f39b27 pulled translations from transifex 2019-07-01 11:17:27 +02:00
Daniel Gultsch 4f0214b477 check if activity is not null before using it to paint send button 2019-07-01 10:17:29 +02:00
Daniel Gultsch 7ec8f7952f migrate copy ond write list to synchronized hashset for pending mucs 2019-06-30 21:57:37 +02:00
Daniel Gultsch 9f08a32ffb include remote server errors in errors that should trigger a self ping 2019-06-30 20:08:28 +02:00
Daniel Gultsch 0ecdb43be6 rate limit muc pings / joins. never run two pings at same time 2019-06-30 19:54:07 +02:00
Daniel Gultsch 49224335fc attempt to unregister when receiving push for channel no longer joined
when receiving a FCM push message for a channel the user is no longer in (this can happen when the disable command failed) an attempt will be made to explicitly unregister from the app server (which in turn will then send item-not-found on next push)
2019-06-26 17:40:12 +02:00
Daniel Gultsch 7809af9b57 implement FCM push for group chats 2019-06-25 18:15:51 +02:00
Daniel Gultsch e467fe341e implement client support for muc push
Staying connected to a MUC room hosted on a remote server can be challenging.

If a server reboots it will usually send a shut down notification to all
participants. However even if a client knows that a server was shut down it
doesn’t know when it comes up again. In some corner cases that shut down
notification might not even be delivered successfully leaving the client in a
state where it thinks it is connected but it really isn’t.

The possible work around implemented in this commit is to register the clients
full JID (user@domain.tld/Conversations.r4nd) as an App Server according to
XEP-0357 with the room. (Conversations checks for the push:0 namespace on the
room.)

After cycling through a reboot the first message send to a room will trigger
pubsub notifications to each registered full JID. This event will be used to
trigger a XEP-0410 ping and if necessary a subsequent rejoin of the MUC.

If the resource has become unavailable during down time of the MUC server the
user’s server will respond with an IQ error which in turn leads to the MUC
server disabling that push target.

Leaving a MUC will send a `disable` command. If sending that disable command
failed for some reason (network outage) and the client receives a pubsub
notification for a room it is no longer joined in it will respond with an
item-not-found IQ error which also disables subsequent pushes from the server.

Note: We 0410-ping before a join to avoid unnecessary full joins which can be
quite costly. Further client side optimazations will also surpress pings when
a ping is already in flight to further save traffic.
2019-06-24 18:16:06 +02:00
Martin/Geno b65e14072e
Merge tag '2.5.3' into develop 2019-06-22 09:49:15 +02:00
Daniel Gultsch b6d059ed89 ping muc after receiving not-acceptable error 2019-06-18 18:40:16 +02:00
Daniel Gultsch 17c8bf3452 attempt to keep messages waiting until muc is connected 2019-06-18 18:09:44 +02:00
Daniel Gultsch 6862b60c3f self ping (xep-0410) after receiving invite to muc 2019-06-18 13:20:24 +02:00
Daniel Gultsch e432710a3f version bump to 2.5.3 + changelog 2019-06-18 11:05:46 +02:00
Daniel Gultsch 4c3cd89fe7 syntax clean up 2019-06-17 17:37:02 +02:00
Daniel Gultsch 782d889cc5 disallow subsequent session-accept 2019-06-17 09:51:49 +02:00
Daniel Gultsch c1bdda0a9b reenable http upload that got disabled in last commit 2019-06-17 08:33:19 +02:00
Daniel Gultsch 9fc1ead74f use ibb if other party doesn’t annouce s5b feature 2019-06-16 22:57:10 +02:00
Daniel Gultsch fe6c981ae2 accept direct ibb jingle offers 2019-06-16 21:23:18 +02:00
Daniel Gultsch 1cfba86aff don’t crash when attempting to publish bookmarks while offline 2019-06-16 18:05:06 +02:00
Daniel Gultsch 52c0bf73a0 handle some rare npe 2019-06-16 18:04:43 +02:00
Daniel Gultsch 2fbd9e6744 MessageStyle notifications replace car extender 2019-06-16 16:02:22 +02:00
Daniel Gultsch 953307ca30 use socks instead of http proxy for http upload
http proxy doesn’t seem to work with onion v3
2019-06-16 15:06:34 +02:00
Martin/Geno fe124e4789
grey to black themen 2019-06-15 18:46:08 +02:00
Martin/Geno d0fd1f0e30
remove dns resolver cache 2019-06-15 18:46:07 +02:00
Martin/Geno 9a49c7c3c6 Drop own implementation of DNS-Server selection 2019-06-04 10:26:21 +02:00
Daniel Gultsch 997f922401 put geo uri in attachment preview when shared 2019-05-28 22:32:42 +02:00
Daniel Gultsch b7781f1e0e add changelog for 2.5.2 release 2019-05-28 22:11:58 +02:00
Daniel Gultsch 16ce476bbc show negative max files size (unknown/unlimited) simply as available 2019-05-27 18:32:04 +02:00
Martin/Geno 14d4e6aec8
for 2.5.2 Merge branch 'master' into develop 2019-05-25 00:43:16 +02:00
Daniel Gultsch 631d9c846f version bump to 2.5.2 2019-05-22 23:59:40 +02:00
Daniel Gultsch 9a8cc5b2e7 fixed some NPE 2019-05-22 23:58:39 +02:00
Daniel Gultsch e5378df39c synchronize around attributes in toContentValues() 2019-05-22 23:58:08 +02:00
Daniel Gultsch c7bd635996 pulled translations from transifex 2019-05-22 17:32:14 +02:00
Daniel Gultsch 10653df164 show error messages in text layout not edittext 2019-05-22 17:31:11 +02:00
Daniel Gultsch c965049605 handle invalid canditates in jingle 2019-05-22 17:30:51 +02:00
Daniel Gultsch 132f81df23 double check that activity is not null in updateSend button 2019-05-22 17:30:04 +02:00
Daniel Gultsch a909e1a7cf fixed NPE in channel discovery after race to create menu 2019-05-22 17:29:27 +02:00
Licaon_Kter 1db07b84f3 Readme typo (#3462) 2019-05-20 07:26:17 +00:00
Daniel Gultsch 708476cee8 explain omemo and backups. fixes #3454 2019-05-10 19:57:54 +02:00
Martin/Geno cc478f744b
[rebrand] fix logo background 2019-05-10 13:09:08 +02:00
Martin/Geno 28c01aea8e
build.gradle: update to f-droid version with targetSdk 25
We go back to targetSdk 25 so users can disable
 the foreground service (and annoying notification) if they choose
2019-05-09 18:04:30 +02:00
Martin/Geno 7ac752fac3
[metadata] remove fee 2019-05-09 15:33:23 +02:00
Daniel Gultsch 5bedde7913 run postDelayed in background thread 2019-05-08 14:11:28 +02:00
Daniel Gultsch 6785d8c69f set volume control channel to media volume / default. fixes #3451 2019-05-08 14:11:06 +02:00
Martin/Geno 66d4c49fd3
[DOC] fix README 2019-05-07 20:08:13 +02:00
Martin/Geno 35b32a2f65
[CI] move build fork to ci 2019-05-07 18:54:48 +02:00
Martin/Geno 0754d6d01a
[metadata] add ipv4 hardcoded 'preferred' 2019-05-04 17:49:10 +02:00
Martin/Geno 9f3cbc28c4
fix translation: conversations.im to chat.sum7.eu 2019-05-04 17:44:36 +02:00
Martin/Geno 69b92f264a
for 2.5.1 Merge branch 'master' into develop 2019-05-04 14:41:34 +02:00
Daniel Gultsch 2869ed44a6 fixed typo in changelog 2019-05-03 11:58:53 +02:00
Daniel Gultsch 43254663fb version bump to 2.5.1 + changelog 2019-05-03 10:49:46 +02:00
Daniel Gultsch 8736db3bc4 pulled translations from transifex 2019-05-03 10:48:51 +02:00
Daniel Gultsch ba327d8512 set own omemo devices to inactive after 14 days of inactivity; was 7 days 2019-05-03 10:48:33 +02:00
Daniel Gultsch 82dcae59e3 added language tag in channel search results 2019-05-02 20:09:43 +02:00
Daniel Gultsch 818f2ab61c fixed rare NPE cause by race 2019-05-02 20:09:16 +02:00
Martin/Geno 27bc0ce08d
add build-fork to change package path 2019-05-02 04:04:56 +02:00
Martin/Geno a8b433ed6a
fix some conversations.im to chat.sum7.eu 2019-05-02 03:21:22 +02:00
Daniel Gultsch 3d208e6e34 pulled translations from transifex 2019-05-01 19:11:37 +02:00
Daniel Gultsch 61604dedea jingle: send canditate error before fallback 2019-04-30 11:23:15 +02:00
Daniel Gultsch 73d66fd703 go forward through cursor in message restore
We have seen some weird CursorIndexNotFoundException that we were unable to reproduce.
We assume that going forward (moveToNext()) through the cursor instead of (moveToPrevious() fixes that issue
2019-04-30 10:45:28 +02:00
Martin/Geno a15756d4ff
for v2.5.0 Merge branch 'master' into develop 2019-04-29 20:34:08 +02:00
Daniel Gultsch 442c1e3059 version bump to 2.5.0 2019-04-29 12:59:56 +02:00
af8a524db1 137d48810d Make use of Namespace.REGISTER constant (#3446) 2019-04-29 07:51:46 +00:00
Daniel Gultsch a99d65d7d4 pulled translations from transifex 2019-04-29 09:44:52 +02:00
ialokim 15791b732c fix export error for non-unicode numbers (#3444) 2019-04-28 10:46:49 +00:00
Daniel Gultsch 0e56dd8bc2 version bump 2.5.0-beta.2 2019-04-27 15:25:19 +02:00
Daniel Gultsch ed8c5ec7f5 pulled translations from transifex 2019-04-27 15:24:43 +02:00
Daniel Gultsch 7c35f28633 do not synchronize twice when adding status and date bubbles 2019-04-27 15:24:37 +02:00
Daniel Gultsch d8010d7a33 updated transifex config to include conversations strings 2019-04-27 14:49:00 +02:00
Daniel Gultsch bcab77a044 wait with presence selection until attachment commit 2019-04-27 14:41:43 +02:00
Daniel Gultsch b2ea91909b introduced type private_file_message to handle attachments in PMs. fixes #3372 2019-04-27 11:46:43 +02:00
Daniel Gultsch b55d4bc62f do not jump out of whispher mode when selecting attach 2019-04-26 17:53:00 +02:00
Daniel Gultsch 5e30d97439 fixed ui glitch when displaying PM hint over attachments 2019-04-26 17:15:03 +02:00
Daniel Gultsch 8de1359746 bump version to 2.5.0-beta + changelog 2019-04-26 12:30:04 +02:00
Daniel Gultsch dc70b7e28a add bookmark when clicking on channel search result 2019-04-26 12:26:49 +02:00
Daniel Gultsch 76fb17c972 add contact dialog: warn on suspicious addresses 2019-04-26 12:05:52 +02:00
Daniel Gultsch c4348e92e8 pulled translations from transifex 2019-04-26 11:20:33 +02:00
Daniel Gultsch d2c9ce7bf0 store correcting message in db 2019-04-26 11:18:16 +02:00
Daniel Gultsch ef555063d9 rename new welcome resource 2019-04-26 11:18:04 +02:00
Daniel Gultsch 8a1a9f4f55 put PM hint above edittext. fixes #3432 2019-04-26 10:23:26 +02:00
Daniel Gultsch 182a81e3ef only show opened FAB when some accounts are enabled 2019-04-26 09:30:38 +02:00
Daniel Gultsch 6704db21fb added Tor support to channel search 2019-04-25 21:10:50 +02:00
Daniel Gultsch 9db1c10f45 open FAB when no contacts or bookmarks are found 2019-04-25 19:52:42 +02:00
Daniel Gultsch 7b61bb9841 rework welcome screens to split use existing account / create new
closes #3440
2019-04-25 19:01:34 +02:00
Daniel Gultsch a04b7a1c0f keyboard event callbacks shoud run on ui thread. fixes #3441 2019-04-25 12:27:38 +02:00
Daniel Gultsch ff84ee6964 cache channel search results 2019-04-24 13:25:54 +02:00
Daniel Gultsch ba21c9b55f update gradle 2019-04-24 13:25:30 +02:00
Daniel Gultsch 1857fe9e0d moved layout files from conversations flavor to main 2019-04-22 13:16:49 +02:00
Daniel Gultsch 2fa687b8ae refactor muc search to use http 2019-04-22 13:00:45 +02:00
Daniel Gultsch a0f88aa9b4 implement channel discovery over jabber.search.network 2019-04-22 10:42:21 +02:00
Martin/Geno 25c2ed38d8
improve gitlab-ci version naming + deploy releasefile 2019-04-20 01:48:34 +02:00
Daniel Gultsch 7a825231fb run keyboard listeners on background executor 2019-04-17 18:25:21 +02:00
Daniel Gultsch 39bc067405 execute some dismiss error notification and reset error in background 2019-04-17 12:49:36 +02:00
Daniel Gultsch 98734353aa pulled translations from transifex 2019-04-17 09:56:09 +02:00
Martin/Geno db8160e681
Merge branch 'master' into develop 2019-04-14 23:35:37 +02:00
Daniel Gultsch d04e2e99f3 use mediated invite on reinvite if user is not member 2019-04-11 08:57:20 +02:00
Daniel Gultsch bf7d50692c use styled warning for message error. fixes #3428 2019-04-08 16:32:41 +02:00
Daniel Gultsch 7ada794e6e version bump to 2.4.3 + changelog 2019-03-28 09:40:54 +01:00
Daniel Gultsch c6df5191ab pulled translations from transifex 2019-03-24 20:07:38 +01:00
Daniel Gultsch d390345073 show max file upload size in server info 2019-03-23 07:27:03 +01:00
Daniel Gultsch 6322d4c077 renamed button in recording dialog to 'attach' 2019-03-23 07:26:29 +01:00
Daniel Gultsch 74301831d2 do sent/received correct based on true counterpart introduces in f406631512 only for type=groupchat 2019-03-15 12:46:27 +01:00
Daniel Gultsch e998ea816e Merge branch 'master' of github.com:siacs/Conversations 2019-03-07 09:10:53 +01:00
Daniel Gultsch 46596e8652 fix backup creation for older installations
if your Conversations installation is older than December 2016 (version 1.15.0) the backup would
include historic data that a current installation is not able to read on restore.
This commits excludes that data from the backup.
If you had problems importing the backup you need to create a new backup after this patch
2019-03-07 09:08:37 +01:00
Licaon_Kter fca63a8858 Update backup info in Readme (#3393)
* Update backup info in Readme
2019-03-06 08:23:44 +00:00
Daniel Gultsch 016e394897 version bump to 2.4.2 + changelog 2019-03-03 15:04:54 +01:00
Daniel Gultsch a9b0e13179 fixed syntax errors in french translations 2019-03-03 08:52:05 +01:00
Daniel Gultsch ec0b9b9a72 pulled translations from transifex 2019-03-03 08:35:20 +01:00
Daniel Gultsch c7dea9dded fixed security exception when attempting to display image in notification 2019-03-03 08:32:54 +01:00
Daniel Gultsch 875f0b9943 find activity even if wrapped in context wrapper. fixes #3396 2019-03-03 08:31:46 +01:00
Daniel Gultsch f406631512 double check that muc message is ours if true jid is known 2019-03-02 08:36:36 +01:00
Daniel Gultsch a29a5fd491 copy intent extras in eventreceiver 2019-02-27 14:16:26 +01:00
Daniel Gultsch 417a6e8307 use proper theme in restore activity. fixes #3389 2019-02-25 20:26:52 +01:00
Daniel Gultsch a243cdb944 version bump to 2.4.1 + changelog 2019-02-23 10:34:51 +01:00
Daniel Gultsch 24a51d8715 do null check before splitting error message for processing 2019-02-23 10:24:08 +01:00
Daniel Gultsch b79a2447b2 bump version to 2.4.0 2019-02-22 18:19:49 +01:00
Daniel Gultsch 895a140ec5 pulled translations from transifex 2019-02-22 15:05:50 +01:00
Daniel Gultsch b4b4950a75 s/Jabber ID/XMPP address/
There are countless arguments on both sides of the Jabber ID vs XMPP address
debate which makes deciding between them a really tough decision.

Pro Jabber ID
* Jabber is easier pronounce
* We have always called it Jabber
* Jabber is more recognizable (This claim can not be backed up by Google Trends)
* Jabber ID has a nicer typography

Pro XMPP address
* People like the term address. People also liked 'Chat address' or
  'Conversations address'. Address is also used in Email address or other
  protocols. Even if people don’t understand the 'XMPP' part of the term they
  might understand the 'address' part and know what is going on.
* While people might have heard of Jabber rather than XMPP; people have heard
  of it in the 00s and associate it with something old. Depending on the
  target audience this is a good thing. And people who value sustainability
  know what XMPP is anyway.
* Jabber is a Cisco product. If we were to succeed in making 'Jabber' cool
  again we don’t want to share that success with Cisco. What has Cisco ever
  done for us? Aside from providing us with a venue for the XSF summit. And
  building nice aqueducts.
* The Cisco owned trademark is a damocles sword. While the XSF technically
  has the right to hand out sublicenses to use the term this can be a lengthy
  process. And automated filter system that for example monitor Google Play
  store descriptions don’t care that the XSF has the rights or that the terms
  of use are more nuanced. They just see a trademark and reject the
  publication. And we all know how impossible it is to speak to an actual
  human at Google.
2019-02-21 11:29:05 +01:00
Daniel Gultsch d95b904b5b show file too large instead of generic delivery failed 2019-02-20 21:44:06 +01:00
Daniel Gultsch 3fabb52293 after switching from forced foreground to foreground notification needs update 2019-02-16 11:58:16 +01:00
Daniel Gultsch 905d2ab432 explicitly set profile+level for encoder
some modern Androids (namely my Xiaomi Mi A1 after the update to Andorid 9) seem to require that
2019-02-16 11:40:51 +01:00
Daniel Gultsch bd5b8aff78 fixed typo. s/exits/exists/ 2019-02-15 20:35:32 +01:00
Daniel Gultsch cdaa61b6a3 fixed broken nl translation string for quicksy. good thing we have travis 2019-02-15 14:26:13 +01:00
Daniel Gultsch 009546d0cf increment version to 2.4.0-beta.2 2019-02-15 14:15:37 +01:00
Daniel Gultsch a658eb2d4b pulled translations from transifex 2019-02-15 14:13:11 +01:00
Daniel Gultsch f26a57ced4 fixed regression of search hint not updating in StartConversation screen 2019-02-15 14:07:39 +01:00
Daniel Gultsch 6b5e81df49 allow filtering in participant view. fixes #3371 2019-02-15 14:00:42 +01:00
Daniel Gultsch 5f543e8314 show notification when backup is done 2019-02-15 13:17:49 +01:00
Daniel Gultsch d79768e923 do not show 'manage permissions' submenu when only 'remove from room' is visible 2019-02-15 09:57:58 +01:00
Martin/Geno e140ab713e
Networkstack - let OS decide IPv4 or IPv6 2019-02-12 00:49:34 +01:00
Martin/Geno db12bae1a2
change default values 2019-02-12 00:49:33 +01:00
Martin/Geno 089f76f43c
rebrand + remove green background option 2019-02-12 00:49:28 +01:00
Martin/Geno 4e659b35d7
add .gitlab-ci 2019-02-11 21:30:02 +01:00
Daniel Gultsch 766cb8c088 extend max label size slightly 2019-02-10 20:07:57 +01:00
Martin 8cf190eb66 Fixed typo in Changelog.md (#3374) 2019-02-10 10:09:03 +00:00
Daniel Gultsch bebce313b2 print available stream features / mechanisms on incompat server 2019-02-09 20:21:29 +01:00
Daniel Gultsch ef09b0ab1a use the term channel in destroy dialog 2019-02-08 13:46:33 +01:00
Daniel Gultsch 4c8b1eb4bc version bump to 2.4.0-beta + changelog 2019-02-07 21:59:58 +01:00
Daniel Gultsch 310362130f catch activity not found when trying to open contact app 2019-02-07 21:39:30 +01:00
Daniel Gultsch bfaf10aa72 brought back 'moderated' config in advanced mode 2019-02-07 18:11:21 +01:00
Daniel Gultsch b648c482f3 allow corrections in all mucs 2019-02-07 18:11:07 +01:00
Daniel Gultsch ad64058d25 hide lock icon in channels; modify muc user context 2019-02-07 13:18:42 +01:00
Daniel Gultsch b6a501d24b rights managment in muc 2019-02-06 23:47:29 +01:00
Daniel Gultsch 32ef3755e2 show different room settings for channels and groups 2019-02-06 18:29:07 +01:00
Daniel Gultsch 2b913f367d provide the same fab submenu for both tabs. rename tab to bookmark 2019-02-06 14:45:51 +01:00
Daniel Gultsch 179beb15e0 fix xmpp uri links that have a aditional chars after join
for example xmpp:foo@bar.tld?join,
2019-01-31 13:59:41 +01:00
Daniel Gultsch e0965a2bf2 remove warning messages for kick after ban failing. on modern servers ban is enough to also kick 2019-01-28 10:52:35 +01:00
Daniel Gultsch b30fb46c85 make sure that http upload/download is not startetd multiple times 2019-01-28 10:39:01 +01:00
Daniel Gultsch 0898783309 schedule another ping 30s after connectivity_change 2019-01-27 20:54:45 +01:00
Daniel Gultsch 8bc9f9a7c8 fixed context menu on self contact 2019-01-27 18:57:41 +01:00
Daniel Gultsch 2bc9fdf5d3 show sub menu fabs for create group chats. fixes #2950 2019-01-27 16:35:55 +01:00
Daniel Gultsch 20e731c956 show context menu when long pressing own account picture 2019-01-27 11:38:20 +01:00
Daniel Gultsch 2f3ccb5f90 changed order of users and media in muc details 2019-01-27 10:32:27 +01:00
Daniel Gultsch b532f5ed1f add context menu for muc user adapter 2019-01-26 20:31:52 +01:00
Daniel Gultsch b9c4309a28 refactored group chat members into seperate screen 2019-01-25 17:58:23 +01:00
Licaon_Kter 0ba3f31cbc Fix type in presence (#3357) 2019-01-25 13:39:36 +00:00
Daniel Gultsch 7f170276a9 refactored avatar workers into single class 2019-01-25 10:07:02 +01:00
Daniel Gultsch 18807305c1 do not require starttls when connecting over to .onion domain 2019-01-25 08:48:46 +01:00
Daniel Gultsch 8fbe445c99 scan all files in case some files were previously marked as deleted by accident 2019-01-24 15:03:58 +01:00
Daniel Gultsch 04d1b92a79 make bitmap worker task static; migrate conversation list row to binder 2019-01-24 12:27:57 +01:00
Daniel Gultsch 11e0ff4006 show spinning wheel in restore backup activity 2019-01-23 19:13:04 +01:00
Daniel Gultsch a32bb652f7 always show number of connected accounts in foreground notification. fixes #3352 2019-01-23 17:07:14 +01:00
Daniel Gultsch 2e0db4dcda do not show installed accounts in restore view 2019-01-23 12:45:15 +01:00
Daniel Gultsch 18982174ce ask for permissions before opening restore backup. use insert or ignore for messages 2019-01-23 11:20:36 +01:00
Daniel Gultsch c9fc40dfe5 WIP backup & restore 2019-01-22 19:25:45 +01:00
Licaon_Kter 68565f2766 Reword 2 things in FCM (#3349)
"However...however" a statement of how things work I guess :)
2019-01-22 10:33:40 +00:00
Daniel Gultsch 597ecc0fea fixed typos 2019-01-21 11:58:21 +01:00
Daniel Gultsch a0be2dc54f updated readme 2019-01-21 11:55:52 +01:00
Daniel Gultsch 6f35c13d82 version bump to 2.3.12 2019-01-19 21:18:42 +01:00
Daniel Gultsch 55ae07fd93 pulled translations from transifex 2019-01-19 21:14:23 +01:00
Daniel Gultsch 83c3258dd7 properly jump out of connection loop on state changing errors 2019-01-19 11:47:21 +01:00
Daniel Gultsch dcdf340a41 normalize nicks before getting them from bookmarks or pep 2019-01-19 11:42:57 +01:00
Daniel Gultsch 14c8d4ce0d pulled translations from transifex 2019-01-18 12:52:13 +01:00
Daniel Gultsch 477f2d34f3 use clear top flag in shortcut intent 2019-01-18 12:28:35 +01:00
Daniel Gultsch e1fe969bca clarify that the foreground section in the FAQ is only about the forced notification. closes #3347 2019-01-18 09:53:50 +01:00
Daniel Gultsch 279eb238d6 updated faq section on push 2019-01-17 21:12:01 +01:00
Daniel Gultsch a53774bc6d resend presence to muc avatar update. fixes #3175 2019-01-17 17:55:47 +01:00
Daniel Gultsch e714d7cd29 null checks when deleting old files
fixes #3345
2019-01-17 11:56:34 +01:00
Daniel Gultsch 9cdf34a6a6 update gradle plugin 2019-01-17 11:56:01 +01:00
Daniel Gultsch 0d497fdda9 pulled translations from transifex 2019-01-14 23:52:51 +01:00
Daniel Gultsch 8bd01f11a1 increment version code 2019-01-13 22:19:40 +01:00
Daniel Gultsch 61e21c302e pulled translations from transifex 2019-01-13 22:19:33 +01:00
Daniel Gultsch caf5fcad88 fixed enabled accounts check in onCreate 2019-01-13 22:18:32 +01:00
Daniel Gultsch ce8c7d887d pulled translations from transifex 2019-01-13 17:04:11 +01:00
Daniel Gultsch 526c2637c1 provide Set as Profile intent. fixes #2594 2019-01-13 15:28:24 +01:00
Daniel Gultsch 004411cf51 force foreground service during onCreate()
creating / upgrading the database and reading accounts can be expensive
and will otherwise trigger an AN
2019-01-13 11:27:16 +01:00
Daniel Gultsch d02fd73af8 explicitly start service (instead of just bind) service from contact chooser 2019-01-13 09:42:44 +01:00
Daniel Gultsch 67fddd1654 fix manual location correcting / fab not showing up on 4.4
fixes #3097
2019-01-12 21:08:17 +01:00
Daniel Gultsch ba34561235 ignore code block start in message preview. fixes #3124 2019-01-12 14:26:33 +01:00
Daniel Gultsch 5215601150 version bump to 2.3.11 + changelog 2019-01-12 13:40:38 +01:00
Daniel Gultsch e5a200481c pulled translations from transifex 2019-01-12 10:51:10 +01:00
Daniel Gultsch c5e35dc4b3 extend open with to audio files 2019-01-12 10:29:41 +01:00
Daniel Gultsch 918b3223b3 stop file watching when service has been destroyed 2019-01-12 10:21:21 +01:00
Daniel Gultsch d2b8134cdf check if we have storage permission before marking a file as deleted on resend 2019-01-12 10:09:45 +01:00
Daniel Gultsch e9bf2b464c explicitly set type=images for all media with an image mime type
this is in preperation to be able to query the database for all images
2019-01-12 09:01:35 +01:00
Daniel Gultsch 9efb3c6dc6 synchronize around notification update from corrected messages 2019-01-12 08:55:46 +01:00
Daniel Gultsch 91db13b01b format phone number with narrow non-breaking space 2019-01-11 18:06:11 +01:00
Daniel Gultsch 6ecf6f1149 make contact chooser (direct sharing) smart about sharing text in groups when http is not available 2019-01-11 17:45:18 +01:00
Daniel Gultsch 8124b24479 maintain order of conversations in share with dialog 2019-01-11 17:19:54 +01:00
Daniel Gultsch c11dd71510 fixed regression that hid enter jid button in block list view 2019-01-11 14:49:03 +01:00
Daniel Gultsch 1536075088 instruct travis to test quicksy build flavor 2019-01-11 13:38:15 +01:00
Daniel Gultsch ce22954830 put resources that mention the app name into quicksy build flavor 2019-01-11 13:37:53 +01:00
Daniel Gultsch 06ea70be23 add section on OTR to faq 2019-01-11 13:03:39 +01:00
Daniel Gultsch 31e4ea3a05 updated omemo section in readme 2019-01-11 12:52:37 +01:00
Daniel Gultsch a38cd88702 offer 'open with' in context menu for geo uris 2019-01-11 10:13:25 +01:00
Daniel Gultsch 394e252777 support enter/done key in create contact & join dialogs 2019-01-10 22:09:20 +01:00
Daniel Gultsch 7cabb2c377 check if encrypted pgp file get deleted 2019-01-10 21:24:24 +01:00
Daniel Gultsch 8ab4ca7138 fixed downloading of deleted files 2019-01-10 21:23:53 +01:00
Daniel Gultsch a644b40c3e don’t check if files exists when loading attachments 2019-01-10 17:43:09 +01:00
Daniel Gultsch 52afcac230 mark deleted files in database and not query them when querying for media 2019-01-10 14:52:27 +01:00
Daniel Gultsch bec1b6798c updated copyright hint 2019-01-09 20:10:06 +01:00
Daniel Gultsch 89cf20139d pulled translations from transifex 2019-01-09 19:38:33 +01:00
Daniel Gultsch 459db1a0a3 ignore startService failure
some nokia devices with Android 9 fail to start the service from the activity sometimes. since this is probably a race it should be save to ignore this
2019-01-09 18:30:28 +01:00
Daniel Gultsch 25856992d1 remove deprecated instanceIdService 2019-01-09 17:37:52 +01:00
Daniel Gultsch a15c50a15f added avatar to 'me' in notifications 2019-01-09 16:26:20 +01:00
Daniel Gultsch cc13411d3a fixed section header in FAQ 2019-01-09 13:03:32 +01:00
Daniel Gultsch fc94f34cf0 changed faq section on how to disable foreground service 2019-01-09 13:01:13 +01:00
Daniel Gultsch 96e3546904 put images into MessageStyle notifications 2019-01-09 12:47:09 +01:00
Daniel Gultsch c4539b8583 use bitmap instead of URI for avatars in notification. fixes #3310 2019-01-09 09:03:33 +01:00
Daniel Gultsch a963ef8453 pulled translations from transifex 2019-01-09 09:02:54 +01:00
Daniel Gultsch 2371287c8d remove reference to external plugins 2019-01-08 16:37:44 +01:00
Licaon_Kter 2e0bee17ea Consistency fix - group chat (#3337) 2019-01-08 08:04:18 +00:00
Daniel Gultsch 46eb1212f1 fix import after osmdroid update 2019-01-06 10:13:31 +01:00
Daniel Gultsch 83cac88045 updade libraries and build tools 2019-01-06 10:04:34 +01:00
Daniel Gultsch dac088428c handle decrypting/encrypting of omemo messages with duplicate device ids 2019-01-05 15:34:19 +01:00
Daniel Gultsch 136d1e1905 added work around to create 'actions' from nova launcher
fixes #3331
2019-01-05 10:31:13 +01:00
af8a524db1 0aeb002720 Enable notifications from strangers by default (#3327)
Notifications from strangers are disabled by default in order to cope
with spam. On the other hand, this complicates contacting other users
for the first time, which leads to a bad user experience.
2019-01-04 09:10:02 +00:00
Daniel Gultsch b9952f27fd archive destoryed mucs when registering that bookmark has been removed 2019-01-03 14:07:03 +01:00
Daniel Gultsch 9d849f540f Merge branch 'implement_room_destruction' of https://github.com/area-42/Conversations into bookmarks 2019-01-03 13:27:24 +01:00
Christoph Scholz 77b42ba9ca remove bookmark after a room is destroyed 2019-01-02 18:07:21 +01:00
Christoph Scholz 52e1a0c708 implement room destruction 2019-01-02 18:06:38 +01:00
Daniel Gultsch 835c89328d use person in message style notification 2019-01-02 15:29:31 +01:00
Daniel Gultsch 71a32f0ecc Merge branch 'master' of github.com:siacs/Conversations 2019-01-02 10:03:48 +01:00
Daniel Gultsch cfab0dbe1b introduced 'original' as video quality and do not ignorer error 2019-01-02 10:03:33 +01:00
Daniel Gultsch 6ac1c00d00 clear conversationsuuid and pending attachments when opening new conversation 2019-01-02 09:36:22 +01:00
Daniel Gultsch a849c34f56 clear pending view intent when processing onNewIntent() 2019-01-02 09:32:22 +01:00
Thomas Weißschuh 331ca7cb73 Fix small typo in settings. (#3321) 2018-12-29 12:18:08 +00:00
Daniel Gultsch d414f85ec0 change epub file extension to epub and added mobi 2018-12-22 21:25:39 +01:00
Daniel Gultsch 3eaa48fa46 added epub and azw mime types. try to resolve application/octet-stream by file extension instead. added preview icons for ebooks 2018-12-22 13:02:45 +01:00
Daniel Gultsch 6b75c819d8 log number of unhandled iq callbacks after resume 2018-12-22 13:00:40 +01:00
Daniel Gultsch d552f50ab4 added FAQ section on 'stream opening error' 2018-12-22 11:48:58 +01:00
Daniel Gultsch 163f4b1117 Merge branch 'master' of github.com:siacs/Conversations 2018-12-22 10:26:35 +01:00
Daniel Gultsch 04d5c7a821 version bump to 2.3.10 + changelog 2018-12-20 10:38:09 +01:00
Licaon_Kter d6f7330ee1 This is sadly needed (#3314)
* This is sadly needed

* Enable instead of activate
2018-12-18 13:13:17 +01:00
Daniel Gultsch 9659f46136 log policy violation stream error message to logcat 2018-12-18 11:02:25 +01:00
Daniel Gultsch 5c920a9362 fixed some rare crashes caused by race conditions 2018-12-17 19:35:08 +01:00
Daniel Gultsch 30d5c08c35 show accept button to confirm sasl downgrade. fixes #2498 2018-12-16 23:12:04 +01:00
AJ Jordan 36e1d6d571 Fix typos (#3311) 2018-12-16 11:24:02 +01:00
Daniel Gultsch 1bde39f9a9 pulled translations from transifex 2018-12-15 17:46:42 +01:00
Daniel Gultsch 76b78be2f2 synchronize join/leaves with bookmarks 2018-12-15 17:44:23 +01:00
Daniel Gultsch b4cd31520d display last not first message in notification. closes #3265 fixes #3264 2018-12-15 17:44:05 +01:00
Daniel Gultsch fc09c5fa86 use adaptive launcher icon and notification icon for quicksy 2018-12-14 16:22:24 +01:00
Daniel Gultsch c2067e3b56 remove firebase analystics classes from gradle 2018-12-13 19:29:46 +01:00
Daniel Gultsch acea062abc fixed dead lock when sending pgp messages from quick reply. fixes #3246 2018-12-13 19:29:16 +01:00
Daniel Gultsch af49d62086 remove unused import from Config.java 2018-12-13 19:28:26 +01:00
Daniel Gultsch 8f27a177b0 try to guess inital location in ShareLocation based on sim card 2018-12-11 17:25:59 +01:00
Daniel Gultsch ae9bfe1643 limit video transcoding to api >= 18 and other api 16 fixes 2018-12-10 13:58:05 +01:00
Daniel Gultsch c071a53595 Merge branch 'api-level-18' of https://github.com/deuill/Conversations into deuill-api-level-18 2018-12-10 13:13:16 +01:00
Alex Palaistras aaf5fa816b Reduce `minSdkVersion` to 16, fix issues reported by lint
This further reduces the minimum API level to 16, which should encompass
most users stuck on older versions of Android (mainly BlackBerry OS and
Jolla users).

Several issues reported by code analysis were fixed, mainly around issues
with layouts.
2018-12-09 21:32:42 +00:00
Daniel Gultsch 6a06bcfd58 change message styling rules
Message styling purposly doesn’t require a whitespace after a closing
tag to make something like ~un~believable work. However it also breaks
_Programmierer_innen_ and other example where the tag is repeated as a
non tag in the word.
Therefor we change the rules that if a closing tag is followed by a higher
order closing tag (a closing tag followed by an end block or white space)
we ignore the first closing tag. But only if we don’t read another tag open.
2018-12-09 18:26:31 +01:00
Daniel Gultsch 1a1bfb3246 show warning snackbar before joining anon-non-private room. fixes #3306 2018-12-09 18:25:11 +01:00
Daniel Gultsch 5b681553df do not process PEP bookmarks if conversion feature n/a
If conversion feature is not available we will never write to PEP
therefor it is not advisable to process PEP events; otherwise
the changes we do might not land in PEP.

simply ignoring PEP is probably better than dynamically removing +notify
2018-12-08 22:35:44 +01:00
Alex Palaistras 08529041a5 Reduce `minSdkVersion` to 18, backfill missing methods
This reduces the minimum SDK version to 18 (Android 4.3), which notably is
the last supported version for the BlackBerry OS 10.3 Android compatibility
layer.
2018-12-08 19:50:13 +00:00
Alex Palaistras 69ca58d0db xmpp-addr: Backfill missing class method for Java 1.7
This backfills missing class methods for `java.nio.charset.StandardCharsets`
and `java.util.Objects` for compatibility with platforms which do not support
these (mainly Android SDK versions <= 18).
2018-12-08 19:45:02 +00:00
Alex Palaistras ceaa3135ab Checkout `xmpp-addr` library 0.8.0 (fa47cac8) locally
Changes to this library will be implemented as additional commits.
2018-12-08 17:32:27 +00:00
Daniel Gultsch 92f4f5b865 version bump to 2.3.9 + changelog 2018-12-06 13:29:33 +01:00
Daniel Gultsch 870b266cd5 pulled translations from transifex 2018-12-05 19:11:49 +01:00
Daniel Gultsch 7219f42ad2 check mam preference for mam:2 namespace and purge offline only if set 2018-12-05 19:11:40 +01:00
Daniel Gultsch f50e6e00ce allow unencrypted http on android 9
this commit is just to make policies equal and independent on various android
versions. support for http might be removed in the future across all versions.
2018-12-05 14:40:44 +01:00
Daniel Gultsch bcfd3f20c2 postpone prekey removal and republish to after mam 2018-12-05 10:42:56 +01:00
Daniel Gultsch 19c3c54f24 pulled translations from transifex 2018-12-05 09:44:43 +01:00
Daniel Gultsch fa5ba9e02b fixed some rare NPE caused by race for saveInstanceState() 2018-12-05 09:27:10 +01:00
Daniel Gultsch c01bd38d00 show context menu when long clicking avatar in 1:1 2018-12-04 12:23:14 +01:00
Daniel Gultsch 875810e1c7 offer to start/install orbot for edit account screen. fixes #1980 closes #2834 2018-12-03 13:15:06 +01:00
Daniel Gultsch c02676ea4c implement self healing omemo
after receiving a SignalMessage that can’t be decrypted because of broken sessions
Conversations will attempt to grab a new pre key bundle and send a new PreKeySignalMessage
wrapped in a key transport message.
2018-12-02 14:41:29 +01:00
Daniel Gultsch f1e1c4a78d keep track of previously edited ids 2018-12-01 15:52:44 +01:00
Daniel Gultsch fdbed9cf58 open direct search after hitting + in share with screen 2018-12-01 13:27:00 +01:00
Daniel Gultsch 846bba96f2 remove role=none participant when first online participant joins
in anticipations for muc services using registered nicks (and putting nicks
into the member list even if that user is offline) we need to remove that 'fake' user
from the online list when the real user comes online.
2018-11-30 16:28:43 +01:00
Daniel Gultsch 6381f8a7f7 fixed cache cleaning of muc avatars, fixes #3296 2018-11-29 19:27:18 +01:00
Daniel Gultsch c93556e05b version bump to 2.3.8 + changelog 2018-11-29 18:58:44 +01:00
Daniel Gultsch 00cdfc41ab pulled translations from transifex 2018-11-29 18:52:58 +01:00
Daniel Gultsch f79da079ce pulled translations from transifex 2018-11-27 10:45:18 +01:00
Daniel Gultsch d53143ab34 change audio attributes for notification channel
This may help on platforms that make a difference between ringtone volume and notification volume
2018-11-27 10:41:19 +01:00
Daniel Gultsch ce5dffdbfb transmit display name (nick) in subscription requests and display them on Quicksy 2018-11-26 12:56:30 +01:00
Daniel Gultsch 1de385dcb9 set access model to open when publishing avatar. fixes #3291 2018-11-25 20:58:48 +01:00
Daniel Gultsch 3906643d44 pulled translations from transifex 2018-11-25 20:48:01 +01:00
Daniel Gultsch 45dba15376 one time migration for existing quicksy account to set magic create flag 2018-11-25 20:47:50 +01:00
Daniel Gultsch 40e46ed8fa make sure that conversation is 1:1 before offering to select presence on file resend 2018-11-23 13:11:51 +01:00
Daniel Gultsch b2d02e3c0f version bump to 2.3.7 + changelog 2018-11-22 16:55:25 +01:00
Daniel Gultsch d4b640c25b pulled translations from transifex 2018-11-22 13:04:17 +01:00
Daniel Gultsch 65c9dd71c7 prefer server side avatar on quicksy and address book avatar on conversations 2018-11-22 13:03:13 +01:00
Daniel Gultsch f63a209881 cancel magic mode attribute after changing password once 2018-11-22 12:31:06 +01:00
Daniel Gultsch 66850a525a removed unecessary code in time preference 2018-11-22 10:07:10 +01:00
Daniel Gultsch 61ac804f93 catch a few run time exceptions related to androids life cycle mgmt 2018-11-22 10:06:56 +01:00
Daniel Gultsch 23cc305720 refactor quite hours to make them time zone indepentent. fixes #2565 2018-11-21 18:14:02 +01:00
Daniel Gultsch 63f88af743 pulled translations from transifex 2018-11-21 16:48:54 +01:00
Daniel Gultsch 2c73b62f67 make password editable on auth error 2018-11-21 16:45:38 +01:00
Daniel Gultsch 2e0b26a5ab revert 12 byte ivs that got commited by accident 2018-11-21 16:44:24 +01:00
Daniel Gultsch 6479a7eda9 pulled translations from transifex 2018-11-21 12:11:47 +01:00
Daniel Gultsch f8fbb36a98 attempt to work around bugs in Chinese ROMs 2018-11-21 12:08:41 +01:00
Daniel Gultsch 0381fe3c06 remove now unused password has changed in magic mode 2018-11-21 11:55:29 +01:00
Daniel Gultsch 5c74918a3a only show not stranger if messages are coming from quicksy domain not quicksy contacts 2018-11-21 11:34:19 +01:00
Daniel Gultsch 03d5aa8aeb show 'show password' toggle for all magically created accounts. make quicksy accounts magically created 2018-11-20 21:33:43 +01:00
Daniel Gultsch 4d0c037547 added library mentioned in previous commit 2018-11-20 17:25:31 +01:00
Daniel Gultsch 5490e98b14 use toastcompat library to catch BadTokenException in attempt to fix #3279 2018-11-20 17:17:14 +01:00
Daniel Gultsch 5ca35fda78 change 'end this conversations' to 'close this conversation' closes #3281 2018-11-20 16:14:31 +01:00
Daniel Gultsch 4efe8d74be fixed string 2018-11-18 17:09:18 +01:00
Daniel Gultsch 4d4f63be20 do not display toast if activity is finishing 2018-11-18 17:08:37 +01:00
Daniel Gultsch 0b0b583e32 pulled translations from transifex 2018-11-18 12:14:25 +01:00
Daniel Gultsch 300006a529 offer to copy error message to clipboard. fixes #3277 2018-11-18 11:45:24 +01:00
Daniel Gultsch 6715a4c353 make change nick toast use showToast helper method. fixes #3279 2018-11-18 11:21:52 +01:00
Daniel Gultsch cf18bd08fc provide option to reject subscription request when long pressing 'allow' 2018-11-18 10:34:14 +01:00
Daniel Gultsch 4f22859acf catch illegal state exception on fragment transaction 2018-11-17 12:59:19 +01:00
Daniel Gultsch 51babc190a pulled translations from transifex 2018-11-17 12:57:58 +01:00
Daniel Gultsch e7d1555763 use startForegroundService compat from push message receiver 2018-11-17 12:57:36 +01:00
Daniel Gultsch 9bfd34b3cf add faq entry regarding foreground notification 2018-11-16 10:04:10 +01:00
Geno 692c60ca21 fix travis-build after adding build flavor for quicksy (#3275) 2018-11-16 09:13:15 +01:00
Daniel Gultsch 84c90a6450 version bump to 2.3.6 + changelogs 2018-11-14 10:05:48 +01:00
Daniel Gultsch e706912c7b create seperate logos for quicksy 2018-11-14 10:05:17 +01:00
Daniel Gultsch 6dcac6f7cf add versioning to sync namespace 2018-11-13 15:36:53 +01:00
Daniel Gultsch 6d67854086 catch cursor window allocation exception 2018-11-13 09:58:28 +01:00
Daniel Gultsch 09f9baeeef do not add self as crytpo target in MUC 2018-11-12 20:14:06 +01:00
Daniel Gultsch ab43a4bcf9 use display name to generate own avatar 2018-11-11 10:13:45 +01:00
Daniel Gultsch 4c88fce3b8 do not update foreground notification on error if it wasn’t enabled 2018-11-11 09:54:52 +01:00
Daniel Gultsch 306e12b24e fixed race condition that prevented bookmark nick to be used 2018-11-10 17:33:24 +01:00
Daniel Gultsch ccf9c42d0d don’t show edit nick on Conversations 2018-11-10 10:19:29 +01:00
Daniel Gultsch e335c59600 suggest previously assigned nick in Enter Name Activity 2018-11-09 18:52:42 +01:00
Daniel Gultsch 5012ff3545 added interface to edit nick 2018-11-09 17:47:36 +01:00
Daniel Gultsch aca4ba981f fixed caching key not being calculated properly 2018-11-08 20:52:57 +01:00
Daniel Gultsch 235f33b8b1 change contact sync explain dialog for quicksy 2018-11-08 19:04:07 +01:00
Daniel Gultsch 41b9c0de55 paramterize about activity title 2018-11-08 13:02:14 +01:00
Daniel Gultsch e450626d5c add suggested contacts to roster on first message 2018-11-08 12:20:46 +01:00
Daniel Gultsch ffc509ae26 README give instructions to build conversations flavor 2018-11-07 15:57:54 +01:00
Daniel Gultsch 5be43e36e4 always do contact sync in background 2018-11-07 15:44:39 +01:00
Daniel Gultsch 8a67f31368 display spinning wheel + swipe to refresh for quicksy 2018-11-07 13:42:01 +01:00
Daniel Gultsch fe90c6f846 suggest sync on login + hard code api server 2018-11-06 09:13:43 +01:00
Daniel Gultsch d8fc03b2f7 show 'send pm' button in anon chats. fixes #3257 2018-11-03 17:07:02 +01:00
Daniel Gultsch f0d5dc583d use inContactList() instead inRoster() in the proper places 2018-11-03 16:32:08 +01:00
Daniel Gultsch 4a35c3c7cf create different push.xml resoucres for quicksy and conversations 2018-11-03 16:14:30 +01:00
Daniel Gultsch 4688d68ea1 quicksy server is not a stranger 2018-11-03 16:12:57 +01:00
Daniel Gultsch 19e13115d3 added count down latch to await account connect before going into publish profile activity 2018-10-31 13:33:55 +01:00
Daniel Gultsch fe45a7afcc added error message for internal server error 2018-10-31 13:33:55 +01:00
Daniel Gultsch 2c31fbae78 show synced contacts in choose contact activity 2018-10-31 13:33:55 +01:00
Daniel Gultsch 3efb5b7f5c do proper redirects in onBackedConnected if something goes wrong 2018-10-31 13:33:55 +01:00
Daniel Gultsch 3fab93bdd6 changed api endpoint and quicksy domain 2018-10-31 13:33:55 +01:00
Daniel Gultsch a1a625bb2d added hash for status quo to make sync reply more performant 2018-10-31 13:33:55 +01:00
Daniel Gultsch 1bcbd257c3 refresh contacts when opening StartConversationsActivity 2018-10-31 13:33:55 +01:00
Daniel Gultsch 3e1d01798c refresh synced contacts even if offline 2018-10-31 13:33:55 +01:00
Daniel Gultsch 2dee53587b basic phone number sync 2018-10-31 13:33:55 +01:00
Daniel Gultsch 87cc53b8b5 renamed build flavors 2018-10-31 13:33:55 +01:00
Daniel Gultsch a49a5790c7 refactored phone contact loading in preperation for sync 2018-10-31 13:33:55 +01:00
Daniel Gultsch 4df0cc3657 do not offer tor or extended connection settings for quicksy 2018-10-31 13:33:55 +01:00
Daniel Gultsch 3b31133606 do not show up navigation when opening edit account from notification 2018-10-31 13:33:55 +01:00
Daniel Gultsch f7addc5d89 suggest quicksy.im when user enters e164 in enter jid dialog 2018-10-31 13:33:55 +01:00
Daniel Gultsch c9abe1c610 Do not show 'Hide offline' in Quicksy 2018-10-31 13:33:55 +01:00
Daniel Gultsch 36c9a452ab always prevent edit in quicksy mode 2018-10-31 13:33:55 +01:00
Daniel Gultsch 60fc985298 do not show up navigation in start conversation screen if called with view intent 2018-10-31 13:33:55 +01:00
Daniel Gultsch e80fbcfd61 improve backspace behaviour in enter phone number screen 2018-10-31 13:33:55 +01:00
Daniel Gultsch 52ecd9347c added dialogs for rate limiting and out of date version 2018-10-31 13:33:55 +01:00
Daniel Gultsch 584cf43b3d added all callbacks to sign up activities 2018-10-31 13:33:55 +01:00
Daniel Gultsch 2fa629d113 create api calls 2018-10-31 13:33:55 +01:00
Daniel Gultsch 31eb89e2fb added callbacks 2018-10-31 13:33:55 +01:00
Daniel Gultsch 6d6278002a attempt to automatically detect pins in clipboard 2018-10-31 13:33:55 +01:00
Daniel Gultsch 5695236838 verify activity 2018-10-31 13:33:55 +01:00
Daniel Gultsch 954acb377e WIP QuickConversationsService 2018-10-31 13:33:55 +01:00
Daniel Gultsch 532eed9a0a stub quick conversations service 2018-10-31 13:33:55 +01:00
Daniel Gultsch ec56d7de88 added a choose country activity 2018-10-31 13:33:55 +01:00
Daniel Gultsch 7a3ba3e375 created enter phone number activity 2018-10-31 13:33:55 +01:00
Daniel Gultsch f10f3730e1 added new menu item 'manage account' and show when on quick 2018-10-31 13:33:55 +01:00
Daniel Gultsch ae5a36076b moved layout file full only activities to full resource folder 2018-10-31 13:33:55 +01:00
Daniel Gultsch a420cb5886 refactored some ManageAccount, WelcomeActivity and a few other things into 'full' flavor 2018-10-31 13:33:55 +01:00
Daniel Gultsch 96d34215fb introduced new build flavors quick and full 2018-10-31 13:33:55 +01:00
Daniel Gultsch 79eee4916c version bump to 2.3.5 + changelog 2018-10-26 18:28:47 +02:00
Daniel Gultsch 40da98289b pulled translations from transifex 2018-10-26 17:31:21 +02:00
Daniel Gultsch a3744ce4f8 improve openkeychain error reporting 2018-10-25 18:16:02 +02:00
Daniel Gultsch 03cd176c27 refined nick matching patter. word boundry (\b) doesn’t match on words ending in a boundry
fixes #3249
2018-10-25 15:33:37 +02:00
Daniel Gultsch 18752a5c58 write null bitmap to imageview to replace asyncdrawable 2018-10-24 20:00:56 +02:00
Daniel Gultsch d6f604a8e4 code cleanup, null check not necessary when using instance of 2018-10-24 20:00:25 +02:00
Daniel Gultsch bb6ddae76b ask for permission when committing attachments. fixes #3248 2018-10-24 20:00:06 +02:00
Daniel Gultsch 185d36d270 do not provide up navigation in publish account when in setup mode 2018-10-23 21:25:38 +02:00
Daniel Gultsch f9cafc144b refactor magic creates password gen to CryptoHelper 2018-10-20 00:05:10 +02:00
Daniel Gultsch 157ebbac52 go back to upstream image-cropper and instead exclude dependencies 2018-10-19 20:59:47 +02:00
Daniel Gultsch 7177c523a1 Do not insert text shared over XMPP uri when already drafting message
XMPP uris in the style of `xmpp:test@domain.tld?body=Something` can be used to
directly share a message with a specific contact. Previously the text was
always appended to the message currently in draft. The message was never send
automatically. Essentially those links where treated like normal text share
intents (for example when sharing a URL from the browser) but without the
contact selection.

There is a concern (CVE-2018-18467) that when this URI is invoked automatically
and the user is currently drafting a long message to that particular contact
the text could be inserted in the draft field (input box) without the user
noticing.

To circumvent that the text shared over XMPP uris that contain a particular
contact is now appended only if the draft box is currently empty.

Sharing text normally (**with** manual contact selection) is still treated the
same; meaning the shared text will be appended to the current draft. This is
intended behaviour to make the
'Hey I have this cool link here;' *open browser*, *share link* - secenario
work.
2018-10-19 15:39:31 +02:00
Daniel Gultsch 71bbd379e9 removed unused paramater 'newTask' from switchToConversation api 2018-10-19 15:18:36 +02:00
Daniel Gultsch 5e764216ef version bump to 2.3.4 + changelog 2018-10-17 23:09:25 +02:00
Daniel Gultsch 7ff5aa3006 removed unused resources 2018-10-17 23:02:02 +02:00
Daniel Gultsch 304ad9aab9 pulled translations from transifex 2018-10-17 23:01:34 +02:00
Daniel Gultsch 4f12cf06ed revert back to 16 byte IVs for omemo since ChatSecure doesn’t support 12 byte 2018-10-17 20:46:57 +02:00
Daniel Gultsch 9048075aaa version bump to 2.3.3 + changelog 2018-10-16 12:40:24 +02:00
Daniel Gultsch 5f8184fe8e only store non hardcoded resolver result in db 2018-10-16 12:23:27 +02:00
Daniel Gultsch 2edab21423 render 'read up to this point' in 1:1 when followed by date bubble
fixes #3237
2018-10-16 12:18:28 +02:00
Daniel Gultsch 995f95ce99 pulled translations from transifex 2018-10-14 22:08:07 +02:00
Daniel Gultsch 2e2914ee78 fixed NPE after attempt to store user@ip style jid resolver result 2018-10-13 16:13:33 +02:00
Daniel Gultsch dd1d1858d0 fixed cache cleaning cleaning all confercenes instead of where contact is. closes #3229 2018-10-12 16:13:37 +02:00
Daniel Gultsch 63f4625266 version bump to 2.3.2 + changelog 2018-10-11 15:46:57 +02:00
Daniel Gultsch a08da684e1 pulled translations from transifex 2018-10-11 15:46:43 +02:00
Daniel Gultsch 7734047698 pulled translations from transifex 2018-10-11 05:14:11 +02:00
Daniel Gultsch 5718d552ed do not show 'open website' button after info has changed
fixes #3220
2018-10-11 05:06:46 +02:00
Daniel Gultsch 409bf3c0cb use bouncycastle provider up to api 27
apparently using conscrypt on Android below version 7? throws an exception when using 16 byte IVs.
so we now use BC when ever possible (excluding api 28)

we don’t know why Conscrypt behaves differently on various android versions
2018-10-11 04:36:37 +02:00
Daniel Gultsch 7c5af89c89 offer either 'cancel download' or 'delete file' but not both
fixes #3221
2018-10-11 04:33:14 +02:00
Licaon_Kter 58c6dbbbbe Lower foreground service notification priority (#3223)
...so no useless icon is shown on the status bar on Android 7 and older (as it was up to 2.2.9)
2018-10-11 02:44:17 +02:00
Daniel Gultsch 57fe153ef1 make 'cancelled' work for jingle ft 2018-10-08 10:31:41 +02:00
Daniel Gultsch bdb8d98eb1 show snackbar for remote server timeout in mucs 2018-10-08 10:31:11 +02:00
Daniel Gultsch de0741bdf7 show cancelled instead of delivery failed if user requested to abort transfer 2018-10-07 14:59:08 +02:00
Daniel Gultsch 284861de65 Do not attempt to draw overlay on null bitmap 2018-10-07 13:44:20 +02:00
Daniel Gultsch 3dceb9d3ad refactor video qualtiy selector; less technical descriptions; code cleanup 2018-10-07 13:09:13 +02:00
Daniel Gultsch 84f7aeaea0 Merge branch 'video-selector' of https://github.com/licaon-kter/Conversations into licaon-kter-video-selector 2018-10-07 09:51:14 +02:00
Licaon_Kter 02be93ae66
Fix leftover string 2018-10-07 01:36:47 +00:00
licaon-kter a6fef8101b Fix selector, limit formats to 360 & 720 per CTS 2018-10-07 04:25:16 +03:00
Daniel Gultsch f23311ab3f PRNG fixes were a nop ever since we switched to 4.4+ 2018-10-06 19:34:20 +02:00
Daniel Gultsch 521bb7846c catch exception if Conscrypt could not be initialized and use tls 1.2 2018-10-06 19:33:38 +02:00
Daniel Gultsch d02b1237f7 pulled translations from transifex 2018-10-06 18:46:07 +02:00
Daniel Gultsch 10bfa00580 switch Android-Cropper library to come from jitpacked github to update to support library 28 2018-10-06 17:04:50 +02:00
Daniel Gultsch 8980a0c631 make jids appear as monospace in dialogs 2018-10-06 17:03:12 +02:00
licaon-kter fcccf545ba Add video compression selector 2018-10-06 17:15:32 +03:00
Daniel Gultsch fd165e5106 add confirmation dialog for deleting files
fixes #3202, closes #3193, closes #3214
2018-10-06 14:59:28 +02:00
Daniel Gultsch 7aa8aba5c0 code cleanup / reformat in ShareViaAccount 2018-10-06 12:48:39 +02:00
Daniel Gultsch b27fa6d206 version bump to 2.3.1 + changelog 2018-10-05 12:56:19 +02:00
Daniel Gultsch f2f44c7478 pulled translations from transifex 2018-10-05 10:05:35 +02:00
ChaosKid42 cd13f438c0 add recordings directory to file_paths.xml for sharing recordings in (#3216)
case ONLY_INTERNAL_STORAGE = true
2018-10-05 09:51:37 +02:00
Daniel Gultsch a6ced5bee8 pulled translations from transifex 2018-10-04 22:44:54 +02:00
Daniel Gultsch ce46b36c33 go back to 16 byte IVs for OMEMO
clients like Dino can’t handle 12 byte IVs
2018-10-04 22:32:42 +02:00
Daniel Gultsch 0e3be466ad fixed regression introduce in earlier commit. don’t use conscrypt on older devices 2018-10-04 19:21:23 +02:00
Daniel Gultsch bfa63e13c5 added a few TODOs in regards to the handling of inactive devices 2018-10-04 18:48:45 +02:00
Daniel Gultsch 04ac2264e8 Do weOwnFile security check only when attaching
The general security check is recommend so a third party can not ask us to send an internal file. But we don’t need to do this for files we attach ourself from within Conversations
2018-10-04 17:17:20 +02:00
Daniel Gultsch 657b1cae9d use fab.hide() and fab.show() - this will animate the process 2018-10-04 16:46:35 +02:00
Daniel Gultsch 390175e5b3 use short read timeout when waiting for first stream open. disable read timeout aftwards 2018-10-04 11:20:02 +02:00
Daniel Gultsch a34033dea3 run through sendMessage() procedure instead of taking shortcut after returning from TrustKeys
The shortcut didn’t take care of message edits and some other things
2018-10-03 23:23:47 +02:00
Daniel Gultsch 23282484d6 prevent race condition when fetching device ids 2018-10-03 22:03:47 +02:00
Daniel Gultsch f608fb349a refactored file encryption to give access to inner stream
Conscrypt on some plattforms doesn’t like when we close the CipherInputStream. Therefor we refactor the api to give us access to the inner stream so we can close that independently.
2018-10-03 18:14:45 +02:00
Daniel Gultsch 4c08ba8d03 use 12 byte IV for omemo and http upload 2018-10-03 17:44:48 +02:00
Daniel Gultsch 9ca636589c remove more legacy otr decryption code 2018-10-03 12:50:54 +02:00
Daniel Gultsch 7fa8811f64 refresh ui after device list update only if list has changed 2018-10-03 11:53:02 +02:00
Daniel Gultsch b2cbd60f94 use Consistent Color Generation (XEP-0392 v0.6) 2018-10-02 20:33:53 +02:00
Daniel Gultsch 98d3d91a8e create notification channel for quite hours. fixes #3212 2018-10-02 20:25:03 +02:00
Daniel Gultsch d7f058c5b8 pulled translations from transifex 2018-10-01 20:17:32 +02:00
Daniel Gultsch d4b98c9aff made xmpp domain verifier verify wildcard domains where domain is a sub.sub domain 2018-10-01 17:08:23 +02:00
Daniel Gultsch db2107c093 clean up connection code. unify domain = ip and extended connection settings into fake resolver 2018-10-01 17:07:37 +02:00
Daniel Gultsch 8270adf703 use sni and alpn for start tls as well. apperently google requires it 2018-10-01 11:34:27 +02:00
Daniel Gultsch 1cbb60d7ed removed unused code (otr jingle encrypted file transfer) 2018-09-30 13:48:11 +02:00
Daniel Gultsch 653cb152e2 ammend changelog with info regarding ejabberd 2018-09-29 09:41:05 +02:00
Daniel Gultsch bb6b647af8 use stronger video compression (lower bitrate & lower resolution) 2018-09-28 18:38:54 +02:00
Daniel Gultsch 7e21d80de2 version bump to 2.3.0 + changelog 2018-09-27 19:38:45 +02:00
Daniel Gultsch 9816261569 introduced error code for server not opening stream after auth or starttls 2018-09-27 17:39:49 +02:00
Daniel Gultsch cf879dd8e8 fixed sni and alpn for kitkat 2018-09-27 10:00:58 +02:00
Daniel Gultsch d8c1327658 update gradle plugin and support library 2018-09-27 10:00:15 +02:00
Daniel Gultsch d737ea296e code cleanup 2018-09-27 09:59:05 +02:00
Daniel Gultsch 681ce91ab8 do not run through connection loop after thread was interrupted and resolver returned 0 results 2018-09-26 14:39:04 +02:00
Daniel Gultsch 6121217df5 fixed auth 2018-09-26 10:39:36 +02:00
Sam Whited ef4cfacaf4 Fix auth when upgrading from SCRAM-SHA-1 to -256 (#3192) 2018-09-26 10:19:54 +02:00
Daniel Gultsch 9015d0a1fc interrupt sub thread in resolver 2018-09-26 10:18:56 +02:00
Daniel Gultsch cdcd2f8b04 do not show 'paste as quote' if clip is NULL 2018-09-24 20:33:05 +02:00
Daniel Gultsch 9e7db440df pulled translations from transifex 2018-09-24 19:47:20 +02:00
Daniel Gultsch 23b641a6ad fixed notification sounds for Android 6 2018-09-24 19:47:11 +02:00
Daniel Gultsch 5cf64826ac check if wake lock needs reinit when pressing start/pause in audio player 2018-09-23 11:47:13 +02:00
Daniel Gultsch 2d206122a5 use conscrypt api to set sni and alpn 2018-09-23 11:20:23 +02:00
Daniel Gultsch 70845c5e95 do not compress/resize images with strange aspect ratios. fixes #3188 2018-09-22 16:51:00 +02:00
Daniel Gultsch b759cf902d fixed regression that didn’t enable SNI 2018-09-22 13:32:46 +02:00
Daniel Gultsch 6637d7056e use conscrypt as security provider to provide tls 1.3 and modern cyphers on old androids 2018-09-21 16:33:07 +02:00
Daniel Gultsch 1985f6bdec store avatars received over muc presence in contact 2018-09-21 12:27:58 +02:00
Daniel Gultsch b8d831f02a version bump to 2.3.0-beta.3 2018-09-21 11:20:45 +02:00
Daniel Gultsch 4930f22615 copy into new array when returning from resolver 2018-09-20 20:29:21 +02:00
Daniel Gultsch 5be64de7be catch conversations.im invite urls directly in fragment 2018-09-18 17:15:52 +02:00
Daniel Gultsch 53cd58c955 fixed text sharing in direct sharing 2018-09-18 17:03:08 +02:00
Daniel Gultsch 6ede6c7f85 behave nicely (no foreground service by default) if app is built with targetSdk <26 2018-09-18 11:33:18 +02:00
Daniel Gultsch 88dc7bae1c version bump to 2.3.0-beta.2 2018-09-18 09:06:00 +02:00
Daniel Gultsch 5599c1f6f4 pulled translations from transifex 2018-09-17 21:31:00 +02:00
Daniel Gultsch bd128335d3 do not show media overview in contact/conference details when missing storage permission 2018-09-17 21:24:25 +02:00
Daniel Gultsch 09eca8478e use javax api instead of BC for file decryption 2018-09-17 17:47:51 +02:00
Daniel Gultsch 67e7d2cf9e do not use BC provider on android 22+ 2018-09-17 17:47:36 +02:00
Daniel Gultsch 4bc9713b80 version bump to 2.3.0-beta + changelog 2018-09-16 16:33:21 +02:00
Daniel Gultsch 542abb7a95 pulled translations from transifex 2018-09-16 16:02:52 +02:00
Daniel Gultsch c5fcd03489 check omemo keys when attachments are commit instead of before 2018-09-16 15:58:05 +02:00
Daniel Gultsch 6a6287bbd7 commit next message (draft) when input box gets emptied. causes tablet view to update 2018-09-16 15:26:33 +02:00
Daniel Gultsch 3624d11824 create notification channel for export service 2018-09-16 14:40:28 +02:00
Daniel Gultsch c141f16065 modify media preview sizes for various screens 2018-09-16 14:09:15 +02:00
Daniel Gultsch a6bcd9afe9 show inactive keys if all of them are 2018-09-16 14:08:56 +02:00
Daniel Gultsch b8474941c7 clear parent activities pending view intent before calling startAcitvityForResult() 2018-09-16 10:09:22 +02:00
Daniel Gultsch febd9cc3e0 fixed regression that would not dismiss video encoding notification 2018-09-16 10:07:33 +02:00
Daniel Gultsch 0977f300dd s/show media/view media/g 2018-09-16 09:47:33 +02:00
Daniel Gultsch 7a0c53aa71 introduce media browser activity 2018-09-15 21:10:17 +02:00
Daniel Gultsch 06972ec95c show conversation media in contact/conference details 2018-09-15 19:38:45 +02:00
Daniel Gultsch 63f203c1d1 do some performance optimizations on jid host suggestions. fixes #3174 2018-09-14 14:00:26 +02:00
Daniel Gultsch e0266d0efb fix media preview in tablet mode 2018-09-13 18:48:21 +02:00
Daniel Gultsch 724f86f054 made foreground service logging more meaninful 2018-09-13 18:47:57 +02:00
Daniel Gultsch 98d772dab4 update ShortcutBadger 2018-09-13 18:47:30 +02:00
Daniel Gultsch 63f374c90f pulled translations from transifex 2018-09-12 23:04:36 +02:00
Daniel Gultsch c795cdb722 add icon for unknown file while keeping 'file' icon for documents 2018-09-12 22:56:40 +02:00
Daniel Gultsch b15777bd3a make media previews survive rotations 2018-09-12 22:20:19 +02:00
Daniel Gultsch fbc1d242ca allow sharing and attaching of multiple files
fixes #3132
2018-09-12 18:43:17 +02:00
Daniel Gultsch d7cdec002c add more thumbnail icons for various file types 2018-09-12 18:10:37 +02:00
Daniel Gultsch 943f11e1f6 share with uses new preview mechanism 2018-09-12 17:21:32 +02:00
Daniel Gultsch 00c062a0c8 fixed media preview for file types other than images 2018-09-12 14:37:41 +02:00
Daniel Gultsch 0f81ae39b8 Merge branch 'master' of github.com:siacs/Conversations 2018-09-11 09:58:02 +02:00
Daniel Gultsch 3608b0eb44 WIP: preview media before sending them
Note that this commit breaks a few things in that non video/image do not work and sharing media isn’t currently using the new mechanism either
2018-09-11 09:56:32 +02:00
9662 c12f63b2ec Fix typo (#3171) 2018-09-10 14:35:36 +02:00
Daniel Gultsch 7bde04877a avoid duplicate notifcation sounds 2018-09-09 21:34:41 +02:00
Daniel Gultsch db6b9ab12b pulled translations from transifex 2018-09-08 12:50:11 +02:00
Daniel Gultsch 2d5bd539db sync roster after setting pgp id. fixes #2991 2018-09-08 12:46:15 +02:00
Daniel Gultsch 511335179f do not parse caps and pgp keys from muc presences 2018-09-08 12:45:05 +02:00
Daniel Gultsch be4c6bc2ca speed up DNS
run queries in parallel
decrease timeout
do not fall back to google
2018-09-08 11:30:20 +02:00
Daniel Gultsch accc378c4b hasInternetConnection() will always return true if type=ethernet 2018-09-06 23:18:06 +02:00
Daniel Gultsch eadd0c5f7a listen for Android 6 DND events 2018-09-06 23:17:37 +02:00
Daniel Gultsch ac7f0032af properly clear file adding notification if forground service channel is disabled 2018-09-06 22:05:15 +02:00
Daniel Gultsch 39b86de698 removed global notifications switch 2018-09-06 16:56:31 +02:00
Daniel Gultsch d86f4ce3a6 load contacts and start observer after giving permissions 2018-09-06 15:55:54 +02:00
Daniel Gultsch 816f5b6d22 make channel for video compression 2018-09-06 15:37:31 +02:00
Daniel Gultsch 14e0df2caf provide intent filter to launch settings from notification groups controls 2018-09-06 15:37:15 +02:00
Daniel Gultsch 5675f65d6d use adaptive launcher icon :-/ 2018-09-05 22:24:58 +02:00
Daniel Gultsch 676d31f606 initial work toward api 26+
* introduce notification channels
* always use foreground service on 26+
2018-09-05 21:37:12 +02:00
Daniel Gultsch d5b50d1076 fixed user hint in magic create mode 2018-09-05 20:16:45 +02:00
Daniel Gultsch 11f67ac1ae fixed own avatar not being square in message view 2018-09-05 18:02:44 +02:00
Daniel Gultsch 516b6dcc1f code cleanup for group chat user context menu 2018-09-02 20:54:50 +02:00
Daniel Gultsch ffc5d47091 Merge branch 'start_convervsations_by_long_press' of https://github.com/ChaosKid42/Conversations into ChaosKid42-start_convervsations_by_long_press 2018-09-02 15:02:03 +02:00
Christoph Scholz 3ecb7136c1 start new conversations by long press on avatar 2018-09-01 21:05:31 +02:00
Daniel Gultsch 06f37b0d2b AudioPlayer: disable screen and switch to earpiece when holding phone to ear
Based of initial worked by @harshitbansal05
2018-09-01 18:23:07 +02:00
Daniel Gultsch f533e526fb catch illegalargument exception when discovering extension from url 2018-09-01 16:56:20 +02:00
Daniel Gultsch effe52981a version bump to 2.2.9 + changelog 2018-09-01 10:08:17 +02:00
Daniel Gultsch 6d6bbc0a5d removed synchronized in favor of another interrupted check in startXmpp() 2018-09-01 10:07:40 +02:00
Daniel Gultsch c05acccf17 catch illegal state not illegal argument on popBackStack() 2018-09-01 10:07:04 +02:00
Daniel Gultsch 201d8ab398 do not show 'delete contact' for phone contacts. do not treat as stranger 2018-08-31 11:04:45 +02:00
Daniel Gultsch b565c20d91 make recording activity not crash if microphone was in use. fixes #3160 2018-08-31 11:04:18 +02:00
Daniel Gultsch 2febbe1b8d show jids from address book in Start Conversation screen if only one account is used 2018-08-30 18:45:22 +02:00
Daniel Gultsch af724a6697 make port field disabled if hostname is empty 2018-08-29 09:33:02 +02:00
Daniel Gultsch eaa62f8840 modify gradle.properties to work with gradle 4.7+ 2018-08-28 17:51:40 +02:00
Daniel Gultsch 658caec342 use volatile for thread object in xmppconnection 2018-08-28 17:51:18 +02:00
Daniel Gultsch c4ca381c7f remove dividers from settings 2018-08-28 17:50:36 +02:00
Daniel Gultsch cbea85c4dd special treatment for presence errors known to be mucs 2018-08-28 15:04:55 +02:00
Daniel Gultsch 320eb46515 bumped gradle version 2018-08-28 15:04:31 +02:00
Daniel Gultsch 186f30fc5c pulled translations from transifex 2018-08-28 15:04:16 +02:00
Daniel Gultsch 268fcd3838 disabled by default variant of XEP-0392 2018-08-19 22:33:20 +02:00
Daniel Gultsch 9f191f64da do not display 'user left' toast in members only groups. fixes #3144 2018-08-19 22:13:13 +02:00
Aditya Borikar 52c625bc01 Attempt at disbling grace period in response to issue #3114 (#3116) 2018-08-18 18:24:54 +02:00
linkmauve 49349d898b add id="current" on every published PEP item (#3133)
This makes sure even misconfigured PEP nodes still get only one item, as
defined in XEP-0060 §12.20.
2018-08-18 18:24:29 +02:00
Daniel Gultsch 02b7b0b4a6 do grace period calculation only on positive periods 2018-08-18 18:20:58 +02:00
Daniel Gultsch 8f057a0c95 try to catch out of memory exception 2018-08-18 18:13:51 +02:00
Daniel Gultsch 25aa6bed1e upgrade babbler version 2018-08-18 18:13:18 +02:00
Daniel Gultsch dc5e7e5d95 store bookmarks in pep if conversion xep is running 2018-08-18 16:27:50 +02:00
Daniel Gultsch 46574d6e11 version bump to 2.2.8 + changelog 2018-07-23 20:43:42 +02:00
Daniel Gultsch f93cb8ede1 Revert "Patterns: attempt at fixing complex xmpp URIs (typically xmpp:#mychan%irc.server@xmpp.server.tld?join) (#3115)"
This reverts commit a4004904fe.
2018-07-22 22:42:35 +02:00
Daniel Gultsch fd28b32d56 call onMessageFound outside sync block 2018-07-22 22:42:32 +02:00
Daniel Gultsch 53a9930837 show toast if no address book app is installed 2018-07-22 22:42:05 +02:00
Daniel Gultsch e27e3ecf92 version bump to 2.2.7 + changelog 2018-07-18 16:34:31 +02:00
Daniel Gultsch 1764656ff9 call switchTo(Fore|Back)ground() outside synchronized block 2018-07-16 21:35:52 +02:00
Romain DEP a4004904fe Patterns: attempt at fixing complex xmpp URIs (typically xmpp:#mychan%irc.server@xmpp.server.tld?join) (#3115) 2018-07-16 20:50:23 +02:00
Daniel Gultsch 2fc4ca719d pulled translations from transifex 2018-07-16 20:49:43 +02:00
Daniel Gultsch 93836d94ee null pointer check in notification service 2018-07-16 20:49:30 +02:00
Daniel Gultsch ae35593f65 catch all exceptions when checking file size 2018-07-16 20:42:40 +02:00
Daniel Gultsch 2cc601ee36 do not call listeners while being synchronized on stanza queue 2018-07-16 20:42:17 +02:00
Daniel Gultsch 79fe1c8972 version bump to 2.2.6 + changelog 2018-07-11 21:48:54 +02:00
Daniel Gultsch 07c096204a pulled translations from transifex 2018-07-11 21:48:39 +02:00
Daniel Gultsch 4871263d9c display propper toast after room has been destroyed 2018-07-11 21:33:27 +02:00
Daniel Gultsch f9c5cdee6e fall back to random subject langugae in case there is no english one 2018-07-11 13:20:06 +02:00
Daniel Gultsch 9bdebb81ba handle non participating mucs a bit better 2018-07-09 11:35:30 +02:00
Daniel Gultsch 728c86222d do not add in_roster flag when restoring from disk 2018-07-09 11:06:23 +02:00
Daniel Gultsch 7b64a031cd store own affiliation and role to disk 2018-07-08 20:52:55 +02:00
Daniel Gultsch 3014b7f857 change listener lock strategie 2018-07-08 20:01:39 +02:00
Daniel Gultsch 0f233022a6 standards. right? 2018-07-07 11:29:50 +02:00
Daniel Gultsch 48e366e410 support mam:1 2018-07-07 11:20:39 +02:00
Daniel Gultsch 0fa97bdc11 show snackbar for resource constraint in mucs 2018-07-07 10:28:31 +02:00
Daniel Gultsch a1f933924c open trust key screen when download is in progress 2018-07-07 08:53:11 +02:00
Daniel Gultsch 59697eb092 fixed npe in paste as quote 2018-07-06 20:16:15 +02:00
Daniel Gultsch 1cc3f5bed7 make xmppuri deal with null input 2018-07-06 20:16:04 +02:00
Daniel Gultsch a23d9929f1 use sets instead of list for listeners 2018-07-06 20:15:45 +02:00
Daniel Gultsch 3782a6fac6 EmojiService: use replaceAll=false on android 8 2018-07-05 13:22:32 +02:00
Daniel Gultsch 88a7186ace version bump to 2.2.5 + changelog 2018-07-01 12:07:54 +02:00
Daniel Gultsch 49d5c1eb52 only look at inner 70% to calculate overlay 2018-07-01 12:06:09 +02:00
Daniel Gultsch c07a019433 pulled translations from transifex 2018-07-01 11:46:31 +02:00
Daniel Gultsch 55fcda3cee use dark play/gif button as overlay when image is mostly light 2018-06-30 17:52:34 +02:00
Daniel Gultsch 8d4821c79c pulled translations from transifex 2018-06-30 13:36:29 +02:00
Daniel Gultsch dfb95f0a84 persist muc avatar and show in bookmarks 2018-06-30 13:35:17 +02:00
Daniel Gultsch 9408dd597a try to fix race condition with empty trust ui 2018-06-30 13:35:05 +02:00
Daniel Gultsch 3218ca3fe3 shorten read markers to 'everyone has read up to this point' when > 4 user 2018-06-30 12:14:42 +02:00
Daniel Gultsch 559852002e offer paste as quote for html clips 2018-06-30 11:08:20 +02:00
Daniel Gultsch 9ef7570d48 use EmojiWrapperEditText for most relevant text inputs 2018-06-29 13:40:55 +02:00
Daniel Gultsch af420c84a0 automatically start download if file size is known 2018-06-28 17:44:00 +02:00
Daniel Gultsch ee3438b03a use + as build metadata delimiter 2018-06-28 08:49:48 +02:00
Daniel Gultsch db03470eb4 fixed MucOptions.getName() 2018-06-27 17:17:44 +02:00
Daniel Gultsch d6a40a839a click on item selection 2018-06-27 17:17:31 +02:00
Daniel Gultsch 68f23af219 version bump to 2.2.4 + changelog 2018-06-26 20:38:36 +02:00
Daniel Gultsch 464c79ac9e pulled translations from transifex 2018-06-25 20:11:38 +02:00
Daniel Gultsch 3bd25a95b4 use black nav bar 2018-06-25 20:04:44 +02:00
Daniel Gultsch 23af9183ba dismiss snackbar when executing pending action 2018-06-25 20:04:30 +02:00
Daniel Gultsch 76fba4c697 fixed 9-patch generation 2018-06-25 19:41:15 +02:00
Wiktor 5345befd9b Set navigation bar color to dark on dark theme (#3091)
* Allow overriding ConversationsTheme.Dark

This change splits the dark theme style into two styles - base that
stays the same in all configurations and Dark - the original - that can
be overridden in specific configurations to add version specific styles.

* Set navigation bar color to dark on dark theme

Use secondary background color as navigation bar color when using dark
theme. This avoids mismatched white colors on certain system themes.
2018-06-25 19:40:37 +02:00
Daniel Gultsch 9a4109eaa1 catch rare state loss exception when hitting home button to pop back stack 2018-06-25 10:31:22 +02:00
Daniel Gultsch ad5c9f85c3 clean up imports 2018-06-25 09:46:52 +02:00
Daniel Gultsch 6c0b977a0e use emoji transform for toolbar and muc name 2018-06-25 09:25:55 +02:00
Daniel Gultsch fd3b54aaff pulled translations from transifex 2018-06-24 20:54:10 +02:00
Daniel Gultsch 0fffc7a1ac restart file observer when permisson are granted 2018-06-24 20:54:01 +02:00
Daniel Gultsch 9d69b38147 fix regression with background color in conv overview 2018-06-24 18:57:06 +02:00
Daniel Gultsch 27a1bdb4b9 use tertiary background color for landscape conversation overview 2018-06-24 16:59:27 +02:00
Daniel Gultsch e8a1f069c2 reset subject and name on empty 2018-06-24 16:33:15 +02:00
Daniel Gultsch 4c9e331e01 save name instead of subject in bookmark 2018-06-24 16:17:20 +02:00
ChaosKid42 42b1e56cd9 improve identification of muc service (#3094) 2018-06-24 15:42:54 +02:00
Daniel Gultsch b0e1b5b02d refined create conference dialog 2018-06-24 11:23:10 +02:00
Daniel Gultsch 4f1e71e3c4 choose contact activity: start action mode on short press 2018-06-23 21:35:37 +02:00
Daniel Gultsch a623e6f70a change avatar size in details screens depedning on screen width 2018-06-23 19:00:23 +02:00
Daniel Gultsch a934054038 scale text size if topic is long 2018-06-23 13:14:12 +02:00
Daniel Gultsch 7a991d2d8c pulled translations from transifex 2018-06-23 09:48:23 +02:00
Daniel Gultsch 1b0e9f2f0d open/close soft keyboard in quick edit 2018-06-23 09:29:29 +02:00
Daniel Gultsch 64aa238d57 make safe button work 2018-06-23 00:58:20 +02:00
Daniel Gultsch 1f3b4e2ccf non functional muc edit button 2018-06-22 21:55:54 +02:00
Daniel Gultsch e6532e739a do not include white listed domains in room list. fixes #3082 2018-06-22 20:25:50 +02:00
Daniel Gultsch 1fc432af53 use TextInputLayout in quickedit dialog 2018-06-22 17:42:52 +02:00
Daniel Gultsch 9cc22ce992 introduced build flavor to build w/o emoji compat 2018-06-21 14:26:25 +02:00
Daniel Gultsch 4b3de32a4e linkify subject + open xmpp directly w/o going through start conv activity 2018-06-20 15:12:02 +02:00
Daniel Gultsch cf16e52ba8 pulled translations from transifex 2018-06-20 13:05:10 +02:00
Daniel Gultsch 8a987f23f6 code clean up in contact details presence handling 2018-06-20 12:59:15 +02:00
Daniel Gultsch 6c27d07803 fixed some extended muc info handling. match what ejabberd does 2018-06-19 11:05:21 +02:00
Daniel Gultsch 159fedb358 use room name (if available and != localpart) as group name 2018-06-18 22:17:10 +02:00
Daniel Gultsch d59cc3b738 show toast before finishing publish activity 2018-06-18 17:32:48 +02:00
Daniel Gultsch a043ee6db6 show jid in group details 2018-06-18 15:05:31 +02:00
Daniel Gultsch d7ebd7d453 WIP: set room avatar and slight redesign of group details 2018-06-18 14:15:19 +02:00
Daniel Gultsch f434925753 do not include read only chats in contact chooser. fixes #3077 2018-06-16 19:00:23 +02:00
Daniel Gultsch b9bdb3df55 use Tor on http upload is account uses onion domain. fixes #3075 2018-06-16 18:31:55 +02:00
Daniel Gultsch 582178991b deduplicate tags + translate 'blocked' tag 2018-06-16 18:14:49 +02:00
Daniel Gultsch 13f1a23889 introduced config setting to hide error notification 2018-06-14 15:01:25 +02:00
Daniel Gultsch d8e0ad62a4 version bump to 2.2.3 + changelog 2018-06-14 08:27:23 +02:00
Daniel Gultsch b9bf228f11 pulled translations from transifex 2018-06-14 08:27:09 +02:00
Daniel Gultsch a0008f823b pulled translations from transifex 2018-06-12 09:18:22 +02:00
Daniel Gultsch 641adc3ff2 add translateable string for paste as quote 2018-06-11 16:59:55 +02:00
Daniel Gultsch 17db77ed5d Merge branch 'trailing_url_slash' of https://github.com/klonfish/Conversations into klonfish-trailing_url_slash 2018-06-11 16:19:51 +02:00
Daniel Gultsch e8066debf8 add ‘paste as quote’ for api >= 23 2018-06-11 15:32:18 +02:00
Daniel Gultsch 00281112b9 pulled translations from transifex 2018-06-11 13:36:52 +02:00
Daniel Gultsch 354d20ecd6 put google() before jcenter() in gradle 2018-06-10 19:51:41 +02:00
Daniel Gultsch 37c3bdb8bf fall back to search in other tab on search enter 2018-06-10 19:48:30 +02:00
Daniel Gultsch 10cee98913 Added expert setting for direct search 2018-06-10 19:40:55 +02:00
Daniel Gultsch fcfb695e7a permit empty values for subject and roster name 2018-06-10 19:12:46 +02:00
Klaus 30e5f9b290 fix geo uri regex (fix #3050) (#3071)
- only match valid float numbers
- match uri with parameter
2018-06-10 18:53:07 +02:00
ChaosKid42 d86f0787da fix cleanPrivateStorage() (#3065) 2018-06-07 08:09:31 +02:00
Daniel Gultsch 258c7d1b3b attach editor content as file 2018-06-06 19:59:30 +02:00
Daniel Gultsch 4019593181 report unparsable limit as http upload available 2018-06-05 16:18:18 +02:00
Wolf 4538909275 url typo (#3061)
resulted in 404
2018-06-04 19:53:34 +02:00
Daniel Gultsch 7bcbca7aee edit public=true/false property in mucs 2018-06-02 12:06:01 +02:00
Daniel Gultsch f58c1732b6 version bump to 2.2.2 + changelog 2018-05-29 16:39:51 +02:00
Daniel Gultsch 93df2ecc69 pulled translations from transifex 2018-05-29 16:36:22 +02:00
Daniel Gultsch c8a0bf7090 OMEMO: remove omemo device from own list if bundle is broken 2018-05-28 22:08:20 +02:00
Daniel Gultsch 9706c7e953 pulled translations from transifex 2018-05-28 13:26:56 +02:00
Daniel Gultsch 4557a3fc4f make sure account is connected before attempting to download p1s3 2018-05-27 20:39:12 +02:00
Christian Schneppe be3955ba8f add missing else to show the availability of httpupload correctly (#3048) 2018-05-27 10:49:26 +02:00
Daniel Gultsch 1854e37e7a reintroduce support for old http upload 2018-05-26 21:43:50 +02:00
ChaosKid42 bc50239c2a improve active_since implementation (XEP-0319: Last User Interaction in Presence) (#3045)
* set contact to inactive if it becomes offline

* send idle also in case app started in background
2018-05-26 15:57:33 +02:00
Daniel Gultsch fd7a5c605a Do not use TLS_FALLBACK_SCSV
closes #2937

Thanks to @tmolitor-stud-tu for explaining the situation in
https://github.com/guardianproject/NetCipher/pull/74
2018-05-26 10:22:44 +02:00
Daniel Gultsch 1510958278 do not show file id in check size button 2018-05-26 10:17:38 +02:00
Daniel Gultsch 2d118b5a21 show S3 file transfer in server info if http upload is n/a 2018-05-26 10:17:24 +02:00
Daniel Gultsch ea5cdec186 handle p1s3 urls in http downloader 2018-05-25 15:37:14 +02:00
Daniel Gultsch 4626bdf8d8 show p1s3 attchments with download button 2018-05-25 13:18:25 +02:00
Daniel Gultsch 70d95c7903 upload files using p1s3 - sending part 2018-05-25 12:24:23 +02:00
Daniel Gultsch e4ca8961aa exclude firebase-base from firebase-messaging 2018-05-20 21:13:53 +02:00
Daniel Gultsch 94484ce392 disable analytics
https://firebase.google.com/support/guides/disable-analytics
2018-05-20 18:02:11 +02:00
Daniel Gultsch a149f0db27 set pragme secure delete properly 2018-05-20 18:01:47 +02:00
Alexander df64d965a0 explicitly set secure_delete pragma for SQLite database (#3039)
Conversations stores sensitive data, such as SQLiteAxolotlStore tables, in its database.

secure_delete=ON is the default for newer Android devices:
https://android-review.googlesource.com/c/platform/external/sqlite/+/209123

However, older devices had it disabled by default, so any database created than has this setting disabled and it will not be updated automatically.

Also, the default might be changed in the future (for example, to "FAST", added in 2017), so it is safer to set it explicitly.
2018-05-20 16:50:27 +02:00
Daniel Gultsch 219ca9f72b put address of app server in resource file 2018-05-20 16:43:10 +02:00
Daniel Gultsch 3be3bfb492 make file observer listen for moves 2018-05-20 16:19:23 +02:00
Alexander 9bff9900d1 move enabling of foreign key support to onConfigure (#3038)
This way we avoid repeating the code. Unlike getWritableDatabase, onConfigure is intended to be overridden.

In fact, onConfigure documentation specifically says: "Called when the database connection is being configured, to enable features such as write-ahead logging or *foreign key support*."
2018-05-20 15:54:56 +02:00
Holger Weiß e948d12085 Make nickname matching case-sensitive (#3035)
Perform case-sensitive matching for highlighting the own nickname in MUC
messages and while checking whether to notify.
2018-05-20 15:54:34 +02:00
Alexander 3837826b67 fixed a missing word in README (#3037)
* fix a missing word in README

* fix repeating word in README
2018-05-20 12:55:59 +02:00
Daniel Gultsch 39e4b26ff0 prefetch omemo device lists only if muc has omemo enabled 2018-05-20 12:10:07 +02:00
Daniel Gultsch 383b32c80d make fcm receiver ignore messages when all accounts are disabled 2018-05-20 12:01:07 +02:00
Daniel Gultsch ec54a483f8 migrate to fcm library 2018-05-19 20:05:45 +02:00
Daniel Gultsch 2230d5a42c do not save draft if message is completly empty and fixed appending shared text 2018-05-19 14:30:42 +02:00
Daniel Gultsch be579332be do not use trigger but delete message index entries manually 2018-05-17 20:17:00 +02:00
Daniel Gultsch 9b43f37758 pulled translations from transifex 2018-05-16 15:10:50 +02:00
Daniel Gultsch 1b4c27fbb7 version bump to 2.2.1 + changelog 2018-05-16 15:09:38 +02:00
Wiktor 0bb600f0b3 Extend QR scanner to support VCard with IMPP field (#3027)
Currently QR scanner supports only URIs. VCard specification allows
embedding instant messaging protocols in the `IMPP` field [0].

This change will extract the first XMPP URI from `IMPP` field if a VCard
has been scanned and process it just like if the XMPP URI was scanned
directly. In case the contact is not already present in the roster this
will pop up "Add contact" window.

Example VCard with this URI:

    BEGIN:VCARD
    FN:Test Contact
    EMAIL:test@example.com
    IMPP:xmpp:test@example.com
    END:VCARD

[0]: https://tools.ietf.org/html/rfc6350#section-6.4.3
2018-05-16 15:08:38 +02:00
Daniel Gultsch 5ef7c29264 changed command paramater for new push server 2018-05-16 11:29:06 +02:00
Daniel Gultsch 9ef2d32a3e changed jid of push server 2018-05-12 17:23:37 +02:00
Daniel Gultsch d5a187bafb use Tor to download map tiles if configured to do so 2018-05-11 12:42:39 +02:00
Daniel Gultsch eb1251b389 pulled translations from transifex 2018-05-11 12:00:43 +02:00
Daniel Gultsch 543d1f689b do not use end in catchup mam queries 2018-05-11 11:16:29 +02:00
Daniel Gultsch 170fbf0de3 switch to aac with slightly heigher sample and bit rate. fixes #3021 2018-05-11 10:08:45 +02:00
klonfish 41760b40ef Improved URL matching
URLs with trailing special chars (e.g. slash, minus, ...) should now be
matched correctly, even when followed by a non-url char
2018-05-10 20:55:05 +02:00
Daniel Gultsch 678fcf8b31 removed dead code + null check 2018-05-10 18:59:17 +02:00
Daniel Gultsch b0db88c405 add primary key to fts table 2018-05-10 11:28:09 +02:00
Daniel Gultsch 5b41906328 do not include body in simple status updates to not trigger fts update 2018-05-10 10:47:28 +02:00
Daniel Gultsch a8b863ae41 updated dependencies 2018-05-10 10:30:23 +02:00
Daniel Gultsch e84a65bc86 do not load conversations with null jid 2018-05-09 11:09:01 +02:00
Daniel Gultsch 18a8a6e5ac make session completion work with untrusted devices as well 2018-05-09 09:24:31 +02:00
Daniel Gultsch ffe610f961 max out emoji enlargment at 42 emojis 2018-05-09 09:07:26 +02:00
Daniel Gultsch 13d6885883 split heighlights by special characters. fixes #3007 2018-05-07 11:14:33 +02:00
Daniel Gultsch 78b56bb904 don’t scall images to a 0 width or height 2018-05-07 11:13:46 +02:00
Daniel Gultsch 7ca719b8be apply styling helper to conversation overview 2018-05-06 11:22:20 +02:00
ChaosKid42 1fcd69ce40 ban can be disabled in Config.java (#3016) 2018-05-05 19:40:43 +02:00
Daniel Gultsch c113f37713 version bump to 2.2.0 2018-05-04 22:07:14 +02:00
Daniel Gultsch 8cd222b046 XmppUri code cleanup 2018-05-04 22:07:00 +02:00
Daniel Gultsch f9e26d7887 pulled translations from transifex 2018-05-04 12:21:14 +02:00
Daniel Gultsch 77fc8d2d9e encode and decode % and # in invite links 2018-05-04 12:18:31 +02:00
Daniel Gultsch 9b73029267 copy jabber id and web url via context menu 2018-05-04 11:39:03 +02:00
Daniel Gultsch 96224c0fc6 filter sequences of more than 3 ltr-rtl 2018-05-04 10:11:24 +02:00
Daniel Gultsch 7b3d871f28 improved logging for node configuration change 2018-05-03 22:44:28 +02:00
Daniel Gultsch 2b492a1fba remove " from fts queries 2018-05-03 19:09:19 +02:00
Daniel Gultsch 89f8b87582 fixed regression of not highlighting current conversation in overview. fixes #3001 2018-05-03 18:30:44 +02:00
Daniel Gultsch 756c1a1004 hide record audio feature if mircophone is not available 2018-05-03 17:01:16 +02:00
Daniel Gultsch b5423b39a0 added null check to Jid.of in edit account 2018-05-03 15:59:14 +02:00
Daniel Gultsch 6fe5c5e770 handle invalid image bounds 2018-05-03 15:38:48 +02:00
Daniel Gultsch 157d644750 organize listeners in lists 2018-05-03 14:54:22 +02:00
Daniel Gultsch 5e1cbf8514 only highlight alphanumeric chars 2018-05-03 13:57:13 +02:00
Daniel Gultsch 9625f191c3 hide treatAsDownloadable in search results 2018-05-02 12:14:24 +02:00
Daniel Gultsch 90135131c0 fixed omemo by default setting for users on same domain. fixes #3006 2018-05-01 23:18:05 +02:00
Daniel Gultsch d3b20544c9 do not invoke onPushFailed() on timeout 2018-05-01 17:35:29 +02:00
Daniel Gultsch 8d5a7c79da fixed crash with samsung recorder 2018-05-01 15:16:10 +02:00
Daniel Gultsch d8439c72fd fixed display in internal map 2018-05-01 14:32:55 +02:00
Daniel Gultsch ee2c118c21 pulled translations from transifex 2018-05-01 12:56:42 +02:00
Daniel Gultsch 68a550de50 version bump to 2.2.0-beta + changelog 2018-05-01 12:55:34 +02:00
Daniel Gultsch 949b77c353 make show location depend on plugin setting 2018-05-01 12:55:11 +02:00
Daniel Gultsch 8e17fa285d allow use of share location plugin with setting 2018-05-01 12:03:35 +02:00
Daniel Gultsch 35e6547db4 show keyboard only on fresh activity 2018-05-01 10:47:43 +02:00
Daniel Gultsch 303cc89b61 persist search across device rotations 2018-05-01 10:33:21 +02:00
Daniel Gultsch 2505ac8b77 only search text messages 2018-05-01 09:58:43 +02:00
Daniel Gultsch 438ae34988 fixed search term parser for empty terms 2018-04-30 17:37:39 +02:00
Daniel Gultsch 27f31446c0 search term parsing + highlighting 2018-04-30 17:09:55 +02:00
Daniel Gultsch 542a06f08a creat fts table 2018-04-30 16:06:27 +02:00
Daniel Gultsch b5c60ee779 changed accent color back to blue 2018-04-30 15:17:21 +02:00
Daniel Gultsch 2390839c21 get video dimensions from bitmap instead of meta data 2018-04-30 09:22:59 +02:00
Daniel Gultsch 287c416dac hard code ogg + audio/ mime type to oga 2018-04-29 15:19:13 +02:00
Daniel Gultsch 936e6f4cb2 updated svg files to reflect changed online button color 2018-04-29 14:08:46 +02:00
Daniel Gultsch 5c4aacd39e added 'view conversation' to context menu 2018-04-29 14:07:58 +02:00
Daniel Gultsch 43b455974b changed color of online send button 2018-04-29 09:49:45 +02:00
Daniel Gultsch d0c88e6293 check if jid was valid before parsing muc status or event msgs 2018-04-29 09:33:20 +02:00
Daniel Gultsch 3011f875eb highlight search term in search results 2018-04-28 23:50:35 +02:00
Daniel Gultsch effeb7b585 convert empty resources in messages to bare jid 2018-04-28 21:30:30 +02:00
Daniel Gultsch 04f34fb968 Merge branch '2.1.x' 2018-04-28 16:58:27 +02:00
Daniel Gultsch 1d51f098f2 version bump to 2.1.4 + changelog 2018-04-28 16:58:04 +02:00
Daniel Gultsch 9963616270 do not crash when inner message contains invalid jid 2018-04-28 16:56:32 +02:00
Daniel Gultsch 6dbaece149 Merge tag '2.1.3' 2018-04-28 16:33:32 +02:00
Daniel Gultsch 6712a2d91f added search result context menu + date separators 2018-04-28 16:32:23 +02:00
Daniel Gultsch b1b7cf5c0a version bump to 2.1.3 + changelog 2018-04-28 16:26:50 +02:00
Daniel Gultsch 322463bab7 return InvalidJid object instead of null if Jid can not be parsed 2018-04-28 16:26:40 +02:00
Daniel Gultsch 59b5dece96 theming: switched to material green. changed accent color 2018-04-27 14:50:27 +02:00
Daniel Gultsch 2177e575bc use styled colors for online/offline text 2018-04-26 21:50:24 +02:00
Daniel Gultsch 9b2093eba5 dynamically reference app name in version string 2018-04-26 21:21:17 +02:00
Daniel Gultsch 120f7453e5 use GIF to describe gifs instead of image 2018-04-26 21:21:00 +02:00
Daniel Gultsch 3d243866a4 click on avatars in message search opens contact details 2018-04-26 18:53:09 +02:00
Daniel Gultsch e6feb91390 properly cancel pending searchs and scroll to bottom after refresh 2018-04-26 17:02:31 +02:00
Daniel Gultsch 35020702fb very much unoptimized search functionality 2018-04-26 13:22:31 +02:00
Daniel Gultsch 4bbbf86f76 add more styling to search activity 2018-04-26 10:40:29 +02:00
Daniel Gultsch 4c60aae11b mock (non functional) search activity 2018-04-25 20:25:28 +02:00
Daniel Gultsch e2ff51db08 add debug output to how many messages were deleted 2018-04-25 19:32:43 +02:00
Daniel Gultsch bf95ef66eb null check when cleaning avatars for muc 2018-04-25 14:41:33 +02:00
Daniel Gultsch 09276eb396 properly catch and ignore IllegalStateException instead of using commitAllowStateLoss 2018-04-25 14:41:02 +02:00
Daniel Gultsch 2d7e5a12aa increased swipe escape velocity by 10x 2018-04-25 12:56:48 +02:00
Daniel Gultsch 8baef866ce pulled translations from transifex 2018-04-25 12:20:00 +02:00
Daniel Gultsch a11c678770 fine tuned style of toolbar search view 2018-04-24 16:45:37 +02:00
Daniel Gultsch d79f5030be added scrollbars to conversation overview 2018-04-24 14:50:26 +02:00
Daniel Gultsch bb37401028 do not match mentions on word boundries but only when preceeded by white space 2018-04-24 12:31:37 +02:00
Daniel Gultsch de0de48448 allow to delete voice recordings 2018-04-23 20:27:54 +02:00
Daniel Gultsch d844ce4ffb migrate recording activity to view binder 2018-04-23 12:07:19 +02:00
Daniel Gultsch 2f974c3eb2 integrate voice recorder 2018-04-22 20:31:37 +02:00
Daniel Gultsch cfaebbdbd1 scroll to bottom even if last visible item is heigher than view 2018-04-22 16:01:18 +02:00
Daniel Gultsch 2a9413e64d fixed caps hash generation for empty form values 2018-04-22 11:07:00 +02:00
Daniel Gultsch 956f7c6812 use styled borderless button 2018-04-21 22:17:47 +02:00
Daniel Gultsch 1118c4450b fix text size in snackbars 2018-04-21 20:38:14 +02:00
Daniel Gultsch 12127a0b6e do not use omemo by default for own server 2018-04-21 19:52:37 +02:00
Daniel Gultsch fc62cbbc52 fixed updating of server message id after dedup 2018-04-21 19:35:25 +02:00
Daniel Gultsch 2992ba647d always scale to dip 2018-04-21 18:55:16 +02:00
Daniel Gultsch 4599e477b4 fixups for Share location merger
* use data binder
* introduced styled button
* fixed snackbar showing above button bar
2018-04-21 18:25:46 +02:00
Daniel Gultsch ee855ab560 Merge branch 'mapping' of https://github.com/SamWhited/Conversations into SamWhited-mapping 2018-04-21 16:57:53 +02:00
Daniel Gultsch b501f4cf72 search for muc pms when fetching last mam reference 2018-04-21 16:57:29 +02:00
Daniel Gultsch 5e1bbea5f0 never use isStranger logic in conversation with self 2018-04-20 17:54:30 +02:00
Daniel Gultsch 7368df94f7 provide access to show qr code from context menu in start conversation activity 2018-04-20 17:12:47 +02:00
Daniel Gultsch 8c1458abbf version bump to 2.1.2 + changelog 2018-04-20 11:38:51 +02:00
Daniel Gultsch 1615aeff87 fixed npe when OS invokes StartConversationsActivity with null action 2018-04-20 11:32:50 +02:00
Daniel Gultsch cccb3772cf update dependencies 2018-04-20 10:51:11 +02:00
Daniel Gultsch 9a36627e67 catch run time exception when starting service from event receiver 2018-04-20 10:51:00 +02:00
Daniel Gultsch 7f7b7fca0b pulled translations from transifex 2018-04-20 09:57:02 +02:00
Sam Whited 60f2ce3a74 Use correct theme in mapping activity 2018-04-18 10:58:34 -05:00
Sam Whited a7b6d1f1d8 Use native snackbar on map view 2018-04-18 10:46:56 -05:00
Daniel Gultsch 5272421678 create avatar path before saving avatar 2018-04-18 12:41:16 +02:00
Daniel Gultsch 146096f00a version bump to 2.1.1 + changelog 2018-04-18 10:25:56 +02:00
Daniel Gultsch 5170e526c8 fixed npe when conversation in multi mode had jid w/o local part 2018-04-18 10:24:57 +02:00
Daniel Gultsch 71461543a3 pulled translations from transifex 2018-04-18 10:24:10 +02:00
Sam Whited b21d948ecb Merge Open Street Map plugin 2018-04-16 17:39:43 -05:00
Daniel Gultsch 406a5a10f9 removed 'received' prefix from description 2018-04-16 09:55:16 +02:00
Daniel Gultsch 9f34e53b98 replace use file as is blacklist with general don't use app data rule 2018-04-16 09:25:41 +02:00
Daniel Gultsch 08235bffbc pulled translations from transifex 2018-04-15 18:53:27 +02:00
Daniel Gultsch 4a706aad03 catch dead object exceptions when acquiring wake locks 2018-04-15 18:31:58 +02:00
Daniel Gultsch ffc35f5bc5 wrap all calls to notification manager in exception handler to catch dead object exception 2018-04-15 17:47:51 +02:00
Daniel Gultsch 064e5a4f0d make text clickable in openkeychain missing message 2018-04-15 17:30:28 +02:00
Daniel Gultsch be5e39a440 get real file name for files shared from Conversations 2018-04-15 17:10:50 +02:00
Daniel Gultsch 93f405d9a1 add fdroid fennec to use file as is blacklist 2018-04-15 15:05:04 +02:00
Daniel Gultsch 91a061f480 always include omemo fallback message 2018-04-14 21:31:30 +02:00
Daniel Gultsch fa13d2336e include node when requesting disco features 2018-04-14 18:43:11 +02:00
Daniel Gultsch afb7c0592b display avatar in groups 2018-04-14 17:54:04 +02:00
Daniel Gultsch 32a105fa1c fixed condition to accept lmc if user reference exists 2018-04-14 14:55:51 +02:00
Daniel Gultsch db8bd7b596 bump library versions 2018-04-12 10:26:15 +02:00
Daniel Gultsch c61be89262 keep track of user object in messages 2018-04-12 09:50:33 +02:00
Daniel Gultsch 7fd25abea2 code cleanup in AxolotlService.fetchDeviceIds() 2018-04-12 08:55:50 +02:00
Daniel Gultsch aff2b33e27 load currently open conversation faster 2018-04-11 18:07:40 +02:00
Daniel Gultsch ac9beef98a version bump to 2.1.0 2018-04-11 18:07:15 +02:00
Daniel Gultsch 322667275c all contacts in roster are 'trusted' 2018-04-11 10:07:11 +02:00
Daniel Gultsch 84c5a1b0ae fixed up button refresh in start conversation activity 2018-04-11 09:27:16 +02:00
Daniel Gultsch edfe4a0ccd fixed mixing symbols and letters in unicode detector on pre N 2018-04-11 09:26:56 +02:00
Daniel Gultsch 14f9a51b8b change opacity on emoji only messages 2018-04-11 09:04:16 +02:00
Daniel Gultsch 58a5e67d43 fixed redownload 2018-04-11 08:33:24 +02:00
Daniel Gultsch 12f1c879ac Merge branch 'master' of github.com:siacs/Conversations 2018-04-11 08:33:11 +02:00
Harshit Bansal a3e26b95f0 solve fab shadow bug on pre api 19 devices (#2924) 2018-04-10 16:40:15 +02:00
Daniel Gultsch 614b40a58f 2.1.0-beta.2 2018-04-10 16:35:19 +02:00
esu23 3ae3404b54 Add Voice Recorder plugin to README.md (#2949) 2018-04-08 11:44:41 +02:00
Daniel Gultsch f2389b5404 fixed exception handler 2018-04-07 09:40:09 +02:00
Daniel Gultsch 1f5ab19e50 pulled translations from transifex 2018-04-07 09:03:18 +02:00
Licaon_Kter 28ff08809e Remove leftover strings from legacy (#2948) 2018-04-07 09:01:49 +02:00
esu23 a8dcf3ce0a EnhancedListView deleted from resources (#2944)
Since RecyclerView it's used now
2018-04-07 09:01:10 +02:00
Licaon_Kter c9bf72b914 EnhancedListView deleted from settings.gradle (#2947) 2018-04-07 09:00:52 +02:00
Christoph Scholz 816b5bae58 no WelcomeActivity if MAGIC_CREATE_DOMAIN is unset 2018-04-06 16:01:42 +02:00
Daniel Gultsch 182b76eae7 Merge branch 'SoyaLeaf-remove_the_enhanced' 2018-04-06 13:50:14 +02:00
Ye feng f3913ed364 migrate the RecyclerView 2018-04-06 13:49:57 +02:00
Daniel Gultsch 829ab885fd provide fallback in case synchronizing around message list fails for some reason 2018-04-06 13:24:57 +02:00
Daniel Gultsch ceac602185 fixed some dark theme issues in message view. fixes #2939 2018-04-05 07:40:54 +02:00
Daniel Gultsch 0ccdbaff96 version bump to 2.1.0-beta 2018-04-05 07:39:49 +02:00
Daniel Gultsch 41972e94eb synchronize around getting last visibile uuid 2018-04-04 20:07:08 +02:00
Daniel Gultsch 4f2c3df329 get escaped localpart as username. should fixed sasl 2018-04-04 20:06:49 +02:00
Daniel Gultsch bda95bc571 make error message for 'not encrypted for this device' 2018-04-04 18:21:22 +02:00
Daniel Gultsch 3b39d81c2e updated gradle + plugin and fixed xmpp-addr version 2018-04-04 16:40:53 +02:00
Daniel Gultsch c86bc08c23 change icon size 2018-04-04 09:33:31 +02:00
Ye feng 044ea5c5a9 support contact shortcuts (#2918)
* support contact shortcuts

* make ShortcutActivity extends AbstractSearchableListItemActivity

* Draw the app icon in the corner of the icon and modify the name of the widget

* updated label and icon size
2018-04-04 09:33:07 +02:00
Daniel Gultsch 85caaf084b create dedicated exception for not encrypted for this device 2018-04-04 09:11:53 +02:00
Daniel Gultsch c59ee9e137 provide up navigation in start conversation activity 2018-04-03 17:53:08 +02:00
esu23 cc54f02ab3 Fixed small typos (#2933)
* Fixed typo when removing OTR

There are two encrypt methods avaliable now

* Deleting a repeated resource
2018-04-02 16:49:00 +02:00
Daniel Gultsch a4dc7eb3ee use font size in action view 2018-04-02 09:51:45 +02:00
af8a524db1 e6d7e5f27f UriHandlerActivity: Always check for XMPP URI validity (#2926)
Also check for XMPP URI validity if there are no configured accounts
and the WelcomeActivity is active.
2018-04-02 08:40:27 +02:00
Daniel Gultsch 8b70d945cc made font size selectable 2018-04-01 21:37:21 +02:00
Daniel Gultsch 1500299607 in case fragment starts after activity is bound to service; fetch conversation from uuid 2018-04-01 19:14:53 +02:00
Daniel Gultsch 962ecbedfa made checkboxes and radiobuttons stylable 2018-04-01 09:18:12 +02:00
Daniel Gultsch f0cfbb4681 fixed muc detection for rare cases where muc is hosted on primary domain 2018-03-31 22:01:17 +02:00
Daniel Gultsch c0d977e97d fixed read event when status messages are displayed 2018-03-31 22:00:46 +02:00
Daniel Gultsch 2e934f1517 made all text styleable 2018-03-31 12:16:56 +02:00
Daniel Gultsch f4b26f0bf9 code cleanup 2018-03-31 11:08:04 +02:00
Daniel Gultsch 93ceb9db78 fixed read event when using fab scroll down 2018-03-31 10:57:59 +02:00
Daniel Gultsch aeaa58071c only mark visible messages as read 2018-03-30 21:14:06 +02:00
Daniel Gultsch e1a6ceb49b fixed regression in StartConversationActivity that ignored welcome jid 2018-03-30 15:57:44 +02:00
Daniel Gultsch 2442dabb2a null check for conversation 2018-03-30 12:26:10 +02:00
Daniel Gultsch d27d9d9366 show scroll down button instantly when scrolling up 2018-03-30 10:58:07 +02:00
Daniel Gultsch 419e7f5ea6 introduced sroll to bottom button. based on #2777 by @harshitbansal05 2018-03-30 10:35:52 +02:00
Daniel Gultsch d5c4a987a1 persist some muc configurations 2018-03-30 08:47:37 +02:00
Daniel Gultsch 3dc749b22b remove duplicate call to onConversationArchived() 2018-03-29 16:23:36 +02:00
Daniel Gultsch f2b0a10c22 end view if conversation was archived 2018-03-29 15:08:43 +02:00
Daniel Gultsch a1b3e2d57c hide disable encryption button when omemo is in always mode 2018-03-29 14:26:04 +02:00
Daniel Gultsch 9646783d48 fixed regression of 'add contact' not working. fixes #2916 2018-03-29 13:40:52 +02:00
Daniel Gultsch 5a6527bf4c pulled translations from transifex 2018-03-29 12:02:04 +02:00
Daniel Gultsch a6539be52b introduced tri state omemo setting (off by default, on by default, always) 2018-03-27 15:35:53 +02:00
Daniel Gultsch 06f8d8c5d6 add ruleset to disable omemo-by-default for certain providers 2018-03-26 13:29:01 +02:00
ChaosKid42 536149723e getNextEncryption does not honor ENCYPTION_MASK (#2899) 2018-03-26 12:44:21 +02:00
Daniel Gultsch 1749009d10 put toolbar elevation in dimen file 2018-03-26 10:12:36 +02:00
Daniel Gultsch 786d9895c8 fixed popup menu in dark theme 2018-03-26 05:43:22 +02:00
Daniel Gultsch a32d0c5d20 process receipts only on mam catchup 2018-03-26 05:43:01 +02:00
Daniel Gultsch ecedda8613 reformat 2018-03-25 18:49:49 +02:00
Daniel Gultsch fe8f0bd7f0 make receipt handling work with out of order receipts 2018-03-25 17:22:39 +02:00
Daniel Gultsch 2e8cc12ada do not allow user to quote file 2018-03-24 12:06:06 +01:00
Daniel Gultsch acdf822415 code cleanup in Contact class 2018-03-23 16:59:42 +01:00
Daniel Gultsch ce00767777 ignore bookmark name of 'None' 2018-03-23 16:52:05 +01:00
Daniel Gultsch 3be95cd7ba version bump to 2.0.0 + modified changelog 2018-03-23 12:11:36 +01:00
Daniel Gultsch e8bec4fe40 pulled translations from transifex 2018-03-23 11:39:46 +01:00
Daniel Gultsch c41f574b1f in lack of confirm source dialog in account details only trust scanned uris 2018-03-23 11:39:36 +01:00
Daniel Gultsch ce867758d5 call to update ui after fingerprint verification 2018-03-23 11:28:00 +01:00
Daniel Gultsch 255dd9674e fixed cache key generation for messages w/o full jid 2018-03-22 15:10:29 +01:00
Daniel Gultsch dccd3f1c8e figure out fallbacks with omemo source id 2018-03-22 13:26:35 +01:00
Daniel Gultsch bd3799fe02 messages coming from known muc server are treated as muc when creating conversation 2018-03-22 12:43:08 +01:00
Daniel Gultsch 4b5eef0ebe bump version code and version to 2.0.0-rc.1 2018-03-22 03:00:48 +01:00
Daniel Gultsch 47fba24296 pulled translations from transifex 2018-03-20 13:00:33 +01:00
Daniel Gultsch 3c61af88a1 StartConversationActivity: persist search across rotation 2018-03-20 12:52:23 +01:00
Daniel Gultsch 6d3be890b7 Merge branch 'qr_scan_fix' of https://github.com/klonfish/Conversations into klonfish-qr_scan_fix 2018-03-20 09:04:17 +01:00
Daniel Gultsch ad768d1938 improved logging while deleting old cache files 2018-03-20 09:04:04 +01:00
klonfish b249c1f36f Improved QR code recognition when screen and camera orientation don't match 2018-03-19 21:43:42 +01:00
Daniel Gultsch 2d59a99833 pulled translations from transifex 2018-03-19 21:06:39 +01:00
Daniel Gultsch b682aeb252 use utf-8 in barcodes 2018-03-19 21:05:20 +01:00
Daniel Gultsch 0f97b44e9f increased LruCache for unicode script detection 2018-03-19 13:32:32 +01:00
Daniel Gultsch 11136f939e commit allowing state loss 2018-03-19 12:29:21 +01:00
Daniel Gultsch 5363470bcf fix getNextEncryption 2018-03-19 10:08:36 +01:00
Daniel Gultsch 442c284c8e prevent double tapping on overflow menu 2018-03-19 09:43:33 +01:00
Daniel Gultsch 6779bf2a29 write roster only for active accounts 2018-03-18 23:19:23 +01:00
Daniel Gultsch 59386e50ac added prosodys enable archive to default room config 2018-03-18 19:41:27 +01:00
Daniel Gultsch cdbab64b03 fixed redownload of deleted http upload messages 2018-03-18 17:34:35 +01:00
Daniel Gultsch ba91fe2698 run roster sync in replacing task manager 2018-03-18 16:46:50 +01:00
Daniel Gultsch 9908af6286 sync roster to disk after roster push 2018-03-18 12:24:28 +01:00
Daniel Gultsch ff2b1fad51 increment version code 2018-03-18 10:33:07 +01:00
Daniel Gultsch 7e6109a072 removed unecessary logging 2018-03-18 10:32:01 +01:00
Daniel Gultsch 5514958e93 presist http upload availibility 2018-03-18 10:30:15 +01:00
Daniel Gultsch f2ea609b51 code cleanup 2018-03-18 09:47:52 +01:00
Daniel Gultsch 82ba4ce4fc fixed some regressions introduced in toolbar migration 2018-03-18 09:31:37 +01:00
Harshit Bansal f2885575ba replace deprecated action bar with toolbar (#2872)
* replace deprecated action bar with toolbar

* add toolbar support in each activity

* remove redundant themes made earlier

* add configure action bar method in xmpp activity

* remove android namespace from actionmodeoverlay

* solve bug of scrolling toolbar
2018-03-18 09:30:22 +01:00
Daniel Gultsch 83a4cb8a11 setReplaceAll=false on emojiCompat for android o 2018-03-17 21:43:18 +01:00
Daniel Gultsch 11dfd87672 show message draft in conversation overview 2018-03-17 19:18:22 +01:00
Daniel Gultsch 9765f26de0 fixed device rotation in settings activity 2018-03-16 12:58:43 +01:00
Daniel Gultsch 182b4c08b5 fixed crash in MessageAdapter caused by empty xmpp: uri 2018-03-16 12:29:11 +01:00
Daniel Gultsch d17a8cdcb9 pulled translations from transifex 2018-03-16 09:46:01 +01:00
Daniel Gultsch 854a31b27b bump version code to beta.3 2018-03-15 15:24:11 +01:00
Daniel Gultsch dbdbe1b312 pulled translations from transifex 2018-03-15 13:44:51 +01:00
Daniel Gultsch 64f040b631 offer a more convienient way to disable omemo from trust keys dialog 2018-03-15 13:37:08 +01:00
Daniel Gultsch 1bfc0b8da6 trim to original resource if server added something 2018-03-15 08:53:19 +01:00
Daniel Gultsch fe90e70bb1 remove trailing ) in urls 2018-03-14 21:59:18 +01:00
Daniel Gultsch 3c932e9fa6 fixed pm to vistors 2018-03-14 17:31:33 +01:00
Daniel Gultsch c2db940594 do not show snackbar for archived conversations. fixes glitch when leaving muc 2018-03-14 13:05:50 +01:00
Daniel Gultsch 03e88500b9 fixed rotation in choose contact activity 2018-03-14 11:03:08 +01:00
Daniel Gultsch acf0b995ab dynamically get known hosts in dialog 2018-03-14 10:07:52 +01:00
iamharsshit 2af12afb64 add data binding and check in back stack for dialogs 2018-03-14 13:07:04 +05:30
iamharsshit b33725b435 place enter jid dialog in dialog fragment 2018-03-14 13:07:04 +05:30
iamharsshit b48e37f72f replace group dialogs by dialog fragment 2018-03-14 13:07:04 +05:30
Daniel Gultsch 45701448b8 made typing notifications default on new installs 2018-03-14 08:23:46 +01:00
Daniel Gultsch d4a05b8ef3 Merge branch 'master' of github.com:siacs/Conversations 2018-03-14 08:22:18 +01:00
Daniel Gultsch 7d1bd65a3b make camera feature optional 2018-03-14 08:21:49 +01:00
Daniel Gultsch f371da7d85 raise min sdk to kitkat because of missing Objects.notNull() 2018-03-14 08:05:55 +01:00
Daniel Gultsch c790a972ba
Merge pull request #2874 from SamWhited/app_category
Classify in the "social" app category
2018-03-14 07:51:18 +01:00
Sam Whited 4232e5b35d Classify in the "social" app category 2018-03-13 22:05:11 -05:00
Daniel Gultsch 9a7f3ec742 create interface for onBackendConnected 2018-03-13 22:44:08 +01:00
Daniel Gultsch f21fda1421 scanned results are always a trusted source 2018-03-13 16:55:25 +01:00
Daniel Gultsch 0c58e7cc30 migrated conference details to binding 2018-03-13 12:26:26 +01:00
Daniel Gultsch 25a49a28ce disable caches in HttpUrlConnections 2018-03-13 11:59:32 +01:00
Daniel Gultsch ca625f1e8e fix register account checkbox glitch 2018-03-13 11:54:34 +01:00
Daniel Gultsch 10240ab2f9 removed reference to OTR from FAQ 2018-03-12 16:37:19 +01:00
Daniel Gultsch 22d98bd162 do not highlight users when not participating. fixes #2865 2018-03-12 16:00:02 +01:00
Daniel Gultsch 8dc17a96ba fixed rare crash on jolla devices 2018-03-12 15:59:35 +01:00
Daniel Gultsch dac8ed6058 fixed travis build status icon 2018-03-12 11:04:49 +01:00
Daniel Gultsch fdac851d46 increment version code 2018-03-12 09:29:48 +01:00
Daniel Gultsch 6f5e368899 pulled translations from transifex 2018-03-11 18:42:13 +01:00
Daniel Gultsch 72388e37f5 fixed some issues with jid escaping 2018-03-11 18:32:16 +01:00
Daniel Gultsch b2a9c63568 hide keyboard when stopping ConversationFragment 2018-03-11 18:14:26 +01:00
Daniel Gultsch c1135ad592 use escaped form of jid where approriate 2018-03-11 14:14:56 +01:00
Daniel Gultsch 4bb45996c5 return contact and account.getServer() as String 2018-03-11 12:13:56 +01:00
Daniel Gultsch dbcc54799d cache bookmark jid in bookmark 2018-03-11 12:06:07 +01:00
Daniel Gultsch e767c5e75b use xmpp-addr 0.8 to fix unicode issue 2018-03-09 21:39:29 +01:00
Daniel Gultsch fe338a540a make unicode detector work on labels 2018-03-09 21:39:10 +01:00
Daniel Gultsch e2e5c04ef7 detect irregular unicode in domain part 2018-03-08 22:02:19 +01:00
Daniel Gultsch 7ae3bdd3c6 use scripts instead of blocks on Android >= N 2018-03-08 20:45:30 +01:00
Daniel Gultsch 216cf1805f stop scrolling in tablet view after switching conversations 2018-03-08 17:01:45 +01:00
Daniel Gultsch a883faf05e change log for conversations 2.0 beta 2018-03-08 16:55:36 +01:00
Daniel Gultsch 4227c63e5d decrease delay when scrolling to position 2018-03-08 16:37:45 +01:00
Daniel Gultsch 5e32b4ab17 fix playstore flavor 2018-03-08 16:27:33 +01:00
Daniel Gultsch e89378ceae hide register account checkbox in magic mode 2018-03-08 15:18:44 +01:00
Daniel Gultsch a2028b203f pulled translations from transifex 2018-03-08 14:08:37 +01:00
Daniel Gultsch 6944c12186 display irregular unicode code points 2018-03-08 14:02:48 +01:00
Daniel Gultsch 52135625d8 do not enable encryption for bug reports 2018-03-07 22:30:36 +01:00
Daniel Gultsch 94bb7c423c added splash screen 2018-03-07 22:30:36 +01:00
Daniel Gultsch 28467c4775 don’t show 'change status' icon during setup 2018-03-07 22:30:36 +01:00
Daniel Gultsch 7e963820a5 made qr code scanner work in choose contact 2018-03-07 22:30:36 +01:00
iamharsshit 69374f3e5f remove deprecated method 2018-03-07 22:30:36 +01:00
Daniel Gultsch 1efaecf745 use fab in choose contact activity. scan qr not yet working 2018-03-07 22:30:36 +01:00
Daniel Gultsch ed0ba89551 make omemo default 2018-03-07 22:30:36 +01:00
Daniel Gultsch 13a4a78025 removed unused otr fingerprint methods 2018-03-07 22:30:36 +01:00
Daniel Gultsch 1accf9d961 migrate to xmpp-addr 2018-03-07 22:30:36 +01:00
Daniel Gultsch 0add9a0ea2 audio player now requests permission when hitting play 2018-03-07 22:30:36 +01:00
Daniel Gultsch b5e1bbbdc1 request storage permission when opening message 2018-03-07 22:30:36 +01:00
Daniel Gultsch 6aee638432 refactor disable notifications dialog to make use of timeframeutils 2018-03-07 22:30:36 +01:00
Daniel Gultsch 89992f541c calculate automatic timeout labels dynamically 2018-03-07 22:30:36 +01:00
Daniel Gultsch de2f5e7a83 reorder and scroll down after resending a message 2018-03-07 22:30:36 +01:00
Daniel Gultsch 3bff110587 use translated version of subject if available 2018-03-07 22:30:36 +01:00
Daniel Gultsch 7c1d91dd03 upgrade support library 2018-03-07 22:30:36 +01:00
Daniel Gultsch 194b8d419b fix change password activity for magic created accounts 2018-03-07 22:30:36 +01:00
Daniel Gultsch 1ae6042ca8 show password field only on non-logged in or magic created accounts 2018-03-07 22:30:36 +01:00
Daniel Gultsch a4f4c80743 fixed 'mark read' icon on android ~4 devices 2018-03-07 22:30:36 +01:00
Daniel Gultsch 78fd19195d finished 'Set Status Message' dialog 2018-03-07 22:30:36 +01:00
Daniel Gultsch 76732af63d add missing permission result handling in StartConversationActivity 2018-03-07 22:30:36 +01:00
Daniel Gultsch c1c314f47a delegate mime type from intent 2018-03-07 22:30:36 +01:00
Daniel Gultsch 2f71c0cb79 wip: new status message dialog 2018-03-07 22:30:36 +01:00
Daniel Gultsch 57bcf824e9 finished app compat themeing 2018-03-07 22:30:36 +01:00
Daniel Gultsch e5704f4cbd change last text styles over 2018-03-07 22:30:35 +01:00
Daniel Gultsch 51fcb7de31 scroll in post 2018-03-07 22:30:35 +01:00
Daniel Gultsch 97f728351b fixed highlighted caption style 2018-03-07 22:30:35 +01:00
Daniel Gultsch 157ca65b0a use text styles in more places 2018-03-07 22:30:35 +01:00
Daniel Gultsch a283d00013 request camera permissions when attaching taking picture or recording video 2018-03-07 22:30:35 +01:00
Daniel Gultsch 363c39a873 fixed take photo for activties that do not get destroyed 2018-03-07 22:30:35 +01:00
Daniel Gultsch 71beb92dd3 migrated some views over to app compat text styles 2018-03-07 22:30:35 +01:00
Daniel Gultsch 562622393e fixed paddings in omemo key cards 2018-03-07 22:30:35 +01:00
Daniel Gultsch 3130d40262 changed some of the jid entering dialogs to textinputlayout 2018-03-07 22:30:35 +01:00
Daniel Gultsch 9d15d3b408 introduced expert setting to not scroll down after sending a message 2018-03-07 22:30:35 +01:00
Daniel Gultsch ac22007e28 removed 'preemptive grant' setting 2018-03-07 22:30:35 +01:00
Daniel Gultsch b393f54a03 get rid of customizable resources 2018-03-07 22:30:35 +01:00
Daniel Gultsch fcbbb552f4 removed unnecessary code from gradle build file 2018-03-07 22:30:35 +01:00
Daniel Gultsch e3ca4ca485 made conference invite work again 2018-03-07 22:30:35 +01:00
Daniel Gultsch 5ed94d5ab0 made publish pgp work from conversation view 2018-03-07 22:30:35 +01:00
Daniel Gultsch 6b55f05e27 don't send messages in callback 2018-03-07 22:30:35 +01:00
Daniel Gultsch 521a711fbc use cards views in about and publish avatar activity 2018-03-07 22:30:35 +01:00
Daniel Gultsch 12031515d1 bring scan button to StartConversationActivity 2018-03-07 22:30:35 +01:00
Daniel Gultsch 3bd42230f2 do not redirect to StarConversationActivity when scanning invalid jid 2018-03-07 22:30:35 +01:00
Daniel Gultsch 13322a568a jump to first unread message if was scrolled to bottom earlier 2018-03-07 22:30:35 +01:00
Daniel Gultsch acc47fbeda add scan action to contact details 2018-03-07 22:30:35 +01:00
Daniel Gultsch 89bfae14b1 fixe scan in OmemoActivities 2018-03-07 22:30:35 +01:00
Daniel Gultsch 9a76aff8f9 skip background connect when changing theme 2018-03-07 22:30:35 +01:00
Daniel Gultsch fe8e131e3a simplified reInit logic 2018-03-07 22:30:35 +01:00
Daniel Gultsch bd2417e792 fixed openDialogs call when poping back stack 2018-03-07 22:30:35 +01:00
Daniel Gultsch 74336fa165 always scroll if viewing intent 2018-03-07 22:30:35 +01:00
Daniel Gultsch dfb4e4eb46 integrate qr code scanner. temporarily break omemo activity scan 2018-03-07 22:30:35 +01:00
Daniel Gultsch 6652135746 updated manage account activity to new colors 2018-03-07 22:30:35 +01:00
Daniel Gultsch ae2536adff made a few callbacks save to activity being detached 2018-03-07 22:30:35 +01:00
Daniel Gultsch 1236c6a139 save scroll state across rotations 2018-03-07 22:30:35 +01:00
Daniel Gultsch 21c9ffd8b2 skip refresh if binding is missing 2018-03-07 22:30:35 +01:00
Daniel Gultsch 8aba540717 fixed take photo + do not reint twice 2018-03-07 22:30:35 +01:00
Daniel Gultsch 5f502e908e replace camera action bar icon with scan qr button 2018-03-07 22:30:35 +01:00
Daniel Gultsch 108edbe314 show warning dialogs 2018-03-07 22:30:35 +01:00
Daniel Gultsch 743543ad90 fix permission handling 2018-03-07 22:30:35 +01:00
Daniel Gultsch b5fa9b77c9 skip unnecessary loading of conversation overview fragment 2018-03-07 22:30:35 +01:00
Daniel Gultsch 759498ac3a fixed showing QR code on long press 2018-03-07 22:30:35 +01:00
Daniel Gultsch e11fafcf52 don't show qr scan in conversation view 2018-03-07 22:30:35 +01:00
Daniel Gultsch 3b75161113 fixed onActivityResult handling for pgp 2018-03-07 22:30:34 +01:00
Daniel Gultsch b0bec2c390 added dedicated scan button 2018-03-07 22:30:34 +01:00
Daniel Gultsch e0317cfa14 made download button in message adapter work 2018-03-07 22:30:34 +01:00
Daniel Gultsch e93b06f45c redirect on empty conversation list 2018-03-07 22:30:34 +01:00
Daniel Gultsch 7bc7853d1a register open conversation with notification service 2018-03-07 22:30:34 +01:00
Daniel Gultsch e68fe13a22 process intents 2018-03-07 22:30:34 +01:00
Daniel Gultsch 4c8cbfe966 make archive menu item work 2018-03-07 22:30:34 +01:00
Daniel Gultsch 5e28a8f8d5 make read markers work 2018-03-07 22:30:34 +01:00
Daniel Gultsch 46feb7bf42 handle view conversation action when ConversationFragment is already open 2018-03-07 22:30:34 +01:00
Daniel Gultsch 6cfc6af886 change font size in conversation overview 2018-03-07 22:30:34 +01:00
Daniel Gultsch cd75e55e3f handle view intent 2018-03-07 22:30:34 +01:00
Daniel Gultsch 6b689edb52 move new activity back to original name 2018-03-07 22:30:34 +01:00
Daniel Gultsch 02c78bb1fb made refresh work 2018-03-07 22:30:34 +01:00
Daniel Gultsch 354b182968 made swipe and select work 2018-03-07 22:30:34 +01:00
Daniel Gultsch 6bd0abcd8e fragment voodoo 2018-03-07 22:30:34 +01:00
Daniel Gultsch dd21f5d072 wip 2018-03-07 22:30:34 +01:00
Daniel Gultsch e9e616ebc7 switch conversations fragment to data binder 2018-03-07 22:30:34 +01:00
Daniel Gultsch 5e7d1f7bcc stop settings from crashing when building with different package id 2018-03-07 22:30:34 +01:00
Daniel Gultsch 8d9d96d4e1 vastly untested refactor. pushing for backup purposes 2018-03-07 22:30:34 +01:00
Daniel Gultsch c17f902be2 refactoring. move functionality from activity to fragment 2018-03-07 22:30:34 +01:00
Daniel Gultsch d55a3842d3 more otr cleanup 2018-03-07 22:30:34 +01:00
SoyaLeaf c7fd54a17e Moved the error message to TextInputLayout in the ChangePasswordActivity 2018-03-07 22:30:34 +01:00
Daniel Gultsch 235275ba91 more cleanup 2018-03-07 22:30:34 +01:00
Daniel Gultsch bf6b54a7aa get rid of OTR 2018-03-07 22:30:34 +01:00
Daniel Gultsch fc5a2922e9 use data binder for list item adapater 2018-03-07 22:30:34 +01:00
Daniel Gultsch 595757fe00 use data binder for inflating muc items 2018-03-07 22:30:34 +01:00
Daniel Gultsch fb383c7881 use async avatar loader in conference details 2018-03-07 22:30:34 +01:00
Daniel Gultsch c0b95a9d1c add fab to start conversations activity 2018-03-07 22:30:33 +01:00
Daniel Gultsch 2df1aaaed2 use data binder for contact key item 2018-03-07 22:30:33 +01:00
Daniel Gultsch 1b8a437b1e create dedicated button to enable undecided accounts 2018-03-07 22:30:33 +01:00
Daniel Gultsch b9f6b792a9 fixed paddings 2018-03-07 22:30:33 +01:00
Daniel Gultsch 0262975635 started to change text style to app compat 2018-03-07 22:30:33 +01:00
Daniel Gultsch 5ebcb1ae71 ported presence activity to cardview 2018-03-07 22:30:33 +01:00
Daniel Gultsch d0e58330e9 switch account activity to card view. started using data binder 2018-03-07 22:30:33 +01:00
Daniel Gultsch 1c441a57e8 only show one error at once 2018-03-07 22:30:33 +01:00
SoyaLeaf f334349cd6 Moved the error message to TextInputLayout 2018-03-07 22:30:33 +01:00
Daniel Gultsch 22a722c06d change image button background 2018-03-07 22:30:33 +01:00
Daniel Gultsch 30776a86c4 change key activities to cards 2018-03-07 22:30:33 +01:00
Daniel Gultsch 58ec5ced8a use data binder for contact details activity 2018-03-07 22:30:33 +01:00
Daniel Gultsch eb25643d94 migrate to CardView in contact and muc details 2018-03-07 22:30:33 +01:00
SoyaLeaf 63fb5d98cc Change ShowHidePasswordEditText to TextInputEditText.
change the input fields in the AccountActivity to use the TextInputLayout.

Rollback format and change toggle tint
2018-03-07 22:30:33 +01:00
Daniel Gultsch 63c4fe6f02 do not use pop up menus for encryption and attachment selection 2018-03-07 22:30:33 +01:00
Daniel Gultsch 6f5076e8c4 fixed crash when selecting participants 2018-03-07 22:30:33 +01:00
Daniel Gultsch df82e7689d removed unused resources 2018-03-07 22:30:33 +01:00
Daniel Gultsch 1307cfe728 switch to switchcompat 2018-03-07 22:30:33 +01:00
daivat15 54dadfd7cd AppCompat Migration contribution 2018-03-07 22:30:33 +01:00
Daniel Gultsch 5775223653 fixed code comment 2018-03-07 22:30:33 +01:00
Daniel Gultsch a25c5ed401 rewrite how preference screens are invokved 2018-03-07 22:30:33 +01:00
Daniel Gultsch de0272fd1a integrate trust manager into conversations 2018-03-07 22:30:33 +01:00
Daniel Gultsch bd90f2140d fixed search in abstractsearchablelistitem 2018-03-07 22:30:33 +01:00
Daniel Gultsch bf85d30421 fixed hint color for edit message 2018-03-07 22:30:33 +01:00
Daniel Gultsch f81fbb36f1 migrated alert dialogs to app compat 2018-03-07 22:30:33 +01:00
Daniel Gultsch 9d25ecc21b remove pre api 21 theme 2018-03-07 22:30:33 +01:00
Daniel Gultsch d49fb5873e switch about activity to appcompat 2018-03-07 22:30:33 +01:00
Daniel Gultsch fe4ebb6244 reference support actionbar in all activities 2018-03-07 22:30:33 +01:00
Daniel Gultsch 6e89427d5e started work on migrating to appcompat 2018-03-07 22:30:33 +01:00
Daniel Gultsch 454f68799e pulled translations from transifex 2018-03-07 12:35:28 +01:00
Daniel Gultsch 9acd76b7ef version bump to 1.23.8 + changelog 2018-03-05 19:07:39 +01:00
Daniel Gultsch 0deffef8da fixed concurrent modification when killing mam queries 2018-03-01 08:27:30 +01:00
Daniel Gultsch 2f3ea872d9 version bump to 1.23.7 + changelog 2018-02-25 14:46:02 +01:00
Daniel Gultsch 7557de5479 use java 8 in push management service 2018-02-25 14:39:55 +01:00
Daniel Gultsch d4ac8b3122 fixed push registration 2018-02-25 14:31:31 +01:00
Daniel Gultsch 7e09fac1da do not merge bug reports 2018-02-25 14:28:14 +01:00
Daniel Gultsch 47dfe3c2e2 pulled translations from transifex 2018-02-25 14:22:34 +01:00
Daniel Gultsch 63cd8e5981 added config param to use a random resource at every bind 2018-02-24 20:47:02 +01:00
Daniel Gultsch 4013123279 MAM: rework hasMessagesLeft to account for prosody’s missing count 2018-02-24 10:57:11 +01:00
Daniel Gultsch 90ace36b18 only explicitly request device list for users not in roster fixups 2018-02-24 10:03:22 +01:00
Daniel Gultsch a09d63d9a4 only explicitly request device list for users not in roster 2018-02-24 09:47:07 +01:00
Daniel Gultsch 03fa58634b kill mam query when archiving conversation 2018-02-24 09:39:17 +01:00
Daniel Gultsch 1a1d5c2a3e Merge branch 'master' of github.com:siacs/Conversations 2018-02-23 23:12:13 +01:00
Daniel Gultsch 7725cb8311 MAM: look at total count for completness. parse fin correctly 2018-02-23 23:11:54 +01:00
Daniel Gultsch a79b0f37ca
Merge pull request #2828 from af8a524db1/welcome_text_jabber
Use 'Jabber' instead of 'XMPP' in the welcome message
2018-02-22 22:17:29 +01:00
Marc Schink 8713fc8a06 Use 'Jabber' instead of 'XMPP' in the welcome message 2018-02-22 22:04:03 +01:00
Daniel Gultsch f81e5e471e request disco items before disco#info on first connect
should make initial connect faster because code is not waiting for omemo code to run
2018-02-20 17:36:07 +01:00
Daniel Gultsch e7094af9d5 warn when attempting to write stanza to an unbound stream 2018-02-20 17:03:44 +01:00
Daniel Gultsch 72cf702e75 mark error notifications as sensitve and local only. fixes #2795 2018-02-20 08:22:08 +01:00
Daniel Gultsch c35ac11a42 check if axolotl service is initialized before displaying keys 2018-02-19 17:26:38 +01:00
Daniel Gultsch 742727504f fixed handling of self address messages w/o remoteMsgId 2018-02-19 15:52:33 +01:00
Daniel Gultsch 3edcb2e7c7
update chat badge 2018-02-19 14:30:16 +01:00
Daniel Gultsch 014cf66c87 do not allow insecure bind 2018-02-18 21:54:03 +01:00
Daniel Gultsch 92d59e9741
Merge pull request #2805 from af8a524db1/data_namespace
Use constant for 'jabberdata' namespace
2018-02-16 16:32:27 +01:00
Marc Schink 17c6d8827c Make use of Namespace.DATA constant 2018-02-16 16:12:53 +01:00
Marc Schink 9af7b7ae1e Namespace: Add constant for 'jabberdata' 2018-02-16 16:12:53 +01:00
Daniel Gultsch a3f3cfa0bb only allow a number of white listed headers according to http upload v0.5 2018-02-16 11:14:16 +01:00
Marc Schink 3fa205d463 Don't add account if user cancels. Fixes #2797 2018-02-15 14:40:21 +01:00
Marc Schink 3b7d9b39f7 Pass invite XMPP URI along instead of JID 2018-02-14 17:03:43 +01:00
Marc Schink c7d2b65982 XmppUri: Add toString() method 2018-02-14 17:03:43 +01:00
Daniel Gultsch af778b0f4b Merge branch 'vikiCoder-master' 2018-02-14 12:48:43 +01:00
vikiCoder 88866d99fa Fixes #2786 : Certificate dialogue not respecting dark theme solved 2018-02-14 16:19:26 +05:30
Daniel Gultsch d3e755ceb1 null check on invite object 2018-02-13 15:20:30 +01:00
Daniel Gultsch 347389c497
Merge pull request #2791 from ChaosKid42/roster_action_with_name
allow roster action with name
2018-02-12 20:27:49 +01:00
Christoph Scholz 9360f5c960 allow roster action with name 2018-02-12 20:00:42 +01:00
Daniel Gultsch 75a7686f63 version bump to 1.23.6 + changelog 2018-02-12 12:32:12 +01:00
Daniel Gultsch 6650c0bd57 always copy firefoxe’s shared files 2018-02-12 12:31:59 +01:00
Daniel Gultsch eed2d93145 integrate intent integrator to finish activity when needed 2018-02-12 11:22:51 +01:00
Daniel Gultsch 64928d0ff1 http upload: do not crash on invalid slot responses 2018-02-11 17:54:59 +01:00
Daniel Gultsch e2ac1db225 do not cross reference bookmarks and conversations 2018-02-10 19:06:31 +01:00
Daniel Gultsch 2eb2513615 always persist current nick (in bookmark and database) 2018-02-10 16:24:55 +01:00
Daniel Gultsch 64c956904d don't cancel animation when switching accounts w/o init 2018-02-10 13:32:37 +01:00
1978 changed files with 105250 additions and 66141 deletions

View File

@ -1,11 +0,0 @@
### Reporting Bugs and getting help
The issue tracker on Github is for bug reports only. It is not a general support forum.
**A bug is everything you can reproduce. ie *if I do this that happens but something else should happen instead*.**
Please search the issue tracker (including closed issues). Your bug might be a server bug that has already been addressed.
Please fill in the template when creating new issues and provide information about your device and your server. The [adb logcat](https://wiki.cyanogenmod.org/w/Doc:_debugging_with_logcat) can be omitted if you can reproduce the bug under every condition. (ie *click button X and the application crashes*) But the adb logcat is required if the bug happens only under certain conditions or involves network problem (Server not found, messages not arriving)
**If you are seeking help or are unable to reproduce the exact problem please join our MUC at conversations@conference.siacs.eu**

View File

@ -1,35 +0,0 @@
#### General information
* **Version:** eg 1.21.0
* **Device:** eg Google Nexus 5
* **Android Version:** eg Android 6.0 Stock or Android 5.1 Cyanogenmod
* **Server name:** eg conversations.im, jabber.at or self hosted
* **Server software:** ejabberd 16.04 or prosody 0.10 (if known)
* **Installed server modules:** eg Stream Managment, CSI, MAM
* **Conversations source:** eg PlayStore, PlayStore Beta Channel, F-Droid, self build (latest HEAD)
#### Steps to reproduce
1. …
2. …
#### Expected result
What is the expected output?
#### Actual result
What do you see instead?
#### Debug output
Please post the output of adb logcat. The log should begin with the start of Conversations and include all the
steps it takes to reproduce the problem.
````
adb logcat -s conversations
````

38
.github/workflows/android.yml vendored Normal file
View File

@ -0,0 +1,38 @@
name: Android CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'
- name: Download WebRTC
run: mkdir libs && wget -O libs/libwebrtc-m92.aar https://gultsch.de/files/libwebrtc-m92.aar
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build Quicksy (Compat)
run: ./gradlew assembleQuicksyFreeCompatDebug
- name: Build Quicksy (System)
run: ./gradlew assembleQuicksyFreeSystemDebug
- name: Build Conversations (Compat)
run: ./gradlew assembleConversationsFreeCompatDebug
- name: Build Conversations (System)
run: ./gradlew assembleConversationsFreeSystemDebug
- uses: actions/upload-artifact@v2
with:
name: Conversations all-flavors (debug)
path: ./build/outputs/apk/**/debug/Conversations-*.apk

6
.gitignore vendored
View File

@ -2,7 +2,9 @@
*.swp
.settings
src/playstore/res/values/gcm.xml
src/conversationsPlaystore/res/values/push.xml
src/quicksyPlaystore/res/values/push.xml
# https://github.com/github/gitignore/blob/master/Gradle.gitignore
.gradle/
@ -12,6 +14,8 @@ signing.properties
# Ignore Gradle GUI config
gradle-app.setting
libs/*.aar
# https://github.com/github/gitignore/blob/master/Android.gitignore
# Built application files
*.apk

54
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,54 @@
image: registry.gitlab.com/fdroid/ci-images-client:latest
cache:
paths:
- .gradle/wrapper
- .gradle/caches
stages:
- build
before_script:
- export GRADLE_USER_HOME=$PWD/.gradle
- export ANDROID_COMPILE_SDK=`sed -n 's,.*compileSdkVersion\s*\([0-9][0-9]*\).*,\1,p' build.gradle`
- echo y | sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" > /dev/null
build:
stage: build
except:
- develop
script:
- ./gradlew assembleConversationsFreeCompatDebug
artifacts:
paths:
- build/outputs/
publish:
stage: build
only:
- develop
script:
- find -type d -name "siacs" -print0 | xargs --null -I{} bash -c 'x="{}"; mv "$x" "${x/siacs/sum7}" '
- find -type f -name "*.java" -exec sed -i "/eu.siacs.conversations.axolotl/! s/eu.siacs./eu.sum7./" "{}" \;
- find -type f -name "*.xml" -exec sed -i "/eu.siacs.conversations.axolotl/! s/eu.siacs./eu.sum7./" "{}" \;
# workaround for bug in fdroid nightly
- sed -i "s/-debug.apk/-unsigned.apk/" /usr/lib/python3/dist-packages/fdroidserver/nightly.py
- sed -i "s/servergitmirror = 'git@' +/servergitmirror = 'gitlab@' +/" /usr/lib/python3/dist-packages/fdroidserver/nightly.py
- sed -i "s/git@/gitlab@/" /usr/lib/python3/dist-packages/fdroidserver/index.py
# generate new version
- export versionCode="$CI_JOB_ID"
- export versionName="$(git describe --tag --abbrev=0)-${CI_JOB_ID}_${CI_COMMIT_REF_NAME}"
- echo "set VersionCode '${versionCode}' and VersonName '${versionName}'"
- sed -i "s/^\(\s*versionCode\s*\).*$/\1$versionCode/" build.gradle
- sed -i "0,/versionName/s/^\(\s*versionName\).*/\1 \"$versionName\"/" build.gradle
- cat -n build.gradle
# build free version
- ./gradlew assembleConversationsFreeCompatRelease
- ls build/outputs/apk/conversationsFreeCompat/*
# publish on nightly fdroid repo
- fdroid nightly -v
after_script:
# this file changes every time but should not be cached
- rm -f $GRADLE_USER_HOME/caches/modules-2/modules-2.lock
- rm -fr $GRADLE_USER_HOME/caches/*/plugin-resolution/

View File

@ -1,16 +0,0 @@
language: android
jdk:
- oraclejdk8
android:
components:
- platform-tools
- tools
- build-tools-27.0.3
- extra-google-google_play_services
licenses:
- '.+'
script:
- ./gradlew assembleFreeRelease
before_install:
- yes | sdkmanager "platforms;android-27"

View File

@ -2,7 +2,20 @@
host = https://www.transifex.com
lang_map = af_ZA: af-rZA, am_ET: am-rET, ar_AE: ar-rAE, ar_BH: ar-rBH, ar_DZ: ar-rDZ, ar_EG: ar-rEG, ar_IQ: ar-rIQ, ar_JO: ar-rJO, ar_KW: ar-rKW, ar_LB: ar-rLB, ar_LY: ar-rLY, ar_MA: ar-rMA, ar_OM: ar-rOM, ar_QA: ar-rQA, ar_SA: ar-rSA, ar_SY: ar-rSY, ar_TN: ar-rTN, ar_YE: ar-rYE, arn_CL: arn-rCL, as_IN: as-rIN, az_AZ: az-rAZ, ba_RU: ba-rRU, be_BY: be-rBY, bg_BG: bg-rBG, bn_BD: bn-rBD, bn_IN: bn-rIN, bo_CN: bo-rCN, br_FR: br-rFR, bs_BA: bs-rBA, ca_ES: ca-rES, co_FR: co-rFR, cs_CZ: cs-rCZ, cy_GB: cy-rGB, da_DK: da-rDK, de_AT: de-rAT, de_CH: de-rCH, de_DE: de-rDE, de_LI: de-rLI, de_LU: de-rLU, dsb_DE: dsb-rDE, dv_MV: dv-rMV, el_GR: el-rGR, en_AU: en-rAU, en_BZ: en-rBZ, en_CA: en-rCA, en_GB: en-rGB, en_IE: en-rIE, en_IN: en-rIN, en_JM: en-rJM, en_MY: en-rMY, en_NZ: en-rNZ, en_PH: en-rPH, en_SG: en-rSG, en_TT: en-rTT, en_US: en-rUS, en_ZA: en-rZA, en_ZW: en-rZW, es_AR: es-rAR, es_BO: es-rBO, es_CL: es-rCL, es_CO: es-rCO, es_CR: es-rCR, es_DO: es-rDO, es_EC: es-rEC, es_ES: es-rES, es_GT: es-rGT, es_HN: es-rHN, es_MX: es-rMX, es_NI: es-rNI, es_PA: es-rPA, es_PE: es-rPE, es_PR: es-rPR, es_PY: es-rPY, es_SV: es-rSV, es_US: es-rUS, es_UY: es-rUY, es_VE: es-rVE, et_EE: et-rEE, eu_ES: eu-rES, fa_IR: fa-rIR, fi_FI: fi-rFI, fil_PH: fil-rPH, fo_FO: fo-rFO, fr_BE: fr-rBE, fr_CA: fr-rCA, fr_CH: fr-rCH, fr_FR: fr-rFR, fr_LU: fr-rLU, fr_MC: fr-rMC, fy_NL: fy-rNL, ga_IE: ga-rIE, gd_GB: gd-rGB, gl_ES: gl-rES, gsw_FR: gsw-rFR, gu_IN: gu-rIN, ha_NG: ha-rNG, hi_IN: hi-rIN, hr_BA: hr-rBA, hr_HR: hr-rHR, hsb_DE: hsb-rDE, hu_HU: hu-rHU, hy_AM: hy-rAM, id_ID: id-rID, ig_NG: ig-rNG, ii_CN: ii-rCN, is_IS: is-rIS, it_CH: it-rCH, it_IT: it-rIT, iu_CA: iu-rCA, ja_JP: ja-rJP, ka_GE: ka-rGE, kk_KZ: kk-rKZ, kl_GL: kl-rGL, km_KH: km-rKH, kn_IN: kn-rIN, ko_KR: ko-rKR, kok_IN: kok-rIN, ky_KG: ky-rKG, lb_LU: lb-rLU, lo_LA: lo-rLA, lt_LT: lt-rLT, lv_LV: lv-rLV, mi_NZ: mi-rNZ, mk_MK: mk-rMK, ml_IN: ml-rIN, mn_CN: mn-rCN, mn_MN: mn-rMN, moh_CA: moh-rCA, mr_IN: mr-rIN, ms_BN: ms-rBN, ms_MY: ms-rMY, mt_MT: mt-rMT, nb_NO: nb-rNO, ne_NP: ne-rNP, nl_BE: nl-rBE, nl_NL: nl-rNL, nn_NO: nn-rNO, nso_ZA: nso-rZA, oc_FR: oc-rFR, or_IN: or-rIN, pa_IN: pa-rIN, pl_PL: pl-rPL, prs_AF: prs-rAF, ps_AF: ps-rAF, pt_BR: pt-rBR, pt_PT: pt-rPT, qut_GT: qut-rGT, quz_BO: quz-rBO, quz_EC: quz-rEC, quz_PE: quz-rPE, rm_CH: rm-rCH, ro_RO: ro-rRO, ru_RU: ru-rRU, rw_RW: rw-rRW, sa_IN: sa-rIN, sah_RU: sah-rRU, se_FI: se-rFI, se_NO: se-rNO, se_SE: se-rSE, si_LK: si-rLK, sk_SK: sk-rSK, sl_SI: sl-rSI, sma_NO: sma-rNO, sma_SE: sma-rSE, smj_NO: smj-rNO, smj_SE: smj-rSE, smn_FI: smn-rFI, sms_FI: sms-rFI, sq_AL: sq-rAL, sr_BA: sr-rBA, sr_CS: sr-rCS, sr_ME: sr-rME, sr_RS: sr-rRS, sv_FI: sv-rFI, sv_SE: sv-rSE, sw_KE: sw-rKE, syr_SY: syr-rSY, ta_IN: ta-rIN, te_IN: te-rIN, tg_TJ: tg-rTJ, th_TH: th-rTH, tk_TM: tk-rTM, tn_ZA: tn-rZA, tr_TR: tr-rTR, tt_RU: tt-rRU, tzm_DZ: tzm-rDZ, ug_CN: ug-rCN, uk_UA: uk-rUA, ur_PK: ur-rPK, uz_UZ: uz-rUZ, vi_VN: vi-rVN, wo_SN: wo-rSN, xh_ZA: xh-rZA, yo_NG: yo-rNG, zh_CN: zh-rCN, zh_HK: zh-rHK, zh_MO: zh-rMO, zh_SG: zh-rSG, zh_TW: zh-rTW, zu_ZA: zu-rZA, no_NO: no-rNO, he_IL: iw-rIL, he: iw
[conversations.strings]
[conversations.main-strings]
file_filter = src/main/res/values-<lang>/strings.xml
source_file = src/main/res/values/strings.xml
source_lang = en
[conversations.quicksy-strings]
file_filter = src/quicksy/res/values-<lang>/strings.xml
source_file = src/quicksy/res/values/strings.xml
source_lang = en
type = ANDROID
[conversations.conversations-strings]
file_filter = src/conversations/res/values-<lang>/strings.xml
source_file = src/conversations/res/values/strings.xml
source_lang = en
type = ANDROID

View File

@ -1,5 +1,395 @@
# Changelog
### Version 2.10.2
* Fix crash when rendering some quotes
* Fix crash in welcome screen
### Version 2.10.1
* Fix issue with some videos not being compressed
* Fix rare crash when opening notification
### Version 2.10.0
* Show black bars when remote video does not match aspect ratio of screen
* Improve search performance
* Add setting to prevent screenshots
### Version 2.9.13
* minor A/V improvements
### Version 2.9.12
* Always verify domain name. No user overwrite
* Support roster pre authentication
### Version 2.9.11
* Fixed 'No Connectivity' issues on Android 7.1
### Version 2.9.10
* fix HTTP up/download for users that dont trust system CAs
### Version 2.9.9
* Various bug fixes around Tor support
* Improve call compatibility with Dino
### Version 2.9.8
* Verify A/V calls with preexisting OMEMO sessions
* Improve compatibility with non libwebrtc WebRTC implementations
### Version 2.9.7
* Ability to select incoming call ringtone
* Fix OpenPGP key id discovery for OpenKeychain 5.6+
* Properly verify punycode TLS certificates
* Improve stability of RTP session establishment (calling)
### Version 2.9.6
* Show call button for offline contacts if they previously announced support
* Back button no longer ends call when call is connected
* bug fixes
### Version 2.9.5
* Quicksy: Automatically receive verification SMS
### Version 2.9.4
* minor stability improvements for A/V calls
* Conversations releases from here on forward require Android 5
### Version 2.9.3
* Fixed connectivity issues when different accounts used different SCRAM mechanisms
* Add support for SCRAM-SHA-512
* Allow P2P (Jingle) file transfer with self contact
### Version 2.9.2
* Offer Easy Invite generation on supporting servers
* Display GIFs send from Movim
* store avatars in cache
### Version 2.9.1
* fixed search on Android <= 5
* optimize memory consumption
### Version 2.9.0
* Search individual conversations
* Notify user if message delivery fails
* Remember display names (nicks) from Quicksy users across restarts
* Add button to start Orbot (Tor) from notification if necessary
### Version 2.8.10
* Handle GPX files
* Improve performance for backup restore
* bug fixes
### Version 2.8.9
* add 'Return to chat' to audio call screen
* Improve keyboard shortcuts
* bug fixes
### Version 2.8.8
* Fixed notifications not showing up under certain conditions
* Fixed compatibility issues and crashes related to A/V calls
### Version 2.8.7
* Show help button if A/V call fails
* Fixed some annoying crashes
* Fixed Jingle connections (file transfer + calls) with bare JIDs
### Version 2.8.6
* Offer to record voice message when callee is busy
### Version 2.8.5
* Reduce echo during calls on some devices
* Fix login when passwords contains special characters
* Play dial and busy tones on speaker during video calls
### Version 2.8.4
* Rework Login with certificate UI
* Add ability to pin chats on top (add to favorites)
### Version 2.8.3
* Move call icon to the left in order to keep other toolbar icons in a consistent place
* Show call duration during audio calls
* Tie breaking for A/V calls (the same two people calling each other at the same time)
### Version 2.8.2
* Add button to switch camera during video call
* Fixed voice calls on tablets
### Version 2.8.1
* Audible feedback (dialing, call started, call ended) for voice calls.
* Fixed issue with retrying failed video call
### Version 2.8.0
* Audio/Video calls (Requires server support in form of STUN and TURN servers discoverable via XEP-0215)
### Version 2.7.1
* Fix avatar selection on some Android 10 devices
* Fix file transfer for larger files
### Version 2.7.0
* Provide PDF preview on Android 5+
* Use 12 byte IVs for OMEMO
### Version 2.6.4
* Support automatic theme switching on Android 10
### Version 2.6.3
* Support for ?register and ?register;preauth XMPP uri parameters
### Version 2.6.2
* let users set their own nick name
* resume download of OMEMO encrypted files
* Channels now use '#' as symbol in avatar
* Quicksy uses 'always' as OMEMO encryption default (hides lock icon)
### Version 2.6.1
* fixes for Jingle IBB file transfer
* fixes for repeated corrections filling up the database
* switched to Last Message Correction v1.1
### Version 2.6.0
* Introduce expert setting to perform channel discovery on local server instead of [search.jabber.network](https://search.jabber.network)
* Enable delivery check marks by default and remove setting
* Enable Send button indicates status by default and remove setting
* Move Backup and Foreground Service settings to main screen
### Version 2.5.12
* Jingle file transfer fixes
* Fixed OMEMO self healing (after backup restore) on servers w/o MAM
### Version 2.5.11
* Fixed crash on Android <5.0
### Version 2.5.10
* Fixed crash on Xiaomi devices running Android 8.0 + 8.1
### Version 2.5.9
* fixed minor security issues
* Share XMPP uri from channel search by long pressing a result
### Version 2.5.8
* fixed connection issues over Tor
* P2P file transfer (Jingle) now offers direct candidates
* Support XEP-0396: Jingle Encrypted Transports - OMEMO
### Version 2.5.7
* fixed crash when scanning QR codes on Android 6 and lower
* when sharing a message from and to Conversations insert it as quote
### Version 2.5.6
* fixes for Jingle file transfer
* fixed some rare crashes
### Version 2.5.5
* allow backups to be restored from anywhere
* bug fixes
### Version 2.5.4
* stability improvements for group chats and channels
### Version 2.5.3
* bug fixes for peer to peer file transfer (Jingle)
* fixed server info for unlimited/unknown max file size
### Version 2.5.2
* bug fixes
### Version 2.5.1
* minor bug fixes
* Set own OMEMO devices to inactive after not seeing them for 14 days. (was 7 days)
### Version 2.5.0
* Added channel search via search.jabbercat.org
* Reworked onboarding screens
* Warn when trying to enter domain address or channel address in Add Contact dialog
### Version 2.4.3
* Fixed display of private messages sent from another client
* Fixed backup creation on long time installations
### Version 2.4.2
* Fix image preview on older Android version
### Version 2.4.1
* Fixed crash in message view
### Version 2.4.0
* New Backup / Restore feature
* Clearly distinguish between (private) group chats and (public) channels
* Redesigned participants view for group chats and channels
* Redesigned create new contact/group chat/channel flow in Start Conversation screen
### Version 2.3.12
* Fixed rare crash on start up
* Fixed avatar not being refreshed in group chats
### Version 2.3.11
* Support for Android 9 'message style' notifications
* OMEMO stability improvements
* Added ability to destroy group chats
* Do not show deleted files in media browser
* Added 'Keep Original' as video quality choice
### Version 2.3.10
* lower minimum required Android version to 4.1
* Synchronize group chat join/leaves across multiple clients
* Fixed sending PGP encrypted messages from quick reply
### Version 2.3.9
* OMEMO stability improvements
* Context menu when long pressing avatar in 1:1 chat
### Version 2.3.8
* make PEP avatars public to play nice with Prosody 0.11
* Fixed re-sending failed files in group chats
### Version 2.3.7
* long press on 'allow' or 'add back' snackbar to bring up 'reject'
* bug fixes for Android 9
### Version 2.3.6
* Improved handling of bookmark nicks
* Show send PM menu entry in anonymous MUCs
### Version 2.3.5
* Fixed group chat mentions when nick ends in . (dot)
* Fixed Conversations not asking for permissions after direct share
* Fixed CVE-2018-18467
### Version 2.3.4
* Fixed sending OMEMO files to ChatSecure
### Version 2.3.3
* Fixed connection issues with user@ip type JIDs
### Version 2.3.2
* Fixed OMEMO on Android 5.1 & 6.0
* Added setting for video quality
* bug fixes
### Version 2.3.1
* Stronger compression for video files
* Use SNI on STARTTLS to fix gtalk
* Fix Quiet Hours on Android 8+
* Use Consistent Color Generation (XEP-0392)
### Version 2.3.0
* Preview and ask for confirmation before sending media files
* View per conversation media files in contact and conference details screens
* Enable foreground service by default for Android 8 (notification can be disabled by long pressing it)
* Audio player: disable screen and switch to ear piece
* Support TLSv1.3 (ejabberd ≤ 18.06 is incompatible with openssl 1.1.1 - Update ejabberd or downgrade openssl if you get Stream opening error)
### Version 2.2.9
* Store bookmarks in PEP if server has ability to convert to old bookmarks
* Show Jabber IDs from address book in Start Conversation screen
### Version 2.2.8
* fixed regression that broke XMPP uris
### Version 2.2.7
* stability improvements
### Version 2.2.6
* support old MAM version to work with Prosody
### Version 2.2.5
* Persist MUC avatar across restarts / show in bookmarks
* Offer Paste as quote for HTML content
### Version 2.2.4
* Use group chat name as primary identifier
* Show group name and subject in group chat details
* Upload group chat avatar on compatible servers
### Version 2.2.3
* Introduce Expert Setting to enable direct search
* Introduce Paste As Quote on Android 6+
* Fixed issues with HTTP Upload
### Version 2.2.2
* Fixed connection problems with TLS1.3 servers
* Attempt to delete broken bundles from PEP
* Use FCM instead of GCM
### Version 2.2.1
* improved recording quality
* load map tiles over Tor if enabled
### Version 2.2.0
* Integrate Voice Recorder
* Integrate Share Location
* Added ability to search messages
### Version 2.1.4
* bug fixes
### Version 2.1.3
* Do not process stanzas with invalid JIDs
### Version 2.1.2
* Fixed avatars not being displayed on new installs
### Version 2.1.1
* Improved start up performance
* bug fixes
### Version 2.1.0
* Added configurable font size
* Added global OMEMO preference
* Added scroll to bottom button
* Only mark visible messages as read
### Version 2.0.0
* OMEMO by default for everything but public group chats
* Integrate QR code scanner (requires camera permission)
* Removed support for OTR
* Removed support for customizable resources
* Removed slide out panel for conversation overview
* Add ability to change status message
* Highlight irregular unicode code blocks in Jabber IDs
* Conversations now requires Android 4.4+
### Version 1.23.8
* bug fixes
### Version 1.23.7
* Improved MAM support + bug fixes
### Version 1.23.6
* Fixed crash on receiving invalid HTTP slot response
### Version 1.23.5
* improved self chat
@ -109,10 +499,9 @@
* Icons for attach menu
### Version 1.16.2
* change mam catchup strategie. support mam:1
* change mam catchup strategy. support mam:1
* bug fixes
### Version 1.16.1
* UI performance fixes
* bug fixes
@ -162,7 +551,7 @@
* bug fixes
### Version 1.14.6
* make error notification dismissable
* make error notification dismissible
* bug fixes
@ -186,7 +575,7 @@
* bug fixes
### Version 1.14.0
* Improvments for N
* Improvements for N
* Quick Reply to Notifications on N
* Don't download avatars and files when data saver is on
* bug fixes
@ -359,12 +748,12 @@
### Version 1.7.2
* decode PGP messages in background
####Versrion 1.7.1
### Version 1.7.1
* performance improvements when opening a conversation
### Version 1.7.0
* CAPTCHA support
* SASL EXTERNAL (client certifiates)
* SASL EXTERNAL (client certificates)
* fetching MUC history via MAM
* redownload deleted files from HTTP hosts
* Expert setting to automatically set presence
@ -472,7 +861,7 @@
* accept more ciphers
### Version 1.0
* MUC controls (Affiliaton changes)
* MUC controls (Affiliation changes)
* Added download button to notification
* Added check box to hide offline contacts
* Use Material theme and icons on Android L
@ -578,7 +967,7 @@
* XEP-0333. Mark whether the other party has read your messages
* Delayed messages are now tagged properly
* Share images from the Gallery
* Infinit history scrolling
* Infinite history scrolling
* Mark the last used presence in presence selection dialog
### Version 0.3

241
README.md
View File

@ -1,33 +1,36 @@
<h1 align="center">Conversations</h1>
<h1 align="center">Conv6ations for Sum7 is a fork of <a href="https://f-droid.org/packages/eu.siacs.conversations/">Conversations</a></h1>
<p align="center">Conversations: the very last word in instant messaging</p>
<p align="center">A Jabber/XMPP chat client which is fair to IPv6</p>
<p align="center">
<a href="https://conversations.im/j/conversations@conference.siacs.eu">
<img src="https://camo.githubusercontent.com/a839cc0a3d4dac7ec82237381b165dd144365b6d/68747470733a2f2f74696e7975726c2e636f6d2f6a6f696e7468656d7563"
alt="chat on our conference room">
</a>
<a href="https://travis-ci.org/siacs/Conversations">
<img src="https://travis-ci.org/siacs/Conversations.svg?branch=development"
alt="build status">
</a>
<a href="https://bountysource.com/teams/siacs">
<img src="https://api.bountysource.com/badge/tracker?tracker_id=519483" alt="Bountysource">
</a>
</p>
<a href="https://conversations.im/j/support@conference.chat.sum7.eu">
<img src="https://inverse.chat/badge.svg?room=support@conference.chat.sum7.eu"
alt="chat on our conference room">
</a>
<a href="https://dev.sum7.eu/sum7/Conversations/pipelines">
<img src="https://dev.sum7.eu/sum7/Conversations/badges/develop/pipeline.svg"
alt="build status">
</a>
</a>
<p align="center">
<a href="https://play.google.com/store/apps/details?id=eu.siacs.conversations&amp;referrer=utm_source%3Dgithub">
<img src="https://conversations.im/images/en-play-badge.png"
alt="Google Play">
</a>
<a href="http://www.amazon.com/dp/B00WD35AAC/">
<img src="https://images-na.ssl-images-amazon.com/images/G/01/AmazonMobileApps/amazon-apps-store-us-black.png"
alt="Amazon App Store">
</a>
<img src="metadata/en-US/phoneScreenshots/1.jpg" width="19%" alt="screenshot 1"/>
<img src="metadata/en-US/phoneScreenshots/2.jpg" width="19%" alt="screenshot 2"/>
<img src="metadata/en-US/phoneScreenshots/3.jpg" width="19%" alt="screenshot 3"/>
<img src="metadata/en-US/phoneScreenshots/4.jpg" width="19%" alt="screenshot 4"/>
<img src="metadata/en-US/phoneScreenshots/5.jpg" width="19%" alt="screenshot 5"/>
</p>
![screenshots](https://raw.githubusercontent.com/siacs/Conversations/master/screenshots.png)
[<img src="https://f-droid.org/badge/get-it-on.png"
alt="Get it on F-Droid"
height="80">](https://f-droid.org/en/packages/eu.sum7.conversations)
### Nightly:
[![https://dev.sum7.eu/sum7/Conversations-nightly/raw/master/fdroid/repo](https://dev.sum7.eu/sum7/Conversations-nightly/raw/master/icon.png)](https://dev.sum7.eu/sum7/Conversations-nightly/raw/master/fdroid/repo)
## Changes to origin:
* replace the hardcoded IPv4 preference to easy Happy Eyeball, for faster connection and fair to both IP version.
* rebrands it as chat.sum7.eu (to run both version together)
## Design principles
@ -35,17 +38,18 @@
privacy
* Rely on existing, well established protocols (XMPP)
* Do not require a Google Account or specifically Google Cloud Messaging (GCM)
* Require as few permissions as possible
## Features
* End-to-end encryption with [OMEMO](http://conversations.im/omemo/), [OTR](https://otr.cypherpunks.ca/), or [OpenPGP](http://openpgp.org/about/)
* End-to-end encryption with [OMEMO](http://conversations.im/omemo/) or [OpenPGP](http://openpgp.org/about/)
* Send and receive images as well as other kind of files
* Share your location via an external [plug-in](https://play.google.com/store/apps/details?id=eu.siacs.conversations.sharelocation&referrer=utm_source%3Dgithub)
* [Encrypted audio and video calls (DTLS-SRTP)](https://help.conversations.im)
* Share your location
* Send voice messages
* Indication when your contact has read your message
* Intuitive UI that follows Android Design guidelines
* Pictures / Avatars for your Contacts
* Syncs with desktop client
* Synchronizes with desktop client
* Conferences (with support for bookmarks)
* Address book integration
* Multiple accounts / unified inbox
@ -92,45 +96,17 @@ Conversations is entirely open source and licensed under GPLv3. So if you are a
software developer you can check out the sources from GitHub and use Gradle to
build your apk file.
The more convenient way — which not only gives you automatic updates but also
supports the further development of Conversations — is to buy the App in the
Google [Play Store](https://play.google.com/store/apps/details?id=eu.siacs.conversations&referrer=utm_source%3Dgithub).
Buying the App from the Play Store will also give you access to our [beta test](#beta).
#### I don't have a Google Account but I would still like to make a contribution
I accept donations over PayPal, bank transfer and various crypto currencies. For donations via PayPal you
can use the email address `donate@siacs.eu` or the button below.
[![Donate with PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=CW3SYT3KG5PDL)
**Disclaimer:** I'm not a huge fan of PayPal and their business policies. For
larger contributions please get in touch with me beforehand and we can talk
about bank transfer (SEPA).
##### Crypto currencies
Bitcoin: `1AeqNAcg85APAZj9BZfAjdFCC5zesqXp2B`
Bitcoin Cash: `16ABkXzYAwWz8Y5DcWFfbBRqL63g3hzEaU`
Ether: `0x5c4e5239cd9c6f4a909e4e8361526e2e3c8ba9fa`
#### How do I create an account?
XMPP, like email, is a federated protocol, which means that there is not one company you can create an *official XMPP account* with. Instead there are hundreds, or even thousands, of providers out there. One of those providers is our very own [conversations.im](https://account.conversations.im). If you dont like to use *conversations.im* use a web search engine of your choice to find another provider. Or maybe your university has one. Or you can run your own. Or ask a friend to run one. Once you've found one, you can use Conversations to create an account. Just select *register new account* on server within the create account dialog.
##### Domain hosting
Using your own domain not only gives you a more recognizable Jabber ID, it also gives you the flexibility to migrate your account between different XMPP providers. This is a good compromise between the responsibilities of having to operate your own server and the downsides of being dependent on a single provider.
Learn more about [conversations.im Jabber/XMPP domain hosting](https://account.conversations.im/domain/).
XMPP, like email, is a federated protocol, which means that there is not one company you can create an *official XMPP account* with. Instead there are hundreds, or even thousands, of providers out there. One of those providers is our very own [chat.sum7.eu](https://chat.sum7.eu). If you dont like to use *chat.sum7.eu* use a web search engine of your choice to find another provider. Or maybe your university has one. Or you can run your own. Or ask a friend to run one. Once you've found one, you can use Conversations to create an account. Just select *register new account* on server within the create account dialog.
##### Running your own
If you already have a server somewhere and are willing and able to put the necessary work in, one alternative-in the spirit of federation-is to run your own. We recommend either [Prosody](https://prosody.im/) or [ejabberd](https://www.ejabberd.im/). Both of which have their own strengths. Ejabberd is slightly more mature nowadays but Prosody is arguably easier to set up.
If you already have a server somewhere and are willing and able to put the necessary work in you can run your own XMPP server.
For Prosody you need a couple of so called [community modules](https://modules.prosody.im/) most of which are maintained by the same people that develop Prosody.
As of 2019 we recommend you use [ejabberd](https://ejabberd.im). The default configuration file already enables everything you need to pass the [Conversations Compliance Suite](https://compliance.conversations.im). Make sure your Linux distribution ships a fairly recent version.
If you pick ejabberd make sure you use the latest version. Linux Distributions might bundle some very old versions of it.
With a little bit of effort [Prosody](https://prosody.im) can be configured to support all necessary extensions as well. However you will have to rely on so called [Community Modules](https://modules.prosody.im/) of varying quality. Prosody can be interesting to people who like to modify their server and create / prototype own modules.
Performance wise - for small deployments - both ejabberd and Prosody should be fine.
#### Where can I set up a custom hostname / port
Conversations will automatically look up the SRV records for your domain name
@ -157,33 +133,56 @@ SCRAM-SHA1, PLAIN, EXTERNAL (client certs) and DIGEST-MD5.
Some Bind failures are transient and resolve themselves after a reconnect.
When trying to connect to OpenFire the bind failure can be a permanent problem when the domain part of the Jabber ID entered in Conversations doesnt match the domain the OpenFire server feels responsible for. For example OpenFire is configured to use the domain `a.tld` but the Jabber ID entered is `user@b.tld` where `b.tld` also points to the same host. During bind OpenFire tries to reassign the Jabber to `user@a.tld`. Conversations doesnt like that.
This can be fixed by creating a new account in Conversations that uses the Jabber ID `user@a.tld`.
This can be fixed by creating a new account in Conversations that uses the Jabber ID `user@a.tld`.
Note: This is kind of a weird quirk in OpenFire. Most other servers would just throw a 'Server not responsible for domain' error instead of attempting to reassign the Jabber ID.
Maybe you attempted to use the Jabber ID `test@b.tld` because `a.tld` doesnt point to the correct host. In that case you might have to enable the extended connection settings in the expert settings of Conversations and set a host name.
#### I get 'Stream opening error'. What does that mean?
In most cases this error is caused by ejabberd advertising support for TLSv1.3 but not properly supporting it. This can happen if the OpenSSL version on the server already supports TLSv1.3 but the fast\_tls wrapper library used by ejabberd not (properly) support it. Upgrading fast\_tls and ejabberd or - theoretically - downgrading OpenSSL should fix the issue. A work around is to explicitly disable TLSv1.3 support in the ejabberd configuration. More information can be found on [this issue on the ejabberd issue tracker](https://github.com/processone/ejabberd/issues/2614).
#### Im getting this annoying permanent notification
Starting with Conversations 2.3.6 Conversations releases distributed over the Google Play Store will display a permanent notification if you are running it on Android 8 and above. This is a rule that it is essentially enforced by the Google Play Store. (You wont have the problem of a *forced* foreground notification if you are getting your app from F-Droid.)
However you can disable the notification via settings of the operating system. (Not settings in Conversations.)
**The battery consumption and the entire behavior of Conversations will remain the same (as good or as bad as it was before). Why is Google doing this to you? We have no idea.**
##### Android &lt;= 7.1 or Conversations from F-Droid (all Android versions)
The foreground notification is still controlled over the expert settings within Conversations as it always has been. Whether or not you need to enable it depends on how aggressive the non-standard 'power saving' features are that your phone vendor has built into the operating system.
##### Android 8.x
Long press the permanent notification and disable that particular type of notification by moving the slider to the left. This will make the notification disappear but create another notification (this time created by the operating system itself.) that will complain about Conversations (and other apps) using battery. Starting with Android 8.1 you can disable that notification again with the same method described above.
##### Android 9.0+
Long press the permanent notification and press the info `(i)` button to get into the App info screen. In that screen touch the 'Notification' entry. In the next screen remove the checkbox for the 'Foreground service' entry.
#### How do XEP-0357: Push Notifications work?
You need to be running the Play Store version of Conversations and your server needs to support push notifications.¹ Because *Google Cloud Notifications (GCM)* are tied with an API key to a specific app your server can not initiate the push message directly. Instead your server will send the push notification to the Conversations App server (operated by us) which then acts as a proxy and initiates the push message for you. The push message sent from our App server through GCM doesnt contain any personal information. It is just an empty message which will wake up your device and tell Conversations to reconnect to your server. The information send from your server to our App server depends on the configuration of your server but can be limited to your account name. (In any case the Conversations App server won't redirect any information through GCM even if your server sends this information.)
You need to be running the Play Store version of Conversations and your server needs to support push notifications.¹ Because *Googles Firebase Cloud Messaging (FCM)* are tied with an API key to a specific app your server can not initiate the push message directly. Instead your server will send the push notification to the [Conversations App server](https://github.com/iNPUTmice/p2) (operated by us) which then acts as a proxy and initiates the push message for you. The push message sent from our App server through FCM doesnt contain any personal information. It is just an empty message which will wake up your device and tell Conversations to reconnect to your server. The information sent from your server to our App server depends on the configuration of your server but can be limited to your account name. (In any case the Conversations App server won't redirect any information through FCM even if your server sends this information.)
In summary Google will never get hold of any personal information besides that *something* happened. (Which doesnt even have to be a message but can be some automated event as well.) We - as the operator of the App server - will just get hold of your account name (without being able to tie this to your specific device).
If you dont want this simply pick a server which does not offer Push Notifications or build Conversations yourself without support for push notifications. (This is available via a gradle build flavor.) Non-play store source of Conversations like the Amazon App store will also offer a version without push notifications. Conversations will just work as before and maintain its own TCP connection in the background.
¹ Your server only needs to support the server side of [XEP-0357: Push Notifications](http://xmpp.org/extensions/xep-0357.html). If you use the Play Store version you do **not** need to run your own app server. The server modules are called *mod_cloud_notify* on Prosody and *mod_push* on ejabberd.
You can find a detailed description of how your server, the app server and FCM are interacting with each other in the [README](https://github.com/iNPUTmice/p2/blob/master/README.md) of the Conversations App Server.
¹ If you use the Play Store version you do **not** need to run your own app server. Your server only needs to support the server side of [XEP-0357: Push Notifications](http://xmpp.org/extensions/xep-0357.html) and [XEP-0198: Stream Management](https://xmpp.org/extensions/xep-0198.html). The prosody server modules are called *mod_cloud_notify* and *mod_smacks*. The ejabberd server modules are called *mod_push* and *mod_stream_mgmt*.
#### But why do I need a permanent notification if I use Google Push?
FCM (Google Push) allows an app to wake up from *Doze* which is (as the name suggests) a hibernation feature of the Android operating system that cuts the network connection and also reduces the number of times the app is allowed to wake up (to ping the server for example). The app can ask to be excluded from doze. Non push variants of the app (from F-Droid or if the server doesnt support it) will do this on first start up. So if you get exemption from *Doze*, or if you get regular push events sent to you, Doze should not pose a threat to Conversatons working properly. But even with *Doze* the app is still open in the background (kept in memory); it is just limited in the actions it can do. Conversations needs to stay in memory to hold certain session state (online status of contacts, join status of group chats, …). However with Android 8 Google changed all of this again and now an App that wants to stay in memory needs to have a foreground service which is visible to the user via the annoying notification. But why does Conversations need to hold that state? XMPP is a statefull protocol that has a lot of per-session information; packets need to be counted, presence information needs to be held, some features like Message Carbons get activated once per session, MAM catch-up happens once, service discovery happens only once; the list goes on. When Conversations was created in early 2014 none of this was a problem because apps were just allowed to stay in memory. Basically every XMPP client out there holds that information in memory because it would be a lot more complicated trying to persist it to disk. An entire rewrite of Conversations in the year 2019 would attempt to do that and would probably succeed however it would require exactly that; a complete rewrite which is not feasible right now. Thats by the way also the reason why it is difficult to write an XMPP client on iOS. Or more broadly put this is also the reason why other protocols are designed as or migrated to stateless protocols (often based on HTTP); take for example the migration of IMAP to [JMAP](https://jmap.io/).
#### Conversations doesnt work for me. Where can I get help?
You can join our conference room on `conversations@conference.siacs.eu`.
You can join our conference room on [`support@conference.chat.sum7.eu`](https://conversations.im/j/support@conference.chat.sum7.eu).
A lot of people in there are able to answer basic questions about the usage of
Conversations or can provide you with tips on running your own XMPP server. If
you found a bug or your app crashes please read the Developer / Report Bugs
section of this document.
#### I need professional support with Conversations or setting up my server
I'm available for hire. Contact me at `inputmice@siacs.eu`.
#### How does the address book integration work?
The address book integration was designed to protect your privacy. Conversations
@ -259,12 +258,23 @@ Conversations is trying to get rid of old behaviours and set an example for
other clients.
#### Translations
Translations are managed on [Transifex](https://www.transifex.com/projects/p/conversations/)
Translations are managed on [Transifex](https://www.transifex.com/projects/p/conversations/).
If you want to become a translator Please register on transifex, apply to join
the translation team and then step by our group chat on
[conversations@conference.siacs.eu](https://conversations.im/j/conversations@conference.siacs.eu)
and introduce yourself to `iNPUTmice` so he can approve your join request.
#### How do I backup / move Conversations to a new device?
On the one hand Conversations supports Message Archive Management to keep a server side history of your messages so when migrating to a new device that device can display your entire history. However that does not work if you enable OMEMO due to its forward secrecy. (Read [The State of Mobile XMPP in 2016](https://gultsch.de/xmpp_2016.html) especially the section on encryption.)
If you migrate to a new device and would still like to keep your history please use a third party backup tool like [oandbackup](https://github.com/jensstein/oandbackup) (needs root access on the device) or ```adb backup``` (no root access needed) from your computer. It is important that you deactivate your account before backup and activate it only after a successful restore, otherwise OMEMO might not work afterwards. Also, remember that you can **only** transfer the backup to either the same version of Android or to a newer one (eg. 5.1.1 -> 5.1.1 or 5.1.1 -> 6.0.1).
As of version 2.4.0 an integrated Backup & Restore function will help with this, go to Settings and youll find a setting called Create backup. A notification will pop-up during the creation process that will announce you when it's ready. After the files, one for each account, are created, you can move the **Conversations** folder *(if you want your old media files too)* or only the **Conversations/Backup** folder *(for OMEMO keys and history only)* to your new device (or to a storage place) where a freshly installed Conversations can restore each account. Don't forget to enable the accounts after a successfull restore.
This backup method will include your OMEMO keys. Due to forward secrecy you will not be able to recover messages sent and received between creating the backup and restoring it. If you have a server side archive (MAM) those messages will be retrieved but displayed as *unable to decrypt*. For technical reasons you might also lose the first message you either sent or receive after the restore; for each conversation you have. This message will then also show up as *unable to decrypt*, but this will automatically recover itself as long as both participants are on Conversations 2.3.11+. Note that this doesnt happen if you just transfer to a new phone and no messages have been exchanged between backup and restore.
In the vast, vast majority of cases you wont have to manually delete OMEMO keys or do anything like that. Conversations only introduced the official backup feature in 2.4.0 after making sure the *OMEMO self healing* mechanism introduced in 2.3.11 works fine.
**WARNING**: Be sure to know your accounts passwords or find ways to reset them **before** doing the backup as the files are encrypted using those passwords and the Restore process will ask for them.
**WARNING**: Do not use the restore backup feature in an attempt to clone (run simultaneously) an installation. Restoring a backup is only meant for migrations or in case youve lost the original device.
#### Conversations is missing a certain feature
@ -282,17 +292,12 @@ will it accelerate the development.
Just write it yourself and send me a pull request. If I like it I will happily
merge it if I don't at least you and like minded people get to enjoy it.
#### I need a feature and I need it now!
I am available for hire. Contact me via XMPP: `inputmice@siacs.eu`
### Security
#### Why are there three end-to-end encryption methods and which one should I choose?
#### Why are there two end-to-end encryption methods and which one should I choose?
* OTR is a legacy encryption method. It works out of the box with most contacts as long as they are online.
* OMEMO works even when a contact is offline, and works with multiple devices. It also allows asynchronous file-transfer when the server has [HTTP File Upload](http://xmpp.org/extensions/xep-0363.html). However, OMEMO is not as widely supported as OTR and is currently implemented only by Conversations and Gajim. OMEMO should be preferred over OTR for contacts who use Conversations.
* OpenPGP (XEP-0027) is a very old encryption method that has some advantages over OTR but should only be used by experts who know what they are doing.
* OMEMO works even when a contact is offline, and works with multiple devices. It also allows asynchronous file-transfer when the server has [HTTP File Upload](http://xmpp.org/extensions/xep-0363.html). However, OMEMO not widely support and is currently implemented only [by a handful of clients](https://omemo.top).
* OpenPGP (XEP-0027) is a very old encryption method that has some advantages over OMEMO but should only be used by people who know what they are doing.
#### How do I use OpenPGP
@ -303,37 +308,33 @@ The way PGP works is that you trust Key IDs instead of JID's or email addresses.
So in theory your contact list should consist of Public-Key-IDs instead of
JID's. But of course no email or XMPP client out there implements these
concepts. Plus PGP in the context of instant messaging has a couple of
downsides: It is vulnerable to replay attacks, it is rather verbose, and
decrypting and encrypting takes longer than OTR. It is however asynchronous and
works well with message carbons.
downsides: It is vulnerable to replay attacks and it is rather verbose.
To use OpenPGP you have to install the open source app
[OpenKeychain](http://www.openkeychain.org) and then long press on the account in
manage accounts and choose renew PGP announcement from the contextual menu.
#### OMEMO is grayed out. What do I do?
OMEMO has two requirements: Your server and the server of your contact need to support PEP. Both of you can verify that individually by opening your account details and selecting ```Server info``` from the menu. The appearing table should list PEP as available. The second requirement is mutual presence subscription. You can verify that by opening the contact details and see if both check boxes *Send presence updates* and *Receive presence updates* are checked.
OMEMO is only available in 1:1 chats and private (members-only, non-anonymous) group chats. Encrypting public group chats makes little to no sense since anyone (including a hypothetical attacker) can join and a user couldnt possibily verify all participants anyway. Furthermore for a lot of public group chat it is desirable to give new comers access to the full history.
#### How does the encryption for conferences work?
#### OMEMO doesnt work. I get a 'Something went wrong' message in the 'Trust OMEMO Fingerprints' screen.
OMEMO has two requirements: Your server and the server of your contact need to support PEP. Both of you can verify that individually by opening your account details and selecting ```Server info``` from the menu. The appearing table should list PEP as available. The second requirement is that the initial sender needs to have access to the published key material. This can either be achieved by having mutual presence subscription (you can verify that by opening the contact details and see if both check boxes *Send presence updates* and *Receive presence updates* are checked) or by using a server that makes the public key material accessible to anyone. In the [Compliance Tester](https://compliance.conversations.im) this is indicated by the 'OMEMO' feature. Since it is very common that the first messages are exchanged *before* adding each other to the contact list it is desirable to use servers that have 'OMEMO support'.
For conferences only OMEMO and OpenPGP are supported as encryption method. (OTR
does not work with multiple participants).
#### How does the encryption for group chats work?
##### OMEMO
OMEMO encryption works only in private (members only) conferences that are non-anonymous.
You need to have presence subscription with every member of the conference.
You can verify that by going into the conference details, long press every member and start
a conversation with them. (Or select 'contact details' if they are already in your contact
list)
OMEMO encryption works only in private (members only) conferences that are non-anonymous. Non-anonymous (being able to discover the real JID of other participants) is a technical requirement to discover the key material. Members only is a sort of arbitrary requirement imposed by Conversations. (see 'OMEMO is grayed out')
The server of all participants need to pass the OMEMO [Compliance Test](https://conversations.im/compliance/).
In other words they either need to run ejabberd 18.01+ or Prosody 0.11+.
(Alternatively it would also work if all participants had each other in their contact list; But that rarely is the case in larger group chats.)
The owner of a conference can make a public conference private by going into the conference
details and hit the settings button (the one with the gears) and select both *private* and
*members only*.
If OMEMO is grayed out long pressing the lock icon will reveal some quick hints on why OMEMO
is disabled.
##### OpenPGP
Every participant has to announce their OpenPGP key (see answer above).
@ -348,61 +349,41 @@ feature is regarded experimental. Conversations is the only client that uses
XEP-0027 with conferences. (The XEP neither specifically allows nor disallows
this.)
#### Why is Conversations not end-to-end encrypted by default
We briefly had OMEMO as the default E2EE but it turned out to be a usability nightmare and thus we reverted that. You can find more information in [the commit message](https://github.com/siacs/Conversations/commit/035d0c79572d5981c53d1bff7f30b484c6542f17) of that change.
Quick reminder that Conversations **always** uses TLS to connect to your server. It wont even connect to a server without TLS.
#### What is Blind Trust Before Verification / why are messages marked with a red lock?
Read more about the concept on https://gultsch.de/trust.html
#### What happened to OTR support?
OTR was removed because it was highly unreliable. It didnt work with multiple devices and was never really specified to work with XMPP. The codebase was a mess (There was an HTML parser in there for crying out loud to deal with the garbage some OTR clients would send.) Verification was implemented in a non-blocking way. It would tell you if the current session was using an unknown fingerprint but it didnt actively stopped you from sending messages until you have confirmed the new fingerprint. (Like Conversations would do now with BTBV after verification or when BTBV is turned off.) Considering the previous points there was little to no desire from my point to fix this potential security issue or clean up the code base. Another reason for the removal was that people would use it *accidentally* even to communicate between two Conversations clients because they read somewhere that OTR is good.
### What clients do I use on other platforms
There are XMPP Clients available for all major platforms.
#### Windows / Linux
For your desktop computer we recommend that you use [Gajim](https://gajim.org). You need to install the plugins `OMEMO`, `HTTP Upload` and `URL image preview` to get the best compatibility with Conversations. Plugins can be installed from within the app.
#### iOS
Unfortunately we dont have a recommendation for iPhones right now. There are two clients available [ChatSecure](https://chatsecure.org/) and [Monal](https://monal.im/). Both with their own pros and cons.
Unfortunately we dont have a recommendation for iPhones right now. There are three clients available [Siskin](https://siskin.im/), [ChatSecure](https://chatsecure.org/) and [Monal](https://monal.im/). Each with their own pros and cons.
### Development
<a name="beta"></a>
#### Beta testing
If you bought the App on [Google Play](https://play.google.com/store/apps/details?id=eu.siacs.conversations)
you can get access to the the latest beta version by signing up using [this link](https://play.google.com/apps/testing/eu.siacs.conversations).
#### How do I build Conversations
**Note:** Starting with version 2.8.0 you will need to compile libwebrtc.
[Instructions](https://webrtc.github.io/webrtc-org/native-code/android/) can be found on the WebRTC
website. Place the resulting libwebrtc.aar in the `libs/` directory. The PlayStore release currently
uses the stable M90 release and renamed the file name to `libwebrtc-m90.aar` put potentially you can
reference any file name by modifying `build.gradle`.
Make sure to have ANDROID_HOME point to your Android SDK. Use the Android SDK Manager to install missing dependencies.
git clone https://github.com/siacs/Conversations.git
git clone https://github.com/inputmice/Conversations.git
cd Conversations
./gradlew assembleFreeDebug
./gradlew assembleConversationsFreeSystemDebug
There are two build flavors available. *free* and *playstore*. Unless you know what you are doing you only need *free*.
[![Build Status](https://travis-ci.org/siacs/Conversations.svg?branch=development)](https://travis-ci.org/siacs/Conversations)
#### How do I update/add external libraries?
If the library you want to update is in Maven Central or JCenter (or has its own
Maven repo), add it or update its version in `build.gradle`. If the library is
in the `libs/` directory, you can update it using a subtree merge by doing the
following (using `minidns` as an example):
git remote add minidns https://github.com/rtreffer/minidns.git
git fetch minidns
git merge -s subtree minidns master
To add a new dependency to the `libs/` directory (replacing "name", "branch" and
"url" as necessary):
git remote add name url
git merge -s ours --no-commit name/branch
git read-tree --prefix=libs/name -u name/branch
git commit -m "Subtree merged in name"
[![Build Status](https://dev.sum7.eu/sum7/Conversations/badges/develop/build.svg)](https://dev.sum7.eu/sum7/Conversations/pipelines)
#### How do I debug Conversations
@ -419,7 +400,7 @@ Debian/Ubuntu for example it is called `android-tools-adb`.
Furthermore you might have to enable 'USB debugging' in the Developer options of your
phone. After that you can just execute the following on your computer:
adb -d logcat -v time -s conversations
adb -d logcat -v time -s conver6ations
If need be there are also some Apps on the PlayStore that can be used to show the logcat
directly on your rooted phone. (Search for logcat). However in regards to further processing
@ -434,4 +415,4 @@ Play Store version or the current HEAD. If you are having problems connecting to
your XMPP server your file transfer doesnt work as expected please always
include a logcat debug output with your issue (see above).
[issues]: https://github.com/siacs/Conversations/issues
[issues]: https://dev.sum7.eu/sum7/Conversations/issues

View File

@ -155,9 +155,9 @@
inkscape:connector-curvature="0"
id="path3805"
d="m 8,8 c 2,2 4,6 4,10 L 16,8 Z"
style="display:none;fill:#424242;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3811)" />
style="display:none;fill:#282828;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3811)" />
<rect
style="fill:#424242;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3811)"
style="fill:#282828;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3811)"
id="rect2987"
width="20"
height="20"

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" viewBox="0 0 24 24" fill="black" width="24px" height="24px"><g><rect fill="none" height="24" width="24"/></g><g><g><path d="M9,12c0,1.66,1.34,3,3,3s3-1.34,3-3s-1.34-3-3-3S9,10.34,9,12z"/><path d="M8,10V8H5.09C6.47,5.61,9.05,4,12,4c3.72,0,6.85,2.56,7.74,6h2.06c-0.93-4.56-4.96-8-9.8-8C8.73,2,5.82,3.58,4,6.01V4H2v6 H8z"/><path d="M16,14v2h2.91c-1.38,2.39-3.96,4-6.91,4c-3.72,0-6.85-2.56-7.74-6H2.2c0.93,4.56,4.96,8,9.8,8c3.27,0,6.18-1.58,8-4.01V20 h2v-6H16z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 547 B

View File

@ -147,15 +147,15 @@
inkscape:export-xdpi="100"
transform="matrix(0.3835576,0,0,0.3835576,-246.60108,-156.11013)"
id="g5317"
style="display:inline;fill:#00a000;fill-opacity:1">
style="display:inline;fill:#EF6C00;fill-opacity:1">
<path
style="display:inline;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="display:inline;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 1120.8042,772.36056 -118.0025,103.66316 118.5792,46.01918 c 8.4859,3.29325 19.6524,7.94481 27.2622,0.71376 7.3868,-7.01907 5.6502,-14.13839 3.0935,-24.54095 z"
id="path5319"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccsssc" />
<circle
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="circle5321"
cx="883.16943"
cy="677.19611"
@ -171,7 +171,7 @@
inkscape:connector-curvature="0"
id="path6884"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
@ -180,7 +180,7 @@
inkscape:connector-curvature="0"
id="path6888"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
@ -189,7 +189,7 @@
inkscape:connector-curvature="0"
id="path6892"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
@ -198,7 +198,7 @@
inkscape:connector-curvature="0"
id="path6896"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
@ -207,7 +207,7 @@
inkscape:connector-curvature="0"
id="path6900"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
@ -216,7 +216,7 @@
inkscape:connector-curvature="0"
id="path6904"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
@ -225,7 +225,7 @@
inkscape:connector-curvature="0"
id="path6908"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
@ -234,7 +234,7 @@
inkscape:connector-curvature="0"
id="path6912"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<filter
inkscape:collect="always"
@ -256,7 +256,7 @@
inkscape:connector-curvature="0"
id="path5747"
d="M 99.908581,-2.3831968e-4 A 95.889392,95.889392 0 0 0 4.0199102,95.888436 95.889392,95.889392 0 0 0 99.908581,191.77906 95.889392,95.889392 0 0 0 142.61366,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 L 183.8285,142.24002 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.79921,95.888466 95.889392,95.889392 0 0 0 99.908581,-2.0831968e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
</defs>
<metadata
@ -290,7 +290,7 @@
inkscape:groupmode="layer"
transform="translate(-4,2.6816348)">
<path
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
style="display:inline;opacity:1;fill:#EF6C00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 104.88867,-1.9377566 A 95.889392,95.889392 0 0 0 8.9999996,93.950918 95.889392,95.889392 0 0 0 104.88867,189.84154 95.889392,95.889392 0 0 0 147.59375,179.76341 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 L 188.80859,140.3025 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 200.7793,93.950948 95.889392,95.889392 0 0 0 104.88867,-1.9377266 Z"
id="circle6661"
inkscape:connector-curvature="0" />
@ -313,7 +313,7 @@
style="display:inline"
transform="translate(-4,2.6816164)">
<path
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="opacity:1;fill:#FF9800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6910)"
d="m 145.16406,11.183594 -5.13232,9.649402 c -0.77924,1.465076 -0.65974,2.41396 0.66876,3.18097 9.66686,5.488467 18.12303,12.874168 24.86104,21.711122 1.05534,1.616079 2.08054,1.713076 3.67763,0.571565 L 178.04883,40 C 169.45271,27.990203 158.19857,18.128379 145.16406,11.183594 Z"
id="path7364"
@ -321,7 +321,7 @@
sodipodi:nodetypes="csccscc"
transform="translate(4.9999996,-1.9374999)" />
<path
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="opacity:1;fill:#FF9800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6906)"
d="m 193.80469,75.615234 -9.62713,2.062751 c -2.66266,0.570512 -3.40763,1.172953 -2.90593,3.917433 0.85823,4.714633 1.30424,9.497137 1.33189,14.293254 -0.028,5.578758 -0.62194,11.137108 -1.77093,16.589918 -0.86591,3.23162 0.13682,3.77092 3.16149,4.58138 l 8.98639,2.30136 c 1.98177,-7.66828 3.00584,-15.55255 3.04883,-23.472658 -0.0187,-6.817681 -0.76446,-13.613926 -2.22461,-20.273438 z"
id="path7366"
@ -329,7 +329,7 @@
sodipodi:nodetypes="csccccccc"
transform="translate(4.9999996,-1.9374999)" />
<path
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="opacity:1;fill:#FF9800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6902)"
d="m 14.264281,102.76512 -10.2076406,0.87943 c 1.2093798,14.83154 5.8540346,29.17808 13.5664056,41.90429 l 8.544301,-5.23239 c 2.394983,-1.46665 1.895406,-3.37834 0.986202,-5.04513 -5.118253,-9.40257 -8.359018,-19.71635 -9.536202,-30.36553 0,-2.09418 -1.881577,-2.26744 -3.353066,-2.14067 z"
id="path7372"
@ -337,7 +337,7 @@
sodipodi:nodetypes="sccsccs"
transform="translate(4.9999996,-1.9374999)" />
<path
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="opacity:1;fill:#FF9800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6898)"
d="m 51.504371,166.60235 -5.82273,8.50898 c 12.710503,8.71282 27.333669,14.23394 42.630859,16.0957 l 1.220329,-9.90843 c 0.355066,-2.88295 -1.085712,-3.52946 -3.332252,-3.90256 -10.402329,-1.73697 -20.373956,-5.45322 -29.373754,-10.94516 -1.647505,-1.06744 -3.639993,-2.30718 -5.322452,0.15147 z"
id="path7370"
@ -345,7 +345,7 @@
sodipodi:nodetypes="sccsccs"
transform="translate(4.9999996,-1.9374999)" />
<path
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="opacity:1;fill:#FF9800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6894)"
d="M 32.208984,27.683594 C 21.779177,38.079001 13.883707,50.736882 9.1347656,64.675781 L 19.33617,68.090365 c 1.658147,0.55501 2.832564,-0.120955 3.374272,-1.591979 3.777598,-10.021698 9.470788,-19.210103 16.759132,-27.052307 1.561136,-1.561136 1.567283,-2.960058 0.447507,-4.076606 z"
id="path7374"
@ -353,7 +353,7 @@
sodipodi:nodetypes="ccsccsc"
transform="translate(4.9999996,-1.9374999)" />
<path
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="opacity:1;fill:#FF9800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6890)"
d="M 99.888672,-0.25 C 87.701045,-0.2239408 75.630114,2.1252837 64.322266,6.671875 l 3.530435,8.74898 c 1.063314,2.635062 1.616754,3.526314 4.973913,2.352259 8.692057,-3.031338 17.839027,-4.588849 27.062058,-4.599286 5.555828,0 6.486278,0.350026 6.780788,-3.4460223 l 0.74851,-9.64772758 C 104.9135,-0.12857239 102.40179,-0.23868346 99.888672,-0.25 Z"
id="path7376"
@ -361,7 +361,7 @@
sodipodi:nodetypes="ccsccscc"
transform="translate(4.9999996,-1.9374999)" />
<path
style="display:inline;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="display:inline;fill:#FF9800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6886)"
d="m 138.72416,168.48439 c -4.17634,2.25458 -8.55959,4.09055 -13.0504,5.63418 -1.00363,0.34498 -1.20742,1.18222 -0.8682,2.27372 l 3.44056,11.0706 c 4.92985,-1.53124 9.72799,-3.45808 14.34766,-5.76172 l 0.12695,0.0137 14.0293,5.44532 4.12174,-10.20577 c 0.7548,-1.86894 -0.0184,-2.7016 -1.59462,-3.31324 l -14.72114,-5.71251 c -1.86679,-0.7244 -3.68834,-0.60144 -5.83185,0.55572 z"
id="path5005"
@ -369,7 +369,7 @@
sodipodi:nodetypes="cssccccsssc"
transform="translate(4.9999996,-1.9374999)" />
<path
style="display:inline;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
style="display:inline;fill:#FF9800;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6882)"
d="m 186.53125,152.80469 -10.6386,2.70888 c -0.78879,0.20085 -1.67397,1.02386 -1.35494,2.33801 l 9.75918,40.15428 c 8.56713,5.97538 15.30408,3.06731 11.01563,-9.47266 z"
id="path5071"

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="ic_no_results_black.svg"
inkscape:version="0.92.2 2405546, 2018-03-11">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="636"
inkscape:window-height="1156"
id="namedview6"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="1.0169492"
inkscape:cy="24"
inkscape:window-x="3200"
inkscape:window-y="20"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm10 27.17L31.17 34 24 26.83 16.83 34 14 31.17 21.17 24 14 16.83 16.83 14 24 21.17 31.17 14 34 16.83 26.83 24 34 31.17z"
id="path2"
style="fill:#000000;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="ic_no_results_white.svg"
inkscape:version="0.92.2 2405546, 2018-03-11">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="636"
inkscape:window-height="1156"
id="namedview6"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="1.0169492"
inkscape:cy="24"
inkscape:window-x="3200"
inkscape:window-y="20"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm10 27.17L31.17 34 24 26.83 16.83 34 14 31.17 21.17 24 14 16.83 16.83 14 24 21.17 31.17 14 34 16.83 26.83 24 34 31.17z"
id="path2"
style="fill:#ffffff;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="95"
height="95"
id="Yes_check"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_received_indicator.svg">
<metadata
id="metadata10">
<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>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="956"
inkscape:window-height="1156"
id="namedview8"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="5.04"
inkscape:cx="-4.3215257"
inkscape:cy="37.489149"
inkscape:window-x="2880"
inkscape:window-y="20"
inkscape:window-maximized="0"
inkscape:current-layer="Yes_check"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<defs
id="defs1373">
<linearGradient
id="linearGradient2250">
<stop
style="stop-color:#008700;stop-opacity:1"
offset="0"
id="stop2252" />
<stop
style="stop-color:#006f00;stop-opacity:1"
offset="1"
id="stop2254" />
</linearGradient>
</defs>
<path
d="m 2.3894499,61.412131 c 0,0 16.7473651,20.271938 22.3528491,26.154483 3.648598,3.026816 12.878061,3.83429 14.880462,0 1.64903,-2.636163 2.380404,-5.8348 2.991819,-7.931771 C 49.920898,54.575958 72.297563,22.337321 92.321082,10.50894 96.814837,5.2377522 86.327596,3.5063483 77.217442,6.9958109 63.487006,12.254946 34.107717,59.529917 29.270873,69.192545 22.40265,70.841418 12.518762,52.447046 12.518762,52.447046 7.3805037,52.552428 1.8841059,52.071763 2.3894499,61.412131 z"
style="fill:#259b24;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.29981154;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="check"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccscsccc" />
</svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

54
art/ic_search_black.svg Normal file
View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="ic_search_black.svg"
inkscape:version="0.92.2 2405546, 2018-03-11">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="956"
inkscape:window-height="567"
id="namedview6"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-13.118644"
inkscape:cy="24"
inkscape:window-x="2880"
inkscape:window-y="609"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M31 28h-1.59l-.55-.55C30.82 25.18 32 22.23 32 19c0-7.18-5.82-13-13-13S6 11.82 6 19s5.82 13 13 13c3.23 0 6.18-1.18 8.45-3.13l.55.55V31l10 9.98L40.98 38 31 28zm-12 0c-4.97 0-9-4.03-9-9s4.03-9 9-9 9 4.03 9 9-4.03 9-9 9z"
id="path2"
style="fill:#000000;fill-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

54
art/ic_search_white.svg Normal file
View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
version="1.1"
id="svg4"
sodipodi:docname="ic_search_white.svg"
inkscape:version="0.92.2 2405546, 2018-03-11">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1200"
id="namedview6"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-10.474576"
inkscape:cy="22.169492"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M31 28h-1.59l-.55-.55C30.82 25.18 32 22.23 32 19c0-7.18-5.82-13-13-13S6 11.82 6 19s5.82 13 13 13c3.23 0 6.18-1.18 8.45-3.13l.55.55V31l10 9.98L40.98 38 31 28zm-12 0c-4.97 0-9-4.03-9-9s4.03-9 9-9 9 4.03 9 9-4.03 9-9 9z"
id="path2"
style="fill:#ffffff;fill-opacity:0.99570817" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -50,5 +50,5 @@
<path
d="M24 4C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm10 27.17L31.17 34 24 26.83 16.83 34 14 31.17 21.17 24 14 16.83 16.83 14 24 21.17 31.17 14 34 16.83 26.83 24 34 31.17z"
id="path4"
style="fill:#259b24;fill-opacity:0.627451" />
style="fill:#43A047;fill-opacity:0.627451" />
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -50,5 +50,5 @@
<path
d="M24 4c-7.73 0-14 6.27-14 14 0 10.5 14 26 14 26s14-15.5 14-26c0-7.73-6.27-14-14-14zm0 19c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"
id="path4"
style="stroke:none;stroke-opacity:0;fill:#259b24;fill-opacity:0.627451" />
style="stroke:none;stroke-opacity:0;fill:#43A047;fill-opacity:0.627451" />
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -52,9 +52,9 @@
cy="24"
r="6.4"
id="circle4"
style="fill:#259b24;fill-opacity:0.627451" />
style="fill:#43A047;fill-opacity:0.627451" />
<path
d="M18 4l-3.66 4H8c-2.21 0-4 1.79-4 4v24c0 2.21 1.79 4 4 4h32c2.21 0 4-1.79 4-4V12c0-2.21-1.79-4-4-4h-6.34L30 4H18zm6 30c-5.52 0-10-4.48-10-10s4.48-10 10-10 10 4.48 10 10-4.48 10-10 10z"
id="path6"
style="fill:#259b24;fill-opacity:0.627451" />
style="fill:#43A047;fill-opacity:0.627451" />
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -51,5 +51,5 @@
<path
d="M42 38V10c0-2.21-1.79-4-4-4H10c-2.21 0-4 1.79-4 4v28c0 2.21 1.79 4 4 4h28c2.21 0 4-1.79 4-4zM17 27l5 6.01L29 24l9 12H10l7-9z"
id="path4"
style="fill:#259b24;fill-opacity:0.627451" />
style="fill:#43A047;fill-opacity:0.627451" />
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -58,7 +58,7 @@
id="grid3631" />
</sodipodi:namedview>
<path
style="fill:#259b24;fill-opacity:0.62745098;stroke:none"
style="fill:#43A047;fill-opacity:0.62745098;stroke:none"
d="M 3.887575,4.1549246 90.999747,47.676331 3.887575,91.286663 13.203552,52.344101 63.012683,47.720794 13.203552,43.008558 Z"
id="path3633"
inkscape:connector-curvature="0"

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -51,5 +51,5 @@
<path
d="M17 10.5V7c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-3.5l4 4v-11l-4 4z"
id="path4"
style="fill:#259b24;fill-opacity:0.627451" />
style="fill:#43A047;fill-opacity:0.627451" />
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -50,5 +50,5 @@
<path
d="M24 30c3.31 0 5.98-2.69 5.98-6L30 12c0-3.32-2.68-6-6-6-3.31 0-6 2.68-6 6v12c0 3.31 2.69 6 6 6zm10.6-6c0 6-5.07 10.2-10.6 10.2-5.52 0-10.6-4.2-10.6-10.2H10c0 6.83 5.44 12.47 12 13.44V44h4v-6.56c6.56-.97 12-6.61 12-13.44h-3.4z"
id="path4"
style="fill:#259b24;fill-opacity:0.627451" />
style="fill:#43A047;fill-opacity:0.627451" />
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 12 B

1
art/logo.png Symbolic link
View File

@ -0,0 +1 @@
new_logo.png

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 12 B

110
art/marker.svg Normal file
View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
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"
width="48"
height="48"
viewBox="0 0 48 48"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="marker.svg">
<metadata
id="metadata10">
<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="defs8">
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient3913"
id="radialGradient3883"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2039074,-0.09024614,0.07170697,0.16216229,-92.579229,-90.973095)"
cx="262.33273"
cy="945.23846"
fx="262.33273"
fy="945.23846"
r="185.49754" />
<linearGradient
inkscape:collect="always"
id="linearGradient3913">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3915" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop3917" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4167">
<path
inkscape:connector-curvature="0"
d="M 24,4.0000001 C 16.27,4.0000001 10,10.27 10,18 10,28.5 24,44 24,44 24,44 38,28.5 38,18 38,10.27 31.73,4.0000001 24,4.0000001 Z M 24,23 c -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 0,2.76 -2.24,5 -5,5 z"
id="path4169"
style="fill:#000000;fill-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4321">
<path
inkscape:connector-curvature="0"
d="m 24,4.0001492 c -7.73,0 -14,6.2699998 -14,14.0000008 0,10.5 14,26 14,26 0,0 14,-15.5 14,-26 C 38,10.270149 31.73,4.0001492 24,4.0001492 Z M 24,23.00015 c -2.76,0 -5,-2.24 -5,-5 0,-2.760001 2.24,-5.000001 5,-5.000001 2.76,0 5,2.24 5,5.000001 0,2.76 -2.24,5 -5,5 z"
id="path4323"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:18, 3;stroke-dashoffset:0;stroke-opacity:0.53333285" />
</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="1920"
inkscape:window-height="1010"
id="namedview6"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-15.254237"
inkscape:cy="12.20339"
inkscape:window-x="0"
inkscape:window-y="41"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<path
d="M24 4c-7.73 0-14 6.27-14 14 0 10.5 14 26 14 26s14-15.5 14-26c0-7.73-6.27-14-14-14zm0 19c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"
id="path4"
style="fill:#EF6C00;fill-opacity:1;stroke:none;stroke-opacity:0.53333336;stroke-width:1.70000002;stroke-miterlimit:4;stroke-dasharray:none" />
<path
style="display:inline;opacity:0.19211821;fill:url(#radialGradient3883);fill-opacity:1;stroke:none"
d="m 53.884912,1.7373006 c -18.322492,0 -33.173092,14.5823714 -33.173092,32.5686504 0,3.794038 0.661899,7.436601 1.877335,10.821463 1.505391,0.209531 3.044508,0.317391 4.607513,0.317391 5.584539,0 9.890238,-1.147853 14.805425,-2.934259 l 15.611481,6.295152 a 2.0568126,2.0577227 0 0 0 2.766588,-2.403594 l -4.227888,-17.09591 c 2.717518,-4.771967 3.645449,-10.205846 3.645449,-15.810885 0,-4.0761111 -0.781533,-7.9714274 -2.20495,-11.5551094 -1.217366,-0.132888 -2.454715,-0.202899 -3.707861,-0.202899 z"
id="path3878"
inkscape:connector-curvature="0"
clip-path="url(#clipPath4167)" />
<path
inkscape:connector-curvature="0"
d="M 24,4.0000003 C 16.27,4.0000003 10,10.27 10,18 10,28.5 24,44 24,44 24,44 38,28.5 38,18 38,10.27 31.73,4.0000003 24,4.0000003 Z M 24,23 c -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 0,2.76 -2.24,5 -5,5 z"
id="path4-3"
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:30,5;stroke-opacity:0.53333336;stroke-dashoffset:44"
clip-path="url(#clipPath4321)" />
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -1,156 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
sodipodi:docname="md_switch_thumb_disable_centered_square.svg"
viewBox="0 0 120 120"
height="120"
width="120"
inkscape:version="0.91 r13725"
version="1.1"
id="svg2">
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<linearGradient
inkscape:collect="always"
id="linearGradient4222">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop4224" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop4226" />
</linearGradient>
<linearGradient
id="linearGradient4179"
osb:paint="gradient">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4181" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25454545"
offset="1"
id="stop4183" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4222"
id="linearGradient4228"
x1="159.38722"
y1="19.802504"
x2="212.27522"
y2="19.802504"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-260.32215,163.27594)" />
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4230"
x="-0.012"
width="1.024"
y="-0.012"
height="1.024">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.25916904"
id="feGaussianBlur4232" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4371"
x="-0.23999999"
width="1.48"
y="-0.23999999"
height="1.48">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="5.2888"
id="feGaussianBlur4373" />
</filter>
</defs>
<sodipodi:namedview
inkscape:current-layer="layer2"
inkscape:window-maximized="1"
inkscape:window-y="0"
inkscape:window-x="1400"
inkscape:cy="61.379767"
inkscape:cx="10.572032"
inkscape:zoom="3.8530612"
showgrid="false"
id="namedview4"
inkscape:window-height="1024"
inkscape:window-width="1680"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="PNG"
style="display:none"
sodipodi:insensitive="true"
transform="translate(0,-2.5)" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="SVG"
style="display:inline"
transform="translate(0,-2.5)">
<g
id="g6404">
<circle
style="opacity:1;fill:#000404;fill-opacity:0.45531915;stroke:none;stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4371)"
id="circle4234"
cx="59.999996"
cy="66.499878"
r="26.444" />
<g
transform="translate(3.3103058e-6,0.33229253)"
id="g4148">
<circle
style="opacity:1;fill:#bdbdbd;fill-opacity:1;stroke:#bdbdbd;stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4218"
cx="59.999996"
cy="62.167587"
r="25.916904" />
<circle
r="25.916904"
cy="183.07845"
cx="-74.490921"
id="circle4220"
style="opacity:0.3;fill:none;fill-opacity:1;stroke:url(#linearGradient4228);stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4230)"
transform="matrix(0,-1,1,0,-123.07845,-12.323334)" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -1,153 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
sodipodi:docname="md_switch_thumb_off_normal_centered.svg"
viewBox="0 0 120 120"
height="120"
width="120"
inkscape:version="0.91 r13725"
version="1.1"
id="svg2">
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<linearGradient
inkscape:collect="always"
id="linearGradient4222">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop4224" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop4226" />
</linearGradient>
<linearGradient
id="linearGradient4179"
osb:paint="gradient">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4181" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25454545"
offset="1"
id="stop4183" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4222"
id="linearGradient4228"
x1="159.38722"
y1="19.802504"
x2="212.27522"
y2="19.802504"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-260.32215,163.27594)" />
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4230"
x="-0.012"
width="1.024"
y="-0.012"
height="1.024">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.25916904"
id="feGaussianBlur4232" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4371"
x="-0.23999999"
width="1.48"
y="-0.23999999"
height="1.48">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="5.2888"
id="feGaussianBlur4373" />
</filter>
</defs>
<sodipodi:namedview
inkscape:current-layer="layer2"
inkscape:window-maximized="1"
inkscape:window-y="0"
inkscape:window-x="1400"
inkscape:cy="61.379767"
inkscape:cx="10.052965"
inkscape:zoom="3.8530612"
showgrid="false"
id="namedview4"
inkscape:window-height="1024"
inkscape:window-width="1680"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="PNG"
style="display:none"
sodipodi:insensitive="true"
transform="translate(0,-2.5)" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="SVG"
style="display:inline"
transform="translate(0,-2.5)">
<circle
r="26.444"
cy="66.5"
cx="59.999996"
id="circle4234"
style="opacity:1;fill:#000404;fill-opacity:0.45531915;stroke:none;stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4371)" />
<g
id="g6390"
transform="translate(3.3103058e-6,-0.91758577)">
<circle
r="25.916904"
cy="63.417587"
cx="59.999996"
id="path4218"
style="opacity:1;fill:#fafafa;fill-opacity:1;stroke:#fafafa;stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
transform="matrix(0,-1,1,0,-123.07845,-11.073334)"
style="opacity:0.3;fill:none;fill-opacity:1;stroke:url(#linearGradient4228);stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4230)"
id="circle4220"
cx="-74.490921"
cy="183.07845"
r="25.916904" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -1,159 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
sodipodi:docname="md_switch_thumb_off_pressed_centered.svg"
viewBox="0 0 120 120"
height="120"
width="120"
inkscape:version="0.91 r13725"
version="1.1"
id="svg2">
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<linearGradient
inkscape:collect="always"
id="linearGradient4222">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop4224" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop4226" />
</linearGradient>
<linearGradient
id="linearGradient4179"
osb:paint="gradient">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4181" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25454545"
offset="1"
id="stop4183" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4222"
id="linearGradient4228"
x1="159.38722"
y1="19.802504"
x2="212.27522"
y2="19.802504"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-260.32215,163.27594)" />
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4230"
x="-0.012"
width="1.024"
y="-0.012"
height="1.024">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.25916904"
id="feGaussianBlur4232" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4371"
x="-0.23999999"
width="1.48"
y="-0.23999999"
height="1.48">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="5.2888"
id="feGaussianBlur4373" />
</filter>
</defs>
<sodipodi:namedview
inkscape:current-layer="layer2"
inkscape:window-maximized="1"
inkscape:window-y="0"
inkscape:window-x="1400"
inkscape:cy="61.379767"
inkscape:cx="10.572032"
inkscape:zoom="3.8530612"
showgrid="false"
id="namedview4"
inkscape:window-height="1024"
inkscape:window-width="1680"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="PNG"
style="display:none"
sodipodi:insensitive="true"
transform="translate(0,-2.5)" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="SVG"
style="display:inline"
transform="translate(0,-2.5)">
<circle
style="opacity:1;fill:#313131;fill-opacity:0.10196078;fill-rule:nonzero;stroke:none;stroke-width:1.00100005;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.10196078"
id="path4819"
cx="60"
cy="62.5"
r="60" />
<circle
r="26.444"
cy="66.5"
cx="59.999996"
id="circle4234"
style="opacity:1;fill:#000404;fill-opacity:0.45531915;stroke:none;stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4371)" />
<g
id="g6417"
transform="translate(3.3103058e-6,-0.91758577)">
<circle
r="25.916904"
cy="63.417587"
cx="59.999996"
id="path4218"
style="opacity:1;fill:#fafafa;fill-opacity:1;stroke:#fafafa;stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
transform="matrix(0,-1,1,0,-123.07845,-11.073334)"
style="opacity:0.3;fill:none;fill-opacity:1;stroke:url(#linearGradient4228);stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4230)"
id="circle4220"
cx="-74.490921"
cy="183.07845"
r="25.916904" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -1,146 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
sodipodi:docname="md_switch_thumb_on_normal_centered_square.svg"
viewBox="0 0 120 120"
height="120"
width="120"
inkscape:version="0.91 r13725"
version="1.1"
id="svg2">
<metadata
id="metadata8">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<linearGradient
inkscape:collect="always"
id="linearGradient4222">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop4224" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop4226" />
</linearGradient>
<linearGradient
id="linearGradient4179"
osb:paint="gradient">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4181" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25454545"
offset="1"
id="stop4183" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4222"
id="linearGradient4228"
x1="159.38722"
y1="19.802504"
x2="212.27522"
y2="19.802504"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-260.32215,163.27594)" />
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4230"
x="-0.012"
width="1.024"
y="-0.012"
height="1.024">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.25916904"
id="feGaussianBlur4232" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4371"
x="-0.23999999"
width="1.48"
y="-0.23999999"
height="1.48">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="5.2888"
id="feGaussianBlur4373" />
</filter>
</defs>
<sodipodi:namedview
inkscape:current-layer="layer2"
inkscape:window-maximized="1"
inkscape:window-y="0"
inkscape:window-x="1400"
inkscape:cy="61.379767"
inkscape:cx="-14.397519"
inkscape:zoom="3.8530612"
showgrid="false"
id="namedview4"
inkscape:window-height="1024"
inkscape:window-width="1680"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="SVG"
style="display:inline"
transform="translate(0,-2.5)">
<circle
r="26.444"
cy="66.499878"
cx="59.999996"
id="circle4234"
style="opacity:1;fill:#000404;fill-opacity:0.45531915;stroke:none;stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4371)" />
<g
id="g6440"
transform="translate(3.3103058e-6,0.33241423)">
<circle
r="25.916904"
cy="62.167587"
cx="59.999996"
id="path4218"
style="opacity:1;fill:#0091ea;fill-opacity:1;stroke:#0091ea;stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
transform="matrix(0,-1,1,0,-123.07845,-12.323334)"
style="opacity:0.3;fill:none;fill-opacity:1;stroke:url(#linearGradient4228);stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4230)"
id="circle4220"
cx="-74.490921"
cy="183.07845"
r="25.916904" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -1,162 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
sodipodi:docname="md_switch_thumb_on_pressed_centered_square.svg"
viewBox="0 0 120 120"
height="120"
width="120"
inkscape:version="0.91 r13725"
version="1.1"
id="svg2">
<metadata
id="metadata8">
<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="defs6">
<linearGradient
inkscape:collect="always"
id="linearGradient4222">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop4224" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="1"
id="stop4226" />
</linearGradient>
<linearGradient
id="linearGradient4179"
osb:paint="gradient">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop4181" />
<stop
style="stop-color:#ffffff;stop-opacity:0.25454545"
offset="1"
id="stop4183" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4222"
id="linearGradient4228"
x1="159.38722"
y1="19.802504"
x2="212.27522"
y2="19.802504"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-260.32215,163.27594)" />
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4230"
x="-0.012"
width="1.024"
y="-0.012"
height="1.024">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="0.25916904"
id="feGaussianBlur4232" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4371"
x="-0.23999999"
width="1.48"
y="-0.23999999"
height="1.48">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="5.2888"
id="feGaussianBlur4373" />
</filter>
</defs>
<sodipodi:namedview
inkscape:current-layer="layer2"
inkscape:window-maximized="1"
inkscape:window-y="0"
inkscape:window-x="1400"
inkscape:cy="61.379767"
inkscape:cx="-46.31369"
inkscape:zoom="3.8530612"
showgrid="false"
id="namedview4"
inkscape:window-height="1024"
inkscape:window-width="1680"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="PNG"
style="display:none"
sodipodi:insensitive="true"
transform="translate(0,-2.5)" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="SVG"
style="display:inline"
transform="translate(0,-2.5)">
<circle
style="opacity:1;fill:#0093e8;fill-opacity:0.10196078;fill-rule:nonzero;stroke:none;stroke-width:1.00100005;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.10196078"
id="path4819"
cx="60"
cy="62.5"
r="60" />
<g
id="g4156">
<circle
style="opacity:1;fill:#000404;fill-opacity:0.45531915;stroke:none;stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4371)"
id="circle4234"
cx="59.999996"
cy="66.5"
r="26.444" />
<g
transform="translate(3.3103058e-6,0.33241423)"
id="g4149">
<circle
style="opacity:1;fill:#0091ea;fill-opacity:1;stroke:#0091ea;stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path4218"
cx="59.999996"
cy="62.167587"
r="25.916904" />
<circle
r="25.916904"
cy="183.07845"
cx="-74.490921"
id="circle4220"
style="opacity:0.3;fill:none;fill-opacity:1;stroke:url(#linearGradient4228);stroke-width:1.05419147;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4230)"
transform="matrix(0,-1,1,0,-123.07845,-12.323334)" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -140,7 +140,7 @@
transform="translate(0,-2)">
<g
id="g3759"
style="fill:#4b9b4a;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
style="fill:#FF9800;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
<path
style="display:none"
d="m 8,6 c 2,2 4,6 4,10 L 16,6 z"

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -140,7 +140,7 @@
transform="translate(0,-2)">
<g
id="g3759"
style="fill:#326130;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
style="fill:#BF360C;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
<path
style="display:none"
d="m 8,6 c 2,2 4,6 4,10 L 16,6 z"

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -140,9 +140,9 @@
transform="translate(0,-2)">
<g
id="g3759"
style="fill:#424242;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
style="fill:#282828;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
<path
style="display:none;fill:#424242;fill-opacity:1"
style="display:none;fill:#282828;fill-opacity:1"
d="m 8,6 c 2,2 4,6 4,10 L 16,6 z"
id="path3805"
inkscape:connector-curvature="0"
@ -153,7 +153,7 @@
id="path2989"
d="M 4,4 16,16 16,4 z"
sodipodi:nodetypes="cccc"
style="fill:#424242;fill-opacity:1" />
style="fill:#282828;fill-opacity:1" />
<rect
ry="2"
y="4"
@ -161,7 +161,7 @@
height="20"
width="20"
id="rect2987"
style="fill:#424242;fill-opacity:1" />
style="fill:#282828;fill-opacity:1" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -140,7 +140,7 @@
transform="translate(0,-2)">
<g
id="g3759"
style="fill:#c64545;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
style="fill:#ad4545;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
<path
style="display:none"
d="m 8,6 c 2,2 4,6 4,10 L 16,6 z"

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -140,9 +140,9 @@
transform="translate(0,-2)">
<g
id="g3759"
style="fill:#424242;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
style="fill:#282828;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
<path
style="display:none;fill:#424242;fill-opacity:1"
style="display:none;fill:#282828;fill-opacity:1"
d="M 28,18 C 26,16 24,12 24,8 l -4,10 z"
id="path3809"
inkscape:connector-curvature="0"
@ -153,7 +153,7 @@
id="path2989"
d="m 20,12 0,12 12,0 z"
sodipodi:nodetypes="cccc"
style="fill:#424242;fill-opacity:1" />
style="fill:#282828;fill-opacity:1" />
<rect
ry="2"
y="4"
@ -161,7 +161,7 @@
height="20"
width="20"
id="rect2987"
style="fill:#424242;fill-opacity:1" />
style="fill:#282828;fill-opacity:1" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
art/new_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
art/new_logo_round.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

55
art/open_pdf_black.svg Normal file
View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="24"
height="24"
viewBox="0 0 24 24"
id="svg4"
sodipodi:docname="open_pdf_black.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="956"
inkscape:window-height="1560"
id="namedview6"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-6.1016949"
inkscape:cy="12"
inkscape:window-x="4800"
inkscape:window-y="18"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M12,10.5H13V13.5H12V10.5M7,11.5H8V10.5H7V11.5M20,6V18A2,2 0 0,1 18,20H6A2,2 0 0,1 4,18V6A2,2 0 0,1 6,4H18A2,2 0 0,1 20,6M9.5,10.5A1.5,1.5 0 0,0 8,9H5.5V15H7V13H8A1.5,1.5 0 0,0 9.5,11.5V10.5M14.5,10.5A1.5,1.5 0 0,0 13,9H10.5V15H13A1.5,1.5 0 0,0 14.5,13.5V10.5M18.5,9H15.5V15H17V13H18.5V11.5H17V10.5H18.5V9Z"
id="path2"
style="fill:#000000;fill-opacity:0.5411765" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

55
art/open_pdf_white.svg Normal file
View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="24"
height="24"
viewBox="0 0 24 24"
id="svg4"
sodipodi:docname="open_pdf_white.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata10">
<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="defs8" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="3840"
inkscape:window-height="1600"
id="namedview6"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="-23.084746"
inkscape:cy="11.084746"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" />
<path
d="M12,10.5H13V13.5H12V10.5M7,11.5H8V10.5H7V11.5M20,6V18A2,2 0 0,1 18,20H6A2,2 0 0,1 4,18V6A2,2 0 0,1 6,4H18A2,2 0 0,1 20,6M9.5,10.5A1.5,1.5 0 0,0 8,9H5.5V15H7V13H8A1.5,1.5 0 0,0 9.5,11.5V10.5M14.5,10.5A1.5,1.5 0 0,0 13,9H10.5V15H13A1.5,1.5 0 0,0 14.5,13.5V10.5M18.5,9H15.5V15H17V13H18.5V11.5H17V10.5H18.5V9Z"
id="path2"
style="fill:#ffffff;fill-opacity:0.69803923" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -64,5 +64,5 @@
d="M11.5 9H13v6h-1.5zM9 9H6c-.6 0-1 .5-1 1v4c0 .5.4 1 1 1h3c.6 0 1-.5 1-1v-2H8.5v1.5h-2v-3H10V10c0-.5-.4-1-1-1zm10 1.5V9h-4.5v6H16v-2h2v-1.5h-2v-1z"
clip-path="url(#b)"
id="path10"
style="fill:#ffffff;fill-opacity:0.7019608" />
style="fill:#000000;fill-opacity:0.54" />
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

68
art/play_gif_white.svg Normal file
View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
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"
width="24"
height="24"
viewBox="0 0 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="play_gif.svg">
<metadata
id="metadata14">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1200"
id="namedview12"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="1.5762712"
inkscape:cy="11.084746"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<defs
id="defs4">
<path
id="a"
d="M24 24H0V0h24v24z" />
</defs>
<clipPath
id="b">
<use
xlink:href="#a"
overflow="visible"
id="use8" />
</clipPath>
<path
d="M11.5 9H13v6h-1.5zM9 9H6c-.6 0-1 .5-1 1v4c0 .5.4 1 1 1h3c.6 0 1-.5 1-1v-2H8.5v1.5h-2v-3H10V10c0-.5-.4-1-1-1zm10 1.5V9h-4.5v6H16v-2h2v-1.5h-2v-1z"
clip-path="url(#b)"
id="path10"
style="fill:#ffffff;fill-opacity:0.70" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -55,5 +55,5 @@
<path
d="M20 33l12-9-12-9v18zm4-29C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm0 36c-8.82 0-16-7.18-16-16S15.18 8 24 8s16 7.18 16 16-7.18 16-16 16z"
id="path6"
style="fill:#ffffff;fill-opacity:0.7019608;opacity:1;stroke:none;stroke-opacity:0.38039216" />
style="fill:#000000;fill-opacity:0.54;opacity:1;stroke:none;stroke-opacity:0.38039216" />
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

59
art/play_video_white.svg Normal file
View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="48"
height="48"
viewBox="0 0 48 48"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="play_video.svg">
<metadata
id="metadata12">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs10" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1916"
inkscape:window-height="1156"
id="namedview8"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="0.91525424"
inkscape:cy="24"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<path
d="M0 0h48v48H0z"
fill="none"
id="path4" />
<path
d="M20 33l12-9-12-9v18zm4-29C12.95 4 4 12.95 4 24s8.95 20 20 20 20-8.95 20-20S35.05 4 24 4zm0 36c-8.82 0-16-7.18-16-16S15.18 8 24 8s16 7.18 16 16-7.18 16-16 16z"
id="path6"
style="fill:#ffffff;fill-opacity:0.70;opacity:1;stroke:none;stroke-opacity:0.38039216" />
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

48
art/qrcode-scan.svg Normal file
View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="24"
height="24"
viewBox="0 0 24.00 24.00"
enable-background="new 0 0 24.00 24.00"
xml:space="preserve"
id="svg4"
sodipodi:docname="qrcode-scan.svg"
inkscape:version="0.92.2 5c3e80d, 2017-08-06"><metadata
id="metadata10"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs8" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="636"
inkscape:window-height="1156"
id="namedview6"
showgrid="false"
inkscape:zoom="9.8333333"
inkscape:cx="0.50847458"
inkscape:cy="12"
inkscape:window-x="3200"
inkscape:window-y="20"
inkscape:window-maximized="0"
inkscape:current-layer="svg4" /><path
fill="#000000"
fill-opacity="1"
stroke-width="0.2"
stroke-linejoin="miter"
d="M 4,4L 10,4L 10,10L 4,10L 4,4 Z M 20,4.00003L 20,10L 14,10L 14,4.00003L 20,4.00003 Z M 14,15L 16,15L 16,13L 14,13L 14,11L 16,11L 16,13L 18,13L 18,11L 20,11L 20,13L 18,13L 18,15L 20,15L 20,18L 18,18L 18,20L 16,20L 16,18L 13,18L 13,20L 11,20L 11,16L 14,16L 14,15 Z M 16,15L 16,18L 18,18L 18,15L 16,15 Z M 3.99999,20L 3.99999,14L 9.99999,14L 9.99999,20L 3.99999,20 Z M 5.99999,6.00003L 5.99999,8.00003L 7.99999,8.00003L 7.99999,6.00003L 5.99999,6.00003 Z M 16,6.00002L 16,8.00003L 18,8.00003L 18,6.00002L 16,6.00002 Z M 5.99999,16L 5.99999,18L 7.99999,18L 7.99999,16L 5.99999,16 Z M 4,11L 6,11L 6,13L 4,13L 4,11 Z M 8.99999,11L 13,11L 13,15L 11,15L 11,13L 8.99999,13L 8.99999,11 Z M 11,6.00002L 13,6.00002L 13,10L 11,10L 11,6.00002 Z M 2,2L 2,6L 0,6L 0,2C 0,0.9 0.900001,0 2,0L 6,0L 6,2L 2,2 Z M 22,1.90735e-006C 23.1,1.90735e-006 24,0.900002 24,2L 24,6L 22,6L 22,2L 18,2L 18,1.90735e-006L 22,1.90735e-006 Z M 2,18L 2,22L 6,22L 6,24L 2,24C 0.900001,24 0,23.1 0,22L 0,18L 2,18 Z M 22,22L 22,18L 24,18L 24,22C 24,23.1 23.1,24 22,24L 18,24L 18,22L 22,22 Z "
id="path2"
style="fill:#ffffff;fill-opacity:1" /></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

366
art/quicksy.svg Normal file
View File

@ -0,0 +1,366 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="20.68mm"
height="20.68mm"
viewBox="0 0 20.680001 20.680001"
version="1.1"
id="svg14750"
inkscape:version="0.92.2 2405546, 2018-03-11"
sodipodi:docname="quicksy.svg"
inkscape:export-filename="/home/smagnan/Work/osp/osp.cloud/osp.work.quicksy/package-quicksy/quicksy.png"
inkscape:export-xdpi="175"
inkscape:export-ydpi="175">
<defs
id="defs14744">
<inkscape:path-effect
effect="spiro"
id="path-effect963"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect937"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect893"
is_visible="true" />
<inkscape:path-effect
is_visible="true"
id="path-effect998"
effect="spiro" />
<inkscape:path-effect
is_visible="true"
id="path-effect890"
effect="spiro" />
<inkscape:path-effect
effect="spiro"
id="path-effect852"
is_visible="true" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6910-2">
<path
inkscape:connector-curvature="0"
id="path6912-1"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6906-8">
<path
inkscape:connector-curvature="0"
id="path6908-0"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6902-3">
<path
inkscape:connector-curvature="0"
id="path6904-6"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6898-8">
<path
inkscape:connector-curvature="0"
id="path6900-9"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6894-1">
<path
inkscape:connector-curvature="0"
id="path6896-2"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6886-7">
<path
inkscape:connector-curvature="0"
id="path6888-5"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6882-4">
<path
inkscape:connector-curvature="0"
id="path6884-7"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6890-4">
<path
inkscape:connector-curvature="0"
id="path6892-8"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6898-8-8">
<path
inkscape:connector-curvature="0"
id="path6900-9-1"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6886-7-2">
<path
inkscape:connector-curvature="0"
id="path6888-5-8"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6882-4-9">
<path
inkscape:connector-curvature="0"
id="path6884-7-3"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6906-8-6">
<path
inkscape:connector-curvature="0"
id="path6908-0-8"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6910-2-0">
<path
inkscape:connector-curvature="0"
id="path6912-1-2"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6890-4-1">
<path
inkscape:connector-curvature="0"
id="path6892-8-0"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6894-1-5">
<path
inkscape:connector-curvature="0"
id="path6896-2-1"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6902-3-1">
<path
inkscape:connector-curvature="0"
id="path6904-6-0"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="7.9195959"
inkscape:cx="24.499812"
inkscape:cy="6.9964144"
inkscape:document-units="mm"
inkscape:current-layer="g14606"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="3836"
inkscape:window-height="1561"
inkscape:window-x="1920"
inkscape:window-y="18"
inkscape:window-maximized="0"
showguides="true"
inkscape:guide-bbox="true"
borderlayer="false"
inkscape:pagecheckerboard="true">
<sodipodi:guide
position="51.630255,101.26165"
orientation="0,1"
id="guide949"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata14747">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-94.210196,-206.61407)">
<g
style="display:inline"
id="g14606"
transform="matrix(0.28222223,0,0,0.28222223,-479.00124,-301.93764)">
<g
id="g925"
transform="translate(1.2646334,0.03223108)">
<g
style="stroke-width:2.7252984"
transform="matrix(0.3669323,0,0,0.3669323,1317.8763,1202.38)"
id="g980">
<path
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:10.90119457;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 2039.9944,1634.1834 a 95.889395,95.889395 0 0 0 -95.8886,95.8887 95.889395,95.889395 0 0 0 95.8886,95.8906 95.889395,95.889395 0 0 0 42.7051,-10.0781 l 0.127,0.014 40.7929,15.832 c 3.2548,1.2632 7.5363,3.047 10.4551,0.2735 2.8333,-2.6923 2.1681,-5.4222 1.1875,-9.4121 l -11.3476,-46.168 v -0.01 0.01 a 95.889395,95.889395 0 0 0 11.9707,-46.3516 95.889395,95.889395 0 0 0 -95.8907,-95.8886 z"
id="path964"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04530895"
d="m 2052.7212,1719.2884 a 11.53697,11.53697 0 0 1 -11.537,11.537 11.53697,11.53697 0 0 1 -11.537,-11.537 11.53697,11.53697 0 0 1 11.537,-11.5369 11.53697,11.53697 0 0 1 11.537,11.5369 z"
id="path984" />
<path
id="path986"
d="m 2103.4386,1719.2885 a 11.53697,11.53697 0 0 1 -11.537,11.5369 11.53697,11.53697 0 0 1 -11.537,-11.5369 11.53697,11.53697 0 0 1 11.537,-11.537 11.53697,11.53697 0 0 1 11.537,11.537 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04530895"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccsc"
inkscape:connector-curvature="0"
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04530895"
d="m 2116.3676,1755.8129 c -12.7133,-0.329 -30.4545,38.6902 -29.8052,0.9297 0,-10.306 7.0406,-18.6606 15.7253,-18.6606 5.0651,0 14.5453,5.3309 14.0799,17.7309 z"
id="path988" />
<path
inkscape:connector-curvature="0"
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04530895"
d="m 1979.1343,1719.2885 a 11.53697,11.53697 0 0 0 11.537,11.5369 11.53697,11.53697 0 0 0 11.537,-11.5369 11.53697,11.53697 0 0 0 -11.537,-11.537 11.53697,11.53697 0 0 0 -11.537,11.537 z"
id="path990" />
<path
inkscape:original-d="m 2078.1216,1783.9664 c -8.7484,6.6613 -24.7952,13.3613 -37.8714,14.0385 -13.0762,0.6772 -23.1816,-4.6682 -36.5745,-13.8341 14.8965,10.484 19.8658,4.8954 20.9617,-7.412 0.5479,-6.1535 -1.1267,-25.0806 -0.2829,-28.2596 0.8437,-3.179 7.7475,-7.5824 16.8934,-7.5141 9.1459,0.068 15.9436,5.0338 16.6438,8.0452 0.7002,3.0115 -1.1553,21.0416 -0.7571,27.5128 0.7964,12.9425 5.5911,18.8599 20.987,7.4233 z"
inkscape:path-effect="#path-effect998"
sodipodi:nodetypes="cscsssssc"
inkscape:connector-curvature="0"
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04530907"
d="m 2078.1216,1783.9664 c -10.3552,9.0701 -24.1062,14.1675 -37.8714,14.0385 -13.3074,-0.1247 -26.5157,-5.1207 -36.5745,-13.8341 3.5313,2.5325 8.318,3.2125 12.415,1.7639 4.0969,-1.4487 7.3922,-4.9865 8.5467,-9.1759 0.6367,-2.3105 0.6496,-4.7548 0.375,-7.1357 -0.2746,-2.3808 -0.8297,-4.7188 -1.3173,-7.0653 -0.4876,-2.3465 -0.91,-4.7222 -0.9131,-7.1188 -0,-2.3967 0.4318,-4.832 1.5725,-6.9398 1.5437,-2.8524 4.3008,-4.9253 7.329,-6.087 3.0281,-1.1617 6.3215,-1.4775 9.5644,-1.4271 3.2431,0.05 6.5253,0.4683 9.5154,1.7251 2.9901,1.2569 5.68,3.418 7.1284,6.3201 1.0414,2.0866 1.4036,4.4624 1.3534,6.7939 -0.05,2.3314 -0.4967,4.6354 -1.0019,6.912 -0.5053,2.2766 -1.0719,4.5449 -1.3688,6.8579 -0.297,2.313 -0.3181,4.6899 0.2602,6.949 1.0858,4.2417 4.3854,7.8502 8.5132,9.3103 4.1278,1.46 8.9625,0.7286 12.4738,-1.887 z"
id="path996" />
<path
id="path1002"
d="m 1966.202,1755.8129 c 12.7133,-0.329 30.4544,38.6902 29.8051,0.9297 0,-10.306 -7.0405,-18.6606 -15.7252,-18.6606 -5.0651,0 -14.5453,5.3309 -14.0799,17.7309 z"
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04530895"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccsc" />
</g>
<g
style="stroke-width:0.84566534"
transform="matrix(1.1825009,0,0,1.1825009,-382.86422,-389.99169)"
id="g904">
<path
style="display:inline;opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.72006631px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6910-2-0)"
d="m 145.16406,11.183594 -5.13232,9.649402 c -0.77924,1.465076 -0.65974,2.41396 0.66876,3.18097 9.66686,5.488467 18.12303,12.874168 24.86104,21.711122 1.05534,1.616079 2.08054,1.713076 3.67763,0.571565 L 178.04883,40 C 169.45271,27.990203 158.19857,18.128379 145.16406,11.183594 Z"
id="path966"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccscc"
transform="matrix(0.3108988,0,0,0.3108988,2040.1832,1853.6283)" />
<path
style="display:inline;opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.72006631px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6906-8-6)"
d="m 193.80469,75.615234 -9.62713,2.062751 c -2.66266,0.570512 -3.40763,1.172953 -2.90593,3.917433 0.85823,4.714633 1.30424,9.497137 1.33189,14.293254 -0.028,5.578758 -0.62194,11.137108 -1.77093,16.589918 -0.86591,3.23162 0.13682,3.77092 3.16149,4.58138 l 8.98639,2.30136 c 1.98177,-7.66828 3.00584,-15.55255 3.04883,-23.472658 -0.0187,-6.817681 -0.76446,-13.613926 -2.22461,-20.273438 z"
id="path968"
inkscape:connector-curvature="0"
sodipodi:nodetypes="csccccccc"
transform="matrix(0.3108988,0,0,0.3108988,2040.1832,1853.6283)" />
<path
style="display:inline;opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.72006631px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6902-3-1)"
d="m 14.264281,102.76512 -10.2076406,0.87943 c 1.2093798,14.83154 5.8540346,29.17808 13.5664056,41.90429 l 8.544301,-5.23239 c 2.394983,-1.46665 1.895406,-3.37834 0.986202,-5.04513 -5.118253,-9.40257 -8.359018,-19.71635 -9.536202,-30.36553 0,-2.09418 -1.881577,-2.26744 -3.353066,-2.14067 z"
id="path970"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sccsccs"
transform="matrix(0.3108988,0,0,0.3108988,2040.1832,1853.6283)" />
<path
style="display:inline;opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.72006631px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6898-8-8)"
d="m 51.504371,166.60235 -5.82273,8.50898 c 12.710503,8.71282 27.333669,14.23394 42.630859,16.0957 l 1.220329,-9.90843 c 0.355066,-2.88295 -1.085712,-3.52946 -3.332252,-3.90256 -10.402329,-1.73697 -20.373956,-5.45322 -29.373754,-10.94516 -1.647505,-1.06744 -3.639993,-2.30718 -5.322452,0.15147 z"
id="path972"
inkscape:connector-curvature="0"
sodipodi:nodetypes="sccsccs"
transform="matrix(0.3108988,0,0,0.3108988,2040.1832,1853.6283)" />
<path
style="display:inline;opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.72006631px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6894-1-5)"
d="M 32.208984,27.683594 C 21.779177,38.079001 13.883707,50.736882 9.1347656,64.675781 L 19.33617,68.090365 c 1.658147,0.55501 2.832564,-0.120955 3.374272,-1.591979 3.777598,-10.021698 9.470788,-19.210103 16.759132,-27.052307 1.561136,-1.561136 1.567283,-2.960058 0.447507,-4.076606 z"
id="path974"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccsccsc"
transform="matrix(0.3108988,0,0,0.3108988,2040.1832,1853.6283)" />
<path
style="display:inline;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.72006631px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6886-7-2)"
d="m 138.72416,168.48439 c -4.17634,2.25458 -8.55959,4.09055 -13.0504,5.63418 -1.00363,0.34498 -1.20742,1.18222 -0.8682,2.27372 l 3.44056,11.0706 c 4.92985,-1.53124 9.72799,-3.45808 14.34766,-5.76172 l 0.12695,0.0137 14.0293,5.44532 4.12174,-10.20577 c 0.7548,-1.86894 -0.0184,-2.7016 -1.59462,-3.31324 l -14.72114,-5.71251 c -1.86679,-0.7244 -3.68834,-0.60144 -5.83185,0.55572 z"
id="path976"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cssccccsssc"
transform="matrix(0.3108988,0,0,0.3108988,2040.1832,1853.6283)" />
<path
style="display:inline;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.72006631px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6882-4-9)"
d="m 186.53125,152.80469 -10.6386,2.70888 c -0.78879,0.20085 -1.67397,1.02386 -1.35494,2.33801 l 9.75918,40.15428 c 8.56713,5.97538 15.30408,3.06731 11.01563,-9.47266 z"
id="path978"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cssccc"
transform="matrix(0.3108988,0,0,0.3108988,2040.1832,1853.6283)" />
<path
style="display:inline;opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2.72006631px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
clip-path="url(#clipPath6890-4-1)"
d="M 99.888672,-0.25 C 87.701045,-0.2239408 75.630114,2.1252837 64.322266,6.671875 l 3.530435,8.74898 c 1.063314,2.635062 1.616754,3.526314 4.973913,2.352259 8.692057,-3.031338 17.839027,-4.588849 27.062058,-4.599286 5.555828,0 6.486278,0.350026 6.780788,-3.4460223 l 0.74851,-9.64772758 C 104.9135,-0.12857239 102.40179,-0.23868346 99.888672,-0.25 Z"
id="path994"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccsccscc"
transform="matrix(0.3108988,0,0,0.3108988,2040.0741,1853.6334)" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 28 KiB

1
art/quicksy_main_logo.svg Symbolic link
View File

@ -0,0 +1 @@
quicksy.svg

181
art/quicksy_mono.svg Normal file
View File

@ -0,0 +1,181 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="21.637424mm"
height="21.637424mm"
viewBox="0 0 21.637424 21.637426"
version="1.1"
id="svg14750"
inkscape:version="0.92.2 2405546, 2018-03-11"
sodipodi:docname="quicksy_mono.svg"
inkscape:export-filename="/home/smagnan/Work/osp/osp.cloud/osp.work.quicksy/package-quicksy/quicksy-adaptative.png"
inkscape:export-xdpi="175"
inkscape:export-ydpi="175">
<defs
id="defs14744">
<inkscape:path-effect
effect="spiro"
id="path-effect963"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect937"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect893"
is_visible="true" />
<inkscape:path-effect
is_visible="true"
id="path-effect998"
effect="spiro" />
<inkscape:path-effect
is_visible="true"
id="path-effect890"
effect="spiro" />
<inkscape:path-effect
effect="spiro"
id="path-effect852"
is_visible="true" />
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6910-2">
<path
inkscape:connector-curvature="0"
id="path6912-1"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6906-8">
<path
inkscape:connector-curvature="0"
id="path6908-0"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6902-3">
<path
inkscape:connector-curvature="0"
id="path6904-6"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6898-8">
<path
inkscape:connector-curvature="0"
id="path6900-9"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6894-1">
<path
inkscape:connector-curvature="0"
id="path6896-2"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6886-7">
<path
inkscape:connector-curvature="0"
id="path6888-5"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6882-4">
<path
inkscape:connector-curvature="0"
id="path6884-7"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath6890-4">
<path
inkscape:connector-curvature="0"
id="path6892-8"
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 v -0.008 l 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="3.959798"
inkscape:cx="-19.000081"
inkscape:cy="39.577553"
inkscape:document-units="mm"
inkscape:current-layer="g14606"
showgrid="false"
fit-margin-top="0.5"
fit-margin-left="0.87888"
fit-margin-right="0.87888"
fit-margin-bottom="0.5"
inkscape:window-width="1916"
inkscape:window-height="1561"
inkscape:window-x="3840"
inkscape:window-y="18"
inkscape:window-maximized="0"
showguides="true"
inkscape:guide-bbox="true"
units="mm"
inkscape:pagecheckerboard="true">
<sodipodi:guide
position="-11.854979,103.32866"
orientation="0,1"
id="guide949"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata14747">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-157.69546,-207.72366)">
<g
style="display:inline"
id="g14606"
transform="matrix(0.28222223,0,0,0.28222223,-479.00124,-301.93764)">
<path
inkscape:connector-curvature="0"
id="path982"
d="m 2294.3053,1807.6581 a 35.179682,35.179682 0 0 0 -35.1793,35.1795 35.179682,35.179682 0 0 0 35.1793,35.1801 35.179682,35.179682 0 0 0 15.6671,-3.6974 l 0.047,0.016 14.9657,5.8081 c 1.1941,0.4634 2.765,1.1176 3.8357,0.1008 1.0396,-0.9878 0.7952,-1.9892 0.4353,-3.453 l -4.1628,-16.9381 a 35.179682,35.179682 0 0 0 4.3919,-17.0051 35.179682,35.179682 0 0 0 -35.18,-35.1796 z m -18.0955,26.9906 a 4.2326574,4.2326574 0 0 1 4.2322,4.2329 4.2326574,4.2326574 0 0 1 -4.2322,4.232 4.2326574,4.2326574 0 0 1 -4.2329,-4.232 4.2326574,4.2326574 0 0 1 4.2329,-4.2329 z m 18.5316,0 a 4.2326574,4.2326574 0 0 1 4.2327,4.2329 4.2326574,4.2326574 0 0 1 -4.2327,4.232 4.2326574,4.2326574 0 0 1 -4.2323,-4.232 4.2326574,4.2326574 0 0 1 4.2323,-4.2329 z m 18.6074,0 a 4.2326574,4.2326574 0 0 1 4.2327,4.2329 4.2326574,4.2326574 0 0 1 -4.2327,4.232 4.2326574,4.2326574 0 0 1 -4.2329,-4.232 4.2326574,4.2326574 0 0 1 4.2329,-4.2329 z m -40.9506,11.1272 c 3.1862,0 5.7692,3.0658 5.7692,6.8468 0.2382,13.8535 -6.2709,-0.4619 -10.9352,-0.3413 -0.1706,-4.5493 3.3077,-6.5055 5.166,-6.5055 z m 44.7609,0 c 1.8583,0 5.3366,1.9562 5.166,6.5055 -4.6643,-0.1203 -11.1734,14.1948 -10.9352,0.3413 0,-3.781 2.583,-6.8468 5.7692,-6.8468 z m -22.3942,1.0655 c 1.1897,0.018 2.3941,0.1717 3.4912,0.6327 1.0971,0.4611 2.0838,1.2544 2.6152,2.3191 0.3821,0.7655 0.5149,1.6369 0.4964,2.4922 -0.018,0.8553 -0.1822,1.7007 -0.3674,2.5359 -0.1854,0.8354 -0.3936,1.6673 -0.5026,2.5159 -0.1089,0.8485 -0.117,1.7206 0.096,2.5493 0.3984,1.5562 1.6087,2.8803 3.1231,3.416 1.5145,0.5358 3.2879,0.267 4.5762,-0.6926 -3.7992,3.3277 -8.8442,5.1979 -13.8944,5.1504 -4.8822,-0.046 -9.7276,-1.8785 -13.418,-5.0752 1.2957,0.9292 3.0515,1.1785 4.5546,0.647 1.5032,-0.5315 2.7124,-1.8292 3.1358,-3.3664 0.2337,-0.8475 0.2386,-1.7442 0.1381,-2.6177 -0.1007,-0.8736 -0.3048,-1.731 -0.4837,-2.5918 -0.1787,-0.8609 -0.3339,-1.7326 -0.3352,-2.6118 0,-0.8794 0.1593,-1.7727 0.5772,-2.546 0.5662,-1.0466 1.578,-1.8075 2.6889,-2.2337 1.1111,-0.4262 2.319,-0.5419 3.5089,-0.5233 z"
style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4.00000048;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

1
art/quicksy_splash_logo.svg Symbolic link
View File

@ -0,0 +1 @@
quicksy.svg

View File

@ -11,12 +11,23 @@ resolutions = {
}
images = {
'ic_launcher.svg' => ['ic_launcher', 48],
'main_logo.svg' => ['main_logo', 200],
'play_video.svg' => ['play_video', 128],
'play_gif.svg' => ['play_gif', 128],
'conversations_mono.svg' => ['ic_notification', 24],
'ic_received_indicator.svg' => ['ic_received_indicator', 12],
'main_logo.svg' => ['conversations/main_logo', 200],
'quicksy_main_logo.svg' => ['quicksy/main_logo', 200],
'splash_logo.svg' => ['conversations/splash_logo', 144],
'quicksy_splash_logo.svg' => ['quicksy/splash_logo', 144],
'ic_search_black.svg' => ['ic_search_background_black', 144],
'ic_search_white.svg' => ['ic_search_background_white', 144],
'ic_no_results_white.svg' => ['ic_no_results_background_white', 144],
'ic_no_results_black.svg' => ['ic_no_results_background_black', 144],
'play_video_white.svg' => ['play_video_white', 128],
'play_gif_white.svg' => ['play_gif_white', 128],
'play_video_black.svg' => ['play_video_black', 128],
'play_gif_black.svg' => ['play_gif_black', 128],
'open_pdf_black.svg' => ['open_pdf_black', 128],
'open_pdf_white.svg' => ['open_pdf_white', 128],
'conversations_mono.svg' => ['conversations/ic_notification', 24],
'quicksy_mono.svg' => ['quicksy/ic_notification', 24],
'flip_camera_android-black-24dp.svg' => ['ic_flip_camera_android_black_24dp', 24],
'ic_send_text_offline.svg' => ['ic_send_text_offline', 36],
'ic_send_text_offline_white.svg' => ['ic_send_text_offline_white', 36],
'ic_send_text_online.svg' => ['ic_send_text_online', 36],
@ -57,11 +68,7 @@ images = {
'ic_notifications_paused_white80.svg' => ['ic_notifications_paused_white80', 24],
'ic_notifications_white80.svg' => ['ic_notifications_white80', 24],
'ic_verified_fingerprint.svg' => ['ic_verified_fingerprint', 36],
'md_switch_thumb_disable.svg' => ['switch_thumb_disable', 48],
'md_switch_thumb_off_normal.svg' => ['switch_thumb_off_normal', 48],
'md_switch_thumb_off_pressed.svg' => ['switch_thumb_off_pressed', 48],
'md_switch_thumb_on_normal.svg' => ['switch_thumb_on_normal', 48],
'md_switch_thumb_on_pressed.svg' => ['switch_thumb_on_pressed', 48],
'qrcode-scan.svg' => ['ic_qr_code_scan_white_24dp', 24],
'message_bubble_received.svg' => ['message_bubble_received.9', 0],
'message_bubble_received_grey.svg' => ['message_bubble_received_grey.9', 0],
'message_bubble_received_dark.svg' => ['message_bubble_received_dark.9', 0],
@ -71,13 +78,14 @@ images = {
'message_bubble_sent_grey.svg' => ['message_bubble_sent_grey.9', 0],
'date_bubble_white.svg' => ['date_bubble_white.9', 0],
'date_bubble_grey.svg' => ['date_bubble_grey.9', 0],
'marker.svg' => ['marker', 0]
}
# Executable paths for Mac OSX
# "/Applications/Inkscape.app/Contents/Resources/bin/inkscape"
inkscape = "inkscape"
imagemagick = "convert"
imagemagick = "magick"
def execute_cmd(cmd)
puts cmd
@ -104,8 +112,14 @@ images.each do |source_filename, settings|
height = factor * base_height
end
path = "../src/main/res/drawable-#{resolution}/#{output_filename}.png"
execute_cmd "#{inkscape} -f #{source_filename} -z -C -w #{width} -h #{height} -e #{path}"
output_parts = output_filename.split('/')
if output_parts.count != 2
path = "../src/main/res/drawable-#{resolution}/#{output_filename}.png"
else
path = "../src/#{output_parts[0]}/res/drawable-#{resolution}/#{output_parts[1]}.png"
end
execute_cmd "#{inkscape} #{source_filename} -C -w #{width} -h #{height} -o #{path}"
top = []
right = []
@ -141,7 +155,7 @@ images.each do |source_filename, settings|
execute_cmd "#{imagemagick} -background none PNG32:#{path} -gravity center -extent #{width+2}x#{height+2} PNG32:#{path}"
draw_format = "-draw \"rectangle %d,%d %d,%d\""
draw_format = "-draw \"line %d,%d %d,%d\""
top_line = draw_format % [top.min + 1, 0, top.max, 0]
right_line = draw_format % [width + 1, right.min + 1, width + 1, right.max]
bottom_line = draw_format % [bottom.min + 1, height + 1, bottom.max, height + 1]

1
art/splash_logo.svg Symbolic link
View File

@ -0,0 +1 @@
ic_launcher.svg

View File

@ -3,82 +3,113 @@
buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.android.tools.build:gradle:7.0.3'
}
}
apply plugin: 'com.android.application'
repositories {
jcenter()
google()
mavenCentral()
maven {
url 'https://maven.google.com'
}
maven {
url "https://jitpack.io"
}
jcenter()
}
configurations {
playstoreImplementation
freeImplementation
}
ext {
supportLibVersion = '27.0.2'
compatImplementation
conversationsFreeCompatImplementation
conversationsPlaystoreCompatImplementation
conversationsPlaystoreSystemImplementation
quicksyPlaystoreCompatImplementation
quicksyPlaystoreSystemImplementation
quicksyFreeCompatImplementation
quicksyImplementation
}
dependencies {
implementation project(':libs:MemorizingTrustManager')
implementation project(':libs:EnhancedListView')
playstoreImplementation 'com.google.android.gms:play-services-gcm:11.8.0'
implementation 'androidx.viewpager:viewpager:1.0.0'
playstoreImplementation('com.google.firebase:firebase-messaging:22.0.0') {
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'
}
conversationsPlaystoreCompatImplementation("com.android.installreferrer:installreferrer:2.2")
conversationsPlaystoreSystemImplementation("com.android.installreferrer:installreferrer:2.2")
quicksyPlaystoreCompatImplementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
quicksyPlaystoreSystemImplementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
implementation 'org.sufficientlysecure:openpgp-api:10.0'
implementation 'com.soundcloud.android:android-crop:1.0.1@aar'
implementation "com.android.support:support-v13:$supportLibVersion"
implementation "com.android.support:appcompat-v7:$supportLibVersion"
implementation "com.android.support:support-emoji:$supportLibVersion"
freeImplementation "com.android.support:support-emoji-bundled:$supportLibVersion"
implementation 'org.bouncycastle:bcmail-jdk15on:1.58'
implementation 'org.jitsi:org.otr4j:0.22'
implementation 'org.gnu.inet:libidn:1.15'
implementation 'com.google.zxing:core:3.3.0'
implementation 'com.google.zxing:android-integration:3.3.0'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.exifinterface:exifinterface:1.3.3'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'androidx.emoji:emoji:1.1.0'
implementation 'com.google.android.material:material:1.4.0'
compatImplementation 'androidx.emoji:emoji-appcompat:1.1.0'
conversationsFreeCompatImplementation 'androidx.emoji:emoji-bundled:1.1.0'
quicksyFreeCompatImplementation 'androidx.emoji:emoji-bundled:1.1.0'
implementation 'org.bouncycastle:bcmail-jdk15on:1.64'
//zxing stopped supporting Java 7 so we have to stick with 3.3.3
//https://github.com/zxing/zxing/issues/1170
implementation 'com.google.zxing:core:3.3.3'
implementation 'de.measite.minidns:minidns-hla:0.2.4'
implementation 'me.leolin:ShortcutBadger:1.1.21@aar'
implementation 'com.kyleduo.switchbutton:library:1.2.8'
implementation 'me.leolin:ShortcutBadger:1.1.22@aar'
implementation 'org.whispersystems:signal-protocol-java:2.6.2'
implementation 'com.makeramen:roundedimageview:2.3.0'
implementation "com.wefika:flowlayout:0.4.1"
implementation 'net.ypresto.androidtranscoder:android-transcoder:0.2.0'
implementation 'com.github.scottyab:showhidepasswordedittext:0.8'
implementation 'com.otaliastudios:transcoder:0.10.4'
implementation 'org.jxmpp:jxmpp-jid:1.0.2'
implementation 'org.osmdroid:osmdroid-android:6.1.10'
implementation 'org.hsluv:hsluv:0.2'
implementation 'org.conscrypt:conscrypt-android:2.5.2'
implementation 'me.drakeet.support:toastcompat:1.1.0'
implementation "com.leinardi.android:speed-dial:3.2.0"
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
implementation "com.squareup.okhttp3:okhttp:4.9.2"
implementation 'com.google.guava:guava:30.1.1-android'
quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.12.36'
// implementation fileTree(include: ['libwebrtc-m92.aar'], dir: 'libs')
implementation 'org.webrtc:google-webrtc:1.0.32006'
}
ext {
travisBuild = System.getenv("TRAVIS") == "true"
preDexEnabled = System.getProperty("pre-dex", "true")
abiCodes = ['armeabi-v7a': 1, 'x86': 2, 'x86_64': 3, 'arm64-v8a': 4]
}
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
compileSdkVersion 29
defaultConfig {
minSdkVersion 14
targetSdkVersion 25
versionCode 252
versionName "1.23.5"
minSdkVersion 21
targetSdkVersion 29
versionCode 4202301
versionName "2.10.2"
archivesBaseName += "-$versionName"
applicationId "eu.siacs.conversations"
applicationId "eu.sum7.conversations"
resValue "string", "applicationId", applicationId
def appName = "Conv6ations"
resValue "string", "app_name", appName
buildConfigField "String", "APP_NAME", "\"$appName\"";
}
dexOptions {
// Skip pre-dexing when running on Travis CI or when disabled via -Dpre-dex=false.
preDexLibraries = preDexEnabled && !travisBuild
jumboMode true
configurations {
implementation.exclude group: 'org.jetbrains' , module:'annotations'
}
dataBinding {
enabled true
}
compileOptions {
@ -86,15 +117,97 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
flavorDimensions("distribution")
flavorDimensions("mode", "distribution", "emoji")
productFlavors {
quicksy {
dimension "mode"
applicationId = "im.quicksy.client"
resValue "string", "applicationId", applicationId
def appName = "Quicksy"
resValue "string", "app_name", appName
buildConfigField "String", "APP_NAME", "\"$appName\"";
}
conversations {
dimension "mode"
}
playstore {
dimension "distribution"
}
free {
dimension "distribution"
}
system {
dimension "emoji"
}
compat {
dimension "emoji"
}
}
sourceSets {
quicksyFreeSystem {
java {
srcDir 'src/quicksyFree/java'
}
}
quicksyFreeCompat {
java {
srcDir 'src/freeCompat/java'
srcDir 'src/quicksyFree/java'
}
}
quicksyPlaystoreCompat {
java {
srcDir 'src/playstoreCompat/java'
srcDir 'src/quicksyPlaystore/java'
}
res {
srcDir 'src/playstoreCompat/res'
srcDir 'src/quicksyPlaystore/res'
}
}
quicksyPlaystoreSystem {
java {
srcDir 'src/quicksyPlaystore/java'
}
res {
srcDir 'src/quicksyPlaystore/res'
}
}
conversationsFreeCompat {
java {
srcDir 'src/freeCompat/java'
srcDir 'src/conversationsFree/java'
}
}
conversationsFreeSystem {
java {
srcDir 'src/conversationsFree/java'
}
}
conversationsPlaystoreCompat {
java {
srcDir 'src/playstoreCompat/java'
srcDir 'src/conversationsPlaystore/java'
}
res {
srcDir 'src/playstoreCompat/res'
srcDir 'src/conversationsPlaystore/res'
}
}
conversationsPlaystoreSystem {
java {
srcDir 'src/conversationsPlaystore/java'
}
res {
srcDir 'src/conversationsPlaystore/res'
}
}
}
buildTypes {
@ -111,8 +224,7 @@ android {
}
if(new File("signing.properties").exists()) {
if (new File("signing.properties").exists()) {
Properties props = new Properties()
props.load(new FileInputStream(file("signing.properties")))
@ -128,7 +240,8 @@ android {
}
lintOptions {
disable 'MissingTranslation', 'InvalidPackage', 'MissingQuantity', 'AppCompatResource'
disable 'MissingTranslation', 'InvalidPackage', 'AppCompatResource'
abortOnError false
}
subprojects {

472
conversations.doap Normal file
View File

@ -0,0 +1,472 @@
<?xml version="1.0"?>
<?xml-stylesheet href="../style.xsl" type="text/xsl"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<Project xmlns="http://usefulinc.com/ns/doap#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:xmpp="https://linkmauve.fr/ns/xmpp-doap#"
xmlns:schema="https://schema.org/">
<name>Conversations</name>
<created>2014-01-14</created>
<shortdesc xml:lang="en">Android XMPP Client</shortdesc>
<description xml:lang="en">Conversations is an open source XMPP/Jabber client for the Android platform</description>
<homepage rdf:resource="https://conversations.im/"/>
<download-page rdf:resource="https://play.google.com/store/apps/details?id=eu.siacs.conversations"/>
<bug-database rdf:resource="https://github.com/iNPUTmice/Conversations/issues"/>
<!-- See https://github.com/ewilderj/doap/issues/53 -->
<developer-forum rdf:resource="xmpp:conversations@siacs.conference.eu?join"/>
<support-forum rdf:resource="xmpp:conversations@siacs.conference.eu?join"/>
<license rdf:resource="https://github.com/iNPUTmice/Conversations/blob/master/LICENSE"/>
<!-- See https://github.com/ewilderj/doap/issues/49 -->
<language>en</language>
<schema:logo rdf:resource="https://raw.githubusercontent.com/iNPUTmice/Conversations/master/art/ic_launcher.svg"/>
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/01.png'/>
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/02.png'/>
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/03.png'/>
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/04.png'/>
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/05.png'/>
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/06.png'/>
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/07.png'/>
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/08.png'/>
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/09.png'/>
<programming-language>Java</programming-language>
<os>Android</os>
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-xmpp"/>
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-jabber"/>
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-client"/>
<maintainer>
<foaf:Person>
<foaf:name>Daniel Gultsch</foaf:name>
<foaf:homepage rdf:resource="https://gultsch.de/"/>
</foaf:Person>
</maintainer>
<repository>
<GitRepository>
<browse rdf:resource="https://github.com/iNPUTmice/Conversations"/>
<location rdf:resource="https://github.com/iNPUTmice/Conversations.git"/>
</GitRepository>
</repository>
<implements rdf:resource="https://xmpp.org/rfcs/rfc6120.html"/>
<implements rdf:resource="https://xmpp.org/rfcs/rfc6121.html"/>
<implements rdf:resource="https://xmpp.org/rfcs/rfc6122.html"/>
<implements rdf:resource="https://xmpp.org/rfcs/rfc7590.html"/>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0027.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.4</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0030.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>2.5rc3</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0045.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.32.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0049.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.2</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0054.html"/>
<xmpp:status>partial</xmpp:status>
<xmpp:version>1.2</xmpp:version>
<xmpp:note xml:lang='en'>Avatars only</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0084.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.1.3</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0085.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>2.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0092.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0115.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.5.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0153.html"/>
<xmpp:status>partial</xmpp:status>
<xmpp:version>1.1</xmpp:version>
<xmpp:note xml:lang='en'>Read only. Publication via XEP-0398</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0163.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.2.1</xmpp:version>
<xmpp:note>Avatar, Nick, OMEMO</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0166.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.1.2</xmpp:version>
<xmpp:note>File transfer + A/V calls</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0167.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.2.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0172.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.1</xmpp:version>
<xmpp:note>read only</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0176.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0184.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.4.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0191.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.3</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0198.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.6</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>2.0.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>2.0.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0215.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.7</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0223.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0234.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.19.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0237.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.3</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0245.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0249.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.2</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0260.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0.3</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0261.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0280.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.13.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0293.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0294.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0308.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.2.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0313.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.6.3</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0319.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0.2</xmpp:version>
<xmpp:note>opt-in</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0320.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0333.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.3</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0338.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0339.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0352.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.3.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0353.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.3.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0357.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.4.0</xmpp:version>
<xmpp:note>Only available in the version distributed over Google Play</xmpp:note>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0363.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0368.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.1.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0377.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.2</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0384.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.3.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0391.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.1.2</xmpp:version>
<xmpp:since>2.5.8</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0392.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.6.0</xmpp:version>
<xmpp:since>2.3.1</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0393.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.1.4</xmpp:version>
<xmpp:since>1.22.0</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0396.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.1</xmpp:version>
<xmpp:since>2.5.8</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0398.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.2.1</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0410.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>1.0.1</xmpp:version>
<xmpp:since>2.5.4</xmpp:since>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0411.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.2.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<implements>
<xmpp:SupportedXep>
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0454.html"/>
<xmpp:status>complete</xmpp:status>
<xmpp:version>0.1.0</xmpp:version>
</xmpp:SupportedXep>
</implements>
<release>
<Version>
<revision>2.9.13</revision>
<created>2021-05-03</created>
<file-release rdf:resource="https://github.com/iNPUTmice/Conversations/archive/2.9.13.tar.gz"/>
</Version>
</release>
</Project>
</rdf:RDF>

View File

@ -1,25 +0,0 @@
Conversations is a messenger for the next decade. Based on already established
internet standards that have been around for over ten years Conversations isnt
trying to replace current commercial messengers. It will simply outlive them.
Commercial, closed source products are coming and going. 15 years ago we had ICQ
which was replaced by Skype. MySpace was replaced by Facebook. WhatsApp and
Hangouts will disappear soon. Internet standards however stick around. People
are still using IRC and e-mail even though these protocols have been around for
decades. Utilizing proven standards doesnt mean one can not evolve. GMail has
revolutionized the way we look at e-mail. Firefox and Chrome have changed the
way we use the Web. Conversations will change the way we look at instant
messaging. Being less obtrusive than a telephone call instant messaging has
always played an important role in modern society. Conversations will show that
instant messaging can be fast, reliable and private. Conversations will not
force its security and privacy aspects upon the user. For those willing to use
encryption Conversations will make it as uncomplicated as possible. However
Conversations is aware that end-to-end encryption by the very principle isnt
trivial. Instead of trying the impossible and making encryption easier than
comparing a fingerprint Conversations will try to educate the willing user and
explain the necessary steps and the reasons behind them. Those unwilling to
learn about encryption will still be protected by the design principals of
Conversations. Conversations will simply not share or generate certain
information for example by encouraging the use of federated servers.
Conversations will always utilize the best available standards for encryption
and media encoding instead of reinventing the wheel. However it isnt afraid to
break with behavior patterns that have been proven ineffective.

View File

@ -1,32 +0,0 @@
* XEP-0027: Current Jabber OpenPGP Usage
* XEP-0030: Service Discovery
* XEP-0045: Multi-User Chat
* XEP-0048: Bookmarks
* XEP-0084: User Avatar
* XEP-0085: Chat State Notifications
* XEP-0092: Software Version
* XEP-0115: Entity Capabilities
* XEP-0163: Personal Eventing Protocol (avatars and nicks)
* XEP-0166: Jingle (only used for file transfer)
* XEP-0172: User Nickname
* XEP-0184: Message Delivery Receipts (reply only)
* XEP-0191: Blocking command
* XEP-0198: Stream Management
* XEP-0199: XMPP Ping
* XEP-0234: Jingle File Transfer
* XEP-0237: Roster Versioning
* XEP-0245: The /me Command
* XEP-0249: Direct MUC Invitations (receiving only)
* XEP-0260: Jingle SOCKS5 Bytestreams Transport Method
* XEP-0261: Jingle In-Band Bytestreams Transport Method
* XEP-0280: Message Carbons
* XEP-0308: Last Message Correction
* XEP-0313: Message Archive Management
* XEP-0319: Last User Interaction in Presence
* XEP-0333: Chat Markers
* XEP-0352: Client State Indication
* XEP-0357: Push Notifications
* XEP-0363: HTTP File Upload
* XEP-0368: SRV records for XMPP over TLS
* XEP-0377: Spam Reporting
* XEP-0384: OMEMO Encryption

View File

@ -1,97 +0,0 @@
Observations on implementing XMPP
=================================
After spending the last two and a half month basically writing my own XMPP
library from scratch I decided to share some of the observations I made in the
process. In part this article can be seen as a response to a blog post made by
Dr. Ing. Georg Lukas. The blog post introduces a couple of XEP (XMPP Extensions)
which make the life on mobile devices a lot easier but states that they are
currently very few implementations of those XEPs. So I went ahead and
implemented all of them in my Android XMPP client.
### General observations
The first thing I noticed is that XMPP is actually okish designed. If you were
to design a new chat protocol today you probably wouldnt choose XML again
however the protocol basically consists of only three different packages which
are quickly hidden under some sort of abstraction layer within your library.
Getting from zero to sending messages to other users actually was very simple
and straight forward. But then came the XEPs.
### Multi-User Chat
The first one was XEP-0045 Multi-User Chat. This is the one XEP of the XEPs Im
going to mention in my article which is actually wildly adopted. Most clients
and servers I know of support MUC. However the level of completeness varies.
MUC actually introduces access and permission roles which are far more complex
than what some of us are used to from IRC but a lot of clients just dont
implement them. Im not implementing them myself (at least for now) because I
somewhat doubt that someone would actually use them (however this might be some
sort of chicken or egg problem). I did find some strange bugs though which might
be interesting for other library developers. In theory a MUC server
implementation can allow a single user (same jid) to join a conference room
multiple times with the same nick from different clients. This means if someone
wants to participate in a conference from two different devices (mobile and
desktop for example) one wouldnt have to name oneself `userDesktop` and
`userMobile` but just `user`. Both ejabberd and prosody support this but with
strange side effects. Prosody for example doesnt allow a user to change its
name once two clients are “merged” by having the same nick.
### Carbons and Stream Management
Two of the other XEPs Lukas mentions — Carbons (XEP-0280) and Stream Management
(XEP-0198) — were actually fairly easy to implement. The only challenges were to
find a server to support them (I ended up running my own Prosody server) and a
desktop client to test them with. For carbons there is a patched Mcabber version
and Gajim. After implementing stream management I had very good results on my
mobile device. I had sessions running for up to 24 hours with a walking outside,
loosing mobile coverage for a few minutes and so on. The only limitation was
that I had to keep on developing and reinstalling my app.
### Off the record
And then came OTR... This is were I spend the most time debugging stuff and
trying to get things right and compatible with other clients. This is the part
were I want to help other developers not to make the same mistakes and maybe
come to some sort of consent among XMPP developers to ultimately increase the
interoperability. OTR has some down sides which make it difficult or at times
even dangerous to implement within XMPP. First of all it is a synchronous
protocol which is tunneled through a different protocol (XMPP). Synchronous
means — among other things — auto replies. (An OTR session begins with “hi Im
speaking otr give me your key” “ok cool here is my key”) And auto replies — we
know that since the first time an out of office auto responder went postal — are
dangerous. Things really start to get messy when you use one of the best
features of XMPP — multiple clients. The way XMPP works is that clients are
encouraged to send their messages to the raw jid and let the server decide what
full jid the messages are routed to. If in doubt even all of them. So what
happens when Alice sends a start-otr-message to Bobs raw jid? Bob receives the
message on his notebook as well as his cell phone. Both of them answer. Alice
gets two different replies. Shit explodes. Even if Alice sends the message to
bob/notebook chances are that Bob has carbon messages enabled and still receives
the messages on both devices. Now assuming that Bobs client is clever enough not
to auto reply to carbonated messages Bob/cellphone will still end up with a lot
of garbage messages. (Essentially the entire conversation between Alice and
Bob/notebook but unreadable of course) Therefor it should be good practice to
tag OTR messages as both private and no-copy (private is part of the carbons
XEP, no-copy is a general hint). I found that prosody for some reasons doesnt
honor the private tag on outgoing messages. While this is easily fixed I presume
that having both the private and the no-copy tag will make it more compatible
with servers or clients I dont know about yet.
#### Rules to follow when implementing OTR
To summarize my observations on implementing OTR in XMPP let me make the
following three statements.
1. While it is good practice for unencrypted messages to be send to the raw jid
and have the receiving server or user decide how they should be routed OTR
messages must be send to a specific resource. To make this work the user should
be given the option to select the presence (which can be assisted with some
educated guessing by the client based on previous messages). Furthermore a
client should encourage a user to choose meaningful presences instead of the
clients name or even random ones. Something like `/mobile`, `/notebook`,
`/desktop` is a greater assist to any one who wants to start an otr session then
`/Gajim`, `/mcabber` or `/pidgin`.
2. Messages should be tagged private and no-copy to avoid unnecessary traffic or
otr error loops with faulty clients. This tagging should be done even if your
own client doesnt support carbons.
3. When dealing with “legacy clients” — meaning clients which dont follow my
advise — a client should be extra careful not to create message loops. This
means to not respond with otr errors if a client is not 100% sure it is the only
client which received the message

View File

@ -1 +1,3 @@
org.gradle.jvmargs=-Xmx2048M
android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx4096m

View File

@ -1,5 +1,6 @@
#Sat Nov 14 09:59:55 CET 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip

View File

@ -1,98 +0,0 @@
apply plugin: 'com.android.library'
repositories {
mavenCentral()
google()
}
dependencies {
compile 'com.android.support:support-v4:27.0.2'
compile 'com.nineoldandroids:library:2.4.0'
}
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 25
versionName "0.3.4"
versionCode 9
}
lintOptions {
abortOnError false
}
}
apply plugin: 'maven'
apply plugin: 'signing'
version = android.defaultConfig.versionName
group = "de.timroes.android"
if(project.hasProperty("EnhancedListView.properties") && new File(project.property("EnhancedListView.properties")).exists()) {
Properties props = new Properties()
props.load(new FileInputStream(file(project.property("EnhancedListView.properties"))))
gradle.taskGraph.whenReady { taskGraph ->
if (taskGraph.allTasks.any { it instanceof Sign }) {
allprojects { ext."signing.keyId" = props['signing.keyId'] }
allprojects { ext."signing.secretKeyRingFile" = props['signing.secretKeyRingFile'] }
allprojects { ext."signing.password" = props['signing.password'] }
}
}
signing {
required { has("release") && gradle.taskGraph.hasTask("uploadArchives") }
sign configurations.archives
}
uploadArchives {
configuration = configurations.archives
repositories.mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
repository(url: props['sonatypeRepo']) {
authentication(userName: props['sonatypeUsername'], password: props['sonatypePassword'])
}
pom.project {
name 'EnhancedListView'
packaging 'aar'
description 'ListView with enhanced features for Android'
url 'https://github.com/timroes/EnhancedListView'
scm {
url 'scm:git@github.com:timroes/EnhancedListView.git'
connection 'scm:git@github.com:timroes/EnhancedListView.git'
developerConnection 'scm:git@github.com:timroes/EnhancedListView.git'
}
licenses {
license {
name 'The Apache Software License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
distribution 'repo'
}
}
developers {
developer {
id 'timroes'
name 'Tim Roes'
email 'mail@timroes.de'
}
}
}
}
}
}

View File

@ -1,6 +0,0 @@
<manifest package="de.timroes.android.listview">
<application>
</application>
</manifest>

View File

@ -1,969 +0,0 @@
/*
* Copyright 2012 - 2013 Roman Nurik, Jake Wharton, Tim Roes
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.timroes.android.listview;
import android.content.Context;
import android.graphics.Rect;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.widget.AbsListView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;
import com.nineoldandroids.animation.Animator;
import com.nineoldandroids.animation.AnimatorListenerAdapter;
import com.nineoldandroids.animation.ValueAnimator;
import com.nineoldandroids.view.ViewHelper;
import com.nineoldandroids.view.ViewPropertyAnimator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
/**
* A {@link android.widget.ListView} offering enhanced features like Swipe To Dismiss and an
* undo functionality. See the documentation on GitHub for more information.
*
* @author Tim Roes <mail@timroes.de>
*/
public class EnhancedListView extends ListView {
/**
* Defines the style in which <i>undos</i> should be displayed and handled in the list.
* Pass this to {@link #setUndoStyle(de.timroes.android.listview.EnhancedListView.UndoStyle)}
* to change the default behavior from {@link #SINGLE_POPUP}.
*/
public enum UndoStyle {
/**
* Shows a popup window, that allows the user to undo the last
* dismiss. If another element is deleted, the undo popup will undo that deletion.
* The user is only able to undo the last deletion.
*/
SINGLE_POPUP,
/**
* Shows a popup window, that allows the user to undo the last dismiss.
* If another item is deleted, this will be added to the chain of undos. So pressing
* undo will undo the last deletion, pressing it again will undo the deletion before that,
* and so on. As soon as the popup vanished (e.g. because {@link #setUndoHideDelay(int) autoHideDelay}
* is over) all saved undos will be discarded.
*/
MULTILEVEL_POPUP,
/**
* Shows a popup window, that allows the user to undo the last dismisses.
* If another item is deleted, while there is still an undo popup visible, the label
* of the button changes to <i>Undo all</i> and a press on the button, will discard
* all stored undos. As soon as the popup vanished (e.g. because {@link #setUndoHideDelay(int) autoHideDelay}
* is over) all saved undos will be discarded.
*/
COLLAPSED_POPUP
}
/**
* Defines the direction in which list items can be swiped out to delete them.
* Use {@link #setSwipeDirection(de.timroes.android.listview.EnhancedListView.SwipeDirection)}
* to change the default behavior.
* <p>
* <b>Note:</b> This method requires the <i>Swipe to Dismiss</i> feature enabled. Use
* {@link #enableSwipeToDismiss()}
* to enable the feature.
*/
public enum SwipeDirection {
/**
* The user can swipe each item into both directions (left and right) to delete it.
*/
BOTH,
/**
* The user can only swipe the items to the beginning of the item to
* delete it. The start of an item is in Left-To-Right languages the left
* side and in Right-To-Left languages the right side. Before API level
* 17 this is always the left side.
*/
START,
/**
* The user can only swipe the items to the end of the item to delete it.
* This is in Left-To-Right languages the right side in Right-To-Left
* languages the left side. Before API level 17 this will always be the
* right side.
*/
END
}
/**
* The callback interface used by {@link #setShouldSwipeCallback(EnhancedListView.OnShouldSwipeCallback)}
* to inform its client that a list item is going to be swiped and check whether is
* should or not. Implement this to prevent some items from be swiped.
*/
public interface OnShouldSwipeCallback {
/**
* Called when the user is swiping an item from the list.
* <p>
* If the user should get the possibility to swipe the item, return true.
* Otherwise, return false to disable swiping for this item.
*
* @param listView The {@link EnhancedListView} the item is wiping from.
* @param position The position of the item to swipe in your adapter.
* @return Whether the item should be swiped or not.
*/
boolean onShouldSwipe(EnhancedListView listView, int position);
}
/**
* The callback interface used by {@link #setDismissCallback(EnhancedListView.OnDismissCallback)}
* to inform its client about a successful dismissal of one or more list item positions.
* Implement this to remove items from your adapter, that has been swiped from the list.
*/
public interface OnDismissCallback {
/**
* Called when the user has deleted an item from the list. The item has been deleted from
* the {@code listView} at {@code position}. Delete this item from your adapter.
* <p>
* Don't return from this method, before your item has been deleted from the adapter, meaning
* if you delete the item in another thread, you have to make sure, you don't return from
* this method, before the item has been deleted. Since the way how you delete your item
* depends on your data and adapter, the {@link de.timroes.android.listview.EnhancedListView}
* cannot handle that synchronizing for you. If you return from this method before you removed
* the view from the adapter, you will most likely get errors like exceptions and flashing
* items in the list.
* <p>
* If the user should get the possibility to undo this deletion, return an implementation
* of {@link de.timroes.android.listview.EnhancedListView.Undoable} from this method.
* If you return {@code null} no undo will be possible. You are free to return an {@code Undoable}
* for some items, and {@code null} for others, though it might be a horrible user experience.
*
* @param listView The {@link EnhancedListView} the item has been deleted from.
* @param position The position of the item to delete from your adapter.
* @return An {@link de.timroes.android.listview.EnhancedListView.Undoable}, if you want
* to give the user the possibility to undo the deletion.
*/
Undoable onDismiss(EnhancedListView listView, int position);
}
/**
* Extend this abstract class and return it from
* {@link EnhancedListView.OnDismissCallback#onDismiss(EnhancedListView, int)}
* to let the user undo the deletion you've done with your {@link EnhancedListView.OnDismissCallback}.
* You have at least to implement the {@link #undo()} method, and can override {@link #discard()}
* and {@link #getTitle()} to offer more functionality. See the README file for example implementations.
*/
public abstract static class Undoable {
/**
* This method must undo the deletion you've done in
* {@link EnhancedListView.OnDismissCallback#onDismiss(EnhancedListView, int)} and reinsert
* the element into the adapter.
* <p>
* In the most implementations, you will only remove the list item from your adapter
* in the {@code onDismiss} method and delete it from the database (or your permanent
* storage) in {@link #discard()}. In that case you only need to reinsert the item
* to the adapter.
*/
public abstract void undo();
/**
* Returns the individual undo message for this undo. This will be displayed in the undo
* window, beside the undo button. The default implementation returns {@code null},
* what will lead in a default message to be displayed in the undo window.
* Don't call the super method, when overriding this method.
*
* @return The title for a special string.
*/
public String getTitle() {
return null;
}
/**
* Discard the undo, meaning the user has no longer the possibility to undo the deletion.
* Implement this, to finally delete your stuff from permanent storages like databases
* (whereas in {@link de.timroes.android.listview.EnhancedListView.OnDismissCallback#onKeyDown(int, android.view.KeyEvent)}
* you should only remove it from the list adapter).
*/
public void discard() { }
}
private class PendingDismissData implements Comparable<PendingDismissData> {
public int position;
/**
* The view that should get swiped out.
*/
public View view;
/**
* The whole list item view.
*/
public View childView;
PendingDismissData(int position, View view, View childView) {
this.position = position;
this.view = view;
this.childView = childView;
}
@Override
public int compareTo(PendingDismissData other) {
// Sort by descending position
return other.position - position;
}
}
private class UndoClickListener implements OnClickListener {
/**
* Called when a view has been clicked.
*
* @param v The view that was clicked.
*/
@Override
public void onClick(View v) {
if(!mUndoActions.isEmpty()) {
switch(mUndoStyle) {
case SINGLE_POPUP:
mUndoActions.get(0).undo();
mUndoActions.clear();
break;
case COLLAPSED_POPUP:
Collections.reverse(mUndoActions);
for(Undoable undo : mUndoActions) {
undo.undo();
}
mUndoActions.clear();
break;
case MULTILEVEL_POPUP:
mUndoActions.get(mUndoActions.size() - 1).undo();
mUndoActions.remove(mUndoActions.size() - 1);
break;
}
}
// Dismiss dialog or change text
if(mUndoActions.isEmpty()) {
if(mUndoPopup.isShowing()) {
mUndoPopup.dismiss();
}
} else {
changePopupText();
changeButtonLabel();
}
mValidDelayedMsgId++;
}
}
private class HideUndoPopupHandler extends Handler {
/**
* Subclasses must implement this to receive messages.
*/
@Override
public void handleMessage(Message msg) {
if(msg.what == mValidDelayedMsgId) {
discardUndo();
}
}
}
// Cached ViewConfiguration and system-wide constant values
private float mSlop;
private int mMinFlingVelocity;
private int mMaxFlingVelocity;
private long mAnimationTime;
private final Object[] mAnimationLock = new Object[0];
// Swipe-To-Dismiss
private boolean mSwipeEnabled;
private OnDismissCallback mDismissCallback;
private OnShouldSwipeCallback mShouldSwipeCallback;
private UndoStyle mUndoStyle = UndoStyle.SINGLE_POPUP;
private boolean mTouchBeforeAutoHide = true;
private SwipeDirection mSwipeDirection = SwipeDirection.BOTH;
private int mUndoHideDelay = 5000;
private int mSwipingLayout;
private List<Undoable> mUndoActions = new ArrayList<Undoable>();
private SortedSet<PendingDismissData> mPendingDismisses = new TreeSet<PendingDismissData>();
private List<View> mAnimatedViews = new LinkedList<View>();
private int mDismissAnimationRefCount;
private boolean mSwipePaused;
private boolean mSwiping;
private int mViewWidth = 1; // 1 and not 0 to prevent dividing by zero
private View mSwipeDownView;
private View mSwipeDownChild;
private TextView mUndoPopupTextView;
private VelocityTracker mVelocityTracker;
private float mDownX;
private int mDownPosition;
private float mScreenDensity;
private PopupWindow mUndoPopup;
private int mValidDelayedMsgId;
private Handler mHideUndoHandler = new HideUndoPopupHandler();
private Button mUndoButton;
// END Swipe-To-Dismiss
/**
* {@inheritDoc}
*/
public EnhancedListView(Context context) {
super(context);
init(context);
}
/**
* {@inheritDoc}
*/
public EnhancedListView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
/**
* {@inheritDoc}
*/
public EnhancedListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
private void init(Context ctx) {
if(isInEditMode()) {
// Skip initializing when in edit mode (IDE preview).
return;
}
ViewConfiguration vc =ViewConfiguration.get(ctx);
mSlop = getResources().getDimension(R.dimen.elv_touch_slop);
mMinFlingVelocity = vc.getScaledMinimumFlingVelocity();
mMaxFlingVelocity = vc.getScaledMaximumFlingVelocity();
mAnimationTime = ctx.getResources().getInteger(
android.R.integer.config_shortAnimTime);
// Initialize undo popup
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View undoView = inflater.inflate(R.layout.elv_undo_popup, null);
mUndoButton = (Button)undoView.findViewById(R.id.undo);
mUndoButton.setOnClickListener(new UndoClickListener());
mUndoButton.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// If the user touches the screen invalidate the current running delay by incrementing
// the valid message id. So this delay won't hide the undo popup anymore
mValidDelayedMsgId++;
return false;
}
});
mUndoPopupTextView = (TextView)undoView.findViewById(R.id.text);
mUndoPopup = new PopupWindow(undoView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, false);
mUndoPopup.setAnimationStyle(R.style.elv_fade_animation);
mScreenDensity = getResources().getDisplayMetrics().density;
// END initialize undo popup
setOnScrollListener(makeScrollListener());
}
/**
* Enables the <i>Swipe to Dismiss</i> feature for this list. This allows users to swipe out
* an list item element to delete it from the list. Every time the user swipes out an element
* {@link de.timroes.android.listview.EnhancedListView.OnDismissCallback#onDismiss(EnhancedListView, int)}
* of the given {@link de.timroes.android.listview.EnhancedListView} will be called. To enable
* <i>undo</i> of the deletion, return an {@link de.timroes.android.listview.EnhancedListView.Undoable}
* from {@link de.timroes.android.listview.EnhancedListView.OnDismissCallback#onDismiss(EnhancedListView, int)}.
* Return {@code null}, if you don't want the <i>undo</i> feature enabled. Read the README file
* or the demo project for more detailed samples.
*
* @return The {@link de.timroes.android.listview.EnhancedListView}
* @throws java.lang.IllegalStateException when you haven't passed an {@link EnhancedListView.OnDismissCallback}
* to {@link #setDismissCallback(EnhancedListView.OnDismissCallback)} before calling this
* method.
*/
public EnhancedListView enableSwipeToDismiss() {
if(mDismissCallback == null) {
throw new IllegalStateException("You must pass an OnDismissCallback to the list before enabling Swipe to Dismiss.");
}
mSwipeEnabled = true;
return this;
}
/**
* Disables the <i>Swipe to Dismiss</i> feature for this list.
*
* @return This {@link de.timroes.android.listview.EnhancedListView}
*/
public EnhancedListView disableSwipeToDismiss() {
mSwipeEnabled = false;
return this;
}
/**
* Sets the callback to be called when the user dismissed an item from the list (either by
* swiping it out - with <i>Swipe to Dismiss</i> enabled - or by deleting it with
* {@link #delete(int)}). You must call this, before you call {@link #delete(int)} or
* {@link #enableSwipeToDismiss()} otherwise you will get an {@link java.lang.IllegalStateException}.
*
* @param dismissCallback The callback used to handle dismisses of list items.
* @return This {@link de.timroes.android.listview.EnhancedListView}
*/
public EnhancedListView setDismissCallback(OnDismissCallback dismissCallback) {
mDismissCallback = dismissCallback;
return this;
}
/**
* Sets the callback to be called when the user is swiping an item from the list.
*
* @param shouldSwipeCallback The callback used to handle swipes of list items.
* @return This {@link de.timroes.android.listview.EnhancedListView}
*/
public EnhancedListView setShouldSwipeCallback(OnShouldSwipeCallback shouldSwipeCallback) {
mShouldSwipeCallback = shouldSwipeCallback;
return this;
}
/**
* Sets the undo style of this list. See the javadoc of {@link de.timroes.android.listview.EnhancedListView.UndoStyle}
* for a detailed explanation of the different styles. The default style (if you never call this
* method) is {@link de.timroes.android.listview.EnhancedListView.UndoStyle#SINGLE_POPUP}.
*
* @param undoStyle The style of this listview.
* @return This {@link de.timroes.android.listview.EnhancedListView}
*/
public EnhancedListView setUndoStyle(UndoStyle undoStyle) {
mUndoStyle = undoStyle;
return this;
}
/**
* Sets the time in milliseconds after which the undo popup automatically disappears.
* The countdown will start when the user touches the screen. If you want to start the countdown
* immediately when the popups appears, call {@link #setRequireTouchBeforeDismiss(boolean)} with
* {@code false}.
*
* @param hideDelay The delay in milliseconds.
* @return This {@link de.timroes.android.listview.EnhancedListView}
*/
public EnhancedListView setUndoHideDelay(int hideDelay) {
mUndoHideDelay = hideDelay;
return this;
}
/**
* Sets whether another touch on the view is required before the popup counts down to dismiss
* the undo popup. By default this is set to {@code true}.
*
* @param touchBeforeDismiss Whether the screen needs to be touched before the countdown starts.
* @return This {@link de.timroes.android.listview.EnhancedListView}
*
* @see #setUndoHideDelay(int)
*/
public EnhancedListView setRequireTouchBeforeDismiss(boolean touchBeforeDismiss) {
mTouchBeforeAutoHide = touchBeforeDismiss;
return this;
}
/**
* Sets the directions in which a list item can be swiped to delete.
* By default this is set to {@link SwipeDirection#BOTH} so that an item
* can be swiped into both directions.
* <p>
* <b>Note:</b> This method requires the <i>Swipe to Dismiss</i> feature enabled. Use
* {@link #enableSwipeToDismiss()} to enable the feature.
*
* @param direction The direction to which the swipe should be limited.
* @return This {@link de.timroes.android.listview.EnhancedListView}
*/
public EnhancedListView setSwipeDirection(SwipeDirection direction) {
mSwipeDirection = direction;
return this;
}
/**
* Sets the id of the view, that should be moved, when the user swipes an item.
* Only the view with the specified id will move, while all other views in the list item, will
* stay where they are. This might be usefull to have a background behind the view that is swiped
* out, to stay where it is (and maybe explain that the item is going to be deleted).
* If you never call this method (or call it with 0), the whole view will be swiped. Also if there
* is no view in a list item, with the given id, the whole view will be swiped.
* <p>
* <b>Note:</b> This method requires the <i>Swipe to Dismiss</i> feature enabled. Use
* {@link #enableSwipeToDismiss()} to enable the feature.
*
* @param swipingLayoutId The id (from R.id) of the view, that should be swiped.
* @return This {@link de.timroes.android.listview.EnhancedListView}
*/
public EnhancedListView setSwipingLayout(int swipingLayoutId) {
mSwipingLayout = swipingLayoutId;
return this;
}
/**
* Discard all stored undos and hide the undo popup dialog.
* This method must be called in {@link android.app.Activity#onStop()}. Otherwise
* {@link EnhancedListView.Undoable#discard()} might not be called for several items, what might
* break your data consistency.
*/
public void discardUndo() {
for(Undoable undoable : mUndoActions) {
undoable.discard();
}
mUndoActions.clear();
if(mUndoPopup.isShowing()) {
mUndoPopup.dismiss();
}
}
/**
* Delete the list item at the specified position. This will animate the item sliding out of the
* list and then collapsing until it vanished (same as if the user slides out an item).
* <p>
* NOTE: If you are using list headers, be aware, that the position argument must take care of
* them. Meaning 0 references the first list header. So if you want to delete the first list
* item, you have to pass the number of list headers as {@code position}. Most of the times
* that shouldn't be a problem, since you most probably will evaluate the position which should
* be deleted in a way, that respects the list headers.
*
* @param position The position of the item in the list.
* @throws java.lang.IndexOutOfBoundsException when trying to delete an item outside of the list range.
* @throws java.lang.IllegalStateException when this method is called before an {@link EnhancedListView.OnDismissCallback}
* is set via {@link #setDismissCallback(de.timroes.android.listview.EnhancedListView.OnDismissCallback)}.
* */
public void delete(int position) {
if(mDismissCallback == null) {
throw new IllegalStateException("You must set an OnDismissCallback, before deleting items.");
}
if(position < 0 || position >= getCount()) {
throw new IndexOutOfBoundsException(String.format("Tried to delete item %d. #items in list: %d", position, getCount()));
}
View childView = getChildAt(position - getFirstVisiblePosition());
View view = null;
if(mSwipingLayout > 0) {
view = childView.findViewById(mSwipingLayout);
}
if(view == null) {
view = childView;
}
slideOutView(view, childView, position, true);
}
/**
* Slide out a view to the right or left of the list. After the animation has finished, the
* view will be dismissed by calling {@link #performDismiss(android.view.View, android.view.View, int)}.
*
* @param view The view, that should be slided out.
* @param childView The whole view of the list item.
* @param position The item position of the item.
* @param toRightSide Whether it should slide out to the right side.
*/
private void slideOutView(final View view, final View childView, final int position, boolean toRightSide) {
// Only start new animation, if this view isn't already animated (too fast swiping bug)
synchronized(mAnimationLock) {
if(mAnimatedViews.contains(view)) {
return;
}
++mDismissAnimationRefCount;
mAnimatedViews.add(view);
}
ViewPropertyAnimator.animate(view)
.translationX(toRightSide ? mViewWidth : -mViewWidth)
.alpha(0)
.setDuration(mAnimationTime)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
performDismiss(view, childView, position);
}
});
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (!mSwipeEnabled) {
return super.onTouchEvent(ev);
}
// Send a delayed message to hide popup
if(mTouchBeforeAutoHide && mUndoPopup.isShowing()) {
mHideUndoHandler.sendMessageDelayed(mHideUndoHandler.obtainMessage(mValidDelayedMsgId), mUndoHideDelay);
}
// Store width of this list for usage of swipe distance detection
if (mViewWidth < 2) {
mViewWidth = getWidth();
}
switch (ev.getActionMasked()) {
case MotionEvent.ACTION_DOWN: {
if (mSwipePaused) {
return super.onTouchEvent(ev);
}
// TODO: ensure this is a finger, and set a flag
// Find the child view that was touched (perform a hit test)
Rect rect = new Rect();
int childCount = getChildCount();
int[] listViewCoords = new int[2];
getLocationOnScreen(listViewCoords);
int x = (int) ev.getRawX() - listViewCoords[0];
int y = (int) ev.getRawY() - listViewCoords[1];
View child;
for (int i = getHeaderViewsCount(); i < childCount; i++) {
child = getChildAt(i);
if(child != null) {
child.getHitRect(rect);
if (rect.contains(x, y)) {
// if a specific swiping layout has been giving, use this to swipe.
if(mSwipingLayout > 0) {
View swipingView = child.findViewById(mSwipingLayout);
if(swipingView != null) {
mSwipeDownView = swipingView;
mSwipeDownChild = child;
break;
}
}
// If no swiping layout has been found, swipe the whole child
mSwipeDownView = mSwipeDownChild = child;
break;
}
}
}
if (mSwipeDownView != null) {
// test if the item should be swiped
int position = getPositionForView(mSwipeDownView) - getHeaderViewsCount();
if ((mShouldSwipeCallback == null) ||
mShouldSwipeCallback.onShouldSwipe(this, position)) {
mDownX = ev.getRawX();
mDownPosition = position;
mVelocityTracker = VelocityTracker.obtain();
mVelocityTracker.addMovement(ev);
} else {
// set back to null to revert swiping
mSwipeDownView = mSwipeDownChild = null;
}
}
super.onTouchEvent(ev);
return true;
}
case MotionEvent.ACTION_UP: {
if (mVelocityTracker == null) {
break;
}
float deltaX = ev.getRawX() - mDownX;
mVelocityTracker.addMovement(ev);
mVelocityTracker.computeCurrentVelocity(1000);
float velocityX = Math.abs(mVelocityTracker.getXVelocity());
float velocityY = Math.abs(mVelocityTracker.getYVelocity());
boolean dismiss = false;
boolean dismissRight = false;
if (Math.abs(deltaX) > mViewWidth / 2 && mSwiping) {
dismiss = true;
dismissRight = deltaX > 0;
} else if (mMinFlingVelocity <= velocityX && velocityX <= mMaxFlingVelocity
&& velocityY < velocityX && mSwiping && isSwipeDirectionValid(mVelocityTracker.getXVelocity())
&& deltaX >= mViewWidth * 0.2f) {
dismiss = true;
dismissRight = mVelocityTracker.getXVelocity() > 0;
}
if (dismiss) {
// dismiss
slideOutView(mSwipeDownView, mSwipeDownChild, mDownPosition, dismissRight);
} else if(mSwiping) {
// Swipe back to regular position
ViewPropertyAnimator.animate(mSwipeDownView)
.translationX(0)
.alpha(1)
.setDuration(mAnimationTime)
.setListener(null);
}
mVelocityTracker = null;
mDownX = 0;
mSwipeDownView = null;
mSwipeDownChild = null;
mDownPosition = AbsListView.INVALID_POSITION;
mSwiping = false;
break;
}
case MotionEvent.ACTION_MOVE: {
if (mVelocityTracker == null || mSwipePaused) {
break;
}
mVelocityTracker.addMovement(ev);
float deltaX = ev.getRawX() - mDownX;
// Only start swipe in correct direction
if(isSwipeDirectionValid(deltaX)) {
ViewParent parent = getParent();
if(parent != null) {
// If we swipe don't allow parent to intercept touch (e.g. like NavigationDrawer does)
// otherwise swipe would not be working.
parent.requestDisallowInterceptTouchEvent(true);
}
if (Math.abs(deltaX) > mSlop) {
mSwiping = true;
requestDisallowInterceptTouchEvent(true);
// Cancel ListView's touch (un-highlighting the item)
MotionEvent cancelEvent = MotionEvent.obtain(ev);
cancelEvent.setAction(MotionEvent.ACTION_CANCEL
| (ev.getActionIndex()
<< MotionEvent.ACTION_POINTER_INDEX_SHIFT));
super.onTouchEvent(cancelEvent);
}
} else {
// If we swiped into wrong direction, act like this was the new
// touch down point
mDownX = ev.getRawX();
deltaX = 0;
}
if (mSwiping) {
ViewHelper.setTranslationX(mSwipeDownView, deltaX);
ViewHelper.setAlpha(mSwipeDownView, Math.max(0f, Math.min(1f,
1f - 2f * Math.abs(deltaX) / mViewWidth)));
return true;
}
break;
}
}
return super.onTouchEvent(ev);
}
/**
* Animate the dismissed list item to zero-height and fire the dismiss callback when
* all dismissed list item animations have completed.
*
* @param dismissView The view that has been slided out.
* @param listItemView The list item view. This is the whole view of the list item, and not just
* the part, that the user swiped.
* @param dismissPosition The position of the view inside the list.
*/
private void performDismiss(final View dismissView, final View listItemView, final int dismissPosition) {
final ViewGroup.LayoutParams lp = listItemView.getLayoutParams();
final int originalLayoutHeight = lp.height;
int originalHeight = listItemView.getHeight();
ValueAnimator animator = ValueAnimator.ofInt(originalHeight, 1).setDuration(mAnimationTime);
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
// Make sure no other animation is running. Remove animation from running list, that just finished
boolean noAnimationLeft;
synchronized(mAnimationLock) {
--mDismissAnimationRefCount;
mAnimatedViews.remove(dismissView);
noAnimationLeft = mDismissAnimationRefCount == 0;
}
if (noAnimationLeft) {
// No active animations, process all pending dismisses.
for(PendingDismissData dismiss : mPendingDismisses) {
if(mUndoStyle == UndoStyle.SINGLE_POPUP) {
for(Undoable undoable : mUndoActions) {
undoable.discard();
}
mUndoActions.clear();
}
Undoable undoable = mDismissCallback.onDismiss(EnhancedListView.this, dismiss.position);
if(undoable != null) {
mUndoActions.add(undoable);
}
mValidDelayedMsgId++;
}
if(!mUndoActions.isEmpty()) {
changePopupText();
changeButtonLabel();
// Show undo popup
float yLocationOffset = getResources().getDimension(R.dimen.elv_undo_bottom_offset);
mUndoPopup.setWidth((int)Math.min(mScreenDensity * 400, getWidth() * 0.9f));
mUndoPopup.showAtLocation(EnhancedListView.this,
Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM,
0, (int) yLocationOffset);
// Queue the dismiss only if required
if(!mTouchBeforeAutoHide) {
// Send a delayed message to hide popup
mHideUndoHandler.sendMessageDelayed(mHideUndoHandler.obtainMessage(mValidDelayedMsgId),
mUndoHideDelay);
}
}
ViewGroup.LayoutParams lp;
for (PendingDismissData pendingDismiss : mPendingDismisses) {
ViewHelper.setAlpha(pendingDismiss.view, 1f);
ViewHelper.setTranslationX(pendingDismiss.view, 0);
lp = pendingDismiss.childView.getLayoutParams();
lp.height = originalLayoutHeight;
pendingDismiss.childView.setLayoutParams(lp);
}
mPendingDismisses.clear();
}
}
});
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
lp.height = (Integer) valueAnimator.getAnimatedValue();
listItemView.setLayoutParams(lp);
}
});
mPendingDismisses.add(new PendingDismissData(dismissPosition, dismissView, listItemView));
animator.start();
}
/**
* Changes the text of the undo popup. If more then one item can be undone, the number of deleted
* items will be shown. If only one deletion can be undone, the title of this deletion (or a default
* string in case the title is {@code null}) will be shown.
*/
private void changePopupText() {
String msg = null;
if(mUndoActions.size() > 1) {
msg = getResources().getString(R.string.elv_n_items_deleted, mUndoActions.size());
} else if(mUndoActions.size() >= 1) {
// Set title from single undoable or when no multiple deletion string
// is given
msg = mUndoActions.get(mUndoActions.size() - 1).getTitle();
if(msg == null) {
msg = getResources().getString(R.string.elv_item_deleted);
}
}
mUndoPopupTextView.setText(msg);
}
/**
* Changes the label of the undo button.
*/
private void changeButtonLabel() {
String msg;
if(mUndoActions.size() > 1 && mUndoStyle == UndoStyle.COLLAPSED_POPUP) {
msg = getResources().getString(R.string.elv_undo_all);
} else {
msg = getResources().getString(R.string.elv_undo);
}
mUndoButton.setText(msg);
}
private OnScrollListener makeScrollListener() {
return new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
mSwipePaused = scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
};
}
/**
* Checks whether the delta of a swipe indicates, that the swipe is in the
* correct direction, regarding the direction set via
* {@link #setSwipeDirection(de.timroes.android.listview.EnhancedListView.SwipeDirection)}
*
* @param deltaX The delta of x coordinate of the swipe.
* @return Whether the delta of a swipe is in the right direction.
*/
private boolean isSwipeDirectionValid(float deltaX) {
int rtlSign = 1;
// On API level 17 and above, check if we are in a Right-To-Left layout
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
if(getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
rtlSign = -1;
}
}
// Check if swipe has been done in the correct direction
switch(mSwipeDirection) {
default:
case BOTH:
return true;
case START:
return rtlSign * deltaX < 0;
case END:
return rtlSign * deltaX > 0;
}
}
@Override
protected void onWindowVisibilityChanged(int visibility) {
super.onWindowVisibilityChanged(visibility);
/*
* If the container window no longer visiable,
* dismiss visible undo popup window so it won't leak,
* cos the container window will be destroyed before dismissing the popup window.
*/
if(visibility != View.VISIBLE) {
discardUndo();
}
}
}

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="500"
android:repeatCount="0"/>
</set>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="500"
android:repeatCount="0"/>
</set>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/elv_popup_bg_color"/>
<corners android:radius="5dp"/>
</shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/elv_undo_btn_bg_pressed"/> <!-- pressed -->
<item android:state_focused="true" android:drawable="@drawable/elv_undo_btn_bg_focused"/> <!-- focused -->
<item android:drawable="@color/elv_btn_normal"/> <!-- default -->
</selector>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/elv_btn_focused"/>
<corners android:radius="3dp"/>
</shape>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/elv_btn_pressed"/>
<corners android:radius="3dp"/>
</shape>

View File

@ -1,43 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:background="@drawable/elv_toast_frame"
android:gravity="center">
<TextView
android:id="@+id/text"
android:fontFamily="sans-serif-condensed"
android:textSize="16sp"
android:layout_weight="1"
android:ellipsize="end"
android:singleLine="true"
android:textColor="@color/elv_popup_text_color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:shadowColor="#BB000000"
android:shadowRadius="2.75"/>
<View
android:layout_weight="0"
android:layout_marginRight="8dp"
android:layout_marginLeft="8dp"
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:background="@color/elv_separator_color"/>
<Button
android:id="@+id/undo"
android:fontFamily="sans-serif-condensed"
android:textColor="@color/elv_popup_text_color"
android:background="@drawable/elv_undo_btn_bg"
android:layout_weight="0"
android:drawableLeft="@drawable/elv_ic_action_undo"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:shadowColor="#BB000000"
android:shadowRadius="2.75"/>
</LinearLayout>

View File

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:background="@drawable/elv_popup_bg"
android:paddingRight="8dp"
android:gravity="center">
<TextView android:id="@+id/text"
android:padding="8dp"
android:textSize="16sp"
android:layout_weight="1"
android:singleLine="true"
android:ellipsize="end"
android:textColor="@color/elv_popup_text_color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<View
android:layout_weight="0"
android:layout_marginRight="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="15dp"
android:layout_marginBottom="15dp"
android:layout_width="1dp"
android:layout_height="fill_parent"
android:background="@color/elv_separator_color"/>
<Button android:id="@+id/undo"
android:textColor="@color/elv_popup_text_color"
android:background="@drawable/elv_undo_btn_bg"
android:drawableLeft="@drawable/elv_ic_action_undo"
android:layout_weight="0"
android:paddingRight="8dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="elv_btn_pressed">#ff33b5e5</color>
<color name="elv_btn_focused">#ff0099cc</color>
<color name="elv_btn_normal">#00000000</color>
<color name="elv_popup_bg_color">#EE666666</color>
<color name="elv_separator_color">#BBBBBB</color>
<color name="elv_popup_text_color">#FFFFFF</color>
</resources>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- The bottom offset the undo popup should have -->
<dimen name="elv_undo_bottom_offset">15dp</dimen>
<!-- The touch slop you need to cause a swipe instead of a scroll -->
<dimen name="elv_touch_slop">32dp</dimen>
</resources>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="elv_undo">Undo</string>
<string name="elv_undo_all">Undo All</string>
<string name="elv_item_deleted">Item deleted</string>
<string name="elv_n_items_deleted">%1$s items deleted</string>
</resources>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="elv_fade_animation">
<item name="android:windowEnterAnimation">@anim/elv_popup_show</item>
<item name="android:windowExitAnimation">@anim/elv_popup_hide</item>
</style>
</resources>

View File

@ -1,11 +0,0 @@
bin
build
gen
local.properties
example/bin
example/gen
tags
.project
.classpath
.gradle
.*.swp

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.duenndns.ssl"
android:versionCode="1"
android:versionName="1.0">
<application android:label="MemorizingTrustManager">
<activity android:name="de.duenndns.ssl.MemorizingActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
</application>
</manifest>

View File

@ -1,21 +0,0 @@
The MIT license.
Copyright (c) 2010 Georg Lukas <georg@op-co.de>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@ -1,125 +0,0 @@
# MemorizingTrustManager - Private Cloud Support for Your App
MemorizingTrustManager (MTM) is a project to enable smarter and more secure use
of SSL on Android. If it encounters an unknown SSL certificate, it asks the
user whether to accept the certificate once, permanently or to abort the
connection. This is a step in preventing man-in-the-middle attacks by blindly
accepting any invalid, self-signed and/or expired certificates.
MTM is aimed at providing seamless integration into your Android application,
and the source code is available under the MIT license.
## Screenshots
![MemorizingTrustManager dialog](mtm-screenshot.png)
![MemorizingTrustManager notification](mtm-notification.png)
![MemorizingTrustManager server name dialog](mtm-servername.png)
## Status
MemorizingTrustManager is in production use in the
[yaxim XMPP client](https://yaxim.org/). It is usable and easy to integrate,
though it does not yet support hostname validation (the Java API makes it
**hard** to integrate).
## Integration
MTM is easy to integrate into your own application. Follow these steps or have
a look into the demo application in the `example` directory.
### 1. Add MTM to your project
Download the MTM source from GitHub, or add it as a
[git submodule](http://git-scm.com/docs/git-submodule):
# plain download:
git clone https://github.com/ge0rg/MemorizingTrustManager
# submodule:
git submodule add https://github.com/ge0rg/MemorizingTrustManager
Then add a library project dependency to `default.properties`:
android.library.reference.1=MemorizingTrustManager
### 2. Add the MTM (popup) Activity to your manifest
Edit your `AndroidManifest.xml` and add the MTM activity element right before the
end of your closing `</application>` tag.
...
<activity android:name="de.duenndns.ssl.MemorizingActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
/>
</application>
</manifest>
### 3. Hook MTM as the default TrustManager for your connection type
Hooking MemorizingTrustmanager in HTTPS connections:
// register MemorizingTrustManager for HTTPS
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(
mtm.wrapHostnameVerifier(HttpsURLConnection.getDefaultHostnameVerifier()));
Or, for aSmack you can use `setCustomSSLContext()`:
org.jivesoftware.smack.ConnectionConfiguration connectionConfiguration = …
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
connectionConfiguration.setCustomSSLContext(sc);
connectionConfiguration.setHostnameVerifier(
mtm.wrapHostnameVerifier(new org.apache.http.conn.ssl.StrictHostnameVerifier()));
By default, MTM falls back to the system `TrustManager` before asking the user.
If you do not trust the establishment, you can enforce a dialog on *every new
connection* by supplying a `defaultTrustManager = null` parameter to the
constructor:
MemorizingTrustManager mtm = new MemorizingTrustManager(this, null);
If you want to use a different underlying `TrustManager`, like
[AndroidPinning](https://github.com/moxie0/AndroidPinning), just supply that to
MTM's constructor:
X509TrustManager pinning = new PinningTrustManager(SystemKeyStore.getInstance(),
new String[] {"f30012bbc18c231ac1a44b788e410ce754182513"}, 0);
MemorizingTrustManager mtm = new MemorizingTrustManager(this, pinning);
### 4. Profit!
### Logging
MTM uses java.util.logging (JUL) for logging purposes. If you have not
configured a Handler for JUL, then Android will by default log all
messages of Level.INFO or higher. In order to get also the debug log
messages (those with Level.FINE or lower) you need to configure a
Handler accordingly. The MTM example project contains
de.duenndns.mtmexample.JULHandler, which allows to enable and disable
debug logging at runtime.
## Alternatives
MemorizingTrustManager is not the only one out there.
[**NetCipher**](https://guardianproject.info/code/netcipher/) is an Android
library made by the [Guardian Project](https://guardianproject.info/) to
improve network security for mobile apps. It comes with a StrongTrustManager
to do more thorough certificate checks, an independent Root CA store, and code
to easily route your traffic through
[the Tor network](https://www.torproject.org/) using [Orbot](https://guardianproject.info/apps/orbot/).
[**AndroidPinning**](https://github.com/moxie0/AndroidPinning) is another Android
library, written by [Moxie Marlinspike](http://www.thoughtcrime.org/) to allow
pinning of server certificates, improving security against government-scale
MitM attacks. Use this if your app is made to communicate with a specific
server!
## Contribute
Please [help translating MTM into more languages](https://translations.launchpad.net/yaxim/master/+pots/mtm/)!

View File

@ -1,17 +0,0 @@
# This file is used to override default values used by the Ant build system.
#
# This file must be checked in Version Control Systems, as it is
# integral to the build system of your project.
# This file is only used by the Ant script.
# You can use this to override default values such as
# 'source.dir' for the location of your java source folder and
# 'out.dir' for the location of your output folder.
# You can also use it define how the release builds are signed by declaring
# the following properties:
# 'key.store' for the location of your keystore and
# 'key.alias' for the name of the key to use.
# The password will be asked during the build when you use the 'release' target.

View File

@ -1,33 +0,0 @@
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
apply plugin: 'com.android.library'
android {
compileSdkVersion 27
buildToolsVersion "27.0.3"
defaultConfig {
minSdkVersion 14
targetSdkVersion 25
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
}

View File

@ -1,92 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="MemorizingTrustManager" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />
<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update:
source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.
For other overridable properties, look at the beginning of the rules
files in the SDK, at tools/ant/build.xml
Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems.
-->
<property file="ant.properties" />
<!-- if sdk.dir was not set from one of the property file, then
get it from the ANDROID_HOME env var.
This must be done before we load project.properties since
the proguard config can use sdk.dir -->
<property environment="env" />
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
<isset property="env.ANDROID_HOME" />
</condition>
<!-- The project.properties file is created and updated by the 'android'
tool, as well as ADT.
This contains project specific properties such as project target, and library
dependencies. Lower level build properties are stored in ant.properties
(or in .classpath for Eclipse projects).
This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />
<!-- quick check on sdk.dir -->
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
unless="sdk.dir"
/>
<!--
Import per project custom build rules if present at the root of the project.
This is the place to put custom intermediary targets such as:
-pre-build
-pre-compile
-post-compile (This is typically used for code obfuscation.
Compiled code location: ${out.classes.absolute.dir}
If this is not done in place, override ${out.dex.input.absolute.dir})
-post-package
-post-build
-pre-clean
-->
<import file="custom_rules.xml" optional="true" />
<!-- Import the actual build file.
To customize existing targets, there are two options:
- Customize only one target:
- copy/paste the target into this file, *before* the
<import> task.
- customize it to your needs.
- Customize the whole content of build.xml
- copy/paste the content of the rules files (minus the top node)
into this file, replacing the <import> task.
- customize to your needs.
***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- version-tag: 1 -->
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.duenndns.mtmexample"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="3"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="@string/app_name" android:icon="@android:drawable/ic_lock_lock">
<activity
android:name=".MTMExample"
android:configChanges="keyboardHidden|orientation|screenSize|screenLayout"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- ADD THE FOLLOWING TO YOUR MANIFEST: -->
<activity android:name="de.duenndns.ssl.MemorizingActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
</application>
</manifest>

View File

@ -1,18 +0,0 @@
# This file is used to override default values used by the Ant build system.
#
# This file must be checked in Version Control Systems, as it is
# integral to the build system of your project.
# This file is only used by the Ant script.
# You can use this to override default values such as
# 'source.dir' for the location of your java source folder and
# 'out.dir' for the location of your output folder.
# You can also use it define how the release builds are signed by declaring
# the following properties:
# 'key.store' for the location of your keystore and
# 'key.alias' for the name of the key to use.
# The password will be asked during the build when you use the 'release' target.
application.package=de.duenndns.mtmexample

View File

@ -1,23 +0,0 @@
apply plugin: 'android'
dependencies {
compile rootProject
}
android {
compileSdkVersion 19
buildToolsVersion "19.1"
defaultConfig {
minSdkVersion 7
targetSdkVersion 19
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
res.srcDirs = ['res']
}
}
}

View File

@ -1,92 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="MTMExample" default="help">
<!-- The local.properties file is created and updated by the 'android' tool.
It contains the path to the SDK. It should *NOT* be checked into
Version Control Systems. -->
<property file="local.properties" />
<!-- The ant.properties file can be created by you. It is only edited by the
'android' tool to add properties to it.
This is the place to change some Ant specific build properties.
Here are some properties you may want to change/update:
source.dir
The name of the source directory. Default is 'src'.
out.dir
The name of the output directory. Default is 'bin'.
For other overridable properties, look at the beginning of the rules
files in the SDK, at tools/ant/build.xml
Properties related to the SDK location or the project target should
be updated using the 'android' tool with the 'update' action.
This file is an integral part of the build system for your
application and should be checked into Version Control Systems.
-->
<property file="ant.properties" />
<!-- if sdk.dir was not set from one of the property file, then
get it from the ANDROID_HOME env var.
This must be done before we load project.properties since
the proguard config can use sdk.dir -->
<property environment="env" />
<condition property="sdk.dir" value="${env.ANDROID_HOME}">
<isset property="env.ANDROID_HOME" />
</condition>
<!-- The project.properties file is created and updated by the 'android'
tool, as well as ADT.
This contains project specific properties such as project target, and library
dependencies. Lower level build properties are stored in ant.properties
(or in .classpath for Eclipse projects).
This file is an integral part of the build system for your
application and should be checked into Version Control Systems. -->
<loadproperties srcFile="project.properties" />
<!-- quick check on sdk.dir -->
<fail
message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
unless="sdk.dir"
/>
<!--
Import per project custom build rules if present at the root of the project.
This is the place to put custom intermediary targets such as:
-pre-build
-pre-compile
-post-compile (This is typically used for code obfuscation.
Compiled code location: ${out.classes.absolute.dir}
If this is not done in place, override ${out.dex.input.absolute.dir})
-post-package
-post-build
-pre-clean
-->
<import file="custom_rules.xml" optional="true" />
<!-- Import the actual build file.
To customize existing targets, there are two options:
- Customize only one target:
- copy/paste the target into this file, *before* the
<import> task.
- customize it to your needs.
- Customize the whole content of build.xml
- copy/paste the content of the rules files (minus the top node)
into this file, replacing the <import> task.
- customize to your needs.
***********************
****** IMPORTANT ******
***********************
In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
in order to avoid having your file be overridden by tools such as "android update project"
-->
<!-- version-tag: 1 -->
<import file="${sdk.dir}/tools/ant/build.xml" />
</project>

View File

@ -1,20 +0,0 @@
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

View File

@ -1,12 +0,0 @@
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "ant.properties", and override values to adapt the script to your
# project structure.
android.library.reference.1=../
# Project target.
target=android-19

View File

@ -1,36 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<EditText
android:id="@+id/url"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="HTTPS address"
android:text="https://op-co.de/mtm/"
android:singleLine="true"
/>
<Button
android:id="@+id/connect"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Connect"
/>
<TextView
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Please enter a HTTPS URL and press 'Connect'!"
android:textSize="11pt"
/>
<Button
android:id="@+id/manage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Clean up Certificates"
android:onClick="onManage"
/>
</LinearLayout>

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">MemorizingTrustManager Example</string>
</resources>

View File

@ -1,169 +0,0 @@
package de.duenndns.mtmexample;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringBufferInputStream;
import java.io.StringWriter;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import android.util.Log;
/**
* A <code>java.util.logging</code> (JUL) Handler for Android.
* <p>
* If you want fine-grained control over MTM's logging, you can copy this
* class to your code base and call the static {@link #initialize()} method.
* </p>
* <p>
* This JUL Handler passes log messages sent to JUL to the Android log, while
* keeping the format and stack traces of optionally supplied Exceptions. It
* further allows to install a {@link DebugLogSettings} class via
* {@link #setDebugLogSettings(DebugLogSettings)} that determines whether JUL log messages of
* level {@link java.util.logging.Level#FINE} or lower are logged. This gives
* the application developer more control over the logged messages, while
* allowing a library developer to place debug log messages without risking to
* spam the Android log.
* </p>
* <p>
* If there are no {@code DebugLogSettings} configured, then all messages sent
* to JUL will be logged.
* </p>
*
* @author Florian Schmaus
*
*/
@SuppressWarnings("deprecation")
public class JULHandler extends Handler {
/** Implement this interface to toggle debug logging.
*/
public interface DebugLogSettings {
public boolean isDebugLogEnabled();
}
private static final String CLASS_NAME = JULHandler.class.getName();
/**
* The global LogManager configuration.
* <p>
* This configures:
* <ul>
* <li> JULHandler as the default handler for all log messages
* <li> A default log level FINEST (300). Meaning that log messages of a level 300 or higher a
* logged
* </ul>
* </p>
*/
private static final InputStream LOG_MANAGER_CONFIG = new StringBufferInputStream(
// @formatter:off
"handlers = " + CLASS_NAME + '\n' +
".level = FINEST"
);
// @formatter:on
// Constants for Android vs. JUL debug level comparisons
private static final int FINE_INT = Level.FINE.intValue();
private static final int INFO_INT = Level.INFO.intValue();
private static final int WARN_INT = Level.WARNING.intValue();
private static final int SEVE_INT = Level.SEVERE.intValue();
private static final Logger LOGGER = Logger.getLogger(CLASS_NAME);
/** A formatter that creates output similar to Android's Log.x. */
private static final Formatter FORMATTER = new Formatter() {
@Override
public String format(LogRecord logRecord) {
Throwable thrown = logRecord.getThrown();
if (thrown != null) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw, false);
pw.write(logRecord.getMessage() + ' ');
thrown.printStackTrace(pw);
pw.flush();
return sw.toString();
} else {
return logRecord.getMessage();
}
}
};
private static DebugLogSettings sDebugLogSettings;
private static boolean initialized = false;
public static void initialize() {
try {
LogManager.getLogManager().readConfiguration(LOG_MANAGER_CONFIG);
initialized = true;
} catch (IOException e) {
Log.e("JULHandler", "Can not initialize configuration", e);
}
if (initialized) LOGGER.info("Initialzied java.util.logging logger");
}
public static void setDebugLogSettings(DebugLogSettings debugLogSettings) {
if (!isInitialized()) initialize();
sDebugLogSettings = debugLogSettings;
}
public static boolean isInitialized() {
return initialized;
}
public JULHandler() {
setFormatter(FORMATTER);
}
@Override
public void close() {}
@Override
public void flush() {}
@Override
public boolean isLoggable(LogRecord record) {
final boolean debugLog = sDebugLogSettings == null ? true : sDebugLogSettings
.isDebugLogEnabled();
if (record.getLevel().intValue() <= FINE_INT) {
return debugLog;
}
return true;
}
/** JUL method that forwards log records to Android's LogCat. */
@Override
public void publish(LogRecord record) {
if (!isLoggable(record)) return;
final int priority = getAndroidPriority(record.getLevel());
final String tag = substringAfterLastDot(record.getSourceClassName());
final String msg = getFormatter().format(record);
Log.println(priority, tag, msg);
}
/** Helper to convert JUL verbosity levels to Android's Log. */
private static int getAndroidPriority(Level level) {
int value = level.intValue();
if (value >= SEVE_INT) {
return Log.ERROR;
} else if (value >= WARN_INT) {
return Log.WARN;
} else if (value >= INFO_INT) {
return Log.INFO;
} else {
return Log.DEBUG;
}
}
/** Helper to extract short class names. */
private static String substringAfterLastDot(String s) {
return s.substring(s.lastIndexOf('.') + 1).trim();
}
}

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