Skip to content

Commit c446434

Browse files
committed
Avoid setting avatar_url to ""
Fixes an edge-case bug where calling `set_avatar_url("")` when the user doesn't have an avatar(`get_avatar_url()` returns `None`) caused a redundant PUT request to be made to nullify the already-empty avatar_url field in the user profile. This also fixes the errant `$user made no change` state events appearing in every room they are in when `set_avatar_url("")` is called. Signed-off-by: Joe Groocock <[email protected]>
1 parent 8eca64e commit c446434

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

Diff for: mautrix/client/api/user_data.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ async def search_users(self, search_query: str, limit: int | None = 10) -> UserS
7171
# region 10.2 Profiles
7272
# API reference: https://matrix.org/docs/spec/client_server/r0.4.0.html#profiles
7373

74-
async def set_displayname(self, displayname: str, check_current: bool = True) -> None:
74+
async def set_displayname(self, displayname: str | None, check_current: bool = True) -> None:
7575
"""
7676
Set the display name of the current user.
7777
@@ -81,7 +81,7 @@ async def set_displayname(self, displayname: str, check_current: bool = True) ->
8181
displayname: The new display name for the user.
8282
check_current: Whether or not to check if the displayname is already set.
8383
"""
84-
if check_current and await self.get_displayname(self.mxid) == displayname:
84+
if check_current and await self.get_displayname(self.mxid) == (displayname or None):
8585
return
8686
await self.api.request(
8787
Method.PUT,
@@ -112,7 +112,9 @@ async def get_displayname(self, user_id: UserID) -> str | None:
112112
except KeyError:
113113
return None
114114

115-
async def set_avatar_url(self, avatar_url: ContentURI, check_current: bool = True) -> None:
115+
async def set_avatar_url(
116+
self, avatar_url: ContentURI | None, check_current: bool = True
117+
) -> None:
116118
"""
117119
Set the avatar of the current user.
118120
@@ -122,7 +124,7 @@ async def set_avatar_url(self, avatar_url: ContentURI, check_current: bool = Tru
122124
avatar_url: The ``mxc://`` URI to the new avatar.
123125
check_current: Whether or not to check if the avatar is already set.
124126
"""
125-
if check_current and await self.get_avatar_url(self.mxid) == avatar_url:
127+
if check_current and await self.get_avatar_url(self.mxid) == (avatar_url or None):
126128
return
127129
await self.api.request(
128130
Method.PUT,

0 commit comments

Comments
 (0)