@@ -89,9 +89,7 @@ const useAppStore = create<AppState>()(
8989 const compressedData = params . get ( "data" ) ;
9090 if ( compressedData ) {
9191 await get ( ) . loadFromLink ( compressedData ) ;
92- } else {
93- await get ( ) . rebuild ( ) ;
94- }
92+ }
9593 } ,
9694 loadSample : async ( name : string ) => {
9795 const sample = SAMPLES . find ( ( s ) => s . NAME === name ) ;
@@ -107,76 +105,92 @@ const useAppStore = create<AppState>()(
107105 data : JSON . stringify ( sample . DATA , null , 2 ) ,
108106 editorAgreementData : JSON . stringify ( sample . DATA , null , 2 ) ,
109107 } ) ) ;
110- await get ( ) . rebuild ( ) ;
108+ get ( ) . rebuild ( ) ;
109+
111110 }
112111 } ,
113112 rebuild : async ( ) => {
114113 const { templateMarkdown, modelCto, data } = get ( ) ;
115114 try {
116115 const result = await rebuildDeBounce ( templateMarkdown , modelCto , data ) ;
117- set ( ( ) => ( { agreementHtml : result , error : undefined } ) ) ; // Clear error on success
116+ set ( ( ) => ( { agreementHtml : result , error : undefined } ) ) ;
118117 } catch ( error : any ) {
119- set ( ( ) => ( { error : formatError ( error ) } ) ) ;
118+ set ( ( ) => ( { error : error instanceof Error ? error . message : 'Unknown error' } ) ) ;
120119 }
121120 } ,
122121 setTemplateMarkdown : async ( template : string ) => {
123- set ( ( ) => ( { templateMarkdown : template } ) ) ;
122+ set ( ( ) => ( {
123+ templateMarkdown : template ,
124+ editorValue : template
125+ } ) ) ;
124126 const { modelCto, data } = get ( ) ;
125127 try {
126128 const result = await rebuildDeBounce ( template , modelCto , data ) ;
127- set ( ( ) => ( { agreementHtml : result , error : undefined } ) ) ; // Clear error on success
129+ set ( ( ) => ( { agreementHtml : result , error : undefined } ) ) ;
128130 } catch ( error : any ) {
129- set ( ( ) => ( { error : formatError ( error ) } ) ) ;
131+ set ( ( ) => ( { error : error instanceof Error ? error . message : 'Unknown error' } ) ) ;
130132 }
131133 } ,
132134 setEditorValue : ( value : string ) => {
133135 set ( ( ) => ( { editorValue : value } ) ) ;
134136 } ,
135137 setModelCto : async ( model : string ) => {
136- set ( ( ) => ( { modelCto : model } ) ) ;
138+ set ( ( ) => ( {
139+ modelCto : model ,
140+ editorModelCto : model
141+ } ) ) ;
137142 const { templateMarkdown, data } = get ( ) ;
138143 try {
139144 const result = await rebuildDeBounce ( templateMarkdown , model , data ) ;
140- set ( ( ) => ( { agreementHtml : result , error : undefined } ) ) ; // Clear error on success
145+ set ( ( ) => ( { agreementHtml : result , error : undefined } ) ) ;
141146 } catch ( error : any ) {
142- set ( ( ) => ( { error : formatError ( error ) } ) ) ;
147+ set ( ( ) => ( { error : error instanceof Error ? error . message : 'Unknown error' } ) ) ;
143148 }
144149 } ,
145150 setEditorModelCto : ( value : string ) => {
146151 set ( ( ) => ( { editorModelCto : value } ) ) ;
147152 } ,
148153 setData : async ( data : string ) => {
149- set ( ( ) => ( { data } ) ) ;
154+ set ( ( ) => ( {
155+ data,
156+ editorAgreementData : data
157+ } ) ) ;
150158 try {
151159 const result = await rebuildDeBounce (
152160 get ( ) . templateMarkdown ,
153161 get ( ) . modelCto ,
154162 data
155163 ) ;
156- set ( ( ) => ( { agreementHtml : result , error : undefined } ) ) ; // Clear error on success
164+ set ( ( ) => ( { agreementHtml : result , error : undefined } ) ) ;
157165 } catch ( error : any ) {
158- set ( ( ) => ( { error : formatError ( error ) } ) ) ;
166+ set ( ( ) => ( { error : error instanceof Error ? error . message : 'Unknown error' } ) ) ;
159167 }
160168 } ,
161169 setEditorAgreementData : ( value : string ) => {
162170 set ( ( ) => ( { editorAgreementData : value } ) ) ;
163171 } ,
164172 generateShareableLink : ( ) => {
165- const state = get ( ) ;
166- const compressedData = compress ( {
167- templateMarkdown : state . templateMarkdown ,
168- modelCto : state . modelCto ,
169- data : state . data ,
170- agreementHtml : state . agreementHtml ,
171- } ) ;
172- return `${ window . location . origin } ?data=${ compressedData } ` ;
173+ try {
174+ const state = get ( ) ;
175+ const compressedData = compress ( {
176+ templateMarkdown : state . templateMarkdown ,
177+ modelCto : state . modelCto ,
178+ data : state . data ,
179+ agreementHtml : state . agreementHtml ,
180+ } ) ;
181+ return `${ window . location . origin } ?data=${ compressedData } ` ;
182+ } catch ( error ) {
183+ set ( ( ) => ( { error : 'Failed to generate share link: ' + ( error instanceof Error ? error . message : 'Unknown error' ) } ) ) ;
184+ return window . location . href ;
185+ }
173186 } ,
174187 loadFromLink : async ( compressedData : string ) => {
175188 try {
176- const { templateMarkdown , modelCto , data , agreementHtml } = decompress ( compressedData ) ;
177- if ( ! templateMarkdown || ! modelCto || ! data ) {
178- throw new Error ( "Invalid share link data " ) ;
189+ const decompressed = decompress ( compressedData ) ;
190+ if ( ! decompressed ?. templateMarkdown || ! decompressed ?. modelCto || ! decompressed ?. data ) {
191+ throw new Error ( "Invalid share link - missing required fields " ) ;
179192 }
193+ const { templateMarkdown, modelCto, data, agreementHtml } = decompressed ;
180194 set ( ( ) => ( {
181195 templateMarkdown,
182196 editorValue : templateMarkdown ,
@@ -185,9 +199,9 @@ const useAppStore = create<AppState>()(
185199 data,
186200 editorAgreementData : data ,
187201 agreementHtml,
188- error : undefined ,
202+ error : undefined
189203 } ) ) ;
190- await get ( ) . rebuild ( ) ;
204+
191205 } catch ( error ) {
192206 set ( ( ) => ( {
193207 error : "Failed to load shared content: " + ( error instanceof Error ? error . message : "Unknown error" ) ,
@@ -209,15 +223,3 @@ const useAppStore = create<AppState>()(
209223
210224
211225export default useAppStore ;
212-
213- function formatError ( error : any ) : string {
214- console . error ( error ) ;
215- if ( typeof error === "string" ) return error ;
216- if ( Array . isArray ( error ) ) return error . map ( ( e ) => formatError ( e ) ) . join ( "\n" ) ;
217- if ( error . code ) {
218- const sub = error . errors ? formatError ( error . errors ) : "" ;
219- const msg = error . renderedMessage || "" ;
220- return `Error: ${ error . code } ${ sub } ${ msg } ` ;
221- }
222- return error . toString ( ) ;
223- }
0 commit comments