Skip to content

Commit faafa72

Browse files
committed
fix: add mobx observer
1 parent 09c91b0 commit faafa72

File tree

6 files changed

+37
-14
lines changed

6 files changed

+37
-14
lines changed

src/component/Task/MutipleAsyncTask/CreateModal/DatabaseQueue.tsx

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { IConnection, IConnectionStatus } from '@/d.ts';
22
import login from '@/store/login';
33
import { formatMessage } from '@/util/intl';
44
import { Button, Divider, Form, Space, Timeline, Tooltip } from 'antd';
5-
import React, { useEffect, useState } from 'react';
5+
import React, { useEffect, useMemo, useState } from 'react';
66
import { DeleteOutlined, DownOutlined, PlusOutlined, UpOutlined } from '@ant-design/icons';
77
import { DndProvider } from 'react-dnd';
88
import { HTML5Backend } from 'react-dnd-html5-backend';
@@ -14,6 +14,7 @@ import { DatabasePermissionType } from '@/d.ts/database';
1414
import { SelectTemplate, CreateTemplate } from '../components/Template';
1515
import datasourceStatus from '@/store/datasourceStatus';
1616
import styles from './index.less';
17+
import { observer } from 'mobx-react';
1718

1819
export const checkDbExpiredByDataSourceStatus = (status: IConnectionStatus) => {
1920
switch (status) {
@@ -34,11 +35,12 @@ export const DatabaseQueueSelect: React.FC<{
3435
rootName: (number | string)[];
3536
multipleDatabaseChangeOpen: boolean;
3637
setDefaultDatasource: React.Dispatch<React.SetStateAction<IConnection>>;
37-
}> = ({ rootName, multipleDatabaseChangeOpen, setDefaultDatasource }) => {
38+
}> = observer(({ rootName, multipleDatabaseChangeOpen, setDefaultDatasource }) => {
3839
const form = Form.useFormInstance();
40+
const statusMap = datasourceStatus.statusMap;
3941
const projectId = Form.useWatch('projectId', form);
4042
const [databaseIdMap, setDatabaseIdMap] = useState<Map<number, boolean>>(new Map());
41-
const [databaseOptions, setDatabaseOptions] = useState<DatabaseOption[]>([]);
43+
const [_databaseOptions, setDatabaseOptions] = useState<DatabaseOption[]>([]);
4244
const {
4345
data,
4446
run,
@@ -60,7 +62,7 @@ export const DatabaseQueueSelect: React.FC<{
6062
);
6163
if (databaseList?.contents?.length) {
6264
setDefaultDatasource(databaseList?.contents?.[0]?.dataSource);
63-
await datasourceStatus.asyncUpdateStatus([
65+
datasourceStatus.asyncUpdateStatus([
6466
...new Set(databaseList?.contents?.map((item) => item.dataSource?.id)),
6567
]);
6668
setDatabaseOptions(
@@ -84,6 +86,15 @@ export const DatabaseQueueSelect: React.FC<{
8486
setDatabaseIdMap(databaseIdMap);
8587
};
8688

89+
const databaseOptions = useMemo(() => {
90+
return _databaseOptions?.map((item) => {
91+
return {
92+
...item,
93+
expired: checkDbExpiredByDataSourceStatus(statusMap.get(item?.dataSource?.id)?.status),
94+
};
95+
});
96+
}, [statusMap, _databaseOptions]);
97+
8798
useEffect(() => {
8899
if (multipleDatabaseChangeOpen && projectId) {
89100
loadDatabaseList(projectId);
@@ -234,7 +245,7 @@ export const DatabaseQueueSelect: React.FC<{
234245
</Form.List>
235246
</div>
236247
);
237-
};
248+
});
238249

239250
const DatabaseQueue: React.FC<{
240251
multipleDatabaseChangeOpen: boolean;

src/component/Task/MutipleAsyncTask/components/Template/EditTemplate.tsx

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,28 @@ import login from '@/store/login';
1111
import { DownOutlined, PlusOutlined, UpOutlined, DeleteOutlined } from '@ant-design/icons';
1212
import { useRequest } from 'ahooks';
1313
import { Form, message, Input, Timeline, Space, Divider, Button, Drawer } from 'antd';
14-
import { useState, useEffect } from 'react';
14+
import { useState, useEffect, useMemo } from 'react';
1515
import { DndProvider } from 'react-dnd';
1616
import { HTML5Backend } from 'react-dnd-html5-backend';
1717
import { flatArray } from '../../CreateModal/helper';
1818
import InnerSelecter, { DatabaseOption } from '../../CreateModal/InnerSelecter';
1919
import styles from './index.less';
2020
import datasourceStatus from '@/store/datasourceStatus';
2121
import { checkDbExpiredByDataSourceStatus } from '../../CreateModal/DatabaseQueue';
22+
import { observer } from 'mobx-react';
2223

2324
const EditTemplate: React.FC<{
2425
open: boolean;
2526
projectId: number;
2627
templateId: number;
2728
onSuccess?: () => Promise<void>;
2829
setOpen: React.Dispatch<React.SetStateAction<boolean>>;
29-
}> = ({ open, projectId, templateId, setOpen, onSuccess }) => {
30+
}> = observer(({ open, projectId, templateId, setOpen, onSuccess }) => {
3031
const [form] = Form.useForm();
32+
const statusMap = datasourceStatus.statusMap;
3133
const orderedDatabaseIds = Form.useWatch<number[][]>(['orders'], form);
3234
const [currentTemplate, setCurrentTemplate] = useState<Template>();
33-
const [databaseOptions, setDatabaseOptions] = useState<DatabaseOption[]>([]);
35+
const [_databaseOptions, setDatabaseOptions] = useState<DatabaseOption[]>([]);
3436
const {
3537
data,
3638
run,
@@ -51,7 +53,7 @@ const EditTemplate: React.FC<{
5153
true,
5254
);
5355
if (databaseList?.contents?.length) {
54-
await datasourceStatus.asyncUpdateStatus([
56+
datasourceStatus.asyncUpdateStatus([
5557
...new Set(databaseList?.contents?.map((item) => item?.dataSource?.id)),
5658
]);
5759
setDatabaseOptions(
@@ -70,6 +72,16 @@ const EditTemplate: React.FC<{
7072
);
7173
}
7274
};
75+
76+
const databaseOptions = useMemo(() => {
77+
return _databaseOptions?.map((item) => {
78+
return {
79+
...item,
80+
expired: checkDbExpiredByDataSourceStatus(statusMap.get(item?.dataSource?.id)?.status),
81+
};
82+
});
83+
}, [statusMap, _databaseOptions]);
84+
7385
const initTemplate = async (templateId: number) => {
7486
const response = await detailTemplate(templateId, login?.organizationId?.toString());
7587
setCurrentTemplate(response);
@@ -394,5 +406,5 @@ const EditTemplate: React.FC<{
394406
</Form>
395407
</Drawer>
396408
);
397-
};
409+
});
398410
export default EditTemplate;

src/page/Project/Database/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ const Database: React.FC<IProps> = ({ id, modalStore }) => {
9494
true,
9595
);
9696
if (res) {
97-
await datasourceStatus.asyncUpdateStatus(res?.contents?.map((item) => item?.dataSource?.id));
97+
datasourceStatus.asyncUpdateStatus(res?.contents?.map((item) => item?.dataSource?.id));
9898
setData(res?.contents);
9999
setTotal(res?.page?.totalElements);
100100
}

src/page/Workspace/SideBar/ResourceTree/DatabaseTree/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ const DatabaseTree: React.FC<IProps> = function ({ openSelectPanel }) {
5151
databaseList.forEach((d) => {
5252
ids.add(d.dataSource?.id);
5353
});
54-
await datasourceStatus.asyncUpdateStatus(Array.from(ids));
54+
datasourceStatus.asyncUpdateStatus(Array.from(ids));
5555
}
5656

5757
useEffect(() => {

src/page/Workspace/context/WorkspaceStore.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ export default function WorkspaceStore({ children }) {
8080
const reloadDatasourceList = useCallback(async () => {
8181
const data = await fetchDatasource();
8282
setDatasourceList(data?.contents || []);
83-
await datasourceStatus.asyncUpdateStatus(data?.contents?.map((a) => a.id));
83+
datasourceStatus.asyncUpdateStatus(data?.contents?.map((a) => a.id));
8484
}, []);
8585

8686
const reloadProjectList = useCallback(async () => {

src/store/datasourceStatus.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export class DataSourceStatusStore {
7474
});
7575
if (this.status === 'stop') {
7676
this.status = 'running';
77-
await this.fetchStatus();
77+
this.fetchStatus();
7878
}
7979
}
8080

0 commit comments

Comments
 (0)