mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2024-11-30 09:53:46 -05:00
Move publicID
creation to Note.create
Before this commit, `Note.create()` did not return a complete object, as the `publicId` property was missing. This adds the generation of the property to the `create` method and moves the actual generation code from the `NotesService` to a utility method. Signed-off-by: David Mehren <git@herrmehren.de>
This commit is contained in:
parent
112e6d8c5d
commit
a2e8c3d031
3 changed files with 19 additions and 10 deletions
|
@ -21,6 +21,7 @@ import { AuthorColor } from './author-color.entity';
|
||||||
import { Tag } from './tag.entity';
|
import { Tag } from './tag.entity';
|
||||||
import { HistoryEntry } from '../history/history-entry.entity';
|
import { HistoryEntry } from '../history/history-entry.entity';
|
||||||
import { MediaUpload } from '../media/media-upload.entity';
|
import { MediaUpload } from '../media/media-upload.entity';
|
||||||
|
import { generatePublicId } from './utils';
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class Note {
|
export class Note {
|
||||||
|
@ -85,6 +86,7 @@ export class Note {
|
||||||
|
|
||||||
public static create(owner?: User, alias?: string): Note {
|
public static create(owner?: User, alias?: string): Note {
|
||||||
const newNote = new Note();
|
const newNote = new Note();
|
||||||
|
newNote.publicId = generatePublicId();
|
||||||
newNote.alias = alias ?? null;
|
newNote.alias = alias ?? null;
|
||||||
newNote.viewCount = 0;
|
newNote.viewCount = 0;
|
||||||
newNote.owner = owner ?? null;
|
newNote.owner = owner ?? null;
|
||||||
|
|
|
@ -94,7 +94,6 @@ export class NotesService {
|
||||||
newNote.revisions = Promise.resolve([
|
newNote.revisions = Promise.resolve([
|
||||||
Revision.create(noteContent, noteContent),
|
Revision.create(noteContent, noteContent),
|
||||||
]);
|
]);
|
||||||
newNote.publicId = this.generatePublicId();
|
|
||||||
if (alias) {
|
if (alias) {
|
||||||
newNote.alias = alias;
|
newNote.alias = alias;
|
||||||
this.checkNoteIdOrAlias(alias);
|
this.checkNoteIdOrAlias(alias);
|
||||||
|
@ -213,15 +212,6 @@ export class NotesService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Generate publicId for a note.
|
|
||||||
* This is a randomly generated 128-bit value encoded with base32-encode using the crockford variant and converted to lowercase.
|
|
||||||
*/
|
|
||||||
generatePublicId(): string {
|
|
||||||
const randomId = randomBytes(128);
|
|
||||||
return base32Encode(randomId, 'Crockford').toLowerCase();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @async
|
* @async
|
||||||
* Delete a note
|
* Delete a note
|
||||||
|
|
17
src/notes/utils.ts
Normal file
17
src/notes/utils.ts
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file)
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
import base32Encode from 'base32-encode';
|
||||||
|
import { randomBytes } from 'crypto';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate publicId for a note.
|
||||||
|
* This is a randomly generated 128-bit value encoded with base32-encode using the crockford variant and converted to lowercase.
|
||||||
|
*/
|
||||||
|
export function generatePublicId(): string {
|
||||||
|
const randomId = randomBytes(128);
|
||||||
|
return base32Encode(randomId, 'Crockford').toLowerCase();
|
||||||
|
}
|
Loading…
Reference in a new issue