45 lines
1.3 KiB
Lua
45 lines
1.3 KiB
Lua
local CoreGui = game:GetService("CoreGui")
|
|
local LocalizationService = game:GetService("LocalizationService")
|
|
|
|
local Modules = CoreGui.RobloxGui.Modules
|
|
|
|
local Common = Modules.Common
|
|
|
|
local request = require(Modules.LuaApp.Http.request)
|
|
local ScreenManager = require(Modules.LuaChat.ScreenManager)
|
|
local AppReducer = require(Modules.LuaApp.AppReducer)
|
|
local Localization = require(Modules.LuaApp.Localization)
|
|
local Analytics = require(Common.Analytics)
|
|
local Rodux = require(Common.Rodux)
|
|
|
|
local AppState = {}
|
|
|
|
local function appStateConstructor(chatGui, store, analyticsImpl)
|
|
local state = {}
|
|
|
|
state.store = store
|
|
state.localization = Localization.new(LocalizationService.RobloxLocaleId)
|
|
state.analytics = analyticsImpl
|
|
state.request = request
|
|
state.screenManager = ScreenManager.new(chatGui, state)
|
|
return state
|
|
end
|
|
|
|
function AppState.new(chatGui, store)
|
|
local analyticsImpl = Analytics.new()
|
|
return appStateConstructor(chatGui, store, analyticsImpl)
|
|
end
|
|
|
|
function AppState.mock(chatGui, store, analyticsImpl)
|
|
analyticsImpl = analyticsImpl or Analytics.mock()
|
|
chatGui = chatGui or CoreGui
|
|
store = store or Rodux.Store.new(AppReducer)
|
|
|
|
return appStateConstructor(chatGui, store, analyticsImpl)
|
|
end
|
|
|
|
function AppState:Destruct()
|
|
self.store:destruct()
|
|
end
|
|
|
|
return AppState |