fix: only show open a directory when nfs api is supported

Also, ask for permission when clicking the refresh button
feat/pwa
Tienson Qin 2020-12-02 23:29:16 +08:00
parent 552ec6d1fa
commit bcb40c6629
4 changed files with 33 additions and 13 deletions

View File

@ -141,15 +141,16 @@
[:div.repos.hidden.md:block
(repo/repos-dropdown true)]
[:a.text-sm.font-medium.opacity-70.hover:opacity-100.ml-3
{:on-click (fn []
(nfs/ls-dir-files))
:title (t :open-a-directory)}
[:div.flex.flex-row.text-center
[:span.inline-block svg/folder-add]
(when-not config/mobile?
[:span.ml-1 {:style {:margin-top 2}}
(t :open)])]]
(when (nfs/supported?)
[:a.text-sm.font-medium.opacity-70.hover:opacity-100.ml-3
{:on-click (fn []
(nfs/ls-dir-files))
:title (t :open-a-directory)}
[:div.flex.flex-row.text-center
[:span.inline-block svg/folder-add]
(when-not config/mobile?
[:span.ml-1 {:style {:margin-top 2}}
(t :open)])]])
(if config/publishing?
[:a.text-sm.font-medium.ml-3 {:href (rfe/href :graph)}

View File

@ -68,7 +68,9 @@
[]
(when-let [repo (state/get-current-repo)]
(when-not (= repo config/local-repo)
(if (config/local-db? repo)
(if (and
(nfs-handler/supported?)
(config/local-db? repo))
[:a.ml-2.mr-1.opacity-70.hover:opacity-100
{:on-click #(nfs-handler/refresh! repo)
:title (str "Sync files with the local directory: " (config/get-local-dir repo))}

View File

@ -94,8 +94,9 @@
(defn check-directory-permission!
[repo]
(p/let [handle (idb/get-item (str "handle-" repo))]
(utils/verifyPermission handle true)))
(p/let [handle (idb/get-item (str "handle/" repo))]
(when handle
(utils/verifyPermission handle true))))
(defn ask-permission
[repo]
@ -199,4 +200,11 @@
(defn- refresh!
[repo]
(reload-dir! repo))
(when repo
(p/let [verified? (check-directory-permission! repo)]
(when verified?
(reload-dir! repo)))))
(defn supported?
[]
(utils/nfsSupported))

View File

@ -139,3 +139,12 @@ export var verifyPermission = async function (handle, readWrite) {
// The user didn't grant permission, so return false.
return false;
}
export var nfsSupported = function () {
if ('chooseFileSystemEntries' in self) {
return 'chooseFileSystemEntries';
} else if ('showOpenFilePicker' in self) {
return 'showOpenFilePicker';
}
return false;
}