28 lines
870 B
TypeScript
28 lines
870 B
TypeScript
import { NDKEvent, type NDKEventId, NDKKind } from '@nostr-dev-kit/ndk';
|
|
|
|
export class FolderLabel {
|
|
id: NDKEventId;
|
|
name: string;
|
|
icon: string;
|
|
|
|
constructor() {
|
|
this.id = '';
|
|
this.name = '';
|
|
this.icon = '';
|
|
}
|
|
|
|
static async fromDecryptedMessage(
|
|
decryptedMessage: NDKEvent,
|
|
encryptedMessage: NDKEvent
|
|
): Promise<FolderLabel> {
|
|
if (decryptedMessage.kind !== NDKKind.Label) throw new Error('Not a label');
|
|
let labelType = decryptedMessage.tags.find((t) => t[0] === 'label-type')?.[1];
|
|
if (!labelType) throw new Error('No label type');
|
|
if (labelType !== 'folder') throw new Error('Not a folder');
|
|
let label = new FolderLabel();
|
|
label.id = encryptedMessage.id;
|
|
label.name = decryptedMessage.tags.find((t) => t[0] === 'name')?.[1] ?? 'No name';
|
|
label.icon = decryptedMessage.tags.find((t) => t[0] === 'icon')?.[1] ?? '';
|
|
return label;
|
|
}
|
|
}
|