130 lines
3.6 KiB
JavaScript
130 lines
3.6 KiB
JavaScript
window.app.component('lnbits-admin-fiat-providers', {
|
|
props: ['form-data'],
|
|
template: '#lnbits-admin-fiat-providers',
|
|
data() {
|
|
return {
|
|
formAddStripeUser: '',
|
|
formAddPaypalUser: '',
|
|
hideInputToggle: true
|
|
}
|
|
},
|
|
computed: {
|
|
stripeWebhookUrl() {
|
|
return (
|
|
this.formData?.stripe_payment_webhook_url ||
|
|
this.calculateWebhookUrl('stripe')
|
|
)
|
|
},
|
|
paypalWebhookUrl() {
|
|
return (
|
|
this.formData?.paypal_payment_webhook_url ||
|
|
this.calculateWebhookUrl('paypal')
|
|
)
|
|
}
|
|
},
|
|
watch: {
|
|
formData: {
|
|
handler() {
|
|
this.syncWebhookUrls()
|
|
},
|
|
immediate: true
|
|
}
|
|
},
|
|
methods: {
|
|
basePathFromLocation() {
|
|
if (typeof window === 'undefined') {
|
|
return ''
|
|
}
|
|
const normalizedPath = window.location.pathname.replace(/\/+$/, '')
|
|
const adminIndex = normalizedPath.lastIndexOf('/admin')
|
|
const basePath =
|
|
adminIndex >= 0
|
|
? normalizedPath.slice(0, adminIndex)
|
|
: normalizedPath || ''
|
|
return basePath || ''
|
|
},
|
|
calculateWebhookUrl(provider) {
|
|
if (typeof window === 'undefined') {
|
|
return ''
|
|
}
|
|
const basePath = this.basePathFromLocation()
|
|
const path = `${basePath}/api/v1/callback/${provider}`.replace(
|
|
/\/+/g,
|
|
'/'
|
|
)
|
|
const withLeadingSlash = path.startsWith('/') ? path : `/${path}`
|
|
return `${window.location.origin}${withLeadingSlash}`
|
|
},
|
|
syncWebhookUrls() {
|
|
this.maybeSetWebhookUrl('stripe_payment_webhook_url', 'stripe')
|
|
this.maybeSetWebhookUrl('paypal_payment_webhook_url', 'paypal')
|
|
},
|
|
maybeSetWebhookUrl(fieldName, provider) {
|
|
if (!this.formData) {
|
|
return
|
|
}
|
|
const calculated = this.calculateWebhookUrl(provider)
|
|
const current = this.formData[fieldName]
|
|
const hasPlaceholder =
|
|
!current || current.includes('your-lnbits-domain-here.com')
|
|
if (hasPlaceholder && calculated) {
|
|
this.formData[fieldName] = calculated
|
|
}
|
|
},
|
|
copyWebhookUrl(url) {
|
|
if (!url) {
|
|
return
|
|
}
|
|
this.copyText(url)
|
|
},
|
|
addStripeAllowedUser() {
|
|
const addUser = this.formAddStripeUser || ''
|
|
if (
|
|
addUser.length &&
|
|
!this.formData.stripe_limits.allowed_users.includes(addUser)
|
|
) {
|
|
this.formData.stripe_limits.allowed_users = [
|
|
...this.formData.stripe_limits.allowed_users,
|
|
addUser
|
|
]
|
|
this.formAddStripeUser = ''
|
|
}
|
|
},
|
|
removeStripeAllowedUser(user) {
|
|
this.formData.stripe_limits.allowed_users =
|
|
this.formData.stripe_limits.allowed_users.filter(u => u !== user)
|
|
},
|
|
addPaypalAllowedUser() {
|
|
const addUser = this.formAddPaypalUser || ''
|
|
if (
|
|
addUser.length &&
|
|
!this.formData.paypal_limits.allowed_users.includes(addUser)
|
|
) {
|
|
this.formData.paypal_limits.allowed_users = [
|
|
...this.formData.paypal_limits.allowed_users,
|
|
addUser
|
|
]
|
|
this.formAddPaypalUser = ''
|
|
}
|
|
},
|
|
removePaypalAllowedUser(user) {
|
|
this.formData.paypal_limits.allowed_users =
|
|
this.formData.paypal_limits.allowed_users.filter(u => u !== user)
|
|
},
|
|
checkFiatProvider(providerName) {
|
|
LNbits.api
|
|
.request('PUT', `/api/v1/fiat/check/${providerName}`)
|
|
.then(response => {
|
|
response
|
|
const data = response.data
|
|
Quasar.Notify.create({
|
|
type: data.success ? 'positive' : 'warning',
|
|
message: data.message,
|
|
icon: null
|
|
})
|
|
})
|
|
.catch(LNbits.utils.notifyApiError)
|
|
}
|
|
}
|
|
})
|