Skip to content

Commit

Permalink
feat: move NotificationProvider into Notifications folder
Browse files Browse the repository at this point in the history
  • Loading branch information
asharonbaltazar committed Dec 6, 2022
1 parent 389bf0b commit 9499aa1
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 113 deletions.
113 changes: 0 additions & 113 deletions frontend/components/context/NotificationProvider.tsx

This file was deleted.

64 changes: 64 additions & 0 deletions frontend/components/context/Notifications/NotificationProvider.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import { createContext, ReactNode, useContext, useState } from "react";

import Notifications from "./Notifications";

type NotificationType = "success" | "error";

export type Notification = {
text: string;
type: NotificationType;
};

type NotificationContextState = {
createNotification: ({ text, type }: Notification) => void;
};

const NotificationContext = createContext<NotificationContextState>({
createNotification: () => console.log("createNotification not set!"),
});

export const useNotificationContext = () => useContext(NotificationContext);

interface NotificationProviderProps {
children: ReactNode;
}

const NotificationProvider = ({ children }: NotificationProviderProps) => {
const [notifications, setNotifications] = useState<Notification[]>([]);

const clearNotification = (text?: string) => {
if (text) {
return setNotifications((state) =>
state.filter((notif) => notif.text !== text)
);
}

return setNotifications([]);
};

const createNotification = ({ text, type = "success" }: Notification) => {
const doesNotifExist = notifications.some((notif) => notif.text === text);

if (doesNotifExist) {
return;
}

return setNotifications((state) => [...state, { text, type }]);
};

return (
<NotificationContext.Provider
value={{
createNotification,
}}
>
<Notifications
notifications={notifications}
clearNotification={clearNotification}
/>
{children}
</NotificationContext.Provider>
);
};

export default NotificationProvider;

0 comments on commit 9499aa1

Please sign in to comment.