Improved wording of documentation and config option naming

This commit is contained in:
Michael Hollister 2024-05-30 22:45:38 -05:00
parent 89d8b32af7
commit 6b12d3ec6c
4 changed files with 33 additions and 18 deletions

View file

@ -246,8 +246,8 @@ Example configuration:
```yaml ```yaml
presence: presence:
enabled: false enabled: false
sync_presence_tracking: true local_activity_tracking: true
federation_presence_tracking: true remote_activity_tracking: true
``` ```
`enabled` can also be set to a special value of "untracked" which ignores updates `enabled` can also be set to a special value of "untracked" which ignores updates
@ -259,14 +259,17 @@ received via clients and federation, while still accepting updates from the
Enabling presence tracking can be resource intensive for the presence handler when server-side Enabling presence tracking can be resource intensive for the presence handler when server-side
tracking of user activity is enabled. Below are some additional configuration options which may tracking of user activity is enabled. Below are some additional configuration options which may
help improve the performance of the presence feature without outright disabling it: help improve the performance of the presence feature without outright disabling it:
* `sync_presence_tracking` (Default enabled): Determines if the server tracks a user's presence * `local_activity_tracking` (Default enabled): Determines if the server tracks a user's activity
activity when syncing. If disabled, the server will not automatically update the user's presence when syncing or fetching events. If disabled, the server will not automatically update the
activity when the sync endpoint is called. Note that client applications can still update their user's presence activity when the /sync or /events endpoints are called. Note that client
presence by calling the respective presence endpoints. applications can still update their presence by calling the presence /status endpoint.
* `federation_presence_tracking` (Default enabled): Determines if the server will accept * `remote_activity_tracking` (Default enabled): Determines if the server will accept presence
presence EDUs that only contain presence activity updates. If disabled, the server will drop EDUs from remote servers that are exclusively user activity updates. If disabled, the server
processing EDUs that do not contain updates to the `status_msg`, `displayname`, or will reject processing these EDUs. However if a presence EDU contains profile updates to any of
`avatar_url` fields. the `status_msg`, `displayname`, or `avatar_url` fields, then the server will accept the EDU.
If the presence `enabled` field is set "untracked", then these options will both act as if set
to false.
--- ---
### `require_auth_for_profile_requests` ### `require_auth_for_profile_requests`

View file

@ -385,13 +385,13 @@ class ServerConfig(Config):
self.track_presence = self.presence_enabled and presence_enabled != "untracked" self.track_presence = self.presence_enabled and presence_enabled != "untracked"
# Disabling server-side presence tracking # Disabling server-side presence tracking
self.sync_presence_tracking = presence_config.get( self.presence_local_activity_tracking = presence_config.get(
"sync_presence_tracking", True "local_activity_tracking", True
) )
# Disabling federation presence tracking # Disabling federation presence tracking
self.federation_presence_tracking = presence_config.get( self.presence_remote_activity_tracking = presence_config.get(
"federation_presence_tracking", True "remote_activity_tracking", True
) )
# Custom presence router module # Custom presence router module

View file

@ -1425,11 +1425,21 @@ class FederationHandlerRegistry:
self._edu_type_to_instance[edu_type] = instance_names self._edu_type_to_instance[edu_type] = instance_names
async def on_edu(self, edu_type: str, origin: str, content: dict) -> None: async def on_edu(self, edu_type: str, origin: str, content: dict) -> None:
"""Passes an EDU to a registered handler if one exists
This potentially modifies the `content` dict for `m.presence` EDUs when
presence `remote_activity_tracking` is disabled.
Args:
edu_type: The type of the incoming EDU to process
origin: The server we received the event from
content: The content of the EDU
"""
if not self.config.server.track_presence and edu_type == EduTypes.PRESENCE: if not self.config.server.track_presence and edu_type == EduTypes.PRESENCE:
return return
if ( if (
not self.config.server.federation_presence_tracking not self.config.server.presence_remote_activity_tracking
and edu_type == EduTypes.PRESENCE and edu_type == EduTypes.PRESENCE
): ):
filtered_edus = [] filtered_edus = []

View file

@ -201,7 +201,9 @@ class BasePresenceHandler(abc.ABC):
self._presence_enabled = hs.config.server.presence_enabled self._presence_enabled = hs.config.server.presence_enabled
self._track_presence = hs.config.server.track_presence self._track_presence = hs.config.server.track_presence
self._sync_presence_tracking = hs.config.server.sync_presence_tracking self._presence_local_activity_tracking = (
hs.config.server.presence_local_activity_tracking
)
self._federation = None self._federation = None
if hs.should_send_federation(): if hs.should_send_federation():
@ -585,7 +587,7 @@ class WorkerPresenceHandler(BasePresenceHandler):
if ( if (
not affect_presence not affect_presence
or not self._track_presence or not self._track_presence
or not self._sync_presence_tracking or not self._presence_local_activity_tracking
): ):
return _NullContextManager() return _NullContextManager()
@ -1152,7 +1154,7 @@ class PresenceHandler(BasePresenceHandler):
if ( if (
not affect_presence not affect_presence
or not self._track_presence or not self._track_presence
or not self._sync_presence_tracking or not self._presence_local_activity_tracking
): ):
return _NullContextManager() return _NullContextManager()