jf-roku/source/utils/config.brs

94 lines
2.6 KiB
Plaintext
Raw Normal View History

' "Registry" is where Roku stores config
2022-05-01 10:51:28 +00:00
' Read config tree from json config file and return
function GetConfigTree()
return ParseJSON(ReadAsciiFile("pkg:/settings/settings.json"))
end function
' Generic registry accessors
2021-07-09 20:08:32 +00:00
function registry_read(key, section = invalid)
if section = invalid then return invalid
reg = CreateObject("roRegistrySection", section)
if reg.exists(key) then return reg.read(key)
return invalid
end function
2021-07-09 20:08:32 +00:00
sub registry_write(key, value, section = invalid)
if section = invalid then return
reg = CreateObject("roRegistrySection", section)
reg.write(key, value)
reg.flush()
end sub
2021-07-09 20:08:32 +00:00
sub registry_delete(key, section = invalid)
if section = invalid then return
reg = CreateObject("roRegistrySection", section)
reg.delete(key)
reg.flush()
end sub
' "Jellyfin" registry accessors for the default global settings
2021-07-09 20:08:32 +00:00
function get_setting(key, default = invalid)
value = registry_read(key, "Jellyfin")
if value = invalid then return default
return value
end function
sub set_setting(key, value)
2021-07-09 20:08:32 +00:00
registry_write(key, value, "Jellyfin")
end sub
sub unset_setting(key)
2021-07-09 20:08:32 +00:00
registry_delete(key, "Jellyfin")
end sub
' User registry accessors for the currently active user
2021-07-09 20:08:32 +00:00
function get_user_setting(key, default = invalid)
if get_setting("active_user") = invalid then return default
value = registry_read(key, get_setting("active_user"))
2022-05-01 10:51:28 +00:00
if value = invalid
' Check for default in Config Tree
configTree = GetConfigTree()
configKey = findConfigTreeKey(key, configTree)
if configKey <> invalid and configKey.default <> invalid
set_user_setting(key, configKey.default) ' Set user setting to default
return configKey.default
end if
return default
end if
2021-07-09 20:08:32 +00:00
return value
end function
sub set_user_setting(key, value)
2021-07-09 20:08:32 +00:00
if get_setting("active_user") = invalid then return
registry_write(key, value, get_setting("active_user"))
end sub
sub unset_user_setting(key)
2021-07-09 20:08:32 +00:00
if get_setting("active_user") = invalid then return
registry_delete(key, get_setting("active_user"))
end sub
2022-05-01 10:51:28 +00:00
' Recursivly search the config tree for entry with settingname equal to key
function findConfigTreeKey(key as string, tree)
for each item in tree
if item.settingName <> invalid and item.settingName = key then return item
if item.children <> invalid and item.children.Count() > 0
result = findConfigTreeKey(key, item.children)
if result <> invalid then return result
end if
end for
return invalid
end function