49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
import { useEffect } from 'react'
|
|
import { useWallet } from 'wallets'
|
|
|
|
export const name = 'webln'
|
|
|
|
export const fields = []
|
|
|
|
export const fieldValidation = ({ enabled }) => {
|
|
if (typeof window.webln === 'undefined') {
|
|
// don't prevent disabling WebLN if no WebLN provider found
|
|
if (enabled) {
|
|
return {
|
|
enabled: 'no WebLN provider found'
|
|
}
|
|
}
|
|
}
|
|
return {}
|
|
}
|
|
|
|
export const card = {
|
|
title: 'WebLN',
|
|
subtitle: 'use a [WebLN provider](https://www.webln.guide/ressources/webln-providers) for payments',
|
|
badges: ['send only']
|
|
}
|
|
|
|
export default function WebLnProvider ({ children }) {
|
|
const wallet = useWallet(name)
|
|
|
|
useEffect(() => {
|
|
const onEnable = () => {
|
|
wallet.enablePayments()
|
|
}
|
|
|
|
const onDisable = () => {
|
|
wallet.disablePayments()
|
|
}
|
|
|
|
window.addEventListener('webln:enabled', onEnable)
|
|
// event is not fired by Alby browser extension but added here for sake of completeness
|
|
window.addEventListener('webln:disabled', onDisable)
|
|
return () => {
|
|
window.removeEventListener('webln:enabled', onEnable)
|
|
window.removeEventListener('webln:disabled', onDisable)
|
|
}
|
|
}, [])
|
|
|
|
return children
|
|
}
|