Make /api/v1/instance and /api/v1/custom_emojis better (#3118)
* Separate commits From commitdca110ebaa. * Re-separate commits From commit9719387bee.
This commit is contained in:
		
							parent
							
								
									712802e682
								
							
						
					
					
						commit
						0d23ce3d45
					
				
					 2 changed files with 44 additions and 3 deletions
				
			
		
							
								
								
									
										35
									
								
								src/models/mastodon/emoji.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/models/mastodon/emoji.ts
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
export type IMastodonEmoji = {
 | 
			
		||||
	shortcode: string,
 | 
			
		||||
	url: string,
 | 
			
		||||
	static_url: string,
 | 
			
		||||
	visible_in_picker: boolean
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export async function toMastodonEmojis(emoji: any): Promise<IMastodonEmoji[]> {
 | 
			
		||||
	return [{
 | 
			
		||||
		shortcode: emoji.name,
 | 
			
		||||
		url: emoji.url,
 | 
			
		||||
		static_url: emoji.url, // TODO: Implement ensuring static emoji
 | 
			
		||||
		visible_in_picker: true
 | 
			
		||||
	}, ...(emoji.aliases as string[] || []).map(x => ({
 | 
			
		||||
		shortcode: x,
 | 
			
		||||
		url: emoji.url,
 | 
			
		||||
		static_url: emoji.url,
 | 
			
		||||
		visible_in_picker: true
 | 
			
		||||
	}))];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function toMisskeyEmojiSync(emoji: IMastodonEmoji) {
 | 
			
		||||
	return {
 | 
			
		||||
		name: emoji.shortcode,
 | 
			
		||||
		url: emoji.url
 | 
			
		||||
	};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function toMisskeyEmojiWithAliasesSync(emoji: IMastodonEmoji, ...aliases: string[]) {
 | 
			
		||||
	return {
 | 
			
		||||
		name: emoji.shortcode,
 | 
			
		||||
		aliases,
 | 
			
		||||
		url: emoji.url
 | 
			
		||||
	};
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -5,17 +5,18 @@ import config from '../../config';
 | 
			
		|||
import Meta from '../../models/meta';
 | 
			
		||||
import { ObjectID } from 'bson';
 | 
			
		||||
import Emoji from '../../models/emoji';
 | 
			
		||||
import { toMastodonEmojis } from '../../models/mastodon/emoji';
 | 
			
		||||
const pkg = require('../../../package.json');
 | 
			
		||||
 | 
			
		||||
// Init router
 | 
			
		||||
const router = new Router();
 | 
			
		||||
 | 
			
		||||
router.get('/v1/custom_emojis', async ctx => ctx.body =
 | 
			
		||||
	await Emoji.find({ host: null }, {
 | 
			
		||||
	(await Emoji.find({ host: null }, {
 | 
			
		||||
		fields: {
 | 
			
		||||
			_id: false
 | 
			
		||||
		}
 | 
			
		||||
	}));
 | 
			
		||||
	})).map(toMastodonEmojis));
 | 
			
		||||
 | 
			
		||||
router.get('/v1/instance', async ctx => { // TODO: This is a temporary implementation. Consider creating helper methods!
 | 
			
		||||
	const meta = await Meta.findOne() || {};
 | 
			
		||||
| 
						 | 
				
			
			@ -40,6 +41,11 @@ router.get('/v1/instance', async ctx => { // TODO: This is a temporary implement
 | 
			
		|||
		notesCount: 0
 | 
			
		||||
	};
 | 
			
		||||
	const acct = maintainer.host ? `${maintainer.username}@${maintainer.host}` : maintainer.username;
 | 
			
		||||
	const emojis = (await Emoji.find({ host: null }, {
 | 
			
		||||
		fields: {
 | 
			
		||||
			_id: false
 | 
			
		||||
		}
 | 
			
		||||
	})).map(toMastodonEmojis);
 | 
			
		||||
 | 
			
		||||
	ctx.body = {
 | 
			
		||||
		uri: config.hostname,
 | 
			
		||||
| 
						 | 
				
			
			@ -79,7 +85,7 @@ router.get('/v1/instance', async ctx => { // TODO: This is a temporary implement
 | 
			
		|||
			followers_count: maintainer.followersCount,
 | 
			
		||||
			following_count: maintainer.followingCount,
 | 
			
		||||
			statuses_count: maintainer.notesCount,
 | 
			
		||||
			emojis: [],
 | 
			
		||||
			emojis: emojis,
 | 
			
		||||
			moved: null,
 | 
			
		||||
			fields: null
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue