74 lines
3.2 KiB
Lua
74 lines
3.2 KiB
Lua
local CoreGui = game:GetService("CoreGui")
|
|
|
|
local Modules = CoreGui.RobloxGui.Modules
|
|
local Common = Modules.Common
|
|
local LuaChat = Modules.LuaChat
|
|
local Actions = LuaChat.Actions
|
|
|
|
local FailedToFetchMostRecentlyPlayedGames = require(Actions.FailedToFetchMostRecentlyPlayedGames)
|
|
local FetchedMostRecentlyPlayedGames = require(Actions.FetchedMostRecentlyPlayedGames)
|
|
local FetchingMostRecentlyPlayedGames = require(Actions.FetchingMostRecentlyPlayedGames)
|
|
local GameFailedToPin = require(Actions.GameFailedToPin)
|
|
local GameFailedToUnpin = require(Actions.GameFailedToUnpin)
|
|
local PinnedGame = require(Actions.PinnedGame)
|
|
local PinningGame = require(Actions.PinningGame)
|
|
local UnpinnedGame = require(Actions.UnpinnedGame)
|
|
local UnpinningGame = require(Actions.UnpinningGame)
|
|
|
|
local Immutable = require(Common.Immutable)
|
|
|
|
return function(state, action)
|
|
state = state or {
|
|
pinningGames = {},
|
|
unPinningGames = {},
|
|
}
|
|
-- play together async
|
|
if action.type == PinningGame.name then
|
|
local newPinningGames = Immutable.Set(state.pinningGames, action.conversationId, true)
|
|
return Immutable.JoinDictionaries(state, {
|
|
pinningGames = newPinningGames;
|
|
})
|
|
elseif action.type == PinnedGame.name then
|
|
local newPinningGames = Immutable.Set(state.pinningGames, action.conversationId, false)
|
|
return Immutable.JoinDictionaries(state, {
|
|
pinningGames = newPinningGames;
|
|
})
|
|
elseif action.type == GameFailedToPin.name then
|
|
local newPinningGames = Immutable.Set(state.pinningGames, action.conversationId, false)
|
|
return Immutable.JoinDictionaries(state, {
|
|
pinningGames = newPinningGames;
|
|
})
|
|
elseif action.type == UnpinningGame.name then
|
|
local newUnpinningGames = Immutable.Set(state.unPinningGames, action.conversationId, true)
|
|
return Immutable.JoinDictionaries(state, {
|
|
unPinningGames = newUnpinningGames;
|
|
})
|
|
elseif action.type == UnpinnedGame.name then
|
|
local newUnpinningGames = Immutable.Set(state.unPinningGames, action.conversationId, false)
|
|
return Immutable.JoinDictionaries(state, {
|
|
unPinningGames = newUnpinningGames;
|
|
})
|
|
elseif action.type == GameFailedToUnpin.name then
|
|
local newUnpinningGames = Immutable.Set(state.unPinningGames, action.conversationId, false)
|
|
return Immutable.JoinDictionaries(state, {
|
|
unPinningGames = newUnpinningGames;
|
|
})
|
|
elseif action.type == FetchingMostRecentlyPlayedGames.name then
|
|
return Immutable.JoinDictionaries(state, {
|
|
fetchingMostRecentlyPlayedGames = true,
|
|
fetchedMostRecentlyPlayedGames = false
|
|
})
|
|
elseif action.type == FetchedMostRecentlyPlayedGames.name then
|
|
return Immutable.JoinDictionaries(state, {
|
|
fetchingMostRecentlyPlayedGames = false,
|
|
fetchedMostRecentlyPlayedGames = true,
|
|
})
|
|
elseif action.type == FailedToFetchMostRecentlyPlayedGames.name then
|
|
return Immutable.JoinDictionaries(state, {
|
|
fetchingMostRecentlyPlayedGames = false,
|
|
fetchedMostRecentlyPlayedGames = false
|
|
})
|
|
end
|
|
|
|
return state
|
|
end |