Update person cache when availability changes

main
bashrc 2026-04-20 15:35:33 +01:00
parent 361a99c730
commit d8f53e0e2e
3 changed files with 15 additions and 9 deletions

View File

@ -25,18 +25,19 @@ from utils import get_actor_from_post
def set_availability(base_dir: str, nickname: str, domain: str, def set_availability(base_dir: str, nickname: str, domain: str,
status: str) -> bool: status: str, actor_json: {}) -> bool:
"""Set an availability status """Set an availability status
""" """
# avoid giant strings # avoid giant strings
if len(status) > 128: if len(status) > 128:
return False return False
actor_filename = acct_dir(base_dir, nickname, domain) + '.json' actor_filename = acct_dir(base_dir, nickname, domain) + '.json'
if not os.path.isfile(actor_filename): if not actor_json:
return False if os.path.isfile(actor_filename):
actor_json = load_json(actor_filename) actor_json = load_json(actor_filename)
if actor_json: if actor_json:
actor_json['availability'] = status actor_json['availability'] = status
if os.path.isfile(actor_filename):
save_json(actor_json, actor_filename) save_json(actor_json, actor_filename)
return True return True
@ -62,8 +63,9 @@ def get_availability(base_dir: str, nickname: str, domain: str,
def outbox_availability(base_dir: str, nickname: str, message_json: {}, def outbox_availability(base_dir: str, nickname: str, message_json: {},
debug: bool) -> bool: debug: bool, person_cache: {}) -> bool:
"""Handles receiving an availability update """Handles receiving an availability update
This is for setting your own availability
""" """
if not message_json.get('type'): if not message_json.get('type'):
return False return False
@ -74,7 +76,10 @@ def outbox_availability(base_dir: str, nickname: str, message_json: {},
if not has_object_string(message_json, debug): if not has_object_string(message_json, debug):
return False return False
actor_json = None
actor_url = get_actor_from_post(message_json) actor_url = get_actor_from_post(message_json)
if person_cache.get(actor_url):
actor_json = person_cache[actor_url]
actor_nickname = get_nickname_from_actor(actor_url) actor_nickname = get_nickname_from_actor(actor_url)
if not actor_nickname: if not actor_nickname:
return False return False
@ -85,7 +90,7 @@ def outbox_availability(base_dir: str, nickname: str, message_json: {},
return False return False
status = message_json['object'].replace('"', '') status = message_json['object'].replace('"', '')
return set_availability(base_dir, nickname, domain, status) return set_availability(base_dir, nickname, domain, status, actor_json)
def send_availability_via_server(base_dir: str, session, def send_availability_via_server(base_dir: str, session,

View File

@ -3917,7 +3917,7 @@ def _command_options() -> None:
set_skill_level(base_dir, nickname, domain, 'testing', 60) set_skill_level(base_dir, nickname, domain, 'testing', 60)
set_skill_level(base_dir, nickname, domain, 'typing', 50) set_skill_level(base_dir, nickname, domain, 'typing', 50)
set_role(base_dir, nickname, domain, 'admin') set_role(base_dir, nickname, domain, 'admin')
set_availability(base_dir, nickname, domain, 'busy') set_availability(base_dir, nickname, domain, 'busy', None)
block_federated: list[str] = [] block_federated: list[str] = []
add_share(base_dir, add_share(base_dir,

View File

@ -790,7 +790,8 @@ def post_message_to_outbox(session, translate: {},
if debug: if debug:
print('DEBUG: handle availability changes requests') print('DEBUG: handle availability changes requests')
outbox_availability(base_dir, post_to_nickname, message_json, debug) outbox_availability(base_dir, post_to_nickname, message_json,
debug, person_cache)
if debug: if debug:
print('DEBUG: handle any like requests') print('DEBUG: handle any like requests')