SyntaxGameServer/RCCService2018/content/LuaPackages/AppTempCommon/LuaApp/Thunks/ApiFetchUsersThumbnail.lua

40 lines
1.3 KiB
Lua

local CorePackages = game:GetService("CorePackages")
local Actions = CorePackages.AppTempCommon.LuaApp.Actions
local Requests = CorePackages.AppTempCommon.LuaApp.Http.Requests
local UsersGetThumbnail = require(Requests.UsersGetThumbnail)
local SetUserThumbnail = require(Actions.SetUserThumbnail)
local Promise = require(CorePackages.AppTempCommon.LuaApp.Promise)
local function fetchThumbnailsBatch(networkImpl, userIds, thumbnailRequest)
local fetchedPromises = {}
for _, userId in pairs(userIds) do
table.insert(fetchedPromises,
UsersGetThumbnail(userId, thumbnailRequest.thumbnailType, thumbnailRequest.thumbnailSize)
)
end
return Promise.all(fetchedPromises)
end
return function(networkImpl, userIds, thumbnailRequests)
return function(store)
-- We currently cannot batch request user avatar thumbnails,
-- so each thumbnailRequest has to be processed individually.
local fetchedPromises = {}
for _, thumbnailRequest in pairs(thumbnailRequests) do
table.insert(fetchedPromises,
fetchThumbnailsBatch(networkImpl, userIds, thumbnailRequest):andThen(function(result)
for _, data in pairs(result) do
store:dispatch(SetUserThumbnail(data.id, data.image, data.thumbnailType, data.thumbnailSize))
end
end)
)
end
return Promise.all(fetchedPromises)
end
end