@ledvance/ui-biz-bundle 1.0.86 → 1.0.87

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
@@ -4,7 +4,7 @@
4
4
  "name": "@ledvance/ui-biz-bundle",
5
5
  "pid": [],
6
6
  "uiid": "",
7
- "version": "1.0.86",
7
+ "version": "1.0.87",
8
8
  "scripts": {},
9
9
  "dependencies": {
10
10
  "@ledvance/base": "^1.x",
@@ -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, 'mode');
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.mode > 200 ? maxModeObject.mode + 1 : 201 : state.mood.id
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 './powerOnBehaviorActions'
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 = (props: PowerBehaviorPageParams) => {
20
+ const PowerOnBehaviorPage = () => {
21
+ const params = useRoute().params as PowerBehaviorPageParams
20
22
  const deviceInfo = useDeviceInfo()
21
- const [powerMemory, setPowerMemory] = usePowerBehavior(props.powerBehaviorCode)
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
 
@@ -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 cloudData = Array.isArray(parseJSON(res?.data)) && parseJSON(res?.data) || []
430
- if (res.success && cloudData?.length) {
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('资源未找到') || cloudData?.length === 0) {
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' && '05') || state.fadeOutMinute
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' && '05') || state.fadeInMinute
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' && '05') || state.durationMinute
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.fadeOutMinute}
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 />