Clear nostr event cache from Settings
All checks were successful
CI / Lint (pull_request) Successful in 32s
CI / Test (pull_request) Successful in 57s
Release Drafter / Update release notes draft (pull_request) Successful in 7s

This commit is contained in:
2026-04-23 09:13:03 +01:00
parent 95961e680f
commit 3ddc85669f
3 changed files with 32 additions and 0 deletions

View File

@@ -12,6 +12,7 @@ const stripProtocol = (url) => (url ? url.replace(/^wss?:\/\//, '') : '');
export default class AppMenuSettingsNostr extends Component { export default class AppMenuSettingsNostr extends Component {
@service settings; @service settings;
@service nostrData; @service nostrData;
@service toast;
@tracked newReadRelay = ''; @tracked newReadRelay = '';
@tracked newWriteRelay = ''; @tracked newWriteRelay = '';
@@ -90,6 +91,16 @@ export default class AppMenuSettingsNostr extends Component {
this.settings.update('nostrWriteRelays', null); this.settings.update('nostrWriteRelays', null);
} }
@action
async clearCache() {
try {
await this.nostrData.clearCache();
this.toast.show('Nostr cache cleared');
} catch (e) {
this.toast.show(`Failed to clear Nostr cache: ${e.message}`);
}
}
<template> <template>
{{! template-lint-disable no-nested-interactive }} {{! template-lint-disable no-nested-interactive }}
<details> <details>
@@ -213,6 +224,18 @@ export default class AppMenuSettingsNostr extends Component {
</button> </button>
{{/if}} {{/if}}
</div> </div>
<div class="form-group">
<label>Cached data</label>
<button
type="button"
class="btn btn-outline btn-full"
{{on "click" this.clearCache}}
>
<Icon @name="database" @size={{18}} @color="var(--danger-color)" />
Clear profiles, photos, and reviews
</button>
</div>
</div> </div>
</details> </details>
</template> </template>

View File

@@ -356,6 +356,13 @@ export default class NostrDataService extends Service {
return 'Not connected'; return 'Not connected';
} }
async clearCache() {
await this._cachePromise;
if (this.cache) {
await this.cache.deleteAllEvents();
}
}
_cleanupSubscriptions() { _cleanupSubscriptions() {
if (this._requestSub) { if (this._requestSub) {
this._requestSub.unsubscribe(); this._requestSub.unsubscribe();

View File

@@ -7,6 +7,7 @@ import checkSquare from 'feather-icons/dist/icons/check-square.svg?raw';
import chevronLeft from 'feather-icons/dist/icons/chevron-left.svg?raw'; import chevronLeft from 'feather-icons/dist/icons/chevron-left.svg?raw';
import chevronRight from 'feather-icons/dist/icons/chevron-right.svg?raw'; import chevronRight from 'feather-icons/dist/icons/chevron-right.svg?raw';
import clock from 'feather-icons/dist/icons/clock.svg?raw'; import clock from 'feather-icons/dist/icons/clock.svg?raw';
import database from 'feather-icons/dist/icons/database.svg?raw';
import edit from 'feather-icons/dist/icons/edit.svg?raw'; import edit from 'feather-icons/dist/icons/edit.svg?raw';
import facebook from 'feather-icons/dist/icons/facebook.svg?raw'; import facebook from 'feather-icons/dist/icons/facebook.svg?raw';
import gift from 'feather-icons/dist/icons/gift.svg?raw'; import gift from 'feather-icons/dist/icons/gift.svg?raw';
@@ -153,6 +154,7 @@ const ICONS = {
'comedy-mask-and-tragedy-mask': comedyMaskAndTragedyMask, 'comedy-mask-and-tragedy-mask': comedyMaskAndTragedyMask,
croissant, croissant,
'cup-and-saucer': cupAndSaucer, 'cup-and-saucer': cupAndSaucer,
database,
donut, donut,
edit, edit,
eyeglasses, eyeglasses,