Applications/Internet/Cyberia: Persist cookies (and soon, bookmarks) to disk

This commit is contained in:
Alec Murphy
2025-10-10 15:38:40 -04:00
parent ed4647effe
commit 76b27de3d4

View File

@@ -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)