mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-05-01 12:08:06 +02:00
Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5cbd593e76 | |||
| f7600b5fff | |||
| fb85e5dd76 | |||
| 6f3f66794a | |||
| 79d6e19c4b | |||
| aebd4f6185 | |||
| 341a5320c3 | |||
| cc03ccf5e0 | |||
| 009299ebec | |||
| 204e5aacad | |||
| 8a45c35160 | |||
| ebf821afd1 | |||
| 984110a978 | |||
| 2b898f0786 | |||
| b2269333e3 | |||
| 41afcae399 | |||
| 9291e4d2ca | |||
| 3715f3c9a6 | |||
| 253ae66210 | |||
| 949e2d6c45 | |||
| 64a6240f79 |
@@ -268,7 +268,8 @@
|
||||
},
|
||||
"single-instance": {
|
||||
"path": "./plugins/single-instance",
|
||||
"manager": "rust"
|
||||
"manager": "rust",
|
||||
"dependencies": ["deep-link"]
|
||||
},
|
||||
"sql": {
|
||||
"path": "./plugins/sql",
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"deep-link": patch
|
||||
---
|
||||
|
||||
Emit the `deep-link://new-url` event on Linux and Windows when the app is executed with a deep link CLI argument,
|
||||
matching the iOS and macOS behavior.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"deep-link": patch
|
||||
"deep-link-js": patch
|
||||
---
|
||||
|
||||
Implement `get_current` on Linux and Windows.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"deep-link": patch
|
||||
---
|
||||
|
||||
Added `DeepLink::on_open_url` function to match the JavaScript API implementation,
|
||||
which wraps the `deep-link://new-url` event and also send the current deep link if there's any.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"deep-link": patch
|
||||
---
|
||||
|
||||
Added `register_all` to register all desktop schemes - useful for Linux to not require a formal AppImage installation.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"dialog": patch
|
||||
---
|
||||
|
||||
Update Tauri scopes (asset protocol) when using the `open()` command to select directories.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"barcode-scanner-js": patch
|
||||
---
|
||||
|
||||
Fixed an issue which caused checkPermission and requestPermission to be mixed up.
|
||||
@@ -0,0 +1,6 @@
|
||||
---
|
||||
"clipboard-manager": patch
|
||||
"clipboard-manager-js": patch
|
||||
---
|
||||
|
||||
Fix warnings and clear implementation on Android below SDK 28.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"fs": patch
|
||||
---
|
||||
|
||||
Fix `scope-app`, `scope-app-recursive` and `scope-index` not properly enabling the application paths.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"window-state": patch
|
||||
---
|
||||
|
||||
Fix can't restore a minimized window's size and position properly
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"fs": patch
|
||||
---
|
||||
|
||||
Support any UTF-8 character in the writeFile API.
|
||||
+15
-1
@@ -5,20 +5,30 @@
|
||||
".changes/barcode-dependencies.md",
|
||||
".changes/barcode-scanner-validate-plist.md",
|
||||
".changes/consolidate-permission-state.md",
|
||||
".changes/deep-link-event.md",
|
||||
".changes/deep-link-get-current-desktop.md",
|
||||
".changes/deep-link-on-new-url.md",
|
||||
".changes/deep-link-register-all.md",
|
||||
".changes/dialog-asset-scope.md",
|
||||
".changes/dialog-file-response-non-exhaustive.md",
|
||||
".changes/dialog-return-path.md",
|
||||
".changes/fix-barcodae-scanner-imports.md",
|
||||
".changes/fix-clipboard-warnings-sdk.md",
|
||||
".changes/fix-deep-link-config.md",
|
||||
".changes/fix-fs-app-scopes.md",
|
||||
".changes/fix-fs-write-file-android.md",
|
||||
".changes/fix-http-plugin-abort.md",
|
||||
".changes/fix-ios-file-dialog-default-mode.md",
|
||||
".changes/fix-linux-updater-permission-error.md",
|
||||
".changes/fix-restore-minimized-window-position.md",
|
||||
".changes/fix-restore-minimized-window-state.md",
|
||||
".changes/fs-dialog-file-path-methods.md",
|
||||
".changes/fs-dialog-file-path-traits.md",
|
||||
".changes/fs-dialog-non-exhaustive-error.md",
|
||||
".changes/fs-dialog-safe-file-path.md",
|
||||
".changes/fs-scope-recursive-allow-read-dir.md",
|
||||
".changes/fs-windows-path.md",
|
||||
".changes/fs-write-file-utf8-chars.md",
|
||||
".changes/geolocation-release.md",
|
||||
".changes/global-shortcut-0.6.md",
|
||||
".changes/haptics-release.md",
|
||||
@@ -31,14 +41,18 @@
|
||||
".changes/resolve-content-uris.md",
|
||||
".changes/shell-open-regex-match-string.md",
|
||||
".changes/shell-regex-match-string.md",
|
||||
".changes/single-instance-deep-link.md",
|
||||
".changes/single-instance-optional-deep-link.md",
|
||||
".changes/single-instance-windows-sys.0.59.md",
|
||||
".changes/sql-uuid-type.md",
|
||||
".changes/store-remove-mobile-plugin.md",
|
||||
".changes/swift-build-older-versions.md",
|
||||
".changes/tauri-rc-8.md",
|
||||
".changes/update-fs-api-docs.md",
|
||||
".changes/update-tauri-rc-12.md",
|
||||
".changes/update-tauri-rc-3.md",
|
||||
".changes/updater-js-headers-download-crate.md",
|
||||
".changes/updater-js-headers-download.md"
|
||||
".changes/updater-js-headers-download.md",
|
||||
".changes/window-state-physical-size.md"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"single-instance": patch
|
||||
---
|
||||
|
||||
Integrate with the deep link plugin out of the box.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"single-instance": "patch"
|
||||
---
|
||||
|
||||
Put deep link integration behined a feature
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"notification": patch
|
||||
---
|
||||
|
||||
Update to tauri 2.0.0-rc.12.
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"window-state": patch:breaking
|
||||
---
|
||||
|
||||
Window's size is now stored in physical size instead of logical size
|
||||
+5
-1
@@ -19,4 +19,8 @@ plugins/*/examples/*/src-tauri/gen/
|
||||
api-iife.js
|
||||
init-iife.js
|
||||
CHANGELOG.md
|
||||
*schema.json
|
||||
*schema.json
|
||||
|
||||
# mobile build
|
||||
**/ios/.build
|
||||
**/.tauri
|
||||
|
||||
Generated
+48
-92
@@ -212,7 +212,7 @@ checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8"
|
||||
|
||||
[[package]]
|
||||
name = "api"
|
||||
version = "2.0.0-rc.5"
|
||||
version = "2.0.0-rc.7"
|
||||
dependencies = [
|
||||
"log",
|
||||
"serde",
|
||||
@@ -235,8 +235,8 @@ dependencies = [
|
||||
"tauri-plugin-shell",
|
||||
"tauri-plugin-store",
|
||||
"tauri-plugin-updater",
|
||||
"tauri-plugin-window-state",
|
||||
"tiny_http",
|
||||
"window-shadows",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1025,22 +1025,6 @@ dependencies = [
|
||||
"error-code",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cocoa"
|
||||
version = "0.25.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"block",
|
||||
"cocoa-foundation 0.1.2",
|
||||
"core-foundation 0.9.4",
|
||||
"core-graphics 0.23.2",
|
||||
"foreign-types 0.5.0",
|
||||
"libc",
|
||||
"objc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cocoa"
|
||||
version = "0.26.0"
|
||||
@@ -1049,7 +1033,7 @@ checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"block",
|
||||
"cocoa-foundation 0.2.0",
|
||||
"cocoa-foundation",
|
||||
"core-foundation 0.10.0",
|
||||
"core-graphics 0.24.0",
|
||||
"foreign-types 0.5.0",
|
||||
@@ -1057,20 +1041,6 @@ dependencies = [
|
||||
"objc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cocoa-foundation"
|
||||
version = "0.1.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"block",
|
||||
"core-foundation 0.9.4",
|
||||
"core-graphics-types 0.1.3",
|
||||
"libc",
|
||||
"objc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cocoa-foundation"
|
||||
version = "0.2.0"
|
||||
@@ -1534,6 +1504,7 @@ dependencies = [
|
||||
"tauri-build",
|
||||
"tauri-plugin-deep-link",
|
||||
"tauri-plugin-log",
|
||||
"tauri-plugin-single-instance",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3658,7 +3629,7 @@ version = "0.14.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ba8ac4080fb1e097c2c22acae467e46e4da72d941f02e82b67a87a2a89fa38b1"
|
||||
dependencies = [
|
||||
"cocoa 0.26.0",
|
||||
"cocoa",
|
||||
"crossbeam-channel",
|
||||
"dpi",
|
||||
"gtk",
|
||||
@@ -3699,7 +3670,7 @@ dependencies = [
|
||||
"log",
|
||||
"ndk-sys",
|
||||
"num_enum",
|
||||
"raw-window-handle 0.6.2",
|
||||
"raw-window-handle",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
@@ -4823,12 +4794,6 @@ dependencies = [
|
||||
"rand_core 0.5.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "raw-window-handle"
|
||||
version = "0.5.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
|
||||
|
||||
[[package]]
|
||||
name = "raw-window-handle"
|
||||
version = "0.6.2"
|
||||
@@ -5023,7 +4988,7 @@ dependencies = [
|
||||
"objc",
|
||||
"objc-foundation",
|
||||
"objc_id",
|
||||
"raw-window-handle 0.6.2",
|
||||
"raw-window-handle",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
@@ -5710,7 +5675,7 @@ dependencies = [
|
||||
"objc2",
|
||||
"objc2-foundation",
|
||||
"objc2-quartz-core",
|
||||
"raw-window-handle 0.6.2",
|
||||
"raw-window-handle",
|
||||
"redox_syscall",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
@@ -6228,7 +6193,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2a93f2c6b8fdaeb7f417bda89b5bc767999745c3052969664ae1fa65892deb7e"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"cocoa 0.26.0",
|
||||
"cocoa",
|
||||
"core-foundation 0.10.0",
|
||||
"core-graphics 0.24.0",
|
||||
"crossbeam-channel",
|
||||
@@ -6249,7 +6214,7 @@ dependencies = [
|
||||
"objc",
|
||||
"once_cell",
|
||||
"parking_lot",
|
||||
"raw-window-handle 0.6.2",
|
||||
"raw-window-handle",
|
||||
"scopeguard",
|
||||
"tao-macros",
|
||||
"unicode-segmentation",
|
||||
@@ -6296,13 +6261,13 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
|
||||
|
||||
[[package]]
|
||||
name = "tauri"
|
||||
version = "2.0.0-rc.10"
|
||||
version = "2.0.0-rc.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a6327f79726c508efbbc3826b343fd7d39ebce786bdeff5881077b35d335d9e0"
|
||||
checksum = "65e5d4a319f11ae72c77d0f4dbd9703ab6b401eb91d1ca88d89c33d13d4ea20c"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bytes",
|
||||
"cocoa 0.26.0",
|
||||
"cocoa",
|
||||
"dirs 5.0.1",
|
||||
"dunce",
|
||||
"embed_plist",
|
||||
@@ -6321,7 +6286,8 @@ dependencies = [
|
||||
"muda",
|
||||
"objc",
|
||||
"percent-encoding",
|
||||
"raw-window-handle 0.6.2",
|
||||
"plist",
|
||||
"raw-window-handle",
|
||||
"reqwest",
|
||||
"serde",
|
||||
"serde_json",
|
||||
@@ -6349,9 +6315,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-build"
|
||||
version = "2.0.0-rc.9"
|
||||
version = "2.0.0-rc.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7938a610d1474435fa38dfba66c95ce9be7f17b500672b6e00072bca5e52fef3"
|
||||
checksum = "148441d64674b2885c1ba5baf3ae61662bb8753859ffcfb541962cbc6b847f39"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"cargo_toml",
|
||||
@@ -6373,9 +6339,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-codegen"
|
||||
version = "2.0.0-rc.9"
|
||||
version = "2.0.0-rc.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "467d3e95b57c860bea13b7c812820d9e7425e4b700e5e69b358d906f22022007"
|
||||
checksum = "72a15c3f9282c82871c69ddb65d02ae552738bbac848c8adcab521bf14d8b9e6"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"brotli",
|
||||
@@ -6400,9 +6366,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-macros"
|
||||
version = "2.0.0-rc.8"
|
||||
version = "2.0.0-rc.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c4585a906bd96bf57d063c3d60c52577ccc5de592d08f9d112e873ada79af9b9"
|
||||
checksum = "f12d1aa317bec56f78388cf6012d788876d838595a48f95cbd7835642db356a0"
|
||||
dependencies = [
|
||||
"heck 0.5.0",
|
||||
"proc-macro2",
|
||||
@@ -6414,9 +6380,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin"
|
||||
version = "2.0.0-rc.9"
|
||||
version = "2.0.0-rc.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b905ecef194245bb35baba0447703f9fe40e4c03e946c7aba54c21c23e3452c7"
|
||||
checksum = "d82a2adea16b8a71b7a5ad23f720bb13f8d2830b820cc1c266512314ba99bf67"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"glob",
|
||||
@@ -6482,7 +6448,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-clipboard-manager"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.4"
|
||||
dependencies = [
|
||||
"arboard",
|
||||
"image 0.24.9",
|
||||
@@ -6496,7 +6462,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-deep-link"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.6"
|
||||
dependencies = [
|
||||
"dunce",
|
||||
"log",
|
||||
@@ -6514,10 +6480,10 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-dialog"
|
||||
version = "2.0.0-rc.5"
|
||||
version = "2.0.0-rc.7"
|
||||
dependencies = [
|
||||
"log",
|
||||
"raw-window-handle 0.6.2",
|
||||
"raw-window-handle",
|
||||
"rfd",
|
||||
"serde",
|
||||
"serde_json",
|
||||
@@ -6530,13 +6496,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-fs"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.5"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"dunce",
|
||||
"glob",
|
||||
"notify",
|
||||
"notify-debouncer-full",
|
||||
"percent-encoding",
|
||||
"schemars",
|
||||
"serde",
|
||||
"serde_json",
|
||||
@@ -6589,7 +6556,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-http"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.5"
|
||||
dependencies = [
|
||||
"data-url",
|
||||
"http",
|
||||
@@ -6626,7 +6593,7 @@ version = "2.0.0-rc.2"
|
||||
dependencies = [
|
||||
"android_logger",
|
||||
"byte-unit",
|
||||
"cocoa 0.26.0",
|
||||
"cocoa",
|
||||
"fern",
|
||||
"log",
|
||||
"objc",
|
||||
@@ -6655,7 +6622,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-notification"
|
||||
version = "2.0.0-rc.4"
|
||||
version = "2.0.0-rc.5"
|
||||
dependencies = [
|
||||
"color-backtrace",
|
||||
"ctor",
|
||||
@@ -6693,7 +6660,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-persisted-scope"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.5"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"bincode",
|
||||
@@ -6747,13 +6714,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-single-instance"
|
||||
version = "2.0.0-rc.1"
|
||||
version = "2.0.0-rc.4"
|
||||
dependencies = [
|
||||
"log",
|
||||
"semver",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tauri",
|
||||
"tauri-plugin-deep-link",
|
||||
"thiserror",
|
||||
"windows-sys 0.59.0",
|
||||
"zbus",
|
||||
@@ -6873,7 +6841,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-plugin-window-state"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.4"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"log",
|
||||
@@ -6886,15 +6854,15 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-runtime"
|
||||
version = "2.0.0-rc.9"
|
||||
version = "2.0.0-rc.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b72cd110a6699ef44963504d4fa4f6c535677bb0177da2d178f4f822a53058ed"
|
||||
checksum = "389f78c8e8e6eff3897d8d9581087943b5976ea96a0ab5036be691f28c2b0df0"
|
||||
dependencies = [
|
||||
"dpi",
|
||||
"gtk",
|
||||
"http",
|
||||
"jni",
|
||||
"raw-window-handle 0.6.2",
|
||||
"raw-window-handle",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"tauri-utils",
|
||||
@@ -6905,17 +6873,17 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-runtime-wry"
|
||||
version = "2.0.0-rc.9"
|
||||
version = "2.0.0-rc.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1eb325cca17496ccbb469e7e2fef7f3e31a1005ab0c658dc3331c7781a573401"
|
||||
checksum = "466c418aef2ddc7d31173a5b00bfae3df9b58ed66644339f3ca55008bfc54f25"
|
||||
dependencies = [
|
||||
"cocoa 0.26.0",
|
||||
"cocoa",
|
||||
"gtk",
|
||||
"http",
|
||||
"jni",
|
||||
"log",
|
||||
"percent-encoding",
|
||||
"raw-window-handle 0.6.2",
|
||||
"raw-window-handle",
|
||||
"softbuffer",
|
||||
"tao",
|
||||
"tauri-runtime",
|
||||
@@ -6929,9 +6897,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tauri-utils"
|
||||
version = "2.0.0-rc.9"
|
||||
version = "2.0.0-rc.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6746b87c4755f493b94920622e245aef2d771f001ddeffc203e315872d323e1c"
|
||||
checksum = "3019641087c9039b57ebfca95fa42a93c07056845b7d8d57c8966061bcee83b4"
|
||||
dependencies = [
|
||||
"aes-gcm",
|
||||
"brotli",
|
||||
@@ -7992,18 +7960,6 @@ version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||
|
||||
[[package]]
|
||||
name = "window-shadows"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "67ff424735b1ac21293b0492b069394b0a189c8a463fb015a16dea7c2e221c08"
|
||||
dependencies = [
|
||||
"cocoa 0.25.0",
|
||||
"objc",
|
||||
"raw-window-handle 0.5.2",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "window-vibrancy"
|
||||
version = "0.5.2"
|
||||
@@ -8013,7 +7969,7 @@ dependencies = [
|
||||
"objc2",
|
||||
"objc2-app-kit",
|
||||
"objc2-foundation",
|
||||
"raw-window-handle 0.6.2",
|
||||
"raw-window-handle",
|
||||
"windows-sys 0.59.0",
|
||||
"windows-version",
|
||||
]
|
||||
@@ -8466,7 +8422,7 @@ checksum = "f4d715cf5fe88e9647f3d17b207b6d060d4a88e7171d4ccb2d2c657dd1d44728"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"block",
|
||||
"cocoa 0.26.0",
|
||||
"cocoa",
|
||||
"core-graphics 0.24.0",
|
||||
"crossbeam-channel",
|
||||
"dpi",
|
||||
@@ -8484,7 +8440,7 @@ dependencies = [
|
||||
"objc_id",
|
||||
"once_cell",
|
||||
"percent-encoding",
|
||||
"raw-window-handle 0.6.2",
|
||||
"raw-window-handle",
|
||||
"sha2",
|
||||
"soup3",
|
||||
"tao-macros",
|
||||
|
||||
+4
-4
@@ -11,10 +11,10 @@ resolver = "2"
|
||||
[workspace.dependencies]
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
log = "0.4"
|
||||
tauri = { version = "2.0.0-rc.10", default-features = false }
|
||||
tauri-build = "2.0.0-rc.9"
|
||||
tauri-plugin = "2.0.0-rc.9"
|
||||
tauri-utils = "2.0.0-rc.9"
|
||||
tauri = { version = "2.0.0-rc.12", default-features = false }
|
||||
tauri-build = "2.0.0-rc.11"
|
||||
tauri-plugin = "2.0.0-rc.11"
|
||||
tauri-utils = "2.0.0-rc.11"
|
||||
serde_json = "1"
|
||||
thiserror = "1"
|
||||
url = "2"
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.4]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `barcode-scanner-js@2.0.0-rc.2`
|
||||
- Upgraded to `clipboard-manager-js@2.0.0-rc.2`
|
||||
|
||||
## \[2.0.0-rc.3]
|
||||
|
||||
### Dependencies
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "svelte-app",
|
||||
"private": true,
|
||||
"version": "2.0.0-rc.3",
|
||||
"version": "2.0.0-rc.4",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite --clearScreen false",
|
||||
@@ -10,10 +10,10 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-rc.4",
|
||||
"@tauri-apps/plugin-barcode-scanner": "2.0.0-rc.1",
|
||||
"@tauri-apps/plugin-barcode-scanner": "2.0.0-rc.2",
|
||||
"@tauri-apps/plugin-biometric": "2.0.0-rc.1",
|
||||
"@tauri-apps/plugin-cli": "2.0.0-rc.1",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.0.0-rc.1",
|
||||
"@tauri-apps/plugin-clipboard-manager": "2.0.0-rc.2",
|
||||
"@tauri-apps/plugin-dialog": "2.0.0-rc.1",
|
||||
"@tauri-apps/plugin-fs": "2.0.0-rc.2",
|
||||
"@tauri-apps/plugin-global-shortcut": "2.0.0-rc.1",
|
||||
@@ -31,7 +31,7 @@
|
||||
"@iconify-json/codicon": "^1.1.37",
|
||||
"@iconify-json/ph": "^1.1.8",
|
||||
"@sveltejs/vite-plugin-svelte": "^3.0.1",
|
||||
"@tauri-apps/cli": "2.0.0-rc.12",
|
||||
"@tauri-apps/cli": "2.0.0-rc.14",
|
||||
"@unocss/extractor-svelte": "^0.62.0",
|
||||
"svelte": "^4.2.19",
|
||||
"unocss": "^0.62.0",
|
||||
|
||||
@@ -1,5 +1,23 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.7]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `clipboard-manager@2.0.0-rc.4`
|
||||
- Upgraded to `fs@2.0.0-rc.5`
|
||||
- Upgraded to `notification@2.0.0-rc.5`
|
||||
- Upgraded to `dialog@2.0.0-rc.7`
|
||||
- Upgraded to `http@2.0.0-rc.5`
|
||||
|
||||
## \[2.0.0-rc.6]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `dialog@2.0.0-rc.6`
|
||||
- Upgraded to `fs@2.0.0-rc.4`
|
||||
- Upgraded to `http@2.0.0-rc.4`
|
||||
|
||||
## \[2.0.0-rc.5]
|
||||
|
||||
### Dependencies
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "api"
|
||||
publish = false
|
||||
version = "2.0.0-rc.5"
|
||||
version = "2.0.0-rc.7"
|
||||
description = "An example Tauri Application showcasing the api"
|
||||
edition = "2021"
|
||||
rust-version = { workspace = true }
|
||||
@@ -20,15 +20,15 @@ serde = { workspace = true }
|
||||
tiny_http = "0.12"
|
||||
log = { workspace = true }
|
||||
tauri-plugin-log = { path = "../../../plugins/log", version = "2.0.0-rc.2" }
|
||||
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-rc.3", features = [
|
||||
tauri-plugin-fs = { path = "../../../plugins/fs", version = "2.0.0-rc.5", features = [
|
||||
"watch",
|
||||
] }
|
||||
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-rc.3" }
|
||||
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-rc.5" }
|
||||
tauri-plugin-clipboard-manager = { path = "../../../plugins/clipboard-manager", version = "2.0.0-rc.4" }
|
||||
tauri-plugin-dialog = { path = "../../../plugins/dialog", version = "2.0.0-rc.7" }
|
||||
tauri-plugin-http = { path = "../../../plugins/http", features = [
|
||||
"multipart",
|
||||
], version = "2.0.0-rc.3" }
|
||||
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-rc.4", features = [
|
||||
], version = "2.0.0-rc.5" }
|
||||
tauri-plugin-notification = { path = "../../../plugins/notification", version = "2.0.0-rc.5", features = [
|
||||
"windows7-compat",
|
||||
] }
|
||||
tauri-plugin-os = { path = "../../../plugins/os", version = "2.0.0-rc.1" }
|
||||
@@ -53,14 +53,12 @@ features = [
|
||||
tauri-plugin-cli = { path = "../../../plugins/cli", version = "2.0.0-rc.1" }
|
||||
tauri-plugin-global-shortcut = { path = "../../../plugins/global-shortcut", version = "2.0.0-rc.2" }
|
||||
tauri-plugin-updater = { path = "../../../plugins/updater", version = "2.0.0-rc.3" }
|
||||
tauri-plugin-window-state = { path = "../../../plugins/window-state", version = "2.0.0-rc.3" }
|
||||
|
||||
[target."cfg(any(target_os = \"android\", target_os = \"ios\"))".dependencies]
|
||||
tauri-plugin-barcode-scanner = { path = "../../../plugins/barcode-scanner/", version = "2.0.0-rc.4" }
|
||||
tauri-plugin-nfc = { path = "../../../plugins/nfc", version = "2.0.0-rc.3" }
|
||||
tauri-plugin-biometric = { path = "../../../plugins/biometric/", version = "2.0.0-rc.3" }
|
||||
|
||||
[target."cfg(target_os = \"windows\")".dependencies]
|
||||
window-shadows = "0.2"
|
||||
|
||||
[features]
|
||||
prod = ["tauri/custom-protocol"]
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -150,42 +150,42 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the application folders, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the application folders, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta-recursive"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-read -> This allows non-recursive read access to the `$APP` folder.",
|
||||
"description": "fs:allow-app-read -> This allows non-recursive read access to the application folders.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-read"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete `$APP` folder, files and subdirectories.",
|
||||
"description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete application folders, files and subdirectories.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-read-recursive"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-write -> This allows non-recursive write access to the `$APP` folder.",
|
||||
"description": "fs:allow-app-write -> This allows non-recursive write access to the application folders.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-write"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete `$APP` folder, files and subdirectories.",
|
||||
"description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete application folders, files and subdirectories.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-write-recursive"
|
||||
@@ -1606,28 +1606,28 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the `$APP`folder.",
|
||||
"description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the application folders.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-app"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-app-index -> This scope permits to list all files and folders in the `$APP`folder.",
|
||||
"description": "fs:scope-app-index -> This scope permits to list all files and folders in the application directories.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-app-index"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-app-recursive -> This scope permits recursive access to the complete `$APP` folder, including sub directories and files.",
|
||||
"description": "fs:scope-app-recursive -> This scope permits recursive access to the complete application folders, including sub directories and files.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-app-recursive"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.",
|
||||
"description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-appcache"
|
||||
@@ -1648,7 +1648,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.",
|
||||
"description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-appconfig"
|
||||
@@ -1669,7 +1669,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.",
|
||||
"description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-appdata"
|
||||
@@ -1690,7 +1690,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.",
|
||||
"description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-applocaldata"
|
||||
@@ -1711,7 +1711,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.",
|
||||
"description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-applog"
|
||||
@@ -1732,7 +1732,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.",
|
||||
"description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-audio"
|
||||
@@ -1753,7 +1753,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE`folder.",
|
||||
"description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-cache"
|
||||
@@ -1774,7 +1774,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.",
|
||||
"description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-config"
|
||||
@@ -1795,7 +1795,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA`folder.",
|
||||
"description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-data"
|
||||
@@ -1816,7 +1816,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.",
|
||||
"description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-desktop"
|
||||
@@ -1837,7 +1837,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.",
|
||||
"description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-document"
|
||||
@@ -1858,7 +1858,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.",
|
||||
"description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-download"
|
||||
@@ -1879,7 +1879,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE`folder.",
|
||||
"description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-exe"
|
||||
@@ -1900,7 +1900,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT`folder.",
|
||||
"description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-font"
|
||||
@@ -1921,7 +1921,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME`folder.",
|
||||
"description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-home"
|
||||
@@ -1942,7 +1942,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.",
|
||||
"description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-localdata"
|
||||
@@ -1963,7 +1963,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG`folder.",
|
||||
"description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-log"
|
||||
@@ -1984,7 +1984,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.",
|
||||
"description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-picture"
|
||||
@@ -2005,7 +2005,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.",
|
||||
"description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-public"
|
||||
@@ -2026,7 +2026,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.",
|
||||
"description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-resource"
|
||||
@@ -2047,7 +2047,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.",
|
||||
"description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-runtime"
|
||||
@@ -2068,7 +2068,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP`folder.",
|
||||
"description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-temp"
|
||||
@@ -2089,7 +2089,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.",
|
||||
"description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-template"
|
||||
@@ -2110,7 +2110,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.",
|
||||
"description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-video"
|
||||
@@ -2427,7 +2427,7 @@
|
||||
]
|
||||
},
|
||||
"cmd": {
|
||||
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
|
||||
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
@@ -2462,7 +2462,7 @@
|
||||
]
|
||||
},
|
||||
"cmd": {
|
||||
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
|
||||
"description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.",
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
@@ -4746,42 +4746,42 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the application folders, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.",
|
||||
"description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the application folders, including file listing and statistics.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-meta-recursive"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-read -> This allows non-recursive read access to the `$APP` folder.",
|
||||
"description": "fs:allow-app-read -> This allows non-recursive read access to the application folders.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-read"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete `$APP` folder, files and subdirectories.",
|
||||
"description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete application folders, files and subdirectories.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-read-recursive"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-write -> This allows non-recursive write access to the `$APP` folder.",
|
||||
"description": "fs:allow-app-write -> This allows non-recursive write access to the application folders.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-write"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete `$APP` folder, files and subdirectories.",
|
||||
"description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete application folders, files and subdirectories.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:allow-app-write-recursive"
|
||||
@@ -6209,28 +6209,28 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the `$APP`folder.",
|
||||
"description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the application folders.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-app"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-app-index -> This scope permits to list all files and folders in the `$APP`folder.",
|
||||
"description": "fs:scope-app-index -> This scope permits to list all files and folders in the application directories.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-app-index"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-app-recursive -> This scope permits recursive access to the complete `$APP` folder, including sub directories and files.",
|
||||
"description": "fs:scope-app-recursive -> This scope permits recursive access to the complete application folders, including sub directories and files.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-app-recursive"
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.",
|
||||
"description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-appcache"
|
||||
@@ -6251,7 +6251,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.",
|
||||
"description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-appconfig"
|
||||
@@ -6272,7 +6272,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.",
|
||||
"description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-appdata"
|
||||
@@ -6293,7 +6293,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.",
|
||||
"description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-applocaldata"
|
||||
@@ -6314,7 +6314,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.",
|
||||
"description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-applog"
|
||||
@@ -6335,7 +6335,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.",
|
||||
"description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-audio"
|
||||
@@ -6356,7 +6356,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE`folder.",
|
||||
"description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-cache"
|
||||
@@ -6377,7 +6377,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.",
|
||||
"description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-config"
|
||||
@@ -6398,7 +6398,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA`folder.",
|
||||
"description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-data"
|
||||
@@ -6419,7 +6419,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.",
|
||||
"description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-desktop"
|
||||
@@ -6440,7 +6440,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.",
|
||||
"description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-document"
|
||||
@@ -6461,7 +6461,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.",
|
||||
"description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-download"
|
||||
@@ -6482,7 +6482,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE`folder.",
|
||||
"description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-exe"
|
||||
@@ -6503,7 +6503,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT`folder.",
|
||||
"description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-font"
|
||||
@@ -6524,7 +6524,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME`folder.",
|
||||
"description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-home"
|
||||
@@ -6545,7 +6545,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.",
|
||||
"description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-localdata"
|
||||
@@ -6566,7 +6566,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG`folder.",
|
||||
"description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-log"
|
||||
@@ -6587,7 +6587,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.",
|
||||
"description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-picture"
|
||||
@@ -6608,7 +6608,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.",
|
||||
"description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-public"
|
||||
@@ -6629,7 +6629,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.",
|
||||
"description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-resource"
|
||||
@@ -6650,7 +6650,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.",
|
||||
"description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-runtime"
|
||||
@@ -6671,7 +6671,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP`folder.",
|
||||
"description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-temp"
|
||||
@@ -6692,7 +6692,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.",
|
||||
"description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-template"
|
||||
@@ -6713,7 +6713,7 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.",
|
||||
"description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"fs:scope-video"
|
||||
|
||||
@@ -45,6 +45,8 @@ pub fn run() {
|
||||
app.handle().plugin(tauri_plugin_cli::init())?;
|
||||
app.handle()
|
||||
.plugin(tauri_plugin_global_shortcut::Builder::new().build())?;
|
||||
app.handle()
|
||||
.plugin(tauri_plugin_window_state::Builder::new().build())?;
|
||||
app.handle()
|
||||
.plugin(tauri_plugin_updater::Builder::new().build())?;
|
||||
}
|
||||
@@ -63,8 +65,7 @@ pub fn run() {
|
||||
.user_agent(&format!("Tauri API - {}", std::env::consts::OS))
|
||||
.title("Tauri API Validation")
|
||||
.inner_size(1000., 800.)
|
||||
.min_inner_size(600., 400.)
|
||||
.content_protected(true);
|
||||
.min_inner_size(600., 400.);
|
||||
}
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
|
||||
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
|
||||
"productName": "Tauri API",
|
||||
"version": "2.0.0",
|
||||
"identifier": "com.tauri.api",
|
||||
|
||||
@@ -1,59 +1,59 @@
|
||||
<script>
|
||||
import * as clipboard from "@tauri-apps/plugin-clipboard-manager";
|
||||
import { open } from "@tauri-apps/plugin-dialog";
|
||||
import { arrayBufferToBase64 } from "../lib/utils";
|
||||
import { readFile } from "@tauri-apps/plugin-fs";
|
||||
import * as clipboard from '@tauri-apps/plugin-clipboard-manager'
|
||||
import { open } from '@tauri-apps/plugin-dialog'
|
||||
import { arrayBufferToBase64 } from '../lib/utils'
|
||||
import { readFile } from '@tauri-apps/plugin-fs'
|
||||
|
||||
export let onMessage;
|
||||
export let insecureRenderHtml;
|
||||
let text = "clipboard message";
|
||||
export let onMessage
|
||||
export let insecureRenderHtml
|
||||
let text = 'clipboard message'
|
||||
|
||||
function writeText() {
|
||||
clipboard
|
||||
.writeText(text)
|
||||
.then(() => {
|
||||
onMessage("Wrote to the clipboard");
|
||||
onMessage('Wrote to the clipboard')
|
||||
})
|
||||
.catch(onMessage);
|
||||
.catch(onMessage)
|
||||
}
|
||||
|
||||
async function writeImage() {
|
||||
try {
|
||||
const res = await open({
|
||||
title: "Image to write to clipboard",
|
||||
const path = await open({
|
||||
title: 'Image to write to clipboard',
|
||||
filters: [
|
||||
{
|
||||
name: "Clipboard IMG",
|
||||
extensions: ["png", "jpg", "jpeg"],
|
||||
},
|
||||
],
|
||||
});
|
||||
const bytes = await readFile(res.path);
|
||||
await clipboard.writeImage(bytes);
|
||||
onMessage("wrote image");
|
||||
name: 'Clipboard IMG',
|
||||
extensions: ['png', 'jpg', 'jpeg']
|
||||
}
|
||||
]
|
||||
})
|
||||
const bytes = await readFile(path)
|
||||
await clipboard.writeImage(bytes)
|
||||
onMessage('wrote image')
|
||||
} catch (e) {
|
||||
onMessage(e);
|
||||
onMessage(e)
|
||||
}
|
||||
}
|
||||
|
||||
async function read() {
|
||||
try {
|
||||
const image = await clipboard.readImage();
|
||||
const image = await clipboard.readImage()
|
||||
arrayBufferToBase64(await image.rgba(), function (base64) {
|
||||
const src = "data:image/png;base64," + base64;
|
||||
insecureRenderHtml('<img src="' + src + '"></img>');
|
||||
});
|
||||
return;
|
||||
const src = 'data:image/png;base64,' + base64
|
||||
insecureRenderHtml('<img src="' + src + '"></img>')
|
||||
})
|
||||
return
|
||||
} catch (_) {}
|
||||
|
||||
clipboard
|
||||
.readText()
|
||||
.then((contents) => {
|
||||
onMessage(`Clipboard contents: ${contents}`);
|
||||
onMessage(`Clipboard contents: ${contents}`)
|
||||
})
|
||||
.catch((e) => {
|
||||
onMessage(e);
|
||||
});
|
||||
onMessage(e)
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -65,6 +65,5 @@
|
||||
/>
|
||||
<button class="btn" type="button" on:click={writeText}>Write</button>
|
||||
<button class="btn" type="button" on:click={writeImage}>Pick Image</button>
|
||||
|
||||
<button class="btn" type="button" on:click={read}>Read</button>
|
||||
</div>
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@
|
||||
"eslint-config-prettier": "9.1.0",
|
||||
"eslint-plugin-security": "3.0.1",
|
||||
"prettier": "3.3.3",
|
||||
"rollup": "4.21.2",
|
||||
"rollup": "4.21.3",
|
||||
"tslib": "2.7.0",
|
||||
"typescript": "5.6.2",
|
||||
"typescript-eslint": "8.5.0"
|
||||
|
||||
@@ -295,53 +295,39 @@
|
||||
"type": "string",
|
||||
"oneOf": [
|
||||
{
|
||||
"description": "allow-disable -> Enables the disable command without any pre-configured scope.",
|
||||
"description": "Enables the disable command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-disable"
|
||||
]
|
||||
"const": "allow-disable"
|
||||
},
|
||||
{
|
||||
"description": "deny-disable -> Denies the disable command without any pre-configured scope.",
|
||||
"description": "Denies the disable command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-disable"
|
||||
]
|
||||
"const": "deny-disable"
|
||||
},
|
||||
{
|
||||
"description": "allow-enable -> Enables the enable command without any pre-configured scope.",
|
||||
"description": "Enables the enable command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-enable"
|
||||
]
|
||||
"const": "allow-enable"
|
||||
},
|
||||
{
|
||||
"description": "deny-enable -> Denies the enable command without any pre-configured scope.",
|
||||
"description": "Denies the enable command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-enable"
|
||||
]
|
||||
"const": "deny-enable"
|
||||
},
|
||||
{
|
||||
"description": "allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.",
|
||||
"description": "Enables the is_enabled command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-is-enabled"
|
||||
]
|
||||
"const": "allow-is-enabled"
|
||||
},
|
||||
{
|
||||
"description": "deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.",
|
||||
"description": "Denies the is_enabled command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-is-enabled"
|
||||
]
|
||||
"const": "deny-is-enabled"
|
||||
},
|
||||
{
|
||||
"description": "default -> This permission set configures if your\napplication can enable or disable auto\nstarting the application on boot.\n\n#### Granted Permissions\n\nIt allows all to check, enable and\ndisable the automatic start on boot.\n\n",
|
||||
"description": "This permission set configures if your\napplication can enable or disable auto\nstarting the application on boot.\n\n#### Granted Permissions\n\nIt allows all to check, enable and\ndisable the automatic start on boot.\n\n",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"default"
|
||||
]
|
||||
"const": "default"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.2]
|
||||
|
||||
- [`79d6e19c`](https://github.com/tauri-apps/plugins-workspace/commit/79d6e19c4b38bae0cab29eb88df379e2237d9aac) ([#1777](https://github.com/tauri-apps/plugins-workspace/pull/1777)) Fixed an issue which caused checkPermission and requestPermission to be mixed up.
|
||||
|
||||
## \[2.0.0-rc.4]
|
||||
|
||||
- [`713c54ef`](https://github.com/tauri-apps/plugins-workspace/commit/713c54ef8365d36afd84585dcabed2fbb751223d) ([#1749](https://github.com/tauri-apps/plugins-workspace/pull/1749) by [@olivierlemasle](https://github.com/tauri-apps/plugins-workspace/../../olivierlemasle)) Remove unused Android dependencies.
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
import {
|
||||
invoke,
|
||||
requestPermissions as checkPermissions_,
|
||||
checkPermissions as requestPermissions_
|
||||
requestPermissions as requestPermissions_,
|
||||
checkPermissions as checkPermissions_
|
||||
} from '@tauri-apps/api/core'
|
||||
|
||||
export type { PermissionState } from '@tauri-apps/api/core'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-barcode-scanner",
|
||||
"version": "2.0.0-rc.1",
|
||||
"version": "2.0.0-rc.2",
|
||||
"description": "Scan QR codes, EAN-13 and other kinds of barcodes on Android and iOS",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
|
||||
@@ -295,95 +295,69 @@
|
||||
"type": "string",
|
||||
"oneOf": [
|
||||
{
|
||||
"description": "allow-cancel -> Enables the cancel command without any pre-configured scope.",
|
||||
"description": "Enables the cancel command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-cancel"
|
||||
]
|
||||
"const": "allow-cancel"
|
||||
},
|
||||
{
|
||||
"description": "deny-cancel -> Denies the cancel command without any pre-configured scope.",
|
||||
"description": "Denies the cancel command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-cancel"
|
||||
]
|
||||
"const": "deny-cancel"
|
||||
},
|
||||
{
|
||||
"description": "allow-check-permissions -> Enables the check_permissions command without any pre-configured scope.",
|
||||
"description": "Enables the check_permissions command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-check-permissions"
|
||||
]
|
||||
"const": "allow-check-permissions"
|
||||
},
|
||||
{
|
||||
"description": "deny-check-permissions -> Denies the check_permissions command without any pre-configured scope.",
|
||||
"description": "Denies the check_permissions command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-check-permissions"
|
||||
]
|
||||
"const": "deny-check-permissions"
|
||||
},
|
||||
{
|
||||
"description": "allow-open-app-settings -> Enables the open_app_settings command without any pre-configured scope.",
|
||||
"description": "Enables the open_app_settings command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-open-app-settings"
|
||||
]
|
||||
"const": "allow-open-app-settings"
|
||||
},
|
||||
{
|
||||
"description": "deny-open-app-settings -> Denies the open_app_settings command without any pre-configured scope.",
|
||||
"description": "Denies the open_app_settings command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-open-app-settings"
|
||||
]
|
||||
"const": "deny-open-app-settings"
|
||||
},
|
||||
{
|
||||
"description": "allow-request-permissions -> Enables the request_permissions command without any pre-configured scope.",
|
||||
"description": "Enables the request_permissions command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-request-permissions"
|
||||
]
|
||||
"const": "allow-request-permissions"
|
||||
},
|
||||
{
|
||||
"description": "deny-request-permissions -> Denies the request_permissions command without any pre-configured scope.",
|
||||
"description": "Denies the request_permissions command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-request-permissions"
|
||||
]
|
||||
"const": "deny-request-permissions"
|
||||
},
|
||||
{
|
||||
"description": "allow-scan -> Enables the scan command without any pre-configured scope.",
|
||||
"description": "Enables the scan command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-scan"
|
||||
]
|
||||
"const": "allow-scan"
|
||||
},
|
||||
{
|
||||
"description": "deny-scan -> Denies the scan command without any pre-configured scope.",
|
||||
"description": "Denies the scan command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-scan"
|
||||
]
|
||||
"const": "deny-scan"
|
||||
},
|
||||
{
|
||||
"description": "allow-vibrate -> Enables the vibrate command without any pre-configured scope.",
|
||||
"description": "Enables the vibrate command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-vibrate"
|
||||
]
|
||||
"const": "allow-vibrate"
|
||||
},
|
||||
{
|
||||
"description": "deny-vibrate -> Denies the vibrate command without any pre-configured scope.",
|
||||
"description": "Denies the vibrate command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-vibrate"
|
||||
]
|
||||
"const": "deny-vibrate"
|
||||
},
|
||||
{
|
||||
"description": "default -> This permission set configures which\nbarcode scanning features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all barcode related features.\n\n",
|
||||
"description": "This permission set configures which\nbarcode scanning features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all barcode related features.\n\n",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"default"
|
||||
]
|
||||
"const": "default"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -295,39 +295,29 @@
|
||||
"type": "string",
|
||||
"oneOf": [
|
||||
{
|
||||
"description": "allow-authenticate -> Enables the authenticate command without any pre-configured scope.",
|
||||
"description": "Enables the authenticate command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-authenticate"
|
||||
]
|
||||
"const": "allow-authenticate"
|
||||
},
|
||||
{
|
||||
"description": "deny-authenticate -> Denies the authenticate command without any pre-configured scope.",
|
||||
"description": "Denies the authenticate command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-authenticate"
|
||||
]
|
||||
"const": "deny-authenticate"
|
||||
},
|
||||
{
|
||||
"description": "allow-status -> Enables the status command without any pre-configured scope.",
|
||||
"description": "Enables the status command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-status"
|
||||
]
|
||||
"const": "allow-status"
|
||||
},
|
||||
{
|
||||
"description": "deny-status -> Denies the status command without any pre-configured scope.",
|
||||
"description": "Denies the status command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-status"
|
||||
]
|
||||
"const": "deny-status"
|
||||
},
|
||||
{
|
||||
"description": "default -> This permission set configures which\nbiometric features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all biometric commands.\n\n",
|
||||
"description": "This permission set configures which\nbiometric features are by default exposed.\n\n#### Granted Permissions\n\nIt allows acccess to all biometric commands.\n\n",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"default"
|
||||
]
|
||||
"const": "default"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -295,25 +295,19 @@
|
||||
"type": "string",
|
||||
"oneOf": [
|
||||
{
|
||||
"description": "allow-cli-matches -> Enables the cli_matches command without any pre-configured scope.",
|
||||
"description": "Enables the cli_matches command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-cli-matches"
|
||||
]
|
||||
"const": "allow-cli-matches"
|
||||
},
|
||||
{
|
||||
"description": "deny-cli-matches -> Denies the cli_matches command without any pre-configured scope.",
|
||||
"description": "Denies the cli_matches command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-cli-matches"
|
||||
]
|
||||
"const": "deny-cli-matches"
|
||||
},
|
||||
{
|
||||
"description": "default -> Allows reading the CLI matches",
|
||||
"description": "Allows reading the CLI matches",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"default"
|
||||
]
|
||||
"const": "default"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.2]
|
||||
|
||||
- [`341a5320`](https://github.com/tauri-apps/plugins-workspace/commit/341a5320c33d3c7b041abf7eb0ab7ad8009e6c3f) ([#1771](https://github.com/tauri-apps/plugins-workspace/pull/1771)) Fix warnings and clear implementation on Android below SDK 28.
|
||||
|
||||
## \[2.0.0-rc.1]
|
||||
|
||||
- [`e2e97db5`](https://github.com/tauri-apps/plugins-workspace/commit/e2e97db51983267f5be84d4f6f0278d58834d1f5) ([#1701](https://github.com/tauri-apps/plugins-workspace/pull/1701) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Update to tauri 2.0.0-rc.8
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-clipboard-manager"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.4"
|
||||
description = "Read and write to the system clipboard."
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
package app.tauri.clipboard
|
||||
|
||||
import android.R.attr.value
|
||||
import android.app.Activity
|
||||
import android.content.ClipData
|
||||
import android.content.ClipDescription
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import android.os.Build
|
||||
import app.tauri.annotation.Command
|
||||
import app.tauri.annotation.InvokeArg
|
||||
import app.tauri.annotation.TauriPlugin
|
||||
@@ -59,6 +59,9 @@ internal class ReadClipDataSerializer @JvmOverloads constructor(t: Class<ReadCli
|
||||
|
||||
jgen.writeEndObject()
|
||||
}
|
||||
else -> {
|
||||
throw Exception("unimplemented ReadClipData")
|
||||
}
|
||||
}
|
||||
|
||||
jgen.writeEndObject()
|
||||
@@ -93,7 +96,7 @@ class ClipboardPlugin(private val activity: Activity) : Plugin(activity) {
|
||||
is WriteOptions.PlainText -> {
|
||||
ClipData.newPlainText(args.label, args.text)
|
||||
} else -> {
|
||||
invoke.reject("Invalid write options provided")
|
||||
invoke.reject("unimplemented WriteOptions")
|
||||
return
|
||||
}
|
||||
|
||||
@@ -128,7 +131,11 @@ class ClipboardPlugin(private val activity: Activity) : Plugin(activity) {
|
||||
@Command
|
||||
fun clear(invoke: Invoke) {
|
||||
if (manager.hasPrimaryClip()) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
manager.clearPrimaryClip()
|
||||
} else {
|
||||
manager.setPrimaryClip(ClipData.newPlainText("", ""))
|
||||
}
|
||||
}
|
||||
invoke.resolve()
|
||||
}
|
||||
|
||||
@@ -114,6 +114,11 @@ async function writeHtml(html: string, altHtml?: string): Promise<void> {
|
||||
|
||||
/**
|
||||
* Clears the clipboard.
|
||||
*
|
||||
* #### Platform-specific
|
||||
*
|
||||
* - **Android:** Only supported on SDK 28+. For older releases we write an empty string to the clipboard instead.
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { clear } from '@tauri-apps/plugin-clipboard-manager';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-clipboard-manager",
|
||||
"version": "2.0.0-rc.1",
|
||||
"version": "2.0.0-rc.2",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
"Tauri Programme within The Commons Conservancy"
|
||||
|
||||
@@ -295,95 +295,69 @@
|
||||
"type": "string",
|
||||
"oneOf": [
|
||||
{
|
||||
"description": "allow-clear -> Enables the clear command without any pre-configured scope.",
|
||||
"description": "Enables the clear command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-clear"
|
||||
]
|
||||
"const": "allow-clear"
|
||||
},
|
||||
{
|
||||
"description": "deny-clear -> Denies the clear command without any pre-configured scope.",
|
||||
"description": "Denies the clear command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-clear"
|
||||
]
|
||||
"const": "deny-clear"
|
||||
},
|
||||
{
|
||||
"description": "allow-read-image -> Enables the read_image command without any pre-configured scope.",
|
||||
"description": "Enables the read_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-read-image"
|
||||
]
|
||||
"const": "allow-read-image"
|
||||
},
|
||||
{
|
||||
"description": "deny-read-image -> Denies the read_image command without any pre-configured scope.",
|
||||
"description": "Denies the read_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-read-image"
|
||||
]
|
||||
"const": "deny-read-image"
|
||||
},
|
||||
{
|
||||
"description": "allow-read-text -> Enables the read_text command without any pre-configured scope.",
|
||||
"description": "Enables the read_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-read-text"
|
||||
]
|
||||
"const": "allow-read-text"
|
||||
},
|
||||
{
|
||||
"description": "deny-read-text -> Denies the read_text command without any pre-configured scope.",
|
||||
"description": "Denies the read_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-read-text"
|
||||
]
|
||||
"const": "deny-read-text"
|
||||
},
|
||||
{
|
||||
"description": "allow-write-html -> Enables the write_html command without any pre-configured scope.",
|
||||
"description": "Enables the write_html command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-write-html"
|
||||
]
|
||||
"const": "allow-write-html"
|
||||
},
|
||||
{
|
||||
"description": "deny-write-html -> Denies the write_html command without any pre-configured scope.",
|
||||
"description": "Denies the write_html command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-write-html"
|
||||
]
|
||||
"const": "deny-write-html"
|
||||
},
|
||||
{
|
||||
"description": "allow-write-image -> Enables the write_image command without any pre-configured scope.",
|
||||
"description": "Enables the write_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-write-image"
|
||||
]
|
||||
"const": "allow-write-image"
|
||||
},
|
||||
{
|
||||
"description": "deny-write-image -> Denies the write_image command without any pre-configured scope.",
|
||||
"description": "Denies the write_image command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-write-image"
|
||||
]
|
||||
"const": "deny-write-image"
|
||||
},
|
||||
{
|
||||
"description": "allow-write-text -> Enables the write_text command without any pre-configured scope.",
|
||||
"description": "Enables the write_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-write-text"
|
||||
]
|
||||
"const": "allow-write-text"
|
||||
},
|
||||
{
|
||||
"description": "deny-write-text -> Denies the write_text command without any pre-configured scope.",
|
||||
"description": "Denies the write_text command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-write-text"
|
||||
]
|
||||
"const": "deny-write-text"
|
||||
},
|
||||
{
|
||||
"description": "default -> No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n",
|
||||
"description": "No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"default"
|
||||
]
|
||||
"const": "default"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.6]
|
||||
|
||||
- [`6f3f6679`](https://github.com/tauri-apps/plugins-workspace/commit/6f3f66794a87ef9d1c16667c425d5ad7091a9c2f) ([#1780](https://github.com/tauri-apps/plugins-workspace/pull/1780)) Added `DeepLink::on_open_url` function to match the JavaScript API implementation,
|
||||
which wraps the `deep-link://new-url` event and also send the current deep link if there's any.
|
||||
|
||||
## \[2.0.0-rc.5]
|
||||
|
||||
- [`984110a9`](https://github.com/tauri-apps/plugins-workspace/commit/984110a978774712bad4d746ed06134d54debcd0) ([#1770](https://github.com/tauri-apps/plugins-workspace/pull/1770) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Emit the `deep-link://new-url` event on Linux and Windows when the app is executed with a deep link CLI argument,
|
||||
matching the iOS and macOS behavior.
|
||||
|
||||
## \[2.0.0-rc.2]
|
||||
|
||||
- [`64a6240f`](https://github.com/tauri-apps/plugins-workspace/commit/64a6240f79fcd52267c8d721b727ae695055d7ff) ([#1759](https://github.com/tauri-apps/plugins-workspace/pull/1759) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Implement `get_current` on Linux and Windows.
|
||||
|
||||
## \[2.0.0-rc.3]
|
||||
|
||||
- [`4654591d`](https://github.com/tauri-apps/plugins-workspace/commit/4654591d820403d6fa1a007fd55bb0d85947a6cc) ([#1732](https://github.com/tauri-apps/plugins-workspace/pull/1732) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Allow empty configuration values.
|
||||
@@ -104,3 +118,6 @@
|
||||
- [`eccd6f9`](https://github.com/tauri-apps/plugins-workspace/commit/eccd6f977af7629255b6f5a5205666c9079a86ed)([#504](https://github.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
|
||||
commit/eccd6f977af7629255b6f5a5205666c9079a86ed)([#504](https://github.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
|
||||
ithub.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
|
||||
]\(https://github.com/tauri-apps/plugins-workspace/commit/eccd6f977af7629255b6f5a5205666c9079a86ed)([#504](https://github.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
|
||||
commit/eccd6f977af7629255b6f5a5205666c9079a86ed)([#504](https://github.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
|
||||
ithub.com/tauri-apps/plugins-workspace/pull/504)) Initial release.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-deep-link"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.6"
|
||||
description = "Set your Tauri application as the default handler for an URL"
|
||||
authors = { workspace = true }
|
||||
license = { workspace = true }
|
||||
|
||||
@@ -145,7 +145,7 @@ await onOpenUrl((urls) => {
|
||||
})
|
||||
```
|
||||
|
||||
Note that the Plugin will only emit events on macOS, iOS and Android. On Windows and Linux the OS will spawn a new instance of your app with the URL as a CLI argument. If you want your app to behave on Windows & Linux similar to the other platforms you can use the [single-instance](../single-instance/) plugin.
|
||||
Note that the Plugin will only emit events on macOS, iOS and Android. On Windows and Linux the OS will spawn a new instance of your app with the URL as a CLI argument. If you want your app to behave on Windows & Linux similar to the other platforms you can use the [single-instance](../single-instance/) plugin with the `deep-link` feature enabled.
|
||||
|
||||
## Contributing
|
||||
|
||||
|
||||
@@ -21,3 +21,5 @@ dist-ssr
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
dist/
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.1]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `deep-link-js@2.0.0-rc.2`
|
||||
|
||||
## \[2.0.0-rc.0]
|
||||
|
||||
### Dependencies
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "deep-link-example",
|
||||
"private": true,
|
||||
"version": "2.0.0-rc.0",
|
||||
"version": "2.0.0-rc.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
@@ -11,10 +11,10 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@tauri-apps/api": "2.0.0-rc.4",
|
||||
"@tauri-apps/plugin-deep-link": "2.0.0-rc.1"
|
||||
"@tauri-apps/plugin-deep-link": "2.0.0-rc.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tauri-apps/cli": "2.0.0-rc.12",
|
||||
"@tauri-apps/cli": "2.0.0-rc.14",
|
||||
"typescript": "^5.2.2",
|
||||
"vite": "^5.0.13"
|
||||
}
|
||||
|
||||
@@ -22,6 +22,9 @@ serde_json = { workspace = true }
|
||||
tauri = { workspace = true, features = ["wry", "compression"] }
|
||||
tauri-plugin-deep-link = { path = "../../../" }
|
||||
tauri-plugin-log = { path = "../../../../log" }
|
||||
tauri-plugin-single-instance = { path = "../../../../single-instance", features = [
|
||||
"deep-link",
|
||||
] }
|
||||
log = "0.4"
|
||||
|
||||
[features]
|
||||
|
||||
@@ -41,15 +41,6 @@
|
||||
<data android:host="tauri.app" />
|
||||
|
||||
</intent-filter>
|
||||
<intent-filter android:autoVerify="true">
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="http" />
|
||||
<data android:scheme="https" />
|
||||
<data android:host="91f4-177-23-156-161.ngrok-free.app" />
|
||||
<data android:pathPrefix="/open" />
|
||||
</intent-filter>
|
||||
<!-- DEEP LINK PLUGIN. AUTO-GENERATED. DO NOT REMOVE. -->
|
||||
</activity>
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.0.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.0.0</string>
|
||||
<string>0.1.0</string>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
|
||||
-1
@@ -6,7 +6,6 @@
|
||||
<array>
|
||||
<string>applinks:fabianlars.de</string>
|
||||
<string>applinks:tauri.app</string>
|
||||
<string>applinks:91f4-177-23-156-161.ngrok-free.app</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -2,17 +2,27 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
use tauri::Listener;
|
||||
use tauri_plugin_deep_link::DeepLinkExt;
|
||||
|
||||
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
|
||||
#[tauri::command]
|
||||
fn greet(name: &str) -> String {
|
||||
format!("Hello, {}! You've been greeted from Rust!", name)
|
||||
format!("Hello, {name}! You've been greeted from Rust!")
|
||||
}
|
||||
|
||||
#[cfg_attr(mobile, tauri::mobile_entry_point)]
|
||||
pub fn run() {
|
||||
tauri::Builder::default()
|
||||
#[allow(unused_mut)]
|
||||
let mut builder = tauri::Builder::default();
|
||||
|
||||
#[cfg(desktop)]
|
||||
{
|
||||
builder = builder.plugin(tauri_plugin_single_instance::init(|_app, argv, _cwd| {
|
||||
println!("single instance triggered: {argv:?}");
|
||||
}));
|
||||
}
|
||||
|
||||
builder
|
||||
.plugin(tauri_plugin_deep_link::init())
|
||||
.plugin(
|
||||
tauri_plugin_log::Builder::default()
|
||||
@@ -20,9 +30,17 @@ pub fn run() {
|
||||
.build(),
|
||||
)
|
||||
.setup(|app| {
|
||||
app.listen("deep-link://new-url", |url| {
|
||||
dbg!(url);
|
||||
// ensure deep links are registered on the system
|
||||
// this is useful because AppImages requires additional setup to be available in the system
|
||||
// and calling register() makes the deep links immediately available - without any user input
|
||||
// additionally, we manually register on Windows on debug builds for development
|
||||
#[cfg(any(target_os = "linux", all(debug_assertions, windows)))]
|
||||
app.deep_link().register_all()?;
|
||||
|
||||
app.deep_link().on_open_url(|event| {
|
||||
dbg!(event.urls());
|
||||
});
|
||||
|
||||
Ok(())
|
||||
})
|
||||
.invoke_handler(tauri::generate_handler![greet])
|
||||
|
||||
@@ -29,8 +29,13 @@
|
||||
},
|
||||
"deep-link": {
|
||||
"mobile": [
|
||||
{ "host": "fabianlars.de", "pathPrefix": ["/intent"] },
|
||||
{ "host": "tauri.app" }
|
||||
{
|
||||
"host": "fabianlars.de",
|
||||
"pathPrefix": ["/intent"]
|
||||
},
|
||||
{
|
||||
"host": "tauri.app"
|
||||
}
|
||||
],
|
||||
"desktop": {
|
||||
"schemes": ["fabianlars", "my-tauri-app"]
|
||||
|
||||
@@ -14,7 +14,9 @@ import { type UnlistenFn, listen } from '@tauri-apps/api/event'
|
||||
* const urls = await getCurrent();
|
||||
* ```
|
||||
*
|
||||
* #### - **Windows / Linux**: Unsupported.
|
||||
* #### - **Windows / Linux**: This function reads the command line arguments and checks if there's only one value, which must be an URL with scheme matching one of the configured values.
|
||||
* Note that you must manually check the arguments when registering deep link schemes dynamically with [`Self::register`].
|
||||
* Additionally, the deep link might have been provided as a CLI argument so you should check if its format matches what you expect..
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@tauri-apps/plugin-deep-link",
|
||||
"version": "2.0.0-rc.1",
|
||||
"version": "2.0.0-rc.2",
|
||||
"description": "Set your Tauri application as the default handler for an URL",
|
||||
"license": "MIT or APACHE-2.0",
|
||||
"authors": [
|
||||
|
||||
@@ -295,67 +295,49 @@
|
||||
"type": "string",
|
||||
"oneOf": [
|
||||
{
|
||||
"description": "allow-get-current -> Enables the get_current command without any pre-configured scope.",
|
||||
"description": "Enables the get_current command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-get-current"
|
||||
]
|
||||
"const": "allow-get-current"
|
||||
},
|
||||
{
|
||||
"description": "deny-get-current -> Denies the get_current command without any pre-configured scope.",
|
||||
"description": "Denies the get_current command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-get-current"
|
||||
]
|
||||
"const": "deny-get-current"
|
||||
},
|
||||
{
|
||||
"description": "allow-is-registered -> Enables the is_registered command without any pre-configured scope.",
|
||||
"description": "Enables the is_registered command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-is-registered"
|
||||
]
|
||||
"const": "allow-is-registered"
|
||||
},
|
||||
{
|
||||
"description": "deny-is-registered -> Denies the is_registered command without any pre-configured scope.",
|
||||
"description": "Denies the is_registered command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-is-registered"
|
||||
]
|
||||
"const": "deny-is-registered"
|
||||
},
|
||||
{
|
||||
"description": "allow-register -> Enables the register command without any pre-configured scope.",
|
||||
"description": "Enables the register command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-register"
|
||||
]
|
||||
"const": "allow-register"
|
||||
},
|
||||
{
|
||||
"description": "deny-register -> Denies the register command without any pre-configured scope.",
|
||||
"description": "Denies the register command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-register"
|
||||
]
|
||||
"const": "deny-register"
|
||||
},
|
||||
{
|
||||
"description": "allow-unregister -> Enables the unregister command without any pre-configured scope.",
|
||||
"description": "Enables the unregister command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-unregister"
|
||||
]
|
||||
"const": "allow-unregister"
|
||||
},
|
||||
{
|
||||
"description": "deny-unregister -> Denies the unregister command without any pre-configured scope.",
|
||||
"description": "Denies the unregister command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-unregister"
|
||||
]
|
||||
"const": "deny-unregister"
|
||||
},
|
||||
{
|
||||
"description": "default -> Allows reading the opened deep link via the get_current command",
|
||||
"description": "Allows reading the opened deep link via the get_current command",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"default"
|
||||
]
|
||||
"const": "default"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
use serde::{Deserialize, Deserializer};
|
||||
use tauri_utils::config::DeepLinkProtocol;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[derive(Deserialize, Clone)]
|
||||
pub struct AssociatedDomain {
|
||||
#[serde(deserialize_with = "deserialize_associated_host")]
|
||||
pub host: String,
|
||||
@@ -29,7 +29,7 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[derive(Deserialize, Clone)]
|
||||
pub struct Config {
|
||||
/// Mobile requires `https://<host>` urls.
|
||||
#[serde(default)]
|
||||
@@ -41,7 +41,7 @@ pub struct Config {
|
||||
pub desktop: DesktopProtocol,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
#[derive(Deserialize, Clone)]
|
||||
#[serde(untagged)]
|
||||
#[allow(unused)] // Used in tauri-bundler
|
||||
pub enum DesktopProtocol {
|
||||
@@ -54,3 +54,26 @@ impl Default for DesktopProtocol {
|
||||
Self::List(Vec::new())
|
||||
}
|
||||
}
|
||||
|
||||
impl DesktopProtocol {
|
||||
#[allow(dead_code)]
|
||||
pub fn contains_scheme(&self, scheme: &String) -> bool {
|
||||
match self {
|
||||
Self::One(protocol) => protocol.schemes.contains(scheme),
|
||||
Self::List(protocols) => protocols
|
||||
.iter()
|
||||
.any(|protocol| protocol.schemes.contains(scheme)),
|
||||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn schemes(&self) -> Vec<String> {
|
||||
match self {
|
||||
Self::One(protocol) => protocol.schemes.clone(),
|
||||
Self::List(protocols) => protocols
|
||||
.iter()
|
||||
.flat_map(|protocol| protocol.schemes.clone())
|
||||
.collect(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+145
-19
@@ -2,10 +2,11 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
use serde::de::DeserializeOwned;
|
||||
use std::sync::Arc;
|
||||
|
||||
use tauri::{
|
||||
plugin::{Builder, PluginApi, TauriPlugin},
|
||||
AppHandle, Manager, Runtime,
|
||||
AppHandle, EventId, Listener, Manager, Runtime,
|
||||
};
|
||||
|
||||
mod commands;
|
||||
@@ -17,12 +18,14 @@ pub use error::{Error, Result};
|
||||
#[cfg(target_os = "android")]
|
||||
const PLUGIN_IDENTIFIER: &str = "app.tauri.deep_link";
|
||||
|
||||
fn init_deep_link<R: Runtime, C: DeserializeOwned>(
|
||||
fn init_deep_link<R: Runtime>(
|
||||
app: &AppHandle<R>,
|
||||
_api: PluginApi<R, C>,
|
||||
api: PluginApi<R, Option<config::Config>>,
|
||||
) -> crate::Result<DeepLink<R>> {
|
||||
#[cfg(target_os = "android")]
|
||||
{
|
||||
let _api = api;
|
||||
|
||||
use tauri::{
|
||||
ipc::{Channel, InvokeResponseBody},
|
||||
Emitter,
|
||||
@@ -56,22 +59,38 @@ fn init_deep_link<R: Runtime, C: DeserializeOwned>(
|
||||
},
|
||||
)?;
|
||||
|
||||
return Ok(DeepLink(handle));
|
||||
return Ok(DeepLink {
|
||||
app: app.clone(),
|
||||
plugin_handle: handle,
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(not(target_os = "android"))]
|
||||
Ok(DeepLink {
|
||||
#[cfg(target_os = "ios")]
|
||||
return Ok(DeepLink {
|
||||
app: app.clone(),
|
||||
current: Default::default(),
|
||||
})
|
||||
config: api.config().clone(),
|
||||
});
|
||||
|
||||
#[cfg(desktop)]
|
||||
{
|
||||
let args = std::env::args();
|
||||
let deep_link = DeepLink {
|
||||
app: app.clone(),
|
||||
current: Default::default(),
|
||||
config: api.config().clone(),
|
||||
};
|
||||
deep_link.handle_cli_arguments(args);
|
||||
|
||||
Ok(deep_link)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "android")]
|
||||
mod imp {
|
||||
use tauri::{plugin::PluginHandle, Runtime};
|
||||
use tauri::{ipc::Channel, plugin::PluginHandle, AppHandle, Runtime};
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tauri::ipc::Channel;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
@@ -86,16 +105,21 @@ mod imp {
|
||||
}
|
||||
|
||||
/// Access to the deep-link APIs.
|
||||
pub struct DeepLink<R: Runtime>(pub(crate) PluginHandle<R>);
|
||||
pub struct DeepLink<R: Runtime> {
|
||||
pub(crate) app: AppHandle<R>,
|
||||
pub(crate) plugin_handle: PluginHandle<R>,
|
||||
}
|
||||
|
||||
impl<R: Runtime> DeepLink<R> {
|
||||
/// Get the current URLs that triggered the deep link. Use this on app load to check whether your app was started via a deep link.
|
||||
///
|
||||
/// ## Platform-specific:
|
||||
///
|
||||
/// - **Windows / Linux**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
|
||||
/// - **Windows / Linux**: This function reads the command line arguments and checks if there's only one value, which must be an URL with scheme matching one of the configured values.
|
||||
/// Note that you must manually check the arguments when registering deep link schemes dynamically with [`Self::register`].
|
||||
/// Additionally, the deep link might have been provided as a CLI argument so you should check if its format matches what you expect.
|
||||
pub fn get_current(&self) -> crate::Result<Option<Vec<url::Url>>> {
|
||||
self.0
|
||||
self.plugin_handle
|
||||
.run_mobile_plugin::<GetCurrentResponse>("getCurrent", ())
|
||||
.map(|v| v.url.map(|url| vec![url]))
|
||||
.map_err(Into::into)
|
||||
@@ -154,23 +178,76 @@ mod imp {
|
||||
|
||||
/// Access to the deep-link APIs.
|
||||
pub struct DeepLink<R: Runtime> {
|
||||
#[allow(dead_code)]
|
||||
pub(crate) app: AppHandle<R>,
|
||||
#[allow(dead_code)]
|
||||
pub(crate) current: Mutex<Option<Vec<url::Url>>>,
|
||||
pub(crate) config: Option<crate::config::Config>,
|
||||
}
|
||||
|
||||
impl<R: Runtime> DeepLink<R> {
|
||||
/// Checks if the provided list of arguments (which should match [`std::env::args`])
|
||||
/// contains a deep link argument (for Linux and Windows).
|
||||
///
|
||||
/// On Linux and Windows the deep links trigger a new app instance with the deep link URL as its only argument.
|
||||
///
|
||||
/// This function does what it can to verify if the argument is actually a deep link, though it could also be a regular CLI argument.
|
||||
/// To enhance its checks, we only match deep links against the schemes defined in the Tauri configuration
|
||||
/// i.e. dynamic schemes WON'T be processed.
|
||||
///
|
||||
/// This function updates the [`Self::get_current`] value and emits a `deep-link://new-url` event.
|
||||
#[cfg(desktop)]
|
||||
pub fn handle_cli_arguments<S: AsRef<str>, I: Iterator<Item = S>>(&self, mut args: I) {
|
||||
use tauri::Emitter;
|
||||
|
||||
let Some(config) = &self.config else {
|
||||
return;
|
||||
};
|
||||
|
||||
if cfg!(windows) || cfg!(target_os = "linux") {
|
||||
args.next(); // bin name
|
||||
let arg = args.next();
|
||||
|
||||
let maybe_deep_link = args.next().is_none(); // single argument
|
||||
if !maybe_deep_link {
|
||||
return;
|
||||
}
|
||||
|
||||
if let Some(url) = arg.and_then(|arg| arg.as_ref().parse::<url::Url>().ok()) {
|
||||
if config.desktop.contains_scheme(&url.scheme().to_string()) {
|
||||
let mut current = self.current.lock().unwrap();
|
||||
current.replace(vec![url.clone()]);
|
||||
let _ = self.app.emit("deep-link://new-url", vec![url]);
|
||||
} else if cfg!(debug_assertions) {
|
||||
log::warn!("argument {url} does not match any configured deep link scheme; skipping it");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Get the current URLs that triggered the deep link. Use this on app load to check whether your app was started via a deep link.
|
||||
///
|
||||
/// ## Platform-specific:
|
||||
///
|
||||
/// - **Windows / Linux**: Unsupported, will return [`Error::UnsupportedPlatform`](`crate::Error::UnsupportedPlatform`).
|
||||
/// - **Windows / Linux**: This function reads the command line arguments and checks if there's only one value, which must be an URL with scheme matching one of the configured values.
|
||||
/// Note that you must manually check the arguments when registering deep link schemes dynamically with [`Self::register`].
|
||||
/// Additionally, the deep link might have been provided as a CLI argument so you should check if its format matches what you expect.
|
||||
pub fn get_current(&self) -> crate::Result<Option<Vec<url::Url>>> {
|
||||
#[cfg(not(any(windows, target_os = "linux")))]
|
||||
return Ok(self.current.lock().unwrap().clone());
|
||||
#[cfg(any(windows, target_os = "linux"))]
|
||||
Err(crate::Error::UnsupportedPlatform)
|
||||
}
|
||||
|
||||
/// Registers all schemes defined in the configuration file.
|
||||
///
|
||||
/// This is useful to ensure the schemes are registered even if the user did not install the app properly
|
||||
/// (e.g. an AppImage that was not properly registered with an AppImage launcher).
|
||||
pub fn register_all(&self) -> crate::Result<()> {
|
||||
let Some(config) = &self.config else {
|
||||
return Ok(());
|
||||
};
|
||||
|
||||
for scheme in config.desktop.schemes() {
|
||||
self.register(scheme)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Register the app as the default handler for the specified protocol.
|
||||
@@ -367,6 +444,7 @@ mod imp {
|
||||
}
|
||||
|
||||
pub use imp::DeepLink;
|
||||
use url::Url;
|
||||
|
||||
/// Extensions to [`tauri::App`], [`tauri::AppHandle`], [`tauri::WebviewWindow`], [`tauri::Webview`] and [`tauri::Window`] to access the deep-link APIs.
|
||||
pub trait DeepLinkExt<R: Runtime> {
|
||||
@@ -379,6 +457,54 @@ impl<R: Runtime, T: Manager<R>> crate::DeepLinkExt<R> for T {
|
||||
}
|
||||
}
|
||||
|
||||
/// Event that is triggered when the app was requested to open a new URL.
|
||||
///
|
||||
/// Typed [`tauri::Event`].
|
||||
pub struct OpenUrlEvent {
|
||||
id: EventId,
|
||||
urls: Vec<Url>,
|
||||
}
|
||||
|
||||
impl OpenUrlEvent {
|
||||
/// The event ID which can be used to stop listening to the event via [`tauri::Listener::unlisten`].
|
||||
pub fn id(&self) -> EventId {
|
||||
self.id
|
||||
}
|
||||
|
||||
/// The event URLs.
|
||||
pub fn urls(self) -> Vec<Url> {
|
||||
self.urls
|
||||
}
|
||||
}
|
||||
|
||||
impl<R: Runtime> DeepLink<R> {
|
||||
/// Handle a new deep link being triggered to open the app.
|
||||
///
|
||||
/// To avoid race conditions, if the app was started with a deep link,
|
||||
/// the closure gets immediately called with the deep link URL.
|
||||
pub fn on_open_url<F: Fn(OpenUrlEvent) + Send + Sync + 'static>(&self, f: F) -> EventId {
|
||||
let f = Arc::new(f);
|
||||
let f_ = f.clone();
|
||||
let event_id = self.app.listen("deep-link://new-url", move |event| {
|
||||
if let Ok(urls) = serde_json::from_str(event.payload()) {
|
||||
f(OpenUrlEvent {
|
||||
id: event.id(),
|
||||
urls,
|
||||
})
|
||||
}
|
||||
});
|
||||
|
||||
if let Ok(Some(current)) = self.get_current() {
|
||||
f_(OpenUrlEvent {
|
||||
id: event_id,
|
||||
urls: current,
|
||||
})
|
||||
}
|
||||
|
||||
event_id
|
||||
}
|
||||
}
|
||||
|
||||
/// Initializes the plugin.
|
||||
pub fn init<R: Runtime>() -> TauriPlugin<R, Option<config::Config>> {
|
||||
Builder::new("deep-link")
|
||||
|
||||
@@ -1,5 +1,19 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.7]
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `fs@2.0.0-rc.5`
|
||||
|
||||
## \[2.0.0-rc.6]
|
||||
|
||||
- [`2b898f07`](https://github.com/tauri-apps/plugins-workspace/commit/2b898f078688c57309ca17962bf02e665c406514) ([#1769](https://github.com/tauri-apps/plugins-workspace/pull/1769) by [@lucasfernog](https://github.com/tauri-apps/plugins-workspace/../../lucasfernog)) Update Tauri scopes (asset protocol) when using the `open()` command to select directories.
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Upgraded to `fs@2.0.0-rc.4`
|
||||
|
||||
## \[2.0.0-rc.5]
|
||||
|
||||
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add utility methods on `FilePath` and `SafeFilePath` enums which are:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-dialog"
|
||||
version = "2.0.0-rc.5"
|
||||
version = "2.0.0-rc.7"
|
||||
description = "Native system dialogs for opening and saving files along with message dialogs on your Tauri application."
|
||||
edition = { workspace = true }
|
||||
authors = { workspace = true }
|
||||
@@ -27,7 +27,7 @@ tauri = { workspace = true }
|
||||
log = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
url = { workspace = true }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.0.0-rc.3" }
|
||||
tauri-plugin-fs = { path = "../fs", version = "2.0.0-rc.5" }
|
||||
|
||||
[target.'cfg(target_os = "ios")'.dependencies]
|
||||
tauri = { workspace = true, features = ["wry"] }
|
||||
|
||||
@@ -295,81 +295,59 @@
|
||||
"type": "string",
|
||||
"oneOf": [
|
||||
{
|
||||
"description": "allow-ask -> Enables the ask command without any pre-configured scope.",
|
||||
"description": "Enables the ask command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-ask"
|
||||
]
|
||||
"const": "allow-ask"
|
||||
},
|
||||
{
|
||||
"description": "deny-ask -> Denies the ask command without any pre-configured scope.",
|
||||
"description": "Denies the ask command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-ask"
|
||||
]
|
||||
"const": "deny-ask"
|
||||
},
|
||||
{
|
||||
"description": "allow-confirm -> Enables the confirm command without any pre-configured scope.",
|
||||
"description": "Enables the confirm command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-confirm"
|
||||
]
|
||||
"const": "allow-confirm"
|
||||
},
|
||||
{
|
||||
"description": "deny-confirm -> Denies the confirm command without any pre-configured scope.",
|
||||
"description": "Denies the confirm command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-confirm"
|
||||
]
|
||||
"const": "deny-confirm"
|
||||
},
|
||||
{
|
||||
"description": "allow-message -> Enables the message command without any pre-configured scope.",
|
||||
"description": "Enables the message command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-message"
|
||||
]
|
||||
"const": "allow-message"
|
||||
},
|
||||
{
|
||||
"description": "deny-message -> Denies the message command without any pre-configured scope.",
|
||||
"description": "Denies the message command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-message"
|
||||
]
|
||||
"const": "deny-message"
|
||||
},
|
||||
{
|
||||
"description": "allow-open -> Enables the open command without any pre-configured scope.",
|
||||
"description": "Enables the open command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-open"
|
||||
]
|
||||
"const": "allow-open"
|
||||
},
|
||||
{
|
||||
"description": "deny-open -> Denies the open command without any pre-configured scope.",
|
||||
"description": "Denies the open command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-open"
|
||||
]
|
||||
"const": "deny-open"
|
||||
},
|
||||
{
|
||||
"description": "allow-save -> Enables the save command without any pre-configured scope.",
|
||||
"description": "Enables the save command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-save"
|
||||
]
|
||||
"const": "allow-save"
|
||||
},
|
||||
{
|
||||
"description": "deny-save -> Denies the save command without any pre-configured scope.",
|
||||
"description": "Denies the save command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-save"
|
||||
]
|
||||
"const": "deny-save"
|
||||
},
|
||||
{
|
||||
"description": "default -> This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n",
|
||||
"description": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"default"
|
||||
]
|
||||
"const": "default"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -132,14 +132,17 @@ pub(crate) async fn open<R: Runtime>(
|
||||
let res = if options.directory {
|
||||
#[cfg(desktop)]
|
||||
{
|
||||
let tauri_scope = window.state::<tauri::scope::Scopes>();
|
||||
|
||||
if options.multiple {
|
||||
let folders = dialog_builder.blocking_pick_folders();
|
||||
if let Some(folders) = &folders {
|
||||
for folder in folders {
|
||||
if let Ok(path) = folder.clone().into_path() {
|
||||
if let Some(s) = window.try_fs_scope() {
|
||||
s.allow_directory(path, options.recursive);
|
||||
s.allow_directory(&path, options.recursive);
|
||||
}
|
||||
tauri_scope.allow_directory(&path, options.directory)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -151,8 +154,9 @@ pub(crate) async fn open<R: Runtime>(
|
||||
if let Some(folder) = &folder {
|
||||
if let Ok(path) = folder.clone().into_path() {
|
||||
if let Some(s) = window.try_fs_scope() {
|
||||
s.allow_directory(path, options.recursive);
|
||||
s.allow_directory(&path, options.recursive);
|
||||
}
|
||||
tauri_scope.allow_directory(&path, options.directory)?;
|
||||
}
|
||||
}
|
||||
OpenResponse::Folder(folder.map(|p| p.simplified()))
|
||||
@@ -161,6 +165,8 @@ pub(crate) async fn open<R: Runtime>(
|
||||
#[cfg(mobile)]
|
||||
return Err(crate::Error::FolderPickerNotImplemented);
|
||||
} else if options.multiple {
|
||||
let tauri_scope = window.state::<tauri::scope::Scopes>();
|
||||
|
||||
let files = dialog_builder.blocking_pick_files();
|
||||
if let Some(files) = &files {
|
||||
for file in files {
|
||||
@@ -169,12 +175,13 @@ pub(crate) async fn open<R: Runtime>(
|
||||
s.allow_file(&path);
|
||||
}
|
||||
|
||||
window.state::<tauri::scope::Scopes>().allow_file(&path)?;
|
||||
tauri_scope.allow_file(&path)?;
|
||||
}
|
||||
}
|
||||
}
|
||||
OpenResponse::Files(files.map(|files| files.into_iter().map(|f| f.simplified()).collect()))
|
||||
} else {
|
||||
let tauri_scope = window.state::<tauri::scope::Scopes>();
|
||||
let file = dialog_builder.blocking_pick_file();
|
||||
|
||||
if let Some(file) = &file {
|
||||
@@ -182,7 +189,7 @@ pub(crate) async fn open<R: Runtime>(
|
||||
if let Some(s) = window.try_fs_scope() {
|
||||
s.allow_file(&path);
|
||||
}
|
||||
window.state::<tauri::scope::Scopes>().allow_file(&path)?;
|
||||
tauri_scope.allow_file(&path)?;
|
||||
}
|
||||
}
|
||||
OpenResponse::File(file.map(|f| f.simplified()))
|
||||
@@ -216,13 +223,15 @@ pub(crate) async fn save<R: Runtime>(
|
||||
dialog_builder = dialog_builder.add_filter(filter.name, &extensions);
|
||||
}
|
||||
|
||||
let tauri_scope = window.state::<tauri::scope::Scopes>();
|
||||
|
||||
let path = dialog_builder.blocking_save_file();
|
||||
if let Some(p) = &path {
|
||||
if let Ok(path) = p.clone().into_path() {
|
||||
if let Some(s) = window.try_fs_scope() {
|
||||
s.allow_file(&path);
|
||||
}
|
||||
window.state::<tauri::scope::Scopes>().allow_file(&path)?;
|
||||
tauri_scope.allow_file(&path)?;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# Changelog
|
||||
|
||||
## \[2.0.0-rc.5]
|
||||
|
||||
- [`cc03ccf5`](https://github.com/tauri-apps/plugins-workspace/commit/cc03ccf5e0e4be8bbf50bbdebe957c84be7f779b) ([#1774](https://github.com/tauri-apps/plugins-workspace/pull/1774)) Fix `scope-app`, `scope-app-recursive` and `scope-index` not properly enabling the application paths.
|
||||
|
||||
## \[2.0.0-rc.4]
|
||||
|
||||
- [`9291e4d2`](https://github.com/tauri-apps/plugins-workspace/commit/9291e4d2caa31c883c71e55f2193bd8754d72f03) ([#1640](https://github.com/tauri-apps/plugins-workspace/pull/1640) by [@SRutile](https://github.com/tauri-apps/plugins-workspace/../../SRutile)) Support any UTF-8 character in the writeFile API.
|
||||
|
||||
## \[2.0.0-rc.3]
|
||||
|
||||
- [`a2fe5551`](https://github.com/tauri-apps/plugins-workspace/commit/a2fe55512f908dd11c814ce021d164f01677572a) ([#1727](https://github.com/tauri-apps/plugins-workspace/pull/1727) by [@amrbashir](https://github.com/tauri-apps/plugins-workspace/../../amrbashir)) Add utility methods on `FilePath` and `SafeFilePath` enums which are:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tauri-plugin-fs"
|
||||
version = "2.0.0-rc.3"
|
||||
version = "2.0.0-rc.5"
|
||||
description = "Access the file system."
|
||||
authors = { workspace = true }
|
||||
license = { workspace = true }
|
||||
@@ -31,6 +31,7 @@ glob = "0.3"
|
||||
notify = { version = "6", optional = true, features = ["serde"] }
|
||||
notify-debouncer-full = { version = "0.3", optional = true }
|
||||
dunce = { workspace = true }
|
||||
percent-encoding = "2"
|
||||
|
||||
[features]
|
||||
watch = ["notify", "notify-debouncer-full"]
|
||||
|
||||
File diff suppressed because one or more lines are too long
+1
-2
@@ -52,7 +52,6 @@ const BASE_DIR_VARS: &[&str] = &[
|
||||
"TEMPLATE",
|
||||
"VIDEO",
|
||||
"RESOURCE",
|
||||
"APP",
|
||||
"LOG",
|
||||
"TEMP",
|
||||
"APPCONFIG",
|
||||
@@ -118,7 +117,7 @@ path = "${upper}/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-{lower}"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `${upper}`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `${upper}` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "${upper}"
|
||||
|
||||
@@ -270,7 +270,7 @@ class FileHandle extends Resource {
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { open, BaseDirectory } from "@tauri-apps/plugin-fs"
|
||||
* // if "$APP/foo/bar.txt" contains the text "hello world":
|
||||
* // if "$APPCONFIG/foo/bar.txt" contains the text "hello world":
|
||||
* const file = await open("foo/bar.txt", { baseDir: BaseDirectory.AppConfig });
|
||||
* const buf = new Uint8Array(100);
|
||||
* const numberOfBytesRead = await file.read(buf); // 11 bytes
|
||||
@@ -1015,7 +1015,7 @@ async function writeFile(
|
||||
|
||||
await invoke('plugin:fs|write_file', data, {
|
||||
headers: {
|
||||
path: path instanceof URL ? path.toString() : path,
|
||||
path: encodeURIComponent(path instanceof URL ? path.toString() : path),
|
||||
options: JSON.stringify(options)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
"$schema" = "schemas/schema.json"
|
||||
|
||||
# Scopes Section
|
||||
# This section contains scopes, which define file level access
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-app-recursive"
|
||||
description = "This scope permits recursive access to the complete application folders, including sub directories and files."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCONFIG"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCONFIG/**"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPDATA"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPDATA/**"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOCALDATA"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOCALDATA/**"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCACHE"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCACHE/**"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOG"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOG/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-app"
|
||||
description = "This scope permits access to all files and list content of top level directories in the application folders."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCONFIG"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCONFIG/*"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPDATA"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPDATA/*"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOCALDATA"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOCALDATA/*"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCACHE"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCACHE/*"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOG"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOG/*"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-app-index"
|
||||
description = "This scope permits to list all files and folders in the application directories."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCONFIG"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPDATA"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOCALDATA"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCACHE"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOG"
|
||||
|
||||
# Sets Section
|
||||
# This section combines the scope elements with enablement of commands
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-read-recursive"
|
||||
description = "This allows full recursive read access to the complete application folders, files and subdirectories."
|
||||
permissions = ["read-all", "scope-app-recursive"]
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-write-recursive"
|
||||
description = "This allows full recursive write access to the complete application folders, files and subdirectories."
|
||||
permissions = ["write-all", "scope-app-recursive"]
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-read"
|
||||
description = "This allows non-recursive read access to the application folders."
|
||||
permissions = ["read-all", "scope-app"]
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-write"
|
||||
description = "This allows non-recursive write access to the application folders."
|
||||
permissions = ["write-all", "scope-app"]
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-meta-recursive"
|
||||
description = "This allows full recursive read access to metadata of the application folders, including file listing and statistics."
|
||||
permissions = ["read-meta", "scope-app-recursive"]
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-meta"
|
||||
description = "This allows non-recursive read access to metadata of the application folders, including file listing and statistics."
|
||||
permissions = ["read-meta", "scope-app-index"]
|
||||
@@ -1,82 +0,0 @@
|
||||
# Automatically generated - DO NOT EDIT!
|
||||
|
||||
"$schema" = "../../schemas/schema.json"
|
||||
|
||||
# Scopes Section
|
||||
# This section contains scopes, which define file level access
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-app-recursive"
|
||||
description = "This scope permits recursive access to the complete `$APP` folder, including sub directories and files."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APP"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APP/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-app"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APP`folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APP"
|
||||
[[permission.scope.allow]]
|
||||
path = "$APP/*"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-app-index"
|
||||
description = "This scope permits to list all files and folders in the `$APP`folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APP"
|
||||
|
||||
# Sets Section
|
||||
# This section combines the scope elements with enablement of commands
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-read-recursive"
|
||||
description = "This allows full recursive read access to the complete `$APP` folder, files and subdirectories."
|
||||
permissions = [
|
||||
"read-all",
|
||||
"scope-app-recursive"
|
||||
]
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-write-recursive"
|
||||
description = "This allows full recursive write access to the complete `$APP` folder, files and subdirectories."
|
||||
permissions = [
|
||||
"write-all",
|
||||
"scope-app-recursive"
|
||||
]
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-read"
|
||||
description = "This allows non-recursive read access to the `$APP` folder."
|
||||
permissions = [
|
||||
"read-all",
|
||||
"scope-app"
|
||||
]
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-write"
|
||||
description = "This allows non-recursive write access to the `$APP` folder."
|
||||
permissions = [
|
||||
"write-all",
|
||||
"scope-app"
|
||||
]
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-meta-recursive"
|
||||
description = "This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-app-recursive"
|
||||
]
|
||||
|
||||
[[set]]
|
||||
identifier = "allow-app-meta"
|
||||
description = "This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics."
|
||||
permissions = [
|
||||
"read-meta",
|
||||
"scope-app-index"
|
||||
]
|
||||
@@ -16,7 +16,7 @@ path = "$APPCACHE/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-appcache"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCACHE"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$APPCONFIG/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-appconfig"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCONFIG"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$APPDATA/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-appdata"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APPDATA`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APPDATA` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPDATA"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$APPLOCALDATA/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-applocaldata"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOCALDATA"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$APPLOG/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-applog"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APPLOG`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$APPLOG` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOG"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$AUDIO/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-audio"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$AUDIO`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$AUDIO` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$AUDIO"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$CACHE/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-cache"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$CACHE`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$CACHE` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$CACHE"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$CONFIG/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-config"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$CONFIG`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$CONFIG` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$CONFIG"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$DATA/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-data"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$DATA`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$DATA` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$DATA"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$DESKTOP/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-desktop"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$DESKTOP"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$DOCUMENT/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-document"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$DOCUMENT"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$DOWNLOAD/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-download"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$DOWNLOAD"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$EXE/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-exe"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$EXE`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$EXE` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$EXE"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$FONT/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-font"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$FONT`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$FONT` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$FONT"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$HOME/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-home"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$HOME`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$HOME` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$HOME"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$LOCALDATA/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-localdata"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$LOCALDATA"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$LOG/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-log"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$LOG`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$LOG` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$LOG"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$PICTURE/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-picture"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$PICTURE`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$PICTURE` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$PICTURE"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$PUBLIC/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-public"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$PUBLIC"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$RESOURCE/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-resource"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$RESOURCE"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$RUNTIME/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-runtime"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$RUNTIME"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$TEMP/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-temp"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$TEMP`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$TEMP` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$TEMP"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$TEMPLATE/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-template"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$TEMPLATE"
|
||||
|
||||
@@ -16,7 +16,7 @@ path = "$VIDEO/**"
|
||||
|
||||
[[permission]]
|
||||
identifier = "scope-video"
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$VIDEO`folder."
|
||||
description = "This scope permits access to all files and list content of top level directories in the `$VIDEO` folder."
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$VIDEO"
|
||||
|
||||
@@ -47,7 +47,7 @@ On Windows the webview data folder access is denied.
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This allows full recursive read access to the complete `$APP` folder, files and subdirectories.
|
||||
This allows full recursive read access to the complete application folders, files and subdirectories.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -60,7 +60,7 @@ This allows full recursive read access to the complete `$APP` folder, files and
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This allows full recursive write access to the complete `$APP` folder, files and subdirectories.
|
||||
This allows full recursive write access to the complete application folders, files and subdirectories.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -73,7 +73,7 @@ This allows full recursive write access to the complete `$APP` folder, files and
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This allows non-recursive read access to the `$APP` folder.
|
||||
This allows non-recursive read access to the application folders.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -86,7 +86,7 @@ This allows non-recursive read access to the `$APP` folder.
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This allows non-recursive write access to the `$APP` folder.
|
||||
This allows non-recursive write access to the application folders.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -99,7 +99,7 @@ This allows non-recursive write access to the `$APP` folder.
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.
|
||||
This allows full recursive read access to metadata of the application folders, including file listing and statistics.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -112,7 +112,7 @@ This allows full recursive read access to metadata of the `$APP` folder, includi
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.
|
||||
This allows non-recursive read access to metadata of the application folders, including file listing and statistics.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -125,7 +125,7 @@ This allows non-recursive read access to metadata of the `$APP` folder, includin
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits recursive access to the complete `$APP` folder, including sub directories and files.
|
||||
This scope permits recursive access to the complete application folders, including sub directories and files.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -138,7 +138,7 @@ This scope permits recursive access to the complete `$APP` folder, including sub
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$APP`folder.
|
||||
This scope permits access to all files and list content of top level directories in the application folders.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -151,7 +151,7 @@ This scope permits access to all files and list content of top level directories
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits to list all files and folders in the `$APP`folder.
|
||||
This scope permits to list all files and folders in the application directories.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -255,7 +255,7 @@ This scope permits recursive access to the complete `$APPCACHE` folder, includin
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$APPCACHE` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -372,7 +372,7 @@ This scope permits recursive access to the complete `$APPCONFIG` folder, includi
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$APPCONFIG` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -489,7 +489,7 @@ This scope permits recursive access to the complete `$APPDATA` folder, including
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$APPDATA` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -606,7 +606,7 @@ This scope permits recursive access to the complete `$APPLOCALDATA` folder, incl
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -723,7 +723,7 @@ This scope permits recursive access to the complete `$APPLOG` folder, including
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$APPLOG` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -840,7 +840,7 @@ This scope permits recursive access to the complete `$AUDIO` folder, including s
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$AUDIO` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -957,7 +957,7 @@ This scope permits recursive access to the complete `$CACHE` folder, including s
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$CACHE`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$CACHE` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1074,7 +1074,7 @@ This scope permits recursive access to the complete `$CONFIG` folder, including
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$CONFIG` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1191,7 +1191,7 @@ This scope permits recursive access to the complete `$DATA` folder, including su
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$DATA`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$DATA` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1308,7 +1308,7 @@ This scope permits recursive access to the complete `$DESKTOP` folder, including
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$DESKTOP` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1425,7 +1425,7 @@ This scope permits recursive access to the complete `$DOCUMENT` folder, includin
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$DOCUMENT` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1542,7 +1542,7 @@ This scope permits recursive access to the complete `$DOWNLOAD` folder, includin
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$DOWNLOAD` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1659,7 +1659,7 @@ This scope permits recursive access to the complete `$EXE` folder, including sub
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$EXE`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$EXE` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1776,7 +1776,7 @@ This scope permits recursive access to the complete `$FONT` folder, including su
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$FONT`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$FONT` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -1893,7 +1893,7 @@ This scope permits recursive access to the complete `$HOME` folder, including su
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$HOME`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$HOME` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2010,7 +2010,7 @@ This scope permits recursive access to the complete `$LOCALDATA` folder, includi
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$LOCALDATA` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2127,7 +2127,7 @@ This scope permits recursive access to the complete `$LOG` folder, including sub
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$LOG`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$LOG` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2244,7 +2244,7 @@ This scope permits recursive access to the complete `$PICTURE` folder, including
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$PICTURE` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2361,7 +2361,7 @@ This scope permits recursive access to the complete `$PUBLIC` folder, including
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$PUBLIC` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2478,7 +2478,7 @@ This scope permits recursive access to the complete `$RESOURCE` folder, includin
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$RESOURCE` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2595,7 +2595,7 @@ This scope permits recursive access to the complete `$RUNTIME` folder, including
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$RUNTIME` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2712,7 +2712,7 @@ This scope permits recursive access to the complete `$TEMP` folder, including su
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$TEMP`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$TEMP` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2829,7 +2829,7 @@ This scope permits recursive access to the complete `$TEMPLATE` folder, includin
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$TEMPLATE` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@@ -2946,7 +2946,7 @@ This scope permits recursive access to the complete `$VIDEO` folder, including s
|
||||
</td>
|
||||
<td>
|
||||
|
||||
This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.
|
||||
This scope permits access to all files and list content of top level directories in the `$VIDEO` folder.
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -5,19 +5,4 @@ identifier = "create-app-specific-dirs"
|
||||
description = """
|
||||
This permissions allows to create the application specific directories.
|
||||
"""
|
||||
commands.allow = ["mkdir"]
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCONFIG"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPDATA"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOCALDATA"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCACHE"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOG"
|
||||
commands.allow = ["mkdir", "scope-app-index"]
|
||||
|
||||
@@ -13,19 +13,5 @@ commands.allow = [
|
||||
"read_text_file_lines",
|
||||
"read_text_file_lines_next",
|
||||
"exists",
|
||||
"scope-app-recursive",
|
||||
]
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCONFIG/**"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPDATA/**"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOCALDATA/**"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPCACHE/**"
|
||||
|
||||
[[permission.scope.allow]]
|
||||
path = "$APPLOG/**"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -855,10 +855,11 @@ pub async fn write_file<R: Runtime>(
|
||||
.get("path")
|
||||
.ok_or_else(|| anyhow::anyhow!("missing file path").into())
|
||||
.and_then(|p| {
|
||||
p.to_str()
|
||||
.map_err(|e| anyhow::anyhow!("invalid path: {e}").into())
|
||||
percent_encoding::percent_decode(p.as_ref())
|
||||
.decode_utf8()
|
||||
.map_err(|_| anyhow::anyhow!("path is not a valid UTF-8").into())
|
||||
})
|
||||
.and_then(|p| SafeFilePath::from_str(p).map_err(CommandError::from))?;
|
||||
.and_then(|p| SafeFilePath::from_str(&p).map_err(CommandError::from))?;
|
||||
let options = request
|
||||
.headers()
|
||||
.get("options")
|
||||
|
||||
@@ -295,88 +295,64 @@
|
||||
"type": "string",
|
||||
"oneOf": [
|
||||
{
|
||||
"description": "allow-check-permissions -> Enables the check_permissions command without any pre-configured scope.",
|
||||
"description": "Enables the check_permissions command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-check-permissions"
|
||||
]
|
||||
"const": "allow-check-permissions"
|
||||
},
|
||||
{
|
||||
"description": "deny-check-permissions -> Denies the check_permissions command without any pre-configured scope.",
|
||||
"description": "Denies the check_permissions command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-check-permissions"
|
||||
]
|
||||
"const": "deny-check-permissions"
|
||||
},
|
||||
{
|
||||
"description": "allow-clear-permissions -> Enables the clear_permissions command without any pre-configured scope.",
|
||||
"description": "Enables the clear_permissions command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-clear-permissions"
|
||||
]
|
||||
"const": "allow-clear-permissions"
|
||||
},
|
||||
{
|
||||
"description": "deny-clear-permissions -> Denies the clear_permissions command without any pre-configured scope.",
|
||||
"description": "Denies the clear_permissions command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-clear-permissions"
|
||||
]
|
||||
"const": "deny-clear-permissions"
|
||||
},
|
||||
{
|
||||
"description": "allow-clear-positions -> Enables the clear_positions command without any pre-configured scope.",
|
||||
"description": "Enables the clear_positions command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-clear-positions"
|
||||
]
|
||||
"const": "allow-clear-positions"
|
||||
},
|
||||
{
|
||||
"description": "deny-clear-positions -> Denies the clear_positions command without any pre-configured scope.",
|
||||
"description": "Denies the clear_positions command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-clear-positions"
|
||||
]
|
||||
"const": "deny-clear-positions"
|
||||
},
|
||||
{
|
||||
"description": "allow-clear-watch -> Enables the clear_watch command without any pre-configured scope.",
|
||||
"description": "Enables the clear_watch command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-clear-watch"
|
||||
]
|
||||
"const": "allow-clear-watch"
|
||||
},
|
||||
{
|
||||
"description": "deny-clear-watch -> Denies the clear_watch command without any pre-configured scope.",
|
||||
"description": "Denies the clear_watch command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-clear-watch"
|
||||
]
|
||||
"const": "deny-clear-watch"
|
||||
},
|
||||
{
|
||||
"description": "allow-get-current-position -> Enables the get_current_position command without any pre-configured scope.",
|
||||
"description": "Enables the get_current_position command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-get-current-position"
|
||||
]
|
||||
"const": "allow-get-current-position"
|
||||
},
|
||||
{
|
||||
"description": "deny-get-current-position -> Denies the get_current_position command without any pre-configured scope.",
|
||||
"description": "Denies the get_current_position command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-get-current-position"
|
||||
]
|
||||
"const": "deny-get-current-position"
|
||||
},
|
||||
{
|
||||
"description": "allow-watch-position -> Enables the watch_position command without any pre-configured scope.",
|
||||
"description": "Enables the watch_position command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"allow-watch-position"
|
||||
]
|
||||
"const": "allow-watch-position"
|
||||
},
|
||||
{
|
||||
"description": "deny-watch-position -> Denies the watch_position command without any pre-configured scope.",
|
||||
"description": "Denies the watch_position command without any pre-configured scope.",
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"deny-watch-position"
|
||||
]
|
||||
"const": "deny-watch-position"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user