Files
netbird-dashboard/src/modules/routes/RouteAddRoutingPeerProvider.tsx
Eduard Gert d34ae9beb2 Sync changes with netbird cloud (#407)
* Update axa oidc library and package.json

* Update ACL port state to show correct value

* Filter user groups by unique groups only

* Add peer multiselect, optimize dropdown performance for peer selection, remove 'all' group from some dropdowns, various ui / ux optimizations

* Add peer multiselect, optimize dropdown performance for peer selection, remove 'all' group from some dropdowns, various ui / ux optimizations
2024-08-13 15:51:22 +02:00

47 lines
1.2 KiB
TypeScript

import * as React from "react";
import { useState } from "react";
import { GroupedRoute } from "@/interfaces/Route";
import RouteAddRoutingPeerModal from "@/modules/routes/RouteAddRoutingPeerModal";
type Props = {
children: React.ReactNode;
};
const GroupedRouteContext = React.createContext(
{} as {
openAddRoutingPeerModal: (groupedRoute: GroupedRoute) => void;
},
);
export const RouteAddRoutingPeerProvider = ({ children }: Props) => {
const [groupedRoute, setGroupedRoute] = useState<GroupedRoute>();
const [modal, setModal] = useState(false);
const openAddRoutingPeerModal = (groupedRoute: GroupedRoute) => {
setGroupedRoute(groupedRoute);
setModal(true);
};
return (
<GroupedRouteContext.Provider value={{ openAddRoutingPeerModal }}>
{children}
{modal && groupedRoute && (
<RouteAddRoutingPeerModal
groupedRoute={groupedRoute}
modal={modal}
setModal={setModal}
/>
)}
</GroupedRouteContext.Provider>
);
};
export const useAddRoutingPeer = () => {
const context = React.useContext(GroupedRouteContext);
if (context === undefined) {
throw new Error(
"useGroupedRoute must be used within a GroupedRouteProvider",
);
}
return context;
};