mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 07:24:13 +00:00 
			
		
		
		
	interpret Dislike activities as Undo(Like)
This commit is contained in:
		
							parent
							
								
									495a19540b
								
							
						
					
					
						commit
						e6e48fb6bc
					
				
					 2 changed files with 15 additions and 3 deletions
				
			
		| 
						 | 
					@ -32,7 +32,7 @@ import { AbuseReportService } from '@/core/AbuseReportService.js';
 | 
				
			||||||
import { FederatedInstanceService } from '@/core/FederatedInstanceService.js';
 | 
					import { FederatedInstanceService } from '@/core/FederatedInstanceService.js';
 | 
				
			||||||
import { fromTuple } from '@/misc/from-tuple.js';
 | 
					import { fromTuple } from '@/misc/from-tuple.js';
 | 
				
			||||||
import { IdentifiableError } from '@/misc/identifiable-error.js';
 | 
					import { IdentifiableError } from '@/misc/identifiable-error.js';
 | 
				
			||||||
import { getApHrefNullable, getApId, getApIds, getApType, getNullableApId, isAccept, isActor, isAdd, isAnnounce, isApObject, isBlock, isCollection, isCollectionOrOrderedCollection, isCreate, isDelete, isFlag, isFollow, isLike, isMove, isPost, isReject, isRemove, isTombstone, isUndo, isUpdate, validActor, validPost } from './type.js';
 | 
					import { getApHrefNullable, getApId, getApIds, getApType, getNullableApId, isAccept, isActor, isAdd, isAnnounce, isApObject, isBlock, isCollection, isCollectionOrOrderedCollection, isCreate, isDelete, isFlag, isFollow, isLike, isDislike, isMove, isPost, isReject, isRemove, isTombstone, isUndo, isUpdate, validActor, validPost } from './type.js';
 | 
				
			||||||
import { ApNoteService } from './models/ApNoteService.js';
 | 
					import { ApNoteService } from './models/ApNoteService.js';
 | 
				
			||||||
import { ApLoggerService } from './ApLoggerService.js';
 | 
					import { ApLoggerService } from './ApLoggerService.js';
 | 
				
			||||||
import { ApDbResolverService } from './ApDbResolverService.js';
 | 
					import { ApDbResolverService } from './ApDbResolverService.js';
 | 
				
			||||||
| 
						 | 
					@ -41,7 +41,7 @@ import { ApAudienceService } from './ApAudienceService.js';
 | 
				
			||||||
import { ApPersonService } from './models/ApPersonService.js';
 | 
					import { ApPersonService } from './models/ApPersonService.js';
 | 
				
			||||||
import { ApQuestionService } from './models/ApQuestionService.js';
 | 
					import { ApQuestionService } from './models/ApQuestionService.js';
 | 
				
			||||||
import type { Resolver } from './ApResolverService.js';
 | 
					import type { Resolver } from './ApResolverService.js';
 | 
				
			||||||
import type { IAccept, IAdd, IAnnounce, IBlock, ICreate, IDelete, IFlag, IFollow, ILike, IObject, IReject, IRemove, IUndo, IUpdate, IMove, IPost } from './type.js';
 | 
					import type { IAccept, IAdd, IAnnounce, IBlock, ICreate, IDelete, IFlag, IFollow, ILike, IDislike, IObject, IReject, IRemove, IUndo, IUpdate, IMove, IPost } from './type.js';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Injectable()
 | 
					@Injectable()
 | 
				
			||||||
export class ApInboxService {
 | 
					export class ApInboxService {
 | 
				
			||||||
| 
						 | 
					@ -166,6 +166,8 @@ export class ApInboxService {
 | 
				
			||||||
			return await this.announce(actor, activity, resolver);
 | 
								return await this.announce(actor, activity, resolver);
 | 
				
			||||||
		} else if (isLike(activity)) {
 | 
							} else if (isLike(activity)) {
 | 
				
			||||||
			return await this.like(actor, activity, resolver);
 | 
								return await this.like(actor, activity, resolver);
 | 
				
			||||||
 | 
							} else if (isDislike(activity)) {
 | 
				
			||||||
 | 
								return await this.dislike(actor, activity);
 | 
				
			||||||
		} else if (isUndo(activity)) {
 | 
							} else if (isUndo(activity)) {
 | 
				
			||||||
			return await this.undo(actor, activity, resolver);
 | 
								return await this.undo(actor, activity, resolver);
 | 
				
			||||||
		} else if (isBlock(activity)) {
 | 
							} else if (isBlock(activity)) {
 | 
				
			||||||
| 
						 | 
					@ -220,6 +222,11 @@ export class ApInboxService {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@bindThis
 | 
				
			||||||
 | 
						private async dislike(actor: MiRemoteUser, dislike: IDislike): Promise<string> {
 | 
				
			||||||
 | 
							return await this.undoLike(actor, dislike);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@bindThis
 | 
						@bindThis
 | 
				
			||||||
	private async accept(actor: MiRemoteUser, activity: IAccept, resolver?: Resolver): Promise<string> {
 | 
						private async accept(actor: MiRemoteUser, activity: IAccept, resolver?: Resolver): Promise<string> {
 | 
				
			||||||
		const uri = activity.id ?? activity;
 | 
							const uri = activity.id ?? activity;
 | 
				
			||||||
| 
						 | 
					@ -782,7 +789,7 @@ export class ApInboxService {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@bindThis
 | 
						@bindThis
 | 
				
			||||||
	private async undoLike(actor: MiRemoteUser, activity: ILike): Promise<string> {
 | 
						private async undoLike(actor: MiRemoteUser, activity: ILike | IDislike): Promise<string> {
 | 
				
			||||||
		const targetUri = getApId(activity.object);
 | 
							const targetUri = getApId(activity.object);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		const note = await this.apNoteService.fetchNote(targetUri);
 | 
							const note = await this.apNoteService.fetchNote(targetUri);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -336,6 +336,10 @@ export interface ILike extends IActivity {
 | 
				
			||||||
	_misskey_reaction?: string;
 | 
						_misskey_reaction?: string;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface IDislike extends IActivity {
 | 
				
			||||||
 | 
						type: 'Dislike';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export interface IAnnounce extends IActivity {
 | 
					export interface IAnnounce extends IActivity {
 | 
				
			||||||
	type: 'Announce';
 | 
						type: 'Announce';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -368,6 +372,7 @@ export const isLike = (object: IObject): object is ILike => {
 | 
				
			||||||
	const type = getApType(object);
 | 
						const type = getApType(object);
 | 
				
			||||||
	return type != null && ['Like', 'EmojiReaction', 'EmojiReact'].includes(type);
 | 
						return type != null && ['Like', 'EmojiReaction', 'EmojiReact'].includes(type);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					export const isDislike = (object: IObject): object is IDislike => getApType(object) === 'Dislike';
 | 
				
			||||||
export const isAnnounce = (object: IObject): object is IAnnounce => getApType(object) === 'Announce';
 | 
					export const isAnnounce = (object: IObject): object is IAnnounce => getApType(object) === 'Announce';
 | 
				
			||||||
export const isBlock = (object: IObject): object is IBlock => getApType(object) === 'Block';
 | 
					export const isBlock = (object: IObject): object is IBlock => getApType(object) === 'Block';
 | 
				
			||||||
export const isFlag = (object: IObject): object is IFlag => getApType(object) === 'Flag';
 | 
					export const isFlag = (object: IObject): object is IFlag => getApType(object) === 'Flag';
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue