SyntaxGameServer/RCCService2021/ExtraContent/LuaPackages/Regulations/ScreenTime/Utils.lua

60 lines
1.6 KiB
Lua

--[[
Provides utility methods for ScreenTime feature.
]]
local CorePackages = game:GetService("CorePackages")
local ArgCheck = require(CorePackages.ArgCheck)
local Logging = require(CorePackages.Logging)
local TAG = "Utils"
-- This global key will be accessed by native code
local GLOBAL_KEY_LOCKED_OUT = "ScreenTime.lockedOut"
-- This string will be checked against in native code (Java, etc.)
local TRUE_VALUE = "true"
local Utils = {
globalGetter = nil,
globalSetter = nil,
}
--[[
Create a new Utils object.
@param dependencies injected dependencies to get and set global key values.
The value should be accessible from native code.
members & interfaces:
globalGetter(string key) -> string
globalSetter(string key, string value)
]]
function Utils:new(dependencies)
ArgCheck.isType(dependencies.globalGetter, "function", "globalGetter")
ArgCheck.isType(dependencies.globalSetter, "function", "globalSetter")
local obj = {
globalGetter = dependencies.globalGetter,
globalSetter = dependencies.globalSetter,
}
setmetatable(obj, self)
self.__index = self
return obj
end
--[[
Get the flag whether current user is locked out.
]]
function Utils:isLockedOut()
ArgCheck.isType(self.globalGetter, "function", "globalGetter")
return (self.globalGetter(GLOBAL_KEY_LOCKED_OUT) == TRUE_VALUE)
end
--[[
Set the flag that current user is locked out.
It will be reset after successful MSDK login.
]]
function Utils:setLockedOut()
Logging.warn(TAG .. " setLockedOut")
ArgCheck.isType(self.globalSetter, "function", "globalSetter")
self.globalSetter(GLOBAL_KEY_LOCKED_OUT, TRUE_VALUE)
end
return Utils