diff --git a/sdk/prototype_state.py b/sdk/prototype_state.py index 78243e4..3423701 100644 --- a/sdk/prototype_state.py +++ b/sdk/prototype_state.py @@ -44,7 +44,7 @@ class PrototypeStateStore: if existing is not None: stored = existing.model_copy(update={"is_new": False}) self._users[key] = stored - return stored + return stored.model_copy() user = User( user_id=f"usr-{platform}-{external_id}", @@ -55,7 +55,7 @@ class PrototypeStateStore: is_new=True, ) self._users[key] = user - return user + return user.model_copy() async def get_settings(self, user_id: str) -> UserSettings: stored = self._settings.get(user_id, {}) diff --git a/tests/platform/test_prototype_state.py b/tests/platform/test_prototype_state.py index 3c2c25a..c1a2d73 100644 --- a/tests/platform/test_prototype_state.py +++ b/tests/platform/test_prototype_state.py @@ -21,9 +21,14 @@ async def test_get_or_create_user_is_stable_per_surface_identity(): assert first.user_id == "usr-matrix-@alice:example.org" assert first.is_new is True + + first.display_name = "Mallory" + first.is_new = False + assert second.user_id == first.user_id assert second.is_new is False assert second.display_name == "Alice" + assert store._users["matrix:@alice:example.org"].display_name == "Alice" assert store._users["matrix:@alice:example.org"].is_new is False