Skip to content

Commit

Permalink
Use meid7 for Note
Browse files Browse the repository at this point in the history
  • Loading branch information
mei23 committed Apr 21, 2019
1 parent da8d60c commit 660659a
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/misc/gen-id.ts
@@ -0,0 +1,12 @@
import { genMeid7 } from './id/meid7';

const method = 'meid7';

export function genId(date?: Date): string {
if (!date || (date > new Date())) date = new Date();

switch (method) {
case 'meid7': return genMeid7(date);
default: throw new Error('unknown id generation method');
}
}
28 changes: 28 additions & 0 deletions src/misc/id/meid7.ts
@@ -0,0 +1,28 @@
const CHARS = '0123456789abcdef';

// 4bit Fixed hex value '7'
// 44bit UNIX Time ms in Hex
// 48bit Random value in Hex

function getTime(time: number) {
if (time < 0) time = 0;
if (time === 0) {
return CHARS[0];
}

return time.toString(16).padStart(11, CHARS[0]);
}

function getRandom() {
let str = '';

for (let i = 0; i < 12; i++) {
str += CHARS[Math.floor(Math.random() * CHARS.length)];
}

return str;
}

export function genMeid7(date: Date): string {
return '7' + getTime(date.getTime()) + getRandom();
}
2 changes: 2 additions & 0 deletions src/services/note/create.ts
Expand Up @@ -35,6 +35,7 @@ import { toASCII } from 'punycode';
import extractMentions from '../../misc/extract-mentions';
import extractEmojis from '../../misc/extract-emojis';
import extractHashtags from '../../misc/extract-hashtags';
import { genId } from '../../misc/gen-id';

type NotificationType = 'reply' | 'renote' | 'quote' | 'mention';

Expand Down Expand Up @@ -454,6 +455,7 @@ async function publish(user: IUser, note: INote, noteObj: any, reply: INote, ren

async function insertNote(user: IUser, data: Option, tags: string[], emojis: string[], mentionedUsers: IUser[]) {
const insert: any = {
_id: genId(data.createdAt),
createdAt: data.createdAt,
fileIds: data.files ? data.files.map(file => file._id) : [],
replyId: data.reply ? data.reply._id : null,
Expand Down

0 comments on commit 660659a

Please sign in to comment.