@ledvance/ui-biz-bundle 1.0.86 → 1.0.88
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/modules/biorhythm/BiorhythmPage.tsx +3 -0
- package/src/modules/fixedTime/FixedTimeActions.ts +9 -0
- package/src/modules/mood/FantasyMood.tsx +2 -2
- package/src/modules/mood/FantasyMoodEditPage.tsx +5 -4
- package/src/modules/powerOnBehavior/PowerOnBehaviorPage.tsx +6 -4
- package/src/modules/randomTime/RandomTimeActions.ts +12 -1
- package/src/modules/scene/SceneAction.ts +6 -5
- package/src/modules/sleepWakeup/SleepWakeUpDetailPage.tsx +6 -4
- package/src/modules/timeSchedule/TimeSchedulePage.tsx +13 -5
package/package.json
CHANGED
|
@@ -553,6 +553,9 @@ const BiorhythmPage = () => {
|
|
|
553
553
|
onPlanEdited,
|
|
554
554
|
onPlanDelete,
|
|
555
555
|
minimumEnable,
|
|
556
|
+
iconIdList: state.planList?.map(item => {
|
|
557
|
+
return item.iconId
|
|
558
|
+
}),
|
|
556
559
|
isMixRGBWLamp: params.isMixRGBWLamp,
|
|
557
560
|
isSupportTemperature: params.isSupportTemperature,
|
|
558
561
|
isSupportBrightness: params.isSupportBrightness,
|
|
@@ -34,6 +34,15 @@ export interface CycleTimerItem extends CycleTimer {
|
|
|
34
34
|
name: string
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
+
export interface PlugFixedTimer {
|
|
38
|
+
power: boolean;
|
|
39
|
+
channel: number;
|
|
40
|
+
weeks: number[];
|
|
41
|
+
startTime: number;
|
|
42
|
+
endTime: number;
|
|
43
|
+
openTime: number;
|
|
44
|
+
closeTime: number;
|
|
45
|
+
}
|
|
37
46
|
|
|
38
47
|
type UseFixedTimeType = (dpKey: string, disableFeature?: boolean) => [CycleTimerItem[], (fixedTimeList: CycleTimerItem[], manualEdit?: boolean) => Promise<{ success: boolean }>]
|
|
39
48
|
|
|
@@ -41,7 +41,7 @@ const FantasyMoodPage = () => {
|
|
|
41
41
|
const params: FantasyMoodPageProps = {
|
|
42
42
|
...routeParams,
|
|
43
43
|
}
|
|
44
|
-
const [sceneId, setScene] = useFantasyScene(params.sceneDpCode, params.workModeDpCode, params.isStringLight)
|
|
44
|
+
const [sceneId, setScene] = useFantasyScene(params.sceneDpCode, params.workModeDpCode, params.switchLedDpCode, params.isStringLight)
|
|
45
45
|
const [workMode] = useWorkMode(params.workModeDpCode)
|
|
46
46
|
const deviceInfo = useDeviceInfo()
|
|
47
47
|
const navigation = useNavigation()
|
|
@@ -80,7 +80,7 @@ const FantasyMoodPage = () => {
|
|
|
80
80
|
state.flag = Symbol()
|
|
81
81
|
},
|
|
82
82
|
})
|
|
83
|
-
}, [])
|
|
83
|
+
}, [state.scenes])
|
|
84
84
|
|
|
85
85
|
const getSwitchEnable = useCallback((id: number) => {
|
|
86
86
|
return state.currentScene?.id === id && workMode === SCENE
|
|
@@ -50,7 +50,7 @@ const FantasyMoodEditPage = () => {
|
|
|
50
50
|
const moduleParams = params.moduleParams
|
|
51
51
|
const deviceId = useDeviceId()
|
|
52
52
|
const [, setWorkMode] = useWorkMode(moduleParams.workModeDpCode)
|
|
53
|
-
const [, setFantasyScene] = useFantasyScene(params.moduleParams.sceneDpCode, params.moduleParams.workModeDpCode, moduleParams.isStringLight)
|
|
53
|
+
const [, setFantasyScene] = useFantasyScene(params.moduleParams.sceneDpCode, params.moduleParams.workModeDpCode, params.moduleParams.switchLedDpCode, moduleParams.isStringLight)
|
|
54
54
|
const role = useRole()
|
|
55
55
|
const state = useReactive<FantasyMoodEditPageState>({
|
|
56
56
|
headline: '',
|
|
@@ -83,7 +83,7 @@ const FantasyMoodEditPage = () => {
|
|
|
83
83
|
}, [])
|
|
84
84
|
|
|
85
85
|
const onPost = useCallback(async (isDelete: boolean) => {
|
|
86
|
-
const maxModeObject = maxBy(params.moods, '
|
|
86
|
+
const maxModeObject = maxBy(params.moods, 'id');
|
|
87
87
|
const currentMood = {
|
|
88
88
|
...state.mood,
|
|
89
89
|
nodes: state.mood.nodes.map(node => {
|
|
@@ -97,8 +97,9 @@ const FantasyMoodEditPage = () => {
|
|
|
97
97
|
}
|
|
98
98
|
return node
|
|
99
99
|
}),
|
|
100
|
-
id: params.mode === 'add' ? maxModeObject && maxModeObject.
|
|
100
|
+
id: params.mode === 'add' ? maxModeObject && maxModeObject.id > 200 ? maxModeObject.id + 1 : 201 : state.mood.id
|
|
101
101
|
}
|
|
102
|
+
|
|
102
103
|
const list = params.mode === 'add' ? [currentMood,...params.moods] :
|
|
103
104
|
isDelete ? params.moods.filter(mood => mood.id !== currentMood.id) :
|
|
104
105
|
params.moods.map(mood => {
|
|
@@ -118,7 +119,7 @@ const FantasyMoodEditPage = () => {
|
|
|
118
119
|
}
|
|
119
120
|
navigation.navigate(ui_biz_routerKey.ui_biz_fantasy_mood)
|
|
120
121
|
routeParams.onSave()
|
|
121
|
-
}, [])
|
|
122
|
+
}, [params.moods])
|
|
122
123
|
|
|
123
124
|
const createSelectModeData = useCallback(() => {
|
|
124
125
|
return Object.values(state.sceneMode).map(scene => {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react'
|
|
2
2
|
import { Image, ScrollView, StyleSheet, Text, TouchableOpacity, View, ViewProps } from 'react-native'
|
|
3
|
+
import { useRoute } from '@react-navigation/core'
|
|
3
4
|
import Page from '@ledvance/base/src/components/Page'
|
|
4
5
|
import { useDeviceInfo } from '@ledvance/base/src/models/modules/NativePropsSlice'
|
|
5
6
|
import I18n from '@ledvance/base/src/i18n'
|
|
6
|
-
import { PowerBehaviorPageParams, usePowerBehavior } from './
|
|
7
|
+
import { PowerBehaviorPageParams, usePowerBehavior } from './PowerOnBehaviorActions'
|
|
7
8
|
import { Utils } from 'tuya-panel-kit'
|
|
8
9
|
import Spacer from '@ledvance/base/src/components/Spacer'
|
|
9
10
|
import Card from '@ledvance/base/src/components/Card'
|
|
@@ -16,10 +17,11 @@ const RELAY_STATUS_OFF = 'off'
|
|
|
16
17
|
const RELAY_STATUS_ON = 'on'
|
|
17
18
|
const RELAY_STATUS_MEMORY = 'memory'
|
|
18
19
|
|
|
19
|
-
const PowerOnBehaviorPage = (
|
|
20
|
+
const PowerOnBehaviorPage = () => {
|
|
21
|
+
const params = useRoute().params as PowerBehaviorPageParams
|
|
20
22
|
const deviceInfo = useDeviceInfo()
|
|
21
|
-
const [powerMemory, setPowerMemory] = usePowerBehavior(
|
|
22
|
-
|
|
23
|
+
const [powerMemory, setPowerMemory] = usePowerBehavior(params.powerBehaviorCode)
|
|
24
|
+
|
|
23
25
|
const state = useReactive({
|
|
24
26
|
powerMemory,
|
|
25
27
|
loading: false,
|
|
@@ -29,6 +29,18 @@ export interface RandomTimerItem extends RandomTimer{
|
|
|
29
29
|
name: string
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
export interface PlugRandomTimer {
|
|
33
|
+
power: boolean;
|
|
34
|
+
weeks: number[];
|
|
35
|
+
startTime: number;
|
|
36
|
+
endTime: number;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface PlugRandomTimerItem extends PlugRandomTimer {
|
|
40
|
+
index: number | string
|
|
41
|
+
name: string
|
|
42
|
+
}
|
|
43
|
+
|
|
32
44
|
|
|
33
45
|
type UseFixedTimeType = (dpKey: string, disableFeature?: boolean) => [RandomTimerItem[], (randomTimeList: RandomTimerItem[], manualEdit?: boolean) => Promise<{ success: boolean}>]
|
|
34
46
|
|
|
@@ -38,7 +50,6 @@ export const useRandomTime : UseFixedTimeType = (dpKey: string, disableFeature?:
|
|
|
38
50
|
const [uiData, setUiData] = useState<RandomTimerItem[]>([])
|
|
39
51
|
const [randomTime, setRandomTime]: [string, (v: string) => Promise<Result<any>>] = useDp(dpKey)
|
|
40
52
|
const randomTimeList: RandomTimer[] = useMemo(() => RandomTimer.parse(randomTime).nodes, [randomTime])
|
|
41
|
-
console.log(RandomTimer.parse(randomTime), '< --- randomTimer')
|
|
42
53
|
const formatterFn = useCallback(() =>{
|
|
43
54
|
return randomTimeList.map((item, idx)=>({
|
|
44
55
|
...item,
|
|
@@ -401,7 +401,7 @@ export function stripObj2Dp(scene: StripSceneInfo, isStringLight: boolean = fals
|
|
|
401
401
|
return versionHex + idHex + modeHex + intervalTimeHex + changeTimeHex + optionAHex + optionBHex + optionCHex + nodeHex
|
|
402
402
|
}
|
|
403
403
|
|
|
404
|
-
export function useFantasyScene(sceneDp: string, workModeDp: string, isStringLight?: boolean): [number, (scene: StripSceneInfo) => Promise<Result<any>>] {
|
|
404
|
+
export function useFantasyScene(sceneDp: string, workModeDp: string, switchDp: string, isStringLight?: boolean): [number, (scene: StripSceneInfo) => Promise<Result<any>>] {
|
|
405
405
|
const [dps, setDps]: [any, (v: any) => Promise<Result<any>>] = useDps()
|
|
406
406
|
const dp = dps[sceneDp]
|
|
407
407
|
const [sceneState, setSceneState] = useState<StripSceneInfo>(stripDp2Obj(dp, isStringLight))
|
|
@@ -414,7 +414,8 @@ export function useFantasyScene(sceneDp: string, workModeDp: string, isStringLig
|
|
|
414
414
|
const sceneHex = stripObj2Dp(scene, isStringLight)
|
|
415
415
|
return setDps({
|
|
416
416
|
[sceneDp]: sceneHex,
|
|
417
|
-
[workModeDp]: SCENE
|
|
417
|
+
[workModeDp]: SCENE,
|
|
418
|
+
[switchDp]: true
|
|
418
419
|
})
|
|
419
420
|
}
|
|
420
421
|
return [sceneState.id, setFantasyScene]
|
|
@@ -426,14 +427,14 @@ type LampType = {
|
|
|
426
427
|
}
|
|
427
428
|
export async function getRemoteFantasyScene(featureId: string, devId: string, lampType: LampType) {
|
|
428
429
|
const res = await NativeApi.getJson(devId, featureId)
|
|
429
|
-
const
|
|
430
|
-
if (res.success &&
|
|
430
|
+
const isNormalData = Array.isArray(parseJSON(res?.data))
|
|
431
|
+
if (res.success && isNormalData) {
|
|
431
432
|
return {
|
|
432
433
|
success: true,
|
|
433
434
|
data: JSON.parse(res.data)?.map(item => remoteFantasySceneInfo2SceneUIState(item, lampType.isStringLight)),
|
|
434
435
|
}
|
|
435
436
|
} else {
|
|
436
|
-
if (res.msg?.includes('资源未找到') ||
|
|
437
|
+
if (res.msg?.includes('资源未找到') || !isNormalData) {
|
|
437
438
|
const defaultScene = getDefFantasyScene(lampType)
|
|
438
439
|
const res = await NativeApi.putJson(devId, featureId, JSON.stringify(defaultScene))
|
|
439
440
|
if (res.success) {
|
|
@@ -126,19 +126,19 @@ const SleepWakeUpDetailPage = () => {
|
|
|
126
126
|
}, [])
|
|
127
127
|
|
|
128
128
|
useUpdateEffect(() => {
|
|
129
|
-
const min = state.fadeOutHour === '02' ? '00' : (state.fadeOutHour === '00' && state.fadeOutMinute === '00'
|
|
129
|
+
const min = state.fadeOutHour === '02' ? '00' : (state.fadeOutHour === '00' && state.fadeOutMinute === '00') ? '05' : state.fadeOutMinute
|
|
130
130
|
state.fadeOutMinute = min
|
|
131
131
|
state.fadeOut = (Number(state.fadeOutHour) * 60) + Number(min)
|
|
132
132
|
}, [state.fadeOutHour, state.fadeOutMinute])
|
|
133
133
|
|
|
134
134
|
useUpdateEffect(() => {
|
|
135
|
-
const min = state.fadeInHour === '02' ? '00' : (state.fadeInHour === '00' && state.fadeInMinute === '00'
|
|
135
|
+
const min = state.fadeInHour === '02' ? '00' : (state.fadeInHour === '00' && state.fadeInMinute === '00') ? '05' : state.fadeInMinute
|
|
136
136
|
state.fadeInMinute = min
|
|
137
137
|
state.fadeIn = (Number(state.fadeInHour) * 60) + Number(min)
|
|
138
138
|
}, [state.fadeInHour, state.fadeInMinute])
|
|
139
139
|
|
|
140
140
|
useUpdateEffect(() => {
|
|
141
|
-
const min = state.durationHour === '02' ? '00' : (state.durationHour === '00' && state.durationMinute === '00'
|
|
141
|
+
const min = state.durationHour === '02' ? '00' : (state.durationHour === '00' && state.durationMinute === '00') ? '05' : state.durationMinute
|
|
142
142
|
state.durationMinute = min
|
|
143
143
|
state.duration = (Number(state.durationHour) * 60) + Number(min)
|
|
144
144
|
}, [state.durationHour, state.durationMinute])
|
|
@@ -386,7 +386,7 @@ const SleepWakeUpDetailPage = () => {
|
|
|
386
386
|
<LdvPickerView
|
|
387
387
|
style={styles.picker}
|
|
388
388
|
hour={props.isSleep ? state.fadeOutHour : state.fadeInHour}
|
|
389
|
-
minute={props.isSleep ? state.fadeOutMinute : state.
|
|
389
|
+
minute={props.isSleep ? state.fadeOutMinute : state.fadeInMinute}
|
|
390
390
|
minutesStep={5}
|
|
391
391
|
setHour={v => {
|
|
392
392
|
if (props.isSleep) {
|
|
@@ -403,6 +403,7 @@ const SleepWakeUpDetailPage = () => {
|
|
|
403
403
|
}
|
|
404
404
|
}}
|
|
405
405
|
unit={['h', 'min']}
|
|
406
|
+
maxHour={3}
|
|
406
407
|
/>
|
|
407
408
|
<Text>{I18n.formatValue(props.isSleep ? 'add_sleepschedule_one_source_settings_text2' : 'add_wakeupschedule_settings_text2', `${formateTime(props.isSleep ? state.fadeOut : state.fadeIn, props.isSleep)}`)}</Text>
|
|
408
409
|
<Spacer />
|
|
@@ -435,6 +436,7 @@ const SleepWakeUpDetailPage = () => {
|
|
|
435
436
|
setHour={v => (state.durationHour = v)}
|
|
436
437
|
setMinute={v => (state.durationMinute = v)}
|
|
437
438
|
unit={['h', 'min']}
|
|
439
|
+
maxHour={3}
|
|
438
440
|
/>
|
|
439
441
|
<Text>{I18n.formatValue('add_wakeupschedule_settings_text5', `${formateTime(state.duration, !props.isSleep)}`)}</Text>
|
|
440
442
|
<Spacer />
|
|
@@ -99,13 +99,21 @@ const TimeSchedulePage = () => {
|
|
|
99
99
|
}, [state.timeScheduleList])
|
|
100
100
|
|
|
101
101
|
const getTimerScheduleList = async () => {
|
|
102
|
-
const res: any = await NativeApi.timerList(deviceInfo.devId)
|
|
103
|
-
|
|
102
|
+
// const res: any = await NativeApi.timerList(deviceInfo.devId)
|
|
103
|
+
const res: any = await NativeApi.getAllTaskTimer(deviceInfo.devId)
|
|
104
|
+
if (res.success && res.data) {
|
|
104
105
|
// 原生传过来的dps是json字符串。
|
|
105
|
-
const originList = res.
|
|
106
|
+
const originList = res.data.map((item: any) => {
|
|
106
107
|
return {
|
|
107
|
-
|
|
108
|
-
|
|
108
|
+
aliasName: item.remark,
|
|
109
|
+
status: !!item.mStatus,
|
|
110
|
+
id: item.mTimerId,
|
|
111
|
+
groupId: item.mTimerId,
|
|
112
|
+
loops: item.mLoops,
|
|
113
|
+
date: item.mDate,
|
|
114
|
+
time: item.mTime,
|
|
115
|
+
isAppPush: item.isAppPush ? 1 : 0,
|
|
116
|
+
dps: JSON.parse(item.mValue),
|
|
109
117
|
}
|
|
110
118
|
})
|
|
111
119
|
state.timeScheduleList = originList
|