From fb5dec9078c6e143dde2e99965fbcda9cedd9ed4 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 8 Jul 2020 21:44:02 +0800 Subject: [PATCH] Move rimraf to worker.js --- web/src/main/frontend/db.cljs | 12 +++++----- web/src/main/frontend/fs.cljs | 5 ++--- web/src/main/frontend/fs_ext.js | 35 ------------------------------ web/src/main/frontend/handler.cljs | 22 +++++++++---------- 4 files changed, 19 insertions(+), 55 deletions(-) delete mode 100644 web/src/main/frontend/fs_ext.js diff --git a/web/src/main/frontend/db.cljs b/web/src/main/frontend/db.cljs index f7df11689..937f2d88a 100644 --- a/web/src/main/frontend/db.cljs +++ b/web/src/main/frontend/db.cljs @@ -33,12 +33,12 @@ (defonce localforage-instance (.createInstance localforage store-name)) -(defn clear-store! - [] - (p/let [_ (.clear localforage) - dbs (js/window.indexedDB.databases)] - (doseq [db dbs] - (js/window.indexedDB.deleteDatabase (gobj/get db "name"))))) +;; (defn clear-store! +;; [] +;; (p/let [_ (.clear localforage) +;; dbs (js/window.indexedDB.databases)] +;; (doseq [db dbs] +;; (js/window.indexedDB.deleteDatabase (gobj/get db "name"))))) (defn get-repo-path [url] diff --git a/web/src/main/frontend/fs.cljs b/web/src/main/frontend/fs.cljs index 615ac0ec4..cd87b9fb3 100644 --- a/web/src/main/frontend/fs.cljs +++ b/web/src/main/frontend/fs.cljs @@ -1,7 +1,6 @@ (ns frontend.fs (:require [frontend.util :as util] - [promesa.core :as p] - ["/frontend/fs_ext" :as fs-ext])) + [promesa.core :as p])) (defn mkdir [dir] @@ -17,7 +16,7 @@ (defn rmdir [dir] - (fs-ext/rimraf dir js/window.pfs)) + (js/window.workerThread.rimraf dir)) (defn read-file [dir path] diff --git a/web/src/main/frontend/fs_ext.js b/web/src/main/frontend/fs_ext.js deleted file mode 100644 index 3bd0d8a6d..000000000 --- a/web/src/main/frontend/fs_ext.js +++ /dev/null @@ -1,35 +0,0 @@ -// copied from https://github.com/wmhilton/wills-wonderful-service-worker/blob/dd31f3d63331bf1e70c1c2b6440ce6ec9e826df8/src/rimraf.js -// Because isaacs "rimraf" is too Node-specific - -// It's elegant in it's naivety -export var rimraf = async function (path, fs) { - // try { - // // First assume path is itself a file - // await fs.unlink(path) - // // if that worked we're done - // return - // } catch (err) { - // // Otherwise, path must be a directory - // if (err.code !== 'EISDIR') throw err - // } - // Knowing path is a directory, - // first, assume everything inside path is a file. - let files = await fs.readdir(path) - for (let file of files) { - let child = path + '/' + file - try { - await fs.unlink(child) - } catch (err) { - console.log(err.code); - if (err.code !== 'EISDIR') throw err - } - } - // Assume what's left are directories and recurse. - let dirs = await fs.readdir(path) - for (let dir of dirs) { - let child = path + '/' + dir - await rimraf(child, fs) - } - // Finally, delete the empty directory - await fs.rmdir(path) -} diff --git a/web/src/main/frontend/handler.cljs b/web/src/main/frontend/handler.cljs index 94d89519a..775396c52 100644 --- a/web/src/main/frontend/handler.cljs +++ b/web/src/main/frontend/handler.cljs @@ -721,16 +721,16 @@ (reset! uploading? false)))))) -;; (defn clear-store! -;; [] -;; (p/let [ks (.keys db/localforage-instance) -;; _ (doseq [k ks] -;; (when-not (string/ends-with? k (str "/" config/local-repo)) -;; (.removeItem db/localforage-instance k))) -;; dirs (fs/readdir "/")] -;; (doseq [dir dirs] -;; (when (not= dir config/local-repo) -;; (fs/rmdir (str "/" dir)))))) +(defn clear-store! + [] + (p/let [ks (.keys db/localforage-instance) + _ (doseq [k ks] + (when-not (string/ends-with? k (str "/" config/local-repo)) + (.removeItem db/localforage-instance k))) + dirs (fs/readdir "/")] + (doseq [dir dirs] + (when (not= dir config/local-repo) + (fs/rmdir (str "/" dir)))))) ;; clear localforage (defn sign-out! @@ -740,7 +740,7 @@ ;; remember not to remove the encrypted token (storage/set :git/current-repo config/local-repo) (storage/remove :git/clone-repo) - (db/clear-store!)) + (clear-store!)) (p/catch (fn [e] (println "sign out error: ") (js/console.dir e)))