fix: preserve invite workspace bootstrap semantics

This commit is contained in:
Mikhail Putilovskij 2026-04-19 17:34:47 +03:00
parent 8270e5821e
commit 03160a3b37

View file

@ -29,6 +29,7 @@ async def provision_workspace_chat(
store, store,
auth_mgr, auth_mgr,
chat_mgr, chat_mgr,
room_name_override: str | None = None,
) -> dict: ) -> dict:
user = await platform.get_or_create_user( user = await platform.get_or_create_user(
external_id=matrix_user_id, external_id=matrix_user_id,
@ -59,8 +60,9 @@ async def provision_workspace_chat(
user_meta["space_id"] = space_id user_meta["space_id"] = space_id
await set_user_meta(store, matrix_user_id, user_meta) await set_user_meta(store, matrix_user_id, user_meta)
chat_id = await next_chat_id(store, matrix_user_id) next_chat_index = int(user_meta.get("next_chat_index", 1))
room_name = _default_room_name(chat_id) chat_id = f"C{next_chat_index}"
room_name = room_name_override or _default_room_name(chat_id)
chat_resp = await client.room_create( chat_resp = await client.room_create(
name=room_name, name=room_name,
visibility=RoomVisibility.private, visibility=RoomVisibility.private,
@ -83,6 +85,10 @@ async def provision_workspace_chat(
state_key=chat_room_id, state_key=chat_room_id,
) )
user_meta["space_id"] = space_id
user_meta["next_chat_index"] = next_chat_index + 1
await set_user_meta(store, matrix_user_id, user_meta)
await set_room_meta( await set_room_meta(
store, store,
chat_room_id, chat_room_id,
@ -122,15 +128,20 @@ async def handle_invite(client: Any, room: Any, event: Any, platform, store, aut
if existing and existing.get("space_id"): if existing and existing.get("space_id"):
return return
created = await provision_workspace_chat( try:
client, created = await provision_workspace_chat(
matrix_user_id, client,
display_name, matrix_user_id,
platform, display_name,
store, platform,
auth_mgr, store,
chat_mgr, auth_mgr,
) chat_mgr,
room_name_override="Чат 1",
)
except RuntimeError as exc:
logger.error("invite_workspace_provision_failed", user=matrix_user_id, error=str(exc))
return
welcome = ( welcome = (
f"Привет, {created['user'].display_name or matrix_user_id}! Пиши — я здесь.\n\n" f"Привет, {created['user'].display_name or matrix_user_id}! Пиши — я здесь.\n\n"