@@ -13,21 +13,29 @@ const APP_STORE_NAMESPACE = "lowcoder_app_local_storage";
13
13
const LocalStorageCompBase = withViewFn (
14
14
simpleMultiComp ( { values : stateComp < JSONObject > ( { } ) } ) ,
15
15
( comp ) => {
16
- const originStore = localStorage . getItem ( APP_STORE_NAMESPACE ) || "{}" ;
17
- let parseStore = { } ;
18
- try {
19
- parseStore = JSON . parse ( originStore ) ;
20
- } catch ( e ) {
21
- log . error ( "application local storage invalid" ) ;
22
- }
23
-
16
+ // add custom event listener to update values reactively
24
17
useEffect ( ( ) => {
25
- const value = comp . children . values . value ;
26
- if ( ! isEqual ( value , parseStore ) ) {
27
- log . info ( value , parseStore ) ;
28
- comp . children . values . dispatchChangeValueAction ( parseStore ) ;
29
- }
30
- } , [ parseStore ] ) ;
18
+ const handler = ( ) => {
19
+ try {
20
+ const raw = localStorage . getItem ( APP_STORE_NAMESPACE ) || "{}" ;
21
+ const parsed = JSON . parse ( raw ) ;
22
+ console . log ( "[LocalStorageComp] Custom event received:" , parsed ) ;
23
+ comp . children . values . dispatchChangeValueAction ( parsed ) ;
24
+ } catch ( e ) {
25
+ log . error ( "Failed to parse localStorage:" , e ) ;
26
+ }
27
+ } ;
28
+
29
+ // Add listener on mount
30
+ window . addEventListener ( "lowcoder-localstorage-updated" , handler ) ;
31
+
32
+ // Run once on mount to initialize
33
+ handler ( ) ;
34
+
35
+ return ( ) => {
36
+ window . removeEventListener ( "lowcoder-localstorage-updated" , handler ) ;
37
+ } ;
38
+ } , [ ] ) ;
31
39
32
40
return null ;
33
41
}
@@ -62,6 +70,8 @@ LocalStorageComp = withMethodExposing(LocalStorageComp, [
62
70
parseStore [ key ] = value ;
63
71
localStorage . setItem ( APP_STORE_NAMESPACE , JSON . stringify ( parseStore ) ) ;
64
72
comp . children . values . dispatchChangeValueAction ( parseStore ) ;
73
+
74
+ window . dispatchEvent ( new CustomEvent ( "lowcoder-localstorage-updated" ) ) ;
65
75
} catch ( e ) {
66
76
localStorage . setItem ( APP_STORE_NAMESPACE , "{}" ) ;
67
77
}
@@ -83,6 +93,9 @@ LocalStorageComp = withMethodExposing(LocalStorageComp, [
83
93
delete parseStore [ key ] ;
84
94
localStorage . setItem ( APP_STORE_NAMESPACE , JSON . stringify ( parseStore ) ) ;
85
95
comp . children . values . dispatchChangeValueAction ( parseStore ) ;
96
+
97
+ // Trigger update
98
+ window . dispatchEvent ( new CustomEvent ( "lowcoder-localstorage-updated" ) ) ;
86
99
} catch ( e ) {
87
100
localStorage . setItem ( APP_STORE_NAMESPACE , "{}" ) ;
88
101
}
@@ -98,6 +111,9 @@ LocalStorageComp = withMethodExposing(LocalStorageComp, [
98
111
execute : ( comp ) => {
99
112
localStorage . removeItem ( APP_STORE_NAMESPACE ) ;
100
113
comp . children . values . dispatchChangeValueAction ( { } ) ;
114
+
115
+ // Trigger update
116
+ window . dispatchEvent ( new CustomEvent ( "lowcoder-localstorage-updated" ) ) ;
101
117
} ,
102
118
} ,
103
119
] ) ;
0 commit comments