feat: attempt to delete repost if original post is deleted
This commit is contained in:
parent
bd5899029e
commit
ba08958b30
|
@ -181,7 +181,7 @@ const reblogStatusController: AppController = async (c) => {
|
||||||
kind: 1,
|
kind: 1,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (event == undefined) {
|
if (!event) {
|
||||||
return c.json({ error: 'Event not found.' }, 404);
|
return c.json({ error: 'Event not found.' }, 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,11 +189,10 @@ const reblogStatusController: AppController = async (c) => {
|
||||||
|
|
||||||
const reblogEvent = await createEvent({
|
const reblogEvent = await createEvent({
|
||||||
kind: 6,
|
kind: 6,
|
||||||
content: JSON.stringify(event),
|
|
||||||
tags,
|
tags,
|
||||||
}, c);
|
}, c);
|
||||||
|
|
||||||
const status = await renderReblog(reblogEvent, reblogEvent.pubkey);
|
const status = await renderReblog(reblogEvent);
|
||||||
|
|
||||||
return c.json(status);
|
return c.json(status);
|
||||||
};
|
};
|
||||||
|
|
|
@ -57,8 +57,8 @@ async function renderStatuses(c: AppContext, filters: NostrFilter[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const statuses = await Promise.all(events.map((event) => {
|
const statuses = await Promise.all(events.map((event) => {
|
||||||
if (event.kind == 6) {
|
if (event.kind === 6) {
|
||||||
return renderReblog(event, c.get('pubkey'));
|
return renderReblog(event)
|
||||||
}
|
}
|
||||||
return renderStatus(event, c.get('pubkey'));
|
return renderStatus(event, c.get('pubkey'));
|
||||||
}));
|
}));
|
||||||
|
|
|
@ -22,4 +22,5 @@ export interface DittoEvent extends NostrEvent {
|
||||||
event_stats?: EventStats;
|
event_stats?: EventStats;
|
||||||
d_author?: DittoEvent;
|
d_author?: DittoEvent;
|
||||||
user?: DittoEvent;
|
user?: DittoEvent;
|
||||||
|
repost?: NostrEvent;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { Conf } from '@/config.ts';
|
||||||
import { nip19 } from '@/deps.ts';
|
import { nip19 } from '@/deps.ts';
|
||||||
import { type DittoEvent } from '@/interfaces/DittoEvent.ts';
|
import { type DittoEvent } from '@/interfaces/DittoEvent.ts';
|
||||||
import { getMediaLinks, parseNoteContent } from '@/note.ts';
|
import { getMediaLinks, parseNoteContent } from '@/note.ts';
|
||||||
import { getAuthor } from '@/queries.ts';
|
import { getAuthor, getEvent } from '@/queries.ts';
|
||||||
import { jsonMediaDataSchema } from '@/schemas/nostr.ts';
|
import { jsonMediaDataSchema } from '@/schemas/nostr.ts';
|
||||||
import { eventsDB } from '@/storages.ts';
|
import { eventsDB } from '@/storages.ts';
|
||||||
import { findReplyTag } from '@/tags.ts';
|
import { findReplyTag } from '@/tags.ts';
|
||||||
|
@ -98,15 +98,24 @@ async function renderStatus(event: DittoEvent, viewerPubkey?: string) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async function renderReblog(event: DittoEvent, viewerPubkey?: string) {
|
async function renderReblog(event: DittoEvent) {
|
||||||
if (event.author == undefined) return;
|
if (!event.author) return;
|
||||||
|
|
||||||
const reblog = await renderStatus(JSON.parse(event.content), viewerPubkey);
|
for (let i = 0; i < event.tags.length; i++) {
|
||||||
|
if (event.tags[i][0] === 'e') {
|
||||||
|
event.repost = await getEvent(event.tags[i][1], {kind:1})
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!event.repost) return;
|
||||||
|
|
||||||
|
const reblog = await renderStatus(event.repost);
|
||||||
return {
|
return {
|
||||||
id: event.id,
|
id: event.id,
|
||||||
account: await renderAccount(event.author),
|
account: await renderAccount(event.author),
|
||||||
reblogged: true,
|
reblogged: true,
|
||||||
reblog,
|
reblog
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue