60 lines
1.6 KiB
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
|