Skip to content

Commit 1615baf

Browse files
committed
2 parents bbcb9f6 + 585cdb3 commit 1615baf

16 files changed

Lines changed: 72 additions & 58 deletions

packages/react-ui/src/app/common/guards/intial-data-guard.tsx

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { LoadingSpinner } from '@openops/components/ui';
2-
import { Suspense, useEffect } from 'react';
2+
import { Suspense, useEffect, useState } from 'react';
33

44
import { flagsHooks } from '@/app/common/hooks/flags-hooks';
5-
import { setupResponseInterceptor } from '@/app/interceptors';
5+
import {
6+
setupRequestInterceptor,
7+
setupResponseInterceptor,
8+
} from '@/app/interceptors';
69

710
type InitialDataGuardProps = {
811
children: React.ReactNode;
@@ -11,16 +14,31 @@ export const InitialDataGuard = ({
1114
children,
1215
}: Readonly<InitialDataGuardProps>) => {
1316
const { data: flags } = flagsHooks.useFlags();
17+
const [interceptorsReady, setInterceptorsReady] = useState(false);
1418

1519
useEffect(() => {
1620
if (!flags) {
1721
console.error('Missing flags for response interceptor configuration');
22+
return;
1823
}
24+
const isFederatedAuth = Boolean(flags?.FEDERATED_LOGIN_ENABLED);
25+
setupRequestInterceptor({
26+
isFederatedAuth,
27+
});
1928
setupResponseInterceptor({
20-
isFederatedAuth: Boolean(flags?.FEDERATED_LOGIN_ENABLED),
29+
isFederatedAuth,
2130
});
31+
setInterceptorsReady(true);
2232
}, [flags]);
2333

34+
if (!interceptorsReady) {
35+
return (
36+
<div className="bg-background flex h-screen w-screen items-center justify-center ">
37+
<LoadingSpinner size={50}></LoadingSpinner>
38+
</div>
39+
);
40+
}
41+
2442
return (
2543
<Suspense
2644
fallback={

packages/react-ui/src/app/interceptors/index.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,22 @@ import {
99
let requestInterceptorId: number | null = null;
1010
let responseInterceptorId: number | null = null;
1111

12-
function setupRequestInterceptor(): void {
12+
type InterceptorOptions = {
13+
isFederatedAuth: boolean;
14+
};
15+
16+
export function setupRequestInterceptor({
17+
isFederatedAuth,
18+
}: InterceptorOptions): void {
1319
if (requestInterceptorId === null) {
1420
const requestInterceptor = createRequestInterceptor();
1521
requestInterceptorId = axios.interceptors.request.use(requestInterceptor);
1622
}
1723
}
1824

19-
setupRequestInterceptor();
20-
21-
type ResponseInterceptorOptions = {
22-
isFederatedAuth: boolean;
23-
};
24-
2525
export function setupResponseInterceptor({
2626
isFederatedAuth,
27-
}: ResponseInterceptorOptions): void {
27+
}: InterceptorOptions): void {
2828
if (responseInterceptorId === null) {
2929
const responseInterceptor = isFederatedAuth
3030
? createFederatedResponseInterceptor()

packages/react-ui/src/app/interceptors/response-interceptor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export function createResponseInterceptor(): {
4343

4444
export function createFederatedResponseInterceptor(): {
4545
onFulfilled: (response: AxiosResponse) => AxiosResponse;
46-
onRejected: (error: AxiosError) => Promise<never>;
46+
onRejected: (error: AxiosError) => Promise<AxiosResponse | never>;
4747
} {
4848
throw new Error('Not implemented in OSS');
4949
}

packages/server/api/src/app/database/seeds/auto-instances-shutdown-table-seed.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from '../../openops-tables/template-tables/create-auto-instances-shutdown-table';
88
import { databaseConnection } from '../database-connection';
99
import { getDefaultProjectTablesDatabaseToken } from '../get-default-user-db-token';
10-
import { getAdminTokenAndDatabaseId } from './get-admin-token-and-database';
10+
import { getAdminTablesContext } from './get-admin-token-and-database';
1111

1212
const AUTO_INSTANCES_SHUTDOWN_TABLE_SEED = 'AUTOINSTANCESSHUTDOWN';
1313

@@ -42,8 +42,8 @@ export const seedAutoInstancesShutdownTable = async (): Promise<void> => {
4242
);
4343

4444
if (!table) {
45-
const tokenAndDatabaseId = await getAdminTokenAndDatabaseId();
46-
await createAutoInstancesShutdownTable(tokenAndDatabaseId);
45+
const tablesContext = await getAdminTablesContext();
46+
await createAutoInstancesShutdownTable(tablesContext);
4747
}
4848

4949
await setTableSeedFlag();

packages/server/api/src/app/database/seeds/get-admin-token-and-database.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { AppSystemProp, system } from '@openops/server-shared';
22
import { Project } from '@openops/shared';
33
import { authenticateAdminUserInOpenOpsTables } from '../../openops-tables/auth-admin-tables';
4+
import { TablesContext } from '../../openops-tables/template-tables/types';
45
import { projectService } from '../../project/project-service';
56
import { userService } from '../../user/user-service';
67

@@ -24,10 +25,7 @@ const getAdminUserProject = async (): Promise<Project> => {
2425
return project;
2526
};
2627

27-
export const getAdminTokenAndDatabaseId = async (): Promise<{
28-
token: string;
29-
tablesDatabaseId: number;
30-
}> => {
28+
export const getAdminTablesContext = async (): Promise<TablesContext> => {
3129
const { token } = await authenticateAdminUserInOpenOpsTables();
3230
const { tablesDatabaseId } = await getAdminUserProject();
3331
return { token, tablesDatabaseId };

packages/server/api/src/app/database/seeds/openops-aggregated-costs-seed.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from '../../openops-tables/template-tables/create-aggregated-costs-table';
88
import { databaseConnection } from '../database-connection';
99
import { getDefaultProjectTablesDatabaseToken } from '../get-default-user-db-token';
10-
import { getAdminTokenAndDatabaseId } from './get-admin-token-and-database';
10+
import { getAdminTablesContext } from './get-admin-token-and-database';
1111

1212
const AGGREGATED_TABLE_SEED = 'AGGREGATEDCOSTS';
1313

@@ -41,8 +41,8 @@ export const seedFocusDataAggregationTemplateTable =
4141
);
4242

4343
if (!table) {
44-
const tokenAndDatabaseId = await getAdminTokenAndDatabaseId();
45-
await createAggregatedCostsTable(tokenAndDatabaseId);
44+
const tablesContext = await getAdminTablesContext();
45+
await createAggregatedCostsTable(tablesContext);
4646
}
4747

4848
await setTableSeedFlag();

packages/server/api/src/app/database/seeds/openops-knonw-cost-types-by-application-seed.ts renamed to packages/server/api/src/app/database/seeds/openops-known-cost-types-by-application-seed.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from '../../openops-tables/template-tables/create-known-cost-types-by-application-table';
88
import { databaseConnection } from '../database-connection';
99
import { getDefaultProjectTablesDatabaseToken } from '../get-default-user-db-token';
10-
import { getAdminTokenAndDatabaseId } from './get-admin-token-and-database';
10+
import { getAdminTablesContext } from './get-admin-token-and-database';
1111

1212
const KNOWN_COST_TYPES_BY_APPLICATION = 'KNOWNCOSTTYPES';
1313

@@ -42,8 +42,8 @@ export const seedKnownCostTypesByApplicationTable = async (): Promise<void> => {
4242
);
4343

4444
if (!table) {
45-
const tokenAndDatabaseId = await getAdminTokenAndDatabaseId();
46-
await createKnownCostTypesByApplicationTable(tokenAndDatabaseId);
45+
const tablesContext = await getAdminTablesContext();
46+
await createKnownCostTypesByApplicationTable(tablesContext);
4747
}
4848

4949
await setTableSeedFlag();

packages/server/api/src/app/database/seeds/openops-opportunities-table-seed.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
} from '../../openops-tables/template-tables/create-opportunities-table';
88
import { databaseConnection } from '../database-connection';
99
import { getDefaultProjectTablesDatabaseToken } from '../get-default-user-db-token';
10-
import { getAdminTokenAndDatabaseId } from './get-admin-token-and-database';
10+
import { getAdminTablesContext } from './get-admin-token-and-database';
1111

1212
const OPPORTUNITIES_TABLE_SEED = 'OPPORTUNITIESSEED';
1313

@@ -42,8 +42,8 @@ export const seedOpportunitesTemplateTable = async (): Promise<void> => {
4242
);
4343

4444
if (!table) {
45-
const tokenAndDatabaseId = await getAdminTokenAndDatabaseId();
46-
await createOpportunitiesTable(tokenAndDatabaseId);
45+
const tablesContext = await getAdminTablesContext();
46+
await createOpportunitiesTable(tablesContext);
4747
}
4848

4949
await setTableSeedFlag();

packages/server/api/src/app/database/seeds/seed-template-tables.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { logger } from '@openops/server-shared';
22
import { FlagEntity } from '../../flags/flag.entity';
3-
import { seedTemplateTablesService } from '../../openops-tables/template-tables/seed-tables-for-templates';
3+
import { createBaseTemplateTables } from '../../openops-tables/template-tables/seed-tables-for-templates';
44
import { databaseConnection } from '../database-connection';
5-
import { getAdminTokenAndDatabaseId } from './get-admin-token-and-database';
5+
import { getAdminTablesContext } from './get-admin-token-and-database';
66

77
const TEMPLATE_TABLES_SEED = 'TEMPLATE_TABLES_SEED';
88

@@ -31,8 +31,8 @@ export const seedTemplateTables = async (): Promise<void> => {
3131
return;
3232
}
3333

34-
const tokenAndDatabaseId = await getAdminTokenAndDatabaseId();
35-
await seedTemplateTablesService.createBaseTemplateTables(tokenAndDatabaseId);
34+
const tablesContext = await getAdminTablesContext();
35+
await createBaseTemplateTables(tablesContext);
3636

3737
await setTableSeedFlag();
3838
};

packages/server/api/src/app/openops-tables/template-tables/create-aggregated-costs-table.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ import {
77
} from '@openops/common';
88
import { logger } from '@openops/server-shared';
99
import { openopsTables } from '../index';
10-
import { TokenAndDatabaseId } from './types';
10+
import { TablesContext } from './types';
1111

1212
export const SEED_TABLE_NAME = 'Aggregated Costs';
1313
const SEED_LOG_HEADER = `[Seeding ${SEED_TABLE_NAME} table]`;
1414

1515
export async function createAggregatedCostsTable({
1616
token,
1717
tablesDatabaseId,
18-
}: TokenAndDatabaseId): Promise<{ tableId: number }> {
18+
}: TablesContext): Promise<{ tableId: number }> {
1919
logger.debug(`${SEED_LOG_HEADER} Start`);
2020

2121
const table = await openopsTables.createTable(

0 commit comments

Comments
 (0)