Refactor actions
This commit is contained in:
64
scripts/Actions/Shop.ts
Normal file
64
scripts/Actions/Shop.ts
Normal file
@ -0,0 +1,64 @@
|
||||
import { AnimeNotifier } from "../AnimeNotifier"
|
||||
|
||||
// Charge up
|
||||
export function chargeUp(arn: AnimeNotifier, button: HTMLElement) {
|
||||
let amount = button.dataset.amount
|
||||
|
||||
arn.loading(true)
|
||||
arn.statusMessage.showInfo("Creating PayPal transaction... This might take a few seconds.")
|
||||
|
||||
fetch("/api/paypal/payment/create", {
|
||||
method: "POST",
|
||||
body: amount,
|
||||
credentials: "same-origin"
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(payment => {
|
||||
if(!payment || !payment.links) {
|
||||
throw "Error creating PayPal payment"
|
||||
}
|
||||
|
||||
console.log(payment)
|
||||
let link = payment.links.find(link => link.rel === "approval_url")
|
||||
|
||||
if(!link) {
|
||||
throw "Error finding PayPal payment link"
|
||||
}
|
||||
|
||||
arn.statusMessage.showInfo("Redirecting to PayPal...", 5000)
|
||||
|
||||
let url = link.href
|
||||
window.location.href = url
|
||||
})
|
||||
.catch(err => arn.statusMessage.showError(err))
|
||||
.then(() => arn.loading(false))
|
||||
}
|
||||
|
||||
// Buy item
|
||||
export function buyItem(arn: AnimeNotifier, button: HTMLElement) {
|
||||
let itemId = button.dataset.itemId
|
||||
let itemName = button.dataset.itemName
|
||||
let price = button.dataset.price
|
||||
|
||||
if(!confirm(`Would you like to buy ${itemName} for ${price} gems?`)) {
|
||||
return
|
||||
}
|
||||
|
||||
arn.loading(true)
|
||||
|
||||
fetch(`/api/shop/buy/${itemId}/1`, {
|
||||
method: "POST",
|
||||
credentials: "same-origin"
|
||||
})
|
||||
.then(response => response.text())
|
||||
.then(body => {
|
||||
if(body !== "ok") {
|
||||
throw body
|
||||
}
|
||||
|
||||
return arn.reloadContent()
|
||||
})
|
||||
.then(() => arn.statusMessage.showInfo(`You bought ${itemName} for ${price} gems. Check out your inventory to confirm the purchase.`, 4000))
|
||||
.catch(err => arn.statusMessage.showError(err))
|
||||
.then(() => arn.loading(false))
|
||||
}
|
Reference in New Issue
Block a user