diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index ff51d3d945..a255d96cd1 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -11,21 +11,21 @@ + android:launchMode="singleTask" + android:theme="@style/AppTheme.NoActionBarLaunch"> @@ -34,6 +34,7 @@ + @@ -42,8 +43,10 @@ + + @@ -53,7 +56,9 @@ android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true"> - + diff --git a/src/main/frontend/mobile/intent.cljs b/src/main/frontend/mobile/intent.cljs index e2d3875013..7792220a3f 100644 --- a/src/main/frontend/mobile/intent.cljs +++ b/src/main/frontend/mobile/intent.cljs @@ -83,18 +83,20 @@ (let [args (transform-args args)] (state/pub-event! [:editor/quick-capture args]))) -(defn- embed-asset-file [url format] +(defn- embed-asset-file [url _format] (p/let [basename (node-path/basename url) - label (-> basename util/node-path.name) + _label (-> basename util/node-path.name) + _path (assets-handler/get-asset-path basename) time (date/get-current-time) date-ref-name (date/today) - path (assets-handler/get-asset-path basename) - _file (p/catch - (.copy Filesystem (clj->js {:from url :to path})) - (fn [error] - (log/error :copy-file-error {:error error}))) - url (util/format "../assets/%s" basename) - url (assets-handler/get-asset-file-link format url label true) + file (.readFile Filesystem #js {:path url}) + file-base64-str (some-> file (.-data)) + file (some-> file-base64-str (util/base64string-to-unit8array) + (vector) (clj->js) (js/File. basename #js {})) + asset-entity (editor-handler/db-based-save-assets! + (state/get-current-repo) [file] {}) + asset-entity (some-> asset-entity (first)) + url (util/format "[[%s]]" (:block/uuid asset-entity)) template (get-in (state/get-config) [:quick-capture-templates :media] "**{time}** [[quick capture]]: {url}")] @@ -182,17 +184,20 @@ (common-util/safe-decode-uri-component v) v))]))) -(defn- handle-asset-file [url format] - (p/let [basename (node-path/basename url) - label (-> basename util/node-path.name) - path (assets-handler/get-asset-path basename) - _file (p/catch - (.copy Filesystem (clj->js {:from url :to path})) - (fn [error] - (log/error :copy-file-error {:error error}))) - url (util/format "../assets/%s" basename) - url-link (assets-handler/get-asset-file-link format url label true)] - url-link)) +(defn- handle-asset-file [url _format] + (-> (p/let [basename (node-path/basename url) + _label (-> basename util/node-path.name) + _path (assets-handler/get-asset-path basename) + file (.readFile Filesystem #js {:path url}) + file-base64-str (some-> file (.-data)) + file (some-> file-base64-str (util/base64string-to-unit8array) + (vector) (clj->js) (js/File. basename #js {})) + asset-entity (editor-handler/db-based-save-assets! + (state/get-current-repo) [file] {}) + asset-entity (some-> asset-entity (first)) + url-link (util/format "[[%s]]" (:block/uuid asset-entity))] + url-link) + (p/catch #(js/console.error "Error(handle asset file):" %)))) (defn- handle-payload-resource [{:keys [type name ext url] :as resource} format]