forked from MirrorHub/synapse
Move support for MSC3026 behind an experimental flag
This commit is contained in:
parent
405aeb0b2c
commit
066c703729
3 changed files with 18 additions and 3 deletions
|
@ -302,6 +302,8 @@ class GenericWorkerPresence(BasePresenceHandler):
|
|||
self.send_stop_syncing, UPDATE_SYNCING_USERS_MS
|
||||
)
|
||||
|
||||
self._busy_presence_enabled = hs.config.experimental.msc3026_enabled
|
||||
|
||||
hs.get_reactor().addSystemEventTrigger(
|
||||
"before",
|
||||
"shutdown",
|
||||
|
@ -439,8 +441,11 @@ class GenericWorkerPresence(BasePresenceHandler):
|
|||
PresenceState.ONLINE,
|
||||
PresenceState.UNAVAILABLE,
|
||||
PresenceState.OFFLINE,
|
||||
PresenceState.BUSY,
|
||||
)
|
||||
|
||||
if self._busy_presence_enabled:
|
||||
valid_presence += (PresenceState.BUSY,)
|
||||
|
||||
if presence not in valid_presence:
|
||||
raise SynapseError(400, "Invalid presence state")
|
||||
|
||||
|
|
|
@ -27,3 +27,5 @@ class ExperimentalConfig(Config):
|
|||
|
||||
# MSC2858 (multiple SSO identity providers)
|
||||
self.msc2858_enabled = experimental.get("msc2858_enabled", False) # type: bool
|
||||
# MSC3026 (busy presence state)
|
||||
self.msc3026_enabled = experimental.get("msc3026_enabled", False) # type: bool
|
||||
|
|
|
@ -104,6 +104,8 @@ class BasePresenceHandler(abc.ABC):
|
|||
self.clock = hs.get_clock()
|
||||
self.store = hs.get_datastore()
|
||||
|
||||
self._busy_presence_enabled = hs.config.experimental.msc3026_enabled
|
||||
|
||||
active_presence = self.store.take_presence_startup_info()
|
||||
self.user_to_current_state = {state.user_id: state for state in active_presence}
|
||||
|
||||
|
@ -730,8 +732,11 @@ class PresenceHandler(BasePresenceHandler):
|
|||
PresenceState.ONLINE,
|
||||
PresenceState.UNAVAILABLE,
|
||||
PresenceState.OFFLINE,
|
||||
PresenceState.BUSY,
|
||||
)
|
||||
|
||||
if self._busy_presence_enabled:
|
||||
valid_presence += (PresenceState.BUSY,)
|
||||
|
||||
if presence not in valid_presence:
|
||||
raise SynapseError(400, "Invalid presence state")
|
||||
|
||||
|
@ -745,7 +750,10 @@ class PresenceHandler(BasePresenceHandler):
|
|||
msg = status_msg if presence != PresenceState.OFFLINE else None
|
||||
new_fields["status_msg"] = msg
|
||||
|
||||
if presence == PresenceState.ONLINE or presence == PresenceState.BUSY:
|
||||
if (
|
||||
presence == PresenceState.ONLINE or
|
||||
(self._busy_presence_enabled and presence == PresenceState.BUSY)
|
||||
):
|
||||
new_fields["last_active_ts"] = self.clock.time_msec()
|
||||
|
||||
await self._update_states([prev_state.copy_and_replace(**new_fields)])
|
||||
|
|
Loading…
Reference in a new issue