1+ local log = require " log"
12local capabilities = require " st.capabilities"
23local utils = require " st.utils"
34
@@ -6,6 +7,28 @@ local lockCredentialInfo = capabilities["stse.lockCredentialInfo"]
67
78local credential_utils = {}
89local HOST_COUNT = " __host_count"
10+ local PERSIST_DATA = " __persist_area"
11+
12+ credential_utils .attrCopy = function (table )
13+ local copy = {}
14+ for key , value in pairs (table ) do
15+ copy [key ] = utils .deep_copy (value )
16+ end
17+ return copy
18+ end
19+
20+ credential_utils .backup_data = function (device )-- Back up data the persistent
21+ local credentialInfoTable = utils .deep_copy (device :get_latest_state (" main" , lockCredentialInfo .ID ,
22+ lockCredentialInfo .credentialInfo .NAME , {}))
23+ local backupData = credential_utils .attrCopy (credentialInfoTable )
24+ device :set_field (PERSIST_DATA , backupData , { persist = true })
25+ end
26+
27+ credential_utils .sync = function (driver , device )
28+ log .warn (" credential_utils.sync entry" )
29+ local credentialInfoTable = device :get_field (PERSIST_DATA )
30+ device :emit_event (lockCredentialInfo .credentialInfo (credentialInfoTable , { visibility = { displayed = false } }))
31+ end
932
1033credential_utils .save_data = function (driver )
1134 driver .datastore :save ()
@@ -29,6 +52,7 @@ credential_utils.update_remote_control_status = function(driver, device, added)
2952
3053 device :set_field (HOST_COUNT , host_cnt , { persist = true })
3154 credential_utils .save_data (driver )
55+ credential_utils .backup_data (device )
3256end
3357
3458credential_utils .sync_all_credential_info = function (driver , device , command )
@@ -39,6 +63,7 @@ credential_utils.sync_all_credential_info = function(driver, device, command)
3963 end
4064 device :emit_event (lockCredentialInfo .credentialInfo (command .args .credentialInfo , { visibility = { displayed = false } }))
4165 credential_utils .save_data (driver )
66+ credential_utils .backup_data (device )
4267end
4368
4469credential_utils .upsert_credential_info = function (driver , device , command )
@@ -71,9 +96,10 @@ credential_utils.upsert_credential_info = function(driver, device, command)
7196 if credential_utils .is_exist_host (device ) == false then
7297 credential_utils .update_remote_control_status (driver , device , true )
7398 end
74-
99+
75100 device :emit_event (lockCredentialInfo .credentialInfo (credentialInfoTable , { visibility = { displayed = false } }))
76101 credential_utils .save_data (driver )
102+ credential_utils .backup_data (device )
77103end
78104
79105credential_utils .delete_user = function (driver , device , command )
@@ -96,6 +122,7 @@ credential_utils.delete_user = function(driver, device, command)
96122
97123 device :emit_event (lockCredentialInfo .credentialInfo (credentialInfoTable , { visibility = { displayed = false } }))
98124 credential_utils .save_data (driver )
125+ credential_utils .backup_data (device )
99126end
100127
101128credential_utils .delete_credential = function (driver , device , command )
@@ -117,6 +144,7 @@ credential_utils.delete_credential = function(driver, device, command)
117144
118145 device :emit_event (lockCredentialInfo .credentialInfo (credentialInfoTable , { visibility = { displayed = false } }))
119146 credential_utils .save_data (driver )
147+ credential_utils .backup_data (device )
120148end
121149
122150credential_utils .find_userLabel = function (driver , device , value )
0 commit comments