diff --git a/src/main/frontend/handler/repo.cljs b/src/main/frontend/handler/repo.cljs index 39f03e026..abe4b3da1 100644 --- a/src/main/frontend/handler/repo.cljs +++ b/src/main/frontend/handler/repo.cljs @@ -183,36 +183,43 @@ (util/remove-nils))] (db/transact! repo-url all-data))) +(defn- parse-files-and-create-default-files-inner! + [repo-url files delete-files delete-blocks file-paths first-clone? db-encrypted? re-render? re-render-opts] + (let [parsed-files (filter + (fn [file] + (let [format (format/get-format (:file/path file))] + (contains? config/mldoc-support-formats format))) + files) + blocks-pages (if (seq parsed-files) + (extract-handler/extract-all-blocks-pages repo-url parsed-files) + [])] + (reset-contents-and-blocks! repo-url files blocks-pages delete-files delete-blocks) + (let [config-file (config/get-config-path)] + (if (contains? (set file-paths) config-file) + (when-let [content (some #(when (= (:file/path %) config-file) + (:file/content %)) files)] + (file-handler/restore-config! repo-url content true)))) + (when first-clone? + (if (not db-encrypted?) + (state/set-modal! + (encryption/encryption-setup-dialog + repo-url + #(create-default-files! repo-url %))) + (create-default-files! repo-url db-encrypted?))) + (when re-render? + (ui-handler/re-render-root! re-render-opts)) + (state/set-importing-to-db! false))) + (defn- parse-files-and-create-default-files! - [repo-url files delete-files delete-blocks file-paths first-clone? db-encrypted? re-render? re-render-opts encrypted?] - (p/do! - (p/let [files (p/all (if encrypted? (map (fn [file] - (p/let [content (encrypt/decrypt (:file/content file))] - (assoc file :file/content content))) - files) files)) - parsed-files (filter - (fn [file] - (let [format (format/get-format (:file/path file))] - (contains? config/mldoc-support-formats format))) - files) - blocks-pages (if (seq parsed-files) - (extract-handler/extract-all-blocks-pages repo-url parsed-files) - [])] - (reset-contents-and-blocks! repo-url files blocks-pages delete-files delete-blocks)) - (let [config-file (config/get-config-path)] - (if (contains? (set file-paths) config-file) - (when-let [content (some #(when (= (:file/path %) config-file) - (:file/content %)) files)] - (file-handler/restore-config! repo-url content true)))) - (if (and first-clone? (not db-encrypted?)) - (state/set-modal! - (encryption/encryption-setup-dialog - repo-url - #(create-default-files! repo-url %))) - (create-default-files! repo-url db-encrypted?)) - (when re-render? - (ui-handler/re-render-root! re-render-opts)) - (state/set-importing-to-db! false))) + [repo-url files delete-files delete-blocks file-paths first-clone? db-encrypted? re-render? re-render-opts] + (if db-encrypted? + (p/let [files (p/all + (map (fn [file] + (p/let [content (encrypt/decrypt (:file/content file))] + (assoc file :file/content content))) + files))] + (parse-files-and-create-default-files-inner! repo-url files delete-files delete-blocks file-paths first-clone? db-encrypted? re-render? re-render-opts)) + (parse-files-and-create-default-files-inner! repo-url files delete-files delete-blocks file-paths first-clone? db-encrypted? re-render? re-render-opts))) (defn parse-files-and-load-to-db! [repo-url files {:keys [first-clone? delete-files delete-blocks re-render? re-render-opts] :as opts @@ -232,8 +239,8 @@ (encryption/encryption-input-secret-dialog repo-url db-encrypted-secret - #(parse-files-and-create-default-files! repo-url files delete-files delete-blocks file-paths first-clone? db-encrypted? re-render? re-render-opts true))) - (parse-files-and-create-default-files! repo-url files delete-files delete-blocks file-paths first-clone? db-encrypted? re-render? re-render-opts false))))) + #(parse-files-and-create-default-files! repo-url files delete-files delete-blocks file-paths first-clone? db-encrypted? re-render? re-render-opts))) + (parse-files-and-create-default-files! repo-url files delete-files delete-blocks file-paths first-clone? db-encrypted? re-render? re-render-opts))))) (defn load-repo-to-db! [repo-url {:keys [first-clone? diffs nfs-files]