feat: refresh merchant from nostr (#85)
This commit is contained in:
parent
656723ed5e
commit
2dc5c5479f
6 changed files with 55 additions and 5 deletions
2
crud.py
2
crud.py
|
|
@ -205,7 +205,7 @@ async def create_stall(merchant_id: str, data: PartialStall) -> Stall:
|
|||
)
|
||||
|
||||
stall = await get_stall(merchant_id, stall_id)
|
||||
assert stall, "Newly created stall couldn't be retrieved"
|
||||
assert stall, f"Newly created stall couldn't be retrieved. Id: {stall_id}"
|
||||
return stall
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ class NostrClient:
|
|||
f"Subscribed to events for: {len(public_keys)} keys. New subscription id: {self.subscription_id}"
|
||||
)
|
||||
|
||||
async def merchant_temp_subscription(self, pk, duration=5):
|
||||
async def merchant_temp_subscription(self, pk, duration=10):
|
||||
dm_filters = self._filters_for_direct_messages([pk], 0)
|
||||
stall_filters = self._filters_for_stall_events([pk], 0)
|
||||
product_filters = self._filters_for_product_events([pk], 0)
|
||||
|
|
@ -125,7 +125,7 @@ class NostrClient:
|
|||
|
||||
asyncio.create_task(unsubscribe_with_delay(subscription_id, duration))
|
||||
|
||||
async def user_profile_temp_subscribe(self, public_key: str, duration=30) -> List:
|
||||
async def user_profile_temp_subscribe(self, public_key: str, duration=5) -> List:
|
||||
try:
|
||||
profile_filter = [{"kinds": [0], "authors": [public_key]}]
|
||||
subscription_id = "profile-" + urlsafe_short_hash()[:32]
|
||||
|
|
|
|||
|
|
@ -24,6 +24,14 @@
|
|||
>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-item @click="requeryMerchantData" clickable v-close-popup>
|
||||
<q-item-section>
|
||||
<q-item-label>Refresh from Nostr</q-item-label>
|
||||
<q-item-label caption
|
||||
>Requery all stalls, products and orders from Nostr</q-item-label
|
||||
>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
<q-item @click="republishMerchantData" clickable v-close-popup>
|
||||
<q-item-section>
|
||||
<q-item-label>Republish to Nostr</q-item-label>
|
||||
|
|
@ -32,6 +40,7 @@
|
|||
>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
|
||||
<q-item @click="deleteMerchantTables" clickable v-close-popup>
|
||||
<q-item-section>
|
||||
<q-item-label>Delete from DB</q-item-label>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,23 @@ async function merchantDetails(path) {
|
|||
LNbits.utils.notifyApiError(error)
|
||||
}
|
||||
},
|
||||
requeryMerchantData: async function () {
|
||||
try {
|
||||
await LNbits.api.request(
|
||||
'GET',
|
||||
`/nostrmarket/api/v1/merchant/${this.merchantId}/nostr`,
|
||||
this.adminkey
|
||||
)
|
||||
this.$q.notify({
|
||||
type: 'positive',
|
||||
message: 'Merchant data refreshed from Nostr',
|
||||
timeout: 5000
|
||||
})
|
||||
} catch (error) {
|
||||
console.warn(error)
|
||||
LNbits.utils.notifyApiError(error)
|
||||
}
|
||||
},
|
||||
deleteMerchantTables: function () {
|
||||
LNbits.utils
|
||||
.confirmDialog(
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
<div class="col-md-4 col-sm-6">
|
||||
|
||||
<q-btn-dropdown @click="getOrders()" :disable="search.restoring" outline unelevated split
|
||||
class="q-pt-md float-right" :label="search.restoring ? 'Restoring Orders...' : 'Search Orders'">
|
||||
class="q-pt-md float-right" :label="search.restoring ? 'Restoring Orders...' : 'Load Orders'">
|
||||
<q-spinner v-if="search.restoring" color="primary" size="2.55em" class="q-pt-md float-right"></q-spinner>
|
||||
<q-item @click="restoreOrders" clickable v-close-popup>
|
||||
<q-item-section>
|
||||
|
|
|
|||
26
views_api.py
26
views_api.py
|
|
@ -219,7 +219,31 @@ async def api_republish_merchant(
|
|||
logger.warning(ex)
|
||||
raise HTTPException(
|
||||
status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
|
||||
detail="Cannot get merchant",
|
||||
detail="Cannot republish to nostr",
|
||||
)
|
||||
|
||||
@nostrmarket_ext.get("/api/v1/merchant/{merchant_id}/nostr")
|
||||
async def api_refresh_merchant(
|
||||
merchant_id: str,
|
||||
wallet: WalletTypeInfo = Depends(require_admin_key),
|
||||
):
|
||||
try:
|
||||
merchant = await get_merchant_for_user(wallet.wallet.user)
|
||||
assert merchant, "Merchant cannot be found"
|
||||
assert merchant.id == merchant_id, "Wrong merchant ID"
|
||||
|
||||
await nostr_client.merchant_temp_subscription(merchant.public_key)
|
||||
|
||||
except AssertionError as ex:
|
||||
raise HTTPException(
|
||||
status_code=HTTPStatus.BAD_REQUEST,
|
||||
detail=str(ex),
|
||||
)
|
||||
except Exception as ex:
|
||||
logger.warning(ex)
|
||||
raise HTTPException(
|
||||
status_code=HTTPStatus.INTERNAL_SERVER_ERROR,
|
||||
detail="Cannot refresh from nostr",
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue