refactor: g.settings with a PublicSettings class for mapping, for reactive WINDOW_SETTINGS (#3644)
This commit is contained in:
@@ -70,10 +70,10 @@
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
const RENDERED_ROUTE = '{{ normalize_path(request.path) }}'
|
||||
const WINDOW_SETTINGS = {{ WINDOW_SETTINGS | tojson }}
|
||||
Object.keys(WINDOW_SETTINGS).forEach(key => {
|
||||
window[key] = WINDOW_SETTINGS[key]
|
||||
})
|
||||
const SETTINGS = {{ SETTINGS | tojson | safe }}
|
||||
const CURRENCIES = {{ CURRENCIES | tojson | safe }}
|
||||
// backwards compatibility for extensions (tpos)
|
||||
const LNBITS_DENOMINATION = {{ LNBITS_DENOMINATION | tojson | safe }}
|
||||
</script>
|
||||
<!-- vue templates -->
|
||||
{% include('components.vue') %} {% include('pages.vue') %}
|
||||
|
||||
@@ -36,7 +36,7 @@ include('components/lnbits-error.vue') %}
|
||||
<q-list v-if="g.user" dense class="lnbits-drawer__q-list">
|
||||
<q-item-label header v-text="$t('manage')"></q-item-label>
|
||||
<div v-if="g.user.admin">
|
||||
<q-item v-if="showAdmin" to="/admin">
|
||||
<q-item v-if="g.settings.showAdmin" to="/admin">
|
||||
<q-item-section side>
|
||||
<q-icon
|
||||
name="settings"
|
||||
@@ -51,7 +51,7 @@ include('components/lnbits-error.vue') %}
|
||||
<q-icon name="chevron_right" color="grey-5" size="md"></q-icon>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-if="showNode" to="/node">
|
||||
<q-item v-if="g.settings.showNodemanager" to="/node">
|
||||
<q-item-section side>
|
||||
<q-icon
|
||||
name="developer_board"
|
||||
@@ -66,7 +66,7 @@ include('components/lnbits-error.vue') %}
|
||||
<q-icon name="chevron_right" color="grey-5" size="md"></q-icon>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-if="showUsers" to="/users">
|
||||
<q-item v-if="g.settings.showAdmin" to="/users">
|
||||
<q-item-section side>
|
||||
<q-icon
|
||||
name="groups"
|
||||
@@ -81,7 +81,7 @@ include('components/lnbits-error.vue') %}
|
||||
<q-icon name="chevron_right" color="grey-5" size="md"></q-icon>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-if="showAudit" to="/audit">
|
||||
<q-item v-if="g.settings.showAudit" to="/audit">
|
||||
<q-item-section side>
|
||||
<q-icon
|
||||
name="playlist_add_check_circle"
|
||||
@@ -112,7 +112,7 @@ include('components/lnbits-error.vue') %}
|
||||
<q-icon name="chevron_right" color="grey-5" size="md"></q-icon>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-if="showExtensions" to="/extensions">
|
||||
<q-item v-if="g.settings.showExtensions" to="/extensions">
|
||||
<q-item-section side>
|
||||
<q-icon
|
||||
name="extension"
|
||||
@@ -686,7 +686,7 @@ include('components/lnbits-error.vue') %}
|
||||
dense
|
||||
filled
|
||||
v-model="walletName"
|
||||
:label="$t('name_your_wallet', {name: SITE_TITLE + ' *'})"
|
||||
:label="$t('name_your_wallet', {name: g.settings.siteTitle + ' *'})"
|
||||
></q-input>
|
||||
<q-card-actions vertical align="center" class="q-pa-none">
|
||||
<q-btn
|
||||
@@ -960,9 +960,9 @@ include('components/lnbits-error.vue') %}
|
||||
<q-avatar size="32px" class="q-mr-md">
|
||||
<q-img
|
||||
:src="
|
||||
keycloakIcon
|
||||
? keycloakIcon
|
||||
: 'lnbits/static/images/keycloak-logo.png'
|
||||
g.settings.keycloakIcon
|
||||
? g.settings.keycloakIcon
|
||||
: utils.url_for('lnbits/static/images/keycloak-logo.png')
|
||||
"
|
||||
></q-img>
|
||||
</q-avatar>
|
||||
@@ -970,7 +970,7 @@ include('components/lnbits-error.vue') %}
|
||||
<span
|
||||
v-text="
|
||||
$t('signin_with_custom_org', {
|
||||
custom_org: keycloakOrg
|
||||
custom_org: g.settings.keycloakOrg || 'Keycloak'
|
||||
})
|
||||
"
|
||||
></span>
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<br />
|
||||
</div>
|
||||
<div class="col">
|
||||
<div v-if="LNBITS_NODE_UI">
|
||||
<div v-if="g.settings.hasNodemanager">
|
||||
<p>
|
||||
<span v-text="$t('node_management')"></span>
|
||||
</p>
|
||||
@@ -70,7 +70,7 @@
|
||||
v-model="formData.lnbits_node_ui_transactions"
|
||||
></q-toggle>
|
||||
</div>
|
||||
<p v-if="!LNBITS_NODE_UI">
|
||||
<p v-if="!g.settings.hasNodemanager">
|
||||
<span v-text="$t('node_management_not_supported')"></span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template id="lnbits-footer">
|
||||
<q-footer
|
||||
v-if="showFooter"
|
||||
v-if="g.settings.showHomePageElements"
|
||||
class="bg-transparent q-px-lg q-py-md"
|
||||
:class="{'text-dark': !$q.dark.isActive}"
|
||||
>
|
||||
@@ -9,7 +9,7 @@
|
||||
<q-toolbar-title class="text-caption">
|
||||
<span v-text="title"></span>
|
||||
<br />
|
||||
<small v-text="$t('lnbits_version') + ': ' + version"></small>
|
||||
<small v-text="version"></small>
|
||||
</q-toolbar-title>
|
||||
<q-space></q-space>
|
||||
<q-btn
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
<template id="lnbits-header">
|
||||
<q-header bordered class="bg-marginal-bg">
|
||||
<q-banner v-if="showVoidwallet" class="bg-warning text-white" dense>
|
||||
<q-banner
|
||||
v-if="g.settings.showVoidwallet"
|
||||
class="bg-warning text-white"
|
||||
dense
|
||||
>
|
||||
<template v-slot:avatar>
|
||||
<q-icon name="warning" color="white" />
|
||||
</template>
|
||||
@@ -24,13 +28,15 @@
|
||||
<q-toolbar-title>
|
||||
<q-btn flat no-caps dense class="q-mr-sm" size="lg" type="a" href="/">
|
||||
<q-img
|
||||
v-if="customLogoUrl"
|
||||
v-if="customLogo"
|
||||
height="30px"
|
||||
alt="Logo"
|
||||
:src="customLogoUrl"
|
||||
:src="customLogo"
|
||||
></q-img>
|
||||
<span v-else-if="!titleIsLnbits"><strong>LN</strong>bits</span>
|
||||
<span v-else v-text="title"></span>
|
||||
<span v-else-if="g.settings.siteTitle == 'LNbits'"
|
||||
><strong>LN</strong>bits</span
|
||||
>
|
||||
<span v-else v-text="g.settings.siteTitle"></span>
|
||||
</q-btn>
|
||||
<q-badge v-if="g.user && g.user.super_user">Super User</q-badge>
|
||||
<q-badge v-else-if="g.user && g.user.admin">Admin User</q-badge>
|
||||
@@ -38,31 +44,31 @@
|
||||
<q-badge
|
||||
class="q-mr-md"
|
||||
v-show="$q.screen.gt.sm"
|
||||
v-if="hasCustomBadge"
|
||||
:label="customBadge"
|
||||
:color="customBadgeColor"
|
||||
v-if="g.settings.customBadge"
|
||||
:label="g.settings.customBadge"
|
||||
:color="g.settings.customBadgeColor"
|
||||
>
|
||||
</q-badge>
|
||||
|
||||
<q-badge
|
||||
v-show="$q.screen.gt.sm"
|
||||
v-if="hasServiceFee"
|
||||
v-if="g.user && g.settings.serviceFee > 0"
|
||||
color="green"
|
||||
class="q-mr-md"
|
||||
>
|
||||
<span
|
||||
v-if="hasServiceFeeMax"
|
||||
v-if="g.user && g.settings.serviceFeeMax > 0"
|
||||
v-text="
|
||||
$t('service_fee_max_badge', {
|
||||
amount: serviceFee,
|
||||
max: serviceFeeMax,
|
||||
amount: g.settings.serviceFee,
|
||||
max: g.settings.serviceFeeMax,
|
||||
denom: g.denomination
|
||||
})
|
||||
"
|
||||
></span>
|
||||
<span
|
||||
v-else
|
||||
v-text="$t('service_fee_badge', {amount: serviceFee})"
|
||||
v-text="$t('service_fee_badge', {amount: g.settings.serviceFee})"
|
||||
></span>
|
||||
<q-tooltip><span v-text="$t('service_fee_tooltip')"></span></q-tooltip>
|
||||
</q-badge>
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
</q-list>
|
||||
</q-card-section>
|
||||
<q-expansion-item
|
||||
v-if="!HIDE_API"
|
||||
v-if="!g.settings.hideApi"
|
||||
group="api"
|
||||
dense
|
||||
expand-separator
|
||||
@@ -152,7 +152,7 @@
|
||||
</q-expansion-item>
|
||||
|
||||
<q-expansion-item
|
||||
v-if="!HIDE_API"
|
||||
v-if="!g.settings.hideApi"
|
||||
group="api"
|
||||
dense
|
||||
expand-separator
|
||||
@@ -197,7 +197,7 @@
|
||||
</q-card>
|
||||
</q-expansion-item>
|
||||
<q-expansion-item
|
||||
v-if="!HIDE_API"
|
||||
v-if="!g.settings.hideApi"
|
||||
group="api"
|
||||
dense
|
||||
expand-separator
|
||||
@@ -244,7 +244,7 @@
|
||||
</q-expansion-item>
|
||||
|
||||
<q-expansion-item
|
||||
v-if="!HIDE_API"
|
||||
v-if="!g.settings.hideApi"
|
||||
group="api"
|
||||
dense
|
||||
expand-separator
|
||||
@@ -273,7 +273,7 @@
|
||||
</q-card>
|
||||
</q-expansion-item>
|
||||
<q-expansion-item
|
||||
v-if="!HIDE_API"
|
||||
v-if="!g.settings.hideApi"
|
||||
group="api"
|
||||
dense
|
||||
expand-separator
|
||||
|
||||
@@ -258,15 +258,20 @@
|
||||
class="q-mb-md"
|
||||
>
|
||||
</q-input>
|
||||
<div v-if="!g.user.email" class="row"></div>
|
||||
<div v-if="!g.user.email" class="row">
|
||||
{% if "google-auth" in LNBITS_AUTH_METHODS or
|
||||
"github-auth" in LNBITS_AUTH_METHODS %}
|
||||
<div class="col q-pa-sm text-h6">
|
||||
<div
|
||||
v-if="
|
||||
'google-auth' in g.settings.authMethods ||
|
||||
'github-auth' in g.settings.authMethods
|
||||
"
|
||||
class="col q-pa-sm text-h6"
|
||||
>
|
||||
<span v-text="$t('verify_email')"></span>:
|
||||
</div>
|
||||
{%endif%} {% if "google-auth" in LNBITS_AUTH_METHODS %}
|
||||
<div class="col q-pa-sm">
|
||||
<div
|
||||
v-if="'google-auth' in g.settings.authMethods"
|
||||
class="col q-pa-sm"
|
||||
>
|
||||
<q-btn
|
||||
:href="`/api/v1/auth/google?user_id=${g.user.id}`"
|
||||
type="a"
|
||||
@@ -284,8 +289,10 @@
|
||||
<div>Google</div>
|
||||
</q-btn>
|
||||
</div>
|
||||
{%endif%} {% if "github-auth" in LNBITS_AUTH_METHODS %}
|
||||
<div class="col q-pa-sm">
|
||||
<div
|
||||
v-if="'github-auth' in g.settings.authMethods"
|
||||
class="col q-pa-sm"
|
||||
>
|
||||
<q-btn
|
||||
:href="`/api/v1/auth/github?user_id=${g.user.id}`"
|
||||
type="a"
|
||||
@@ -303,7 +310,6 @@
|
||||
<div>GitHub</div>
|
||||
</q-btn>
|
||||
</div>
|
||||
{%endif%}
|
||||
</div>
|
||||
</q-card-section>
|
||||
|
||||
@@ -508,7 +514,7 @@
|
||||
<div class="col-8">
|
||||
<lnbits-notifications-btn
|
||||
v-if="g.user"
|
||||
pubkey="{{ WEBPUSH_PUBKEY }}"
|
||||
pubkey="g.settings.webpushPubkey"
|
||||
></lnbits-notifications-btn>
|
||||
</div>
|
||||
</div>
|
||||
@@ -552,7 +558,7 @@
|
||||
></span>
|
||||
<br />
|
||||
<q-badge
|
||||
v-if="!LNBITS_NOSTR_CONFIGURED"
|
||||
v-if="!g.settings.nostrConfigured"
|
||||
v-text="$t('not_connected')"
|
||||
></q-badge>
|
||||
</div>
|
||||
@@ -572,7 +578,7 @@
|
||||
<span v-text="$t('notifications_chat_id')"></span>
|
||||
<br />
|
||||
<q-badge
|
||||
v-if="!LNBITS_TELEGRAM_CONFIGURED"
|
||||
v-if="!g.settings.telegramConfigured"
|
||||
v-text="$t('not_connected')"
|
||||
></q-badge>
|
||||
</div>
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
<div class="home row justify-center items-center">
|
||||
<div
|
||||
class="full-width content-center"
|
||||
:style="`max-width: ${hasCustomImage ? '850' : '600'}px; min-height: 55vh;`"
|
||||
:style="`max-width: ${g.settings.customImage ? '850' : '600'}px; min-height: 55vh;`"
|
||||
>
|
||||
<div v-if="showHomepageElements" class="row q-mb-md">
|
||||
<div v-if="g.settings.showHomepageElements" class="row q-mb-md">
|
||||
<div class="col-12">
|
||||
<div>
|
||||
<h5 v-text="siteTitle" class="q-my-none"></h5>
|
||||
<h5 v-text="g.settings.siteTitle" class="q-my-none"></h5>
|
||||
<template v-if="$q.screen.gt.sm">
|
||||
<h6 class="q-my-sm" v-text="siteTagline"></h6>
|
||||
<h6 class="q-my-sm" v-text="g.settings.siteTagline"></h6>
|
||||
<p class="q-my-sm" v-html="formatDescription"></p>
|
||||
</template>
|
||||
</div>
|
||||
@@ -31,7 +31,10 @@
|
||||
<div class="row">
|
||||
<div
|
||||
class="col-12"
|
||||
:class="{'col-sm-7': hasCustomImage, 'col-lg-6': hasCustomImage}"
|
||||
:class="{
|
||||
'col-sm-7': g.settings.customImage,
|
||||
'col-lg-6': g.settings.customImage
|
||||
}"
|
||||
>
|
||||
<div v-if="showClaimLnurl">
|
||||
<q-card-section>
|
||||
@@ -54,8 +57,8 @@
|
||||
<div v-else>
|
||||
<username-password
|
||||
v-if="authMethod != 'user-id-only'"
|
||||
:allowed_new_users="allowRegister"
|
||||
:auth-methods="LNBITS_AUTH_METHODS"
|
||||
:allowed_new_users="g.settings.allowRegister"
|
||||
:auth-methods="g.settings.authMethods"
|
||||
:auth-action="authAction"
|
||||
v-model:user-name="username"
|
||||
v-model:password_1="password"
|
||||
@@ -70,7 +73,7 @@
|
||||
v-if="authAction !== 'reset'"
|
||||
>
|
||||
<p
|
||||
v-if="authAction === 'login' && allowRegister"
|
||||
v-if="authAction === 'login' && g.settings.allowRegister"
|
||||
class="q-mb-none"
|
||||
>
|
||||
Not registered?
|
||||
@@ -82,7 +85,9 @@
|
||||
>
|
||||
</p>
|
||||
<p
|
||||
v-else-if="authAction === 'login' && !allowRegister"
|
||||
v-else-if="
|
||||
authAction === 'login' && !g.settings.allowRegister
|
||||
"
|
||||
class="q-mb-none"
|
||||
>
|
||||
<span v-text="$t('new_user_not_allowed')"></span>
|
||||
@@ -101,7 +106,7 @@
|
||||
</username-password>
|
||||
<user-id-only
|
||||
v-if="authMethod == 'user-id-only'"
|
||||
:allowed_new_users="allowRegister"
|
||||
:allowed_new_users="g.settings.allowRegister"
|
||||
v-model:usr="usr"
|
||||
v-model:wallet="walletName"
|
||||
:auth-action="authAction"
|
||||
@@ -114,16 +119,20 @@
|
||||
</user-id-only>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="hasCustomImage" class="col-sm-5 col-lg-6 gt-xs">
|
||||
<div v-if="g.settings.customImage" class="col-sm-5 col-lg-6 gt-xs">
|
||||
<div class="full-height flex flex-center q-pa-lg">
|
||||
<q-img :src="hasCustomImage" :ratio="1" width="250px"></q-img>
|
||||
<q-img
|
||||
:src="g.settings.customImage"
|
||||
:ratio="1"
|
||||
width="250px"
|
||||
></q-img>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</q-card>
|
||||
</div>
|
||||
|
||||
<div v-if="showHomepageElements">
|
||||
<div v-if="g.settings.showHomepageElements">
|
||||
<div class="flex flex-center q-gutter-md q-py-md">
|
||||
<q-btn
|
||||
outline
|
||||
@@ -148,10 +157,14 @@
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="adsEnabled"
|
||||
v-if="g.settings.showAdSpace"
|
||||
class="justify-center col-10 q-my-lg row q-col-gutter-sm"
|
||||
>
|
||||
<a :href="ad[0]" v-for="ad in g.ads" class="lnbits-ad col-12 col-md-4">
|
||||
<a
|
||||
:href="ad[0]"
|
||||
v-for="ad in g.settings.adSpace"
|
||||
class="lnbits-ad col-12 col-md-4"
|
||||
>
|
||||
<q-img v-if="$q.dark.isActive" :src="ad[1]"></q-img>
|
||||
<q-img v-else :src="ad[2]"></q-img>
|
||||
</a>
|
||||
|
||||
@@ -172,15 +172,15 @@
|
||||
></q-tooltip>
|
||||
</q-btn>
|
||||
<div
|
||||
v-if="WALLET_FEATURED_BUTTON_URL"
|
||||
v-if="g.settings.walletFeaturedButtonUrl"
|
||||
class="float-right q-mt-sm q-ml-sm"
|
||||
>
|
||||
<q-btn
|
||||
color="primary"
|
||||
:label="WALLET_FEATURED_BUTTON_LABEL"
|
||||
:icon="WALLET_FEATURED_BUTTON_ICON || undefined"
|
||||
:label="g.settings.walletFeaturedButtonLabel"
|
||||
:icon="g.settings.walletFeaturedButtonIcon || undefined"
|
||||
size="sm"
|
||||
:to="WALLET_FEATURED_BUTTON_URL"
|
||||
:to="g.settings.walletFeaturedButtonUrl"
|
||||
>
|
||||
</q-btn>
|
||||
</div>
|
||||
@@ -212,10 +212,10 @@
|
||||
@send-lnurl="handleSendLnurl"
|
||||
:chart-config="chartConfig"
|
||||
></lnbits-wallet-extra>
|
||||
<q-card class="lnbits-wallet-ads" v-if="AD_SPACE_ENABLED">
|
||||
<q-card class="lnbits-wallet-ads" v-if="g.settings.showAdSpace">
|
||||
<q-card-section class="text-subtitle1">
|
||||
<span v-text="AD_SPACE_TITLE"></span>
|
||||
<a :href="ad[0]" class="lnbits-ad" v-for="ad in g.ads">
|
||||
<span v-text="g.settings.adSpaceTitle"></span>
|
||||
<a :href="ad[0]" class="lnbits-ad" v-for="ad in g.settings.adSpace">
|
||||
<q-img class="q-mb-xs" v-if="$q.dark.isActive" :src="ad[1]"></q-img>
|
||||
<q-img class="q-mb-xs" v-else :src="ad[2]"></q-img>
|
||||
</a>
|
||||
@@ -289,7 +289,7 @@
|
||||
></q-input>
|
||||
</div>
|
||||
<q-input
|
||||
v-if="has_holdinvoice"
|
||||
v-if="g.settings.hasHoldinvoice"
|
||||
filled
|
||||
dense
|
||||
v-model="receive.data.payment_hash"
|
||||
|
||||
@@ -45,10 +45,8 @@
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
const WINDOW_SETTINGS = {{ WINDOW_SETTINGS | tojson }}
|
||||
Object.keys(WINDOW_SETTINGS).forEach(key => {
|
||||
window[key] = WINDOW_SETTINGS[key]
|
||||
})
|
||||
const SETTINGS = {{ SETTINGS | tojson | safe }}
|
||||
const CURRENCIES = {{ CURRENCIES | tojson | safe }}
|
||||
</script>
|
||||
{% include('components.vue') %}{% block vue_templates %}{% endblock %} {%
|
||||
for url in INCLUDED_JS %}
|
||||
|
||||
Reference in New Issue
Block a user