@@ -13,21 +13,28 @@ const APP_STORE_NAMESPACE = "lowcoder_app_local_storage";
1313const LocalStorageCompBase = withViewFn (
1414 simpleMultiComp ( { values : stateComp < JSONObject > ( { } ) } ) ,
1515 ( 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
2417 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+ comp . children . values . dispatchChangeValueAction ( parsed ) ;
23+ } catch ( e ) {
24+ log . error ( "Failed to parse localStorage:" , e ) ;
25+ }
26+ } ;
27+
28+ // Add listener on mount
29+ window . addEventListener ( "lowcoder-localstorage-updated" , handler ) ;
30+
31+ // Run once on mount to initialize
32+ handler ( ) ;
33+
34+ return ( ) => {
35+ window . removeEventListener ( "lowcoder-localstorage-updated" , handler ) ;
36+ } ;
37+ } , [ ] ) ;
3138
3239 return null ;
3340 }
@@ -62,6 +69,8 @@ LocalStorageComp = withMethodExposing(LocalStorageComp, [
6269 parseStore [ key ] = value ;
6370 localStorage . setItem ( APP_STORE_NAMESPACE , JSON . stringify ( parseStore ) ) ;
6471 comp . children . values . dispatchChangeValueAction ( parseStore ) ;
72+
73+ window . dispatchEvent ( new CustomEvent ( "lowcoder-localstorage-updated" ) ) ;
6574 } catch ( e ) {
6675 localStorage . setItem ( APP_STORE_NAMESPACE , "{}" ) ;
6776 }
@@ -83,6 +92,9 @@ LocalStorageComp = withMethodExposing(LocalStorageComp, [
8392 delete parseStore [ key ] ;
8493 localStorage . setItem ( APP_STORE_NAMESPACE , JSON . stringify ( parseStore ) ) ;
8594 comp . children . values . dispatchChangeValueAction ( parseStore ) ;
95+
96+ // Trigger update
97+ window . dispatchEvent ( new CustomEvent ( "lowcoder-localstorage-updated" ) ) ;
8698 } catch ( e ) {
8799 localStorage . setItem ( APP_STORE_NAMESPACE , "{}" ) ;
88100 }
@@ -98,6 +110,9 @@ LocalStorageComp = withMethodExposing(LocalStorageComp, [
98110 execute : ( comp ) => {
99111 localStorage . removeItem ( APP_STORE_NAMESPACE ) ;
100112 comp . children . values . dispatchChangeValueAction ( { } ) ;
113+
114+ // Trigger update
115+ window . dispatchEvent ( new CustomEvent ( "lowcoder-localstorage-updated" ) ) ;
101116 } ,
102117 } ,
103118] ) ;
0 commit comments