CCCPaste

Gamepass Fixed

local AssetManager = {}

local HttpService = game:GetService("HttpService")
local NumbersHelper = require(game:GetService("ReplicatedStorage"):WaitForChild("Common"):WaitForChild("NumberHelpers"))

local function handleRequestErrors(success, result, errorMessage)
	if not success then
		warn("Error in HTTP request:", errorMessage)
		return nil
	end

	local decodeSuccess, decodedResult = pcall(HttpService.JSONDecode, HttpService, result)
	if not decodeSuccess then
		warn("Error decoding JSON:", decodedResult)
		return nil
	end

	return decodedResult
end

local function getUserCreatedTShirts(username, SignPrices)
	local tshirts = {}

	local success, result = pcall(function()
		return HttpService:GetAsync("https://catalog.roproxy.com/v1/search/items/details?Category=3&CreatorName=" .. username)
	end)

	result = handleRequestErrors(success, result, "Failed to retrieve user-created T-shirts")

	if result then
		print("T-shirt data:", result)

		for _, item in pairs(result.data) do
			if item.price then 
				table.insert(tshirts, item.id)
				local newBtn = script.Template:Clone()
				local price = item.price
				newBtn.PurchaseButton.Text = NumbersHelper.format(tonumber(price)) .. "\u{E002}"
				newBtn.LayoutOrder = price
				newBtn.Name = price
				newBtn.ImportantValues.AssetName.Value = item.name
				newBtn.ImportantValues.AssetId.Value = item.id
				newBtn.ImportantValues.AssetType.Value = "Clothing"
				newBtn.Parent = SignPrices
			end
		end
	end

	return tshirts
end

local function getUserCreatedGamepasses(userId, boothUI)
	local gamepasses = {}

	local GetGamesUrl = "https://games.roproxy.com/v2/users/"..userId.."/games?accessFilter=1&limit=50&sortOrder=Asc"

	local success, result = pcall(function()
		return HttpService:GetAsync(GetGamesUrl)
	end)

	result = handleRequestErrors(success, result, "Failed to retrieve user's games")

	if result and result.data then
		print("Game data:", result)

		for _, GameInfo in pairs(result.data) do
			local gameId = GameInfo.id
			local url = "https://games.roproxy.com/v1/games/"..gameId.."/game-passes?limit=100&sortOrder=Asc"

			local success2, result2 = pcall(function()
				return HttpService:GetAsync(url)
			end)

			result2 = handleRequestErrors(success2, result2, "Failed to retrieve game passes for game: "..gameId)

			if result2 and result2.data then
				print("Gamepass data for game "..gameId..":", result2)
				for _, GamepassDetail in pairs(result2.data) do
					if GamepassDetail.price then 
						table.insert(gamepasses, GamepassDetail.id)
						local newBtn = script.Template:Clone()
						local price = GamepassDetail.price
						newBtn.Name = price
						newBtn.PurchaseButton.Text = NumbersHelper.format(tonumber(price)) .. "\u{E002}"
						newBtn.LayoutOrder = price
						newBtn.ImportantValues.AssetId.Value = GamepassDetail.id
						newBtn.ImportantValues.AssetName.Value = GamepassDetail.displayName
						newBtn.ImportantValues.AssetType.Value = "Gamepass"
						newBtn.Parent = boothUI
					end
				end
			end
		end
	end

	return gamepasses
end



function AssetManager:GetAssets(Player, BoothUI)
	getUserCreatedTShirts(Player.Name, BoothUI)
	getUserCreatedGamepasses(Player.UserId, BoothUI)
end

function AssetManager:GetAssetsGift(PlayerName, PlayerUserId, BoothUI)
	getUserCreatedTShirts(PlayerName, BoothUI)
	getUserCreatedGamepasses(PlayerUserId, BoothUI)
end

return AssetManager