This PR was created by [GitStart](https://gitstart.com/) to address the requirements from this ticket: [TWNTY-6871](https://clients.gitstart.com/twenty/5449/tickets/TWNTY-6871). --- ### Description Migrate: - Info display component - Status display component - SeparatorLineText display component ### Demo ###### SeparatorLineText In Storybook  Info Component on Storybook  Status Component on Storybook  ###### Fixes twentyhq/private-issues#95 --------- Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com> Co-authored-by: Charles Bochet <charles@twenty.com>
57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
import { WatchQueryFetchPolicy } from '@apollo/client';
|
|
import { useEffect } from 'react';
|
|
import { useNavigate, useParams } from 'react-router-dom';
|
|
|
|
import { useGetDatabaseConnection } from '@/databases/hooks/useGetDatabaseConnection';
|
|
import { useGetDatabaseConnectionTables } from '@/databases/hooks/useGetDatabaseConnectionTables';
|
|
import { useIsSettingsIntegrationEnabled } from '@/settings/integrations/hooks/useIsSettingsIntegrationEnabled';
|
|
import { useSettingsIntegrationCategories } from '@/settings/integrations/hooks/useSettingsIntegrationCategories';
|
|
import { AppPath } from '@/types/AppPath';
|
|
|
|
export const useDatabaseConnection = ({
|
|
fetchPolicy,
|
|
}: {
|
|
fetchPolicy?: WatchQueryFetchPolicy;
|
|
}) => {
|
|
const { databaseKey = '', connectionId = '' } = useParams();
|
|
const navigate = useNavigate();
|
|
|
|
const [integrationCategoryAll] = useSettingsIntegrationCategories();
|
|
const integration = integrationCategoryAll.integrations.find(
|
|
({ from: { key } }) => key === databaseKey,
|
|
);
|
|
|
|
const isIntegrationEnabled = useIsSettingsIntegrationEnabled(databaseKey);
|
|
|
|
const isIntegrationAvailable = !!integration && isIntegrationEnabled;
|
|
|
|
const { connection, loading } = useGetDatabaseConnection({
|
|
databaseKey,
|
|
connectionId,
|
|
skip: !isIntegrationAvailable,
|
|
fetchPolicy,
|
|
});
|
|
|
|
useEffect(() => {
|
|
if (!isIntegrationAvailable || (!loading && !connection)) {
|
|
navigate(AppPath.NotFound);
|
|
}
|
|
}, [
|
|
integration,
|
|
databaseKey,
|
|
navigate,
|
|
isIntegrationAvailable,
|
|
connection,
|
|
loading,
|
|
]);
|
|
|
|
const { tables } = useGetDatabaseConnectionTables({
|
|
connectionId,
|
|
skip: !connection,
|
|
shouldFetchPendingSchemaUpdates: true,
|
|
fetchPolicy,
|
|
});
|
|
|
|
return { connection, integration, databaseKey, tables };
|
|
};
|