mirror of
https://github.com/mastodon/mastodon.git
synced 2025-10-23 09:21:15 +00:00
75 lines
2.2 KiB
TypeScript
75 lines
2.2 KiB
TypeScript
import type { CompactEmoji } from 'emojibase';
|
|
import { http, HttpResponse } from 'msw';
|
|
import { action } from 'storybook/actions';
|
|
|
|
import { toSupportedLocale } from '@/mastodon/features/emoji/locale';
|
|
|
|
import { customEmojiFactory, relationshipsFactory } from './factories';
|
|
|
|
export const mockHandlers = {
|
|
mute: http.post<{ id: string }>('/api/v1/accounts/:id/mute', ({ params }) => {
|
|
action('muting account')(params);
|
|
return HttpResponse.json(
|
|
relationshipsFactory({ id: params.id, muting: true }),
|
|
);
|
|
}),
|
|
unmute: http.post<{ id: string }>(
|
|
'/api/v1/accounts/:id/unmute',
|
|
({ params }) => {
|
|
action('unmuting account')(params);
|
|
return HttpResponse.json(
|
|
relationshipsFactory({ id: params.id, muting: false }),
|
|
);
|
|
},
|
|
),
|
|
block: http.post<{ id: string }>(
|
|
'/api/v1/accounts/:id/block',
|
|
({ params }) => {
|
|
action('blocking account')(params);
|
|
return HttpResponse.json(
|
|
relationshipsFactory({ id: params.id, blocking: true }),
|
|
);
|
|
},
|
|
),
|
|
unblock: http.post<{ id: string }>(
|
|
'/api/v1/accounts/:id/unblock',
|
|
({ params }) => {
|
|
action('unblocking account')(params);
|
|
return HttpResponse.json(
|
|
relationshipsFactory({
|
|
id: params.id,
|
|
blocking: false,
|
|
}),
|
|
);
|
|
},
|
|
),
|
|
emojiCustomData: http.get('/api/v1/custom_emojis', () => {
|
|
action('fetching custom emoji data')();
|
|
return HttpResponse.json([customEmojiFactory()]);
|
|
}),
|
|
emojiData: http.get<{ locale: string }>(
|
|
'/packs-dev/emoji/:locale.json',
|
|
async ({ params }) => {
|
|
const locale = toSupportedLocale(params.locale);
|
|
action('fetching emoji data')(locale);
|
|
const { default: data } = (await import(
|
|
`emojibase-data/${locale}/compact.json`
|
|
)) as {
|
|
default: CompactEmoji[];
|
|
};
|
|
|
|
return HttpResponse.json([data]);
|
|
},
|
|
),
|
|
};
|
|
|
|
export const unhandledRequestHandler = ({ url }: Request) => {
|
|
const { pathname } = new URL(url);
|
|
if (pathname.startsWith('/api/v1/')) {
|
|
action(`unhandled request to ${pathname}`)(url);
|
|
console.warn(
|
|
`Unhandled request to ${pathname}. Please add a handler for this request in your storybook configuration.`,
|
|
);
|
|
}
|
|
};
|