From 76b27de3d4d87ce95cf9c06402b8deeff2fb6370 Mon Sep 17 00:00:00 2001 From: Alec Murphy Date: Fri, 10 Oct 2025 15:38:40 -0400 Subject: [PATCH] Applications/Internet/Cyberia: Persist cookies (and soon, bookmarks) to disk --- Applications/Internet/Cyberia.app/Cyberia.HC | 22 ++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/Applications/Internet/Cyberia.app/Cyberia.HC b/Applications/Internet/Cyberia.app/Cyberia.HC index 888196b..44b82c3 100644 --- a/Applications/Internet/Cyberia.app/Cyberia.HC +++ b/Applications/Internet/Cyberia.app/Cyberia.HC @@ -1,8 +1,21 @@ CTask* browser_task = Fs; +#define CYBERIA_BOOKMARKS_FILE "A:/Tmp/Bookmarks.json" +#define CYBERIA_COOKIES_FILE "A:/Tmp/Cookies.json" + JsonObject* cyberia = Json.CreateObject(Fs); -cyberia->set("bookmarks", Json.CreateObject(Fs), JSON_OBJECT); -cyberia->set("cookies", Json.CreateObject(Fs), JSON_OBJECT); + +if (FileFind(CYBERIA_BOOKMARKS_FILE)) { + cyberia->set("bookmarks", Json.ParseFile(CYBERIA_BOOKMARKS_FILE, Fs), JSON_OBJECT); +} else { + cyberia->set("bookmarks", Json.CreateObject(Fs), JSON_OBJECT); +} + +if (FileFind(CYBERIA_COOKIES_FILE)) { + cyberia->set("cookies", Json.ParseFile(CYBERIA_COOKIES_FILE, Fs), JSON_OBJECT); +} else { + cyberia->set("cookies", Json.CreateObject(Fs), JSON_OBJECT); +} Context2D* APP_ICON = @image_file_to_context2d("M:/Applications/Internet/Cyberia.app/Resources/icon.png"); @@ -574,6 +587,7 @@ U0 @cyberia_set_cookies(@browser* browser, @http_response* resp) U8* value = NULL; JsonArray* a = NULL; JsonKey* keys = resp->headers->keys; + Bool did_set_cookie = FALSE; while (keys) { if (!StrICmp(keys->name, "set-cookie")) { switch (keys->type) { @@ -587,9 +601,13 @@ U0 @cyberia_set_cookies(@browser* browser, @http_response* resp) @cyberia_set_cookie_raw(browser, keys->value); break; } + did_set_cookie = TRUE; } keys = keys->next; } + if (did_set_cookie) { + Json.DumpToFile(CYBERIA_COOKIES_FILE, cyberia->o("cookies"), browser_task); + } } U0 @cyberia_navigate(Bool refresh = FALSE)