add gs
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
local Players = game:GetService("Players")
|
||||
local UserInputService = game:GetService("UserInputService")
|
||||
|
||||
local Thunk = require(script.Parent.Parent.Thunk)
|
||||
local Promise = require(script.Parent.Parent.Promise)
|
||||
|
||||
local UpsellFlow = require(script.Parent.Parent.UpsellFlow)
|
||||
local PromptState = require(script.Parent.Parent.PromptState)
|
||||
|
||||
local SetPromptState = require(script.Parent.Parent.Actions.SetPromptState)
|
||||
|
||||
local Analytics = require(script.Parent.Parent.Services.Analytics)
|
||||
local PlatformInterface = require(script.Parent.Parent.Services.PlatformInterface)
|
||||
|
||||
local getUpsellFlow = require(script.Parent.Parent.NativeUpsell.getUpsellFlow)
|
||||
local retryAfterUpsell = require(script.Parent.retryAfterUpsell)
|
||||
|
||||
local requiredServices = {
|
||||
Analytics,
|
||||
PlatformInterface,
|
||||
}
|
||||
|
||||
local function launchRobuxUpsell()
|
||||
return Thunk.new(script.Name, requiredServices, function(store, services)
|
||||
local analytics = services[Analytics]
|
||||
local platformInterface = services[PlatformInterface]
|
||||
|
||||
local upsellFlow = getUpsellFlow(UserInputService:GetPlatform())
|
||||
|
||||
if upsellFlow == UpsellFlow.Web then
|
||||
platformInterface.startRobuxUpsellWeb()
|
||||
analytics.reportRobuxUpsellStarted()
|
||||
store:dispatch(SetPromptState(PromptState.UpsellInProgress))
|
||||
|
||||
elseif upsellFlow == UpsellFlow.Mobile then
|
||||
local nativeProductId = store:getState().nativeUpsell.robuxProductId
|
||||
|
||||
platformInterface.promptNativePurchase(Players.LocalPlayer, nativeProductId)
|
||||
store:dispatch(SetPromptState(PromptState.UpsellInProgress))
|
||||
|
||||
elseif upsellFlow == UpsellFlow.Xbox then
|
||||
local nativeProductId = store:getState().nativeUpsell.robuxProductId
|
||||
store:dispatch(SetPromptState(PromptState.UpsellInProgress))
|
||||
return Promise.new(function(resolve, reject)
|
||||
local platformPurchaseResult = platformInterface.beginPlatformStorePurchase(nativeProductId)
|
||||
|
||||
Promise.resolve(platformPurchaseResult)
|
||||
end)
|
||||
:andThen(function(result)
|
||||
if result ~= 0 then
|
||||
store:dispatch(retryAfterUpsell)
|
||||
end
|
||||
end)
|
||||
else
|
||||
warn("Need more Robux: platform not supported for Robux purchase")
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
return launchRobuxUpsell
|
||||
Reference in New Issue
Block a user