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 extractMentions from '../../misc/extract-mentions'; | ||||||
| import extractEmojis from '../../misc/extract-emojis'; | import extractEmojis from '../../misc/extract-emojis'; | ||||||
| import extractHashtags from '../../misc/extract-hashtags'; | import extractHashtags from '../../misc/extract-hashtags'; | ||||||
|  | import { genId } from '../../misc/gen-id'; | ||||||
| 
 | 
 | ||||||
| type NotificationType = 'reply' | 'renote' | 'quote' | 'mention'; | 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[]) { | async function insertNote(user: IUser, data: Option, tags: string[], emojis: string[], mentionedUsers: IUser[]) { | ||||||
| 	const insert: any = { | 	const insert: any = { | ||||||
|  | 		_id: genId(data.createdAt), | ||||||
| 		createdAt: data.createdAt, | 		createdAt: data.createdAt, | ||||||
| 		fileIds: data.files ? data.files.map(file => file._id) : [], | 		fileIds: data.files ? data.files.map(file => file._id) : [], | ||||||
| 		replyId: data.reply ? data.reply._id : null, | 		replyId: data.reply ? data.reply._id : null, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue