mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Move support for MSC3026 behind an experimental flag
This commit is contained in:
parent
405aeb0b2c
commit
066c703729
@ -302,6 +302,8 @@ class GenericWorkerPresence(BasePresenceHandler):
|
|||||||
self.send_stop_syncing, UPDATE_SYNCING_USERS_MS
|
self.send_stop_syncing, UPDATE_SYNCING_USERS_MS
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self._busy_presence_enabled = hs.config.experimental.msc3026_enabled
|
||||||
|
|
||||||
hs.get_reactor().addSystemEventTrigger(
|
hs.get_reactor().addSystemEventTrigger(
|
||||||
"before",
|
"before",
|
||||||
"shutdown",
|
"shutdown",
|
||||||
@ -439,8 +441,11 @@ class GenericWorkerPresence(BasePresenceHandler):
|
|||||||
PresenceState.ONLINE,
|
PresenceState.ONLINE,
|
||||||
PresenceState.UNAVAILABLE,
|
PresenceState.UNAVAILABLE,
|
||||||
PresenceState.OFFLINE,
|
PresenceState.OFFLINE,
|
||||||
PresenceState.BUSY,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if self._busy_presence_enabled:
|
||||||
|
valid_presence += (PresenceState.BUSY,)
|
||||||
|
|
||||||
if presence not in valid_presence:
|
if presence not in valid_presence:
|
||||||
raise SynapseError(400, "Invalid presence state")
|
raise SynapseError(400, "Invalid presence state")
|
||||||
|
|
||||||
|
@ -27,3 +27,5 @@ class ExperimentalConfig(Config):
|
|||||||
|
|
||||||
# MSC2858 (multiple SSO identity providers)
|
# MSC2858 (multiple SSO identity providers)
|
||||||
self.msc2858_enabled = experimental.get("msc2858_enabled", False) # type: bool
|
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.clock = hs.get_clock()
|
||||||
self.store = hs.get_datastore()
|
self.store = hs.get_datastore()
|
||||||
|
|
||||||
|
self._busy_presence_enabled = hs.config.experimental.msc3026_enabled
|
||||||
|
|
||||||
active_presence = self.store.take_presence_startup_info()
|
active_presence = self.store.take_presence_startup_info()
|
||||||
self.user_to_current_state = {state.user_id: state for state in active_presence}
|
self.user_to_current_state = {state.user_id: state for state in active_presence}
|
||||||
|
|
||||||
@ -730,8 +732,11 @@ class PresenceHandler(BasePresenceHandler):
|
|||||||
PresenceState.ONLINE,
|
PresenceState.ONLINE,
|
||||||
PresenceState.UNAVAILABLE,
|
PresenceState.UNAVAILABLE,
|
||||||
PresenceState.OFFLINE,
|
PresenceState.OFFLINE,
|
||||||
PresenceState.BUSY,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if self._busy_presence_enabled:
|
||||||
|
valid_presence += (PresenceState.BUSY,)
|
||||||
|
|
||||||
if presence not in valid_presence:
|
if presence not in valid_presence:
|
||||||
raise SynapseError(400, "Invalid presence state")
|
raise SynapseError(400, "Invalid presence state")
|
||||||
|
|
||||||
@ -745,7 +750,10 @@ class PresenceHandler(BasePresenceHandler):
|
|||||||
msg = status_msg if presence != PresenceState.OFFLINE else None
|
msg = status_msg if presence != PresenceState.OFFLINE else None
|
||||||
new_fields["status_msg"] = msg
|
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()
|
new_fields["last_active_ts"] = self.clock.time_msec()
|
||||||
|
|
||||||
await self._update_states([prev_state.copy_and_replace(**new_fields)])
|
await self._update_states([prev_state.copy_and_replace(**new_fields)])
|
||||||
|
Loading…
Reference in New Issue
Block a user