Compare commits

...

3275 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
Daniel Gultsch cb1a5e3c68 version bump to 1.23.5 + changelog 2018-02-10 12:53:50 +01:00
Daniel Gultsch b3561e80f2 pulled translations from transifex 2018-02-10 12:21:36 +01:00
Daniel Gultsch 0e8e8be82c
Merge pull request #2780 from linkmauve/patch-1
Fix the French translation for the add_back string
2018-02-10 12:19:18 +01:00
Daniel Gultsch f828b89cbd skip empty srv records 2018-02-10 12:16:18 +01:00
Daniel Gultsch facc56bc7b return to welcome activity after deleting last account 2018-02-10 10:45:33 +01:00
Daniel Gultsch 97406ecf51 skip animations for startup activities 2018-02-09 22:19:13 +01:00
Daniel Gultsch d33fca09cf add null checks to huawei settings code 2018-02-09 22:11:11 +01:00
Daniel Gultsch af81bb1958 fixed ruby rendering script 2018-02-09 20:53:13 +01:00
Daniel Gultsch 5335cda50c do not put setup activites on stack twice 2018-02-09 20:09:58 +01:00
Daniel Gultsch 4a98d330f0 fixing travis 2018-02-09 09:16:19 +01:00
Daniel Gultsch a7e1935909 bump build tools 2018-02-09 09:05:49 +01:00
linkmauve 4e373d82dc
Fix the French translation for the add_back string
It was translated to something like “add again”, which doesn’t carry the same meaning and can be confusing for users.

It would be useful to also check how it has been translated in other languages, and add a source comment for future translators.
2018-02-05 19:30:32 +01:00
Daniel Gultsch 012653f7ed SM saftey checks 2018-02-02 16:52:40 +01:00
Daniel Gultsch 9fcf8347f6
Merge pull request #2773 from kriztan/patch-1
fixed crash on receiving files
2018-02-02 09:33:22 +01:00
Christian Schneppe 40878350c7
fixed crash on receiving files 2018-02-01 19:47:51 +01:00
Daniel Gultsch bcd00bb517 discover file extension in original filename from pgp 2018-01-29 01:40:02 +01:00
Daniel Gultsch 2f1f9f2c2c do not explicitly request MAM archive for blocked contacts 2018-01-29 01:39:46 +01:00
Daniel Gultsch e48788e821 support new http upload namespace 2018-01-28 14:17:42 +01:00
Daniel Gultsch 4541ac8b7b direct link from settings to huaweis protected apps 2018-01-28 13:31:12 +01:00
Daniel Gultsch 3e9224bde9 add snooze button to notification 2018-01-28 13:14:30 +01:00
Daniel Gultsch c7bdc343ec show account details when clicking avatar picture in self chat 2018-01-27 21:34:32 +01:00
Daniel Gultsch 8f9640a9e1 just switch to conversations & do not creat when 'creating' self contact 2018-01-27 21:04:42 +01:00
Daniel Gultsch a33984acc5 encrypt muc PM only to actual recipient 2018-01-27 20:55:43 +01:00
Daniel Gultsch be70eb5650 improvements for self messages
* fix omemo in group chats w/o participants
* don't create two axolotl messages when messaging self
* fix read marker for self messages
2018-01-27 10:45:05 +01:00
Daniel Gultsch 3e111e7f58 allow axolotl header to be empty in empty mucs 2018-01-27 09:15:47 +01:00
Daniel Gultsch a5256c3e83 show self messages from other devices as received 2018-01-27 09:15:02 +01:00
Daniel Gultsch e3c46dc926 version bump to 1.23.4 2018-01-26 11:32:16 +01:00
Daniel Gultsch 1217faec60 pulled translations from transifex 2018-01-25 12:48:54 +01:00
Daniel Gultsch 294e19d962 fixed sharing multiple images 2018-01-25 12:48:04 +01:00
Daniel Gultsch 676ac32a97 delegate uri permission to service when processing files 2018-01-23 22:02:28 +01:00
Daniel Gultsch 0dbad2eea5 updated year in copyright info 2018-01-23 22:01:56 +01:00
Daniel Gultsch 44ce90ccf2 respond to message receipts request when processing carbon copy 2018-01-23 22:00:33 +01:00
Daniel Gultsch eee5d885ba make chat markers opportunistic in private mucs 2018-01-22 23:21:24 +01:00
Daniel Gultsch e62b0ca320 fix NPE when writing Resolver.Result to disk 2018-01-22 23:20:58 +01:00
Daniel Gultsch 74048593ff pulled translations from transifex 2018-01-22 21:09:33 +01:00
Daniel Gultsch 1e0f288e6a avoid some unnecessary notification updates 2018-01-22 12:24:10 +01:00
Daniel Gultsch 78c5c508b3 permanently cache last resolver result 2018-01-21 20:41:30 +01:00
Daniel Gultsch 3c4ba7e0ce keep screen on during audio playback. fixes #2733 2018-01-21 16:04:31 +01:00
Daniel Gultsch f2bbb6087c remove wakelocks in XmlReader 2018-01-21 12:30:31 +01:00
Daniel Gultsch 42c807ead8 Merge branch 'soft-keyboard-bug' of https://github.com/harshitbansal05/Conversations into harshitbansal05-soft-keyboard-bug 2018-01-21 12:26:57 +01:00
Daniel Gultsch 6458351f6c use countdownlatch to check if TagWriter has finished 2018-01-20 23:13:36 +01:00
Daniel Gultsch 3a8855a672 fixed interupt handling 2018-01-20 21:57:09 +01:00
Daniel Gultsch 2b39acf352 postpone notification actions (mark as read, reply) until after messages are loaded 2018-01-20 20:05:39 +01:00
iamharsshit a3bb7c346b add soft keyboard next button functionality 2018-01-20 22:43:11 +05:30
Daniel Gultsch 4600b3982e treat key transport messages differently to not open empty conversations 2018-01-20 09:36:37 +01:00
Daniel Gultsch 3ff37511d4 sent message receipts after mam catchup 2018-01-20 08:54:44 +01:00
Daniel Gultsch 6009b8ebf0 disable offline messages. postpone prekey handling until after mam catchup 2018-01-19 18:17:13 +01:00
Daniel Gultsch 036dd82698 properly handle key transport messages. use prekeyparsing only when that attribute is set 2018-01-18 20:58:55 +01:00
Daniel Gultsch 6663eb0a12 show warning toast if PM is disabled in MUC 2018-01-18 17:35:42 +01:00
Daniel Gultsch 5d11fe7dc6 added a few todos to source code 2018-01-15 11:13:35 +01:00
Daniel Gultsch b137681f86
Merge pull request #2758 from ChaosKid42/master
setting room subject also sets room name
2018-01-15 10:43:01 +01:00
Christoph Scholz d6bbcbd866 setting room subject also sets room name 2018-01-13 21:02:06 +01:00
daivat15 de23b37ee2 Gradle Update to 3.0.1 with aapt
Gradle Update to 3.0.1 with aapt

Gradle Update to 3.0.1 with aapt fix try
2018-01-11 18:30:09 +05:30
Daniel Gultsch 416d982b11 added faq entry for bind failure 2018-01-10 17:11:17 +01:00
Daniel Gultsch 8b10f96272 disable copy in password field 2018-01-10 16:57:54 +01:00
Daniel Gultsch d68a610ac6 change edit button in quick edit dialog to accept 2018-01-09 10:30:32 +01:00
Daniel Gultsch 965c8cbbd5 pulled translations from transifex 2018-01-09 10:14:00 +01:00
Daniel Gultsch 55016f10e6 fix color of show password button 2018-01-09 10:13:53 +01:00
Daniel Gultsch 7ab8ed625d fix wrong avatar shown when true jid doesn't match in muc 2018-01-09 10:13:34 +01:00
Daniel Gultsch cb80e64d2c update dependencies 2018-01-09 10:13:02 +01:00
Daniel Gultsch f33e76e6ad added crypto currencies to readme. removed flattr 2018-01-02 15:37:03 +01:00
Daniel Gultsch 4d7d7623a0 pulled translations from transifex 2018-01-01 12:02:15 +01:00
Daniel Gultsch 2c2e77a168 ShareWithActivity: refactor for java 8 2018-01-01 11:56:31 +01:00
Daniel Gultsch 2906efa004 Merge branch 'master' of github.com:siacs/Conversations 2018-01-01 11:53:31 +01:00
Daniel Gultsch 0604d33248
Merge pull request #2737 from strugee/patch-1
Fix typo
2018-01-01 11:53:18 +01:00
AJ Jordan 12867de874
Fix typo 2017-12-26 16:53:34 -08:00
Daniel Gultsch 97bc93aeb0 do not use theme in uri activity 2017-12-19 12:50:19 +01:00
Daniel Gultsch b7cadcf9f6 version bump to 1.23.3 + changelog 2017-12-18 14:35:56 +01:00
Daniel Gultsch b5828127ee pulled translations from transifex 2017-12-18 13:48:30 +01:00
Daniel Gultsch 127557df56 show pep as available if omemo_all_access has been installed on server 2017-12-18 13:47:53 +01:00
Daniel Gultsch c5ee541906 clear muc avatar after going online 2017-12-18 13:19:11 +01:00
Daniel Gultsch e0ec6ad8b6 fixed omemo device list not getting annouced on empty list 2017-12-18 13:18:58 +01:00
Daniel Gultsch 1753dcac76 save muc subject to disk and use crypto targets for offline name generation 2017-12-17 16:23:19 +01:00
Daniel Gultsch dd237a272b version bump to 1.23.2 + changelog 2017-12-16 21:08:18 +01:00
Daniel Gultsch 2b0551a522 store new intent in welcome account activity 2017-12-16 21:05:56 +01:00
Daniel Gultsch 0cc6ff05f8 pulled translations from transifex 2017-12-16 20:45:26 +01:00
Daniel Gultsch 21615477ed transport invitee from welcome activity to start conversations activity 2017-12-16 20:38:14 +01:00
Daniel Gultsch c58fcb1dc6 create avatar in background thread 2017-12-16 14:22:57 +01:00
Daniel Gultsch 9b95f1102c PublishProfilePictureActivity: refresh on status change 2017-12-16 11:00:49 +01:00
Daniel Gultsch ccf75ef45a removed 'contact-only' hint from publish avtar screen 2017-12-15 21:47:16 +01:00
Daniel Gultsch bb6d5463fe use JPEG as file format for avatar and compress to <9400 chars 2017-12-15 20:49:48 +01:00
Daniel Gultsch 0be41e0aab refactor StartConversationsActivity 2017-12-15 19:13:58 +01:00
Daniel Gultsch cc6a001ac2 remove NFC handling + let edit account handle own jids 2017-12-15 18:25:21 +01:00
Daniel Gultsch 6a9abd0e49
Merge pull request #2720 from af8a524db1/uri_message
Handle 'message action' XMPP URIs
2017-12-15 16:17:05 +01:00
Daniel Gultsch cdd6bdab98 increased max lines to 8 2017-12-15 16:14:41 +01:00
Daniel Gultsch 8d339b6521 remove NFC + light refactoring of XmppActivity 2017-12-15 16:14:04 +01:00
Daniel Gultsch df37e34e02 use show password widget in Change Password Activity 2017-12-15 12:31:31 +01:00
Daniel Gultsch a817a96c58 pulled translations from transifex 2017-12-15 12:01:45 +01:00
Daniel Gultsch a0c8e6170b limit height of input field to 6 lines 2017-12-15 02:54:03 +01:00
Daniel Gultsch 4d4586eaea Conference Details: hide settings in offline mucs 2017-12-15 02:53:52 +01:00
Daniel Gultsch 811abedf67 upgrade to gradle plugin 3 2017-12-15 02:53:32 +01:00
Daniel Gultsch 60ae269870 removed password repeat field in favor of show password field 2017-12-15 02:51:54 +01:00
Daniel Gultsch 02011790b4 enable proguard 2017-12-15 02:49:34 +01:00
Daniel Gultsch 38797177c7 ChatMarkers: parse own account from true counterpart 2017-12-14 19:34:35 +01:00
Daniel Gultsch a6864878ba pulled translations from transifex 2017-12-14 12:25:27 +01:00
Daniel Gultsch 120ddcf8c9 fixed treatAsDownload() for empty messages 2017-12-14 12:25:21 +01:00
Marc Schink 7dc68522a2 Handle NFC action in UriHandlerActivity 2017-12-13 21:20:30 +01:00
Marc Schink d5f8a4dacb StartConversationActivity: Scan QR codes via UriHandlerActivity 2017-12-13 21:20:30 +01:00
Marc Schink 75e16d0f54 UriHandlerActivity: Handle 'message action' XMPP URI 2017-12-13 21:20:30 +01:00
Marc Schink 0fac4be94d XmppUri: Parse 'message action' query 2017-12-13 21:16:31 +01:00
Daniel Gultsch 782b8fb744 fixup for pep omemo notification dedup 2017-12-13 20:28:30 +01:00
Marc Schink edf3c41e58 Add ShareViaAccountActivity 2017-12-12 17:15:16 +01:00
Marc Schink a7927d181b AccountAdapter: Allow hiding of state button 2017-12-12 17:15:13 +01:00
Marc Schink b8b7cc2635 Implement simple URI handler activity 2017-12-12 14:05:14 +01:00
Daniel Gultsch 9a796df2a3 add getAccountJids to DatabaseBackend 2017-12-11 15:56:15 +01:00
Daniel Gultsch 37bd26c75f save changed server id in replaced messages 2017-12-11 15:55:55 +01:00
Daniel Gultsch 946d97074f try to detect invalid nick (w/ emoji) in MUCs 2017-12-11 15:55:10 +01:00
Daniel Gultsch 43242a293e pulled translations from transifex 2017-12-09 19:00:09 +01:00
Daniel Gultsch a973833a4f support error messages in quick edit dialog 2017-12-09 18:46:21 +01:00
Daniel Gultsch b0d83ae4b9 restructure signing config 2017-12-09 16:15:21 +01:00
Daniel Gultsch 5f5f4ca190 version bump to 1.23.1 + changelog 2017-12-09 14:49:30 +01:00
Daniel Gultsch d349f634d0 ignore data uri after aesgcm uri 2017-12-09 14:45:54 +01:00
Daniel Gultsch efd8876001 pulled translations from transifex 2017-12-09 10:43:31 +01:00
Daniel Gultsch 9bdaeb340b fix format string 2017-12-09 10:42:24 +01:00
Daniel Gultsch 665c5da8ae fix xmpp uri regression 2017-12-08 18:44:08 +01:00
Daniel Gultsch 172d249369 initialize emoji helper in StartConversationActivity 2017-12-08 18:43:58 +01:00
Daniel Gultsch cdee6523e4 fix XmppUri for empty uris 2017-12-08 14:24:26 +01:00
Daniel Gultsch 1b0cd77c57 XmppConnection: refactor registration code. 'Open Website' on PAYMENT_REQUIRED failure 2017-12-08 14:23:38 +01:00
Georg Lukas d96180f0ee XEP-0393: fix off-by-one error in block detector ('``ii``ii') 2017-12-07 14:48:41 +01:00
Daniel Gultsch 328c6dea0f fixed workaround that allowed us to expire devices 2017-12-07 14:47:21 +01:00
Daniel Gultsch a4b44ee730 Styler: do not style across multiple messages 2017-12-06 16:58:08 +01:00
Daniel Gultsch c489b6a8eb put device id into setting for doze 2017-12-06 16:57:43 +01:00
Daniel Gultsch 97821f0633 possible fix for retry loop on pgp key annoucement 2017-12-05 19:16:53 +01:00
Daniel Gultsch 0e6d3db926 Do not show xmpp uris as links that have invalid jids 2017-12-05 19:02:23 +01:00
Daniel Gultsch 5885bc7f25 show warning when opening invalid jid 2017-12-05 17:29:05 +01:00
Daniel Gultsch b5fe8789e9 Refined avatar generation a bit 2017-12-05 14:15:10 +01:00
Daniel Gultsch 614372dcbb ConversationsAdapter: Do not show image preview. Show pictogram instead 2017-12-05 14:14:52 +01:00
Daniel Gultsch 9869310699 avoid some false positive quotes 2017-12-04 16:50:15 +01:00
Daniel Gultsch 95553750a3 Conference Options: fix context menus for people not in roster 2017-12-03 18:09:14 +01:00
Daniel Gultsch 208de32790 update readme. removed outdated 'contributors' section. github has the same information 2017-12-03 10:56:34 +01:00
Daniel Gultsch 31929b5bd2 version bump + changelog 2017-12-02 23:07:16 +01:00
Daniel Gultsch 4b5db2fb45 read marker from mam. only trust true counterpart when mam:2 is being used 2017-12-02 22:13:59 +01:00
Daniel Gultsch ffb3eeb913 MAM: update previously sent messages with server msg id during mam query 2017-12-02 20:52:30 +01:00
Daniel Gultsch fc8a5641db MAM: assume true counterpart is safe to extract when using mam:2 2017-12-02 18:11:03 +01:00
Daniel Gultsch 61f3539839 MAM: do not use private messages when finding last id in muc 2017-12-02 17:48:54 +01:00
Daniel Gultsch 97df4a682b MessageParser: ignore groupchat messages retrieved from user archive 2017-12-02 17:48:26 +01:00
Daniel Gultsch 6449881961 pulled translations from transifex 2017-12-01 23:16:37 +01:00
Daniel Gultsch 75b4926025 fixed publish-options migration 2017-12-01 18:54:39 +01:00
Daniel Gultsch 23e9c73c94 attempt to enable MAM(ejabberd) on muc configuration 2017-12-01 17:36:50 +01:00
Daniel Gultsch b158e9fd42 do not return muc whispers as last markable message 2017-11-30 17:26:50 +01:00
Daniel Gultsch 86f09dd9b9 PresenceParser: work around for ejabberd not including status code 110 in shut down presence 2017-11-30 13:21:03 +01:00
Daniel Gultsch 21480c9b98 pulled translations from transifex 2017-11-28 11:15:11 +01:00
Daniel Gultsch 64dd622d32 make 'markable' attribute persistent 2017-11-25 20:55:43 +01:00
Daniel Gultsch 7f4f30c849 ListItemAdapter: use ViewHolder 2017-11-23 23:26:19 +01:00
Daniel Gultsch d95ff134d9 pulled translations from transifex 2017-11-23 21:00:49 +01:00
Daniel Gultsch 9381c1d3e2 fixed content description for previous ViewHolder refactor 2017-11-23 20:32:51 +01:00
Daniel Gultsch 333e7a6510 deduplicate read markers if one with real jid is found 2017-11-23 18:19:05 +01:00
Daniel Gultsch 513427c8a8 MAM: start muc catchup with last sent message if serverId is available 2017-11-23 18:18:30 +01:00
Daniel Gultsch 7d04e6331a ConversationAdapter: use view holder 2017-11-23 09:59:49 +01:00
Daniel Gultsch 900ad2f7ef ConversationsAdapter: Use EmojiWrapper instead of EmojiTextView 2017-11-23 09:36:51 +01:00
Daniel Gultsch d7c5937c20 process emoji charsequence instead of using EmojiTextView 2017-11-22 21:17:38 +01:00
Daniel Gultsch 03c34649b4 shorten >4 names to a, b, c +n more 2017-11-22 17:57:28 +01:00
Daniel Gultsch 8696cf2235 PgpService: feed result intent back into decryption 2017-11-22 13:36:10 +01:00
Daniel Gultsch 4596cad3cb MessageParser: don't refresh view after parsing chat state when combined with message 2017-11-21 16:17:27 +01:00
Daniel Gultsch 381fe82b01 save full jid when sending in muc. check chat markers against 'sender' 2017-11-21 15:42:46 +01:00
Daniel Gultsch 79ea0713bb MessageAdapter: code reformat 2017-11-21 13:26:45 +01:00
Daniel Gultsch 702d6cf2a5 MessageParser: dismiss notification when receiving read marker from another client 2017-11-21 13:26:23 +01:00
Daniel Gultsch 05b6fdb9f1 use empty wake lock tag 2017-11-21 13:25:18 +01:00
Daniel Gultsch 52e09d17e8 MessageAdapter: do not apply empty size spans 2017-11-21 12:41:05 +01:00
Daniel Gultsch 9548a4f6af ConversationAdapter: do not show file icon when file has been deleted 2017-11-21 12:40:42 +01:00
Daniel Gultsch 28e005f926 send and show read markers in private, non-anonymous groups 2017-11-20 11:26:20 +01:00
Daniel Gultsch 1c65a17ff1 pulled translations from transifex 2017-11-20 11:16:34 +01:00
Daniel Gultsch 1780a4257f ConversationsAdapter: code cleanup 2017-11-20 11:12:11 +01:00
Daniel Gultsch ff0e2ff8e4 version bump to 1.22.1 + changelog 2017-11-18 11:26:59 +01:00
Daniel Gultsch 47adc9cdcf pulled translations from transifex 2017-11-18 11:26:22 +01:00
Daniel Gultsch e452d5d46d stop scrolling before changing conversations. fixes #2700 2017-11-17 21:00:01 +01:00
Daniel Gultsch a2d4ec46ba version bump support library 2017-11-17 10:30:04 +01:00
Daniel Gultsch 5e15c48206 refactore phone helper to ignore security exception 2017-11-17 10:28:51 +01:00
Daniel Gultsch a337be982f
Merge pull request #2696 from licaon-kter/patch-2
Fix typo
2017-11-16 16:14:57 +01:00
licaon-kter 1cc8a446f0
Fix typo 2017-11-16 17:02:14 +02:00
Daniel Gultsch 013822fe82 excute db read and writes on different threads 2017-11-16 15:53:03 +01:00
Daniel Gultsch 3dbe5db44b Rename 'conference' to 'group chat' 2017-11-16 13:30:27 +01:00
Daniel Gultsch 2d42646893 JingleConnection: fixed rare npe when canceling jingle 2017-11-16 12:49:15 +01:00
Daniel Gultsch c52492ada0 apperently some servers will ommit the from even for stanzas not going to them 2017-11-16 12:48:26 +01:00
Daniel Gultsch 75a485cbc1 catch all sorts of date parsing errors 2017-11-16 12:47:49 +01:00
Daniel Gultsch 8e4440a49a fixed ImStyleParser to not style '**test**' 2017-11-14 17:57:22 +01:00
Daniel Gultsch 3efa1c46ab remove numeric hint from captcha 2017-11-14 09:14:03 +01:00
Daniel Gultsch fced4a454e ConversationsAdapter: Do not show attachment icon + text if attachment is audio or location 2017-11-13 18:37:12 +01:00
Daniel Gultsch 8e4df80619 Merge branch 'patch-1' of https://github.com/Kandr0s/Conversations into Kandr0s-patch-1 2017-11-13 14:51:56 +01:00
Daniel Gultsch 3faf951f47 disable swipe to left to dismiss conversation 2017-11-13 14:51:45 +01:00
Kandr0s 308f451959 Show Drawable if Location/File/Voice 2017-11-13 13:39:06 +01:00
Daniel Gultsch 7c55d78b0a set attach icons in dark theme to 70% alpha 2017-11-12 19:23:33 +01:00
Daniel Gultsch bc9da1fbf4 remove prosody push from blacklist 2017-11-12 19:22:39 +01:00
Daniel Gultsch 49365511e4 trying to catch various dead system exception when scheduling new alarms and such 2017-11-12 19:22:07 +01:00
Daniel Gultsch 7e93f4519a catch all RuntimeExceptions when using MetadataRetriever 2017-11-12 19:20:35 +01:00
Daniel Gultsch a6d1559755 styler: ignore closing keyword when preceded by whitespace 2017-11-10 20:19:22 +01:00
Daniel Gultsch 513795fdf8 use view context instead activity to show toast in ConversationFragment 2017-11-10 20:18:47 +01:00
Daniel Gultsch d6eb08e0ed catch rare exception when transforming download uri to real path 2017-11-10 20:18:09 +01:00
Daniel Gultsch f4638d7eec catch some more exception when retrieving media runtime 2017-11-10 20:17:42 +01:00
Daniel Gultsch a37f7478e6 update shortcut badger 2017-11-10 14:45:35 +01:00
Daniel Gultsch db365477e7 update support library version 2017-11-10 14:45:09 +01:00
Daniel Gultsch c9e15edca0 updated gradle version 2017-11-10 10:31:24 +01:00
Daniel Gultsch 949d3280d3 open links in new tabs 2017-11-09 20:49:44 +01:00
Daniel Gultsch a5c33abe88 MessageAdapter: code cleanup 2017-11-09 20:23:31 +01:00
Daniel Gultsch 459cf09f06 FileProvider: attempt to work with sd cards 2017-11-08 20:34:08 +01:00
Daniel Gultsch 0e12b2d19a AndroidManifest: revert ManageAccount activity to single task 2017-11-08 20:33:48 +01:00
Daniel Gultsch 676f181cad lower priority for error notification 2017-11-08 20:33:05 +01:00
Daniel Gultsch e11cfff2b0 version bump to 1.22.0 + changelog 2017-11-08 16:34:16 +01:00
Daniel Gultsch e393de6832 disable auto fill on edit message box 2017-11-08 13:25:38 +01:00
Daniel Gultsch de46192a8d pulled translations from transifex 2017-11-08 13:25:13 +01:00
Daniel Gultsch e9587f73ce styling: introduce support for code blocks 2017-11-07 23:28:14 +01:00
Daniel Gultsch 2e3b5de6b6 do not quote quotes 2017-11-07 22:22:28 +01:00
Daniel Gultsch e5210bbaa0 brought back 'copy to clipboard' and 'quote' context menu options 2017-11-07 15:58:27 +01:00
Daniel Gultsch 49b4153fb5 make keyword styling work in quotes 2017-11-07 13:23:49 +01:00
Daniel Gultsch 22c37bd430 changed text styling to keep the keyword 2017-11-06 23:44:00 +01:00
Daniel Gultsch e0643f687b Merge branch 'master' of github.com:siacs/Conversations 2017-11-06 22:28:36 +01:00
Daniel Gultsch a2b940832e pulled translations from transifex 2017-11-06 20:17:37 +01:00
Daniel Gultsch af3c9be700 fix take photo with pending keys 2017-11-06 17:27:48 +01:00
Daniel Gultsch b32552f7d9
fixed markup in observations.md 2017-11-06 15:40:15 +01:00
Daniel Gultsch 894ffc6488 ExceptionHelper: code clean up 2017-11-06 14:20:58 +01:00
Daniel Gultsch aa10b9ff05 code refactoring to provide shorter account enabled check 2017-11-06 13:57:25 +01:00
Daniel Gultsch fd7ee7c025 AndroidManifest use singleTop instead of singleTask to start new task when sharing 2017-11-06 12:18:24 +01:00
Daniel Gultsch ebd3330037 changed preview alpha to 0.6f 2017-11-06 12:17:43 +01:00
Daniel Gultsch 4d896cc3ab initialize emoji compat in share activity 2017-11-06 12:16:55 +01:00
Daniel Gultsch c262cd5d6e support for basic IM styling 2017-11-05 21:34:40 +01:00
Daniel Gultsch 7984100e54 delete unneeded class 2017-11-05 16:32:57 +01:00
Daniel Gultsch 435d1ef5bd SASL: don't prefer PLAIN auth over DIGEST-MD5 for nimbuzz.com 2017-11-05 16:21:59 +01:00
Daniel Gultsch 8f0cd86090 Resync has_enabled_account setting after delete and on start 2017-10-28 17:49:51 +02:00
Daniel Gultsch 3205d763cf MessageAdapter: Display emojis slightly larger in text 2017-10-28 13:15:31 +02:00
Daniel Gultsch aeec76d68b Resolver: active network gets high priority 2017-10-28 13:12:11 +02:00
Daniel Gultsch 4d0986ee91 Resolver: Only prefer VPN connections when network is active 2017-10-27 21:57:31 +02:00
Daniel Gultsch 962add97f9 XmppConnection: throw bind failure when server tries to reassign domain 2017-10-27 18:26:06 +02:00
Daniel Gultsch 82e5a28f49 Sharing: request permission 2017-10-27 17:25:01 +02:00
Daniel Gultsch 08aad7d0aa black list certain local parts and show domain instead 2017-10-27 15:46:12 +02:00
Daniel Gultsch 3c2aa8a4d2 Config.java: removed dead code 2017-10-27 15:30:08 +02:00
Daniel Gultsch 6f802b88d2 XmppConnection: do not count stanzas before smacks session has started 2017-10-27 11:35:55 +02:00
Daniel Gultsch dc5d504edd MessageAdapter: round file sizes 2017-10-27 11:35:19 +02:00
Daniel Gultsch ad6f6183b8 video processing: pick smaller file after transcoding. do not transcode very small files 2017-10-27 11:34:53 +02:00
Daniel Gultsch 396ad3361f Jingle: create output stream on demand 2017-10-26 18:42:10 +02:00
Daniel Gultsch 73db0bd19f MessageAdapter: Do not display muc whispers as emoji only 2017-10-26 18:41:40 +02:00
Daniel Gultsch 6bc32d7e57 pulled translations from transifex 2017-10-23 21:14:23 +02:00
Daniel Gultsch ac50b367b7 don't share video twice after transcoding exception. fixes #2652 2017-10-14 02:38:05 +02:00
Daniel Gultsch 529ac01051 Merge pull request #2645 from licaon-kter/patch-1
Add field for actual result in issue template
2017-10-03 09:14:02 +02:00
licaon-kter 83084b9bd5 Add field for actual result
And make example version as current
2017-10-02 18:07:46 +03:00
Daniel Gultsch 48baf56622 save message drafts across restarts. fixes #2642 2017-10-01 22:52:21 +02:00
Daniel Gultsch 50d436fd81 EventReceiver: use setting to store enabled accounts 2017-10-01 18:44:28 +02:00
Daniel Gultsch a288ad8d6b Merge branch 'master' of github.com:siacs/Conversations 2017-10-01 10:42:24 +02:00
Daniel Gultsch 874c1f4c74 MessageAdapter: trim but don't replace all whitespaces before displaying emoji message 2017-10-01 10:42:01 +02:00
Daniel Gultsch a16aca03f8 Merge pull request #2643 from devurandom/patch-1
Fix typo in error_no_keys_to_trust_server_error
2017-09-30 20:03:39 +02:00
Daniel Gultsch 6713431986 Emoticons: support subdivision-flags 2017-09-30 18:58:35 +02:00
Daniel Gultsch 39a54838fa Emoticons: detect keycaps 2017-09-30 17:38:48 +02:00
Dennis Schridde 87b1cc6b38 Fix typo in error_no_keys_to_trust_server_error
Contact should be genitive (contact's), not plural (contacts)
2017-09-30 16:30:12 +02:00
Daniel Gultsch bbfabaf930 FileBackend: close cursor after retrieving file size 2017-09-30 15:50:01 +02:00
Daniel Gultsch 56eb49d8cc updated travis config 2017-09-30 01:23:20 +02:00
Daniel Gultsch 014052b991 added a few codepoints with emoji variants 2017-09-30 01:18:08 +02:00
Daniel Gultsch f53e44a291 refactor emoji detector and fix fitzpatrick followed by zwj 2017-09-29 23:27:08 +02:00
Daniel Gultsch f0e48c8af5 use own algorithm to count emoji instead of using emoji-java 2017-09-29 22:56:17 +02:00
Daniel Gultsch 42b4528d03 use emoji compat 2017-09-29 19:44:30 +02:00
Daniel Gultsch c69c358bac upgraded build tools and gradle file 2017-09-29 13:28:30 +02:00
Daniel Gultsch 0cdcafe745 version bump to 1.21.0 + changelog 2017-09-28 22:47:54 +02:00
Daniel Gultsch bb10cef505 pulled translations from transifex 2017-09-27 10:52:53 +02:00
Daniel Gultsch 9b4149a63d limit audio player width on small screens 2017-09-27 10:21:34 +02:00
Daniel Gultsch acd4b149f5 slight refactoring in MessageAdapter 2017-09-27 10:21:00 +02:00
Daniel Gultsch a95fe08780 version bump to 1.21.0-beta 2017-09-24 08:35:17 +02:00
Daniel Gultsch 129b84bda8 add maintanence intent to renewe instance id 2017-09-22 13:31:00 +02:00
Daniel Gultsch b292a6bbd4 pulled translations from transifex 2017-09-22 13:28:13 +02:00
Daniel Gultsch c3dcc74b23 select presence if necessary when resending file 2017-09-22 11:14:56 +02:00
Daniel Gultsch a3be1e964c execute video compression on seperate thread 2017-09-21 21:54:10 +02:00
Daniel Gultsch e5becc2e12 slightly refactor dns resolver 2017-09-21 21:46:11 +02:00
Daniel Gultsch 881d4ad5b7 give exec resolver a lower priority over reflection. fixes #2629 2017-09-21 10:31:21 +02:00
Daniel Gultsch 2eb7197e04 removed unnecessary padding restrictions around emoji messages 2017-09-20 21:04:41 +02:00
Daniel Gultsch 118ab7f8fe update minidns 2017-09-20 20:30:14 +02:00
Daniel Gultsch 20b14091d6 play audio files inline 2017-09-20 15:35:35 +02:00
Daniel Gultsch 30b6201b95 reworked file params to store audio runtime amoung other things 2017-09-19 22:42:22 +02:00
Daniel Gultsch 9733003d0f removed duplicate code from message bubble layouts 2017-09-19 19:02:35 +02:00
Daniel Gultsch acc78145db unified share with menu. fixes #2630 2017-09-19 16:28:01 +02:00
Daniel Gultsch dbd489cbcb show correct tooltip when long pressing start conversations. fixes #2635 2017-09-19 10:43:25 +02:00
Daniel Gultsch 4e864935fe ignore http upload file size constraints for videos that will be compressed 2017-09-18 22:42:25 +02:00
Daniel Gultsch 66dd4dc654 pulled translations from transifex 2017-09-18 18:26:53 +02:00
Daniel Gultsch 0603378c75 show permanent notification while transcoding video 2017-09-18 17:56:25 +02:00
Daniel Gultsch 17e70f55a0 made video thumbnail available during upload 2017-09-18 12:31:57 +02:00
Daniel Gultsch c2105dfe46 use lower resolution for videos longer than 8s 2017-09-18 11:54:14 +02:00
Daniel Gultsch d4c16b5a85 added dedicated 'record video' attachment button. fixes #2592
thank you @BlauerHunger
2017-09-18 11:51:47 +02:00
Daniel Gultsch 22a058ff61 show block menu after long press on allow/add back 2017-09-11 09:53:14 +02:00
Daniel Gultsch 63817ecda1 removed unused 'disable foreground' button 2017-09-11 09:27:39 +02:00
Daniel Gultsch 32b1e5b306 additional null checks around 'read by' intent 2017-09-11 09:23:14 +02:00
Daniel Gultsch 60d97e70f0 do not ignore extra translations linter 2017-09-10 17:19:55 +02:00
Daniel Gultsch 0663e04e0a pulled translations from transifex 2017-09-10 17:19:42 +02:00
licaon-kter 200fda141b Cleanup some unused strings 2017-09-09 18:58:21 +03:00
Daniel Gultsch 5cc92acbee use 'partial' in server info if publish-options is n/a
fixes #2621
2017-09-09 13:34:51 +02:00
Daniel Gultsch 39ad17b8d3 Merge branch 'master' of github.com:siacs/Conversations 2017-09-07 08:28:56 +02:00
Daniel Gultsch f824b23ca6 pulled translations from transifex 2017-09-06 08:38:29 +02:00
Daniel Gultsch 57ca77aa0c (re)enable message correction by default 2017-09-06 08:38:14 +02:00
Daniel Gultsch 97dc6a85cc Merge pull request #2596 from licaon-kter/patch-1
Add two details about backup
2017-08-31 13:29:54 +02:00
Daniel Gultsch 8126bc98b4 Merge branch 'master' of https://github.com/invisiblek/Conversations into invisiblek-master 2017-08-31 12:43:34 +02:00
Dan Pasanen bbce690d4f NotificationService: add button to mark conversation as read 2017-08-30 11:15:03 -05:00
Daniel Gultsch 0f39ad0f04 make filtered list item activity survive roations 2017-08-28 18:30:39 +02:00
Daniel Gultsch ccb47c5727 get rid of uneccessary 'own omemo fingerprint' string. fixes #2599 2017-08-28 18:15:39 +02:00
licaon-kter fafd1fdf39 Fix typo 2017-08-26 10:49:50 +03:00
licaon-kter cefaaea0f1 Add two details about backup 2017-08-25 15:49:43 +03:00
Daniel Gultsch bd15385145 version bump to 1.20.1 + changelog 2017-08-24 10:13:16 +02:00
Daniel Gultsch d4c8f0191c pulled translations from transifex 2017-08-24 10:09:23 +02:00
Daniel Gultsch 617425e7ff link jid in trust keys activity to contact details 2017-08-24 10:09:16 +02:00
Daniel Gultsch f4ff644338 reintroduced fixed IV mode for OTR file transfer. fixes #2595 2017-08-23 22:37:13 +02:00
Daniel Gultsch e6a67a6c26 made avatar cache cleaning more efficent after name changes 2017-08-23 21:49:25 +02:00
Daniel Gultsch d348780dfc wait up to 2s to let server close socket before force closing 2017-08-23 12:33:40 +02:00
Daniel Gultsch 94e0c6b38c don’t use xmpp or jabber as default muc nick 2017-08-23 10:06:32 +02:00
Daniel Gultsch 26f7702c39 request storage permission when sending gif. fixes #2589 2017-08-22 16:51:42 +02:00
Daniel Gultsch 9b4cb37477 version bump to 1.20.0 2017-08-22 13:35:22 +02:00
Daniel Gultsch 85b502cff9 use proper defaults for notification. fix sound playing twice on Android 8 2017-08-22 12:19:18 +02:00
Daniel Gultsch debbaa8be2 pulled translations from transifex 2017-08-22 11:28:13 +02:00
Daniel Gultsch 6777ecdb00 set status=received on status messages 2017-08-21 16:19:35 +02:00
Daniel Gultsch e0fa820436 improved error messages on missing omemo keys 2017-08-21 14:08:20 +02:00
Daniel Gultsch 8c3586f6a0 updgrade gradle plugin 2017-08-21 09:32:55 +02:00
Daniel Gultsch 6afa5653cb fixed jingle state machine being thrown off by iq-result coming after session-accept
fixes #2587
2017-08-18 14:33:56 +02:00
Daniel Gultsch 1383d3d2e4 fixed regression that set the autojoin default to false 2017-08-18 13:43:24 +02:00
Daniel Gultsch dd5e321247 fixed conference naming for joined people not in your contact list 2017-08-15 12:56:32 +02:00
Daniel Gultsch 65d4f50b02 version bump to 1.12.0-beta.2 2017-08-15 11:56:51 +02:00
Daniel Gultsch 473f41646b pulled translations from transifex 2017-08-15 10:41:46 +02:00
Daniel Gultsch 4ed74eafc8 reset attempt counts on enable 2017-08-12 22:17:49 +02:00
Daniel Gultsch 699e845e6d default input type to numbers on captcha dialog 2017-08-12 22:17:24 +02:00
Daniel Gultsch 097fe3e1b6 no automatic reconnect on registration failures 2017-08-12 22:17:04 +02:00
Daniel Gultsch d6193aa586 pulled translations from transifex 2017-08-12 12:07:52 +02:00
Daniel Gultsch 57c11d42d5 create a new axolotl service when the account jid changes 2017-08-10 22:34:03 +02:00
Daniel Gultsch 0da2f1ed3f prevent users from editing their account jid after successful login 2017-08-10 22:34:03 +02:00
Daniel Gultsch 26765a8a0d send unavailable presence before join 2017-08-10 22:33:40 +02:00
Daniel Gultsch 1b5979dc50 Merge pull request #2580 from moparisthebest/master
Read support for 12-byte IVs in addition to 16-byte IVs
2017-08-10 08:11:07 +02:00
moparisthebest 197352b669 Read support for 12-byte IVs in addition to 16-byte IVs 2017-08-09 23:42:35 -04:00
Daniel Gultsch d8d1c1192f code cleanup and synchronized getMarkableMessage() 2017-08-09 09:43:41 +02:00
Daniel Gultsch 995d975127 removed support for fixed IV mode in otr jingle file transfer that hasn't been used since v0.4 or something 2017-08-09 09:43:12 +02:00
Daniel Gultsch cce5a7b39f parse jid from CN in client certs if nothing else is available 2017-08-07 16:02:48 +02:00
Daniel Gultsch 4a43df8c97 do not crash on some very rare logging 2017-08-07 15:55:56 +02:00
Daniel Gultsch ed4a190793 Merge branch 'master' of github.com:siacs/Conversations 2017-08-05 19:53:36 +02:00
Daniel Gultsch 719102d02f change bounty source badge to open bounties 2017-08-05 19:52:17 +02:00
Daniel Gultsch c3926a9ef8 Merge pull request #2483 from uchchishta/patch-1
add badges in README.md & align center
2017-08-05 19:51:01 +02:00
Daniel Gultsch 1ab391931d some code cleanup. and avoid scheduling reconnect task for negative interval 2017-08-05 19:13:29 +02:00
Daniel Gultsch 490115d20e do not run file observer on hidden directories 2017-08-05 19:12:44 +02:00
Daniel Gultsch 911e392006 update mini dns 2017-08-05 15:17:10 +02:00
Daniel Gultsch b925f436fd add more logging to http download connection and reset file params after setting expected size 2017-08-04 11:58:12 +02:00
Daniel Gultsch 5cee46cda5 version bump to 1.12.0-beta + changelog (untagged/unreleased) 2017-08-03 14:21:48 +02:00
Daniel Gultsch 014643b9c4 pulled translations from transifex 2017-08-03 14:21:22 +02:00
Daniel Gultsch c3cbb21133 cache some information generated from body like isEmojiOnly, fileParams and isGeoUri 2017-08-03 13:24:41 +02:00
Daniel Gultsch 7bcf173866 remove all whitespaces in emoji only messages 2017-08-03 10:55:14 +02:00
Daniel Gultsch 225cca4566 provide extra 'network is unreachable' account state 2017-08-02 18:58:51 +02:00
Daniel Gultsch 4ff3c36ed9 updated build tools and some library versions 2017-08-02 17:42:21 +02:00
Daniel Gultsch 768eadde36 use random string generator instead of BigInteger in DigestMd5 2017-08-01 12:27:26 +02:00
Daniel Gultsch 82c5924434 display messages that only contain emoji slightly larger 2017-07-30 22:04:58 +02:00
Daniel Gultsch e11277c70f use base64 instead of base36 when creating random strings 2017-07-30 11:39:47 +02:00
Daniel Gultsch 01b207d44d avoid empty strings when figuring out display name 2017-07-30 11:39:16 +02:00
Daniel Gultsch d3194172c5 update dependencies 2017-07-29 13:50:59 +02:00
Daniel Gultsch f5da4791ad avoid unnecessary roster sync in OMEMO code. fixed startup performance regression 2017-07-29 13:50:32 +02:00
Daniel Gultsch 837c212931 refresh omemo activity after failing to fetch keys due to lack of ids 2017-07-28 18:37:07 +02:00
Daniel Gultsch ad601e47c8 fixed roster items w/o subscription (request) not being shown 2017-07-28 18:34:55 +02:00
Daniel Gultsch ea6289c02e pulled translations from transifex 2017-07-26 13:23:40 +02:00
Daniel Gultsch d6e51288c3 Merge pull request #2564 from yushijinhun/fix-decryption-blocked
Give up PGP decryption when intent is cancelled
2017-07-25 09:20:51 +02:00
yushijinhun 48147b7fd1
Give up PGP decryption when intent is cancelled
When receiving a PGP message which is not encrypted with YOUR key,
OpenKeychain shows a dialog, which tells you the private key to decrypt
the message is unavailable. However, Conversations won't give up
decrypting the message. So whether the subsequent messages are
decryptable or not, the decryption is blocked at the current message.
The commit fixes the bug in this way: Give up the current message when
the decryption intent is cancelled, so that subsequent messages can be
handled.
2017-07-25 15:09:18 +08:00
Daniel Gultsch 432598f896 Merge branch 'bugfixes' 2017-07-23 07:53:09 +02:00
Daniel Gultsch 7ac26952d7 version bump to 1.19.5 + changelog 2017-07-23 07:51:13 +02:00
Daniel Gultsch c8bd5bc1f5 made OF selfSigned() workaround only available >=kitkat
this undos 8a729061d5. as it turns out 4.1
and 4.0 only break when checking if a cert is self signed.
2017-07-23 07:47:39 +02:00
Daniel Gultsch 2fc216bfc4 skip initial socket closing if thread was already interrupted 2017-07-21 08:30:16 +02:00
Daniel Gultsch 74cde1d60a incorporate support for publish-options into server info 2017-07-18 12:51:15 +02:00
Daniel Gultsch 85dc0c284d made omemo always available but in public mucs 2017-07-18 12:51:15 +02:00
Daniel Gultsch 002dbf2e17 enable all encryption options 2017-07-18 12:51:15 +02:00
Daniel Gultsch da87eac48e provide upgrade path for accounts with publish-options 2017-07-18 12:51:15 +02:00
Daniel Gultsch 9a57673130 use publish-options instead of always pushing node configuration 2017-07-18 12:51:15 +02:00
Daniel Gultsch 8d6b2074cb let hasPendingFetches() return true when fetching device ids 2017-07-18 12:51:15 +02:00
Daniel Gultsch 7a2856ac86 fetch required device ids on demand 2017-07-18 12:51:15 +02:00
Daniel Gultsch f7258d16e1 explicitly fetch device ids before building sessions in single mode conversation 2017-07-18 12:51:15 +02:00
Daniel Gultsch 25e993693f change access model of omemo pep nodes after every publish 2017-07-18 12:51:15 +02:00
Daniel Gultsch 6c95897f09 fetch device ids for muc members w/o known devices 2017-07-18 12:51:15 +02:00
Daniel Gultsch 2a198793b1 fixed otr jingle file size reporting 2017-07-18 12:43:53 +02:00
Daniel Gultsch 58f3787795 increment version code for 1.19.4 2017-07-17 23:14:02 +02:00
Daniel Gultsch 8a729061d5 use CN-workaround for pre-kitkat 2017-07-17 23:13:55 +02:00
Daniel Gultsch 8285a4fe1c pulled translations from transifex 2017-07-17 22:06:56 +02:00
Daniel Gultsch 217335703c fix regression introduces with OF fix. properly fall back to common name 2017-07-17 21:11:15 +02:00
Daniel Gultsch 0a20b87ebe check length first in timestamp parser 2017-07-16 21:03:59 +02:00
Daniel Gultsch febee9863f catch IllegalArgumentException caused by invalid custom hostname 2017-07-16 21:02:56 +02:00
Daniel Gultsch 2dce71cd96 version bump to 1.19.4 + changelog 2017-07-16 11:38:17 +02:00
Daniel Gultsch 8afe7efc2c workaround for OpenFire: check CN first in self signed certs
The self signed certificates created by OpenFire (Not sure if other
certs are affected as well) will crash the Java/Android TLS stack when
accessing getSubjectAlternativeNames() on the the peer certificate.

This usually goes unnoticed in other applications since the
DefaultHostnameVerifier checkes the CN first. That however is a
violation of RFC6125 section 6.4.4 which requires us to check for the
existence of SAN first.

This commit adds a work around where in self signed certificates we
check for the CN first as well. (Avoiding the call to
getSubjectAlternativeNames())
2017-07-16 11:05:25 +02:00
Daniel Gultsch dfa17d1339 more migration fixes for updating from 1.6.0 to 1.19.3 2017-07-14 10:34:01 +02:00
Daniel Gultsch 91119ab691 add reminder to remove minidns workarounds once those are fixed 2017-07-14 09:09:26 +02:00
Daniel Gultsch ea6b756c0f fixed bug in db migrations when going from <15 to something recent 2017-07-13 19:28:16 +02:00
Daniel Gultsch 3d0b127a8f verify with hostname in direct tls connections 2017-07-13 19:27:43 +02:00
Daniel Gultsch 7623accfd5 prefer DNS servers from VPNs 2017-07-12 22:19:45 +02:00
Daniel Gultsch 35a4b848a5 version bump to 1.19.3 + changelog 2017-07-12 14:46:12 +02:00
Daniel Gultsch 45f92553c4 pulled translations from transifex 2017-07-12 11:54:05 +02:00
Daniel Gultsch ecc0ef45c5 disable foreground service if all accounts are disabled 2017-07-12 11:03:32 +02:00
Daniel Gultsch edb28ccb31 throw state changing exception on failed tls only if no more connection options left 2017-07-11 23:25:59 +02:00
Daniel Gultsch 19c1484053 catch runtime exceptions from minidns 2017-07-11 23:24:09 +02:00
Daniel Gultsch 8de81e0bc8 sync around Conversation.getLatestMessage() 2017-07-11 23:09:51 +02:00
Daniel Gultsch 4d1b6d4404 version bump to 1.19.2 + changelog 2017-07-10 12:38:48 +02:00
Daniel Gultsch c5824a3b2a catch all exceptions around minidns :( 2017-07-10 12:33:04 +02:00
Daniel Gultsch a1f9f5e774 version bump to 1.19.1 + changelog 2017-07-10 10:06:20 +02:00
Daniel Gultsch 8415f27cac pulled translations from transifex 2017-07-10 10:06:08 +02:00
Daniel Gultsch abf84e065d made DNSEC hostname validation opt-in 2017-07-10 09:59:25 +02:00
Daniel Gultsch da00a58902 work around idn short comings in minidns 2017-07-10 08:50:01 +02:00
Daniel Gultsch 7cbef529ae resolve non-srv domains in resolver class as well
this allows us to prefer ipv4
2017-07-10 08:49:22 +02:00
Daniel Gultsch c400f74918 prefer ipv4 over ipv6 2017-07-09 19:05:23 +02:00
Daniel Gultsch 67bc032ccc fixed fallback to normal DNS query after DNSSEC failed 2017-07-09 18:03:26 +02:00
Daniel Gultsch ae0ba3bbc1 version bump to 1.19.0 + changelog 2017-07-05 13:16:54 +02:00
Daniel Gultsch 7df0f3fd28 pulled translations from transifex 2017-07-05 11:29:42 +02:00
Daniel Gultsch ef980ff5cf show date separators. fixes #2271 2017-07-04 11:01:20 +02:00
Daniel Gultsch 2ada4d5cfe allow users to send PMs in mucs w/o voice 2017-07-03 23:58:34 +02:00
Daniel Gultsch f2409ed95e set focusable=false instead of enabled=false for rooms w/o voice 2017-07-03 19:55:21 +02:00
Daniel Gultsch 5cac4397dd catch state changing error when sending timeout to iq callbacks 2017-07-03 19:44:01 +02:00
Daniel Gultsch 7cf360fabf do not keep files in waiting when file size exceeds http upload limit in groups. fixes #2533 2017-07-01 19:31:48 +02:00
Daniel Gultsch 2b9cdde558 refactored retrieval of default preferences 2017-07-01 13:41:24 +02:00
Daniel Gultsch 7d4d5c437a pulled translations from transifex 2017-06-30 21:28:02 +02:00
Daniel Gultsch 311c99bb6d put settings defaults into resource file 2017-06-30 21:22:35 +02:00
Daniel Gultsch 4a2e222b34 deduplicate disco items before disco#info 2017-06-30 08:45:16 +02:00
Daniel Gultsch 7c1e1132b0 make scan barcode icon survive rotations 2017-06-29 20:23:28 +02:00
Daniel Gultsch b2aae44645 show scan button in TrustKeys only if there is something to scan 2017-06-29 14:01:12 +02:00
Daniel Gultsch cbbf6f439b add publish-options helper class 2017-06-27 22:50:39 +02:00
Daniel Gultsch 90afaab8ed version bump to 1.19.0-beta.2 + changelog 2017-06-27 16:30:01 +02:00
Daniel Gultsch 59e39304dd use DND instead of XA when phone is silent 2017-06-27 12:24:26 +02:00
Daniel Gultsch c85b3bbacc revised resolver strategy 2017-06-26 14:03:38 +02:00
Daniel Gultsch 6dad1c0dde refactored resolver to fall back to DNS and use reliable method 2017-06-25 22:46:56 +02:00
Daniel Gultsch 4faf0f2ec9 use ResolverApi.reliable(..) 2017-06-25 19:30:03 +02:00
Daniel Gultsch 2c5250a82c new resolver fall back to normal dns if dnssec verfication fails 2017-06-25 18:35:40 +02:00
Daniel Gultsch cbce73c301 fixed fingerprint trust (was messed up after library upgrade) 2017-06-25 18:18:13 +02:00
Daniel Gultsch 24ab765e11 pulled translations from transifex 2017-06-25 16:01:37 +02:00
Daniel Gultsch 6ec8e57fbb change order of settings. move heads-up notifications up 2017-06-25 16:00:07 +02:00
Daniel Gultsch 14fd41cd7f fixed patterns source code url 2017-06-25 12:03:26 +02:00
Daniel Gultsch 19b4207c3a Merge branch 'master' of https://github.com/BlauerHunger/Conversations into BlauerHunger-master 2017-06-24 16:16:34 +02:00
Daniel Gultsch d24022d755 cleanup nameWithoutVersion() code 2017-06-24 16:13:55 +02:00
Ferdinand Pöll f8e031ac86 Added preference to control Heads-up Notifications (turned off by default) 2017-06-24 15:38:16 +02:00
Daniel Gultsch 5fd4169720 don't use version part of identity name in presence selection. fixes #2519 2017-06-23 14:51:08 +02:00
Daniel Gultsch 3c90dbe723 fixed ip reporting for dns look ups 2017-06-22 00:09:59 +02:00
Daniel Gultsch 2ed71df01a also check for hostname in in certs if hostname is from trusted source 2017-06-21 23:40:01 +02:00
Daniel Gultsch 2e380ed792 upgrade minidns. refactored dns utils 2017-06-21 23:28:01 +02:00
Daniel Gultsch 5d9d725446 offer to open website if ibb offers oob redirect. fixes #2503 2017-06-19 20:02:41 +02:00
Daniel Gultsch 95405fde5f mark message as failed after canceling ft w/o transferable. fixes #2513 2017-06-19 13:23:20 +02:00
Daniel Gultsch 24768d051d upgrade to signal-protocol-java. thanks @ysangkok
fixes #1384
closes #2509
2017-06-18 16:36:30 +02:00
Daniel Gultsch f67baab983 revised strategy for http upload read timeout 2017-06-18 16:32:01 +02:00
Daniel Gultsch a1fe8f1c87 make http upload read timeout depend on file size 2017-06-14 16:27:38 +02:00
Daniel Gultsch 00bb527333 recreate settingsactivity when theme changed 2017-06-05 14:57:09 +02:00
Daniel Gultsch 10025123e9 make MemorizingTrustManager use Build-Tools 25.0.3 2017-06-05 10:43:18 +02:00
Daniel Gultsch f7f6e8dfd5 make launching app shortcuts work with disabled accounts 2017-06-05 10:18:02 +02:00
Daniel Gultsch 012f60be56 use proper alpha for dark themed icons 2017-06-04 00:05:02 +02:00
Daniel Gultsch 51badfa721 enable forground service for sony smartphones by default 2017-06-02 13:00:20 +02:00
Daniel Gultsch e722ef6477 do not accept LMC for files 2017-06-02 13:00:02 +02:00
Daniel Gultsch 612e0afa63 do not parse delay tag for unavailable presences when it comes form own server 2017-06-01 16:45:00 +02:00
Daniel Gultsch ed7882fe69 fix NPE when bookmark jid is null on creating suggestions 2017-06-01 16:44:35 +02:00
Daniel Gultsch 3889c0eb01 use application/pgp-encrypted mime type when necessary for http upload 2017-06-01 07:35:18 +02:00
Daniel Gultsch 9dcd0bf16b 'end this conversation afterwards' checked by default
closes #2364 #2382
2017-05-31 19:58:54 +02:00
Daniel Gultsch 2cf05528b4 add the 4 most frequently contacted contacts as app shortcuts 2017-05-31 16:45:51 +02:00
Daniel Gultsch e48517b0c8 version bump to 1.18.5 + changelog 2017-05-31 11:38:30 +02:00
Daniel Gultsch 7b271bcf67 pulled translations from transifex 2017-05-31 11:38:16 +02:00
Daniel Gultsch 50f61a4d91 do not check if namespace equals prefix for attributes 2017-05-30 19:05:36 +02:00
Daniel Gultsch 6ccdd1227e parse all delayed tags. use min date 2017-05-30 08:39:04 +02:00
Daniel Gultsch e973117aed deal with namespace attributes. fixes #2495 2017-05-30 08:38:33 +02:00
Daniel Gultsch 3ece613a5d rename resource on bind conflict 2017-05-25 14:40:59 +02:00
Daniel Gultsch fe29b51290 rename downgrade attack to downgraded sasl mechanism 2017-05-24 19:12:37 +02:00
Daniel Gultsch 51d1223198 invoke statusChanged callback after syncronization 2017-05-19 15:28:25 +02:00
Daniel Gultsch 5a5eb5bdd3 do not turn send button green unless history is caught up. fixes #1232 2017-05-19 13:39:44 +02:00
Daniel Gultsch 7cd4ed78b2 synchronize on dedicated lock for catchup instead of account 2017-05-19 13:30:57 +02:00
Daniel Gultsch 9fd6539534 clean up client cert selection code 2017-05-18 11:31:31 +02:00
uchchishta 7e5e32e9eb add badges & align center 2017-05-13 20:58:31 +05:30
Daniel Gultsch 41b3df0d43 fall back to jingle only in 1:1. fixes #2482 2017-05-13 08:11:24 +02:00
Daniel Gultsch 2f577097d1 work around for brokens ROMs that expose file uris as notification sound 2017-05-13 08:10:47 +02:00
Daniel Gultsch 5056a28553 differentiate starttls failure and sasl failure 2017-05-13 08:08:05 +02:00
Daniel Gultsch 91db2023d3 use mam reference instead of timestamp 2017-05-07 21:05:35 +02:00
Daniel Gultsch 185dac6953 synchronize around adding query to query map 2017-05-07 15:47:18 +02:00
Daniel Gultsch a5d9932b08 version bump to 1.18.4 + changelog 2017-05-07 15:39:50 +02:00
Daniel Gultsch b0a8da35db add ability to distrust inactive/trusted keys 2017-05-06 18:38:23 +02:00
Daniel Gultsch 0f2e60d576 pulled translations from transifex 2017-05-06 15:37:35 +02:00
Daniel Gultsch 9a7d925b97 do not synchronize startXmpp() and sendPacket() on the same object as this can block the ui 2017-05-06 15:37:22 +02:00
Daniel Gultsch be371ac5df reset resource after bind failure 2017-05-05 09:38:58 +02:00
Daniel Gultsch 7b6d49f329 unified all account state exceptions 2017-05-05 09:33:05 +02:00
Daniel Gultsch 404cf808b0 set catchup flag on mam only when doing that 2017-05-04 22:11:46 +02:00
Daniel Gultsch f98888d796 display open pgp key id in account details and allow to delete. fixes #2470 2017-05-04 13:02:46 +02:00
Daniel Gultsch 839178b269 suggest bookmarked conferences servers in join conference dialog 2017-05-04 11:28:54 +02:00
Daniel Gultsch cc1402442a don't load signed prekeys on startup 2017-05-04 11:03:58 +02:00
Daniel Gultsch f47cf7ae67 make jingle implementation send file hash when using ft5 2017-05-03 11:03:04 +02:00
Daniel Gultsch ef78721f94 fixed regression from previous commit and brought back 'select text' 2017-05-02 10:42:50 +02:00
Daniel Gultsch 7c31a981bb unified copy text and share with context menu entries 2017-04-30 21:03:44 +02:00
Daniel Gultsch cec9b9b35a send read marker after reading message in android auto 2017-04-30 21:02:50 +02:00
Daniel Gultsch 5cadc81de4 support for jingle ft:5. fixes #2458 2017-04-30 16:21:13 +02:00
Daniel Gultsch 84baa3ae68 avoid race conditions when downloading files or decrypting pgp messages and waiting for sm catchup 2017-04-30 16:19:39 +02:00
Daniel Gultsch 15e5ccd1f4 avoid race condition that lead to double notification sound 2017-04-30 13:59:45 +02:00
Daniel Gultsch 1a72683b52 close http download connection after download 2017-04-29 22:59:36 +02:00
Daniel Gultsch 7ba81177c6 Merge pull request #2468 from morgenroth/feature/Android-auto-support
Fix: Add messages to Notifications for Android Auto on Android M and older
2017-04-29 21:47:21 +02:00
Johannes Morgenroth adff2baa4a Add messages to Notification for Android Auto on Android M and older
In the previous implementation for Android Auto, messages are only added
on Android N and above. In order to support older Android versions, the
messages need to be added always.
2017-04-29 19:25:57 +02:00
Daniel Gultsch b3d4d0608f version bump to 1.18.3 + changelog 2017-04-27 17:27:39 +02:00
Daniel Gultsch a5e15d5a10 code cleanup: made conversation property final in message object 2017-04-26 12:43:52 +02:00
Daniel Gultsch f6c1af2b06 Merge pull request #2463 from participante0/patch-1
Update strings.xml
2017-04-26 11:05:17 +02:00
participante0 48e3726071 Update strings.xml
Added a comma.
2017-04-25 18:06:03 -03:00
Daniel Gultsch a55d0a691c while restoring state deal with conversations that don't have accounts 2017-04-25 18:17:23 +02:00
Daniel Gultsch 8e0fb6a23a avoid rare race condition when saving draft message 2017-04-25 18:16:55 +02:00
Daniel Gultsch 4d1308e138 fixed click area for pgp key in contact details 2017-04-25 15:23:01 +02:00
Daniel Gultsch e6eb58f2d7 send pgp signature when creating ad hoc conferences 2017-04-25 15:22:31 +02:00
Daniel Gultsch 2cfa3ce288 limited offline support for pgp group chats
use pgp key from contact if not set in muc
fixes #283
2017-04-25 15:19:54 +02:00
Daniel Gultsch 848c339c8d make sure context is not null before setting content description on send button 2017-04-25 14:11:45 +02:00
Daniel Gultsch c837e0616a make sure tag writer thread shuts down 2017-04-22 10:08:51 +02:00
Daniel Gultsch c93b1a86bb version bump to 1.18.2 + changelog 2017-04-21 18:55:53 +02:00
Daniel Gultsch 9f5a089d5c reworked unique id generation for notification intents 2017-04-21 15:13:08 +02:00
Daniel Gultsch c33f4b704c Merge branch 'android-auto-support' of https://github.com/morgenroth/Conversations into morgenroth-android-auto-support 2017-04-20 13:03:18 +02:00
Daniel Gultsch 9cc37a7bdb re-add redownload context menu entry for deleted files. fixes #2453 2017-04-20 11:52:54 +02:00
Daniel Gultsch ae85a9e87b made nimbuzz work around work with newly created conferences as well 2017-04-20 11:35:38 +02:00
Daniel Gultsch 067daa81f4 Merge pull request #2445 from SamWhited/send_content_description
Add content description to send button
2017-04-17 12:56:36 +02:00
Daniel Gultsch d86a4642e9 Merge pull request #2448 from morgenroth/Android-wear-action-icons
Add reply button in wear design
2017-04-17 12:54:35 +02:00
Johannes Morgenroth a4454bcff2 Add reply button in wear design
The existing reply button for Android wear has been re-used from the action
bar. Instead of a 'send' icon, a 'reply' icon better matches the intended
action. Moreover, action icons for Android wear are solid white instead of
half transparent.
2017-04-17 12:19:14 +02:00
Sam Whited 4a915c60e9 Add content description to send button
This can be used by screen readers and other accessibility aids.
2017-04-16 16:37:32 -05:00
Daniel Gultsch 6c34763d32 transform aesgcm:// links back to https:// before connecting through Tor
fixes #2444
2017-04-16 08:44:26 +02:00
Daniel Gultsch 1ac0c2f453 show 'try again' button when remote server wasn't found in previously active muc 2017-04-15 17:18:15 +02:00
Daniel Gultsch 483304c697 recognize muc self presence on nimbuzz.com
Apparently nimbuzz.com doesn't include status code 110 in muc self presence
It does however include the full real jid in the presence’s item.
We can use that as a work around to detect a self presence.
2017-04-15 15:14:12 +02:00
Daniel Gultsch c86134e523 version bump to 1.18.1 + changelog 2017-04-15 15:10:24 +02:00
Daniel Gultsch d220d9db05 pulled translations from transifex 2017-04-15 15:09:50 +02:00
Johannes Morgenroth 403eff3d19 Add Android Auto support to notifications
This patch adds required additions in order to show notifications
in Android Auto. Messages are read aloud and voice reply is
offered. The functionaliy has been tested with the Android Auto
standalone app as well as with the DHU simulator as describes
here:

https://developer.android.com/training/auto/testing/index.html
2017-04-14 13:32:01 +02:00
Daniel Gultsch bf07196707 don't count >number% as quote 2017-04-13 17:29:11 +02:00
Daniel Gultsch 0904ba42f8 use async message loading only when called from UI 2017-04-13 00:12:23 +02:00
Daniel Gultsch 0229a1605e properly unregister bookmark from conversations when deleting bookmark 2017-04-12 23:41:59 +02:00
Daniel Gultsch 8742194f4b fixed message merge logic. merge only messages with lower status 2017-04-12 22:24:29 +02:00
Daniel Gultsch 4fd11a4c2b show first instead of last message in notification preview 2017-04-12 20:54:32 +02:00
Daniel Gultsch 4bbf2dab99 include RSM max in mam query in case server doesn't specify own max 2017-04-12 20:53:19 +02:00
Daniel Gultsch d4c2b12f95 Merge pull request #2437 from cijo7/f1
Removed unused imports from the entire project.
2017-04-12 20:52:06 +02:00
cijo-saju 3467a67e75 Removed unused imports from entire project. 2017-04-12 20:24:36 +05:30
Daniel Gultsch 03fff3179e Merge pull request #2431 from cijo7/f1
Minor code clean up
2017-04-08 10:18:05 +02:00
cijo-saju 5a27da848b Clean up 2017-04-08 11:04:20 +05:30
cijo-saju 41112d29bd Removed unnecessary string builder 2017-04-08 10:12:40 +05:30
cijo-saju ed8336ee54 Made variable local 2017-04-08 10:08:28 +05:30
cijo-saju 11e26e71f6 Code clean up 2017-04-08 10:05:13 +05:30
Daniel Gultsch e98f7e57b0 be more careful with corner cases when mentioning multiple people 2017-04-07 19:47:33 +02:00
Daniel Gultsch cc1aa9e431 exclude >= from being recognized as quote 2017-04-07 14:30:30 +02:00
Daniel Gultsch 56f202d4b8 do not linkify urls starting with a dot 2017-04-07 14:29:55 +02:00
Daniel Gultsch d91c314ac2 use comma seperation for multiple mentions 2017-04-06 18:06:07 +02:00
Daniel Gultsch 65b3655a8b version bump to 1.18.0 + changelog 2017-04-06 14:05:50 +02:00
Daniel Gultsch 06d1e1752c pulled translations from transifex 2017-04-06 12:01:17 +02:00
Daniel Gultsch 649d1243d5 avoid crash on urls with missing protocols 2017-04-06 11:59:15 +02:00
Daniel Gultsch 99565a6876 treat URL as file if URL is in oob or contains key 2017-04-05 22:35:42 +02:00
Daniel Gultsch 26badb7f4c send urls pointing to pgp encrypted files directly in body+oob 2017-04-05 21:01:29 +02:00
Daniel Gultsch 3b3121b9c5 pulled translations from transifex 2017-04-05 21:00:16 +02:00
Daniel Gultsch 401329caaa use aesgcm:// uri scheme for omemo encrypted http upload 2017-04-05 18:46:56 +02:00
Daniel Gultsch f75eb6bc43 unread badge: show >999 as infinity symbol 2017-04-05 18:39:27 +02:00
Daniel Gultsch 081c33b886 do not parse bodies with http urls as downloadable in omemo encrypted message. fixes #1756 2017-04-04 22:20:05 +02:00
Daniel Gultsch b34a1f7f5e parse message that only contain oob tag. fixes #2359 2017-04-04 22:15:38 +02:00
Daniel Gultsch 75749d7c7b Merge branch 'develop' of https://github.com/cijo7/Conversations into cijo7-develop 2017-03-31 09:34:38 +02:00
Daniel Gultsch 9682f4d454 Merge branch 'deprecated-method' of https://github.com/hareshkh/Conversations into hareshkh-deprecated-method 2017-03-31 09:27:22 +02:00
Daniel Gultsch 4bfc54e51d show file size for files smaller 1024 bytes. fixes #2415 2017-03-31 09:26:55 +02:00
Daniel Gultsch cf96a5e840 Merge pull request #2423 from jcgruenhage/patch-1
Fixed Markdown Headings
2017-03-31 08:34:01 +02:00
Jan Christian Grünhage 92ac82f94d Fixed Markdown Headings 2017-03-30 20:11:55 +02:00
cijo-saju 3171dcac8d Fixed deprecated call 2017-03-30 16:27:11 +05:30
cijo-saju 4e898fa4f2 Run in background instead of writing instantaneously 2017-03-30 16:27:11 +05:30
Haresh Khanna c7912ed7ef Changes the deprecated getColor() method 2017-03-29 22:05:35 +05:30
cijo-saju 37465db817 Fixed package access 2017-03-28 21:02:20 +05:30
cijo-saju 024dbd1c32 Removed unused import and fixed some annotations 2017-03-28 20:46:20 +05:30
cijo-saju cb96911da3 Saves some memory 2017-03-28 20:43:14 +05:30
cijo-saju d8901441f6 Deleted unused variable 2017-03-28 20:41:08 +05:30
Daniel Gultsch 892b1b02af Merge pull request #2409 from cijo7/master
Fixed typo in comment
2017-03-26 20:11:37 +02:00
cijo-saju b4318996ac Fixed typo in comment 2017-03-26 22:07:39 +05:30
Daniel Gultsch 3af30d7563 omemo: put auth tag into key (verify auth tag as well) 2017-03-26 12:39:18 +02:00
Daniel Gultsch 2302122d8e made a few exceptions to quote parser for emoticons and quotes 2017-03-26 12:29:12 +02:00
Daniel Gultsch 00e8ba00c4 count messages in backlog to not renotify on prior notifications 2017-03-23 15:34:52 +01:00
Daniel Gultsch 010b341251 do not pipeline first SM request because that might fail when resume fails 2017-03-21 18:08:20 +01:00
Daniel Gultsch c97c5def2c experimental: wait for SM catchup before triggering notifications
wait for a first SM ACK before calculating if we need to trigger any notifications
might have to be changed to an XEP-0199 ping later on. for now sending <r/> after resume seems to work outfine
2017-03-21 17:58:08 +01:00
Daniel Gultsch 76b9010c39 rework last activity logic to something that should work pretty well in Conversations only enviroments 2017-03-20 17:58:58 +01:00
Daniel Gultsch 644a3a729d define strangers as people not in roster instead of no mutual presence subscription 2017-03-20 13:25:36 +01:00
Daniel Gultsch e58f72c20f show strangers with jid instead of name in conversation list 2017-03-20 13:24:33 +01:00
Daniel Gultsch c2c6904eda offer to block entire domain in message from stranger snackbar. fixes #2391 2017-03-20 12:55:48 +01:00
Daniel Gultsch 4171e2b90e do not show block stranger snackbar when blocking command is unavailable. fixes #2393 2017-03-20 12:16:25 +01:00
Daniel Gultsch 0db5928031 version bump to 1.17.1 + changelog 2017-03-20 11:15:23 +01:00
Daniel Gultsch e5f08a5eae pulled translations from transifex 2017-03-20 11:07:27 +01:00
Daniel Gultsch 4d2a1afaf9 call EditText.setText() instead of clear because clear causes problems on some keyboards 2017-03-20 00:09:23 +01:00
Daniel Gultsch 6167ddb4a8 don't mark message as delivery_failed when cancel didn't work. fixes #2387 2017-03-19 20:16:11 +01:00
Daniel Gultsch 30ed6b3cec call messageSent() from UI thread after encrypting pgp message 2017-03-19 20:15:07 +01:00
Daniel Gultsch ce336690e2 pulled translations from transifex 2017-03-17 13:19:37 +01:00
Daniel Gultsch 91a69d7d85 use qr codes instead of aztec. Barcode Scanner is terrible at reading aztec. fixes #2375 2017-03-17 12:56:55 +01:00
Daniel Gultsch 935ac25cbd update unread counter for image messages. fixes #2376 2017-03-17 12:55:33 +01:00
Daniel Gultsch ba32217152 pulled translations from transifex 2017-03-14 11:09:45 +01:00
Daniel Gultsch 95e33b5a97 never mark conversation w/ own server as stranger 2017-03-14 11:09:34 +01:00
Daniel Gultsch 09d68ae603 fixed entity time for timezones with minutes !=0 2017-03-10 17:25:43 +01:00
Daniel Gultsch 0b11d0f7f2 version bump to 1.17.0 + changelog 2017-03-10 10:14:06 +01:00
Daniel Gultsch 9c588ae9eb pulled translations from transifex 2017-03-10 10:10:07 +01:00
Daniel Gultsch 0ee13bbecb send chat states only to private and non-anon mucs 2017-03-09 15:42:27 +01:00
Daniel Gultsch 1fd3bbfe25 display chat states in conferences 2017-03-09 10:58:44 +01:00
Daniel Gultsch 5ea4322d3f send and parse Chat States to and from conferences 2017-03-09 10:58:44 +01:00
Daniel Gultsch 8a3c996164 update gradle version 2017-03-09 10:58:33 +01:00
Daniel Gultsch cdf2bd07df use async avatar loading in AccountAdapter 2017-03-09 10:58:11 +01:00
Daniel Gultsch c3b2f33956 hide keyboard after setting up account 2017-03-09 10:57:33 +01:00
Daniel Gultsch d56fb3cec2 pulled translations from transifex 2017-03-09 08:33:44 +01:00
Daniel Gultsch 19b7179bcd version bump to 1.17.0-beta.2 2017-03-08 22:07:37 +01:00
Daniel Gultsch 7747fc0ea1 notify for muc messages after mam catchup 2017-03-08 22:02:09 +01:00
Daniel Gultsch 6b72e18982 add <x/> element to outgoing MUC PM 2017-03-08 22:01:20 +01:00
Daniel Gultsch 1f3be1597c add origin-id to outgoing messages 2017-03-08 21:30:12 +01:00
Daniel Gultsch 9d043076e8 only take 1:1 conversations into account when determining catchup timestamp 2017-03-08 20:54:13 +01:00
Daniel Gultsch 8ca16a6f63 do not interpret grin >< as quote 2017-03-08 20:21:04 +01:00
Daniel Gultsch 064926a18b fixed regression that caused stanza-ids not to be saved 2017-03-08 20:20:34 +01:00
Daniel Gultsch a3b51f7654 do not show 'block stranger' snackbar in empty conversations 2017-03-08 11:54:52 +01:00
Daniel Gultsch 233ee8a51c version bump to 1.17.0-beta + changelog 2017-03-07 20:01:16 +01:00
Daniel Gultsch 721250c7d9 pulled translations from transifex 2017-03-07 18:55:05 +01:00
Daniel Gultsch 8502d519c1 changed string from unread conversation to messages in notification 2017-03-07 18:12:33 +01:00
Daniel Gultsch 5b17734287 Merge branch 'dev' of https://github.com/badarsh2/Conversations into badarsh2-dev 2017-03-07 17:21:14 +01:00
Daniel Gultsch 254edc48f5 show conversation time as last clear date when empty 2017-03-07 11:46:12 +01:00
Daniel Gultsch 3c951ce2cd set last clear date to time of last message 2017-03-07 11:45:35 +01:00
B Adarsh 87f0c4a646 Modifies notification for MUC conversations
Minor fixes

Replaces html.fromHTML with SpannableString
2017-03-07 16:10:45 +05:30
Daniel Gultsch 5fae9465d1 show snackbar in conversations with stranger to block. fixes #2358 2017-03-07 11:07:57 +01:00
Daniel Gultsch 7306e0286f do not notify for messages from strangers by default 2017-03-07 10:50:46 +01:00
Daniel Gultsch 857c761c68 fixed sender label for empty conversations 2017-03-07 09:22:42 +01:00
Daniel Gultsch 79b2f34685 added colon to seperate sender and message preview. only show first name 2017-03-06 19:42:27 +01:00
Daniel Gultsch 9f3543a650 Merge branch 'message-marker' of https://github.com/hareshkh/Conversations into hareshkh-message-marker 2017-03-06 19:07:27 +01:00
Daniel Gultsch 9ba5335ae7 cleaned code of muc name generator 2017-03-06 19:06:16 +01:00
Haresh Khanna 633aad3193 Adds a message sender label in each conversation for text messages 2017-03-06 23:25:13 +05:30
Daniel Gultsch 1c56b74e41 closing the corresponding conversations after blocking a contact. fixes #2347 2017-03-06 16:53:54 +01:00
Daniel Gultsch 5a00b11594 extract stanza-id from muc reflections 2017-03-06 13:30:13 +01:00
Daniel Gultsch 4a7dbaab1e deduplicate every message with a stanza-id from the server 2017-03-06 11:24:04 +01:00
Daniel Gultsch 6088913fb6 fixed multi-session-nick renaming behaviour 2017-03-05 17:42:17 +01:00
Daniel Gultsch aa24a057fc allow Conversations to access user trust store 2017-03-05 11:42:29 +01:00
Daniel Gultsch cae993a95f renamed enter jid menu item id 2017-03-05 11:40:48 +01:00
Daniel Gultsch bb7780eae6 Merge branch 'issue_#2336' of https://github.com/vikiCoder/Conversations into vikiCoder-issue_#2336 2017-03-05 08:48:01 +01:00
Daniel Gultsch b0ada55b28 use min width of 32dp for swipe handle 2017-03-04 21:20:39 +01:00
Daniel Gultsch f414998307 use default priority notifications. disables heads up notifications 2017-03-04 21:19:55 +01:00
vikiCoder 72537b76c5 fixes #2336 : added an option to directly add a jid to block list from blocklist activity 2017-03-05 01:01:41 +05:30
Daniel Gultsch b86dd584dc made swipe handle more unified and smaller across various screen sizes 2017-03-04 15:07:25 +01:00
Daniel Gultsch cb203f5fd3 Keep draft even when correcting previously sent msg
fixes #1822. Thank you @singhalok641
2017-03-04 08:05:42 +01:00
Daniel Gultsch d166309393 Merge branch 'hareshkh-master' 2017-03-03 23:59:34 +01:00
Haresh Khanna f2d2966b31 Squash : Adds number of unread messages for every conversation. Fixes #2181 2017-03-04 04:26:19 +05:30
Daniel Gultsch 5c789b75cc fixed messages vanishing after pgp raised error on editing a message 2017-03-03 15:21:42 +01:00
Daniel Gultsch 58595fccfe show icons in pop menu with reflection. imagespan was not centred vertically 2017-03-03 12:26:33 +01:00
Daniel Gultsch 768d79c621 Merge branch 'issue_#1200' of https://github.com/vikiCoder/Conversations into vikiCoder-issue_#1200 2017-03-03 12:01:00 +01:00
Daniel Gultsch afa34ce15a block send action while encrypting pgp message 2017-03-03 11:56:08 +01:00
Daniel Gultsch 469cf72e56 make notification icon size depend on 'Large Text' setting 2017-03-03 11:55:07 +01:00
vikiCoder 51ef096e01 fixes #1200 : Added icons for the attach options according to material design guidlines 2017-03-03 16:01:44 +05:30
Daniel Gultsch 8cce653a1f changed default setting for enter_is_send on devices with keyboard 2017-03-02 13:03:30 +01:00
Daniel Gultsch c740386297 rename the Xmlns class to Namespace 2017-03-01 13:01:46 +01:00
Daniel Gultsch ea1e28267b bump mam namespace to :2 2017-03-01 12:50:58 +01:00
Daniel Gultsch ecd53580c0 show 'show inactive keys' button also when there are no active keys 2017-03-01 12:50:46 +01:00
Daniel Gultsch 23a91e5019 use priority low when creating notification without sound/vibration.
should prevent notifcations showing up in ambient display
2017-02-28 15:32:57 +01:00
Daniel Gultsch 4cddf31ad2 properly handle onNewIntent() in StartConversations activity
* fixes a glitch a caused xmpp uris not to open when activiy was already started
2017-02-28 11:48:28 +01:00
Daniel Gultsch 1f4c5ff97c properly trim() incoming imto: uris 2017-02-27 22:48:25 +01:00
Daniel Gultsch c7ec82679f Merge branch 'master' of github.com:siacs/Conversations 2017-02-24 20:00:54 +01:00
Daniel Gultsch 8e0e81a603 bump notification priority to high as per android design guidelines 2017-02-24 19:59:13 +01:00
Daniel Gultsch 0c0ff882a9 make x509 verification node world readable 2017-02-24 19:58:46 +01:00
Daniel Gultsch a28116753a Merge pull request #2315 from licaon-kter/lecagy-typo
Fix a typo in legacy
2017-02-19 18:43:21 +01:00
licaon-kter d3dd80eec9 Fix a typo in legacy 2017-02-19 15:47:57 +02:00
Daniel Gultsch 0d00ff0c15 migrate domain and host exemption into seperate class 2017-02-19 13:05:40 +01:00
Daniel Gultsch abaabae853 only change actionbar display options when changed 2017-02-18 18:08:37 +01:00
Daniel Gultsch 79858278e0 version bump to 1.16.2 + changelog 2017-02-18 18:08:01 +01:00
Daniel Gultsch c69ad8f52c npe checks 2017-02-17 10:26:42 +01:00
Daniel Gultsch cf9ab4d302 synchronize modifications of output stream in tag writer 2017-02-17 10:26:12 +01:00
Daniel Gultsch 4f0e1b71c0 explicitly turn off vibration when disabled. fixes #1255 2017-02-16 13:31:26 +01:00
Daniel Gultsch caa16a8517 experimental mam legacy compat layer 2017-02-15 16:42:35 +01:00
Daniel Gultsch 6e62b62b80 respond to xep-0184 requests in muc pms 2017-02-15 12:09:36 +01:00
Daniel Gultsch c7e95d105c fixed behaviour in message parser when doing mam catchup 2017-02-15 00:08:49 +01:00
Daniel Gultsch bb249e0881 only extract stanza-id from live messages when disco feature is set 2017-02-14 23:16:51 +01:00
Daniel Gultsch b90a1fe1db bump mam namespace 2017-02-14 17:19:45 +01:00
Daniel Gultsch 2665c3a1e0 rethink mam catchup strategies 2017-02-14 16:50:33 +01:00
Daniel Gultsch 9116782cdc fixed adhoc conference creation behaviour. properly show errors. fixes #2290 2017-02-13 17:32:26 +01:00
Daniel Gultsch c8f97be68e only force close tagwriter before creating a new one 2017-02-13 13:01:00 +01:00
Daniel Gultsch 6b81ff70e5 clear avatar cache when system name changes 2017-02-10 20:26:21 +01:00
Daniel Gultsch 5e367cb115 version bump to 1.16.1 + changelog 2017-02-10 14:26:40 +01:00
Daniel Gultsch edb3f57242 pulled translations from transifex 2017-02-10 14:19:36 +01:00
Daniel Gultsch 54ae8abcb7 add no_padding, no_wrap to file upload slots 2017-02-10 13:50:20 +01:00
Daniel Gultsch 82385e38f6 pulled translations from transifex 2017-02-09 20:14:44 +01:00
Daniel Gultsch 55e9067b27 do not auto link non-http URLs 2017-02-09 20:14:36 +01:00
Daniel Gultsch c76b073b8e do not sync thumbnail creation on cache. fixes #2283 2017-02-09 14:32:50 +01:00
Daniel Gultsch f60dd98d3c only count push as available when sm is to avoid race conditions 2017-02-08 16:52:35 +01:00
Daniel Gultsch 7317f5015a version bump to 1.16.0 + changelog 2017-02-08 16:51:49 +01:00
Daniel Gultsch 6569f20737 update shortcut badger. fixes #2268 2017-02-08 10:49:30 +01:00
Daniel Gultsch d9e2ab62b2 add index to message.conversationUuid 2017-02-07 21:17:08 +01:00
Daniel Gultsch 24fab162e2 renamed omemo:// to aesgcm:// 2017-02-07 20:07:57 +01:00
Daniel Gultsch 71ad18beb9 support omemo:// style urls 2017-02-07 19:32:12 +01:00
Daniel Gultsch c37117b940 update copyright information 2017-02-07 19:31:54 +01:00
Daniel Gultsch 6be3ae8ef0 pulled translations from transifex 2017-02-07 17:57:24 +01:00
Daniel Gultsch e35ada4997 only store messages up to a length of 1M chars 2017-02-07 17:45:01 +01:00
Daniel Gultsch 6313c3c92e Merge pull request #2270 from moparisthebest/master
Stop Conversations force closing over sqlite errors due to long messages
2017-02-07 17:35:25 +01:00
Daniel Gultsch 853862ec9c Merge branch 'master' of github.com:siacs/Conversations 2017-02-07 17:31:10 +01:00
Daniel Gultsch e459616123 fixed wording for not getting messages from server 2017-02-07 14:03:48 +01:00
Daniel Gultsch 8ab166e817 fixed scrolling and async loading of message of new conversation start 2017-02-07 14:03:23 +01:00
Daniel Gultsch d7198bd68c fixed rare npe when doing file migration 2017-02-07 10:20:13 +01:00
Daniel Gultsch 6fc67d9a60 catch all throwables when working with content provider to retrieve mime 2017-02-07 10:19:45 +01:00
Daniel Gultsch 5fd91fcd8e Merge pull request #2272 from mimi89999/patch-3
Correct a typo in the README
2017-01-31 21:45:43 +01:00
Michel Le Bihan cd3ce76115 Correct a typo in the README 2017-01-31 18:09:42 +01:00
moparisthebest 2a34ece571 Stop Conversations force closing over sqlite errors due to long messages 2017-01-30 00:03:51 -05:00
Daniel Gultsch 8a1ebf2bbe Merge pull request #2260 from alexara/patch-1
Fixed typos in the readme
2017-01-26 19:45:29 +01:00
Daniel Gultsch 0d199c8ceb Update README.md 2017-01-26 19:45:06 +01:00
Daniel Gultsch 7651700c2a Merge branch 'master' into patch-1 2017-01-26 19:42:57 +01:00
Daniel Gultsch eea1bc8090 Merge pull request #2259 from mabkenar/patch-2
small typo fix
2017-01-26 19:40:57 +01:00
Daniel Gultsch 53241f2ef1 add explicit encryption hints to outgoing messages 2017-01-26 19:19:08 +01:00
alexara e4524e2c7b Fixed typos in the readme 2017-01-26 19:18:22 +01:00
Daniel Gultsch c9e6d05fa0 use base64 encoding for file names uploaded with http 2017-01-26 18:39:25 +01:00
Masoud Abkenar be84443921 small typo fix 2017-01-26 16:46:19 +01:00
Daniel Gultsch bbceee7f61 pulled translation from transifex 2017-01-26 12:35:34 +01:00
Daniel Gultsch 40ee1a0bfc reset messagesLoaded when changing retention settings 2017-01-25 18:35:22 +01:00
Daniel Gultsch a86b2fefd9 add database and file migrations for 1.16.0 2017-01-25 13:22:20 +01:00
Daniel Gultsch f2d9539d90 share uri for bookmark direclty from Start Conversation 2017-01-25 00:15:50 +01:00
Daniel Gultsch 66457c9f2e transcode videos before sharing. change storage location 2017-01-24 20:17:36 +01:00
Daniel Gultsch 9b6ae6d75f configurable local message retention period. (untested) 2017-01-23 17:14:30 +01:00
Daniel Gultsch 4c6ef3b24e cleaning up crypto targets when conference member is getting removed 2017-01-22 18:58:49 +01:00
Daniel Gultsch b48bf39e08 change behaviour of back button to close finish activity. fixes #704 2017-01-22 18:26:47 +01:00
Daniel Gultsch 7035f38e0b Merge branch 'master' of github.com:siacs/Conversations 2017-01-22 13:08:44 +01:00
Daniel Gultsch d53c813408 make sure to set open conversations after connection with background service 2017-01-22 13:08:21 +01:00
Daniel Gultsch b72d7ec8d0 make sure to properly stop tagwriter 2017-01-22 12:54:39 +01:00
Daniel Gultsch 5dde977233 upgrade dependency to ShortcutBadger 2017-01-22 12:37:16 +01:00
Daniel Gultsch 2f4eee1fa7 Merge pull request #2230 from AnBuKu/patch-1
Added XEP-0384
2017-01-22 10:41:45 +01:00
Daniel Gultsch 96a6460744 don't quote text when '>' is followed by numeber 2017-01-21 11:07:23 +01:00
Daniel Gultsch 780d1daf7e fixed some issues around ibb 2017-01-20 22:37:50 +01:00
Daniel Gultsch 0f870223c4 version bump to 1.15.5 + changelog 2017-01-20 15:03:01 +01:00
Daniel Gultsch 5faa05ca19 pulled translations from transifex 2017-01-20 15:02:19 +01:00
Daniel Gultsch 97ba0a0d49 write text in bold when highlighted in received muc message 2017-01-20 14:54:59 +01:00
Daniel Gultsch cb9c4d4327 disable automatic foreground enabler. fixes #2239 2017-01-20 14:21:59 +01:00
Daniel Gultsch c324f0c8df modified highlight nick behaviour to better work with quotes 2017-01-20 13:45:09 +01:00
Daniel Gultsch 59f82cbd34 fixed regression introduced in previous commit. 2017-01-20 13:44:29 +01:00
Daniel Gultsch 143ad48be1 don't prematurly mark conversation as read during activity start. fixes #2245 2017-01-20 10:43:50 +01:00
Daniel Gultsch 1dcf804618 fixed pgp encrypted text quick sharing. fixes #2237 2017-01-17 15:56:21 +01:00
Daniel Gultsch ac2eee8e81 Merge pull request #2233 from SamWhited/scram-sha-2
Add SCRAM-SHA-2 support
2017-01-16 13:14:48 +01:00
Daniel Gultsch 764026b87e fixed behaviour with non-default encryption masks 2017-01-16 13:09:36 +01:00
Daniel Gultsch 7219e077f4 version bump to 1.15.4 + changelog 2017-01-16 12:07:50 +01:00
Sam Whited bfc2cffc2f Add SCRAM-SHA-2 support 2017-01-15 23:43:44 -06:00
Daniel Gultsch f7c5a5c42e pulled translations from transifex 2017-01-15 19:22:18 +01:00
Daniel Gultsch 9bdd2bf1ae Merge branch 'master' of github.com:siacs/Conversations 2017-01-15 18:55:15 +01:00
Daniel Gultsch d028f4b398 refactored whispermessage processing 2017-01-15 18:54:47 +01:00
Daniel Gultsch b085426d22 fixed linkifier 2017-01-15 18:54:15 +01:00
Daniel Gultsch a71e3d0653 pulled translations from transifex 2017-01-14 18:10:18 +01:00
Daniel Gultsch 8f39a594ff partially improved logging for receiving omemo messages 2017-01-14 18:10:04 +01:00
Daniel Gultsch ebf8ae231a fixed subheading of domain hosting faq entry 2017-01-13 12:14:27 +01:00
Daniel Gultsch aa7bfe9fe7 update readme to refer to domain hosting 2017-01-13 12:12:09 +01:00
Daniel Gultsch b2e9b4aeb1 pulled translations from transifex 2017-01-12 23:28:30 +01:00
Daniel Gultsch 8e025cbb9e show doze warning when push is running on prosody 2017-01-12 23:22:02 +01:00
Daniel Gultsch 1876b444fa refactor getServerIdentity() to parse disco result directly 2017-01-12 23:17:52 +01:00
Daniel Gultsch c03e3b5965 don't include 'before' reference in mam queries bound by timestamp 2017-01-12 20:56:55 +01:00
Daniel Gultsch fd7216b6a0 finish of backlog only for one particular account 2017-01-12 20:56:27 +01:00
Daniel Gultsch 585a538340 don't show key tile in contact details when there are no keys 2017-01-12 20:50:53 +01:00
Daniel Gultsch b050ff2576 only call UI thread from downloading thread every 250ms 2017-01-12 16:02:09 +01:00
Daniel Gultsch bfacc180c5 don't allow to purge keys. offer distrut instead 2017-01-12 15:59:13 +01:00
Daniel Gultsch 2c1d3ef968 fixed avatar republish missing the mime type 2017-01-12 12:20:10 +01:00
AnBuKu 313baca84e Added XEP-0384
Maybe style [XEP-0384: OMEMO Encryption](http://xmpp.org/extensions/xep-0384.html) would be better for user's convenience; of course for other XEP's as well
2017-01-10 15:18:01 +01:00
Daniel Gultsch f0c3b31a42 treat omemo keys >= 32 bytes as containing auth tag. add config flag to put auth tag in key 2017-01-09 21:47:07 +01:00
Daniel Gultsch a1cb855739 adding prekey='true' to omemo messages if applicable 2017-01-09 20:20:02 +01:00
Daniel Gultsch ef4ed90811 pulled translations from transifex 2017-01-09 19:54:44 +01:00
Daniel Gultsch 39bb8ad05f automatically bookmark private, non-anonymous mucs where inviter is trusted. fixes #2035 #937 2017-01-09 19:54:27 +01:00
Daniel Gultsch b09b8136d2 version bump to 1.15.3 + changelog 2017-01-09 19:52:46 +01:00
Daniel Gultsch a994d8f847 fixed typo in variable name 2017-01-09 18:05:58 +01:00
Daniel Gultsch b19572ba8c use 7.1 web url pattern matching on old platforms as well. fixes #2228 2017-01-09 17:58:11 +01:00
Daniel Gultsch d192c529e0 add spaces to otr fingerprints copied to clipboard. fixes #2226 2017-01-09 17:57:37 +01:00
Daniel Gultsch b116926bb1 unify getFileUri across share and open intents 2017-01-09 17:00:08 +01:00
Daniel Gultsch 39c8867ed7 add more punctuations to message preview 2017-01-06 20:56:44 +01:00
Daniel Gultsch 1269123816 Merge pull request #2224 from illegalprime/fix-travis-android-25
Updated travis and Trust Manager to fix build
2017-01-06 20:46:27 +01:00
Michael Eden cd772360db updated travis and trust manager 2017-01-06 14:28:57 -05:00
Daniel Gultsch 4a299920dc add overlay to indicate that image is gif 2017-01-03 14:05:10 +01:00
Daniel Gultsch e6ba8484fa update build tools and some dependencies 2017-01-03 12:33:46 +01:00
Daniel Gultsch 470d244414 Merge branch 'feature-gboardgifs' of https://github.com/illegalprime/Conversations into illegalprime-feature-gboardgifs 2017-01-03 11:44:14 +01:00
Daniel Gultsch 2bb7bc1455 show offline contacts as grayed out in conference details 2017-01-03 11:40:29 +01:00
Michael Eden 5a670c88b0 Do not compress GIFs, allow GBoard to send GIFs 2017-01-01 16:16:35 -05:00
Daniel Gultsch fa70bd7536 disable automatic foreground service activation if related config paramaters are set to zero 2016-12-30 20:24:35 +01:00
Daniel Gultsch b8b2051f4c get rid of unecessary config debug paramater that has been replaced by exepert setting 2016-12-30 20:23:50 +01:00
Daniel Gultsch 8c34bb3c6f hide inactive devices by default in contact details 2016-12-30 13:17:45 +01:00
Daniel Gultsch 40a9f70478 always open account details when scanning one of our own keys. fixes #2211 2016-12-29 12:50:18 +01:00
Daniel Gultsch fcd9ab17fe don't throw assertion error when building session with same device id from other contact 2016-12-28 22:15:24 +01:00
Daniel Gultsch b8f67bfaa3 deduplicate corrected messages 2016-12-26 15:13:38 +01:00
Daniel Gultsch 82c2e89d21 stop using broken parallax distance in sliding pane layout 2016-12-25 18:57:30 +01:00
Daniel Gultsch 593dd259a9 version bump to 1.15.2 + changelog 2016-12-23 21:27:27 +01:00
Daniel Gultsch c43f224e8b pulled translations from transifex 2016-12-23 21:22:16 +01:00
Daniel Gultsch 9972f5eabc fixed npe cause by race condition when axolotl service isn't initialized 2016-12-23 21:19:38 +01:00
Daniel Gultsch 28c64c2bd1 skip empty lines in message preview. prevents indexoutofbounds exception 2016-12-23 21:19:11 +01:00
Daniel Gultsch d03c431137 use original message to parse pep 2016-12-23 21:16:58 +01:00
Daniel Gultsch 6c10f8a232 version bump to 1.15.1+ changelog 2016-12-21 14:04:56 +01:00
Daniel Gultsch f77afd9596 pulled translations from transifex 2016-12-20 16:38:07 +01:00
Daniel Gultsch b011d46ff2 don't show quoted text in message preview 2016-12-20 16:35:08 +01:00
Daniel Gultsch e5fff42b10 added omemo padding but disabled by Config.java flag 2016-12-20 16:12:12 +01:00
Daniel Gultsch fbbf1a37b4 disable removing of broken devices by default 2016-12-18 11:49:27 +01:00
Daniel Gultsch dbda2afd6d remove broken devices only once to prevent loops 2016-12-18 11:47:42 +01:00
Daniel Gultsch 87746ca2ba remove own fetch errors from device announcement 2016-12-16 17:12:26 +01:00
Daniel Gultsch da914ba09c make sure to display encryption indicatior 2016-12-16 11:30:51 +01:00
Daniel Gultsch 75ee14cfdf don't reconnect accout when system reports no internet connection 2016-12-10 13:20:05 +01:00
Daniel Gultsch 55b60f6b0f don't correct a message if that would create a duplicate 2016-12-09 20:03:48 +01:00
Daniel Gultsch 88321c1e8c use POSH only when system CAs are trusted 2016-12-09 19:56:49 +01:00
Daniel Gultsch 8abfbf82fa use verified symbol instead of colored lock icons 2016-12-09 18:46:32 +01:00
Daniel Gultsch 8d127f70d0 follow redirects in posh 2016-12-08 14:21:15 +01:00
Daniel Gultsch 8eb292d16a don't show unavailable quick actions in settings 2016-12-06 23:44:39 +01:00
Daniel Gultsch 1739af2a41 fixed http resume 2016-12-06 23:27:29 +01:00
Daniel Gultsch b879fb3753 don't use posh for IPs and set a 5s timeout 2016-12-06 12:23:40 +01:00
Daniel Gultsch cbc9c1fb20 add support for RFC7711 to MTM 2016-12-05 21:52:44 +01:00
Daniel Gultsch 1e7b4030bb show jid monospaced in verify dialog 2016-12-04 13:39:08 +01:00
Daniel Gultsch 1a89915b31 disable 'show blocklist' if blocklist is empty. fixes #2164 2016-12-03 23:49:00 +01:00
Daniel Gultsch a5b3c579c4 redraw options menu after rotation in muc details. fixes #2161 2016-12-03 23:25:31 +01:00
Daniel Gultsch 56991bbaeb add omemo fingerprints to web links as well 2016-12-03 13:37:26 +01:00
Daniel Gultsch 6e289b8738 show warning dialog beforing verifying keys via a link 2016-12-03 13:19:56 +01:00
Daniel Gultsch 599f7dad2c Merge branch 'feature-quotation' of https://github.com/Mishiranu/Conversations into Mishiranu-feature-quotation 2016-12-02 14:01:26 +01:00
Daniel Gultsch d4b1119240 default using internal storage to false 2016-12-02 11:35:00 +01:00
Daniel Gultsch 6b0242523b Merge branch 'master' of https://github.com/Fenisu/Conversations into Fenisu-master 2016-12-02 11:25:14 +01:00
Daniel Gultsch 5d4aa04e5d support for jid escapting when displaying localpart only 2016-12-01 20:49:18 +01:00
Daniel Gultsch 58de10bcab use prepped string when building axolotl session 2016-12-01 20:48:39 +01:00
Daniel Gultsch e127ba9361 don't use own jid joined from another client to generate muc title 2016-12-01 19:57:40 +01:00
Daniel Gultsch 6e95ad4bdf don't show share button before account is setup 2016-12-01 13:07:18 +01:00
Daniel Gultsch 168ad50ddd only show contact related snackbars when conversation is single 2016-12-01 12:50:40 +01:00
Daniel Gultsch f0f2aab92d made provider authorities relativ to deal with different package ids 2016-12-01 12:09:49 +01:00
Daniel Gultsch 96a992353b avoid binding multiple times from BarcodeService 2016-12-01 11:34:04 +01:00
Daniel Gultsch c62f3f99be increment version code and release version 1.15.0 2016-11-30 10:48:30 +01:00
Daniel Gultsch a7ec23ef30 pulled translations from transifex 2016-11-30 10:47:25 +01:00
Daniel Gultsch 1b9a91eb2f renamed foreground service preference 2016-11-30 10:45:39 +01:00
Daniel Gultsch 9d744add38 pulled translations from transifex 2016-11-29 13:51:34 +01:00
Daniel Gultsch 9e7a54849d better handle the case when same user is joined with multiple nicks in the same room 2016-11-29 13:43:52 +01:00
Daniel Gultsch 33e6d8a1ce pulled translations from transifex 2016-11-28 15:51:52 +01:00
Daniel Gultsch e5d7357e6e mark conversations as read after receiving blocklist push for that conversations 2016-11-28 15:51:11 +01:00
Daniel Gultsch 84a2fa0041 allow fingerprint verification via context menu 2016-11-28 15:11:44 +01:00
Daniel Gultsch bbe01c9a6a add support for body paramater in xmpp uri 2016-11-28 15:09:02 +01:00
Daniel Gultsch fb6f0649c3 sent messages from unverified devices show red lock 2016-11-28 15:08:33 +01:00
Daniel Gultsch fdf19ae287 pulled translations from transifex 2016-11-25 17:06:23 +01:00
Daniel Gultsch d983f0bc71 fixed migrations from pre-btbv phase 2016-11-25 17:04:23 +01:00
Daniel Gultsch 22ca8200fa Merge branch 'master' of github.com:siacs/Conversations 2016-11-25 16:58:37 +01:00
Daniel Gultsch 988cce6320 Merge pull request #2147 from licaon-kter/patch-5
Typo in Readme
2016-11-25 16:57:43 +01:00
Mishiranu f4a769080b Add quotation support 2016-11-25 17:06:43 +03:00
Daniel Gultsch f36dff485e changed blind trust before verification summary to a slightly longer one 2016-11-24 19:59:57 +01:00
licaon-kter 6320a3ca7c Typo in Readme 2016-11-24 18:35:10 +02:00
Daniel Gultsch 43fd5e5fe6 Merge pull request #2146 from licaon-kter/patch-4
Add FAQ about the new trust concept
2016-11-24 15:39:51 +01:00
licaon-kter 84a4f4d66d Add FAQ about the new trust concept 2016-11-24 15:17:02 +02:00
Daniel Gultsch a87f7903c6 always force close a connection when disabling from error state 2016-11-24 12:44:24 +01:00
Daniel Gultsch 1e59a9517a bumped gradle to 1.15.0-beta 2016-11-24 12:06:15 +01:00
Daniel Gultsch 6a5d2e35b5 pulled translations from transifex 2016-11-24 12:05:52 +01:00
Daniel Gultsch cbd45d3ee5 changed design language to match BTBV proposal
* untrusted messages have red background
* unverified message have normal background and red lock
2016-11-24 11:29:26 +01:00
Daniel Gultsch 2ec7165381 update the conversations view (and the lock icon) after receiving device list 2016-11-24 11:28:04 +01:00
Daniel Gultsch 20d3a41b52 explictly scan for aztec and qr codes only 2016-11-23 11:01:58 +01:00
Daniel Gultsch 839ef8e14b introduced blind trust before verification mode
read more about the concept on https://gultsch.de/trust.html
2016-11-23 10:42:27 +01:00
Daniel Gultsch 4720ac94d3 Merge branch 'master' of github.com:siacs/Conversations 2016-11-22 22:32:05 +01:00
Daniel Gultsch 07fe434cc7 added share button to account details 2016-11-22 22:31:46 +01:00
Daniel Gultsch d2268c6a6f show proper avatar for 'self' contact. fixes #2138 2016-11-22 12:34:16 +01:00
Daniel Gultsch d76b0a3104 offer verification directly from the trust keys screen 2016-11-22 12:03:21 +01:00
Daniel Gultsch 1a7e0fd153 use aztec code instead of qr 2016-11-21 12:01:01 +01:00
Daniel Gultsch 6631705aea use constants for some preferences 2016-11-21 11:03:38 +01:00
Daniel Gultsch 7b99346a4b when swiping don't clean startup counter entirely. just don't count last startup 2016-11-21 10:48:59 +01:00
Daniel Gultsch 1c31b96920 Merge pull request #2130 from da2x/patch-2
Fix up the langauge in some Settings strings
2016-11-20 00:39:57 +01:00
Daniel Gultsch 568d6c8392 Merge branch 'master' of github.com:siacs/Conversations 2016-11-20 00:39:25 +01:00
Daniel Gultsch 64e8035f6d introduced custom tls socket factory to make tls1.2 work for http connections 2016-11-20 00:39:01 +01:00
Daniel Gultsch b71aa6d3a4 remove omemo devices from annoucement after 7 days of inactivity 2016-11-19 21:39:16 +01:00
Daniel Gultsch 2614706d39 don't show omemo keys by default in account details 2016-11-19 21:32:40 +01:00
Daniel Gultsch cb639f3fdd don't use xmpp uri for self verification if account is disabled 2016-11-19 21:31:41 +01:00
Daniel Gultsch 6362799d56 save last activation time in fingerprint status 2016-11-19 13:34:54 +01:00
Daniel Gultsch 40c747660d removed some unecessary locking 2016-11-19 13:34:27 +01:00
Daniel Gultsch 8132480b82 close socket after failed stream open 2016-11-19 12:20:31 +01:00
Daniel Gultsch 3bf2876e09 check if thread was interrupted before doing operations on socket 2016-11-19 10:44:40 +01:00
Daniel Gultsch 1820b163a1 fixed regression that would crash create contact dialog. fixes #2131 2016-11-19 10:29:08 +01:00
Daniel Aleksandersen 965f73f95a Fix up the langauge in some Settings strings 2016-11-19 05:00:16 +01:00
Daniel Gultsch 2b9b3be3f1 show 'clear devices' button underneath own devices 2016-11-18 21:49:52 +01:00
Daniel Gultsch a86a36f570 removed some unecessary logging from omemo message generation 2016-11-18 20:13:09 +01:00
Daniel Gultsch 01f92ef4ee lower own otr fingerprint 2016-11-18 20:12:45 +01:00
Daniel Gultsch d68b7cfcfc issue ping after network change 2016-11-18 14:00:05 +01:00
Daniel Gultsch fef601b4ae lower reconnection time 2016-11-18 13:58:01 +01:00
Daniel Gultsch 0303c28ad9 synchronzie on xmpp service around all state changes 2016-11-18 13:58:01 +01:00
Daniel Gultsch 1ed2445c1d don't reset last connect time on network change 2016-11-18 13:55:02 +01:00
Daniel Gultsch a7ee8f8a74 use lower case otr fingerprints for comparison 2016-11-18 13:13:29 +01:00
Daniel Gultsch 9d9a9e63ad removed some very verbose logging from axolotl service 2016-11-18 13:03:02 +01:00
Daniel Gultsch 99a41265b8 lower casing fingerprints when parsing URI 2016-11-18 13:02:33 +01:00
Daniel Gultsch 7ec38bd202 added section to FAQ about default encryption 2016-11-18 12:03:02 +01:00
Daniel Gultsch 211354ee26 put omemo fingerprint in own uri (qr code / nfc) 2016-11-17 22:28:45 +01:00
Daniel Gultsch 7e2e42cb11 parse omemo fingerprints from uris 2016-11-17 20:09:42 +01:00
Daniel Gultsch 3f3b360eee fixed back and forth between Welcome- and EditAccountActivity 2016-11-17 11:40:29 +01:00
Daniel Gultsch ad9a8c2281 use base64.nowrap for omemo keys 2016-11-17 10:58:44 +01:00
Daniel Gultsch 4d965e96ed reset startup count when swiped away (only count kills) 2016-11-17 10:58:26 +01:00
Daniel Gultsch 5007aa1b07 update shortcut badger 2016-11-16 14:03:25 +01:00
Daniel Gultsch d8bff08f1f slightly darken verified icon + mark inactive 2016-11-16 09:39:44 +01:00
Daniel Gultsch ec63900ef3 work around -1 in next encryption 2016-11-15 21:11:35 +01:00
Daniel Gultsch 48afeb571b refactor omemo fingerprint UI code 2016-11-15 20:00:52 +01:00
Daniel Gultsch e84af51272 distinguish between general i/o error and write exception when copying files 2016-11-15 15:43:04 +01:00
Daniel Gultsch d61b00604d fixed enabling trust toggle. unknown->untrusted 2016-11-15 15:14:21 +01:00
Daniel Gultsch 05fc15be3d refactore trust enum to be FingerprintStatus class with trust and active 2016-11-14 22:27:41 +01:00
Daniel Gultsch 6da8b50d95 increase restart threshold 2016-11-14 19:49:17 +01:00
Daniel Gultsch a753e28ad2 pulled ru translation from transifex 2016-11-13 19:26:27 +01:00
Daniel Gultsch 1d3167b520 extract affiliations from unavailable presence 2016-11-13 19:25:58 +01:00
Daniel Gultsch 035d0c7957 Stop automagically select default encryption
Selecting a default encryption (in our case OMEMO) has several down sides.
First of all users might have perfectly valid reasons not to use encryption
at all such as using the same private server. Second of all the way it was
implemented Conversations would automatically fall back to plain text as soon
as the conditions changed (recipient switches to device with no encryption)
which lead to unexpected situations.
Thirdly having a default encryptions speaks against the 'mission
statement' of Conversations of not forcing its security and privacey
aspects upon the user.
And last but not least the goal of implementing this feature in the
first place: Be encrypted by default didn't work at all. I don't think
there was a single user that we succesfully 'tricked' into using OMEMO
who otherwise wouldn't have used it.
2016-11-13 17:11:13 +01:00
Daniel Gultsch bec048407a offer message correction in private convs 2016-11-12 20:25:02 +01:00
Daniel Gultsch fe62ef32ae don't add outcasts or non-members in members-only rooms back to list 2016-11-12 20:21:11 +01:00
Daniel Gultsch f7c2cd4807 pulled translations from transifex 2016-11-11 15:01:31 +01:00
Daniel Gultsch e8cc959a7f don't offer message correction in anonymous mucs 2016-11-11 15:01:15 +01:00
Daniel Gultsch bd578c59bf version bump to 1.14.9 + changelog 2016-11-08 21:38:12 +01:00
Daniel Gultsch bb4952c89e pulled translations from transifex 2016-11-08 21:37:59 +01:00
Daniel Gultsch 698ddadbee brought restart threshold down to 8 times in 8h 2016-11-08 21:37:44 +01:00
Daniel Gultsch 1ef8d0a746 don't mark previous conversation as read when processing pending intent. fixes #2079 2016-11-08 12:42:13 +01:00
Daniel Gultsch bca8f11c9c add frequent restart detection 2016-11-08 12:20:07 +01:00
Ignacio Quezada 297c0a792f Private files using a boolean flag from Config.java. 2016-11-08 11:45:20 +01:00
Daniel Gultsch 1a57599da2 lower case incoming dns records 2016-11-08 10:14:34 +01:00
Daniel Gultsch 00b3d5ee35 Merge branch 'master' of github.com:siacs/Conversations 2016-11-08 10:08:58 +01:00
Daniel Gultsch b3c19f039c Merge pull request #2108 from licaon-kter/patch-2
Fix typo
2016-11-08 10:08:48 +01:00
licaon-kter d341904c4d Fix typo 2016-11-08 01:46:46 +02:00
Daniel Gultsch 7978fd768e fixed regression of showing delivery failed after receipt 2016-11-07 21:57:08 +01:00
Daniel Gultsch b390908610 Merge pull request #2105 from ReadmeCritic/master
Fix typos in README
2016-11-07 17:58:47 +01:00
ReadmeCritic 64ad93dad6 Fix typos in README 2016-11-07 08:46:35 -08:00
Daniel Gultsch 9edbddd7e1 show warning in account details when data saver is enabled 2016-11-07 10:49:43 +01:00
Daniel Gultsch d369ec767f expanded section on adb in readme 2016-11-02 15:21:45 +01:00
Daniel Gultsch 2c004857f6 handle file attachment when missing connection 2016-11-02 15:21:26 +01:00
Daniel Gultsch 544c5b4a21 removed unnecessary push_mode 2016-11-02 11:04:33 +01:00
Daniel Gultsch e582b9fc10 leaving low ping timeout mode after coming online 2016-11-02 09:36:14 +01:00
Daniel Gultsch e538272417 version bump to 1.14.8 + changelog 2016-11-01 10:27:19 +01:00
Daniel Gultsch 20ddba2aa9 fixed npe when jingle partner is using unknown candidate 2016-11-01 10:27:01 +01:00
Daniel Gultsch 07a71d312a extracting stanza-id where by=account 2016-10-31 12:07:08 +01:00
Daniel Gultsch a5181b22e0 always use ipv4 localhost when using orbot http proxy 2016-10-31 09:53:14 +01:00
Daniel Gultsch ffebb4677a Revert "use file provider on android M as well"
This reverts commit a4020e85f6.
2016-10-30 20:27:39 +01:00
Daniel Gultsch a44f35ed69 schedule correct wakeup call when in low ping timeout mode 2016-10-29 21:45:01 +02:00
Daniel Gultsch 1e4b1a3346 version bump to 1.14.7 + changelog 2016-10-26 12:28:18 +02:00
Daniel Gultsch 8557120ef8 add error message to failed messages. accessible via context menu 2016-10-26 12:26:04 +02:00
Daniel Gultsch a4020e85f6 use file provider on android M as well 2016-10-23 09:03:36 +02:00
Daniel Gultsch 8c1bb058da connect instantly in low ping mode after going offline 2016-10-23 09:03:17 +02:00
Daniel Gultsch 10398cab51 don't leave low timeout mode prematurely 2016-10-20 20:04:16 +02:00
Daniel Gultsch f2696b66ba Merge branch 'feature-remove-merge-separator' of https://github.com/Mishiranu/Conversations into Mishiranu-feature-remove-merge-separator 2016-10-20 18:18:25 +02:00
Daniel Gultsch 52d4be4249 Merge branch 'feature-remove-spans' of https://github.com/Mishiranu/Conversations into Mishiranu-feature-remove-spans 2016-10-20 18:10:52 +02:00
Daniel Gultsch 0f62ff6736 introduced low ping timeout mode after gcm push 2016-10-20 18:02:11 +02:00
Daniel Gultsch 44ce5df359 write prepped string to db. use display version everywhere else 2016-10-20 17:31:46 +02:00
Mishiranu fd4e15ba97 Remove MERGE_SEPARATOR 2016-10-20 01:03:51 +03:00
Mishiranu 8835f08cf7 Remove spans on copying or pasting a text 2016-10-19 20:47:41 +03:00
Daniel Gultsch c3423d6ffe include pgp signature only in non anonymous mucs 2016-10-19 12:31:11 +02:00
Daniel Gultsch dce8149aae retrigger key selection if openpgp key was deleted 2016-10-19 11:53:55 +02:00
Daniel Gultsch 7226fc0010 update conversation in database background thread 2016-10-18 13:06:24 +02:00
Daniel Gultsch 50780debf7 don't trigger context menu in message adapter manually. fixes #2077 2016-10-18 11:16:43 +02:00
Daniel Gultsch f8c21caec9 Merge branch 'feature-selection' of https://github.com/Mishiranu/Conversations into Mishiranu-feature-selection 2016-10-17 09:53:32 +02:00
Daniel Gultsch 22d13a3dcd add exception handling when loading default resource 2016-10-17 09:53:08 +02:00
Daniel Gultsch dc02e2b498 small code reformation in pgp decryption service 2016-10-17 09:52:43 +02:00
Daniel Gultsch 6371d2b7a9 Merge pull request #2063 from thacoon/patch-1
Fix OpenPGP link
2016-10-13 12:21:54 +02:00
Daniel Gultsch 2a73b8d76e clarified fineprint a little bit 2016-10-13 12:17:20 +02:00
Daniel Gultsch f6cfa27741 synchronize access to json key storage in account model 2016-10-13 11:27:26 +02:00
Daniel Gultsch 501152bcfd version bump to 1.14.6 + changelog 2016-10-10 17:54:34 +02:00
Daniel Gultsch 9e54fd5c92 don't use sending state on muc pms without smacks 2016-10-09 19:40:30 +02:00
Daniel Gultsch cd1c05a7c3 add password to direct muc invite 2016-10-09 19:40:03 +02:00
Daniel Gultsch f7d51b8890 pulled more translations from transifex 2016-10-09 18:06:19 +02:00
Daniel Gultsch c5bdb04490 pulled translations from transifex 2016-10-09 11:13:45 +02:00
Daniel Gultsch 74087b873f added disclaimer that conversations.im account is 8 euro / year 2016-10-08 18:24:20 +02:00
Constantin Soffner ad8b9eb054 Fix OpenPGP link
I have just updated the link to the OpenPGP website.
2016-10-08 14:40:13 +02:00
Daniel Gultsch f3ef8d4978 fetch new conference configuration on every conf update 2016-10-08 12:10:53 +02:00
Daniel Gultsch 9efef24a04 reset sending to waiting on every error 2016-10-07 14:54:35 +02:00
Daniel Gultsch 5a73a6b139 fixed account hash calculation 2016-10-07 14:54:06 +02:00
Daniel Gultsch 1f7f82da7b respond to chat marker request only when mutual presence subscription exists 2016-10-07 10:05:08 +02:00
Daniel Gultsch 26e33de79a create new instances of key manager every time it's used 2016-10-07 10:04:36 +02:00
Daniel Gultsch 187825d6c6 warn user if account is offline during avatar publication 2016-10-06 22:06:09 +02:00
Daniel Gultsch 6d5f23213b refresh error notification after 'try again' 2016-10-06 22:05:40 +02:00
Daniel Gultsch 0af13fc746 be more careful parsing integers in omemo 2016-10-06 22:05:18 +02:00
Daniel Gultsch 5530b0b0e2 Merge branch 'master' of github.com:siacs/Conversations 2016-10-06 18:39:19 +02:00
Daniel Gultsch 40e5090bdd issue ping after push was received 2016-10-06 18:09:55 +02:00
Daniel Gultsch 9f060f477f parse smacks delay from messages 2016-10-06 18:09:44 +02:00
Daniel Gultsch 8d8cb92e43 try to fix messages stuck at sending 2016-10-06 17:23:35 +02:00
Daniel Gultsch 27af6a4b1e Add client recommandition to readme. fixes #2048 2016-10-05 09:05:53 +02:00
Daniel Gultsch 082c06a486 make error notification dismissable. fixes #1815 2016-10-04 11:16:59 +02:00
Daniel Gultsch 5ac0e9267d fixed omemo shown as unavailable in 1:1 chats 2016-10-03 21:04:10 +02:00
Daniel Gultsch cea52b0722 resolve take photo uri for internal use 2016-10-03 18:26:11 +02:00
Daniel Gultsch f4a883848c properly index take photo uris from file provider 2016-10-03 11:25:15 +02:00
Daniel Gultsch b6e7def9db add more logging to attaching file process 2016-10-03 11:13:04 +02:00
Daniel Gultsch 7c6d1d19d5 when activating omemo in conference always check preferences 2016-10-03 10:42:43 +02:00
Daniel Gultsch dcd6ef8f84 explicit logging when copying files to storage 2016-10-03 10:13:45 +02:00
Daniel Gultsch d6c2ff9782 version bump to 1.14.5 + changelog 2016-10-01 15:49:09 +02:00
Daniel Gultsch b0fb9fd9ee added nick to conference jid example 2016-09-28 13:20:52 +02:00
Daniel Gultsch e275fd8143 Merge pull request #2027 from danielegobbetti/wear-reply-dismiss-notification
Dismiss the notification when replying from a wear notification [needs review!]
2016-09-28 12:39:00 +02:00
Daniel Gultsch 43f5dfe174 simplified code that invokes the export logs service 2016-09-28 12:35:52 +02:00
Daniel Gultsch f0dbcce58f expert 'setting' to remove omemo identity. fixes #2038 2016-09-28 12:24:50 +02:00
Daniele Gobbetti 41db773b08 Allow to dismiss the notification from a wear reply.
- use different IDs in the same method for the PendingIntent
- fix reply for GPG encrypted replies (untested)
2016-09-27 17:39:23 +02:00
Daniel Gultsch 5cd8917122 remove dubplicate play service dependency from build 2016-09-27 11:45:11 +02:00
Daniel Gultsch bb48f67a30 always use ipv4 localhost for Orbot connections 2016-09-27 11:44:50 +02:00
Daniel Gultsch 1339b9c464 don't reset encryption choice to auto on archiving 2016-09-24 21:29:00 +02:00
Daniel Gultsch cee3c98a23 version bump to 1.14.4 + changelog 2016-09-24 21:24:55 +02:00
Daniel Gultsch 343d895a26 don't react to null and empty voice replies 2016-09-21 19:04:16 +02:00
Daniel Gultsch 13ed27f91e don't use file provider for photo uris on android < N. fixes #2030 2016-09-21 18:20:53 +02:00
Daniel Gultsch 401759cdc7 don't wait for disco when not having stream managment 2016-09-21 12:55:40 +02:00
Daniel Gultsch 61f58b3dbd add timeouts to HTTPUrlConnections and allow cancelation of all sending files 2016-09-20 20:02:25 +02:00
Daniel Gultsch de7c0c5121 Merge pull request #2028 from Mishiranu/feature-more-tables
Fix "Server info" table layout
2016-09-20 16:43:51 +02:00
Mishiranu 9aaa5b78f4 Update Russian translation 2016-09-20 16:15:46 +03:00
Mishiranu 18ab826413 Fix "More table" layout
Retain "More table" visibility on screen orientation change
2016-09-20 16:10:25 +03:00
Daniel Gultsch 5790d4c4ab fixed styling in blocking dialog 2016-09-20 14:21:41 +02:00
Daniel Gultsch 98ab9beec7 version bump to 1.14.3 + changelog 2016-09-20 11:25:33 +02:00
Daniel Gultsch 7bda624723 pulled translations from transifex 2016-09-20 11:22:26 +02:00
Daniel Gultsch 7eac903277 add support for XEP-0377: Spam Reporting 2016-09-18 23:21:05 +02:00
Daniel Gultsch badc97e280 don't simply ignore null in message body but try to avoid it 2016-09-18 22:15:02 +02:00
Daniel Gultsch 7c608c8862 recreate activities when theme changed 2016-09-18 20:26:47 +02:00
Daniel Gultsch 6b904d4de1 use proper paddings in dialogs on android < 5 2016-09-18 20:09:39 +02:00
Mishiranu 858a327299 Retain TextView selection after list updating 2016-09-18 16:35:14 +03:00
Daniel Gultsch 7bdd4166c0 catch all throwables when loading contacts 2016-09-17 11:31:35 +02:00
Daniel Gultsch 00c04cd413 version bump to 1.14.2 + changelog 2016-09-17 11:30:52 +02:00
Mishiranu 3e6747c880 Add "Select text" context menu option 2016-09-17 01:18:34 +03:00
Daniel Gultsch 9d0a333372 Merge branch 'master' of github.com:siacs/Conversations 2016-09-16 12:35:57 +02:00
Daniel Gultsch af55aeca58 pulled translations from transifex 2016-09-16 12:29:26 +02:00
Daniel Gultsch 521469a57d dont show delete file button when outside conversations directory. fixes #2007 2016-09-16 12:29:12 +02:00
Daniel Gultsch 569b7bf6d0 hint that you should use latest version of ejabberd 2016-09-16 11:59:46 +02:00
Daniel Gultsch 3cdf5f9afc Merge branch 'Mishiranu-master' 2016-09-16 11:14:06 +02:00
Daniel Gultsch 15c807730e Merge branch 'master' of https://github.com/Mishiranu/Conversations into Mishiranu-master 2016-09-16 11:08:37 +02:00
Daniel Gultsch 7b445bc4c7 use history clear date as minimum date for mam 2016-09-16 11:07:52 +02:00
Mishiranu 8ca5eb4429 Allow text selection with multiple links in message 2016-09-16 02:15:07 +03:00
Daniel Gultsch ab63dba8aa deal with null bodys in message preview 2016-09-15 18:51:51 +02:00
Daniel Gultsch 4359afacb4 store jid if it was changed during bind 2016-09-14 12:26:38 +02:00
Daniel Gultsch 7b52e6984c Merge pull request #2018 from SamWhited/sasl_anonymous
SASL ANONYMOUS (no UI)
2016-09-14 09:34:20 +02:00
Daniel Gultsch 869ee3d438 Merge branch 'pebble-notification' of https://github.com/danielegobbetti/Conversations into danielegobbetti-pebble-notification 2016-09-12 22:49:22 +02:00
Daniel Gultsch d3dfecae8a don't use display version of jids 2016-09-12 22:48:51 +02:00
Daniel Gultsch 6cb2b0b5d1 remember scroll position on rotate. fixes #2011 2016-09-12 21:18:56 +02:00
Sam Whited 1a0b538166 Use JID returned by the server during bind
Not just the resourcepart
2016-09-12 11:33:36 -05:00
Sam Whited 805717673c Support ANONYMOUS SASL 2016-09-12 11:30:03 -05:00
Daniele Gobbetti e6e46651c9 Use the last message in the content text instead of the first.
This fixes the issue where the first message in the notification was sent to pebble
(and possibly to other wear devices) for every update in the conversation, as
reported in #1249.

This is the same patch propoed in https://github.com/siacs/Conversations/issues/1249#issuecomment-245878335
2016-09-11 18:42:05 +02:00
Daniel Gultsch 75fcab3170 Merge pull request #2014 from licaon-kter/patch-1
Fix typo
2016-09-11 17:40:27 +02:00
licaon-kter 59b2e281a3 Fix typo 2016-09-10 22:16:14 +03:00
Daniel Gultsch 6fd9888b3b add xep-0084 to docs/xep.md. wikipedia was complaining about it missing 2016-09-10 16:24:41 +02:00
Daniel Gultsch c3b11e515e download own vcard avatar if none is set. fixes #2008 2016-09-09 11:04:05 +02:00
Daniel Gultsch edf0ae9aa6 version bump to 1.14.1 + changelog 2016-09-09 11:03:22 +02:00
Daniel Gultsch 00cbf8458a pulled translations from transifex 2016-09-08 11:19:03 +02:00
Daniel Gultsch ac9f13a9f2 provide hint on why conference can not be encrypted 2016-09-08 11:01:27 +02:00
Daniel Gultsch a54a7dca30 Merge branch 'master' of github.com:siacs/Conversations 2016-09-07 16:14:33 +02:00
Daniel Gultsch 416481bb65 be a bit more careful when deleting and deactivating accounts 2016-09-07 14:34:58 +02:00
Daniel Gultsch ba6b4763d2 add faq about grayed out omemo 2016-09-07 13:01:02 +02:00
Daniel Gultsch e1d2c32e63 show server not found muc error 2016-09-06 12:15:08 +02:00
Daniel Gultsch 257d1e42d8 remove explicit pebble support. treat as wear device 2016-09-06 12:14:49 +02:00
Daniel Gultsch 7e81149869 show reply action on wear devices 2016-09-06 12:13:50 +02:00
Daniel Gultsch 1dc55f72e3 don't use fileprovider when opening files on android M and below 2016-09-04 22:59:40 +02:00
Daniel Gultsch d2c475d501 don't crash when correcting waiting pgp encrypted messages 2016-09-04 22:59:15 +02:00
2073 changed files with 110610 additions and 56379 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,30 +0,0 @@
#### General information
* **Version:** eg 1.12.2
* **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? 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

8
.gitignore vendored
View File

@ -2,16 +2,20 @@
*.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/
build/
captures/
gradle.properties
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,15 +0,0 @@
language: android
android:
components:
- platform-tools
- tools
- build-tools-23.0.3
- build-tools-19.1.0
- android-24
- extra-android-m2repository
- extra-google-m2repository
- extra-google-google_play_services
licenses:
- '.+'
script:
- ./gradlew assembleFreeRelease

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

File diff suppressed because it is too large Load Diff

277
README.md
View File

@ -1,10 +1,36 @@
# Conversations
<h1 align="center">Conv6ations for Sum7 is a fork of <a href="https://f-droid.org/packages/eu.siacs.conversations/">Conversations</a></h1>
Conversations: the very last word in instant messaging
<p align="center">A Jabber/XMPP chat client which is fair to IPv6</p>
[![Google Play](https://conversations.im/images/en-play-badge.png)](https://play.google.com/store/apps/details?id=eu.siacs.conversations&referrer=utm_source%3Dgithub) [![Amazon App Store](https://images-na.ssl-images-amazon.com/images/G/01/AmazonMobileApps/amazon-apps-store-us-black.png)](http://www.amazon.com/dp/B00WD35AAC/)
<p align="center">
<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">
<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>
[<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)
![screenshots](https://raw.githubusercontent.com/siacs/Conversations/master/screenshots.png)
## Design principles
@ -12,17 +38,18 @@ Conversations: the very last word in instant messaging
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://www.openpgp.org/about_openpgp/)
* 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
@ -59,32 +86,6 @@ run your own XMPP server for you and your friends. These XEP's are:
* [XEP-0363: HTTP File Upload](http://xmpp.org/extensions/xep-0363.html) allows you to share files in conferences
and with offline contacts.
## Team
#### Head of Development
* [Daniel Gultsch](https://github.com/inputmice)
#### Code Contributions
(In order of appearance)
* [Rene Treffer](https://github.com/rtreffer) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Artreffer+is%3Amerged))
* [Andreas Straub](https://github.com/strb) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Astrb+is%3Amerged))
* [Alethea Butler](https://github.com/alethea) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Aalethea+is%3Amerged))
* [M. Dietrich](https://github.com/emdete) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Aemdete+is%3Amerged))
* [betheg](https://github.com/betheg) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Abetheg+is%3Amerged))
* [Sam Whited](https://github.com/SamWhited) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3ASamWhited+is%3Amerged))
* [BrianBlade](https://github.com/BrianBlade) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3ABrianBlade+is%3Amerged))
#### Logo
* [Ilia Rostovtsev](https://github.com/qooob) (Progress)
* [Diego Turtulici](http://efesto.eigenlab.org/~diesys) (Original)
* [fiaxh](https://github.com/fiaxh) (OMEMO)
#### Translations
Translations are managed on [Transifex](https://www.transifex.com/projects/p/conversations/)
## FAQ
### General
@ -95,33 +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, Bitcoin and Flattr. 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).
My Bitcoin Address is: `1NxSU1YxYzJVDpX1rcESAA3NJki7kRgeeu`
[![Flattr this!](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=inputmice&url=http%3A%2F%2Fconversations.siacs.eu&title=Conversations&tags=github&category=software)
#### 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.
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 have a server somewhere and are willing to put some work in, the best alternative-in the spirit of federation-is to run your own. We recommand 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. (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.)
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.
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.
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
@ -137,33 +122,67 @@ As regular user you should be picking a different server. The server you selecte
is probably insecure and/or very old.
If you are a server administrator you should make sure that your server provides
STARTTLS. XMPP over TLS (on a different port) is not sufficient.
either STARTTLS or [XEP-0368: SRV records for XMPP over TLS](https://xmpp.org/extensions/xep-0368.html).
On rare occasions this error message might also be caused by a server not providing
a login (SASL) mechanism that Conversations is able to handle. Conversations supports
SCRAM-SHA1, PLAIN, EXTERNAL (client certs) and DIGEST-MD5.
#### I get 'Bind failure'. What does that mean?
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`.
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.
#### Conversations doesn't work for me. Where can I get help?
¹ 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*.
You can join our conference room on `conversations@conference.siacs.eu`.
#### 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 [`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
@ -238,10 +257,24 @@ Making these status and priority optional isn't a solution either because
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/).
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) or ```adb backup``` from your computer. It is important that your deactivate your account before backup and activate it only after a succesful restore. Otherwise OMEMO might not work afterwards.
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
@ -259,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
@ -280,26 +308,28 @@ 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.
#### How does the encryption for conferences work?
#### OMEMO is grayed out. What do I do?
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.
For conferences only OMEMO and OpenPGP are supported as encryption method. (OTR
does not work with multiple participants).
#### 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'.
#### 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
@ -310,7 +340,7 @@ details and hit the settings button (the one with the gears) and select both *pr
Every participant has to announce their OpenPGP key (see answer above).
If you would like to send encrypted messages to a conference you have to make
sure that you have every participant's public key in your OpenKeychain.
Right now there is no check in Conversations to ensurethat.
Right now there is no check in Conversations to ensure that.
You have to take care of that yourself. Go to the conference details and
touch every key id (The hexadecimal number below a contact). This will send you
to OpenKeychain which will assist you on adding the key. This works best in
@ -319,57 +349,62 @@ feature is regarded experimental. Conversations is the only client that uses
XEP-0027 with conferences. (The XEP neither specifically allows nor disallows
this.)
### Development
#### What is Blind Trust Before Verification / why are messages marked with a red lock?
<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 latest beta version by joining the
[Conversations Beta Testers](https://plus.google.com/communities/107649347599361240873)
community on Google+ and then using [this link](https://play.google.com/apps/testing/eu.siacs.conversations)
to sign up for the beta test.
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 three clients available [Siskin](https://siskin.im/), [ChatSecure](https://chatsecure.org/) and [Monal](https://monal.im/). Each with their own pros and cons.
### Development
#### 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
If something goes wrong Conversations usually exposes very little information in
the UI (other than the fact that something didn't work). However with adb
(android debug bridge) you squeeze some more information out of Conversations.
(android debug bridge) you can squeeze some more information out of Conversations.
These information are especially useful if you are experiencing trouble with
your connection or with file transfer.
adb -d logcat -v time -s conversations
To use adb you have to connect your mobile phone to your computer with an USB cable
and install `adb`. Most Linux systems have prebuilt packages for that tool. On
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 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
(for example to create an issue here on Github) it is more convenient to just use your PC.
#### I found a bug
@ -380,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

168
art/date_bubble_grey.svg Normal file
View File

@ -0,0 +1,168 @@
<?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="26"
height="26"
id="svg2"
version="1.1"
inkscape:version="0.92.1 r"
sodipodi:docname="date_bubble_white.svg">
<defs
id="defs4">
<filter
x="-0.25"
y="-0.25"
width="1.5"
height="1.5"
inkscape:label="Drop Shadow"
id="filter3811"
style="color-interpolation-filters:sRGB">
<feFlood
flood-opacity="0.25"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood3813" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite3815" />
<feGaussianBlur
stdDeviation="0.5"
result="blur"
id="feGaussianBlur3817" />
<feOffset
dx="0"
dy="1"
result="offset"
id="feOffset3819" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite3821" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="16"
inkscape:cx="9.745257"
inkscape:cy="9.618802"
inkscape:document-units="px"
inkscape:current-layer="layer"
showgrid="true"
inkscape:window-width="1916"
inkscape:window-height="1156"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="0"
showguides="true"
inkscape:guide-bbox="true"
guidecolor="#000000"
guideopacity="0.49803922"
fit-margin-top="-2"
fit-margin-left="-2"
fit-margin-right="-2"
fit-margin-bottom="-2">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="4"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="1"
spacingy="1"
originx="-9"
originy="-1"
color="#0000ff"
opacity="0.03137255" />
<sodipodi:guide
orientation="1,0"
position="11,26"
id="guide3060"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="15,26"
id="guide3062"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="26,21"
id="guide3064"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="26,5"
id="guide3066"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="17,0"
id="guide3068"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="9,0"
id="guide3070"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="0,18"
id="guide3074"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="0,16"
id="guide3076"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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"
inkscape:groupmode="layer"
id="layer"
transform="translate(-9,-1)">
<path
sodipodi:nodetypes="cccc"
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:#282828;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3811)" />
<rect
style="fill:#282828;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3811)"
id="rect2987"
width="20"
height="20"
x="12"
y="4"
ry="2" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

168
art/date_bubble_white.svg Normal file
View File

@ -0,0 +1,168 @@
<?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="26"
height="26"
id="svg2"
version="1.1"
inkscape:version="0.92.1 r"
sodipodi:docname="date_bubble_white.svg">
<defs
id="defs4">
<filter
x="-0.25"
y="-0.25"
width="1.5"
height="1.5"
inkscape:label="Drop Shadow"
id="filter3811"
style="color-interpolation-filters:sRGB">
<feFlood
flood-opacity="0.25"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood3813" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite3815" />
<feGaussianBlur
stdDeviation="0.5"
result="blur"
id="feGaussianBlur3817" />
<feOffset
dx="0"
dy="1"
result="offset"
id="feOffset3819" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite3821" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="16"
inkscape:cx="9.745257"
inkscape:cy="9.618802"
inkscape:document-units="px"
inkscape:current-layer="layer"
showgrid="true"
inkscape:window-width="1916"
inkscape:window-height="1156"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="0"
showguides="true"
inkscape:guide-bbox="true"
guidecolor="#000000"
guideopacity="0.49803922"
fit-margin-top="-2"
fit-margin-left="-2"
fit-margin-right="-2"
fit-margin-bottom="-2">
<inkscape:grid
type="xygrid"
id="grid2985"
empspacing="4"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
spacingx="1"
spacingy="1"
originx="-9"
originy="-1"
color="#0000ff"
opacity="0.03137255" />
<sodipodi:guide
orientation="1,0"
position="11,26"
id="guide3060"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="15,26"
id="guide3062"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="26,21"
id="guide3064"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="26,5"
id="guide3066"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="17,0"
id="guide3068"
inkscape:locked="false" />
<sodipodi:guide
orientation="1,0"
position="9,0"
id="guide3070"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="0,18"
id="guide3074"
inkscape:locked="false" />
<sodipodi:guide
orientation="0,1"
position="0,16"
id="guide3076"
inkscape:locked="false" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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"
inkscape:groupmode="layer"
id="layer"
transform="translate(-9,-1)">
<path
sodipodi:nodetypes="cccc"
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:#fafafa;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3811)" />
<rect
style="fill:#fafafa;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter3811)"
id="rect2987"
width="20"
height="20"
x="12"
y="4"
ry="2" />
</g>
</svg>

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

@ -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 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_send_videocam_away.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" />
</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="956"
inkscape:window-height="567"
id="namedview8"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-8.3389831"
inkscape:cy="24"
inkscape:window-x="960"
inkscape:window-y="609"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<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="path6"
style="fill:#ff9800;fill-opacity:0.627451" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 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 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_send_videocam_dnd.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" />
</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="956"
inkscape:window-height="567"
id="namedview8"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-8.3389831"
inkscape:cy="24"
inkscape:window-x="960"
inkscape:window-y="609"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<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="path6"
style="fill:#f44336;fill-opacity:0.627451" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 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 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_send_videocam_offline.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" />
</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="956"
inkscape:window-height="567"
id="namedview8"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-8.3389831"
inkscape:cy="24"
inkscape:window-x="960"
inkscape:window-y="609"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<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="path6"
style="fill:#000000;fill-opacity:0.627451" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 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 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_send_videocam_offline_white.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" />
</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="956"
inkscape:window-height="567"
id="namedview8"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="10.5688"
inkscape:cy="23.898305"
inkscape:window-x="960"
inkscape:window-y="609"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<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="path6"
style="fill:#ffffff;fill-opacity:0.627451" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

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"
width="48"
height="48"
viewBox="0 0 24 24"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_send_videocam_online.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></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="1916"
inkscape:window-height="1036"
id="namedview6"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="6.5084746"
inkscape:cy="24"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<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:#43A047;fill-opacity:0.627451" />
</svg>

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

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"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="ic_verified_fingerprint.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" />
</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="1916"
inkscape:window-height="1156"
id="namedview6"
showgrid="false"
inkscape:zoom="4.9166667"
inkscape:cx="-3.3559322"
inkscape:cy="24"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="0"
inkscape:current-layer="svg2" />
<path
d="M24 2L6 10v12c0 11.11 7.67 21.47 18 24 10.33-2.53 18-12.89 18-24V10L24 2zm-4 32l-8-8 2.83-2.83L20 28.34l13.17-13.17L36 18 20 34z"
id="path4"
style="fill:#259b24;fill-opacity:0.87" />
</svg>

After

Width:  |  Height:  |  Size: 1.6 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

68
art/play_gif_black.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:#000000;fill-opacity:0.54" />
</svg>

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,11 +11,23 @@ resolutions = {
}
images = {
'ic_launcher.svg' => ['ic_launcher', 48],
'main_logo.svg' => ['main_logo', 200],
'play_video.svg' => ['play_video', 96],
'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],
@ -46,29 +58,34 @@ images = {
'ic_send_picture_offline_white.svg' => ['ic_send_picture_offline_white', 36],
'ic_send_picture_away.svg' => ['ic_send_picture_away', 36],
'ic_send_picture_dnd.svg' => ['ic_send_picture_dnd', 36],
'ic_send_videocam_online.svg' => ['ic_send_videocam_online', 36],
'ic_send_videocam_offline.svg' => ['ic_send_videocam_offline', 36],
'ic_send_videocam_offline_white.svg' => ['ic_send_videocam_offline_white', 36],
'ic_send_videocam_away.svg' => ['ic_send_videocam_away', 36],
'ic_send_videocam_dnd.svg' => ['ic_send_videocam_dnd', 36],
'ic_notifications_none_white80.svg' => ['ic_notifications_none_white80', 24],
'ic_notifications_off_white80.svg' => ['ic_notifications_off_white80', 24],
'ic_notifications_paused_white80.svg' => ['ic_notifications_paused_white80', 24],
'ic_notifications_white80.svg' => ['ic_notifications_white80', 24],
'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],
'ic_verified_fingerprint.svg' => ['ic_verified_fingerprint', 36],
'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],
'message_bubble_received_dark.svg' => ['message_bubble_received_dark.9', 0],
'message_bubble_received_warning.svg' => ['message_bubble_received_warning.9', 0],
'message_bubble_received_white.svg' => ['message_bubble_received_white.9', 0],
'message_bubble_sent.svg' => ['message_bubble_sent.9', 0],
'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
@ -82,7 +99,7 @@ images.each do |source_filename, settings|
base_width = svg.root["width"].to_i
base_height = svg.root["height"].to_i
guides = svg.find(".//sodipodi:guide")
guides = svg.find(".//sodipodi:guide","sodipodi:http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd")
resolutions.each do |resolution, factor|
output_filename, base_size = settings
@ -95,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 = []
@ -132,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

@ -2,99 +2,246 @@
// sub-projects/modules.
buildscript {
repositories {
jcenter()
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
classpath 'com.android.tools.build:gradle:7.0.3'
}
}
apply plugin: 'com.android.application'
repositories {
jcenter()
google()
mavenCentral()
jcenter()
}
configurations {
playstoreCompile
playstoreImplementation
compatImplementation
conversationsFreeCompatImplementation
conversationsPlaystoreCompatImplementation
conversationsPlaystoreSystemImplementation
quicksyPlaystoreCompatImplementation
quicksyPlaystoreSystemImplementation
quicksyFreeCompatImplementation
quicksyImplementation
}
dependencies {
compile project(':libs:MemorizingTrustManager')
playstoreCompile 'com.google.android.gms:play-services-gcm:9.4.0'
compile 'org.sufficientlysecure:openpgp-api:10.0'
compile 'com.soundcloud.android:android-crop:1.0.1@aar'
compile 'com.android.support:support-v13:24.2.0'
compile 'org.bouncycastle:bcprov-jdk15on:1.52'
compile 'org.bouncycastle:bcmail-jdk15on:1.52'
compile 'org.jitsi:org.otr4j:0.22'
compile 'org.gnu.inet:libidn:1.15'
compile 'com.google.zxing:core:3.2.1'
compile 'com.google.zxing:android-integration:3.2.1'
compile 'de.measite.minidns:minidns:0.1.7'
compile 'de.timroes.android:EnhancedListView:0.3.4'
compile 'me.leolin:ShortcutBadger:1.1.4@aar'
compile 'com.kyleduo.switchbutton:library:1.2.8'
compile 'org.whispersystems:axolotl-android:1.3.4'
compile 'com.makeramen:roundedimageview:2.2.0'
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile "com.wefika:flowlayout:0.4.1"
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.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.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 '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"
// allows for -Dpre-dex=false to be set
preDexEnabled = "true".equals(System.getProperty("pre-dex", "true"))
preDexEnabled = System.getProperty("pre-dex", "true")
abiCodes = ['armeabi-v7a': 1, 'x86': 2, 'x86_64': 3, 'arm64-v8a': 4]
}
android {
compileSdkVersion 24
buildToolsVersion "23.0.3"
compileSdkVersion 29
defaultConfig {
minSdkVersion 14
targetSdkVersion 24
versionCode 171
versionName "1.14.0"
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
configurations {
implementation.exclude group: 'org.jetbrains' , module:'annotations'
}
dataBinding {
enabled true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
flavorDimensions("mode", "distribution", "emoji")
productFlavors {
playstore
free
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"
}
}
if (project.hasProperty('mStoreFile') &&
project.hasProperty('mStorePassword') &&
project.hasProperty('mKeyAlias') &&
project.hasProperty('mKeyPassword')) {
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 {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
if (new File("signing.properties").exists()) {
Properties props = new Properties()
props.load(new FileInputStream(file("signing.properties")))
signingConfigs {
release {
storeFile file(mStoreFile)
storePassword mStorePassword
keyAlias mKeyAlias
keyPassword mKeyPassword
storeFile file(props['keystore'])
storePassword props['keystore.password']
keyAlias props['keystore.alias']
keyPassword props['keystore.password']
}
}
buildTypes.release.signingConfig = signingConfigs.release
} else {
buildTypes.release.signingConfig = null
}
lintOptions {
disable 'ExtraTranslation', '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,29 +0,0 @@
* XEP-0027: Current Jabber OpenPGP Usage
* XEP-0030: Service Discovery
* XEP-0045: Multi-User Chat
* XEP-0048: Bookmarks
* 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

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

3
gradle.properties Normal file
View File

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

View File

@ -1,6 +1,6 @@
#Sat Apr 09 13:15:52 CEST 2016
#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-2.12-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip

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,32 +0,0 @@
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0'
}
}
apply plugin: 'android-library'
android {
compileSdkVersion 19
buildToolsVersion "19.1"
defaultConfig {
minSdkVersion 7
targetSdkVersion 19
}
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();
}
}

View File

@ -1,143 +0,0 @@
package de.duenndns.mtmexample;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.TextView;
import java.net.URL;
import java.security.KeyStoreException;
import java.util.ArrayList;
import java.util.Collections;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.X509TrustManager;
import de.duenndns.ssl.MemorizingTrustManager;
/**
* Example to demonstrate the use of MemorizingTrustManager on HTTPS
* sockets.
*/
public class MTMExample extends Activity implements OnClickListener
{
MemorizingTrustManager mtm;
TextView content;
HostnameVerifier defaultverifier;
EditText urlinput;
String text;
Handler hdlr;
/** Creates the Activity and registers a MemorizingTrustManager. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
JULHandler.initialize();
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.mtmexample);
// set up gui elements
findViewById(R.id.connect).setOnClickListener(this);
content = (TextView)findViewById(R.id.content);
urlinput = (EditText)findViewById(R.id.url);
// register handler for background thread
hdlr = new Handler();
// Here, the MemorizingTrustManager is activated for HTTPS
try {
// set location of the keystore
MemorizingTrustManager.setKeyStoreFile("private", "sslkeys.bks");
// register MemorizingTrustManager for HTTPS
SSLContext sc = SSLContext.getInstance("TLS");
mtm = new MemorizingTrustManager(this);
sc.init(null, new X509TrustManager[] { mtm },
new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(
mtm.wrapHostnameVerifier(HttpsURLConnection.getDefaultHostnameVerifier()));
// disable redirects to reduce possible confusion
HttpsURLConnection.setFollowRedirects(false);
} catch (Exception e) {
e.printStackTrace();
}
}
/** Updates the screen content from a background thread. */
void setText(final String s, final boolean progress) {
text = s;
hdlr.post(new Runnable() {
public void run() {
content.setText(s);
setProgressBarIndeterminateVisibility(progress);
}
});
}
/** Spawns a new thread connecting to the specified URL.
* The result of the request is displayed on the screen.
* @param urlString a HTTPS URL to connect to.
*/
void connect(final String urlString) {
new Thread() {
public void run() {
try {
URL u = new URL(urlString);
HttpsURLConnection c = (HttpsURLConnection)u.openConnection();
c.connect();
setText("" + c.getResponseCode() + " "
+ c.getResponseMessage(), false);
c.disconnect();
} catch (Exception e) {
setText(e.toString(), false);
e.printStackTrace();
}
}
}.start();
}
/** Reacts on the connect Button press. */
@Override
public void onClick(View view) {
String url = urlinput.getText().toString();
setText("Loading " + url, true);
setProgressBarIndeterminateVisibility(true);
connect(url);
}
/** React on the "Manage Certificates" button press. */
public void onManage(View view) {
final ArrayList<String> aliases = Collections.list(mtm.getCertificates());
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, aliases);
new AlertDialog.Builder(this).setTitle("Tap Certificate to Delete")
.setNegativeButton(android.R.string.cancel, null)
.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
String alias = aliases.get(which);
mtm.deleteCertificate(alias);
setText("Deleted " + alias, false);
} catch (KeyStoreException e) {
e.printStackTrace();
setText("Error: " + e.getLocalizedMessage(), false);
}
}
})
.create().show();
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

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=true
# Project target.
target=android-19

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mtm_accept_cert">Unbekanntes Zertifikat akzeptieren?</string>
<string name="mtm_trust_anchor">Das Serverzertifikat stammt nicht von einer bekannten Ausstellungsstelle (CA).</string>
<string name="mtm_cert_expired">The server certificate is expired.</string>
<string name="mtm_accept_servername">Abweichenden Servernamen akzeptieren?</string>
<string name="mtm_hostname_mismatch">Der Server konnte sich nicht als \"%s\" ausweisen. Das Zertifikat gilt nur für:</string>
<string name="mtm_connect_anyway">Verbindung trotzdem aufbauen?</string>
<string name="mtm_cert_details">Zertifikat-Details:</string>
<string name="mtm_decision_always">Immer</string>
<string name="mtm_decision_once">Einmal</string>
<string name="mtm_decision_abort">Abbrechen</string>
<string name="mtm_notification">Zertifikatsprüfung</string>
</resources>

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mtm_accept_cert">¿Aceptar certicado desconocido?</string>
<string name="mtm_trust_anchor">El certificado del servidor no está firmado por una Autoridad Conocida (CA).</string>
<string name="mtm_cert_expired">The server certificate is expired.</string>
<string name="mtm_accept_servername">¿Aceptar discordancia en nombre del servidor?</string>
<string name="mtm_hostname_mismatch">El servidor no ha podido autenticarte como \"%s\". El certificado es solo válido para:</string>
<string name="mtm_connect_anyway">¿Quieres conectar de todas formas?</string>
<string name="mtm_cert_details">Detalle del certificado:</string>
<string name="mtm_decision_always">Siempre</string>
<string name="mtm_decision_once">Una vez</string>
<string name="mtm_decision_abort">Abortar</string>
<string name="mtm_notification">Verificación de Certificado</string>
</resources>

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mtm_accept_cert">Ziurtagiri ezezaguna onartu?</string>
<string name="mtm_trust_anchor">Zerbitzariaren ziurtagiria ez dago Ziurtagiri-emaile Autoritate ezagun batez sinatuta.</string>
<string name="mtm_cert_expired">Zerbitzariaren ziurtagiria iraungi da.</string>
<string name="mtm_accept_servername">Zerbitzariaren izeneko desadostasuna onartu?</string>
<string name="mtm_hostname_mismatch">Zerbitzaria ezin izan da \&quot;%s\&quot; bezala autentifikatu. Ziurtagiria soilik honetarako baliagarria da:</string>
<string name="mtm_connect_anyway">Konektatu hala ere?</string>
<string name="mtm_cert_details">Ziurtagiriaren xehetasunak:</string>
<string name="mtm_decision_always">Beti</string>
<string name="mtm_decision_once">Behin</string>
<string name="mtm_decision_abort">Utzi</string>
<string name="mtm_notification">Ziurtagiriaren egiaztapena</string>
</resources>

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mtm_accept_cert">Hyväksytäänkö palvelimen antama tuntematon varmenne?</string>
<string name="mtm_trust_anchor">Palvelimen varmenne ei ole tunnetun varmentajan (CA) allekirjoittama.</string>
<string name="mtm_accept_servername">Sallitaanko palvelimen nimi, joka ei vastaa varmeenteessa olevaa nimeä?</string>
<string name="mtm_hostname_mismatch">Palvelimella ei ole varmennetta nimelle \"%s\". Varmenteen sisältämät nimet:</string>
<string name="mtm_connect_anyway">Haluatko jatkaa yhteyden muodostamista?</string>
<string name="mtm_cert_details">Sertifikaatin tiedot:</string>
<string name="mtm_decision_always">Aina</string>
<string name="mtm_decision_once">Kerran</string>
<string name="mtm_decision_abort">Keskeytä</string>
<string name="mtm_notification">Varmenteen tarkistus</string>
</resources>

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mtm_accept_cert">Accept Unknown Certificate?</string>
<string name="mtm_trust_anchor">Le certificat du serveur nest pas signé par une Autorité de Certification reconnue.</string>
<string name="mtm_accept_servername">Accept Mismatching Server Name?</string>
<string name="mtm_hostname_mismatch">Server could not authenticate as \"%s\". The certificate is only valid for:</string>
<string name="mtm_connect_anyway">Do you want to connect anyway?</string>
<string name="mtm_cert_details">Détails du certificat:</string>
<string name="mtm_decision_always">Toujours</string>
<string name="mtm_decision_once">Une seule fois</string>
<string name="mtm_decision_abort">Annuler</string>
<string name="mtm_notification">Certificate Verification</string>
</resources>

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mtm_accept_cert">Godta ukjent sertifikat?</string>
<string name="mtm_trust_anchor">Sertifikatet er ikke utstilt av en kjent utstiller (CA).</string>
<string name="mtm_accept_servername">Godta feil servernavn?</string>
<string name="mtm_hostname_mismatch">Serveren heter ikke \"%s\". Sertifikatet gjelder bare for: </string>
<string name="mtm_connect_anyway">Vil du bruke serveren likevel?</string>
<string name="mtm_cert_details">Sertifikatdetaljer:</string>
<string name="mtm_decision_always">Alltid</string>
<string name="mtm_decision_once">En gang</string>
<string name="mtm_decision_abort">Avbryt</string>
<string name="mtm_notification">Sertifikat-sjekk</string>
</resources>

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="mtm_accept_cert">Accept Unknown Certificate?</string>
<string name="mtm_trust_anchor">The server certificate is not signed by a known Certificate Authority.</string>
<string name="mtm_cert_expired">The server certificate is expired.</string>
<string name="mtm_accept_servername">Accept Mismatching Server Name?</string>
<string name="mtm_hostname_mismatch">Server could not authenticate as \&quot;%s\&quot;. The certificate is only valid for:</string>
<string name="mtm_connect_anyway">Do you want to connect anyway?</string>
<string name="mtm_cert_details">Certificate details:</string>
<string name="mtm_decision_always">Always</string>
<string name="mtm_decision_once">Once</string>
<string name="mtm_decision_abort">Abort</string>
<string name="mtm_notification">Certificate Verification</string>
</resources>

View File

@ -1 +0,0 @@
include ':example'

View File

@ -1,735 +0,0 @@
/* MemorizingTrustManager - a TrustManager which asks the user about invalid
* certificates and memorizes their decision.
*
* Copyright (c) 2010 Georg Lukas <georg@op-co.de>
*
* MemorizingTrustManager.java contains the actual trust manager and interface
* code to create a MemorizingActivity and obtain the results.
*
* 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.
*/
package de.duenndns.ssl;
import android.app.Activity;
import android.app.Application;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.Service;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.SparseArray;
import android.os.Handler;
import java.io.File;
import java.io.IOException;
import java.security.cert.*;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.MessageDigest;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Enumeration;
import java.util.List;
import java.util.Locale;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
/**
* A X509 trust manager implementation which asks the user about invalid
* certificates and memorizes their decision.
* <p>
* The certificate validity is checked using the system default X509
* TrustManager, creating a query Dialog if the check fails.
* <p>
* <b>WARNING:</b> This only works if a dedicated thread is used for
* opening sockets!
*/
public class MemorizingTrustManager implements X509TrustManager {
final static String DECISION_INTENT = "de.duenndns.ssl.DECISION";
final static String DECISION_INTENT_ID = DECISION_INTENT + ".decisionId";
final static String DECISION_INTENT_CERT = DECISION_INTENT + ".cert";
final static String DECISION_INTENT_CHOICE = DECISION_INTENT + ".decisionChoice";
private final static Logger LOGGER = Logger.getLogger(MemorizingTrustManager.class.getName());
final static String DECISION_TITLE_ID = DECISION_INTENT + ".titleId";
private final static int NOTIFICATION_ID = 100509;
final static String NO_TRUST_ANCHOR = "Trust anchor for certification path not found.";
static String KEYSTORE_DIR = "KeyStore";
static String KEYSTORE_FILE = "KeyStore.bks";
Context master;
Activity foregroundAct;
NotificationManager notificationManager;
private static int decisionId = 0;
private static SparseArray<MTMDecision> openDecisions = new SparseArray<MTMDecision>();
Handler masterHandler;
private File keyStoreFile;
private KeyStore appKeyStore;
private X509TrustManager defaultTrustManager;
private X509TrustManager appTrustManager;
/** Creates an instance of the MemorizingTrustManager class that falls back to a custom TrustManager.
*
* You need to supply the application context. This has to be one of:
* - Application
* - Activity
* - Service
*
* The context is used for file management, to display the dialog /
* notification and for obtaining translated strings.
*
* @param m Context for the application.
* @param defaultTrustManager Delegate trust management to this TM. If null, the user must accept every certificate.
*/
public MemorizingTrustManager(Context m, X509TrustManager defaultTrustManager) {
init(m);
this.appTrustManager = getTrustManager(appKeyStore);
this.defaultTrustManager = defaultTrustManager;
}
/** Creates an instance of the MemorizingTrustManager class using the system X509TrustManager.
*
* You need to supply the application context. This has to be one of:
* - Application
* - Activity
* - Service
*
* The context is used for file management, to display the dialog /
* notification and for obtaining translated strings.
*
* @param m Context for the application.
*/
public MemorizingTrustManager(Context m) {
init(m);
this.appTrustManager = getTrustManager(appKeyStore);
this.defaultTrustManager = getTrustManager(null);
}
void init(Context m) {
master = m;
masterHandler = new Handler(m.getMainLooper());
notificationManager = (NotificationManager)master.getSystemService(Context.NOTIFICATION_SERVICE);
Application app;
if (m instanceof Application) {
app = (Application)m;
} else if (m instanceof Service) {
app = ((Service)m).getApplication();
} else if (m instanceof Activity) {
app = ((Activity)m).getApplication();
} else throw new ClassCastException("MemorizingTrustManager context must be either Activity or Service!");
File dir = app.getDir(KEYSTORE_DIR, Context.MODE_PRIVATE);
keyStoreFile = new File(dir + File.separator + KEYSTORE_FILE);
appKeyStore = loadAppKeyStore();
}
/**
* Returns a X509TrustManager list containing a new instance of
* TrustManagerFactory.
*
* This function is meant for convenience only. You can use it
* as follows to integrate TrustManagerFactory for HTTPS sockets:
*
* <pre>
* SSLContext sc = SSLContext.getInstance("TLS");
* sc.init(null, MemorizingTrustManager.getInstanceList(this),
* new java.security.SecureRandom());
* HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
* </pre>
* @param c Activity or Service to show the Dialog / Notification
*/
public static X509TrustManager[] getInstanceList(Context c) {
return new X509TrustManager[] { new MemorizingTrustManager(c) };
}
/**
* Binds an Activity to the MTM for displaying the query dialog.
*
* This is useful if your connection is run from a service that is
* triggered by user interaction -- in such cases the activity is
* visible and the user tends to ignore the service notification.
*
* You should never have a hidden activity bound to MTM! Use this
* function in onResume() and @see unbindDisplayActivity in onPause().
*
* @param act Activity to be bound
*/
public void bindDisplayActivity(Activity act) {
foregroundAct = act;
}
/**
* Removes an Activity from the MTM display stack.
*
* Always call this function when the Activity added with
* {@link #bindDisplayActivity(Activity)} is hidden.
*
* @param act Activity to be unbound
*/
public void unbindDisplayActivity(Activity act) {
// do not remove if it was overridden by a different activity
if (foregroundAct == act)
foregroundAct = null;
}
/**
* Changes the path for the KeyStore file.
*
* The actual filename relative to the app's directory will be
* <code>app_<i>dirname</i>/<i>filename</i></code>.
*
* @param dirname directory to store the KeyStore.
* @param filename file name for the KeyStore.
*/
public static void setKeyStoreFile(String dirname, String filename) {
KEYSTORE_DIR = dirname;
KEYSTORE_FILE = filename;
}
/**
* Get a list of all certificate aliases stored in MTM.
*
* @return an {@link Enumeration} of all certificates
*/
public Enumeration<String> getCertificates() {
try {
return appKeyStore.aliases();
} catch (KeyStoreException e) {
// this should never happen, however...
throw new RuntimeException(e);
}
}
/**
* Get a certificate for a given alias.
*
* @param alias the certificate's alias as returned by {@link #getCertificates()}.
*
* @return the certificate associated with the alias or <tt>null</tt> if none found.
*/
public Certificate getCertificate(String alias) {
try {
return appKeyStore.getCertificate(alias);
} catch (KeyStoreException e) {
// this should never happen, however...
throw new RuntimeException(e);
}
}
/**
* Removes the given certificate from MTMs key store.
*
* <p>
* <b>WARNING</b>: this does not immediately invalidate the certificate. It is
* well possible that (a) data is transmitted over still existing connections or
* (b) new connections are created using TLS renegotiation, without a new cert
* check.
* </p>
* @param alias the certificate's alias as returned by {@link #getCertificates()}.
*
* @throws KeyStoreException if the certificate could not be deleted.
*/
public void deleteCertificate(String alias) throws KeyStoreException {
appKeyStore.deleteEntry(alias);
keyStoreUpdated();
}
/**
* Creates a new hostname verifier supporting user interaction.
*
* <p>This method creates a new {@link HostnameVerifier} that is bound to
* the given instance of {@link MemorizingTrustManager}, and leverages an
* existing {@link HostnameVerifier}. The returned verifier performs the
* following steps, returning as soon as one of them succeeds:
* </p>
* <ol>
* <li>Success, if the wrapped defaultVerifier accepts the certificate.</li>
* <li>Success, if the server certificate is stored in the keystore under the given hostname.</li>
* <li>Ask the user and return accordingly.</li>
* <li>Failure on exception.</li>
* </ol>
*
* @param defaultVerifier the {@link HostnameVerifier} that should perform the actual check
* @return a new hostname verifier using the MTM's key store
*
* @throws IllegalArgumentException if the defaultVerifier parameter is null
*/
public HostnameVerifier wrapHostnameVerifier(final HostnameVerifier defaultVerifier) {
if (defaultVerifier == null)
throw new IllegalArgumentException("The default verifier may not be null");
return new MemorizingHostnameVerifier(defaultVerifier);
}
public HostnameVerifier wrapHostnameVerifierNonInteractive(final HostnameVerifier defaultVerifier) {
if (defaultVerifier == null)
throw new IllegalArgumentException("The default verifier may not be null");
return new NonInteractiveMemorizingHostnameVerifier(defaultVerifier);
}
X509TrustManager getTrustManager(KeyStore ks) {
try {
TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
tmf.init(ks);
for (TrustManager t : tmf.getTrustManagers()) {
if (t instanceof X509TrustManager) {
return (X509TrustManager)t;
}
}
} catch (Exception e) {
// Here, we are covering up errors. It might be more useful
// however to throw them out of the constructor so the
// embedding app knows something went wrong.
LOGGER.log(Level.SEVERE, "getTrustManager(" + ks + ")", e);
}
return null;
}
KeyStore loadAppKeyStore() {
KeyStore ks;
try {
ks = KeyStore.getInstance(KeyStore.getDefaultType());
} catch (KeyStoreException e) {
LOGGER.log(Level.SEVERE, "getAppKeyStore()", e);
return null;
}
try {
ks.load(null, null);
ks.load(new java.io.FileInputStream(keyStoreFile), "MTM".toCharArray());
} catch (java.io.FileNotFoundException e) {
LOGGER.log(Level.INFO, "getAppKeyStore(" + keyStoreFile + ") - file does not exist");
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "getAppKeyStore(" + keyStoreFile + ")", e);
}
return ks;
}
void storeCert(String alias, Certificate cert) {
try {
appKeyStore.setCertificateEntry(alias, cert);
} catch (KeyStoreException e) {
LOGGER.log(Level.SEVERE, "storeCert(" + cert + ")", e);
return;
}
keyStoreUpdated();
}
void storeCert(X509Certificate cert) {
storeCert(cert.getSubjectDN().toString(), cert);
}
void keyStoreUpdated() {
// reload appTrustManager
appTrustManager = getTrustManager(appKeyStore);
// store KeyStore to file
java.io.FileOutputStream fos = null;
try {
fos = new java.io.FileOutputStream(keyStoreFile);
appKeyStore.store(fos, "MTM".toCharArray());
} catch (Exception e) {
LOGGER.log(Level.SEVERE, "storeCert(" + keyStoreFile + ")", e);
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
LOGGER.log(Level.SEVERE, "storeCert(" + keyStoreFile + ")", e);
}
}
}
}
// if the certificate is stored in the app key store, it is considered "known"
private boolean isCertKnown(X509Certificate cert) {
try {
return appKeyStore.getCertificateAlias(cert) != null;
} catch (KeyStoreException e) {
return false;
}
}
private boolean isExpiredException(Throwable e) {
do {
if (e instanceof CertificateExpiredException)
return true;
e = e.getCause();
} while (e != null);
return false;
}
public void checkCertTrusted(X509Certificate[] chain, String authType, boolean isServer, boolean interactive)
throws CertificateException
{
LOGGER.log(Level.FINE, "checkCertTrusted(" + chain + ", " + authType + ", " + isServer + ")");
try {
LOGGER.log(Level.FINE, "checkCertTrusted: trying appTrustManager");
if (isServer)
appTrustManager.checkServerTrusted(chain, authType);
else
appTrustManager.checkClientTrusted(chain, authType);
} catch (CertificateException ae) {
LOGGER.log(Level.FINER, "checkCertTrusted: appTrustManager failed", ae);
// if the cert is stored in our appTrustManager, we ignore expiredness
if (isExpiredException(ae)) {
LOGGER.log(Level.INFO, "checkCertTrusted: accepting expired certificate from keystore");
return;
}
if (isCertKnown(chain[0])) {
LOGGER.log(Level.INFO, "checkCertTrusted: accepting cert already stored in keystore");
return;
}
try {
if (defaultTrustManager == null)
throw ae;
LOGGER.log(Level.FINE, "checkCertTrusted: trying defaultTrustManager");
if (isServer)
defaultTrustManager.checkServerTrusted(chain, authType);
else
defaultTrustManager.checkClientTrusted(chain, authType);
} catch (CertificateException e) {
e.printStackTrace();
if (interactive) {
interactCert(chain, authType, e);
} else {
throw e;
}
}
}
}
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException
{
checkCertTrusted(chain, authType, false,true);
}
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException
{
checkCertTrusted(chain, authType, true,true);
}
public X509Certificate[] getAcceptedIssuers()
{
LOGGER.log(Level.FINE, "getAcceptedIssuers()");
return defaultTrustManager.getAcceptedIssuers();
}
private int createDecisionId(MTMDecision d) {
int myId;
synchronized(openDecisions) {
myId = decisionId;
openDecisions.put(myId, d);
decisionId += 1;
}
return myId;
}
private static String hexString(byte[] data) {
StringBuffer si = new StringBuffer();
for (int i = 0; i < data.length; i++) {
si.append(String.format("%02x", data[i]));
if (i < data.length - 1)
si.append(":");
}
return si.toString();
}
private static String certHash(final X509Certificate cert, String digest) {
try {
MessageDigest md = MessageDigest.getInstance(digest);
md.update(cert.getEncoded());
return hexString(md.digest());
} catch (java.security.cert.CertificateEncodingException e) {
return e.getMessage();
} catch (java.security.NoSuchAlgorithmException e) {
return e.getMessage();
}
}
private void certDetails(StringBuffer si, X509Certificate c) {
SimpleDateFormat validityDateFormater = new SimpleDateFormat("yyyy-MM-dd");
si.append("\n");
si.append(c.getSubjectDN().toString());
si.append("\n");
si.append(validityDateFormater.format(c.getNotBefore()));
si.append(" - ");
si.append(validityDateFormater.format(c.getNotAfter()));
si.append("\nSHA-256: ");
si.append(certHash(c, "SHA-256"));
si.append("\nSHA-1: ");
si.append(certHash(c, "SHA-1"));
si.append("\nSigned by: ");
si.append(c.getIssuerDN().toString());
si.append("\n");
}
private String certChainMessage(final X509Certificate[] chain, CertificateException cause) {
Throwable e = cause;
LOGGER.log(Level.FINE, "certChainMessage for " + e);
StringBuffer si = new StringBuffer();
if (e.getCause() != null) {
e = e.getCause();
// HACK: there is no sane way to check if the error is a "trust anchor
// not found", so we use string comparison.
if (NO_TRUST_ANCHOR.equals(e.getMessage())) {
si.append(master.getString(R.string.mtm_trust_anchor));
} else
si.append(e.getLocalizedMessage());
si.append("\n");
}
si.append("\n");
si.append(master.getString(R.string.mtm_connect_anyway));
si.append("\n\n");
si.append(master.getString(R.string.mtm_cert_details));
for (X509Certificate c : chain) {
certDetails(si, c);
}
return si.toString();
}
private String hostNameMessage(X509Certificate cert, String hostname) {
StringBuffer si = new StringBuffer();
si.append(master.getString(R.string.mtm_hostname_mismatch, hostname));
si.append("\n\n");
try {
Collection<List<?>> sans = cert.getSubjectAlternativeNames();
if (sans == null) {
si.append(cert.getSubjectDN());
si.append("\n");
} else for (List<?> altName : sans) {
Object name = altName.get(1);
if (name instanceof String) {
si.append("[");
si.append((Integer)altName.get(0));
si.append("] ");
si.append(name);
si.append("\n");
}
}
} catch (CertificateParsingException e) {
e.printStackTrace();
si.append("<Parsing error: ");
si.append(e.getLocalizedMessage());
si.append(">\n");
}
si.append("\n");
si.append(master.getString(R.string.mtm_connect_anyway));
si.append("\n\n");
si.append(master.getString(R.string.mtm_cert_details));
certDetails(si, cert);
return si.toString();
}
// We can use Notification.Builder once MTM's minSDK is >= 11
@SuppressWarnings("deprecation")
void startActivityNotification(Intent intent, int decisionId, String certName) {
Notification n = new Notification(android.R.drawable.ic_lock_lock,
master.getString(R.string.mtm_notification),
System.currentTimeMillis());
PendingIntent call = PendingIntent.getActivity(master, 0, intent, 0);
n.setLatestEventInfo(master.getApplicationContext(),
master.getString(R.string.mtm_notification),
certName, call);
n.flags |= Notification.FLAG_AUTO_CANCEL;
notificationManager.notify(NOTIFICATION_ID + decisionId, n);
}
/**
* Returns the top-most entry of the activity stack.
*
* @return the Context of the currently bound UI or the master context if none is bound
*/
Context getUI() {
return (foregroundAct != null) ? foregroundAct : master;
}
int interact(final String message, final int titleId) {
/* prepare the MTMDecision blocker object */
MTMDecision choice = new MTMDecision();
final int myId = createDecisionId(choice);
masterHandler.post(new Runnable() {
public void run() {
Intent ni = new Intent(master, MemorizingActivity.class);
ni.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ni.setData(Uri.parse(MemorizingTrustManager.class.getName() + "/" + myId));
ni.putExtra(DECISION_INTENT_ID, myId);
ni.putExtra(DECISION_INTENT_CERT, message);
ni.putExtra(DECISION_TITLE_ID, titleId);
// we try to directly start the activity and fall back to
// making a notification
try {
getUI().startActivity(ni);
} catch (Exception e) {
LOGGER.log(Level.FINE, "startActivity(MemorizingActivity)", e);
startActivityNotification(ni, myId, message);
}
}
});
LOGGER.log(Level.FINE, "openDecisions: " + openDecisions + ", waiting on " + myId);
try {
synchronized(choice) { choice.wait(); }
} catch (InterruptedException e) {
LOGGER.log(Level.FINER, "InterruptedException", e);
}
LOGGER.log(Level.FINE, "finished wait on " + myId + ": " + choice.state);
return choice.state;
}
void interactCert(final X509Certificate[] chain, String authType, CertificateException cause)
throws CertificateException
{
switch (interact(certChainMessage(chain, cause), R.string.mtm_accept_cert)) {
case MTMDecision.DECISION_ALWAYS:
storeCert(chain[0]); // only store the server cert, not the whole chain
case MTMDecision.DECISION_ONCE:
break;
default:
throw (cause);
}
}
boolean interactHostname(X509Certificate cert, String hostname)
{
switch (interact(hostNameMessage(cert, hostname), R.string.mtm_accept_servername)) {
case MTMDecision.DECISION_ALWAYS:
storeCert(hostname, cert);
case MTMDecision.DECISION_ONCE:
return true;
default:
return false;
}
}
protected static void interactResult(int decisionId, int choice) {
MTMDecision d;
synchronized(openDecisions) {
d = openDecisions.get(decisionId);
openDecisions.remove(decisionId);
}
if (d == null) {
LOGGER.log(Level.SEVERE, "interactResult: aborting due to stale decision reference!");
return;
}
synchronized(d) {
d.state = choice;
d.notify();
}
}
class MemorizingHostnameVerifier implements HostnameVerifier {
private HostnameVerifier defaultVerifier;
public MemorizingHostnameVerifier(HostnameVerifier wrapped) {
defaultVerifier = wrapped;
}
protected boolean verify(String hostname, SSLSession session, boolean interactive) {
LOGGER.log(Level.FINE, "hostname verifier for " + hostname + ", trying default verifier first");
// if the default verifier accepts the hostname, we are done
if (defaultVerifier.verify(hostname, session)) {
LOGGER.log(Level.FINE, "default verifier accepted " + hostname);
return true;
}
// otherwise, we check if the hostname is an alias for this cert in our keystore
try {
X509Certificate cert = (X509Certificate)session.getPeerCertificates()[0];
//Log.d(TAG, "cert: " + cert);
if (cert.equals(appKeyStore.getCertificate(hostname.toLowerCase(Locale.US)))) {
LOGGER.log(Level.FINE, "certificate for " + hostname + " is in our keystore. accepting.");
return true;
} else {
LOGGER.log(Level.FINE, "server " + hostname + " provided wrong certificate, asking user.");
if (interactive) {
return interactHostname(cert, hostname);
} else {
return false;
}
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
@Override
public boolean verify(String hostname, SSLSession session) {
return verify(hostname, session, true);
}
}
class NonInteractiveMemorizingHostnameVerifier extends MemorizingHostnameVerifier {
public NonInteractiveMemorizingHostnameVerifier(HostnameVerifier wrapped) {
super(wrapped);
}
@Override
public boolean verify(String hostname, SSLSession session) {
return verify(hostname, session, false);
}
}
public X509TrustManager getNonInteractive() {
return new NonInteractiveMemorizingTrustManager();
}
private class NonInteractiveMemorizingTrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
MemorizingTrustManager.this.checkCertTrusted(chain, authType, false, false);
}
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
MemorizingTrustManager.this.checkCertTrusted(chain, authType, true, false);
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return MemorizingTrustManager.this.getAcceptedIssuers();
}
}
}

View File

@ -0,0 +1,2 @@
• bug fixes for peer to peer file transfer (Jingle)
• fixed server info for unlimited/unknown max file size

View File

@ -0,0 +1 @@
• stability improvements for group chats and channels

View File

@ -0,0 +1,2 @@
• allow backups to be restored from anywhere
• bug fixes

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