feat: add UI for storage
This commit is contained in:
parent
50fd1942cc
commit
cb81726297
3 changed files with 169 additions and 67 deletions
|
|
@ -22,6 +22,11 @@ class ClientConfig(BaseModel):
|
||||||
created_at_hours_future = Field(0, alias="createdAtHoursFuture")
|
created_at_hours_future = Field(0, alias="createdAtHoursFuture")
|
||||||
created_at_minutes_future = Field(0, alias="createdAtMinutesFuture")
|
created_at_minutes_future = Field(0, alias="createdAtMinutesFuture")
|
||||||
created_at_seconds_future = Field(0, alias="createdAtSecondsFuture")
|
created_at_seconds_future = Field(0, alias="createdAtSecondsFuture")
|
||||||
|
|
||||||
|
|
||||||
|
free_storage_value = Field("1", alias="freeStorageValue")
|
||||||
|
free_storage_unit = Field("MB", alias="freeStorageUnit")
|
||||||
|
full_storage_action = Field("prune", alias="fullStorageAction")
|
||||||
|
|
||||||
allowed_public_keys = Field([], alias="allowedPublicKeys")
|
allowed_public_keys = Field([], alias="allowedPublicKeys")
|
||||||
blocked_public_keys = Field([], alias="blockedPublicKeys")
|
blocked_public_keys = Field([], alias="blockedPublicKeys")
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,39 @@
|
||||||
<q-tab-panel name="payment">
|
<q-tab-panel name="payment">
|
||||||
<div v-if="relay">
|
<div v-if="relay">
|
||||||
<div class="row items-center no-wrap q-mb-md">
|
<div class="row items-center no-wrap q-mb-md">
|
||||||
<div class="col-3 q-pr-lg">Require Payment:</div>
|
<div class="col-3 q-pr-lg">Free storage:</div>
|
||||||
|
<div class="col-2 q-pr-lg">
|
||||||
|
<q-input
|
||||||
|
filled
|
||||||
|
dense
|
||||||
|
v-model.trim="relay.config.freeStorageValue"
|
||||||
|
type="number"
|
||||||
|
hint="Value"
|
||||||
|
min="0"
|
||||||
|
></q-input>
|
||||||
|
</div>
|
||||||
|
<div class="col-2 q-pr-lg">
|
||||||
|
<q-select
|
||||||
|
filled
|
||||||
|
dense
|
||||||
|
v-model="relay.config.freeStorageUnit"
|
||||||
|
type="text"
|
||||||
|
hint="Unit"
|
||||||
|
:options="storageUnits"
|
||||||
|
></q-select>
|
||||||
|
</div>
|
||||||
|
<div class="col-5">
|
||||||
|
<q-badge
|
||||||
|
v-if="relay.config.freeStorageValue == 0"
|
||||||
|
color="orange"
|
||||||
|
class="float-left q-mb-md"
|
||||||
|
><span>No free storage</span>
|
||||||
|
</q-badge>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<q-separator></q-separator>
|
||||||
|
<div class="row items-center no-wrap q-mb-md">
|
||||||
|
<div class="col-3 q-pr-lg">Paid Plan:</div>
|
||||||
<div class="col-3 q-pr-lg">
|
<div class="col-3 q-pr-lg">
|
||||||
<q-toggle
|
<q-toggle
|
||||||
color="secodary"
|
color="secodary"
|
||||||
|
|
@ -71,6 +103,12 @@
|
||||||
></q-toggle>
|
></q-toggle>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
|
<q-badge
|
||||||
|
v-if="!relay.config.isPaidRelay && relay.config.freeStorageValue == 0"
|
||||||
|
color="orange"
|
||||||
|
class="float-left q-mb-md"
|
||||||
|
><span>No data will be stored, only broadcast</span>
|
||||||
|
</q-badge>
|
||||||
<q-select
|
<q-select
|
||||||
v-if="relay.config.isPaidRelay"
|
v-if="relay.config.isPaidRelay"
|
||||||
filled
|
filled
|
||||||
|
|
@ -83,79 +121,101 @@
|
||||||
</q-select>
|
</q-select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
v-if="relay.config.isPaidRelay"
|
<div v-if="relay.config.isPaidRelay && relay.config.wallet">
|
||||||
class="row items-center no-wrap q-mb-md"
|
<div class="row items-center no-wrap q-mb-md">
|
||||||
>
|
<div class="col-3 q-pr-lg">Cost to join (sats):</div>
|
||||||
<div class="col-3 q-pr-lg">Cost to join (sats):</div>
|
<div class="col-3 q-pr-lg">
|
||||||
<div class="col-3 q-pr-lg">
|
<q-input
|
||||||
<q-input
|
filled
|
||||||
filled
|
dense
|
||||||
dense
|
v-model.trim="relay.config.costToJoin"
|
||||||
v-model.trim="relay.config.costToJoin"
|
type="number"
|
||||||
type="number"
|
min="0"
|
||||||
min="0"
|
></q-input>
|
||||||
></q-input>
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<q-badge
|
||||||
|
v-if="relay.config.costToJoin == 0"
|
||||||
|
color="green"
|
||||||
|
class="float-left"
|
||||||
|
><span>Free to join</span>
|
||||||
|
</q-badge>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6">
|
<div class="row items-center no-wrap q-mb-md">
|
||||||
<q-badge
|
<div class="col-3 q-pr-lg">Storage cost per Kilo-Byte (sats):</div>
|
||||||
v-if="relay.config.costToJoin == 0"
|
<div class="col-3 q-pr-lg">
|
||||||
color="green"
|
<q-input
|
||||||
class="float-left"
|
filled
|
||||||
><span>Free to join</span>
|
dense
|
||||||
</q-badge>
|
v-model.trim="relay.config.storageCostPerKb"
|
||||||
</div>
|
type="number"
|
||||||
</div>
|
min="0"
|
||||||
<div
|
></q-input>
|
||||||
v-if="relay.config.isPaidRelay"
|
</div>
|
||||||
class="row items-center no-wrap q-mb-md"
|
<div class="col-6">
|
||||||
>
|
<q-badge
|
||||||
<div class="col-3 q-pr-lg">Storage cost per Kilo-Byte (sats):</div>
|
v-if="relay.config.storageCostPerKb == 0"
|
||||||
<div class="col-3 q-pr-lg">
|
color="green"
|
||||||
<q-input
|
class="float-left"
|
||||||
filled
|
><span>Unlimited storage</span>
|
||||||
dense
|
</q-badge>
|
||||||
v-model.trim="relay.config.storageCostPerKb"
|
</div>
|
||||||
type="number"
|
|
||||||
min="0"
|
|
||||||
></q-input>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<q-badge
|
|
||||||
v-if="relay.config.storageCostPerKb == 0"
|
|
||||||
color="green"
|
|
||||||
class="float-left"
|
|
||||||
><span>Unlimited storage</span>
|
|
||||||
</q-badge>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
v-if="relay.config.isPaidRelay && relay.config.storageCostPerKb != 0"
|
|
||||||
class="row items-center no-wrap q-mb-md"
|
|
||||||
>
|
|
||||||
<div class="col-3 q-pr-lg">Free storage (kb):</div>
|
|
||||||
<div class="col-3 q-pr-lg">
|
|
||||||
<q-input
|
|
||||||
filled
|
|
||||||
dense
|
|
||||||
v-model.trim="relay.config.freeStorage"
|
|
||||||
type="number"
|
|
||||||
min="0"
|
|
||||||
></q-input>
|
|
||||||
</div>
|
|
||||||
<div class="col-6">
|
|
||||||
<q-badge
|
|
||||||
v-if="relay.config.freeStorage == 0"
|
|
||||||
color="orange"
|
|
||||||
class="float-left"
|
|
||||||
><span>No free storage</span>
|
|
||||||
</q-badge>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</q-tab-panel>
|
</q-tab-panel>
|
||||||
<q-tab-panel name="config">
|
<q-tab-panel name="config">
|
||||||
<div v-if="relay">
|
<div v-if="relay">
|
||||||
|
<!-- <div class="row items-center no-wrap q-mb-md">
|
||||||
|
<div class="col-3 q-pr-lg">Free Storage:</div>
|
||||||
|
<div class="col-2 q-pr-lg">
|
||||||
|
<q-toggle
|
||||||
|
color="secodary"
|
||||||
|
v-model="relay.config.hasFreeStorage"
|
||||||
|
></q-toggle>
|
||||||
|
</div>
|
||||||
|
<div class="col-2 q-pr-lg">
|
||||||
|
<q-input
|
||||||
|
filled
|
||||||
|
dense
|
||||||
|
v-model.trim="relay.config.freeStorageAmount"
|
||||||
|
type="number"
|
||||||
|
min="0"
|
||||||
|
hint="Value"
|
||||||
|
></q-input>
|
||||||
|
</div>
|
||||||
|
<div class="col-2 q-pr-lg">
|
||||||
|
<q-select
|
||||||
|
filled
|
||||||
|
dense
|
||||||
|
v-model="relay.config.freeStorageXXX"
|
||||||
|
type="text"
|
||||||
|
hint="Unit"
|
||||||
|
:options="storageUnits"
|
||||||
|
></q-select>
|
||||||
|
</div>
|
||||||
|
<div class="col-2 q-pr-lg">
|
||||||
|
<q-select
|
||||||
|
filled
|
||||||
|
dense
|
||||||
|
v-model="relay.config.createdAtSecondsPast"
|
||||||
|
type="number"
|
||||||
|
hint="Seconds"
|
||||||
|
:options="fullStorageActions"
|
||||||
|
></q-select>
|
||||||
|
</div>
|
||||||
|
<div class="col-1 q-pb-md">
|
||||||
|
<q-icon name="info" class="cursor-pointer">
|
||||||
|
<q-tooltip>
|
||||||
|
NIP 22: Lower limit within which a relay will consider an
|
||||||
|
event's created_at to be acceptable.
|
||||||
|
</q-tooltip></q-icon
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
|
||||||
<div class="row items-center no-wrap q-mb-md">
|
<div class="row items-center no-wrap q-mb-md">
|
||||||
<div class="col-3 q-pr-lg">Created At in Past:</div>
|
<div class="col-3 q-pr-lg">Created At in Past:</div>
|
||||||
<div class="col-2 q-pr-lg">
|
<div class="col-2 q-pr-lg">
|
||||||
|
|
@ -258,6 +318,34 @@
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<q-separator></q-separator>
|
||||||
|
<div class="row items-center no-wrap q-mb-md q-mt-md">
|
||||||
|
<div class="col-3 q-pr-lg">Full Storage Action:</div>
|
||||||
|
<div class="col-3 q-pr-lg">
|
||||||
|
<q-select
|
||||||
|
filled
|
||||||
|
dense
|
||||||
|
emit-value
|
||||||
|
v-model="relay.config.fullStorageAction"
|
||||||
|
type="text"
|
||||||
|
:options="fullStorageActions"
|
||||||
|
></q-select>
|
||||||
|
</div>
|
||||||
|
<div class="col-6">
|
||||||
|
<q-icon name="info" class="cursor-pointer">
|
||||||
|
<q-tooltip>
|
||||||
|
Action to be taken when the storage limit (if any) has been
|
||||||
|
reached.
|
||||||
|
</q-tooltip></q-icon
|
||||||
|
>
|
||||||
|
<q-badge
|
||||||
|
v-if="relay.config.limitPerFilter == 0"
|
||||||
|
color="green"
|
||||||
|
class="float-left"
|
||||||
|
><span>No Limit</span>
|
||||||
|
</q-badge>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row items-center no-wrap q-mb-md">
|
<div class="row items-center no-wrap q-mb-md">
|
||||||
<div class="col-3 q-pr-lg">Limit per filter:</div>
|
<div class="col-3 q-pr-lg">Limit per filter:</div>
|
||||||
<div class="col-3 q-pr-lg">
|
<div class="col-3 q-pr-lg">
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,15 @@ async function relayDetails(path) {
|
||||||
y.push(i)
|
y.push(i)
|
||||||
}
|
}
|
||||||
return y
|
return y
|
||||||
|
},
|
||||||
|
storageUnits: function () {
|
||||||
|
return ['KB', 'MB']
|
||||||
|
},
|
||||||
|
fullStorageActions: function () {
|
||||||
|
return [
|
||||||
|
{value: 'block', label: 'Block New Events'},
|
||||||
|
{value: 'prune', label: 'Prune Old Events'}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue