trilium/apps/client/src/entities/fattachment.ts
2025-04-22 22:12:56 +03:00

66 lines
1.6 KiB
TypeScript

import type { Froca } from "../services/froca-interface.js";
export interface FAttachmentRow {
attachmentId: string;
ownerId: string;
role: string;
mime: string;
title: string;
dateModified: string;
utcDateModified: string;
utcDateScheduledForErasureSince: string;
contentLength: number;
}
/**
* Attachment is a file directly tied into a note without
* being a hidden child.
*/
class FAttachment {
private froca: Froca;
attachmentId!: string;
ownerId!: string;
role!: string;
mime!: string;
title!: string;
isProtected!: boolean; // TODO: Is this used?
private dateModified!: string;
utcDateModified!: string;
utcDateScheduledForErasureSince!: string;
/**
* optionally added to the entity
*/
contentLength!: number;
constructor(froca: Froca, row: FAttachmentRow) {
/** @type {Froca} */
this.froca = froca;
this.update(row);
}
update(row: FAttachmentRow) {
this.attachmentId = row.attachmentId;
this.ownerId = row.ownerId;
this.role = row.role;
this.mime = row.mime;
this.title = row.title;
this.dateModified = row.dateModified;
this.utcDateModified = row.utcDateModified;
this.utcDateScheduledForErasureSince = row.utcDateScheduledForErasureSince;
this.contentLength = row.contentLength;
this.froca.attachments[this.attachmentId] = this;
}
getNote() {
return this.froca.notes[this.ownerId];
}
async getBlob() {
return await this.froca.getBlob("attachments", this.attachmentId);
}
}
export default FAttachment;