|
| 1 | +import { Extension } from '@colony/colony-js'; |
| 2 | + |
| 3 | +import { useColonyContext } from '~context/ColonyContext/ColonyContext.ts'; |
| 4 | +import { useSearchActionsQuery } from '~gql'; |
| 5 | +import useExtensionData from '~hooks/useExtensionData.ts'; |
| 6 | +import { COLONY_STREAMING_PAYMENTS_ROUTE } from '~routes'; |
| 7 | +import { isInstalledExtensionData } from '~utils/extensions.ts'; |
| 8 | + |
| 9 | +import { sidebarNavigationScheme } from '../consts.ts'; |
| 10 | + |
| 11 | +export const useSidebarRoutesScheme = () => { |
| 12 | + const { colony } = useColonyContext(); |
| 13 | + |
| 14 | + const { colonyAddress } = colony; |
| 15 | + |
| 16 | + const { data } = useSearchActionsQuery({ |
| 17 | + variables: { |
| 18 | + filter: { |
| 19 | + colonyId: { eq: colonyAddress }, |
| 20 | + type: { eq: 'CREATE_STREAMING_PAYMENT' }, |
| 21 | + }, |
| 22 | + limit: 5, |
| 23 | + }, |
| 24 | + }); |
| 25 | + |
| 26 | + const excludeSubitemsPaths = (subitemsPathsToExclude: string[]) => |
| 27 | + sidebarNavigationScheme.map((item) => { |
| 28 | + return { |
| 29 | + ...item, |
| 30 | + subItems: item.subItems?.filter( |
| 31 | + (subItem) => !subitemsPathsToExclude.includes(subItem.path), |
| 32 | + ), |
| 33 | + }; |
| 34 | + }); |
| 35 | + |
| 36 | + const hasStreamings = !!data?.searchColonyActions?.items.length; |
| 37 | + |
| 38 | + const { extensionData } = useExtensionData(Extension.StreamingPayments); |
| 39 | + const isStreamingPaymentsInstalled = |
| 40 | + extensionData && isInstalledExtensionData(extensionData); |
| 41 | + |
| 42 | + const isStreamingsRouteVisible = |
| 43 | + isStreamingPaymentsInstalled || hasStreamings; |
| 44 | + |
| 45 | + const sidebarScheme = excludeSubitemsPaths( |
| 46 | + isStreamingsRouteVisible ? [] : [COLONY_STREAMING_PAYMENTS_ROUTE], |
| 47 | + ); |
| 48 | + |
| 49 | + return { |
| 50 | + sidebarScheme, |
| 51 | + }; |
| 52 | +}; |
0 commit comments