42 lines
1.3 KiB
Lua
42 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)
|
|
return Promise.new(function()
|
|
-- 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
|
|
end |