From a767ce42679ba705d912e698d27ddb78a2aed3c2 Mon Sep 17 00:00:00 2001 From: Haw Loeung Date: Tue, 15 Sep 2026 14:15:44 +1000 Subject: [PATCH] Include users' UpdateAt, DeleteAt, and Timezone --- matterclient.go | 3 +++ users.go | 32 +++++++++++++++++++++----------- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/matterclient.go b/matterclient.go index 2d21582..e600ba2 100644 --- a/matterclient.go +++ b/matterclient.go @@ -98,12 +98,15 @@ type UsersCache struct { type UserSummary struct { Id string `json:"id"` + UpdateAt int64 `json:"update_at"` + DeleteAt int64 `json:"delete_at"` Username string `json:"username"` FirstName string `json:"first_name"` LastName string `json:"last_name"` Nickname string `json:"nickname"` Roles string `json:"roles"` Props map[string]string `json:"props"` + Timezone map[string]string `json:"timezone"` } type Team struct { diff --git a/users.go b/users.go index e9f2cd1..ef9bbcd 100644 --- a/users.go +++ b/users.go @@ -787,13 +787,15 @@ func (m *Client) UpdateUser(user *model.User, batchLock ...bool) *model.User { return m.updateUserLocked( user.Id, + user.UpdateAt, + user.DeleteAt, user.Username, user.FirstName, user.LastName, user.Nickname, user.Roles, user.Props, - user.DeleteAt, + user.Timezone, ) } @@ -812,17 +814,20 @@ func (m *Client) UpdateUserSummary(u *UserSummary, batchLock ...bool) *model.Use return m.updateUserLocked( u.Id, + u.UpdateAt, + u.DeleteAt, u.Username, u.FirstName, u.LastName, u.Nickname, u.Roles, u.Props, - -1, + u.Timezone, ) } -func (m *Client) updateUserLocked(id, username, firstName, lastName, nickname, roles string, props map[string]string, deleteAt int64) *model.User { +//nolint:funlen +func (m *Client) updateUserLocked(id string, updateAt int64, deleteAt int64, username, firstName, lastName, nickname, roles string, props map[string]string, timezone map[string]string) *model.User { switch roles { case "system_user": roles = "system_user" @@ -832,26 +837,31 @@ func (m *Client) updateUserLocked(id, username, firstName, lastName, nickname, r cachedUser, exists := m.Users.users[id] if !exists { - newUserDeleteAt := int64(0) - if deleteAt > 0 { - newUserDeleteAt = deleteAt - } - cachedUser = &model.User{ Id: id, + UpdateAt: max(0, updateAt), + DeleteAt: max(0, deleteAt), Username: username, FirstName: firstName, LastName: lastName, Nickname: nickname, Roles: roles, Props: props, - DeleteAt: newUserDeleteAt, + Timezone: timezone, } m.Users.users[id] = cachedUser return cachedUser } + if updateAt > 0 && cachedUser.UpdateAt != updateAt { + cachedUser.UpdateAt = updateAt + } + + if deleteAt >= 0 && cachedUser.DeleteAt != deleteAt { + cachedUser.DeleteAt = deleteAt + } + if cachedUser.Username != username { cachedUser.Username = username } @@ -876,8 +886,8 @@ func (m *Client) updateUserLocked(id, username, firstName, lastName, nickname, r cachedUser.Props = props } - if deleteAt >= 0 && cachedUser.DeleteAt != deleteAt { - cachedUser.DeleteAt = deleteAt + if timezone != nil { + cachedUser.Timezone = timezone } return cachedUser