Move rimraf to worker.js

pull/645/head
Tienson Qin 2020-07-08 21:44:02 +08:00
parent 6ccbb046f8
commit fb5dec9078
4 changed files with 19 additions and 55 deletions

View File

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

View File

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

View File

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

View File

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