Commit graph

4346 commits

Author SHA1 Message Date
Daniel Gultsch c44f4b102a
do not accept fast token w/o channel binding for channel bound login 2023-10-21 14:22:38 +02:00
Daniel Gultsch 822f3f4d22
consider going from unique or exporter to endpoint a downgrade 2023-10-21 14:21:29 +02:00
Daniel Gultsch d1f4fbd9de
add connect timeout to DoT 2023-10-19 20:51:19 +02:00
Daniel Gultsch 71ebca40e8
add ķ as irregular unicode 2023-10-19 18:11:08 +02:00
Daniel Gultsch 063f30ded2
ignore outgoing invite
outgoing, mediated invites are of type=normal and can end up in MAM.
We want to ignore those if they get mirrored back to us
2023-10-18 11:50:10 +02:00
Daniel Gultsch 1b49e6b3c1
disable password edit unless unauthorized 2023-10-15 11:23:12 +02:00
Daniel Gultsch 3350ea8b5b
ensure we are in session accepted when processing content-modify 2023-10-15 08:51:15 +02:00
Daniel Gultsch 9a922ffe5d
quietly ignore mediated invites from blocked contacts 2023-10-13 17:36:12 +02:00
Daniel Gultsch 5b2444ea13
implement see-other-host stream error 2023-10-13 08:29:23 +02:00
Daniel Gultsch a40d244bf5
remove unnecessary in resolver 2023-10-12 11:59:21 +02:00
Daniel Gultsch 788565b299
upgrade to 'both' upon accepting recvonly content-add 2023-10-11 11:38:09 +02:00
Daniel Gultsch dbf71e5d54
handle senders modification via content-modify
Dino uses this to enable/disable video when a video content is already present
2023-10-10 18:47:29 +02:00
Daniel Gultsch 39194d111c
QR code scan: take disabled accounts into consideration
when making register or add contact decision
2023-10-10 09:36:08 +02:00
Daniel Gultsch c53e035935
do not use JMI if any rtp capable device does not support it 2023-10-09 16:23:02 +02:00
Daniel Gultsch 8f014d5525
implement Private DNS (DoT)
due to limitations in the MiniDNS library this does not work when
'Validate hostname with DNSSEC' is enabled in the expert settings
2023-10-09 13:27:44 +02:00
Daniel Gultsch d3d582759f
support omemo verification in non stub transport content modifications
Dino (and this is probably correct behaviour) expects a fingerprint in the
content-add message. (and not a stub transport as indicated in the examples).

however if we start to include them we also need to encrypt and verify them
properly.
2023-10-09 13:19:26 +02:00
Arne-Brün Vogelsang 1a7e75235a Update src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java
just a space
2023-10-08 18:25:47 +00:00
Arne-Brün Vogelsang 77631c97a7 Update src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java
Add Fairphone 4 to AEC Blacklist to fix Echo problems: https://github.com/iNPUTmice/Conversations/issues/4439
2023-10-08 18:25:20 +00:00
Daniel Gultsch 1c5a1b8c71
keep order of rtp contents 2023-10-06 12:34:41 +02:00
Daniel Gultsch 541c8ba80d
modify mime type detection for shared files
add support for audiobooks
2023-10-06 12:34:13 +02:00
kosyak 663a0feecb get rid of soprani.ca leftofvers 2023-10-06 11:14:10 +02:00
kosyak c9c98d98e6 get rid of soprani.ca bookmark 2023-10-06 11:13:24 +02:00
Daniel Gultsch 95aea4291e
don't attempt to figure out file path on Android 11+
fixes #117
2023-10-05 20:29:42 +02:00
Daniel Gultsch 601a8cb3bc
process content-modify for pending content-adds 2023-10-05 16:23:43 +02:00
Daniel Gultsch a8241c72df
use url safe jingle session ids
Movim does not like slashes (/) in jingle session ids.
When proposing a session called 'wBKabx1kRIfkgNxAShip/w' Movim will
accept (proceed) a session called 'wBKabx1kRIfkgNxAShip' which the initiator of course does not know about. (Conversations will get stuck at ringing/discovering devices)

This is likely because a click on 'Reply' (accept call) in Movim opens upa pop up window where both the full jid as well as the session id are transmitted as part of the URL.

(Full jids can contain more than on slash btw)
2023-10-04 13:30:53 +02:00
Daniel Gultsch 1b5d2151d0
warn early when SDP is likely to be invalid 2023-10-04 13:07:28 +02:00
Daniel Gultsch 6bc3cad7de
apply ice-options when adding content or restarting ice 2023-10-04 10:43:45 +02:00
Daniel Gultsch 1aeae9c7f6
set local-only flag on ongoing call notification 2023-10-03 14:16:48 +02:00
Daniel Gultsch 8570c9f912
use more aggressive reconnect intervals during rtp session 2023-10-03 12:56:10 +02:00
Daniel Gultsch fd4b8ba188
bring back ICE Renomination via negotiation 2023-10-03 12:55:44 +02:00
Daniel Gultsch 17856a47db
hold back candidates until after content-add 2023-10-02 13:54:36 +02:00
Daniel Gultsch 7e9980d997
catch illegal state exception in TrackWrapper 2023-10-02 11:48:03 +02:00
Daniel Gultsch 09993b8319
fetch local description on its own executor 2023-10-02 11:03:08 +02:00
Daniel Gultsch 0dca7f8a5a
JMI: send 'ringing' and receipts only for contacts
fixes #110
2023-10-01 08:05:40 +02:00
Daniel Gultsch ac3ce93c56
fix stun url generation 2023-10-01 08:02:55 +02:00
Daniel Gultsch c9b80254e4
add more logging to unroutable jingle messages 2023-09-30 15:56:06 +02:00
Daniel Gultsch 6660877bcf
jingle: trim media attribute values
Movim has trailing whitespace around some of their media attributes

<source ssrc="1892824964" xmlns="urn:xmpp:jingle:apps:rtp:ssma:0">
  <parameter name="msid" value="{a98821d7-b298-4130-925a-ff6c510734c0} {f45dfc5c-2fa7-42b4-85e5-935e786b3feb} " xmlns="urn:xmpp:jingle:apps:rtp:ssma:0"/>
  <parameter name="cname" value="{63b1042b-5cb5-4411-b2a5-bdff92ae45be}" xmlns="urn:xmpp:jingle:apps:rtp:ssma:0"/>
</source>

our WebRTC doesn’t like that. We trim the value even though this seems to be a Movim bug.
2023-09-30 07:55:08 +02:00
Daniel Gultsch 86f46ece83
revert back to AAC for voice messages
iOS can not do opus out of the box
2023-09-29 18:42:31 +02:00
Daniel Gultsch 05c79ff29d
version bump webrtc to m117 2023-09-29 16:19:01 +02:00
Daniel Gultsch 3e9c08a4aa
include date in backup file name
since `account.ceb` might have previously been created by a different application
(for example f-droid and user is on play now) or copied over via the file
manager Conversations might not have permission to write over an existing file.

we include the date so we always get a new file

fixes #105
2023-09-25 10:56:24 +02:00
Daniel Gultsch 2adff4a92c
catch rare instances of foreground service not allowed to start 2023-09-25 09:22:29 +02:00
Daniel Gultsch 8ba90f266e
add explicit error message for outdated backup files 2023-09-20 17:00:04 +02:00
kosyak b83d224652 bump mam limits 2023-09-18 13:29:01 +02:00
kosyak 13c22ad5db append author and day for multi select copy value 2023-09-15 17:56:07 +02:00
kosyak e3ce350077 improve message selection mode title 2023-09-15 17:38:19 +02:00
kosyak 5d30742a13 fix message archive issues 2023-09-15 16:14:32 +02:00
kosyak 6770f7de61 separate PM fixes 2023-09-15 14:11:43 +02:00
kosyak 1ca354c208 muc PM in the separate conversation 2023-09-15 11:28:50 +02:00
Daniel Gultsch b4c3334d7e
add a few TODOs wrt tie breaks 2023-09-14 14:39:32 +02:00
Daniel Gultsch fdd7f2926f
support 'ringing' jingle message 2023-09-14 11:22:19 +02:00
Daniel Gultsch 00ae1ca762
fix group chat shortcuts 2023-09-11 16:38:57 +02:00
Daniel Gultsch c6501a3ad4
fix UUIDv4 calculation 2023-09-08 14:19:18 +02:00
Stephen Paul Weber 11e6cb9693
Use conversation notifications
Allows for per-conversation priority and sound
2023-09-07 13:08:23 +02:00
Daniel Gultsch d5ae2f4b41
look at roomconfig_changesubject and roominfo_changesubject
fixes #90
2023-09-06 13:47:35 +02:00
kosyak c62cc344b5 tags for muc 2023-09-06 02:49:41 +02:00
kosyak 9aac6d99e7 fix crash 2023-09-06 02:49:04 +02:00
Daniel Gultsch 1b05cbd665
use opus for voice messages on Android 10
recipients need at least Android 5 to play the message; however
Conversations has been Android 5+ for a while now
2023-08-20 07:59:45 +02:00
Daniel Gultsch 09f6343ced
Security: Introduce backup file format v2
This switches the SQL based backup format to something JSON based.

The SQL based format has always been prone to SQL injections that, for example, could delete other messages or preexisting accounts in the app. This hasn’t been a concern this far because why would anyone purposely try to restore a faulty backup? However the argument has been made that a user can be socially engineered to restore an exploited backup file.
Before version 2.12.8 a third party app could even trigger the restore process, leaving the backup password entry dialog the only hurdle.
On top of that it has been demonstrated that a backup file can be crafted in a way that puts preexisting credentials into a 'pending' message to an attacker ultimately leading to that information being leaked.

While destorying information has always been deemed an acceptable risk, leaking information is one step too far.

Starting with Conversations 2.12.9 Conversations will no longer be able to read v1 backup files. This means if you are restoring on a new device and you have a v1 backup file you must first install Conversations <= 2.12.8, restore the backup, and then upgrade to Conversations >= 2.12.9.

ceb2txt¹ has support for v2 backup files. Conceivably ceb2txt could be extended to convert between v1 and v2 file formats. (ceb2txt already recreates the database from v1 files; It is relatively straight forward to create v2 files from that database. Pull requests welcome.)

¹: https://github.com/iNPUTmice/ceb2txt/
2023-08-17 12:07:51 +02:00
kosyak bd6b316ab6 long tap on conversation 2023-08-15 01:30:56 +02:00
kosyak 8ea335501b logs sender 2023-08-15 01:23:31 +02:00
kosyak 5ce1e80e73 fix service discovery has identity 2023-08-15 01:23:18 +02:00
kosyak fee1a67332 tags editor 2023-08-15 01:22:56 +02:00
kosyak dca3e80bad modify entities for proper tags navigation 2023-08-15 01:22:40 +02:00
kosyak b26adc84b0 don't hide indicator on merged messages 2023-08-15 01:22:10 +02:00
kosyak a2a943c36a tags navigation and self contact 2023-08-15 01:21:39 +02:00
kosyak 18c41eb05e dialpad and gateway interaction 2023-08-15 01:21:20 +02:00
kosyak a1e354fa72 fix reply id 2023-08-15 01:20:05 +02:00
Daniel Gultsch b4a07d0093
remove channel discovery from Google Play build flavor 2023-08-08 10:39:36 +02:00
Daniel Gultsch 7a9f18f223
play tones as music when silent only on android 12+ 2023-08-08 09:04:26 +02:00
kosyak 847ef66216 fix saving path 2023-06-29 11:11:54 +03:00
Daniel Gultsch 12b34426fc
add ј to list 2023-06-29 09:56:49 +02:00
Daniel Gultsch d588e942e6
q is not cyrillic but ԛ and х are 2023-06-29 09:45:50 +02:00
kosyak 983ef0d369 fix messages table creation 2023-06-29 00:23:53 +03:00
Stephen Paul Weber 4c38c480fa
Use libidn for stringprep
Which actually validates according to spec instead of just being lazy.
2023-06-27 16:31:01 +02:00
Daniel Gultsch e3a121121b
UP: add custom extensions for app<->distributor interaction
On registration the app can pass in a 'Messenger' to get a direct response
instead of having to somehow wait for the broadcast receiver to fire.

The app name can be passed as a pending intent which allows the distributor
to validate the sender.
2023-06-26 16:09:01 +02:00
Daniel Gultsch ca1ee4a565
process stream features after success when we inlined bind but not sm 2023-06-25 22:15:49 +02:00
Daniel Gultsch 3b26948a9d
replace libraries hosted on jcenter 2023-06-23 18:00:58 +02:00
kosyak 8f0fb0f2a3 prevent vertical scrolling during swipe 2023-06-22 11:14:56 +03:00
kosyak 5bb72ec049 improve replies 2023-06-22 03:38:26 +03:00
kosyak b1c3001a97 update corners and stack bubbles from last message 2023-06-11 22:50:59 +03:00
Daniel Gultsch 6289e048b3
catch runtime exception when trying to stop tone manager 2023-06-05 10:05:59 +02:00
kosyak 7c5826c945 embedded photo editor 2023-05-29 00:29:55 +03:00
kosyak e1161bcb22 implement multi selection for messages 2023-05-29 00:29:02 +03:00
Daniel Gultsch 1188a89f2a
sanity check push server url 2023-05-07 14:43:13 +02:00
Daniel Gultsch f7f34c6bdd
fix regressions after target sdk 33 update 2023-05-07 10:13:14 +02:00
Daniel Gultsch cc16811444
rename bookmarks tab to 'group chats'
fixes #38

exposing bookmarks like this was a mistake that Conversations 3 will not repeat

in the meantime we rename this to group chats which might be more broadly understood
2023-05-03 08:00:40 +02:00
Daniel Gultsch aa8e0b3c4d
remember bound stream features. fixes #45 2023-05-02 15:35:27 +02:00
Daniel Gultsch bc00f6f629
bump target sdk to 33 2023-04-12 13:28:16 +02:00
Daniel Gultsch 1fff1a0649
add ability to remove account from server 2023-04-08 09:31:17 +02:00
Daniel Gultsch 9187739450
play dial tones on STREAM_MUSIC when phone is silent
when the phone is silent only the first ~three tones are played when
attempting to play out the tone over STREAM_VOICE_CALL

it’s unclear exactly why this is the case (in the past we went back and forth
between STREAM_VOICE_CALL and STREAM_MUSIC) exactly to fix issues around silent
mode.
Apparently we failed to test this past three sounds.

This commit changes the stream back to music - but not generally as this was in
the past - but only for when the phone is on silent
2023-04-03 16:00:06 +02:00
Daniel Gultsch d38c264e7d
lock call activity in portrait mode during audio call 2023-04-03 13:38:22 +02:00
Daniel Gultsch 9456ba6f56
put timestamp in all call logs 2023-04-03 13:15:57 +02:00
Daniel Gultsch 2cb21bcb87
use static (not translated) text for Privacy policy and TOS
For a long time Quicksy had a privacy policy written by myself that explains
in plain English what data we store and how we use it.
https://quicksy.im/#privacy

Google doesn’t like that and prefers that we use some bullshit template that
is extremely vague, doesn’t explain anything and gives us permission to do
basically everything. (At least I think so. I don’t understand the text I
copy pasted)

Apparantly the text in the app is important as well (BARD didn’t explain
that very well when it reviewed our app) therfor we need a static text (not
allow translations)

Furthermore the data safety section on Google Play now claims we store the
users address book even though we don’t actually. But who cares; nobody reads
this and we just do this to make the machine happy. Cool!
2023-04-03 10:29:55 +02:00
Daniel Gultsch fbf8b09fe6
point to a privacy policy that doesn’t use anchors 2023-03-06 08:06:46 +01:00
Daniel Gultsch 9715271e92
expand emoji range to cover e14 2023-03-05 20:50:06 +01:00
Daniel Gultsch 84fa529256
use setText instead of append() 2023-02-05 09:34:29 +01:00
Daniel Gultsch 41cd96e37b
UP: null check transport verification 2023-01-10 17:22:48 +01:00
Daniel Gultsch b7c7c40b94
send directed presence to transport if endpoints are configured 2023-01-06 17:04:15 +01:00
Daniel Gultsch 0e10ae387a
periodically renew endpoints 2023-01-06 15:44:39 +01:00
Daniel Gultsch 1e0904a48d
use less entropy in SASL2 device id 2023-01-06 12:41:26 +01:00
Daniel Gultsch 4ee5c167be
do not attempt endpoint renewal when account is disabled. renew on bind 2023-01-04 20:59:08 +01:00
Daniel Gultsch b1f95d2e39
integrate UnifiedPush distributor 2023-01-04 10:23:20 +01:00
Daniel Gultsch 1000d927a7
remove work arounds for nimbuzz.com 2023-01-01 12:20:10 +01:00
Daniel Gultsch 97d9cb7dd5
remove work arounds for slack 2023-01-01 12:05:49 +01:00
Daniel Gultsch 41da2a5957
fix client crashing on empty passwords (regression) 2022-12-30 17:14:18 +01:00
Daniel Gultsch 0cec499565
make sure we don’t dispose video source twice 2022-12-30 12:16:19 +01:00
Daniel Gultsch a7fe3e8372
reset stanza count when enabling SM via SASL inline 2022-12-30 12:09:16 +01:00
Daniel Gultsch 01fba162f0
code clean up. use Optional to parse SM’s h attribute 2022-12-30 10:53:49 +01:00
Daniel Gultsch f5b7fbc441
add log when we requested token but didn’t get one 2022-12-30 09:00:42 +01:00
Daniel Gultsch 13606aae60
add todo item in turn server code 2022-12-29 14:53:05 +01:00
Daniel Gultsch ce0992036a
disable proximity sensor after switching from audio to video 2022-12-29 12:53:59 +01:00
Daniel Gultsch 909aa72b25 catch exception in getSignalingState() 2022-12-24 10:55:16 +01:00
Daniel Gultsch 36efd51a7f fix transports/descriptions not upgraded to jingle ft
fixes #4429
2022-12-20 19:28:47 +01:00
Daniel Gultsch 499c4ddd0a do not detect sm:2 as sm available
the 2.11.0 release removed support for enabling sm:2
unfortunatly sm:2 was still detected as "server supports stream managment"
down the line leading to resend loops.

fixes #4426
2022-12-16 08:07:46 +01:00
Daniel Gultsch 4ef4207593 show switch to video only if other party has caps
fixes #4421
2022-12-12 10:15:13 +01:00
Daniel Gultsch 2093aa76ad code clean up in ContactChooserTargetService 2022-12-11 20:13:09 +01:00
Daniel Gultsch bb52962f0d delay candidates until after session-init/accept 2022-12-05 15:40:07 +01:00
Daniel Gultsch 2c7c44e957 null PeerConnection reference before disposing; otherwise getState() might be issued against disposed object 2022-12-01 20:46:18 +01:00
Daniel Gultsch 80d195d35e avoid race condition when restarting ICE 2022-11-30 17:32:46 +01:00
Daniel Gultsch c178e9ad33 add switch to video menu item to call 2022-11-28 11:39:26 +01:00
Daniel Gultsch 4e8ceadfbf prepare JingleRtpConnection for content-adds 2022-11-28 08:59:23 +01:00
Daniel Gultsch 63501adc45 trim xmpp address after user input 2022-11-25 08:50:58 +01:00
Daniel Gultsch f4be142e4d add helper methods for content modification to RtpContentMap 2022-11-22 10:13:48 +01:00
Daniel Gultsch e2f98f6bbc ensure cc-ed proceed is equivalent to accept 2022-11-22 10:13:07 +01:00
Daniel Gultsch 9897fa3a45 rename initiateIceRestart to renegotiate to handle content adds 2022-11-21 09:10:01 +01:00
Daniel Gultsch 304205b2e3 take senders attr into account when converting to and from sdp 2022-11-20 17:00:40 +01:00
Daniel Gultsch 59ea66ca78 make sure VideoSourceWrapper is stored in property 2022-11-19 14:19:07 +01:00
Daniel Gultsch 27d8da2ab4 refactor WebRTCWrapper to allow for track adds 2022-11-19 13:03:34 +01:00
Daniel Gultsch 8fb2c11771 use plurals for missed call strings 2022-11-19 08:14:50 +01:00
Daniel Gultsch 6b9ebb3abf remove TODO 2022-11-18 10:40:16 +01:00
Daniel Gultsch 109a20ca40 do not expect stream features after inline resume 2022-11-17 10:52:30 +01:00
Daniel Gultsch 29461edf40 process challenge only on secure connection 2022-11-17 07:48:09 +01:00
Daniel Gultsch 44bfff7e49 fall back to regular authentication if fast fails 2022-11-16 11:00:43 +01:00
Daniel Gultsch 6ececb4d2b refactor webrtc video source + capture code 2022-11-12 13:37:56 +01:00
Daniel Gultsch 5dbd86155f show help button only if Config.HELP is set 2022-11-10 07:55:05 +01:00
Daniel Gultsch dac2e17133 disable quick start if fast is available but we didn’t use fast 2022-11-01 18:06:32 +01:00
Daniel Gultsch 35ee01cb28 reset fast token on login failure 2022-11-01 16:44:36 +01:00
Daniel Gultsch a29c7c725e modify scram mechanisms to use guava hashing 2022-10-24 13:11:30 +02:00
Daniel Gultsch e2b9f0e77a add support for HashedToken channel binding 2022-10-15 20:53:59 +02:00
Daniel Gultsch 24badda4c9 do quick start with HT-SHA-256-NONE 2022-10-15 18:56:31 +02:00
Daniel Gultsch c13787873c request fast token 2022-10-15 12:27:38 +02:00
Daniel Gultsch 3378447f60 parse hash token names 2022-10-15 00:09:29 +02:00
Daniel Gultsch 0cd416298d ensure we only select channel binding methods available for tls version 2022-10-14 20:00:36 +02:00
Daniel Gultsch 7eb160386d enable SM if it wasn’t enabled in bind 2 2022-10-14 13:29:59 +02:00
Daniel Gultsch 9a0c90f066 read new stream features directly after success 2022-10-14 13:13:21 +02:00
Daniel Gultsch 3d6c7bbf1c fix display glitch in username mode 2022-10-13 09:51:56 +02:00
Daniel Gultsch 90048e92bb use url span method to show context menu. fixes #4393 2022-10-12 18:43:05 +02:00
Daniel Gultsch ab0ea7096e make it easier to disable muclumbus in Config 2022-10-12 14:47:02 +02:00
Daniel Gultsch 716c804353 only run account options through int conversion. fixes #4390 2022-10-12 11:53:57 +02:00
Daniel Gultsch d435c1f2ae let omemoOnly config overwrite OmemoSetting 2022-10-01 11:26:52 +02:00
Daniel Gultsch 5735bca517 minor code clean up 2022-10-01 09:26:07 +02:00
Daniel Gultsch cb775ece99 wait for DB restore before bind 2022-09-26 09:47:53 +02:00
Daniel Gultsch 3d56d01826 handle case when server loses support for quick start 2022-09-26 07:53:48 +02:00
Daniel Gultsch 717aeddb82 fix last commit. bring back option required by quicksy 2022-09-25 15:18:45 +02:00
Daniel Gultsch 32f9a58d9a pipeline sasl2 directly after stream start 2022-09-25 14:13:04 +02:00
Daniel Gultsch 126e8ef08c refactor sasl 2 authentication code 2022-09-24 14:58:49 +02:00
Daniel Gultsch 9f5da67539 use bind:0 namespace 2022-09-24 11:59:53 +02:00
Daniel Gultsch 5a3cca9554 use bind 2 tag and sasl 2 user-agent 2022-09-15 14:28:51 +02:00
Daniel Gultsch bf15070fef bump sasl2 namespace 2022-09-15 13:10:15 +02:00
Daniel Gultsch 495f79921d store full sasl mechanism (not just priority) 2022-09-15 12:22:05 +02:00
Daniel Gultsch 82efb6f1db code clean up 2022-09-14 17:51:22 +02:00
Stephen Paul Weber 9ae0475413
Show the name of the sender in search results (#4379)
Just like a MUC, search results lack the context to be sure who sent a message,
so show the name in the result item.
2022-09-14 17:13:17 +02:00
Daniel Gultsch c1abca35da copy bookmarks before passing them to other parts of the app for read
closes #4381
2022-09-14 12:49:18 +02:00
Daniel Gultsch d0efe6eae2 bump recording wait for write to 8s 2022-09-14 12:27:02 +02:00
Daniel Gultsch 6e53ab3694 allow invite only when muc is online. fixes #4218 2022-09-10 12:36:35 +02:00
Daniel Gultsch 82316d13b0 use weak reference to activity when using threads
fixes #4366
2022-09-09 19:06:45 +02:00
Daniel Gultsch a95d0fa8d3 use resolveActivityInfo to display nagivate to button
resolveActivity on the other hand only finds apps that are category_default

fixes #4375
2022-09-09 16:55:50 +02:00
Daniel Gultsch f7996a6c3c catch illegal state exception when copying file 2022-09-07 16:29:51 +02:00
Daniel Gultsch ecbfe33e8d support end-point channel binding as last choice option 2022-09-07 12:08:50 +02:00
Daniel Gultsch 018e0d9edf add (inactive) channel binding end-point code 2022-09-07 11:08:54 +02:00
Daniel Gultsch d4ec1eaf38 refactor processFailure and processChallange into methods 2022-09-07 10:31:11 +02:00
Daniel Gultsch e8bce17940 add scram-sha256 and 512 in their plus variants 2022-09-06 17:39:58 +02:00
Daniel Gultsch 789d1dc225 support tls-unique for TLSv1.2 2022-09-06 17:01:57 +02:00
Daniel Gultsch 6d3d9dfe26 support channel binding with tls-exporter 2022-09-06 16:43:51 +02:00
Daniel Gultsch 5da9f5b3a3 refactor ScramMechanism to support PLUS 2022-09-06 16:28:28 +02:00
Daniel Gultsch b78acb6fca extract channel binding types via XEP-0440 2022-09-06 14:53:12 +02:00
Daniel Gultsch a210568a9c refactor SASL choice into factory; remove unused TagWriter 2022-09-06 09:25:23 +02:00
Millesimus 562ffd2003 preserve new lines when quoting. fixes #3876 2022-09-05 12:19:17 +02:00
Daniel Gultsch 22f4129262 increase quoting depth to 2 2022-09-05 12:17:13 +02:00
Daniel Gultsch eee14a822a add todos 2022-09-05 11:07:25 +02:00
Daniel Gultsch e0bd1d168c do not attempt resume when already in smacks session 2022-09-04 09:28:00 +02:00
Daniel Gultsch 052c58f377 rudimentary bind 2 implementation 2022-09-03 20:17:29 +02:00
Daniel Gultsch e204457c31 show toast warning about unavailable calls when using tor
closes #4103
2022-09-03 15:51:15 +02:00
Daniel Gultsch eb49a7f5e5 fix crash in buggy connection manager. fixes #4368 2022-09-03 12:33:27 +02:00
Daniel Gultsch 00dd9a8058 remove support for sm:2 2022-09-03 12:16:06 +02:00
Daniel Gultsch cb1d7c69a1 remove comment 2022-09-03 11:05:27 +02:00
Daniel Gultsch 4f92ba880b process authorization id in case full jid changes 2022-08-30 09:31:06 +02:00
Daniel Gultsch 3fac7d4992 fix very rare NPE (race condition) 2022-08-30 08:21:32 +02:00
Daniel Gultsch 8f76084a43 add sm-failed processing 2022-08-29 19:44:39 +02:00
Daniel Gultsch 7ea4f64ce4 code clean up for resumed processing 2022-08-29 19:30:03 +02:00
Daniel Gultsch f6ab3dd068 support resume via sasl 2.0 2022-08-29 19:22:25 +02:00
Daniel Gultsch 928a16d31d abort on 'continue' - no client support 2022-08-29 18:53:34 +02:00
Daniel Gultsch 6202cbe26b minor code clean up for tag and element 2022-08-29 18:40:49 +02:00
Daniel Gultsch 5fc8ff899a support logging in via SASL 2 2022-08-29 17:09:52 +02:00
Daniel Gultsch a717917b3d explicitly search for namespaces when processing stream features 2022-08-29 15:09:53 +02:00
Daniel Gultsch b792563fad use non-custom missed called 2022-08-29 14:04:33 +02:00
Daniel Gultsch f8b9e15634 fixups for missed call notifications 2022-08-29 13:01:20 +02:00
Dmitry Markin a6b88ba9e9
Add missed call notifications
Co-authored-by: Daniel Gultsch <daniel@gultsch.de>
2022-08-29 12:41:35 +02:00
Daniel Gultsch e439c223ee add overflow menu action to delete own avatar 2022-08-25 19:22:40 +02:00
Daniel Gultsch ddd08bfe5f issue self ping + rejoin on muc status code 333 2022-08-25 17:12:39 +02:00
Daniel Gultsch e8736d5f1b bump guava library 2022-08-22 11:29:04 +02:00
Daniel Gultsch 8111460913 minor code clean up 2022-08-22 10:01:15 +02:00
Stephen Paul Weber 56a6b17e7e
Use the same mechanism for link copying and linkification (#4357)
Prevents copying something different from what was linked, such as in the
message "fine.gif https://example.com"
2022-08-22 09:50:26 +02:00
Daniel Gultsch 41d98da17d set immutable flags for backup notifications 2022-08-12 11:02:22 +02:00
Daniel Gultsch 4fbe2deffc skip empty uris on attach 2022-08-12 10:22:45 +02:00
Daniel Gultsch 7cc96e704e do not retrieve media attributes from encrypted files
fixes #4353
2022-08-12 09:58:35 +02:00
Daniel Gultsch 150f8313a0 make launch conversation and launch tor pending intents immutable 2022-08-11 14:31:27 +02:00
Daniel Gultsch fe3433e427 do not accept empty credentials as ice-restart 2022-08-10 09:11:09 +02:00
Daniel Gultsch 508e1ac1bd add immutable flag to pending alarm intents 2022-08-09 19:43:10 +02:00
Licaon_Kter cc80a2a758 Fix typo 2022-08-09 17:27:50 +02:00
Daniel Gultsch b3a3f2b930 try to detect if a container contains video or audio
fixes #4321
2022-08-09 09:40:04 +02:00
Daniel Gultsch 5aeed63844 request bluetooth connect permission
fixes #4338
2022-08-08 21:08:32 +02:00
Daniel Gultsch 52ff6f446c add permission checks to appRTCBluetoothManager 2022-08-05 10:56:19 +02:00
Daniel Gultsch 50ba165746 bump targetSdk to 32 2022-08-05 10:52:00 +02:00
Daniel Gultsch d41020ccf3 ignore race condition after reject from notification
fixes #4351
fixes #4261
2022-08-05 10:46:15 +02:00
Daniel Gultsch 67f021426b remove null bytes from strings before creating sql statements in backup 2022-08-04 11:31:58 +02:00
Daniel Gultsch 62a379862e jingle rtp: improve logging and error reporting 2022-08-01 10:14:49 +02:00
Daniel Gultsch 8027b3be24 parse pep events only from bare jid 2022-07-22 10:39:18 +02:00
Daniel Gultsch dd30951dfb every device is 21+ now 2022-07-22 10:14:01 +02:00
Daniel Gultsch abfe1f1dbd do not show toast when activity is gone. fixes #4335 2022-07-09 14:46:51 +02:00
Daniel Gultsch e455ed4f1a fix orbot detection 2022-07-09 14:46:51 +02:00
Licaon_Kter 4985105711 Here too
...but why was that function created elsewhere if here you just compare this?
2022-07-09 09:21:46 +02:00
Licaon_Kter b97e2deaa2 Show battery dialogue always 2022-07-09 09:21:46 +02:00
Daniel Gultsch d8fd59394c fix array out of bounds. fixes #4334 2022-07-01 15:54:56 +02:00
Daniel Gultsch 73c7d76bd6 add local only flag to foreground service 2022-07-01 15:54:55 +02:00
Stephen Paul Weber 84e08933f9 A Quicky user can be a stranger
At some point a refactor changed this check from checking that the quicksy
domain itself is talking to you, to checking that anyone using quicksy is
talking to you, which breaks the notifications from strangers setting for
quicksy users.
2022-06-30 09:30:55 +02:00
Daniel Gultsch 42bd8e6d61 minor code clean up 2022-06-22 07:56:44 +02:00
Daniel Gultsch 17b9ca9dec use item id 'current' for nick as fallback as per XEP-0060 §12.20 2022-06-22 07:18:07 +02:00
Daniel Gultsch a9dd5a3c76 support sasl/temporary-auth-failure
if the server is unable to query the database throwing a temporary-auth-failure
might be more appropriate
2022-06-14 08:39:58 +02:00
Daniel Gultsch 85f06f1cd6 do not merge failed decryptions
fixes #4314
2022-05-02 08:29:54 +02:00
Daniel Gultsch 544b46ffe1 Revert "flush stanzas in batches"
This reverts commit 6bd552f6a3.

fixes #4313

This turned out to be a rather unnecessary optimization that might cause
problems with wake locks (the app is no longer awake after the 400ms timeout)
2022-04-21 17:05:25 +02:00
Daniel Gultsch d7637192e2 fix NPE during bookmark creation
closes #4312

fixes #4211

thank you @singpolyma
2022-04-21 17:03:26 +02:00
Daniel Gultsch eb9f6653ad null check axolotl service when getting trust 2022-04-08 15:55:16 +02:00
Daniel Gultsch bf8afe0396 check domain name against DNSName to avoid rare crashes 2022-04-08 15:54:53 +02:00
Daniel Gultsch ec02e8a198 work around platform bug when getting restrict background
fixes #4305
2022-04-07 10:47:25 +02:00
Daniel Gultsch 95e3a6769d retrieve uncompressed file size in HEAD request 2022-03-30 18:45:18 +02:00
Daniel Gultsch eadb1e127b disable knownFileSize on re-download for pgp encrypted files 2022-03-30 09:59:42 +02:00
Daniel Gultsch 09cf5feefa limit posh files to 10k 2022-03-30 09:25:05 +02:00
Daniel Gultsch 7e762eb799 ensure downloaded file does not exceed Content-Length reported by HEAD 2022-03-30 09:03:19 +02:00
Daniel Gultsch 36756fbd41 catch two rare exceptions to fix crash 2022-03-26 08:25:45 +01:00
Daniel Gultsch 3c1550b208 show jid only for incoming calls during ringing 2022-03-10 18:40:30 +01:00
Stephen Paul Weber 78048bbd3d Enable WebRTC-BindUsingInterfaceName/Enabled/
This makes 464XLAT networks (such as T-Mobile LTE) work.

https://bugs.chromium.org/p/webrtc/issues/detail?id=10707
2022-03-10 16:29:00 +01:00
Daniel Gultsch 5c4eccec13 be smarter about what files can be deleted 2022-03-10 15:54:23 +01:00
Daniel Gultsch 56f01c29b9 allow deletion of all files 2022-03-10 12:39:43 +01:00
Daniel Gultsch ceceead505 show 'using account …' in incoming call screen 2022-03-07 13:10:57 +01:00
Daniel Gultsch 2f07fccfce show contact jid in call screen
closes #4071
2022-03-07 12:44:33 +01:00
Kim Alvefur aef5292567 Add handling of status code 333
This is used when something goes wrong with a MUC, e.g. a connection
error made the MUC kick you out. In this case you generally want to try
to rejoin.
2022-03-07 09:39:45 +01:00
Daniel Gultsch eb6ae5b03c increase default pw length 2022-03-07 09:18:35 +01:00
Daniel Gultsch 372078629b fix ice candidate sending when different credentials are used 2022-02-25 17:26:36 +01:00
Daniel Gultsch 1f772df74f remove security check that ensures rtp connection was properly finished
this only causes race conditions
2022-02-25 16:24:16 +01:00
Daniel Gultsch d311e39569 code clean up 2022-02-25 14:44:46 +01:00
Daniel Gultsch 9b6a570939 bump agp 2022-02-24 12:41:32 +01:00
Daniel Gultsch be1fcfe4f9 store encrypted pgp files in private cache dir 2022-02-23 16:59:40 +01:00
Daniel Gultsch a3085fbf1f do not restart wakelock if activity is finishing 2022-02-23 15:57:29 +01:00
Daniel Gultsch 35c54f0ae9 delete pre lolipop weOwnFile() 2022-02-23 12:16:49 +01:00
Daniel Gultsch 48f8c1a6a0 use try with resources. remove unused methods 2022-02-23 11:37:48 +01:00
Daniel Gultsch ad493938a0 bump appcompat, migrate to emoji2 and get rid of emoji flavor 2022-02-23 10:37:03 +01:00
Daniel Gultsch 4129ca6af8 fix rare npe 2022-02-23 09:40:47 +01:00
Daniel Gultsch 0b470534f1 store recordings and documents in their respective folders 2022-02-23 09:40:38 +01:00
Daniel Gultsch c03a8b784f write photos to DCIM/Camera 2022-02-22 17:25:48 +01:00
Daniel Gultsch 6fb465f91a don’t query packages before attaching something 2022-02-22 16:23:51 +01:00
Daniel Gultsch d6be6ddd18 use full file name for all new files 2022-02-22 16:05:02 +01:00
Daniel Gultsch 8abacd23e8 use new storage location for backup and recordings 2022-02-22 15:14:00 +01:00
Daniel Gultsch 60617618b8 rename method that expand filename 2022-02-22 12:29:40 +01:00
Daniel Gultsch 6bd552f6a3 flush stanzas in batches 2022-02-14 11:46:57 +01:00
Daniel Gultsch cdc239b040 code clean up in TagWriter 2022-02-14 10:27:12 +01:00
Millesimus 2553895300 Fix #4249. 2022-02-13 10:24:01 +01:00
Daniel Gultsch 12463911f1 allow verification of own omemo keys via uri 2022-02-13 10:22:31 +01:00
Daniel Gultsch d7f38a3e5a fix precondition for timeout handling 2022-02-12 10:19:54 +01:00
Daniel Gultsch b6442c0bd4 add Samsung S4 to hardware aec blacklist
fixes #4267
2022-01-18 11:30:23 +01:00
Daniel Gultsch eed5c5e743 add additional logging to image compression 2022-01-18 09:49:10 +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
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 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 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 2ca00265db bump speed dial version to something that uses AndroidX 2021-10-20 09:52:10 +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
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 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 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 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 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 e791e19265 ignore non letters when parsing action from xmpp uri 2021-09-27 11:15:56 +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 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 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
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 2957bccb33 Revert "Fixing trailing characters treated as part of URI error (#3938)."
This reverts commit 8d45cc5827.
2021-09-08 21:30:21 +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 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 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 2819545a43 click on action bar title should open chat details screen 2021-08-25 20:04:47 +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 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
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