Skip to content

Commit

Permalink
feat(main): implement notification support
Browse files Browse the repository at this point in the history
Now can create, list, delete notifications 🌟
  • Loading branch information
Intevel committed Apr 25, 2022
1 parent f0d8719 commit 7d0c5b9
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions src/runtime/composables/useDirectusNotifications.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import { useDirectus } from "./useDirectus";
import { DirectusQueryParams, DirectusNotificationObject } from "../types";

export const useDirectusNotifications = () => {
const directus = useDirectus();

const getNotifications = async <T>(data: {
params: DirectusQueryParams;
}): Promise<T[]> => {
if (data.params?.filter) {
(data.params.filter as unknown) = JSON.stringify(data.params.filter);
}
if (data.params?.deep) {
(data.params.deep as unknown) = JSON.stringify(data.params.deep);
}
const notifications = await directus<{ data: T[] }>(`/notifications`, {
method: "GET",
params: data.params,
});
return notifications.data;
};

const getNotificationByKey = async <T>(data: {
id: number;
params: DirectusQueryParams;
}): Promise<T[]> => {
const notifications = await directus<{ data: T[] }>(
`/notifications/${data.id}`,
{
method: "GET",
params: data.params,
}
);
return notifications.data;
};

// A partial notification object.
const createNotification = async <T>(data: {
notification: DirectusNotificationObject;
}): Promise<T[]> => {
const notification = await directus<{ data: T[] }>(`/notifications`, {
method: "POST",
body: data.notification,
});
return notification.data;
};

const deleteNotification = async (data: {
notifications: Array<string> | string;
}): Promise<void> => {
await directus<void>(`/notifications`, {
method: "DELETE",
body: data.notifications,
});
};

return {
getNotifications,
getNotificationByKey,
createNotification,
deleteNotification,
};
};

0 comments on commit 7d0c5b9

Please sign in to comment.