SyntaxGameServer/RCCService2018/content/LuaPackages/AppTempCommon/LuaApp/Thunks/ApiFetchGamesDataByPlaceIds...

40 lines
1.4 KiB
Lua

local CorePackages = game:GetService("CorePackages")
local ApiFetchGameThumbnails = require(CorePackages.AppTempCommon.LuaApp.Thunks.ApiFetchGameThumbnails)
local Functional = require(CorePackages.AppTempCommon.Common.Functional)
local GamesMultigetPlaceDetails = require(CorePackages.AppTempCommon.LuaApp.Http.Requests.GamesMultigetPlaceDetails)
local PlaceInfoModel = require(CorePackages.AppTempCommon.LuaChat.Models.PlaceInfoModel)
local ReceivedPlacesInfos = require(CorePackages.AppTempCommon.LuaApp.Actions.ReceivedPlacesInfos)
return function(networkImpl, placeIds)
return function(store)
if not placeIds or #placeIds == 0 then
return
end
return GamesMultigetPlaceDetails(networkImpl, placeIds):andThen(function(result)
local data = result.responseBody
local imageTokens = {}
local placeInfos = Functional.Map(data, function(placeInfoData)
local placeInfo = PlaceInfoModel.fromWeb(placeInfoData)
local universePlaceInfos = store:getState().UniversePlaceInfos
local universeId = placeInfo.universeRootPlaceId
if not universePlaceInfos[universeId] or placeInfo.imageToken ~= universePlaceInfos[universeId].imageToken then
table.insert(imageTokens, placeInfo.imageToken)
end
return placeInfo
end)
store:dispatch(ReceivedPlacesInfos(placeInfos))
if #imageTokens > 0 then
store:dispatch(ApiFetchGameThumbnails(networkImpl, imageTokens))
end
return placeInfos
end)
end
end