parent
							
								
									6b43c5c18c
								
							
						
					
					
						commit
						917e57d475
					
				
					 2 changed files with 14 additions and 7 deletions
				
			
		|  | @ -11,6 +11,11 @@ export default async (actor: IRemoteUser, activity: ILike) => { | |||
| 
 | ||||
| 	await extractEmojis(activity.tag || [], actor.host).catch(() => null); | ||||
| 
 | ||||
| 	await create(actor, note, activity._misskey_reaction || activity.content || activity.name); | ||||
| 	return `ok`; | ||||
| 	return await create(actor, note, activity._misskey_reaction || activity.content || activity.name).catch(e => { | ||||
| 		if (e.id === '51c42bb4-931a-456b-bff7-e5a8a70dd298') { | ||||
| 			return 'skip: already reacted'; | ||||
| 		} else { | ||||
| 			throw e; | ||||
| 		} | ||||
| 	}).then(() => 'ok'); | ||||
| }; | ||||
|  |  | |||
|  | @ -13,12 +13,13 @@ import { createNotification } from '../../create-notification'; | |||
| import deleteReaction from './delete'; | ||||
| import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error'; | ||||
| import { NoteReaction } from '../../../models/entities/note-reaction'; | ||||
| import { IdentifiableError } from '@/misc/identifiable-error'; | ||||
| 
 | ||||
| export default async (user: { id: User['id']; host: User['host']; }, note: Note, reaction?: string) => { | ||||
| 	// TODO: cache
 | ||||
| 	reaction = await toDbReaction(reaction, user.host); | ||||
| 
 | ||||
| 	let record: NoteReaction = { | ||||
| 	const record: NoteReaction = { | ||||
| 		id: genId(), | ||||
| 		createdAt: new Date(), | ||||
| 		noteId: note.id, | ||||
|  | @ -31,17 +32,18 @@ export default async (user: { id: User['id']; host: User['host']; }, note: Note, | |||
| 		await NoteReactions.insert(record); | ||||
| 	} catch (e) { | ||||
| 		if (isDuplicateKeyValueError(e)) { | ||||
| 			record = await NoteReactions.findOneOrFail({ | ||||
| 			const exists = await NoteReactions.findOneOrFail({ | ||||
| 				noteId: note.id, | ||||
| 				userId: user.id, | ||||
| 			}); | ||||
| 
 | ||||
| 			if (record.reaction !== reaction) { | ||||
| 			if (exists.reaction !== reaction) { | ||||
| 				// 別のリアクションがすでにされていたら置き換える
 | ||||
| 				await deleteReaction(user, note); | ||||
| 				await NoteReactions.insert(record); | ||||
| 			} else { | ||||
| 				// 同じリアクションがすでにされていたら何もしない
 | ||||
| 				return; | ||||
| 				// 同じリアクションがすでにされていたらエラー
 | ||||
| 				throw new IdentifiableError('51c42bb4-931a-456b-bff7-e5a8a70dd298'); | ||||
| 			} | ||||
| 		} else { | ||||
| 			throw e; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue