Revert "Merge branch 'revert-70d30887' into 'main'"

This reverts commit 0c2f082281, reversing
changes made to 70d3088735.
This commit is contained in:
P. Reis 2024-12-03 20:04:18 -03:00
parent 0c2f082281
commit e0d9e83f28

View file

@ -1,4 +1,4 @@
import { NostrFilter, NSchema as n } from '@nostrify/nostrify'; import { NostrEvent, NostrFilter, NSchema as n } from '@nostrify/nostrify';
import { nip19 } from 'nostr-tools'; import { nip19 } from 'nostr-tools';
import { z } from 'zod'; import { z } from 'zod';
@ -20,6 +20,7 @@ import { hydrateEvents } from '@/storages/hydrate.ts';
import { bech32ToPubkey } from '@/utils.ts'; import { bech32ToPubkey } from '@/utils.ts';
import { addTag, deleteTag, findReplyTag, getTagSet } from '@/utils/tags.ts'; import { addTag, deleteTag, findReplyTag, getTagSet } from '@/utils/tags.ts';
import { getPubkeysBySearch } from '@/utils/search.ts'; import { getPubkeysBySearch } from '@/utils/search.ts';
import { MastodonAccount } from '@/entities/MastodonAccount.ts';
const usernameSchema = z const usernameSchema = z
.string().min(1).max(30) .string().min(1).max(30)
@ -288,62 +289,76 @@ const updateCredentialsController: AppController = async (c) => {
const pubkey = await signer.getPublicKey(); const pubkey = await signer.getPublicKey();
const body = await parseBody(c.req.raw); const body = await parseBody(c.req.raw);
const result = updateCredentialsSchema.safeParse(body); const result = updateCredentialsSchema.safeParse(body);
const store = await Storages.db();
if (!result.success) { if (!result.success) {
return c.json(result.error, 422); return c.json(result.error, 422);
} }
const event = await updateEvent( const keys = Object.keys(result.data);
{ kinds: [0], authors: [pubkey], limit: 1 }, let event: NostrEvent | undefined;
async (prev) => {
const meta = n.json().pipe(metadataSchema).catch({}).parse(prev.content);
const {
avatar: avatarFile,
header: headerFile,
display_name,
fields_attributes,
note,
nip05,
lud16,
website,
bot,
} = result.data;
const [avatar, header] = await Promise.all([ if (keys.length === 1 && keys[0] === 'pleroma_settings_store') {
avatarFile ? uploadFile(c, avatarFile, { pubkey }) : undefined, event = (await store.query([{ kinds: [0], authors: [pubkey] }]))[0];
headerFile ? uploadFile(c, headerFile, { pubkey }) : undefined, } else {
]); event = await updateEvent(
{ kinds: [0], authors: [pubkey], limit: 1 },
async (prev) => {
const meta = n.json().pipe(metadataSchema).catch({}).parse(prev.content);
const {
avatar: avatarFile,
header: headerFile,
display_name,
fields_attributes,
note,
nip05,
lud16,
website,
bot,
} = result.data;
meta.name = display_name ?? meta.name; const [avatar, header] = await Promise.all([
meta.about = note ?? meta.about; avatarFile ? uploadFile(c, avatarFile, { pubkey }) : undefined,
meta.picture = avatar?.url ?? meta.picture; headerFile ? uploadFile(c, headerFile, { pubkey }) : undefined,
meta.banner = header?.url ?? meta.banner; ]);
meta.nip05 = nip05 ?? meta.nip05;
meta.lud16 = lud16 ?? meta.lud16;
meta.website = website ?? meta.website;
meta.bot = bot ?? meta.bot;
if (avatarFile === '') delete meta.picture; meta.name = display_name ?? meta.name;
if (headerFile === '') delete meta.banner; meta.about = note ?? meta.about;
if (nip05 === '') delete meta.nip05; meta.picture = avatar?.url ?? meta.picture;
if (lud16 === '') delete meta.lud16; meta.banner = header?.url ?? meta.banner;
if (website === '') delete meta.website; meta.nip05 = nip05 ?? meta.nip05;
meta.lud16 = lud16 ?? meta.lud16;
meta.website = website ?? meta.website;
meta.bot = bot ?? meta.bot;
if (fields_attributes) { if (avatarFile === '') delete meta.picture;
meta.fields = fields_attributes.map(({ name, value }) => [name, value]); if (headerFile === '') delete meta.banner;
} if (nip05 === '') delete meta.nip05;
if (lud16 === '') delete meta.lud16;
if (website === '') delete meta.website;
return { if (fields_attributes) {
kind: 0, meta.fields = fields_attributes.map(({ name, value }) => [name, value]);
content: JSON.stringify(meta), }
tags: [],
}; return {
}, kind: 0,
c, content: JSON.stringify(meta),
); tags: [],
};
},
c,
);
}
const settingsStore = result.data.pleroma_settings_store; const settingsStore = result.data.pleroma_settings_store;
const account = await renderAccount(event, { withSource: true, settingsStore });
let account: MastodonAccount;
if (event) {
account = await renderAccount(event, { withSource: true, settingsStore });
} else {
account = await accountFromPubkey(pubkey, { withSource: true, settingsStore });
}
if (settingsStore) { if (settingsStore) {
await createEvent({ await createEvent({