SyntaxGameServer/RCCService2018/content/LuaPackages/PurchasePrompt/NativeUpsell/XboxCatalogData.lua

50 lines
1.2 KiB
Lua

--[[
CLILUACORE-311: We need to find a proper way to encapsulate this;
conditionally depending on PlatformService is bad!
]]
local PlatformService = nil
pcall(function()
PlatformService = game:GetService("PlatformService")
end)
local Promise = require(script.Parent.Parent.Promise)
local function parseRobuxValue(productInfo)
local rawText = productInfo and productInfo.Name
local noJunk = string.gsub(rawText, ",", "")
noJunk = noJunk and string.match(noJunk, "[0-9]+") or nil
return noJunk and tonumber(noJunk) or 1000
end
local XboxCatalogData = {}
function XboxCatalogData.GetCatalogInfoAsync()
if PlatformService == nil then
error("PlatformService unavailable; are you on XboxOne?")
end
local promisified = Promise.promisify(function()
return PlatformService:BeginGetCatalogInfo()
end)
return promisified()
:andThen(function(catalogInfo)
local availableProducts = {}
for _, productInfo in pairs(catalogInfo) do
local product = {
robuxValue = parseRobuxValue(productInfo),
productId = productInfo.ProductId
}
table.insert(availableProducts, product)
end
return Promise.resolve(availableProducts)
end)
:catch(function(errorReason)
return Promise.reject(errorReason)
end)
end
return XboxCatalogData