@ledvance/ui-biz-bundle 1.1.82 → 1.1.84
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
CHANGED
|
@@ -92,6 +92,7 @@ export interface DefMoodOption extends LightCategory{
|
|
|
92
92
|
isSupportColor: boolean;
|
|
93
93
|
isSupportTemperature: boolean;
|
|
94
94
|
isSupportBrightness: boolean;
|
|
95
|
+
isSupportSceneStatus?: boolean;// putFeature中的SceneStatus,包含Flag和Mood选中的ID
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
export interface MoodDps {
|
|
@@ -19,10 +19,10 @@ import {
|
|
|
19
19
|
stripDp2Obj,
|
|
20
20
|
stripObj2Dp,
|
|
21
21
|
} from './MoodParse';
|
|
22
|
-
import { useDp, useDps
|
|
23
|
-
import { useState
|
|
22
|
+
import {useDeviceId, useDp, useDps} from '@ledvance/base/src/models/modules/NativePropsSlice';
|
|
23
|
+
import {useCallback, useEffect, useState} from 'react';
|
|
24
24
|
import { useUpdateEffect } from 'ahooks';
|
|
25
|
-
import { WorkMode } from '@ledvance/base/src/utils/interface';
|
|
25
|
+
import {SceneStatusType, WorkMode } from '@ledvance/base/src/utils/interface';
|
|
26
26
|
import { Result } from '@ledvance/base/src/models/modules/Result';
|
|
27
27
|
|
|
28
28
|
const SceneFeatureId = 'SimplifyScene';
|
|
@@ -241,3 +241,33 @@ export const saveMoodList = (
|
|
|
241
241
|
: SceneFeatureId;
|
|
242
242
|
return setRemoteMoodList(devId, isFeature, remoteMoods, moodFeatureId);
|
|
243
243
|
};
|
|
244
|
+
|
|
245
|
+
export function useSceneStatusId(params: MoodPageParams): [number, (moodId: number) => Promise<any>] {
|
|
246
|
+
const devId = useDeviceId();
|
|
247
|
+
const [sceneStatusId, setSceneStatusId] = useState(-1);
|
|
248
|
+
if (!params.isSupportSceneStatus) {
|
|
249
|
+
const setEmpty = useCallback((moodId: number) => {
|
|
250
|
+
return new Promise<any>((resolve, _reject) => {
|
|
251
|
+
resolve(moodId)
|
|
252
|
+
});
|
|
253
|
+
}, []);
|
|
254
|
+
return [sceneStatusId, setEmpty]
|
|
255
|
+
}
|
|
256
|
+
useEffect(() => {
|
|
257
|
+
getFeature(devId, "SceneStatus").then((res) => {
|
|
258
|
+
if (res.data && res.data.type === SceneStatusType.Mood) {
|
|
259
|
+
setSceneStatusId(res.data.id)
|
|
260
|
+
}
|
|
261
|
+
})
|
|
262
|
+
}, [])
|
|
263
|
+
const setSceneStatusIdRemote = useCallback((moodId: number) => {
|
|
264
|
+
return new Promise<any>((resolve, _reject) => {
|
|
265
|
+
putFeature(devId, "SceneStatus", {type: SceneStatusType.Mood, id: moodId}).then((res) => {
|
|
266
|
+
setSceneStatusId(moodId);
|
|
267
|
+
resolve(res);
|
|
268
|
+
})
|
|
269
|
+
});
|
|
270
|
+
}, [])
|
|
271
|
+
|
|
272
|
+
return [sceneStatusId, setSceneStatusIdRemote]
|
|
273
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo } from 'react';
|
|
2
2
|
import Page from '@ledvance/base/src/components/Page';
|
|
3
3
|
import { Utils } from 'tuya-panel-kit';
|
|
4
|
-
import {
|
|
4
|
+
import {saveMoodList, useSceneStatusId, useSwitchLed, useWorkMode} from './MoodActions';
|
|
5
5
|
import {
|
|
6
6
|
useDeviceId,
|
|
7
7
|
useDeviceInfo,
|
|
@@ -41,6 +41,7 @@ const MoodPage = () => {
|
|
|
41
41
|
const [secondaryWork, setSecondaryWork] = useWorkMode(params.secondaryWorkMode!);
|
|
42
42
|
const [switchLed] = useSwitchLed(params.switchLedDp)
|
|
43
43
|
const [flagMode, setFlagMode] = useFlagMode();
|
|
44
|
+
const [sceneStatusId, setSceneStatusId] = useSceneStatusId(params);
|
|
44
45
|
|
|
45
46
|
const state = useReactive<MoodPageState>({
|
|
46
47
|
currentMood: undefined,
|
|
@@ -160,7 +161,9 @@ const MoodPage = () => {
|
|
|
160
161
|
},
|
|
161
162
|
};
|
|
162
163
|
if (mode === 'set') {
|
|
163
|
-
|
|
164
|
+
await setMoodInfo(checkedMood);
|
|
165
|
+
await setSceneStatusId(checkedMood.id);
|
|
166
|
+
return;
|
|
164
167
|
}
|
|
165
168
|
let newScene: MoodUIInfo[] = [];
|
|
166
169
|
if (mode === 'add') {
|
|
@@ -197,18 +200,20 @@ const MoodPage = () => {
|
|
|
197
200
|
if (mood) {
|
|
198
201
|
if (mode === 'del') {
|
|
199
202
|
if (
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
203
|
+
(mainWork !== WorkMode.Scene && secondaryWork !== WorkMode.Scene) ||
|
|
204
|
+
(params.isCeilingLight
|
|
205
|
+
? currentMood.mainLamp.id !== moodInfo.mainLamp.id &&
|
|
206
|
+
currentMood.secondaryLamp.id !== moodInfo.secondaryLamp.id
|
|
207
|
+
: (params.isSupportSceneStatus ? currentMood.id !== sceneStatusId : currentMood.id !== moodInfo.id)) || !switchLed
|
|
205
208
|
) {
|
|
206
209
|
return {
|
|
207
210
|
success: true,
|
|
208
211
|
};
|
|
209
212
|
}
|
|
210
213
|
}
|
|
211
|
-
setMoodInfo(mood).then()
|
|
214
|
+
setMoodInfo(mood).then(() => {
|
|
215
|
+
setSceneStatusId(mood.id).then();
|
|
216
|
+
});
|
|
212
217
|
} else {
|
|
213
218
|
if (mainWork === WorkMode.Scene) {
|
|
214
219
|
if (params.isCeilingLight) {
|
|
@@ -266,18 +271,20 @@ const MoodPage = () => {
|
|
|
266
271
|
);
|
|
267
272
|
|
|
268
273
|
const getItemEnable = useCallback(
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
274
|
+
(moodItem: MoodUIInfo) => {
|
|
275
|
+
if (params.isCeilingLight) {
|
|
276
|
+
return (
|
|
277
|
+
moodInfo.mainLamp.id === moodItem.mainLamp.id &&
|
|
278
|
+
moodInfo.secondaryLamp.id === moodItem.secondaryLamp.id &&
|
|
279
|
+
(mainWork === WorkMode.Scene || secondaryWork === WorkMode.Scene) && !flagMode.flagMode && switchLed
|
|
280
|
+
);
|
|
281
|
+
} else if (params.isSupportSceneStatus && sceneStatusId !== -1) {
|
|
282
|
+
return sceneStatusId === moodItem.id && mainWork === WorkMode.Scene && !flagMode.flagMode && switchLed
|
|
283
|
+
} else {
|
|
284
|
+
return moodInfo.id === moodItem.id && mainWork === WorkMode.Scene && !flagMode.flagMode && switchLed
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
[moodInfo, mainWork, secondaryWork, flagMode?.flagMode, switchLed, sceneStatusId]
|
|
281
288
|
);
|
|
282
289
|
|
|
283
290
|
const nameRepeat = useCallback((mood: MoodUIInfo) => {
|