SyntaxGameServer/RCCService2018/content/internal/Chat/Modules/LuaChat/Reducers/PlayTogetherAsync.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