Skip to content

Commit 8057b10

Browse files
committed
Companion send updateUser command to set userName
Signed-off-by: Hunsup Jung <[email protected]>
1 parent 778fd4d commit 8057b10

File tree

1 file changed

+27
-18
lines changed
  • drivers/SmartThings/matter-lock/src/new-matter-lock

1 file changed

+27
-18
lines changed

drivers/SmartThings/matter-lock/src/new-matter-lock/init.lua

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -647,7 +647,7 @@ end
647647
----------------
648648
-- User Table --
649649
----------------
650-
local function add_user_to_table(device, userIdx, usrType)
650+
local function add_user_to_table(device, userIdx, userName, userType)
651651
-- Get latest user table
652652
local user_table = utils.deep_copy(device:get_latest_state(
653653
"main",
@@ -657,11 +657,11 @@ local function add_user_to_table(device, userIdx, usrType)
657657
))
658658

659659
-- Add new entry to table
660-
table.insert(user_table, {userIndex = userIdx, userType = usrType})
660+
table.insert(user_table, {userIndex = userIdx, userName = userName, userType = userType})
661661
device:emit_event(capabilities.lockUsers.users(user_table, {visibility = {displayed = false}}))
662662
end
663663

664-
local function update_user_in_table(device, userIdx, usrType)
664+
local function update_user_in_table(device, userIdx, userName, userType)
665665
-- Get latest user table
666666
local user_table = utils.deep_copy(device:get_latest_state(
667667
"main",
@@ -681,7 +681,8 @@ local function update_user_in_table(device, userIdx, usrType)
681681

682682
-- Update user entry
683683
if i ~= 0 then
684-
user_table[i].userType = usrType
684+
user_table[i].userType = userType
685+
user_table[i].userName = userName
685686
device:emit_event(capabilities.lockUsers.users(user_table, {visibility = {displayed = false}}))
686687
end
687688
end
@@ -1188,7 +1189,7 @@ local function handle_update_user(driver, device, command)
11881189
local cmdName = "updateUser"
11891190
local userIdx = command.args.userIndex
11901191
local userName = command.args.userName
1191-
local userType = command.args.lockUserType
1192+
local userType = command.args.userType
11921193
local userTypeMatter = DoorLock.types.UserTypeEnum.UNRESTRICTED_USER
11931194
if userType == "guest" then
11941195
userTypeMatter = DoorLock.types.UserTypeEnum.SCHEDULE_RESTRICTED_USER
@@ -1215,6 +1216,7 @@ local function handle_update_user(driver, device, command)
12151216
-- Save values to field
12161217
device:set_field(lock_utils.COMMAND_NAME, cmdName, {persist = true})
12171218
device:set_field(lock_utils.USER_INDEX, userIdx, {persist = true})
1219+
device:set_field(lock_utils.USER_NAME, userName, {persist = true})
12181220
device:set_field(lock_utils.USER_TYPE, userType, {persist = true})
12191221

12201222
-- Send command
@@ -1325,6 +1327,7 @@ local function set_user_response_handler(driver, device, ib, response)
13251327
-- Get result
13261328
local cmdName = device:get_field(lock_utils.COMMAND_NAME)
13271329
local userIdx = device:get_field(lock_utils.USER_INDEX)
1330+
local userName = device:get_field(lock_utils.USER_NAME)
13281331
local userType = device:get_field(lock_utils.USER_TYPE)
13291332
local status = "success"
13301333
if ib.status == DoorLock.types.DlStatus.FAILURE then
@@ -1338,9 +1341,9 @@ local function set_user_response_handler(driver, device, ib, response)
13381341
-- Update User in table
13391342
if status == "success" then
13401343
if cmdName == "addUser" then
1341-
add_user_to_table(device, userIdx, userType)
1344+
add_user_to_table(device, userIdx, userName, userType)
13421345
elseif cmdName == "updateUser" then
1343-
update_user_in_table(device, userIdx, userType)
1346+
update_user_in_table(device, userIdx, userName, userType)
13441347
end
13451348
else
13461349
device.log.warn(string.format("Failed to set user: %s", status))
@@ -1614,7 +1617,7 @@ local function set_pin_response_handler(driver, device, ib, response)
16141617

16151618
-- If user is added also, update User table
16161619
if userIdx == nil then
1617-
add_user_to_table(device, elements.user_index.value, userType)
1620+
add_user_to_table(device, elements.user_index.value, nil, userType)
16181621
end
16191622

16201623
-- Update Credential table
@@ -1762,7 +1765,7 @@ local function set_issuer_key_response_handler(driver, device, ib, response)
17621765
-- If user is added also, update User table
17631766
if userIdx == nil then
17641767
userIdx = elements.user_index.value
1765-
add_user_to_table(device, userIdx, "adminMember")
1768+
add_user_to_table(device, userIdx, nil, "adminMember")
17661769
end
17671770

17681771
-- Update Aliro table
@@ -1885,7 +1888,7 @@ local function set_endpoint_key_response_handler(driver, device, ib, response)
18851888
-- If user is added also, update User table
18861889
if userIdx == nil then
18871890
userIdx = elements.user_index.value
1888-
add_user_to_table(device, userIdx, "adminMember")
1891+
add_user_to_table(device, userIdx, nil, "adminMember")
18891892
end
18901893

18911894
-- Update Aliro table
@@ -2103,8 +2106,10 @@ local function delete_pin_response_handler(driver, device, ib, response)
21032106
local userIdx = 0
21042107
if status == "success" then
21052108
userIdx = delete_credential_from_table(device, credIdx)
2106-
if userIdx == 0 then
2107-
userIdx = nil
2109+
if userIdx ~= 0 and has_credentials(device, userIdx) == false then
2110+
delete_user_from_table(device, userIdx)
2111+
delete_week_schedule_from_table_as_user(device, userIdx)
2112+
delete_year_schedule_from_table_as_user(device, userIdx)
21082113
end
21092114
else
21102115
device.log.warn(string.format("Failed to clear credential: %s", status))
@@ -2147,12 +2152,11 @@ local function clear_issuer_key_response_handler(driver, device, ib, response)
21472152
-- if status is success, delete entry from table
21482153
if status == "success" then
21492154
delete_aliro_from_table(device, userIdx, "issuerKey", nil)
2150-
end
2151-
2152-
if has_credentials(device, userIdx) == false then
2153-
delete_user_from_table(device, userIdx)
2154-
delete_week_schedule_from_table_as_user(device, userIdx)
2155-
delete_year_schedule_from_table_as_user(device, userIdx)
2155+
if has_credentials(device, userIdx) == false then
2156+
delete_user_from_table(device, userIdx)
2157+
delete_week_schedule_from_table_as_user(device, userIdx)
2158+
delete_year_schedule_from_table_as_user(device, userIdx)
2159+
end
21562160
end
21572161

21582162
-- Update commandResult
@@ -2191,6 +2195,11 @@ local function clear_endpoint_key_response_handler(driver, device, ib, response)
21912195
-- if status is success, delete entry from table
21922196
if status == "success" then
21932197
delete_aliro_from_table(device, userIdx, keyType, deviceKeyId)
2198+
if has_credentials(device, userIdx) == false then
2199+
delete_user_from_table(device, userIdx)
2200+
delete_week_schedule_from_table_as_user(device, userIdx)
2201+
delete_year_schedule_from_table_as_user(device, userIdx)
2202+
end
21942203
end
21952204

21962205
-- Update commandResult

0 commit comments

Comments
 (0)