chore: clean up javascript functions and var/let into const (#2791)

* chore: clean up javascript functions and var/let into const
This commit is contained in:
dni ⚡
2024-12-10 13:42:01 +01:00
committed by GitHub
parent d1cc317044
commit 8f290a647d
14 changed files with 226 additions and 281 deletions
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+15 -16
View File
@@ -1,7 +1,7 @@
window.app = Vue.createApp({ window.app = Vue.createApp({
el: '#vue', el: '#vue',
mixins: [window.windowMixin], mixins: [window.windowMixin],
data: function () { data() {
return { return {
user: null, user: null,
hasUsername: false, hasUsername: false,
@@ -25,21 +25,21 @@ window.app = Vue.createApp({
} }
}, },
methods: { methods: {
activeLanguage: function (lang) { activeLanguage(lang) {
return window.i18n.global.locale === lang return window.i18n.global.locale === lang
}, },
changeLanguage: function (newValue) { changeLanguage(newValue) {
window.i18n.global.locale = newValue window.i18n.global.locale = newValue
this.$q.localStorage.set('lnbits.lang', newValue) this.$q.localStorage.set('lnbits.lang', newValue)
}, },
toggleDarkMode: function () { toggleDarkMode() {
this.$q.dark.toggle() this.$q.dark.toggle()
this.$q.localStorage.set('lnbits.darkMode', this.$q.dark.isActive) this.$q.localStorage.set('lnbits.darkMode', this.$q.dark.isActive)
if (!this.$q.dark.isActive && this.gradientChoice) { if (!this.$q.dark.isActive && this.gradientChoice) {
this.toggleGradient() this.toggleGradient()
} }
}, },
applyGradient: function () { applyGradient() {
darkBgColor = this.$q.localStorage.getItem('lnbits.darkBgColor') darkBgColor = this.$q.localStorage.getItem('lnbits.darkBgColor')
primaryColor = this.$q.localStorage.getItem('lnbits.primaryColor') primaryColor = this.$q.localStorage.getItem('lnbits.primaryColor')
if (this.gradientChoice) { if (this.gradientChoice) {
@@ -64,8 +64,7 @@ window.app = Vue.createApp({
this.$q.localStorage.set('lnbits.gradientBg', false) this.$q.localStorage.set('lnbits.gradientBg', false)
} }
}, },
applyBorder: function () { applyBorder() {
slef = this
if (this.borderChoice) { if (this.borderChoice) {
this.$q.localStorage.setItem('lnbits.border', this.borderChoice) this.$q.localStorage.setItem('lnbits.border', this.borderChoice)
} }
@@ -85,7 +84,7 @@ window.app = Vue.createApp({
style.innerHTML = `body[data-theme="${this.$q.localStorage.getItem('lnbits.theme')}"] .q-card.q-card--dark, .q-date--dark { ${borderStyleCSS} }` style.innerHTML = `body[data-theme="${this.$q.localStorage.getItem('lnbits.theme')}"] .q-card.q-card--dark, .q-date--dark { ${borderStyleCSS} }`
document.head.appendChild(style) document.head.appendChild(style)
}, },
toggleGradient: function () { toggleGradient() {
this.gradientChoice = !this.gradientChoice this.gradientChoice = !this.gradientChoice
this.applyGradient() this.applyGradient()
if (!this.gradientChoice) { if (!this.gradientChoice) {
@@ -93,10 +92,10 @@ window.app = Vue.createApp({
} }
this.gradientChoice = this.$q.localStorage.getItem('lnbits.gradientBg') this.gradientChoice = this.$q.localStorage.getItem('lnbits.gradientBg')
}, },
reactionChoiceFunc: function () { reactionChoiceFunc() {
this.$q.localStorage.set('lnbits.reactions', this.reactionChoice) this.$q.localStorage.set('lnbits.reactions', this.reactionChoice)
}, },
changeColor: function (newValue) { changeColor(newValue) {
document.body.setAttribute('data-theme', newValue) document.body.setAttribute('data-theme', newValue)
this.$q.localStorage.set('lnbits.theme', newValue) this.$q.localStorage.set('lnbits.theme', newValue)
this.setColors() this.setColors()
@@ -104,7 +103,7 @@ window.app = Vue.createApp({
this.applyGradient() this.applyGradient()
} }
}, },
updateAccount: async function () { async updateAccount() {
try { try {
const {data} = await LNbits.api.request( const {data} = await LNbits.api.request(
'PUT', 'PUT',
@@ -127,7 +126,7 @@ window.app = Vue.createApp({
LNbits.utils.notifyApiError(e) LNbits.utils.notifyApiError(e)
} }
}, },
disableUpdatePassword: function () { disableUpdatePassword() {
return ( return (
!this.credentialsData.newPassword || !this.credentialsData.newPassword ||
!this.credentialsData.newPasswordRepeat || !this.credentialsData.newPasswordRepeat ||
@@ -135,7 +134,7 @@ window.app = Vue.createApp({
this.credentialsData.newPasswordRepeat this.credentialsData.newPasswordRepeat
) )
}, },
updatePassword: async function () { async updatePassword() {
if (!this.credentialsData.username) { if (!this.credentialsData.username) {
Quasar.Notify.create({ Quasar.Notify.create({
type: 'warning', type: 'warning',
@@ -167,7 +166,7 @@ window.app = Vue.createApp({
LNbits.utils.notifyApiError(e) LNbits.utils.notifyApiError(e)
} }
}, },
updatePubkey: async function () { async updatePubkey() {
try { try {
const {data} = await LNbits.api.request( const {data} = await LNbits.api.request(
'PUT', 'PUT',
@@ -189,7 +188,7 @@ window.app = Vue.createApp({
LNbits.utils.notifyApiError(e) LNbits.utils.notifyApiError(e)
} }
}, },
showUpdateCredentials: function () { showUpdateCredentials() {
this.credentialsData = { this.credentialsData = {
show: true, show: true,
oldPassword: null, oldPassword: null,
@@ -200,7 +199,7 @@ window.app = Vue.createApp({
} }
} }
}, },
created: async function () { async created() {
try { try {
const {data} = await LNbits.api.getAuthenticatedUser() const {data} = await LNbits.api.getAuthenticatedUser()
this.user = data this.user = data
+7 -17
View File
@@ -1,7 +1,7 @@
window.app = Vue.createApp({ window.app = Vue.createApp({
el: '#vue', el: '#vue',
mixins: [windowMixin], mixins: [windowMixin],
data: function () { data() {
return { return {
settings: {}, settings: {},
logs: [], logs: [],
@@ -258,9 +258,7 @@ window.app = Vue.createApp({
}) })
this.needsRestart = false this.needsRestart = false
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
formatDate(date) { formatDate(date) {
return moment(date * 1000).fromNow() return moment(date * 1000).fromNow()
@@ -286,9 +284,7 @@ window.app = Vue.createApp({
.then(response => { .then(response => {
this.auditData = response.data this.auditData = response.data
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
getSettings() { getSettings() {
LNbits.api LNbits.api
@@ -303,12 +299,10 @@ window.app = Vue.createApp({
this.formData = {...this.settings} this.formData = {...this.settings}
this.getNotifications() this.getNotifications()
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
updateSettings() { updateSettings() {
let data = _.omit(this.formData, [ const data = _.omit(this.formData, [
'is_super_user', 'is_super_user',
'lnbits_allowed_funding_sources' 'lnbits_allowed_funding_sources'
]) ])
@@ -334,9 +328,7 @@ window.app = Vue.createApp({
icon: null icon: null
}) })
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
deleteSettings() { deleteSettings() {
LNbits.utils LNbits.utils
@@ -353,9 +345,7 @@ window.app = Vue.createApp({
}) })
this.needsRestart = true this.needsRestart = true
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}) })
}, },
downloadBackup() { downloadBackup() {
+1 -1
View File
@@ -1,7 +1,7 @@
window.app = Vue.createApp({ window.app = Vue.createApp({
el: '#vue', el: '#vue',
mixins: [window.windowMixin], mixins: [window.windowMixin],
data: function () { data() {
return { return {
auditEntries: [], auditEntries: [],
searchData: { searchData: {
+59 -59
View File
@@ -8,7 +8,7 @@ window.i18n = new VueI18n.createI18n({
window.LNbits = { window.LNbits = {
api: { api: {
request: function (method, url, apiKey, data) { request(method, url, apiKey, data) {
return axios({ return axios({
method: method, method: method,
url: url, url: url,
@@ -18,10 +18,10 @@ window.LNbits = {
data: data data: data
}) })
}, },
getServerHealth: function () { getServerHealth() {
return this.request('get', '/api/v1/health') return this.request('get', '/api/v1/health')
}, },
createInvoice: async function ( async createInvoice(
wallet, wallet,
amount, amount,
memo, memo,
@@ -36,13 +36,13 @@ window.LNbits = {
unit: unit unit: unit
}) })
}, },
payInvoice: function (wallet, bolt11) { payInvoice(wallet, bolt11) {
return this.request('post', '/api/v1/payments', wallet.adminkey, { return this.request('post', '/api/v1/payments', wallet.adminkey, {
out: true, out: true,
bolt11: bolt11 bolt11: bolt11
}) })
}, },
payLnurl: function ( payLnurl(
wallet, wallet,
callback, callback,
description_hash, description_hash,
@@ -60,17 +60,17 @@ window.LNbits = {
unit unit
}) })
}, },
authLnurl: function (wallet, callback) { authLnurl(wallet, callback) {
return this.request('post', '/api/v1/lnurlauth', wallet.adminkey, { return this.request('post', '/api/v1/lnurlauth', wallet.adminkey, {
callback callback
}) })
}, },
createAccount: function (name) { createAccount(name) {
return this.request('post', '/api/v1/account', null, { return this.request('post', '/api/v1/account', null, {
name: name name: name
}) })
}, },
register: function (username, email, password, password_repeat) { register(username, email, password, password_repeat) {
return axios({ return axios({
method: 'POST', method: 'POST',
url: '/api/v1/auth/register', url: '/api/v1/auth/register',
@@ -82,7 +82,7 @@ window.LNbits = {
} }
}) })
}, },
reset: function (reset_key, password, password_repeat) { reset(reset_key, password, password_repeat) {
return axios({ return axios({
method: 'PUT', method: 'PUT',
url: '/api/v1/auth/reset', url: '/api/v1/auth/reset',
@@ -93,14 +93,14 @@ window.LNbits = {
} }
}) })
}, },
login: function (username, password) { login(username, password) {
return axios({ return axios({
method: 'POST', method: 'POST',
url: '/api/v1/auth', url: '/api/v1/auth',
data: {username, password} data: {username, password}
}) })
}, },
loginByProvider: function (provider, headers, data) { loginByProvider(provider, headers, data) {
return axios({ return axios({
method: 'POST', method: 'POST',
url: `/api/v1/auth/${provider}`, url: `/api/v1/auth/${provider}`,
@@ -108,38 +108,38 @@ window.LNbits = {
data data
}) })
}, },
loginUsr: function (usr) { loginUsr(usr) {
return axios({ return axios({
method: 'POST', method: 'POST',
url: '/api/v1/auth/usr', url: '/api/v1/auth/usr',
data: {usr} data: {usr}
}) })
}, },
logout: function () { logout() {
return axios({ return axios({
method: 'POST', method: 'POST',
url: '/api/v1/auth/logout' url: '/api/v1/auth/logout'
}) })
}, },
getAuthenticatedUser: function () { getAuthenticatedUser() {
return this.request('get', '/api/v1/auth') return this.request('get', '/api/v1/auth')
}, },
getWallet: function (wallet) { getWallet(wallet) {
return this.request('get', '/api/v1/wallet', wallet.inkey) return this.request('get', '/api/v1/wallet', wallet.inkey)
}, },
createWallet: function (wallet, name) { createWallet(wallet, name) {
return this.request('post', '/api/v1/wallet', wallet.adminkey, { return this.request('post', '/api/v1/wallet', wallet.adminkey, {
name: name name: name
}).then(res => { }).then(res => {
window.location = '/wallet?wal=' + res.data.id window.location = '/wallet?wal=' + res.data.id
}) })
}, },
updateWallet: function (name, wallet) { updateWallet(name, wallet) {
return this.request('patch', '/api/v1/wallet', wallet.adminkey, { return this.request('patch', '/api/v1/wallet', wallet.adminkey, {
name: name name: name
}) })
}, },
deleteWallet: function (wallet) { deleteWallet(wallet) {
return this.request('delete', '/api/v1/wallet', wallet.adminkey).then( return this.request('delete', '/api/v1/wallet', wallet.adminkey).then(
_ => { _ => {
let url = new URL(window.location.href) let url = new URL(window.location.href)
@@ -148,21 +148,21 @@ window.LNbits = {
} }
) )
}, },
getPayments: function (wallet, params) { getPayments(wallet, params) {
return this.request( return this.request(
'get', 'get',
'/api/v1/payments/paginated?' + params, '/api/v1/payments/paginated?' + params,
wallet.inkey wallet.inkey
) )
}, },
getPayment: function (wallet, paymentHash) { getPayment(wallet, paymentHash) {
return this.request( return this.request(
'get', 'get',
'/api/v1/payments/' + paymentHash, '/api/v1/payments/' + paymentHash,
wallet.inkey wallet.inkey
) )
}, },
updateBalance: function (credit, wallet_id) { updateBalance(credit, wallet_id) {
return this.request('PUT', '/users/api/v1/topup', null, { return this.request('PUT', '/users/api/v1/topup', null, {
amount: credit, amount: credit,
id: wallet_id id: wallet_id
@@ -175,7 +175,7 @@ window.LNbits = {
} }
}, },
events: { events: {
onInvoicePaid: function (wallet, cb) { onInvoicePaid(wallet, cb) {
let listener = ev => { let listener = ev => {
cb(JSON.parse(ev.data)) cb(JSON.parse(ev.data))
} }
@@ -209,12 +209,12 @@ window.LNbits = {
} }
}, },
map: { map: {
extension: function (data) { extension(data) {
const obj = {...data} const obj = {...data}
obj.url = ['/', obj.code, '/'].join('') obj.url = ['/', obj.code, '/'].join('')
return obj return obj
}, },
user: function (data) { user(data) {
const obj = { const obj = {
id: data.id, id: data.id,
admin: data.admin, admin: data.admin,
@@ -225,13 +225,13 @@ window.LNbits = {
} }
const mapWallet = this.wallet const mapWallet = this.wallet
obj.wallets = obj.wallets obj.wallets = obj.wallets
.map(function (obj) { .map(obj => {
return mapWallet(obj) return mapWallet(obj)
}) })
.sort(function (a, b) { .sort((a, b) => {
return a.name.localeCompare(b.name) return a.name.localeCompare(b.name)
}) })
obj.walletOptions = obj.wallets.map(function (obj) { obj.walletOptions = obj.wallets.map(obj => {
return { return {
label: [obj.name, ' - ', obj.id].join(''), label: [obj.name, ' - ', obj.id].join(''),
value: obj.id value: obj.id
@@ -239,7 +239,7 @@ window.LNbits = {
}) })
return obj return obj
}, },
wallet: function (data) { wallet(data) {
newWallet = { newWallet = {
id: data.id, id: data.id,
name: data.name, name: data.name,
@@ -255,7 +255,7 @@ window.LNbits = {
newWallet.url = `/wallet?&wal=${data.id}` newWallet.url = `/wallet?&wal=${data.id}`
return newWallet return newWallet
}, },
payment: function (data) { payment(data) {
obj = { obj = {
checking_id: data.checking_id, checking_id: data.checking_id,
status: data.status, status: data.status,
@@ -301,7 +301,7 @@ window.LNbits = {
} }
}, },
utils: { utils: {
confirmDialog: function (msg) { confirmDialog(msg) {
return Quasar.Dialog.create({ return Quasar.Dialog.create({
message: msg, message: msg,
ok: { ok: {
@@ -314,7 +314,7 @@ window.LNbits = {
} }
}) })
}, },
digestMessage: async function (message) { async digestMessage(message) {
const msgUint8 = new TextEncoder().encode(message) const msgUint8 = new TextEncoder().encode(message)
const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8) const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8)
const hashArray = Array.from(new Uint8Array(hashBuffer)) const hashArray = Array.from(new Uint8Array(hashBuffer))
@@ -332,19 +332,19 @@ window.LNbits = {
formatDateString(isoDateString) { formatDateString(isoDateString) {
return Quasar.date.formatDate(new Date(isoDateString), window.dateFormat) return Quasar.date.formatDate(new Date(isoDateString), window.dateFormat)
}, },
formatCurrency: function (value, currency) { formatCurrency(value, currency) {
return new Intl.NumberFormat(window.LOCALE, { return new Intl.NumberFormat(window.LOCALE, {
style: 'currency', style: 'currency',
currency: currency currency: currency
}).format(value) }).format(value)
}, },
formatSat: function (value) { formatSat(value) {
return new Intl.NumberFormat(window.LOCALE).format(value) return new Intl.NumberFormat(window.LOCALE).format(value)
}, },
formatMsat: function (value) { formatMsat(value) {
return this.formatSat(value / 1000) return this.formatSat(value / 1000)
}, },
notifyApiError: function (error) { notifyApiError(error) {
if (!error.response) { if (!error.response) {
return console.error(error) return console.error(error)
} }
@@ -365,12 +365,12 @@ window.LNbits = {
icon: null icon: null
}) })
}, },
search: function (data, q, field, separator) { search(data, q, field, separator) {
try { try {
const queries = q.toLowerCase().split(separator || ' ') const queries = q.toLowerCase().split(separator || ' ')
return data.filter(function (obj) { return data.filter(obj => {
let matches = 0 let matches = 0
_.each(queries, function (q) { _.each(queries, q => {
if (obj[field].indexOf(q) !== -1) matches++ if (obj[field].indexOf(q) !== -1) matches++
}) })
return matches === queries.length return matches === queries.length
@@ -384,7 +384,7 @@ window.LNbits = {
tableConfig.pagination = props.pagination tableConfig.pagination = props.pagination
tableConfig.filter = props.filter tableConfig.filter = props.filter
} }
let pagination = tableConfig.pagination const pagination = tableConfig.pagination
tableConfig.loading = true tableConfig.loading = true
const query = { const query = {
limit: pagination.rowsPerPage, limit: pagination.rowsPerPage,
@@ -398,8 +398,8 @@ window.LNbits = {
} }
return new URLSearchParams(query) return new URLSearchParams(query)
}, },
exportCSV: function (columns, data, fileName) { exportCSV(columns, data, fileName) {
const wrapCsvValue = function (val, formatFn) { const wrapCsvValue = (val, formatFn) => {
let formatted = formatFn !== void 0 ? formatFn(val) : val let formatted = formatFn !== void 0 ? formatFn(val) : val
formatted = formatted =
@@ -411,14 +411,14 @@ window.LNbits = {
} }
const content = [ const content = [
columns.map(function (col) { columns.map(col => {
return wrapCsvValue(col.label) return wrapCsvValue(col.label)
}) })
] ]
.concat( .concat(
data.map(function (row) { data.map(row => {
return columns return columns
.map(function (col) { .map(col => {
return wrapCsvValue( return wrapCsvValue(
typeof col.field === 'function' typeof col.field === 'function'
? col.field(row) ? col.field(row)
@@ -451,16 +451,16 @@ window.LNbits = {
converter.setOption('simpleLineBreaks', true) converter.setOption('simpleLineBreaks', true)
return converter.makeHtml(text) return converter.makeHtml(text)
}, },
hexToRgb: function (hex) { hexToRgb(hex) {
return Quasar.colors.hexToRgb(hex) return Quasar.colors.hexToRgb(hex)
}, },
hexDarken: function (hex, percent) { hexDarken(hex, percent) {
return Quasar.colors.lighten(hex, percent) return Quasar.colors.lighten(hex, percent)
}, },
hexAlpha: function (hex, alpha) { hexAlpha(hex, alpha) {
return Quasar.colors.changeAlpha(hex, alpha) return Quasar.colors.changeAlpha(hex, alpha)
}, },
getPaletteColor: function (color) { getPaletteColor(color) {
return Quasar.colors.getPaletteColor(color) return Quasar.colors.getPaletteColor(color)
} }
} }
@@ -468,7 +468,7 @@ window.LNbits = {
window.windowMixin = { window.windowMixin = {
i18n: window.i18n, i18n: window.i18n,
data: function () { data() {
return { return {
toggleSubs: true, toggleSubs: true,
reactionChoice: 'confettiBothSides', reactionChoice: 'confettiBothSides',
@@ -490,11 +490,11 @@ window.windowMixin = {
}, },
methods: { methods: {
changeColor: function (newValue) { changeColor(newValue) {
document.body.setAttribute('data-theme', newValue) document.body.setAttribute('data-theme', newValue)
this.$q.localStorage.set('lnbits.theme', newValue) this.$q.localStorage.set('lnbits.theme', newValue)
}, },
applyGradient: function () { applyGradient() {
if (this.$q.localStorage.getItem('lnbits.gradientBg')) { if (this.$q.localStorage.getItem('lnbits.gradientBg')) {
this.setColors() this.setColors()
darkBgColor = this.$q.localStorage.getItem('lnbits.darkBgColor') darkBgColor = this.$q.localStorage.getItem('lnbits.darkBgColor')
@@ -514,7 +514,7 @@ window.windowMixin = {
document.head.appendChild(style) document.head.appendChild(style)
} }
}, },
applyBorder: function () { applyBorder() {
if (this.borderChoice) { if (this.borderChoice) {
this.$q.localStorage.setItem('lnbits.border', this.borderChoice) this.$q.localStorage.setItem('lnbits.border', this.borderChoice)
} }
@@ -538,7 +538,7 @@ window.windowMixin = {
style.innerHTML = `body[data-theme="${this.$q.localStorage.getItem('lnbits.theme')}"] .q-card.q-card--dark, .q-date--dark { ${borderStyleCSS} }` style.innerHTML = `body[data-theme="${this.$q.localStorage.getItem('lnbits.theme')}"] .q-card.q-card--dark, .q-date--dark { ${borderStyleCSS} }`
document.head.appendChild(style) document.head.appendChild(style)
}, },
setColors: function () { setColors() {
this.$q.localStorage.set( this.$q.localStorage.set(
'lnbits.primaryColor', 'lnbits.primaryColor',
LNbits.utils.getPaletteColor('primary') LNbits.utils.getPaletteColor('primary')
@@ -552,15 +552,15 @@ window.windowMixin = {
LNbits.utils.getPaletteColor('dark') LNbits.utils.getPaletteColor('dark')
) )
}, },
copyText: function (text, message, position) { copyText(text, message, position) {
Quasar.copyToClipboard(text).then(function () { Quasar.copyToClipboard(text).then(() => {
Quasar.Notify.create({ Quasar.Notify.create({
message: message || 'Copied to clipboard!', message: message || 'Copied to clipboard!',
position: position || 'bottom' position: position || 'bottom'
}) })
}) })
}, },
checkUsrInUrl: async function () { async checkUsrInUrl() {
try { try {
const params = new URLSearchParams(window.location.search) const params = new URLSearchParams(window.location.search)
const usr = params.get('usr') const usr = params.get('usr')
@@ -586,7 +586,7 @@ window.windowMixin = {
) )
} }
}, },
logout: async function () { async logout() {
LNbits.utils LNbits.utils
.confirmDialog( .confirmDialog(
'Do you really want to logout?' + 'Do you really want to logout?' +
@@ -652,7 +652,7 @@ window.windowMixin = {
this.setColors() this.setColors()
} }
}, },
created: async function () { async created() {
if ( if (
this.$q.localStorage.getItem('lnbits.darkMode') == true || this.$q.localStorage.getItem('lnbits.darkMode') == true ||
this.$q.localStorage.getItem('lnbits.darkMode') == false this.$q.localStorage.getItem('lnbits.darkMode') == false
@@ -721,7 +721,7 @@ window.windowMixin = {
} }
} }
window.decryptLnurlPayAES = function (success_action, preimage) { window.decryptLnurlPayAES = (success_action, preimage) => {
let keyb = new Uint8Array( let keyb = new Uint8Array(
preimage.match(/[\da-f]{2}/gi).map(h => parseInt(h, 16)) preimage.match(/[\da-f]{2}/gi).map(h => parseInt(h, 16))
) )
+45 -65
View File
@@ -15,7 +15,7 @@ window.app.component('lnbits-fsat', {
} }
}, },
computed: { computed: {
fsat: function () { fsat() {
return LNbits.utils.formatSat(this.amount) return LNbits.utils.formatSat(this.amount)
} }
} }
@@ -24,7 +24,7 @@ window.app.component('lnbits-fsat', {
window.app.component('lnbits-wallet-list', { window.app.component('lnbits-wallet-list', {
template: '#lnbits-wallet-list', template: '#lnbits-wallet-list',
props: ['balance'], props: ['balance'],
data: function () { data() {
return { return {
user: null, user: null,
activeWallet: null, activeWallet: null,
@@ -35,9 +35,9 @@ window.app.component('lnbits-wallet-list', {
} }
}, },
computed: { computed: {
wallets: function () { wallets() {
var bal = this.balance const bal = this.balance
return this.user.wallets.map(function (obj) { return this.user.wallets.map(obj => {
obj.live_fsat = obj.live_fsat =
bal.length && bal[0] === obj.id bal.length && bal[0] === obj.id
? LNbits.utils.formatSat(bal[1]) ? LNbits.utils.formatSat(bal[1])
@@ -47,11 +47,11 @@ window.app.component('lnbits-wallet-list', {
} }
}, },
methods: { methods: {
createWallet: function () { createWallet() {
LNbits.api.createWallet(this.user.wallets[0], this.walletName) LNbits.api.createWallet(this.user.wallets[0], this.walletName)
} }
}, },
created: function () { created() {
if (window.user) { if (window.user) {
this.user = LNbits.map.user(window.user) this.user = LNbits.map.user(window.user)
} }
@@ -64,7 +64,7 @@ window.app.component('lnbits-wallet-list', {
window.app.component('lnbits-extension-list', { window.app.component('lnbits-extension-list', {
template: '#lnbits-extension-list', template: '#lnbits-extension-list',
data: function () { data() {
return { return {
extensions: [], extensions: [],
user: null, user: null,
@@ -78,17 +78,17 @@ window.app.component('lnbits-extension-list', {
} }
}, },
methods: { methods: {
updateUserExtensions: function (filterBy) { updateUserExtensions(filterBy) {
if (!this.user) return [] if (!this.user) return []
const path = window.location.pathname const path = window.location.pathname
const userExtensions = this.user.extensions const userExtensions = this.user.extensions
return this.extensions return this.extensions
.filter(function (o) { .filter(o => {
return userExtensions.indexOf(o.code) !== -1 return userExtensions.indexOf(o.code) !== -1
}) })
.filter(function (o) { .filter(o => {
if (!filterBy) return true if (!filterBy) return true
return ( return (
`${o.code} ${o.name} ${o.short_description} ${o.url}` `${o.code} ${o.name} ${o.short_description} ${o.url}`
@@ -96,13 +96,13 @@ window.app.component('lnbits-extension-list', {
.indexOf(filterBy.toLocaleLowerCase()) !== -1 .indexOf(filterBy.toLocaleLowerCase()) !== -1
) )
}) })
.map(function (obj) { .map(obj => {
obj.isActive = path.startsWith(obj.url) obj.isActive = path.startsWith(obj.url)
return obj return obj
}) })
} }
}, },
created: async function () { async created() {
if (window.user) { if (window.user) {
this.user = LNbits.map.user(window.user) this.user = LNbits.map.user(window.user)
} }
@@ -110,10 +110,10 @@ window.app.component('lnbits-extension-list', {
try { try {
const {data} = await LNbits.api.request('GET', '/api/v1/extension') const {data} = await LNbits.api.request('GET', '/api/v1/extension')
this.extensions = data this.extensions = data
.map(function (data) { .map(data => {
return LNbits.map.extension(data) return LNbits.map.extension(data)
}) })
.sort(function (a, b) { .sort((a, b) => {
return a.name.localeCompare(b.name) return a.name.localeCompare(b.name)
}) })
this.userExtensions = this.updateUserExtensions() this.userExtensions = this.updateUserExtensions()
@@ -127,7 +127,7 @@ window.app.component('lnbits-manage', {
template: '#lnbits-manage', template: '#lnbits-manage',
props: ['showAdmin', 'showNode', 'showExtensions', 'showUsers', 'showAudit'], props: ['showAdmin', 'showNode', 'showExtensions', 'showUsers', 'showAudit'],
methods: { methods: {
isActive: function (path) { isActive(path) {
return window.location.pathname === path return window.location.pathname === path
} }
}, },
@@ -148,7 +148,7 @@ window.app.component('lnbits-payment-details', {
template: '#lnbits-payment-details', template: '#lnbits-payment-details',
props: ['payment'], props: ['payment'],
mixins: [window.windowMixin], mixins: [window.windowMixin],
data: function () { data() {
return { return {
LNBITS_DENOMINATION: LNBITS_DENOMINATION LNBITS_DENOMINATION: LNBITS_DENOMINATION
} }
@@ -203,7 +203,7 @@ window.app.component('lnbits-lnurlpay-success-action', {
decryptedValue: this.success_action.ciphertext decryptedValue: this.success_action.ciphertext
} }
}, },
mounted: function () { mounted() {
if (this.success_action.tag !== 'aes') return null if (this.success_action.tag !== 'aes') return null
decryptLnurlPayAES(this.success_action, this.payment.preimage).then( decryptLnurlPayAES(this.success_action, this.payment.preimage).then(
value => { value => {
@@ -302,8 +302,6 @@ window.app.component('lnbits-notifications-btn', {
return subscribedUsers.includes(user) return subscribedUsers.includes(user)
}, },
subscribe() { subscribe() {
var self = this
// catch clicks from disabled type='a' button (https://github.com/quasarframework/quasar/issues/9258) // catch clicks from disabled type='a' button (https://github.com/quasarframework/quasar/issues/9258)
if (!this.isSupported || this.isPermissionDenied) { if (!this.isSupported || this.isPermissionDenied) {
return return
@@ -315,56 +313,48 @@ window.app.component('lnbits-notifications-btn', {
this.isPermissionGranted = permission === 'granted' this.isPermissionGranted = permission === 'granted'
this.isPermissionDenied = permission === 'denied' this.isPermissionDenied = permission === 'denied'
}) })
.catch(function (e) { .catch(console.log)
console.log(e)
})
// create push subscription // create push subscription
navigator.serviceWorker.ready.then(registration => { navigator.serviceWorker.ready.then(registration => {
navigator.serviceWorker.getRegistration().then(registration => { navigator.serviceWorker.getRegistration().then(registration => {
registration.pushManager registration.pushManager
.getSubscription() .getSubscription()
.then(function (subscription) { .then(subscription => {
if ( if (
subscription === null || subscription === null ||
!self.isUserSubscribed(self.g.user.id) !this.isUserSubscribed(this.g.user.id)
) { ) {
const applicationServerKey = self.urlB64ToUint8Array( const applicationServerKey = this.urlB64ToUint8Array(
self.pubkey this.pubkey
) )
const options = {applicationServerKey, userVisibleOnly: true} const options = {applicationServerKey, userVisibleOnly: true}
registration.pushManager registration.pushManager
.subscribe(options) .subscribe(options)
.then(function (subscription) { .then(subscription => {
LNbits.api LNbits.api
.request( .request(
'POST', 'POST',
'/api/v1/webpush', '/api/v1/webpush',
self.g.user.wallets[0].adminkey, this.g.user.wallets[0].adminkey,
{ {
subscription: JSON.stringify(subscription) subscription: JSON.stringify(subscription)
} }
) )
.then(function (response) { .then(response => {
self.saveUserSubscribed(response.data.user) this.saveUserSubscribed(response.data.user)
self.isSubscribed = true this.isSubscribed = true
})
.catch(function (error) {
LNbits.utils.notifyApiError(error)
}) })
.catch(LNbits.utils.notifyApiError)
}) })
} }
}) })
.catch(function (e) { .catch(console.log)
console.log(e)
})
}) })
}) })
}, },
unsubscribe() { unsubscribe() {
var self = this
navigator.serviceWorker.ready navigator.serviceWorker.ready
.then(registration => { .then(registration => {
registration.pushManager.getSubscription().then(subscription => { registration.pushManager.getSubscription().then(subscription => {
@@ -373,23 +363,19 @@ window.app.component('lnbits-notifications-btn', {
.request( .request(
'DELETE', 'DELETE',
'/api/v1/webpush?endpoint=' + btoa(subscription.endpoint), '/api/v1/webpush?endpoint=' + btoa(subscription.endpoint),
self.g.user.wallets[0].adminkey this.g.user.wallets[0].adminkey
) )
.then(function () { .then(() => {
self.removeUserSubscribed(self.g.user.id) this.removeUserSubscribed(this.g.user.id)
self.isSubscribed = false this.isSubscribed = false
})
.catch(function (error) {
LNbits.utils.notifyApiError(error)
}) })
.catch(LNbits.utils.notifyApiError)
} }
}) })
}) })
.catch(function (e) { .catch(console.log)
console.log(e)
})
}, },
checkSupported: function () { checkSupported() {
let https = window.location.protocol === 'https:' let https = window.location.protocol === 'https:'
let serviceWorkerApi = 'serviceWorker' in navigator let serviceWorkerApi = 'serviceWorker' in navigator
let notificationApi = 'Notification' in window let notificationApi = 'Notification' in window
@@ -411,22 +397,18 @@ window.app.component('lnbits-notifications-btn', {
return this.isSupported return this.isSupported
}, },
updateSubscriptionStatus: async function () { async updateSubscriptionStatus() {
var self = this
await navigator.serviceWorker.ready await navigator.serviceWorker.ready
.then(registration => { .then(registration => {
registration.pushManager.getSubscription().then(subscription => { registration.pushManager.getSubscription().then(subscription => {
self.isSubscribed = this.isSubscribed =
!!subscription && self.isUserSubscribed(self.g.user.id) !!subscription && this.isUserSubscribed(this.g.user.id)
}) })
}) })
.catch(function (e) { .catch(console.log)
console.log(e)
})
} }
}, },
created: function () { created() {
this.isPermissionDenied = Notification.permission === 'denied' this.isPermissionDenied = Notification.permission === 'denied'
if (this.checkSupported()) { if (this.checkSupported()) {
@@ -511,13 +493,13 @@ window.app.component('lnbits-update-balance', {
return user.super_user return user.super_user
} }
}, },
data: function () { data() {
return { return {
credit: 0 credit: 0
} }
}, },
methods: { methods: {
updateBalance: function (credit) { updateBalance(credit) {
LNbits.api LNbits.api
.updateBalance(credit, this.wallet_id) .updateBalance(credit, this.wallet_id)
.then(res => { .then(res => {
@@ -541,9 +523,7 @@ window.app.component('lnbits-update-balance', {
}) })
return credit return credit
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
} }
} }
}) })
@@ -22,7 +22,7 @@ window.app.component('lnbits-extension-settings-form', {
LNbits.utils.notifyApiError(error) LNbits.utils.notifyApiError(error)
} }
}, },
getSettings: async function () { async getSettings() {
try { try {
const {data} = await LNbits.api.request( const {data} = await LNbits.api.request(
'GET', 'GET',
@@ -34,7 +34,7 @@ window.app.component('lnbits-extension-settings-form', {
LNbits.utils.notifyApiError(error) LNbits.utils.notifyApiError(error)
} }
}, },
resetSettings: async function () { async resetSettings() {
LNbits.utils LNbits.utils
.confirmDialog('Are you sure you want to reset the settings?') .confirmDialog('Are you sure you want to reset the settings?')
.onOk(async () => { .onOk(async () => {
@@ -47,10 +47,10 @@ window.app.component('lnbits-extension-settings-form', {
}) })
} }
}, },
created: async function () { async created() {
await this.getSettings() await this.getSettings()
}, },
data: function () { data() {
return { return {
settings: undefined settings: undefined
} }
@@ -61,7 +61,7 @@ window.app.component('lnbits-extension-settings-btn-dialog', {
template: '#lnbits-extension-settings-btn-dialog', template: '#lnbits-extension-settings-btn-dialog',
name: 'lnbits-extension-settings-btn-dialog', name: 'lnbits-extension-settings-btn-dialog',
props: ['options', 'adminkey', 'endpoint'], props: ['options', 'adminkey', 'endpoint'],
data: function () { data() {
return { return {
show: false show: false
} }
+2 -2
View File
@@ -85,7 +85,7 @@ window.app.component('payment-chart', {
name: 'payment-chart', name: 'payment-chart',
props: ['wallet'], props: ['wallet'],
mixins: [window.windowMixin], mixins: [window.windowMixin],
data: function () { data() {
return { return {
paymentsChart: { paymentsChart: {
show: false, show: false,
@@ -105,7 +105,7 @@ window.app.component('payment-chart', {
} }
}, },
methods: { methods: {
showChart: function () { showChart() {
this.paymentsChart.show = true this.paymentsChart.show = true
LNbits.api LNbits.api
.request( .request(
+12 -12
View File
@@ -3,7 +3,7 @@ window.app.component('payment-list', {
template: '#payment-list', template: '#payment-list',
props: ['update', 'wallet', 'mobileSimple', 'lazy'], props: ['update', 'wallet', 'mobileSimple', 'lazy'],
mixins: [window.windowMixin], mixins: [window.windowMixin],
data: function () { data() {
return { return {
denomination: LNBITS_DENOMINATION, denomination: LNBITS_DENOMINATION,
failedPaymentsToggle: false, failedPaymentsToggle: false,
@@ -116,8 +116,8 @@ window.app.component('payment-list', {
} }
}, },
computed: { computed: {
filteredPayments: function () { filteredPayments() {
var q = this.paymentsTable.search const q = this.paymentsTable.search
if (!q || q === '') return this.payments if (!q || q === '') return this.payments
return LNbits.utils.search(this.payments, q) return LNbits.utils.search(this.payments, q)
@@ -128,12 +128,12 @@ window.app.component('payment-list', {
} }
return this.payments return this.payments
}, },
pendingPaymentsExist: function () { pendingPaymentsExist() {
return this.payments.findIndex(payment => payment.pending) !== -1 return this.payments.findIndex(payment => payment.pending) !== -1
} }
}, },
methods: { methods: {
fetchPayments: function (props) { fetchPayments(props) {
const params = LNbits.utils.prepareFilterQuery(this.paymentsTable, props) const params = LNbits.utils.prepareFilterQuery(this.paymentsTable, props)
return LNbits.api return LNbits.api
.getPayments(this.wallet, params) .getPayments(this.wallet, params)
@@ -149,7 +149,7 @@ window.app.component('payment-list', {
LNbits.utils.notifyApiError(err) LNbits.utils.notifyApiError(err)
}) })
}, },
paymentTableRowKey: function (row) { paymentTableRowKey(row) {
return row.payment_hash + row.amount return row.payment_hash + row.amount
}, },
exportCSV(detailed = false) { exportCSV(detailed = false) {
@@ -194,7 +194,7 @@ window.app.component('payment-list', {
) )
}) })
}, },
addFilterTag: function () { addFilterTag() {
if (!this.exportTagName) return if (!this.exportTagName) return
const value = this.exportTagName.trim() const value = this.exportTagName.trim()
this.exportPaymentTagList = this.exportPaymentTagList.filter( this.exportPaymentTagList = this.exportPaymentTagList.filter(
@@ -203,12 +203,12 @@ window.app.component('payment-list', {
this.exportPaymentTagList.push(value) this.exportPaymentTagList.push(value)
this.exportTagName = '' this.exportTagName = ''
}, },
removeExportTag: function (value) { removeExportTag(value) {
this.exportPaymentTagList = this.exportPaymentTagList.filter( this.exportPaymentTagList = this.exportPaymentTagList.filter(
v => v !== value v => v !== value
) )
}, },
formatCurrency: function (amount, currency) { formatCurrency(amount, currency) {
try { try {
return LNbits.utils.formatCurrency(amount, currency) return LNbits.utils.formatCurrency(amount, currency)
} catch (e) { } catch (e) {
@@ -228,14 +228,14 @@ window.app.component('payment-list', {
} }
this.fetchPayments() this.fetchPayments()
}, },
lazy: function (newVal) { lazy(newVal) {
if (newVal === true) this.fetchPayments() if (newVal === true) this.fetchPayments()
}, },
update: function () { update() {
this.fetchPayments() this.fetchPayments()
} }
}, },
created: function () { created() {
if (this.lazy === undefined) this.fetchPayments() if (this.lazy === undefined) this.fetchPayments()
} }
}) })
+12 -12
View File
@@ -1,7 +1,7 @@
window.app = Vue.createApp({ window.app = Vue.createApp({
el: '#vue', el: '#vue',
mixins: [window.windowMixin], mixins: [window.windowMixin],
data: function () { data() {
return { return {
disclaimerDialog: { disclaimerDialog: {
show: false, show: false,
@@ -30,11 +30,11 @@ window.app = Vue.createApp({
} }
}, },
methods: { methods: {
showLogin: function (authMethod) { showLogin(authMethod) {
this.authAction = 'login' this.authAction = 'login'
this.authMethod = authMethod this.authMethod = authMethod
}, },
showRegister: function (authMethod) { showRegister(authMethod) {
this.user = '' this.user = ''
this.username = null this.username = null
this.password = null this.password = null
@@ -43,7 +43,7 @@ window.app = Vue.createApp({
this.authAction = 'register' this.authAction = 'register'
this.authMethod = authMethod this.authMethod = authMethod
}, },
signInWithNostr: async function () { async signInWithNostr() {
try { try {
const nostrToken = await this.createNostrToken() const nostrToken = await this.createNostrToken()
if (!nostrToken) { if (!nostrToken) {
@@ -65,7 +65,7 @@ window.app = Vue.createApp({
}) })
} }
}, },
createNostrToken: async function () { async createNostrToken() {
try { try {
async function _signEvent(e) { async function _signEvent(e) {
try { try {
@@ -116,7 +116,7 @@ window.app = Vue.createApp({
}) })
} }
}, },
register: async function () { async register() {
try { try {
await LNbits.api.register( await LNbits.api.register(
this.username, this.username,
@@ -129,7 +129,7 @@ window.app = Vue.createApp({
LNbits.utils.notifyApiError(e) LNbits.utils.notifyApiError(e)
} }
}, },
reset: async function () { async reset() {
try { try {
await LNbits.api.reset( await LNbits.api.reset(
this.reset_key, this.reset_key,
@@ -141,7 +141,7 @@ window.app = Vue.createApp({
LNbits.utils.notifyApiError(e) LNbits.utils.notifyApiError(e)
} }
}, },
login: async function () { async login() {
try { try {
await LNbits.api.login(this.username, this.password) await LNbits.api.login(this.username, this.password)
window.location.href = '/wallet' window.location.href = '/wallet'
@@ -149,7 +149,7 @@ window.app = Vue.createApp({
LNbits.utils.notifyApiError(e) LNbits.utils.notifyApiError(e)
} }
}, },
loginUsr: async function () { async loginUsr() {
try { try {
await LNbits.api.loginUsr(this.usr) await LNbits.api.loginUsr(this.usr)
this.usr = '' this.usr = ''
@@ -159,19 +159,19 @@ window.app = Vue.createApp({
LNbits.utils.notifyApiError(e) LNbits.utils.notifyApiError(e)
} }
}, },
createWallet: function () { createWallet() {
LNbits.api.createAccount(this.walletName).then(res => { LNbits.api.createAccount(this.walletName).then(res => {
window.location = '/wallet?usr=' + res.data.user + '&wal=' + res.data.id window.location = '/wallet?usr=' + res.data.user + '&wal=' + res.data.id
}) })
}, },
processing: function () { processing() {
Quasar.Notify.create({ Quasar.Notify.create({
timeout: 0, timeout: 0,
message: 'Processing...', message: 'Processing...',
icon: null icon: null
}) })
}, },
validateUsername: function (val) { validateUsername(val) {
const usernameRegex = new RegExp( const usernameRegex = new RegExp(
'^(?=[a-zA-Z0-9._]{2,20}$)(?!.*[_.]{2})[^_.].*[^_.]$' '^(?=[a-zA-Z0-9._]{2,20}$)(?!.*[_.]{2})[^_.].*[^_.]$'
) )
+8 -8
View File
@@ -1,6 +1,6 @@
window.app.component('lnbits-node-ranks', { window.app.component('lnbits-node-ranks', {
props: ['ranks'], props: ['ranks'],
data: function () { data() {
return { return {
user: {}, user: {},
stats: [ stats: [
@@ -31,7 +31,7 @@ window.app.component('lnbits-node-ranks', {
window.app.component('lnbits-channel-stats', { window.app.component('lnbits-channel-stats', {
props: ['stats'], props: ['stats'],
data: function () { data() {
return { return {
states: [ states: [
{label: 'Active', value: 'active', color: 'green'}, {label: 'Active', value: 'active', color: 'green'},
@@ -58,7 +58,7 @@ window.app.component('lnbits-channel-stats', {
</div> </div>
</q-card> </q-card>
`, `,
created: function () { created() {
if (window.user) { if (window.user) {
this.user = LNbits.map.user(window.user) this.user = LNbits.map.user(window.user)
} }
@@ -68,7 +68,7 @@ window.app.component('lnbits-channel-stats', {
window.app.component('lnbits-stat', { window.app.component('lnbits-stat', {
props: ['title', 'amount', 'msat', 'btc'], props: ['title', 'amount', 'msat', 'btc'],
computed: { computed: {
value: function () { value() {
return ( return (
this.amount ?? this.amount ??
(this.btc (this.btc
@@ -178,7 +178,7 @@ window.app.component('lnbits-node-info', {
window.app.component('lnbits-stat', { window.app.component('lnbits-stat', {
props: ['title', 'amount', 'msat', 'btc'], props: ['title', 'amount', 'msat', 'btc'],
computed: { computed: {
value: function () { value() {
return ( return (
this.amount ?? this.amount ??
(this.btc (this.btc
@@ -206,7 +206,7 @@ window.app.component('lnbits-stat', {
window.app.component('lnbits-channel-balance', { window.app.component('lnbits-channel-balance', {
props: ['balance', 'color'], props: ['balance', 'color'],
methods: { methods: {
formatMsat: function (msat) { formatMsat(msat) {
return LNbits.utils.formatMsat(msat) return LNbits.utils.formatMsat(msat)
} }
}, },
@@ -247,10 +247,10 @@ window.app.component('lnbits-channel-balance', {
window.app.component('lnbits-date', { window.app.component('lnbits-date', {
props: ['ts'], props: ['ts'],
computed: { computed: {
date: function () { date() {
return LNbits.utils.formatDate(this.ts) return LNbits.utils.formatDate(this.ts)
}, },
dateFrom: function () { dateFrom() {
return moment(this.date).fromNow() return moment(this.date).fromNow()
} }
}, },
+13 -35
View File
@@ -1,7 +1,7 @@
window.app = Vue.createApp({ window.app = Vue.createApp({
el: '#vue', el: '#vue',
mixins: [window.windowMixin], mixins: [window.windowMixin],
data: function () { data() {
return { return {
paymentsWallet: {}, paymentsWallet: {},
wallet: {}, wallet: {},
@@ -175,7 +175,7 @@ window.app = Vue.createApp({
formatDate(date) { formatDate(date) {
return LNbits.utils.formatDateString(date) return LNbits.utils.formatDateString(date)
}, },
formatSat: function (value) { formatSat(value) {
return LNbits.utils.formatSat(Math.floor(value / 1000)) return LNbits.utils.formatSat(Math.floor(value / 1000))
}, },
backToUsersPage() { backToUsersPage() {
@@ -197,9 +197,7 @@ window.app = Vue.createApp({
this.copyText(url) this.copyText(url)
}) })
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
createUser() { createUser() {
LNbits.api LNbits.api
@@ -215,9 +213,7 @@ window.app = Vue.createApp({
this.activeUser.data = resp.data this.activeUser.data = resp.data
this.fetchUsers() this.fetchUsers()
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
updateUser() { updateUser() {
LNbits.api LNbits.api
@@ -237,9 +233,7 @@ window.app = Vue.createApp({
this.activeUser.show = false this.activeUser.show = false
this.fetchUsers() this.fetchUsers()
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
createWallet() { createWallet() {
const userId = this.activeWallet.userId const userId = this.activeWallet.userId
@@ -265,9 +259,7 @@ window.app = Vue.createApp({
message: 'Wallet created!' message: 'Wallet created!'
}) })
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
deleteUser(user_id) { deleteUser(user_id) {
LNbits.utils LNbits.utils
@@ -285,9 +277,7 @@ window.app = Vue.createApp({
this.activeUser.data = null this.activeUser.data = null
this.activeUser.show = false this.activeUser.show = false
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}) })
}, },
undeleteUserWallet(user_id, wallet) { undeleteUserWallet(user_id, wallet) {
@@ -304,9 +294,7 @@ window.app = Vue.createApp({
icon: null icon: null
}) })
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
deleteUserWallet(user_id, wallet, deleted) { deleteUserWallet(user_id, wallet, deleted) {
const dialogText = deleted const dialogText = deleted
@@ -323,9 +311,7 @@ window.app = Vue.createApp({
icon: null icon: null
}) })
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}) })
}, },
copyWalletLink(walletId) { copyWalletLink(walletId) {
@@ -342,9 +328,7 @@ window.app = Vue.createApp({
this.usersTable.pagination.rowsNumber = res.data.total this.usersTable.pagination.rowsNumber = res.data.total
this.users = res.data.data this.users = res.data.data
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
fetchWallets(userId) { fetchWallets(userId) {
LNbits.api LNbits.api
@@ -354,9 +338,7 @@ window.app = Vue.createApp({
this.activeWallet.userId = userId this.activeWallet.userId = userId
this.activeWallet.show = true this.activeWallet.show = true
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
toggleAdmin(userId) { toggleAdmin(userId) {
@@ -370,9 +352,7 @@ window.app = Vue.createApp({
icon: null icon: null
}) })
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
exportUsers() { exportUsers() {
console.log('export users') console.log('export users')
@@ -438,9 +418,7 @@ window.app = Vue.createApp({
this.wallet = {} this.wallet = {}
this.fetchWallets(this.activeWallet.userId) this.fetchWallets(this.activeWallet.userId)
}) })
.catch(function (error) { .catch(LNbits.utils.notifyApiError)
LNbits.utils.notifyApiError(error)
})
}, },
searchUserBy(fieldName) { searchUserBy(fieldName) {
const fieldValue = this.searchData[fieldName] const fieldValue = this.searchData[fieldName]
+45 -47
View File
@@ -1,7 +1,7 @@
window.app = Vue.createApp({ window.app = Vue.createApp({
el: '#vue', el: '#vue',
mixins: [window.windowMixin], mixins: [window.windowMixin],
data: function () { data() {
return { return {
updatePayments: false, updatePayments: false,
origin: window.location.origin, origin: window.location.origin,
@@ -63,7 +63,7 @@ window.app = Vue.createApp({
} }
}, },
computed: { computed: {
formattedBalance: function () { formattedBalance() {
if (LNBITS_DENOMINATION != 'sats') { if (LNBITS_DENOMINATION != 'sats') {
return this.balance / 100 return this.balance / 100
} else { } else {
@@ -78,11 +78,11 @@ window.app = Vue.createApp({
) )
} }
}, },
canPay: function () { canPay() {
if (!this.parse.invoice) return false if (!this.parse.invoice) return false
return this.parse.invoice.sat <= this.balance return this.parse.invoice.sat <= this.balance
}, },
formattedAmount: function () { formattedAmount() {
if (this.receive.unit != 'sat') { if (this.receive.unit != 'sat') {
return LNbits.utils.formatCurrency( return LNbits.utils.formatCurrency(
Number(this.receive.data.amount).toFixed(2), Number(this.receive.data.amount).toFixed(2),
@@ -92,24 +92,24 @@ window.app = Vue.createApp({
return LNbits.utils.formatMsat(this.receive.amountMsat) + ' sat' return LNbits.utils.formatMsat(this.receive.amountMsat) + ' sat'
} }
}, },
formattedSatAmount: function () { formattedSatAmount() {
return LNbits.utils.formatMsat(this.receive.amountMsat) + ' sat' return LNbits.utils.formatMsat(this.receive.amountMsat) + ' sat'
} }
}, },
methods: { methods: {
msatoshiFormat: function (value) { msatoshiFormat(value) {
return LNbits.utils.formatSat(value / 1000) return LNbits.utils.formatSat(value / 1000)
}, },
closeCamera: function () { closeCamera() {
this.parse.camera.show = false this.parse.camera.show = false
}, },
showCamera: function () { showCamera() {
this.parse.camera.show = true this.parse.camera.show = true
}, },
focusInput(el) { focusInput(el) {
this.$nextTick(() => this.$refs[el].focus()) this.$nextTick(() => this.$refs[el].focus())
}, },
showReceiveDialog: function () { showReceiveDialog() {
this.receive.show = true this.receive.show = true
this.receive.status = 'pending' this.receive.status = 'pending'
this.receive.paymentReq = null this.receive.paymentReq = null
@@ -121,12 +121,12 @@ window.app = Vue.createApp({
this.receive.lnurl = null this.receive.lnurl = null
this.focusInput('setAmount') this.focusInput('setAmount')
}, },
onReceiveDialogHide: function () { onReceiveDialogHide() {
if (this.hasNfc) { if (this.hasNfc) {
this.nfcReaderAbortController.abort() this.nfcReaderAbortController.abort()
} }
}, },
showParseDialog: function () { showParseDialog() {
this.parse.show = true this.parse.show = true
this.parse.invoice = null this.parse.invoice = null
this.parse.lnurlpay = null this.parse.lnurlpay = null
@@ -139,19 +139,19 @@ window.app = Vue.createApp({
this.parse.camera.show = false this.parse.camera.show = false
this.focusInput('textArea') this.focusInput('textArea')
}, },
closeParseDialog: function () { closeParseDialog() {
setTimeout(() => { setTimeout(() => {
clearInterval(this.parse.paymentChecker) clearInterval(this.parse.paymentChecker)
}, 10000) }, 10000)
}, },
onPaymentReceived: function (paymentHash) { onPaymentReceived(paymentHash) {
this.updatePayments = !this.updatePayments this.updatePayments = !this.updatePayments
if (this.receive.paymentHash === paymentHash) { if (this.receive.paymentHash === paymentHash) {
this.receive.show = false this.receive.show = false
this.receive.paymentHash = null this.receive.paymentHash = null
} }
}, },
createInvoice: function () { createInvoice() {
this.receive.status = 'loading' this.receive.status = 'loading'
if (LNBITS_DENOMINATION != 'sats') { if (LNBITS_DENOMINATION != 'sats') {
this.receive.data.amount = this.receive.data.amount * 100 this.receive.data.amount = this.receive.data.amount * 100
@@ -206,11 +206,11 @@ window.app = Vue.createApp({
this.receive.status = 'pending' this.receive.status = 'pending'
}) })
}, },
onInitQR: async function (promise) { async onInitQR(promise) {
try { try {
await promise await promise
} catch (error) { } catch (error) {
let mapping = { const mapping = {
NotAllowedError: 'ERROR: you need to grant camera access permission', NotAllowedError: 'ERROR: you need to grant camera access permission',
NotFoundError: 'ERROR: no camera on this device', NotFoundError: 'ERROR: no camera on this device',
NotSupportedError: NotSupportedError:
@@ -222,10 +222,10 @@ window.app = Vue.createApp({
InsecureContextError: InsecureContextError:
'ERROR: Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.' 'ERROR: Camera access is only permitted in secure context. Use HTTPS or localhost rather than HTTP.'
} }
let valid_error = Object.keys(mapping).filter(key => { const valid_error = Object.keys(mapping).filter(key => {
return error.name === key return error.name === key
}) })
let camera_error = valid_error const camera_error = valid_error
? mapping[valid_error] ? mapping[valid_error]
: `ERROR: Camera error (${error.name})` : `ERROR: Camera error (${error.name})`
this.parse.camera.show = false this.parse.camera.show = false
@@ -246,7 +246,7 @@ window.app = Vue.createApp({
LNbits.utils.notifyApiError(err) LNbits.utils.notifyApiError(err)
}) })
.then(response => { .then(response => {
let data = response.data const data = response.data
if (data.status === 'ERROR') { if (data.status === 'ERROR') {
Quasar.Notify.create({ Quasar.Notify.create({
@@ -283,15 +283,15 @@ window.app = Vue.createApp({
} }
}) })
}, },
decodeQR: function (res) { decodeQR(res) {
this.parse.data.request = res[0].rawValue this.parse.data.request = res[0].rawValue
this.decodeRequest() this.decodeRequest()
this.parse.camera.show = false this.parse.camera.show = false
}, },
decodeRequest: function () { decodeRequest() {
this.parse.show = true this.parse.show = true
this.parse.data.request = this.parse.data.request.trim().toLowerCase() this.parse.data.request = this.parse.data.request.trim().toLowerCase()
let req = this.parse.data.request const req = this.parse.data.request
if (req.startsWith('lightning:')) { if (req.startsWith('lightning:')) {
this.parse.data.request = req.slice(10) this.parse.data.request = req.slice(10)
} else if (req.startsWith('lnurl:')) { } else if (req.startsWith('lnurl:')) {
@@ -342,7 +342,7 @@ window.app = Vue.createApp({
} else if (tag.description === 'description') { } else if (tag.description === 'description') {
cleanInvoice.description = tag.value cleanInvoice.description = tag.value
} else if (tag.description === 'expiry') { } else if (tag.description === 'expiry') {
var expireDate = new Date( const expireDate = new Date(
(invoice.data.time_stamp + tag.value) * 1000 (invoice.data.time_stamp + tag.value) * 1000
) )
cleanInvoice.expireDate = Quasar.date.formatDate( cleanInvoice.expireDate = Quasar.date.formatDate(
@@ -356,8 +356,8 @@ window.app = Vue.createApp({
this.parse.invoice = Object.freeze(cleanInvoice) this.parse.invoice = Object.freeze(cleanInvoice)
}, },
payInvoice: function () { payInvoice() {
let dismissPaymentMsg = Quasar.Notify.create({ const dismissPaymentMsg = Quasar.Notify.create({
timeout: 0, timeout: 0,
message: this.$t('processing_payment') message: this.$t('processing_payment')
}) })
@@ -389,8 +389,8 @@ window.app = Vue.createApp({
this.parse.show = false this.parse.show = false
}) })
}, },
payLnurl: function () { payLnurl() {
let dismissPaymentMsg = Quasar.Notify.create({ const dismissPaymentMsg = Quasar.Notify.create({
timeout: 0, timeout: 0,
message: 'Processing payment...' message: 'Processing payment...'
}) })
@@ -472,8 +472,8 @@ window.app = Vue.createApp({
LNbits.utils.notifyApiError(err) LNbits.utils.notifyApiError(err)
}) })
}, },
authLnurl: function () { authLnurl() {
let dismissAuthMsg = Quasar.Notify.create({ const dismissAuthMsg = Quasar.Notify.create({
timeout: 10, timeout: 10,
message: 'Performing authentication...' message: 'Performing authentication...'
}) })
@@ -503,7 +503,7 @@ window.app = Vue.createApp({
} }
}) })
}, },
updateWallet: function (data) { updateWallet(data) {
LNbits.api LNbits.api
.request('PATCH', '/api/v1/wallet', this.g.wallet.adminkey, data) .request('PATCH', '/api/v1/wallet', this.g.wallet.adminkey, data)
.then(_ => { .then(_ => {
@@ -518,7 +518,7 @@ window.app = Vue.createApp({
LNbits.utils.notifyApiError(err) LNbits.utils.notifyApiError(err)
}) })
}, },
deleteWallet: function () { deleteWallet() {
LNbits.utils LNbits.utils
.confirmDialog('Are you sure you want to delete this wallet?') .confirmDialog('Are you sure you want to delete this wallet?')
.onOk(() => { .onOk(() => {
@@ -536,7 +536,7 @@ window.app = Vue.createApp({
}) })
}) })
}, },
fetchBalance: function () { fetchBalance() {
LNbits.api.getWallet(this.g.wallet).then(response => { LNbits.api.getWallet(this.g.wallet).then(response => {
this.balance = Math.floor(response.data.balance / 1000) this.balance = Math.floor(response.data.balance / 1000)
document.dispatchEvent( document.dispatchEvent(
@@ -561,18 +561,18 @@ window.app = Vue.createApp({
}) })
.catch(e => console.error(e)) .catch(e => console.error(e))
}, },
updateBalanceCallback: function (res) { updateBalanceCallback(res) {
if (res.success && wallet.id === res.wallet_id) { if (res.success && wallet.id === res.wallet_id) {
this.balance += res.credit this.balance += res.credit
} }
}, },
pasteToTextArea: function () { pasteToTextArea() {
this.$refs.textArea.focus() // Set cursor to textarea this.$refs.textArea.focus() // Set cursor to textarea
navigator.clipboard.readText().then(text => { navigator.clipboard.readText().then(text => {
this.parse.data.request = text.trim() this.parse.data.request = text.trim()
}) })
}, },
readNfcTag: function () { readNfcTag() {
try { try {
if (typeof NDEFReader == 'undefined') { if (typeof NDEFReader == 'undefined') {
console.debug('NFC not supported on this device or browser.') console.debug('NFC not supported on this device or browser.')
@@ -587,7 +587,7 @@ window.app = Vue.createApp({
} }
this.hasNfc = true this.hasNfc = true
let dismissNfcTapMsg = Quasar.Notify.create({ const dismissNfcTapMsg = Quasar.Notify.create({
message: 'Tap your NFC tag to pay this invoice with LNURLw.' message: 'Tap your NFC tag to pay this invoice with LNURLw.'
}) })
@@ -635,8 +635,8 @@ window.app = Vue.createApp({
}) })
} }
}, },
payInvoiceWithNfc: function (lnurl) { payInvoiceWithNfc(lnurl) {
let dismissPaymentMsg = Quasar.Notify.create({ const dismissPaymentMsg = Quasar.Notify.create({
timeout: 0, timeout: 0,
spinner: true, spinner: true,
message: this.$t('processing_payment') message: this.$t('processing_payment')
@@ -669,8 +669,8 @@ window.app = Vue.createApp({
}) })
} }
}, },
created: function () { created() {
let urlParams = new URLSearchParams(window.location.search) const urlParams = new URLSearchParams(window.location.search)
if (urlParams.has('lightning') || urlParams.has('lnurl')) { if (urlParams.has('lightning') || urlParams.has('lnurl')) {
this.parse.data.request = this.parse.data.request =
urlParams.get('lightning') || urlParams.get('lnurl') urlParams.get('lightning') || urlParams.get('lnurl')
@@ -686,11 +686,11 @@ window.app = Vue.createApp({
this.updateFiatBalance() this.updateFiatBalance()
}, },
watch: { watch: {
updatePayments: function () { updatePayments() {
this.fetchBalance() this.fetchBalance()
} }
}, },
mounted: function () { mounted() {
// show disclaimer // show disclaimer
if (!this.$q.localStorage.getItem('lnbits.disclaimerShown')) { if (!this.$q.localStorage.getItem('lnbits.disclaimerShown')) {
this.disclaimerDialog.show = true this.disclaimerDialog.show = true
@@ -705,9 +705,7 @@ window.app = Vue.createApp({
}) })
if (navigator.serviceWorker != null) { if (navigator.serviceWorker != null) {
navigator.serviceWorker navigator.serviceWorker.register('/service-worker.js').then(registration => {
.register('/service-worker.js') console.log('Registered events at scope: ', registration.scope)
.then(function (registration) { })
console.log('Registered events at scope: ', registration.scope)
})
} }