Skip to content

Commit

Permalink
Hide relationships tab if driver does not support relationships
Browse files Browse the repository at this point in the history
PR-URL: hasura/graphql-engine-mono#9660
GitOrigin-RevId: acb93f546423b99732722d6eb236f95a701c76fa
  • Loading branch information
julian-mayorga authored and hasura-bot committed Jun 26, 2023
1 parent 20ffd73 commit b11203f
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { exportMetadata } from '../../../../../features/DataSource';
import {
DataSource,
Feature,
exportMetadata,
} from '../../../../../features/DataSource';
import { useHttpClient } from '../../../../../features/Network';
import { Dispatch } from '../../../../../types';
import { useCallback } from 'react';
Expand Down Expand Up @@ -26,6 +30,11 @@ export const useGDCTreeItemClick = (dispatch: Dispatch) => {
if (!metadataSource)
throw Error('useGDCTreeClick: source was not found in metadata');

const capabilities =
(await DataSource(httpClient).getDriverCapabilities(
metadataSource.kind ?? ''
)) ?? Feature.NotImplemented;

/**
* Handling click for GDC DBs
*/
Expand All @@ -37,7 +46,7 @@ export const useGDCTreeItemClick = (dispatch: Dispatch) => {
getRoute().table(
database,
rest.table,
defaultTab(metadataSource.kind)
defaultTab(metadataSource.kind, capabilities)
)
)
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
import { Capabilities } from '@hasura/dc-api-types';
import {
EnabledTabs,
getEnabledTabs,
} from '../../../../features/Data/hooks/useEnabledTabs';
import { Feature } from '../../../../features/DataSource';

export function defaultTab(kind: string) {
const enabledTabs = getEnabledTabs(kind);
export function defaultTab(
kind: string,
capabilities: Feature | Capabilities | undefined
) {
const enabledTabs = getEnabledTabs(kind, capabilities);
const firstEnabledTab = Object.keys(enabledTabs).find(
tab => enabledTabs[tab as keyof EnabledTabs]
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
import { Capabilities } from '@hasura/dc-api-types';
import { MetadataSelectors, useMetadata } from '../../hasura-metadata-api';
import { useDriverCapabilities } from './useDriverCapabilities';
import { Feature } from '../../DataSource';

function supportsRelationships(
capabilities: Feature | Capabilities | undefined
) {
if (!capabilities || capabilities === Feature.NotImplemented) {
return false;
}
return Boolean(capabilities.relationships);
}

export type EnabledTabs = {
browse: boolean;
Expand All @@ -8,12 +20,15 @@ export type EnabledTabs = {
permissions: boolean;
};

export function getEnabledTabs(kind: string | undefined): EnabledTabs {
export function getEnabledTabs(
kind: string | undefined,
capabilities: Feature | Capabilities | undefined
): EnabledTabs {
return {
browse: true,
insert: true,
modify: true,
relationships: true,
relationships: supportsRelationships(capabilities),
permissions: true,
};
}
Expand All @@ -22,5 +37,6 @@ export function useEnabledTabs(dataSourceName: string): EnabledTabs {
const { data } = useMetadata(m =>
MetadataSelectors.findSource(dataSourceName)(m)
);
return getEnabledTabs(data?.kind);
const { data: capabilities } = useDriverCapabilities({ dataSourceName });
return getEnabledTabs(data?.kind, capabilities);
}

0 comments on commit b11203f

Please sign in to comment.