mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-04 15:34:13 +00:00 
			
		
		
		
	Merge pull request #1393 from akihikodaki/duplicate
Allow to undo Create activity
This commit is contained in:
		
						commit
						b60121527d
					
				
					 5 changed files with 30 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
import create from '../../create';
 | 
			
		||||
import deletePost from './post';
 | 
			
		||||
import create from '../create';
 | 
			
		||||
import deleteObject from '../delete';
 | 
			
		||||
 | 
			
		||||
export default async (resolver, actor, activity) => {
 | 
			
		||||
	if ('actor' in activity && actor.account.uri !== activity.actor) {
 | 
			
		||||
| 
						 | 
				
			
			@ -14,10 +14,7 @@ export default async (resolver, actor, activity) => {
 | 
			
		|||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		switch (result.object.$ref) {
 | 
			
		||||
		case 'posts':
 | 
			
		||||
			await deletePost(result.object);
 | 
			
		||||
		}
 | 
			
		||||
		await deleteObject(result);
 | 
			
		||||
	}));
 | 
			
		||||
 | 
			
		||||
	return null;
 | 
			
		||||
| 
						 | 
				
			
			@ -1,10 +0,0 @@
 | 
			
		|||
import Post from '../../../../models/post';
 | 
			
		||||
import queue from '../../../../queue';
 | 
			
		||||
 | 
			
		||||
export default ({ $id }) => Promise.all([
 | 
			
		||||
	Post.findOneAndDelete({ _id: $id }),
 | 
			
		||||
	new Promise((resolve, reject) => queue.create('db', {
 | 
			
		||||
		type: 'deletePostDependents',
 | 
			
		||||
		id: $id
 | 
			
		||||
	}).delay(65536).save(error => error ? reject(error) : resolve()))
 | 
			
		||||
]);
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
import act from '../../act';
 | 
			
		||||
import deleteObject from '../../delete';
 | 
			
		||||
import unfollow from './unfollow';
 | 
			
		||||
import Resolver from '../../resolver';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -12,7 +13,7 @@ export default async (resolver: Resolver, actor, activity): Promise<void> => {
 | 
			
		|||
	await Promise.all(results.map(async promisedResult => {
 | 
			
		||||
		const result = await promisedResult;
 | 
			
		||||
 | 
			
		||||
		if (result === null) {
 | 
			
		||||
		if (result === null || await deleteObject(result) !== null) {
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -21,4 +22,6 @@ export default async (resolver: Resolver, actor, activity): Promise<void> => {
 | 
			
		|||
			await unfollow(result.object);
 | 
			
		||||
		}
 | 
			
		||||
	}));
 | 
			
		||||
 | 
			
		||||
	return null;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								src/remote/activitypub/delete/index.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/remote/activitypub/delete/index.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
import deletePost from './post';
 | 
			
		||||
 | 
			
		||||
export default async ({ object }) => {
 | 
			
		||||
	switch (object.$ref) {
 | 
			
		||||
	case 'posts':
 | 
			
		||||
		return deletePost(object);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return null;
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										13
									
								
								src/remote/activitypub/delete/post.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/remote/activitypub/delete/post.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
import Post from '../../../models/post';
 | 
			
		||||
import queue from '../../../queue';
 | 
			
		||||
 | 
			
		||||
export default async ({ $id }) => {
 | 
			
		||||
	const promisedDeletion = Post.findOneAndDelete({ _id: $id });
 | 
			
		||||
 | 
			
		||||
	await new Promise((resolve, reject) => queue.create('db', {
 | 
			
		||||
		type: 'deletePostDependents',
 | 
			
		||||
		id: $id
 | 
			
		||||
	}).delay(65536).save(error => error ? reject(error) : resolve()));
 | 
			
		||||
 | 
			
		||||
	return promisedDeletion;
 | 
			
		||||
};
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue