mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
refactor: set nip05 to null in handleRevokeNip05 function
This commit is contained in:
parent
822f623018
commit
7525cd6ef9
1 changed files with 25 additions and 6 deletions
|
|
@ -18,6 +18,7 @@ import {
|
||||||
NRelay,
|
NRelay,
|
||||||
NSchema as n,
|
NSchema as n,
|
||||||
} from '@nostrify/nostrify';
|
} from '@nostrify/nostrify';
|
||||||
|
import { nip19 } from 'nostr-tools';
|
||||||
import { logi } from '@soapbox/logi';
|
import { logi } from '@soapbox/logi';
|
||||||
import { UpdateObject } from 'kysely';
|
import { UpdateObject } from 'kysely';
|
||||||
import { LRUCache } from 'lru-cache';
|
import { LRUCache } from 'lru-cache';
|
||||||
|
|
@ -41,7 +42,7 @@ import { parseNoteContent, stripimeta } from '@/utils/note.ts';
|
||||||
import { SimpleLRU } from '@/utils/SimpleLRU.ts';
|
import { SimpleLRU } from '@/utils/SimpleLRU.ts';
|
||||||
import { unfurlCardCached } from '@/utils/unfurl.ts';
|
import { unfurlCardCached } from '@/utils/unfurl.ts';
|
||||||
import { renderWebPushNotification } from '@/views/mastodon/push.ts';
|
import { renderWebPushNotification } from '@/views/mastodon/push.ts';
|
||||||
import { nip19 } from 'nostr-tools';
|
import { refreshAuthorStats } from '@/utils/stats.ts';
|
||||||
|
|
||||||
interface DittoRelayStoreOpts {
|
interface DittoRelayStoreOpts {
|
||||||
db: DittoDB;
|
db: DittoDB;
|
||||||
|
|
@ -121,7 +122,7 @@ export class DittoRelayStore implements NRelay {
|
||||||
* It is idempotent, so it can be called multiple times for the same event.
|
* It is idempotent, so it can be called multiple times for the same event.
|
||||||
*/
|
*/
|
||||||
async event(event: DittoEvent, opts: { publish?: boolean; signal?: AbortSignal } = {}): Promise<void> {
|
async event(event: DittoEvent, opts: { publish?: boolean; signal?: AbortSignal } = {}): Promise<void> {
|
||||||
const { conf, relay } = this.opts;
|
const { conf, relay, db } = this.opts;
|
||||||
const { signal } = opts;
|
const { signal } = opts;
|
||||||
|
|
||||||
// Skip events that have already been encountered.
|
// Skip events that have already been encountered.
|
||||||
|
|
@ -183,11 +184,11 @@ export class DittoRelayStore implements NRelay {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await this.handleRevokeNip05(event, signal);
|
|
||||||
await relay.event(purifyEvent(event), { signal });
|
await relay.event(purifyEvent(event), { signal });
|
||||||
} finally {
|
} finally {
|
||||||
// This needs to run in steps, and should not block the API from responding.
|
// This needs to run in steps, and should not block the API from responding.
|
||||||
Promise.allSettled([
|
Promise.allSettled([
|
||||||
|
await this.handleRevokeNip05(event, signal),
|
||||||
this.handleZaps(event),
|
this.handleZaps(event),
|
||||||
this.updateAuthorData(event, signal),
|
this.updateAuthorData(event, signal),
|
||||||
this.prewarmLinkPreview(event, signal),
|
this.prewarmLinkPreview(event, signal),
|
||||||
|
|
@ -246,9 +247,9 @@ export class DittoRelayStore implements NRelay {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sets the nip05 column to null */
|
/** Sets the nip05 column to null if the event is a revocation of a nip05 */
|
||||||
private async handleRevokeNip05(event: NostrEvent, signal?: AbortSignal) {
|
private async handleRevokeNip05(event: NostrEvent, signal?: AbortSignal) {
|
||||||
const { conf, relay } = this.opts;
|
const { conf, relay, db } = this.opts;
|
||||||
|
|
||||||
if (event.kind !== 5 || await conf.signer.getPublicKey() !== event.pubkey) {
|
if (event.kind !== 5 || await conf.signer.getPublicKey() !== event.pubkey) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -268,7 +269,25 @@ export class DittoRelayStore implements NRelay {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.updateAuthorData(author);
|
await db.kysely.insertInto('author_stats')
|
||||||
|
.values({
|
||||||
|
pubkey: event.pubkey,
|
||||||
|
followers_count: 0,
|
||||||
|
following_count: 0,
|
||||||
|
notes_count: 0,
|
||||||
|
search: '',
|
||||||
|
})
|
||||||
|
.onConflict((oc) =>
|
||||||
|
oc.column('pubkey').doUpdateSet({
|
||||||
|
nip05: null,
|
||||||
|
nip05_domain: null,
|
||||||
|
nip05_hostname: null,
|
||||||
|
nip05_last_verified_at: event.created_at,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
.execute();
|
||||||
|
|
||||||
|
return author;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Parse kind 0 metadata and track indexes in the database. */
|
/** Parse kind 0 metadata and track indexes in the database. */
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue