mirror of
https://github.com/logseq/logseq.git
synced 2026-04-25 06:35:02 +00:00
Fix(mobile): share contents between apps (#12086)
* fix(mobile): share asset file for the db graph * enhance(android): update manifest and intent handling for asset embedding
This commit is contained in:
@@ -11,21 +11,21 @@
|
|||||||
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:networkSecurityConfig="@xml/network_security_config"
|
|
||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
|
android:networkSecurityConfig="@xml/network_security_config"
|
||||||
|
android:requestLegacyExternalStorage="true"
|
||||||
android:roundIcon="@mipmap/ic_launcher_round"
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:requestLegacyExternalStorage="true"
|
|
||||||
android:theme="@style/AppTheme">
|
android:theme="@style/AppTheme">
|
||||||
<activity
|
<activity
|
||||||
android:exported="true"
|
|
||||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode|navigation"
|
|
||||||
android:name="com.logseq.app.MainActivity"
|
android:name="com.logseq.app.MainActivity"
|
||||||
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode|navigation"
|
||||||
|
android:exported="true"
|
||||||
android:label="@string/title_activity_main"
|
android:label="@string/title_activity_main"
|
||||||
android:theme="@style/AppTheme.NoActionBarLaunch"
|
android:launchMode="singleTask"
|
||||||
android:launchMode="singleTask">
|
android:theme="@style/AppTheme.NoActionBarLaunch">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
@@ -34,6 +34,7 @@
|
|||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.SEND" />
|
<action android:name="android.intent.action.SEND" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
|
||||||
<data android:mimeType="text/plain" />
|
<data android:mimeType="text/plain" />
|
||||||
<data android:mimeType="image/*" />
|
<data android:mimeType="image/*" />
|
||||||
<data android:mimeType="application/*" />
|
<data android:mimeType="application/*" />
|
||||||
@@ -42,8 +43,10 @@
|
|||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.VIEW" />
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.BROWSABLE" />
|
<category android:name="android.intent.category.BROWSABLE" />
|
||||||
|
|
||||||
<data android:scheme="logseq" />
|
<data android:scheme="logseq" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
@@ -53,7 +56,9 @@
|
|||||||
android:authorities="${applicationId}.fileprovider"
|
android:authorities="${applicationId}.fileprovider"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:grantUriPermissions="true">
|
android:grantUriPermissions="true">
|
||||||
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
|
<meta-data
|
||||||
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||||
|
android:resource="@xml/file_paths" />
|
||||||
</provider>
|
</provider>
|
||||||
</application>
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|||||||
@@ -83,18 +83,20 @@
|
|||||||
(let [args (transform-args args)]
|
(let [args (transform-args args)]
|
||||||
(state/pub-event! [:editor/quick-capture 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)
|
(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)
|
time (date/get-current-time)
|
||||||
date-ref-name (date/today)
|
date-ref-name (date/today)
|
||||||
path (assets-handler/get-asset-path basename)
|
file (.readFile Filesystem #js {:path url})
|
||||||
_file (p/catch
|
file-base64-str (some-> file (.-data))
|
||||||
(.copy Filesystem (clj->js {:from url :to path}))
|
file (some-> file-base64-str (util/base64string-to-unit8array)
|
||||||
(fn [error]
|
(vector) (clj->js) (js/File. basename #js {}))
|
||||||
(log/error :copy-file-error {:error error})))
|
asset-entity (editor-handler/db-based-save-assets!
|
||||||
url (util/format "../assets/%s" basename)
|
(state/get-current-repo) [file] {})
|
||||||
url (assets-handler/get-asset-file-link format url label true)
|
asset-entity (some-> asset-entity (first))
|
||||||
|
url (util/format "[[%s]]" (:block/uuid asset-entity))
|
||||||
template (get-in (state/get-config)
|
template (get-in (state/get-config)
|
||||||
[:quick-capture-templates :media]
|
[:quick-capture-templates :media]
|
||||||
"**{time}** [[quick capture]]: {url}")]
|
"**{time}** [[quick capture]]: {url}")]
|
||||||
@@ -182,17 +184,20 @@
|
|||||||
(common-util/safe-decode-uri-component v)
|
(common-util/safe-decode-uri-component v)
|
||||||
v))])))
|
v))])))
|
||||||
|
|
||||||
(defn- handle-asset-file [url format]
|
(defn- handle-asset-file [url _format]
|
||||||
(p/let [basename (node-path/basename url)
|
(-> (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)
|
_path (assets-handler/get-asset-path basename)
|
||||||
_file (p/catch
|
file (.readFile Filesystem #js {:path url})
|
||||||
(.copy Filesystem (clj->js {:from url :to path}))
|
file-base64-str (some-> file (.-data))
|
||||||
(fn [error]
|
file (some-> file-base64-str (util/base64string-to-unit8array)
|
||||||
(log/error :copy-file-error {:error error})))
|
(vector) (clj->js) (js/File. basename #js {}))
|
||||||
url (util/format "../assets/%s" basename)
|
asset-entity (editor-handler/db-based-save-assets!
|
||||||
url-link (assets-handler/get-asset-file-link format url label true)]
|
(state/get-current-repo) [file] {})
|
||||||
url-link))
|
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
|
(defn- handle-payload-resource
|
||||||
[{:keys [type name ext url] :as resource} format]
|
[{:keys [type name ext url] :as resource} format]
|
||||||
|
|||||||
Reference in New Issue
Block a user