108 lines
3.5 KiB
TypeScript
108 lines
3.5 KiB
TypeScript
import Module from "@Front/Config/Module";
|
|
import React, { useCallback, useEffect } from "react";
|
|
|
|
import HeaderLink from "../HeaderLink";
|
|
import classes from "./classes.module.scss";
|
|
import Rules, { RulesMode } from "@Front/Components/Elements/Rules";
|
|
import { AppRuleActions, AppRuleNames } from "@Front/Api/Entities/rule";
|
|
import { usePathname } from "next/navigation";
|
|
import Notifications from "@Front/Api/LeCoffreApi/Notary/Notifications/Notifications";
|
|
import Toasts from "@Front/Stores/Toasts";
|
|
import OfficeFolderAnchors from "@Front/Api/LeCoffreApi/Notary/OfficeFolderAnchors/OfficeFolderAnchors";
|
|
export default function Navigation() {
|
|
const pathname = usePathname();
|
|
|
|
const getAnchoringStatus = useCallback(async () => {
|
|
const anchors = await OfficeFolderAnchors.getInstance().get({
|
|
where: {
|
|
status: {
|
|
not: "VERIFIED_ON_CHAIN",
|
|
},
|
|
},
|
|
include: {
|
|
folder: true,
|
|
},
|
|
});
|
|
|
|
try {
|
|
for (const anchor of anchors) {
|
|
await OfficeFolderAnchors.getInstance().getByUid(anchor.folder?.uid as string);
|
|
}
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
}, []);
|
|
|
|
const getNotifications = useCallback(async () => {
|
|
//await getAnchoringStatus();
|
|
const notifications = await Notifications.getInstance().get({
|
|
where: {
|
|
read: false,
|
|
},
|
|
include: {
|
|
notification: true,
|
|
},
|
|
orderBy: {
|
|
notification: { created_at: "desc" },
|
|
},
|
|
});
|
|
notifications.forEach((notification) => {
|
|
Toasts.getInstance().open({
|
|
title: notification.notification.message,
|
|
uid: notification.uid,
|
|
redirectUrl: notification.notification.redirection_url,
|
|
});
|
|
});
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
getAnchoringStatus();
|
|
getNotifications();
|
|
}, [pathname, getNotifications, getAnchoringStatus]);
|
|
|
|
return (
|
|
<div className={classes["root"]}>
|
|
<HeaderLink
|
|
text={"Dossiers en cours"}
|
|
path={Module.getInstance().get().modules.pages.Folder.props.path}
|
|
routesActive={[
|
|
Module.getInstance().get().modules.pages.Folder.pages.FolderInformation.props.path,
|
|
Module.getInstance().get().modules.pages.Folder.pages.CreateFolder.props.path,
|
|
]}
|
|
/>
|
|
<HeaderLink
|
|
text={"Dossiers archivés"}
|
|
path={Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path}
|
|
routesActive={[Module.getInstance().get().modules.pages.Folder.pages.FolderArchived.props.path]}
|
|
/>
|
|
<Rules
|
|
mode={RulesMode.NECESSARY}
|
|
rules={[
|
|
{
|
|
action: AppRuleActions.update,
|
|
name: AppRuleNames.officeRoles,
|
|
},
|
|
]}>
|
|
<HeaderLink
|
|
text={"Collaborateurs"}
|
|
path={Module.getInstance().get().modules.pages.Collaborators.props.path}
|
|
routesActive={[Module.getInstance().get().modules.pages.Collaborators.props.path]}
|
|
/>
|
|
</Rules>
|
|
<HeaderLink
|
|
text={"Abonnement"}
|
|
path={Module.getInstance().get().modules.pages.Subscription.pages.Manage.props.path}
|
|
routesActive={[
|
|
Module.getInstance().get().modules.pages.Subscription.pages.Manage.props.path,
|
|
Module.getInstance().get().modules.pages.Subscription.pages.Invite.props.path,
|
|
Module.getInstance().get().modules.pages.Subscription.pages.Success.props.path,
|
|
Module.getInstance().get().modules.pages.Subscription.pages.Error.props.path,
|
|
Module.getInstance().get().modules.pages.Subscription.pages.New.props.path,
|
|
Module.getInstance().get().modules.pages.Subscription.pages.Subscribe.pages.Standard.props.path,
|
|
Module.getInstance().get().modules.pages.Subscription.pages.Subscribe.pages.Illimity.props.path,
|
|
]}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|