summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/notes
diff options
context:
space:
mode:
authorMar0xy <marie@kaifa.ch>2023-10-22 03:00:35 +0200
committerMar0xy <marie@kaifa.ch>2023-10-22 03:00:35 +0200
commitce83c483c6053c2e49d7567392f85c70b4bf9392 (patch)
tree4cf40466038ec7008b9cffe68c44453482bcd669 /packages/backend/src/server/api/endpoints/notes
parentupd: search filters (diff)
downloadsharkey-ce83c483c6053c2e49d7567392f85c70b4bf9392.tar.gz
sharkey-ce83c483c6053c2e49d7567392f85c70b4bf9392.tar.bz2
sharkey-ce83c483c6053c2e49d7567392f85c70b4bf9392.zip
add: view previous versions of notes
Closes transfem-org/Sharkey#103
Diffstat (limited to 'packages/backend/src/server/api/endpoints/notes')
-rw-r--r--packages/backend/src/server/api/endpoints/notes/versions.ts63
1 files changed, 63 insertions, 0 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/versions.ts b/packages/backend/src/server/api/endpoints/notes/versions.ts
new file mode 100644
index 0000000000..9733d781a4
--- /dev/null
+++ b/packages/backend/src/server/api/endpoints/notes/versions.ts
@@ -0,0 +1,63 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and other misskey contributors
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Injectable } from '@nestjs/common';
+import { Endpoint } from '@/server/api/endpoint-base.js';
+import { GetterService } from '@/server/api/GetterService.js';
+import { ApiError } from '../../error.js';
+
+export const meta = {
+ tags: ['notes'],
+
+ requireCredential: false,
+
+ res: {
+ type: 'object',
+ optional: false, nullable: false,
+ },
+
+ errors: {
+ noSuchNote: {
+ message: 'No such note.',
+ code: 'NO_SUCH_NOTE',
+ id: '24fcbfc6-2e37-42b6-8388-c29b3861a08d',
+ },
+ },
+} as const;
+
+export const paramDef = {
+ type: 'object',
+ properties: {
+ noteId: { type: 'string', format: 'misskey:id' },
+ },
+ required: ['noteId'],
+} as const;
+
+@Injectable()
+export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-disable-line import/no-default-export
+ constructor(
+ private getterService: GetterService,
+ ) {
+ super(meta, paramDef, async (ps, me) => {
+ const edits = await this.getterService.getEdits(ps.noteId).catch(err => {
+ if (err.id === '9725d0ce-ba28-4dde-95a7-2cbb2c15de24') throw new ApiError(meta.errors.noSuchNote);
+ throw err;
+ });
+
+ let editArray = [];
+
+ for (const edit of edits) {
+ editArray.push({
+ updatedAt: new Date(edit.updatedAt).toLocaleString('UTC', { hour: 'numeric', minute: 'numeric', second: 'numeric', year: 'numeric', month: 'short', day: 'numeric' }),
+ text: edit.text,
+ });
+ }
+
+ editArray = editArray.sort((a, b) => { return new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime(); });
+
+ return editArray;
+ });
+ }
+}