Skip to content

Commit 049009e

Browse files
authored
Merge pull request #744 from actiontech/refactor/zone
Refactor/zone
2 parents de3a591 + 49d263e commit 049009e

File tree

6 files changed

+39
-65
lines changed

6 files changed

+39
-65
lines changed

packages/base/src/page/AvailabilityZone/AvailabilityZoneWrapper/index.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@ const AvailabilityZoneWrapper: React.FC = () => {
5151
}
5252
};
5353
const isZoneConfigured = !!availabilityZoneOptions?.length;
54-
const isMemoriredZoneNotInOptions = useMemo(
54+
const isMemoriedZoneNotInOptions = useMemo(
5555
() =>
5656
!availabilityZoneOptions?.some((v) => v.value === availabilityZone?.uid),
5757
[availabilityZoneOptions, availabilityZone]
5858
);
59-
if (isZoneConfigured && isMemoriredZoneNotInOptions) {
59+
if (isZoneConfigured && isMemoriedZoneNotInOptions) {
6060
return (
6161
<BasicModal
6262
title={t('availabilityZone.wrapper.modalTitle')}

packages/base/src/page/Nav/SideMenu/__tests__/index.test.tsx

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -168,17 +168,4 @@ describe('test Base/Nav/SideMenu/index', () => {
168168
await act(async () => jest.advanceTimersByTime(3000));
169169
expect(getUserOpPermissionSpy).toHaveBeenCalled();
170170
});
171-
172-
it('should set availability zone when DMS_SYNC_CURRENT_AVAILABILITY_ZONE event is emitted', async () => {
173-
const setAvailabilityZoneSpy = jest.fn();
174-
mockUseRecentlySelectedZone({
175-
setAvailabilityZone: setAvailabilityZoneSpy
176-
});
177-
baseSuperRender(<SideMenu />);
178-
await act(async () => jest.advanceTimersByTime(3000));
179-
sharedEventEmitter.emit(
180-
sharedEmitterKey.DMS_SYNC_CURRENT_AVAILABILITY_ZONE
181-
);
182-
expect(setAvailabilityZoneSpy).toHaveBeenCalledTimes(1);
183-
});
184171
});

packages/base/src/page/Nav/SideMenu/index.tsx

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ import { EmptyBox } from '@actiontech/dms-kit';
2727
import useRecentlySelectedZone from '@actiontech/dms-kit/es/features/useRecentlySelectedZone';
2828
import useFetchPermissionData from '../../../hooks/useFetchPermissionData';
2929
import { updateUserOperationPermissions } from '../../../store/permission';
30-
import sharedEmitterKey from '@actiontech/dms-kit/es/data/EmitterKey';
31-
import { eventEmitter as sharedEventEmitter } from '@actiontech/dms-kit/es/utils/EventEmitter';
3230

3331
const SideMenu: React.FC = () => {
3432
const navigate = useTypedNavigate();
@@ -38,7 +36,6 @@ const SideMenu: React.FC = () => {
3836
useFetchPermissionData();
3937
const {
4038
verifyRecentlySelectedZoneRecord,
41-
setAvailabilityZone,
4239
availabilityZone,
4340
updateRecentlySelectedZone
4441
} = useRecentlySelectedZone();
@@ -178,14 +175,6 @@ const SideMenu: React.FC = () => {
178175
return unsubscribe;
179176
}, [refreshZoneTips]);
180177

181-
useEffect(() => {
182-
const { unsubscribe } = sharedEventEmitter.subscribe(
183-
sharedEmitterKey.DMS_SYNC_CURRENT_AVAILABILITY_ZONE,
184-
setAvailabilityZone
185-
);
186-
return unsubscribe;
187-
}, [setAvailabilityZone]);
188-
189178
useEffect(() => {
190179
const { unsubscribe } = EventEmitter.subscribe(
191180
EmitterKey.DMS_Sync_Project_Archived_Status,

packages/base/src/store/availabilityZone/index.ts

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,12 @@ type AvailabilityZoneReduxState = {
88
modalStatus: ModalStatus;
99
selectAvailabilityZone: IGateway | null;
1010
availabilityZoneTips: IUidWithName[];
11-
// memorizedAvailabilityZone: IUidWithName | undefined;
12-
// recentlySelectedZoneRecord: IUidWithName[];
1311
};
1412

1513
const initialState: AvailabilityZoneReduxState = {
1614
modalStatus: {},
1715
selectAvailabilityZone: null,
1816
availabilityZoneTips: []
19-
// memorizedAvailabilityZone: undefined,
20-
// recentlySelectedZoneRecord: []
2117
};
2218

2319
const dmsAvailabilityZone = createSlice({
@@ -40,22 +36,6 @@ const dmsAvailabilityZone = createSlice({
4036
) {
4137
state.availabilityZoneTips = availabilityZoneTips;
4238
},
43-
// updateMemorizedAvailabilityZone(
44-
// state,
45-
// {
46-
// payload: { memorizedAvailabilityZone }
47-
// }: PayloadAction<{ memorizedAvailabilityZone: IUidWithName | undefined }>
48-
// ) {
49-
// state.memorizedAvailabilityZone = memorizedAvailabilityZone;
50-
// },
51-
// updateRecentlySelectedZoneRecord(
52-
// state,
53-
// {
54-
// payload: { recentlySelectedZoneRecord }
55-
// }: PayloadAction<{ recentlySelectedZoneRecord: IUidWithName[] }>
56-
// ) {
57-
// state.recentlySelectedZoneRecord = recentlySelectedZoneRecord;
58-
// },
5939
...commonModalReducer()
6040
}
6141
});
@@ -65,8 +45,6 @@ export const {
6545
initModalStatus: initAvailabilityZoneModalStatus,
6646
updateModalStatus: updateAvailabilityZoneModalStatus,
6747
updateAvailabilityZoneTips
68-
// updateMemorizedAvailabilityZone,
69-
// updateRecentlySelectedZoneRecord
7048
} = dmsAvailabilityZone.actions;
7149

7250
export default dmsAvailabilityZone.reducer;

packages/dms-kit/src/features/useRecentlySelectedZone/__tests__/index.test.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { act } from '@testing-library/react';
1+
import { act, cleanup } from '@testing-library/react';
22
import { superRenderHook } from '../../../testUtil/superRender';
33
import useRecentlySelectedZone, {
44
DEFAULT_MAX_SELECTED_ZONE_NUMBER
@@ -49,7 +49,7 @@ describe('useRecentlySelectedZone', () => {
4949
});
5050

5151
it('should update record: move to front, unique, trim to max, and emit', () => {
52-
const eventEmtterSpy = jest.spyOn(eventEmitter, 'emit');
52+
const eventEmitterSpy = jest.spyOn(eventEmitter, 'emit');
5353
const { result } = superRenderHook(() => useRecentlySelectedZone<Zone>());
5454
const z1 = { uid: 'u1', name: 'zone-1' };
5555
const z2 = { uid: 'u2', name: 'zone-2' };
@@ -69,10 +69,12 @@ describe('useRecentlySelectedZone', () => {
6969
expect(saved[0]).toEqual(z4);
7070
expect(saved).toHaveLength(DEFAULT_MAX_SELECTED_ZONE_NUMBER);
7171
expect(saved.map((i: Zone) => i.uid)).toEqual(['u4', 'u1', 'u3']);
72-
expect(eventEmtterSpy).toHaveBeenCalledWith(
72+
expect(eventEmitterSpy).toHaveBeenCalledWith(
7373
EmitterKey.DMS_SYNC_CURRENT_AVAILABILITY_ZONE,
7474
z4
7575
);
76+
77+
eventEmitterSpy.mockRestore();
7678
});
7779

7880
it('should verify: remove current when not in tips', () => {
@@ -141,4 +143,14 @@ describe('useRecentlySelectedZone', () => {
141143
);
142144
expect(saved).toEqual([]);
143145
});
146+
147+
it('should set availability zone when DMS_SYNC_CURRENT_AVAILABILITY_ZONE event is emitted', async () => {
148+
const zone = { uid: 'u1', name: 'zone-1' };
149+
const { result } = superRenderHook(() => useRecentlySelectedZone<Zone>());
150+
expect(result.current.availabilityZone).toBeUndefined();
151+
act(() =>
152+
eventEmitter.emit(EmitterKey.DMS_SYNC_CURRENT_AVAILABILITY_ZONE, zone)
153+
);
154+
expect(result.current.availabilityZone).toEqual(zone);
155+
});
144156
});

packages/dms-kit/src/features/useRecentlySelectedZone/index.ts

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,18 @@ const useRecentlySelectedZone = <T extends { uid?: string; name?: string }>({
3636
setAvailabilityZone(zone);
3737
const parsedData = getStorageZoneRecord();
3838
eventEmitter.emit(EmitterKey.DMS_SYNC_CURRENT_AVAILABILITY_ZONE, zone);
39-
const currentReocrd = cloneDeep(parsedData);
40-
if (currentReocrd.some((v) => v.uid === zone.uid)) {
41-
remove(currentReocrd, (v) => v.uid === zone.uid);
39+
const currentRecord = cloneDeep(parsedData);
40+
if (currentRecord.some((v) => v.uid === zone.uid)) {
41+
remove(currentRecord, (v) => v.uid === zone.uid);
4242
}
4343

44-
currentReocrd.unshift(zone);
44+
currentRecord.unshift(zone);
4545

46-
if (currentReocrd.length > DEFAULT_MAX_SELECTED_ZONE_NUMBER) {
47-
currentReocrd.pop();
46+
if (currentRecord.length > DEFAULT_MAX_SELECTED_ZONE_NUMBER) {
47+
currentRecord.pop();
4848
}
4949

50-
setStorageRecentlySelectedZoneRecord(currentReocrd);
50+
setStorageRecentlySelectedZoneRecord(currentRecord);
5151
},
5252
[
5353
setAvailabilityZone,
@@ -61,13 +61,13 @@ const useRecentlySelectedZone = <T extends { uid?: string; name?: string }>({
6161
const parsedData = getStorageZoneRecord();
6262
if (!zoneTips?.some((v) => v.uid === availabilityZone?.uid)) {
6363
setAvailabilityZone(undefined);
64-
const currentReocrd = cloneDeep(parsedData);
65-
currentReocrd.forEach((i) => {
64+
const currentRecord = cloneDeep(parsedData);
65+
currentRecord.forEach((i) => {
6666
if (i.uid === availabilityZone?.uid) {
67-
remove(currentReocrd, (v) => v.uid === i.uid);
67+
remove(currentRecord, (v) => v.uid === i.uid);
6868
}
6969
});
70-
setStorageRecentlySelectedZoneRecord(currentReocrd);
70+
setStorageRecentlySelectedZoneRecord(currentRecord);
7171
}
7272

7373
// 如果当前选择的区域在已配置的区域中存在,但是name不相同,则更新name
@@ -78,13 +78,13 @@ const useRecentlySelectedZone = <T extends { uid?: string; name?: string }>({
7878
)
7979
) {
8080
const name = zoneTips.find((v) => v.uid === availabilityZone?.uid)?.name;
81-
const currentReocrd = cloneDeep(parsedData);
82-
currentReocrd.forEach((i) => {
81+
const currentRecord = cloneDeep(parsedData);
82+
currentRecord.forEach((i) => {
8383
if (i.uid === availabilityZone?.uid) {
8484
i.name = name;
8585
}
8686
});
87-
setStorageRecentlySelectedZoneRecord(currentReocrd);
87+
setStorageRecentlySelectedZoneRecord(currentRecord);
8888
}
8989
};
9090

@@ -104,6 +104,14 @@ const useRecentlySelectedZone = <T extends { uid?: string; name?: string }>({
104104
}
105105
}, [initializeAvailabilityZone, manualInit]);
106106

107+
useEffect(() => {
108+
const { unsubscribe } = eventEmitter.subscribe(
109+
EmitterKey.DMS_SYNC_CURRENT_AVAILABILITY_ZONE,
110+
setAvailabilityZone
111+
);
112+
return unsubscribe;
113+
}, [setAvailabilityZone]);
114+
107115
return {
108116
availabilityZone,
109117
updateRecentlySelectedZone,

0 commit comments

Comments
 (0)