@eohjsc/react-native-smart-city 0.7.42 → 0.7.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/commons/Dashboard/MyDashboardDevice/index.js +1 -0
- package/src/commons/Dashboard/MyUnit/index.js +1 -0
- package/src/commons/Device/PowerConsumptionChart.js +63 -31
- package/src/configs/AccessibilityLabel.js +1 -0
- package/src/iot/mqtt.js +4 -2
- package/src/navigations/UnitStack.js +2 -2
- package/src/screens/ActivityLog/ItemLog.js +69 -16
- package/src/screens/ActivityLog/__test__/ItemLog.test.js +169 -2
- package/src/screens/ActivityLog/index.js +2 -2
- package/src/screens/ActivityLog/styles/itemLogStyles.js +35 -0
- package/src/screens/AddNewGateway/RenameNewDevices.js +1 -1
- package/src/screens/AddNewGateway/__test__/RenameNewDevices.test.js +1 -1
- package/src/screens/Automate/AddNewAction/NewActionWrapper.js +24 -4
- package/src/screens/Automate/AddNewAction/__test__/SelectControlDevices.test.js +75 -11
- package/src/screens/Automate/AddNewAction/__test__/SelectMonitorDevices.test.js +5 -1
- package/src/screens/Automate/AddNewAutoSmart/AddTypeSmart.js +3 -2
- package/src/screens/Automate/EditActionsList/__tests__/index.test.js +20 -1
- package/src/screens/Automate/EditActionsList/index.js +18 -9
- package/src/screens/Automate/MultiUnits.js +2 -0
- package/src/screens/Automate/OneTap/__test__/AddNewOneTap.test.js +5 -0
- package/src/screens/Automate/Scenario/__test__/AddNewOneTap.test.js +5 -0
- package/src/screens/Automate/ScriptDetail/Styles/indexStyles.js +3 -0
- package/src/screens/Automate/ScriptDetail/__test__/index.test.js +41 -12
- package/src/screens/Automate/ScriptDetail/index.js +3 -3
- package/src/screens/Automate/SetSchedule/__test__/AddEditConditionSchedule.test.js +4 -0
- package/src/screens/Automate/SetSchedule/__test__/index.test.js +4 -0
- package/src/screens/Automate/__test__/MultiUnits.test.js +6 -4
- package/src/screens/Automate/__test__/index.test.js +1 -0
- package/src/screens/Automate/index.js +1 -0
- package/src/screens/ConfirmUnitDeletion/__test__/ConfirmUnitDeletion.test.js +1 -1
- package/src/screens/ConfirmUnitDeletion/index.js +1 -1
- package/src/screens/CreatePassword/__test__/index.test.js +11 -2
- package/src/screens/CreatePassword/index.js +12 -1
- package/src/screens/Device/components/SensorDisplayItem.js +1 -0
- package/src/screens/Device/styles.js +1 -1
- package/src/screens/EnterPassword/index.js +1 -1
- package/src/screens/Notification/components/NotificationItem.js +1 -4
- package/src/screens/Sharing/__test__/UnitMemberList.test.js +1 -1
- package/src/screens/Sharing/hooks/__test__/index.test.js +2 -2
- package/src/screens/Sharing/hooks/index.js +1 -1
- package/src/screens/SmartAccount/ListDevice/index.js +1 -1
- package/src/screens/SubUnit/AddSubUnit.js +2 -2
- package/src/screens/SubUnit/__test__/AddSubUnit.test.js +1 -1
- package/src/screens/SyncLGDevice/AddLGDevice.js +3 -3
- package/src/screens/SyncLGDevice/__test__/AddLGDevice.test.js +5 -5
- package/src/screens/Unit/Detail.js +1 -3
- package/src/screens/Unit/__test__/Detail.test.js +4 -4
- package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js +32 -0
- package/src/utils/I18n/translations/en.js +1 -0
- package/src/utils/I18n/translations/vi.js +1 -0
|
@@ -34,7 +34,7 @@ describe('Test useDataMember', () => {
|
|
|
34
34
|
await act(async () => {
|
|
35
35
|
result.current.leaveUnit(1);
|
|
36
36
|
});
|
|
37
|
-
expect(global.mockedNavigate).
|
|
37
|
+
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.Main);
|
|
38
38
|
});
|
|
39
39
|
|
|
40
40
|
it('render useDataMember loadMembers', async () => {
|
|
@@ -65,6 +65,6 @@ describe('Test useDataMember', () => {
|
|
|
65
65
|
await act(async () => {
|
|
66
66
|
result.current.removeMember(1, 'json');
|
|
67
67
|
});
|
|
68
|
-
expect(global.mockedGoBack).
|
|
68
|
+
expect(global.mockedGoBack).toHaveBeenCalled();
|
|
69
69
|
});
|
|
70
70
|
});
|
|
@@ -67,7 +67,7 @@ const useDataMember = (unitId, userUnitId = undefined) => {
|
|
|
67
67
|
await axiosDelete(API.SHARE.UNITS_MEMBER_DETAIL(unitId, 'me'));
|
|
68
68
|
ToastBottomHelper.success(t('sharing_you_left', { name: unitName }));
|
|
69
69
|
setDataMembers([]);
|
|
70
|
-
navigate(Routes.
|
|
70
|
+
navigate(Routes.Main);
|
|
71
71
|
},
|
|
72
72
|
[navigate, t, unitId]
|
|
73
73
|
);
|
|
@@ -123,7 +123,7 @@ const ListDeviceSmartAccount = ({ route }) => {
|
|
|
123
123
|
return (
|
|
124
124
|
<View style={styles.wrap}>
|
|
125
125
|
<WrapHeaderScrollable
|
|
126
|
-
onLeft={() => (device_data ? navigate(Routes.
|
|
126
|
+
onLeft={() => (device_data ? navigate(Routes.Main) : goBack())}
|
|
127
127
|
title={t('devices')}
|
|
128
128
|
headerAniStyle={styles.headerAniStyle}
|
|
129
129
|
>
|
|
@@ -85,7 +85,7 @@ const AddSubUnit = ({ route }) => {
|
|
|
85
85
|
screen: Routes.UnitDetail,
|
|
86
86
|
params: {
|
|
87
87
|
unitId: data?.id,
|
|
88
|
-
routeName: Routes.
|
|
88
|
+
routeName: Routes.Main,
|
|
89
89
|
},
|
|
90
90
|
})
|
|
91
91
|
);
|
|
@@ -123,7 +123,7 @@ const AddSubUnit = ({ route }) => {
|
|
|
123
123
|
unitData: unit,
|
|
124
124
|
stationId: data.id,
|
|
125
125
|
isAddSubUnit: true,
|
|
126
|
-
routeName: Routes.
|
|
126
|
+
routeName: Routes.Main,
|
|
127
127
|
};
|
|
128
128
|
if (isInsideUnit) {
|
|
129
129
|
navigate(Routes.UnitDetail, commonPrams);
|
|
@@ -47,7 +47,7 @@ const AddLGDevice = memo(({ route }) => {
|
|
|
47
47
|
);
|
|
48
48
|
if (!success || !data.access_token) {
|
|
49
49
|
ToastBottomHelper.error(t('lg_sync_failed'));
|
|
50
|
-
navigate(Routes.
|
|
50
|
+
navigate(Routes.Main);
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -63,12 +63,12 @@ const AddLGDevice = memo(({ route }) => {
|
|
|
63
63
|
);
|
|
64
64
|
if (!successSync) {
|
|
65
65
|
ToastBottomHelper.error(t('lg_sync_failed'));
|
|
66
|
-
navigate(Routes.
|
|
66
|
+
navigate(Routes.Main);
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
ToastBottomHelper.success(t('lg_sync_success'));
|
|
71
|
-
navigate(Routes.
|
|
71
|
+
navigate(Routes.Main);
|
|
72
72
|
}, [backend_url, code, navigate, stationId, t]);
|
|
73
73
|
|
|
74
74
|
const stations =
|
|
@@ -188,7 +188,7 @@ describe('Test Add LG Device', () => {
|
|
|
188
188
|
text1: getTranslate('en', 'lg_sync_success'),
|
|
189
189
|
visibilityTime: 1000,
|
|
190
190
|
});
|
|
191
|
-
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.
|
|
191
|
+
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.Main);
|
|
192
192
|
});
|
|
193
193
|
|
|
194
194
|
it('ViewButtonBottom onRightClick with case sync device fail', async () => {
|
|
@@ -240,7 +240,7 @@ describe('Test Add LG Device', () => {
|
|
|
240
240
|
text1: getTranslate('en', 'lg_sync_failed'),
|
|
241
241
|
visibilityTime: 1000,
|
|
242
242
|
});
|
|
243
|
-
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.
|
|
243
|
+
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.Main);
|
|
244
244
|
});
|
|
245
245
|
|
|
246
246
|
it('ViewButtonBottom onRightClick with stationId but sync failed', async () => {
|
|
@@ -286,7 +286,7 @@ describe('Test Add LG Device', () => {
|
|
|
286
286
|
text1: getTranslate('en', 'lg_sync_failed'),
|
|
287
287
|
visibilityTime: 1000,
|
|
288
288
|
});
|
|
289
|
-
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.
|
|
289
|
+
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.Main);
|
|
290
290
|
});
|
|
291
291
|
|
|
292
292
|
it('ViewButtonBottom onRightClick with stationId but get token failed, wrong data', async () => {
|
|
@@ -329,7 +329,7 @@ describe('Test Add LG Device', () => {
|
|
|
329
329
|
|
|
330
330
|
expect(spyToastSuccess).not.toBeCalled();
|
|
331
331
|
expect(spyToastError).toBeCalled();
|
|
332
|
-
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.
|
|
332
|
+
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.Main);
|
|
333
333
|
|
|
334
334
|
spyToastSuccess.mockReset();
|
|
335
335
|
spyToastSuccess.mockRestore();
|
|
@@ -365,7 +365,7 @@ describe('Test Add LG Device', () => {
|
|
|
365
365
|
|
|
366
366
|
expect(spyToastSuccess).not.toBeCalled();
|
|
367
367
|
expect(spyToastError).toBeCalled();
|
|
368
|
-
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.
|
|
368
|
+
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.Main);
|
|
369
369
|
|
|
370
370
|
spyToastSuccess.mockReset();
|
|
371
371
|
spyToastSuccess.mockRestore();
|
|
@@ -205,9 +205,7 @@ const UnitDetail = ({ route }) => {
|
|
|
205
205
|
[navigate]
|
|
206
206
|
);
|
|
207
207
|
|
|
208
|
-
useBlockBack(
|
|
209
|
-
isSuccessfullyConnected ? RouterHardware(Routes.Dashboard) : goBack
|
|
210
|
-
);
|
|
208
|
+
useBlockBack(isSuccessfullyConnected ? RouterHardware(Routes.Main) : goBack);
|
|
211
209
|
const user = useSCContextSelector((state) => state?.auth?.account?.user);
|
|
212
210
|
const { isFirstOpenCamera, appState } = useSCContextSelector(
|
|
213
211
|
(state) => state.app
|
|
@@ -497,7 +497,7 @@ describe('Test UnitDetail', () => {
|
|
|
497
497
|
|
|
498
498
|
it('test get automate onPress goBack', async () => {
|
|
499
499
|
Platform.OS = 'ios';
|
|
500
|
-
route.params.routeName = Routes.
|
|
500
|
+
route.params.routeName = Routes.Main;
|
|
501
501
|
jest.useFakeTimers();
|
|
502
502
|
|
|
503
503
|
mock.onGet(getAutomates).reply(200, [{}]);
|
|
@@ -515,11 +515,11 @@ describe('Test UnitDetail', () => {
|
|
|
515
515
|
await act(async () => {
|
|
516
516
|
await touchableOpacities[0].props.onPress();
|
|
517
517
|
});
|
|
518
|
-
expect(global.mockedGoBack).
|
|
518
|
+
expect(global.mockedGoBack).toHaveBeenCalled();
|
|
519
519
|
});
|
|
520
520
|
|
|
521
521
|
it('test onPress goBack with routeName', async () => {
|
|
522
|
-
useRoute.mockReturnValue({ params: { routeName: Routes.
|
|
522
|
+
useRoute.mockReturnValue({ params: { routeName: Routes.Main } });
|
|
523
523
|
await act(async () => {
|
|
524
524
|
tree = await renderer.create(wrapComponent(route, account));
|
|
525
525
|
});
|
|
@@ -528,6 +528,6 @@ describe('Test UnitDetail', () => {
|
|
|
528
528
|
await act(async () => {
|
|
529
529
|
await touchableOpacities[0].props.onPress();
|
|
530
530
|
});
|
|
531
|
-
expect(global.mockedNavigate).
|
|
531
|
+
expect(global.mockedNavigate).toHaveBeenCalledWith(Routes.Main);
|
|
532
532
|
});
|
|
533
533
|
});
|
package/src/screens/UnitSummary/components/PowerConsumption/__test__/PowerConsumption.test.js
CHANGED
|
@@ -2,6 +2,7 @@ import MockAdapter from 'axios-mock-adapter';
|
|
|
2
2
|
import renderer, { act, create } from 'react-test-renderer';
|
|
3
3
|
|
|
4
4
|
import moment from 'moment';
|
|
5
|
+
import { ActivityIndicator } from 'react-native';
|
|
5
6
|
import { Today } from '../../../../../commons';
|
|
6
7
|
import DateTimeRangeChange from '../../../../../commons/DateTimeRangeChange';
|
|
7
8
|
import PowerConsumptionChart from '../../../../../commons/Device/PowerConsumptionChart';
|
|
@@ -308,4 +309,35 @@ describe('Test PowerConsumption', () => {
|
|
|
308
309
|
powerConsumptionChart.findByType(DateTimeRangeChange).props.endTime
|
|
309
310
|
).toEqual(newEndDate);
|
|
310
311
|
});
|
|
312
|
+
|
|
313
|
+
it('should show ActivityIndicator when isFetching is true', async () => {
|
|
314
|
+
const summaryDetail = {
|
|
315
|
+
listConfigs: {
|
|
316
|
+
total_power: 207,
|
|
317
|
+
},
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
let resolvePromise;
|
|
321
|
+
const pendingPromise = new Promise((resolve) => {
|
|
322
|
+
resolvePromise = resolve;
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
mock.onGet(API.VALUE_CONSUME.DISPLAY_HISTORY()).reply(async () => {
|
|
326
|
+
await pendingPromise;
|
|
327
|
+
return [200, []];
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
await act(async () => {
|
|
331
|
+
tree = await create(wrapComponent(summaryDetail));
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
const instance = tree.root;
|
|
335
|
+
const activityIndicator = instance.findByType(ActivityIndicator);
|
|
336
|
+
expect(activityIndicator).toBeDefined();
|
|
337
|
+
expect(activityIndicator.props.size).toEqual('large');
|
|
338
|
+
|
|
339
|
+
await act(async () => {
|
|
340
|
+
resolvePromise();
|
|
341
|
+
});
|
|
342
|
+
});
|
|
311
343
|
});
|
|
@@ -1348,6 +1348,7 @@ export default {
|
|
|
1348
1348
|
not_activated: 'Not activated',
|
|
1349
1349
|
open: 'Open',
|
|
1350
1350
|
close: 'Close',
|
|
1351
|
+
detail: 'Detail',
|
|
1351
1352
|
create_contact_success: 'Create contact success!',
|
|
1352
1353
|
can_not_login_to_current_ssid: "Can't login to current SSID",
|
|
1353
1354
|
confirm_password_not_match: 'Confirm password does not match',
|
|
@@ -1346,6 +1346,7 @@ export default {
|
|
|
1346
1346
|
not_activated: 'Không kích hoạt',
|
|
1347
1347
|
open: 'Mở',
|
|
1348
1348
|
close: 'Đóng',
|
|
1349
|
+
detail: 'Chi tiết',
|
|
1349
1350
|
create_contact_success: 'Tạo liên hệ thành công!',
|
|
1350
1351
|
can_not_login_to_current_ssid: 'Không thể đăng nhập vào SSID hiện tại',
|
|
1351
1352
|
confirm_password_not_match: 'Mật khẩu xác nhận không trùng khớp',
|