11import { createState , type Stateful } from "dreamland/core" ;
2- import { browser , scramjet } from "./main" ;
32import { StatefulClass } from "./StatefulClass" ;
43import { Tab , type SerializedTab } from "./Tab" ;
54import { createDelegate } from "dreamland/core" ;
@@ -8,12 +7,11 @@ import { HistoryState } from "./History";
87import { focusOmnibox } from "./components/UrlInput" ;
98
109import * as tldts from "tldts" ;
11- console . log ( tldts ) ;
1210export const pushTab = createDelegate < Tab > ( ) ;
1311export const popTab = createDelegate < Tab > ( ) ;
1412export const forceScreenshot = createDelegate < Tab > ( ) ;
1513
16- export const saveBrowserState = createDelegate < void > ( ) ;
14+ export let browser : Browser ;
1715
1816export const config = createState ( {
1917 theme : {
@@ -154,7 +152,45 @@ export class Browser extends StatefulClass {
154152 }
155153}
156154
157- saveBrowserState . listen ( ( ) => {
155+ let loaded = false ;
156+ export function saveBrowserState ( ) {
157+ if ( ! loaded ) return ;
158+
158159 let ser = browser . serialize ( ) ;
159- localStorage [ "browserstate" ] = JSON . stringify ( ser ) ;
160- } ) ;
160+
161+ if ( import . meta. env . VITE_LOCAL ) {
162+ localStorage [ "browserstate" ] = JSON . stringify ( ser ) ;
163+ } else {
164+ puter . kv . set ( "browserstate" , JSON . stringify ( ser ) ) ;
165+ }
166+ }
167+
168+ export async function initBrowser ( ) {
169+ browser = new Browser ( ) ;
170+
171+ let de ;
172+ if ( import . meta. env . VITE_LOCAL ) {
173+ de = localStorage [ "browserstate" ] ;
174+ } else {
175+ de = await puter . kv . get ( "browserstate" ) ;
176+ console . log ( de ) ;
177+ }
178+ if ( de ) {
179+ try {
180+ browser . deserialize ( JSON . parse ( de ) ) ;
181+ } catch ( e ) {
182+ console . error ( e ) ;
183+ console . error ( "Error while loading browser state. Resetting..." ) ;
184+
185+ browser = new Browser ( ) ;
186+ let tab = browser . newTab ( ) ;
187+ browser . activetab = tab ;
188+ }
189+ } else {
190+ let tab = browser . newTab ( ) ;
191+ browser . activetab = tab ;
192+ }
193+
194+ ( self as any ) . browser = browser ;
195+ loaded = true ;
196+ }
0 commit comments