Use meid7 for Note
This commit is contained in:
		
							parent
							
								
									6b726eea39
								
							
						
					
					
						commit
						71fc84e224
					
				
					 3 changed files with 42 additions and 0 deletions
				
			
		
							
								
								
									
										12
									
								
								src/misc/gen-id.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/misc/gen-id.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -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
									
								
								src/misc/id/meid7.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/misc/id/meid7.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -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(); | ||||
| } | ||||
|  | @ -34,6 +34,7 @@ import Instance from '../../models/instance'; | |||
| 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'; | ||||
| 
 | ||||
|  | @ -434,6 +435,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, | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue