diff --git a/arkoala-arkts/arkui/src/Storage.ets b/arkoala-arkts/arkui/src/Storage.ets index 60420b97edad72d4e693d2f282860577e5147252..a28a8bc5bc42f6185440afc33b16dc298152bc7b 100644 --- a/arkoala-arkts/arkui/src/Storage.ets +++ b/arkoala-arkts/arkui/src/Storage.ets @@ -67,7 +67,7 @@ export class AppStorage { * @param defaultValue - a value used to create property if it does not exist * @returns an AbstractProperty for the given name */ - static setAndRef(propName: string, defaultValue: T): AbstractProperty { + static setAndRef(propName: string, defaultValue: T, ttype: Type): AbstractProperty { return StorageMap.shared.entryOrCreate(propName, defaultValue) } @@ -422,7 +422,7 @@ export class Environment { value = defaultValue as Any } - const prop = AppStorage.setAndRef(key, value as T) + const prop = AppStorage.setAndRef(key, value as T, Type.of(defaultValue)) if (!prop) return false this.props.set(key, false) @@ -640,7 +640,7 @@ export class PersistentStorage { // read property from persist storage let value = this.readFromDisk(key, defaultValue, ttype) // add property to AppStorage and start persistence - AppStorage.setAndRef(key, value as T) + AppStorage.setAndRef(key, value as T, ttype) } // start persistentce with stored value @@ -843,7 +843,7 @@ export class LocalStorage { * @param defaultValue - a value used to create property if it does not exist * @returns an AbstractProperty for the given name */ - setAndRef(propName: string, defaultValue: T): AbstractProperty { + setAndRef(propName: string, defaultValue: T, ttype: Type): AbstractProperty { return this.map.entryOrCreate(propName, defaultValue) } diff --git a/ui2abc/ets-tests/ets/environment-tests/pages/storage/LocalStorageLinkTest.ets b/ui2abc/ets-tests/ets/environment-tests/pages/storage/LocalStorageLinkTest.ets index 8229183b7e1396be2193ca7402c439353a35c46b..9479b00e68d2ad653d2588648044c8a08c84de52 100644 --- a/ui2abc/ets-tests/ets/environment-tests/pages/storage/LocalStorageLinkTest.ets +++ b/ui2abc/ets-tests/ets/environment-tests/pages/storage/LocalStorageLinkTest.ets @@ -23,8 +23,8 @@ import { Entry, Component } from "@ohos.arkui.component" @Entry({ useSharedStorage: true }) @Component export struct LocalStorageLinkTest { - refS: AbstractProperty = LocalStorage.getShared().setAndRef('property.string', 'predefined') - refA: AbstractProperty = LocalStorage.getShared().setAndRef('property.array', ['abc']) + refS: AbstractProperty = LocalStorage.getShared().setAndRef('property.string', 'predefined', Type.of("string")) + refA: AbstractProperty = LocalStorage.getShared().setAndRef('property.array', ['abc'], Type.of(["abc"])) build() { if (!LocalStorage.getShared().ref('property.string')) throw new Error("property.string must be defined") @@ -37,12 +37,12 @@ export struct LocalStorageLinkTest { @Component struct LocalStorageLinkTestChild { - refS: AbstractProperty = LocalStorage.getShared().setAndRef('property.string', 'ignored') + refS: AbstractProperty = LocalStorage.getShared().setAndRef('property.string', 'ignored', Type.of("string")) linkS: SubscribedAbstractProperty = LocalStorage.getShared().link('property.string')! propS: SubscribedAbstractProperty = LocalStorage.getShared().prop('property.string')! @LocalStorageLink("property.string") str: string = "ignore" - refA: AbstractProperty = LocalStorage.getShared().setAndRef('property.array', ['sec']) + refA: AbstractProperty = LocalStorage.getShared().setAndRef('property.array', ['sec'], Type.of(new Array(1))) @LocalStorageLink("property.array") arr: string[] = [] build() { diff --git a/ui2abc/ets-tests/ets/environment-tests/pages/storage/LocalStoragePropTest.ets b/ui2abc/ets-tests/ets/environment-tests/pages/storage/LocalStoragePropTest.ets index f60f5f690661bbaebffb58787c6dfeebcf12cdb5..8f6fdba9b137cbb3202f07a8d912bae68eb9414c 100644 --- a/ui2abc/ets-tests/ets/environment-tests/pages/storage/LocalStoragePropTest.ets +++ b/ui2abc/ets-tests/ets/environment-tests/pages/storage/LocalStoragePropTest.ets @@ -26,7 +26,7 @@ if (storage.prop('property.number')) throw new Error("property.number is @Entry({ storage: storage }) @Component export struct LocalStoragePropTest { - refN: AbstractProperty = storage.setAndRef('property.number', 74) + refN: AbstractProperty = storage.setAndRef('property.number', 74, Type.of(0)) linkN: SubscribedAbstractProperty = storage.link('property.number')! propN: SubscribedAbstractProperty = storage.prop('property.number')! @LocalStorageProp("property.number") num: number = 0 diff --git a/ui2abc/ets-tests/ets/environment-tests/pages/watch/WatchLocalStorage.ets b/ui2abc/ets-tests/ets/environment-tests/pages/watch/WatchLocalStorage.ets index 3b38715cf0f078be8b8f31f832d3539fa65b0ee1..f008375f40cfa7c8f18691d070f09867cf61a475 100644 --- a/ui2abc/ets-tests/ets/environment-tests/pages/watch/WatchLocalStorage.ets +++ b/ui2abc/ets-tests/ets/environment-tests/pages/watch/WatchLocalStorage.ets @@ -34,10 +34,10 @@ export struct WatchLocalStorage { @LocalStorageProp(LS_VALUE_B) @Watch('valueBUpdate') propValueB: number = 0 @State result: string = '' - private refA: AbstractProperty = watchStorage.setAndRef(LS_VALUE_A, -1) + private refA: AbstractProperty = watchStorage.setAndRef(LS_VALUE_A, -1, Type.of(0)) private linkA: SubscribedAbstractProperty|undefined = watchStorage.link(LS_VALUE_A) private propA: SubscribedAbstractProperty|undefined = watchStorage.prop(LS_VALUE_A) - private refB: AbstractProperty = watchStorage.setAndRef(LS_VALUE_B, -1) + private refB: AbstractProperty = watchStorage.setAndRef(LS_VALUE_B, -1, Type.of(0)) private linkB: SubscribedAbstractProperty|undefined = watchStorage.link(LS_VALUE_B) private propB: SubscribedAbstractProperty|undefined = watchStorage.prop(LS_VALUE_B)