nas/app/javascript/mastodon/api/notifications.ts

33 lines
923 B
TypeScript

import api, { apiRequest, getLinks } from 'mastodon/api';
import type { ApiNotificationGroupJSON } from 'mastodon/api_types/notifications';
import type { ApiStatusJSON } from 'mastodon/api_types/statuses';
const exceptInvalidNotifications = (
notifications: ApiNotificationGroupJSON[],
) => {
return notifications.filter((n) => {
if ('status' in n) {
return (n.status as ApiStatusJSON | null) !== null;
}
return true;
});
};
export const apiFetchNotifications = async (params?: {
exclude_types?: string[];
max_id?: string;
}) => {
const response = await api().request<ApiNotificationGroupJSON[]>({
method: 'GET',
url: '/api/v2_alpha/notifications',
params,
});
return {
notifications: exceptInvalidNotifications(response.data),
links: getLinks(response),
};
};
export const apiClearNotifications = () =>
apiRequest<undefined>('POST', 'v1/notifications/clear');