Bladeren bron

Use user:/.appdata for caches and ensure dirs

Switch Movie and Musicify server-side cache paths from user:/Document/Appdata/... to user:/.appdata/... so caches are stored in the unified .appdata directory. Add directory-creation checks (mkdirIfMissing / fileExists) before writing caches and update related comments/usages in frontend and backend. Also update NotepadA to create its .appdata/NotepadA folder and return the new tmp file path. These changes ensure cache writes won't fail due to missing parent directories and consolidate storage location.
Toby Chui 2 weken geleden
bovenliggende
commit
0a3975b854

+ 8 - 1
src/web/Movie/backend/disableMovieInfo.js

@@ -10,7 +10,7 @@
 includes("common.js");
 requirelib("filelib");
 
-var CACHE_DIR = "user:/Document/Appdata/Movie/";
+var CACHE_DIR = "user:/.appdata/Movie/";
 
 // Must stay in sync with the sanitize() function in getMovieInfo.js
 function sanitize(str) {
@@ -25,12 +25,19 @@ function sanitize(str) {
     return out.substring(0, 80);
 }
 
+function mkdirIfMissing(path) {
+    if (!filelib.fileExists(path)) { filelib.mkdir(path); }
+}
+
 function main() {
     if (!movie || movie === "undefined" || movie.length === 0) {
         sendJSONResp(JSON.stringify({ error: "Missing movie name" }));
         return;
     }
 
+    mkdirIfMissing("user:/.appdata/");
+    mkdirIfMissing(CACHE_DIR);
+
     var cacheFile = CACHE_DIR + sanitize(movie) + ".json";
     filelib.writeFile(cacheFile, JSON.stringify({ _disabled: true }));
     sendOK();

+ 4 - 4
src/web/Movie/backend/getLibrary.js

@@ -332,7 +332,7 @@ function scanRoot(rootPath) {
 
 // ── Entry point ───────────────────────────────────────────────────────────────
 
-var CACHE_FILE = "user:/Document/Appdata/Movie/library_cache.json";
+var CACHE_FILE = "user:/.appdata/Movie/library_cache.json";
 var STALE_MS   = 8 * 60 * 60 * 1000;  // 8 hours
 
 function main() {
@@ -369,10 +369,10 @@ function main() {
     // client closes the tab before the response arrives.
     try {
         if (!filelib.fileExists("user:/Document/"))           { filelib.mkdir("user:/Document/"); }
-        if (!filelib.fileExists("user:/Document/Appdata/"))   { filelib.mkdir("user:/Document/Appdata/"); }
-        if (!filelib.fileExists("user:/Document/Appdata/Movie/")) { filelib.mkdir("user:/Document/Appdata/Movie/"); }
+        if (!filelib.fileExists("user:/.appdata/"))   { filelib.mkdir("user:/.appdata/"); }
+        if (!filelib.fileExists("user:/.appdata/Movie/")) { filelib.mkdir("user:/.appdata/Movie/"); }
         filelib.writeFile(
-            "user:/Document/Appdata/Movie/library_cache.json",
+            "user:/.appdata/Movie/library_cache.json",
             JSON.stringify({ ts: new Date().getTime(), data: allAlbums })
         );
     } catch (e) {}  // never let a cache-write failure break the response

+ 1 - 1
src/web/Movie/backend/getLibraryCache.js

@@ -13,7 +13,7 @@
 includes("common.js");
 requirelib("filelib");
 
-var CACHE_FILE = "user:/Document/Appdata/Movie/library_cache.json";
+var CACHE_FILE = "user:/.appdata/Movie/library_cache.json";
 
 function main() {
     if (!filelib.fileExists(CACHE_FILE)) {

+ 3 - 4
src/web/Movie/backend/getMovieInfo.js

@@ -5,7 +5,7 @@
     POST params:
         movie – movie title to search for
 
-    Cache: user:/Document/Appdata/Movie/{sanitized_title}.json
+    Cache: user:/.appdata/Movie/{sanitized_title}.json
     Returns JSON: first IMDB search result, or { error: "..." }
 
     Result fields (from iamidiotareyoutoo.com search API):
@@ -17,7 +17,7 @@ includes("common.js");
 requirelib("filelib");
 requirelib("http");
 
-var CACHE_DIR = "user:/Document/Appdata/Movie/";
+var CACHE_DIR = "user:/.appdata/Movie/";
 
 // Sanitize a string into a safe filename
 function sanitize(str) {
@@ -135,8 +135,7 @@ function main() {
     }
 
     // Ensure cache hierarchy exists
-    mkdirIfMissing("user:/Document/");
-    mkdirIfMissing("user:/Document/Appdata/");
+    mkdirIfMissing("user:/.appdata/");
     mkdirIfMissing(CACHE_DIR);
 
     var cacheFile = CACHE_DIR + sanitize(movie) + ".json";

+ 1 - 1
src/web/Movie/index.html

@@ -1171,7 +1171,7 @@ html, body {
 // (SCRIPT_GET_LIBRARY, SCRIPT_GET_EPISODES, SCRIPT_GET_THUMBNAIL, MEDIA_API)
 
 // ─── Library cache ────────────────────────────────────────────────────────────
-// Cache is stored server-side (user:/Document/Appdata/Movie/library_cache.json)
+// Cache is stored server-side (user:/.appdata/Movie/library_cache.json)
 // so it is shared across devices for the same user account.
 var libraryNeedsRedraw = false; // set when bg-refresh finishes outside the library view
 

+ 1 - 1
src/web/Musicify/backend/getArtistsCache.js

@@ -13,7 +13,7 @@
 includes("common.js");
 requirelib("filelib");
 
-var CACHE_FILE = "user:/Document/Appdata/Musicify/artists_cache.json";
+var CACHE_FILE = "user:/.appdata/Musicify/artists_cache.json";
 
 function main() {
     if (!filelib.fileExists(CACHE_FILE)) {

+ 3 - 3
src/web/Musicify/backend/listArtists.js

@@ -68,10 +68,10 @@ function main() {
     // client closes the tab before the HTTP response arrives.
     try {
         if (!filelib.fileExists("user:/Document/"))                    { filelib.mkdir("user:/Document/"); }
-        if (!filelib.fileExists("user:/Document/Appdata/"))            { filelib.mkdir("user:/Document/Appdata/"); }
-        if (!filelib.fileExists("user:/Document/Appdata/Musicify/"))   { filelib.mkdir("user:/Document/Appdata/Musicify/"); }
+        if (!filelib.fileExists("user:/.appdata/"))            { filelib.mkdir("user:/.appdata/"); }
+        if (!filelib.fileExists("user:/.appdata/Musicify/"))   { filelib.mkdir("user:/.appdata/Musicify/"); }
         filelib.writeFile(
-            "user:/Document/Appdata/Musicify/artists_cache.json",
+            "user:/.appdata/Musicify/artists_cache.json",
             JSON.stringify({ ts: new Date().getTime(), items: artists })
         );
     } catch (e) {}  // never let a cache-write failure break the response

+ 1 - 1
src/web/Musicify/musicify.js

@@ -431,7 +431,7 @@ function musicifyApp() {
             this._artistsFetchInFlight = false;
         },
 
-        // Reads the server-side artists cache (user:/Document/Appdata/Musicify/).
+        // Reads the server-side artists cache (user:/.appdata/Musicify/).
         // Async — calls callback(cache) where cache is { ts, items } or null.
         _readArtistsCache(callback) {
             fetch(ao_root + 'system/ajgi/interface?script=Musicify/backend/getArtistsCache.js', {

+ 4 - 3
src/web/NotepadA/backend/newfile.js

@@ -1,4 +1,5 @@
 requirelib("filelib");
-filelib.mkdir("user:/Document/Appdata/NotepadA");
-filelib.writeFile("user:/Document/Appdata/NotepadA/" + tmpid + ".tmp", "");
-sendJSONResp(JSON.stringify("user:/Document/Appdata/NotepadA/" + tmpid+".tmp"));
+if (!filelib.fileExists("user:/.appdata/"))        { filelib.mkdir("user:/.appdata/"); }
+if (!filelib.fileExists("user:/.appdata/NotepadA")) { filelib.mkdir("user:/.appdata/NotepadA"); }
+filelib.writeFile("user:/.appdata/NotepadA/" + tmpid + ".tmp", "");
+sendJSONResp(JSON.stringify("user:/.appdata/NotepadA/" + tmpid+".tmp"));