Commit graph

110 commits

Author SHA1 Message Date
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
Daniel Gultsch ad64058d25 hide lock icon in channels; modify muc user context 2019-02-07 13:18:42 +01:00
Daniel Gultsch 32ef3755e2 show different room settings for channels and groups 2019-02-06 18:29:07 +01:00
Daniel Gultsch b9c4309a28 refactored group chat members into seperate screen 2019-01-25 17:58:23 +01:00
Daniel Gultsch dcdf340a41 normalize nicks before getting them from bookmarks or pep 2019-01-19 11:42:57 +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 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 09f9baeeef do not add self as crytpo target in MUC 2018-11-12 20:14:06 +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 5012ff3545 added interface to edit nick 2018-11-09 17:47:36 +01:00
Daniel Gultsch f0d5dc583d use inContactList() instead inRoster() in the proper places 2018-11-03 16:32:08 +01:00
Daniel Gultsch bdb8d98eb1 show snackbar for remote server timeout in mucs 2018-10-08 10:31:11 +02:00
Daniel Gultsch 1985f6bdec store avatars received over muc presence in contact 2018-09-21 12:27:58 +02:00
Daniel Gultsch 516b6dcc1f code cleanup for group chat user context menu 2018-09-02 20:54:50 +02:00
Christoph Scholz 3ecb7136c1 start new conversations by long press on avatar 2018-09-01 21:05:31 +02:00
Daniel Gultsch 4871263d9c display propper toast after room has been destroyed 2018-07-11 21:33:27 +02:00
Daniel Gultsch 7b64a031cd store own affiliation and role to disk 2018-07-08 20:52:55 +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 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 e6532e739a do not include white listed domains in room list. fixes #3082 2018-06-22 20:25:50 +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 d7ebd7d453 WIP: set room avatar and slight redesign of group details 2018-06-18 14:15:19 +02:00
Daniel Gultsch afb7c0592b display avatar in groups 2018-04-14 17:54:04 +02:00
Daniel Gultsch d5c4a987a1 persist some muc configurations 2018-03-30 08:47:37 +02:00
Daniel Gultsch 1accf9d961 migrate to xmpp-addr 2018-03-07 22:30:36 +01:00
Daniel Gultsch e2ac1db225 do not cross reference bookmarks and conversations 2018-02-10 19:06:31 +01:00
Daniel Gultsch eee5d885ba make chat markers opportunistic in private mucs 2018-01-22 23:21:24 +01:00
Daniel Gultsch 6663eb0a12 show warning toast if PM is disabled in MUC 2018-01-18 17:35:42 +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 c5ee541906 clear muc avatar after going online 2017-12-18 13:19:11 +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 946d97074f try to detect invalid nick (w/ emoji) in MUCs 2017-12-11 15:55:10 +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 08aad7d0aa black list certain local parts and show domain instead 2017-10-27 15:46:12 +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 dd5e321247 fixed conference naming for joined people not in your contact list 2017-08-15 12:56:32 +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 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 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 9ba5335ae7 cleaned code of muc name generator 2017-03-06 19:06:16 +01:00
Daniel Gultsch 6088913fb6 fixed multi-session-nick renaming behaviour 2017-03-05 17:42:17 +01:00
Daniel Gultsch c740386297 rename the Xmlns class to Namespace 2017-03-01 13:01:46 +01:00
licaon-kter d3dd80eec9 Fix a typo in legacy 2017-02-19 15:47:57 +02:00
Daniel Gultsch caa16a8517 experimental mam legacy compat layer 2017-02-15 16:42:35 +01:00
Daniel Gultsch b90a1fe1db bump mam namespace 2017-02-14 17:19:45 +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