@@ -44,6 +44,7 @@ def get_user_data(self) -> dict | None:
4444 return None
4545
4646 data = self .api .get_user_data (token )
47+ data = self ._normalize_user_data (data )
4748
4849 return data
4950
@@ -79,15 +80,38 @@ def get_full_user_data(self) -> dict | None:
7980 return None
8081
8182 # This might be the same as get_user_data, but let's assume it could be different
82- return self .api .get_user_data (token )
83+ data = self .api .get_user_data (token )
84+ return self ._normalize_user_data (data )
85+
86+ def get_current_user_id (self ) -> int | None :
87+ """Returns the currently logged-in user id from local session storage."""
88+ if self .mode == "guest" :
89+ return None
90+
91+ last_logged = read_json (self .LOCAL_DIR_LAST_LOGGED )
92+ if not isinstance (last_logged , dict ):
93+ return None
94+
95+ user_id = last_logged .get ("user_id" )
96+ if user_id is None :
97+ return None
98+
99+ try :
100+ return int (user_id )
101+ except (TypeError , ValueError ):
102+ return None
83103
84104
85- def update_user_profile (self , user_id : int , data : dict ) -> dict :
105+ def update_user_profile (self , user_id : int | None , data : dict ) -> dict :
86106 """Updates the user's profile data."""
107+ resolved_user_id = user_id if user_id is not None else self .get_current_user_id ()
108+ if resolved_user_id is None :
109+ raise ValueError ("Cannot update profile: missing current user id" )
110+
87111 # The data dict should contain 'username', 'department' (ID)
88112 return self ._make_authorized_request (
89113 self .api .update_user_data ,
90- user_id = user_id ,
114+ user_id = resolved_user_id ,
91115 data = data
92116 )
93117
@@ -330,6 +354,18 @@ def _get_user_token(self) -> str | None:
330354 )
331355
332356 return access_token
357+
358+ @staticmethod
359+ def _normalize_user_data (data : dict | None ) -> dict | None :
360+ """Normalizes API user payload to a flat user dict."""
361+ if not isinstance (data , dict ):
362+ return None
363+
364+ nested_user = data .get ("user" )
365+ if isinstance (nested_user , dict ):
366+ return nested_user
367+
368+ return data
333369
334370
335371 def _get_departments (self ) -> list [dict ]:
0 commit comments