diff --git a/packages/gui/src-tauri/Cargo.lock b/packages/gui/src-tauri/Cargo.lock index 084781c..f276b59 100644 --- a/packages/gui/src-tauri/Cargo.lock +++ b/packages/gui/src-tauri/Cargo.lock @@ -1622,6 +1622,16 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "os_pipe" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6a252f1f8c11e84b3ab59d7a488e48e4478a93937e027076638c49536204639" +dependencies = [ + "libc", + "windows-sys 0.42.0", +] + [[package]] name = "overload" version = "0.1.1" @@ -2339,6 +2349,16 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shared_child" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "siphasher" version = "0.3.10" @@ -2552,6 +2572,7 @@ dependencies = [ "objc", "once_cell", "open", + "os_pipe", "percent-encoding", "rand 0.8.5", "raw-window-handle", @@ -2561,6 +2582,7 @@ dependencies = [ "serde_json", "serde_repr", "serialize-to-javascript", + "shared_child", "state", "tar", "tauri-macros", diff --git a/packages/gui/src-tauri/Cargo.toml b/packages/gui/src-tauri/Cargo.toml index 8e3c1b4..6576123 100644 --- a/packages/gui/src-tauri/Cargo.toml +++ b/packages/gui/src-tauri/Cargo.toml @@ -17,7 +17,7 @@ tauri-build = { version = "1.2.0", features = [] } [dependencies] serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } -tauri = { version = "1.2.0", features = ["http-all", "shell-open", "window-all"] } +tauri = { version = "1.2.0", features = ["fs-read-dir", "http-all", "shell-all", "window-all"] } uuid = "1.2.1" futures = "0.3" diff --git a/packages/gui/src-tauri/src/handlers/packages.rs b/packages/gui/src-tauri/src/handlers/packages.rs index 6df1455..4e77c9a 100644 --- a/packages/gui/src-tauri/src/handlers/packages.rs +++ b/packages/gui/src-tauri/src/handlers/packages.rs @@ -1,4 +1,5 @@ #[tauri::command] pub fn install_package(package: String) { println!("installing: {}", package); + } \ No newline at end of file diff --git a/packages/gui/src-tauri/tauri.conf.json b/packages/gui/src-tauri/tauri.conf.json index 3fd334d..9b417d5 100644 --- a/packages/gui/src-tauri/tauri.conf.json +++ b/packages/gui/src-tauri/tauri.conf.json @@ -18,10 +18,26 @@ "scope": ["https://api.tea.xyz/v1/*", "https://github.com/*"] }, "shell": { - "all": false, - "execute": false, + "all": true, + "execute": true, "open": true, - "scope": [], + "scope": [ + { + "name": "tea-install", + "cmd": "tea", + "args": [{ "validator": "\\S+" }, "true"] + }, + { + "name": "node", + "cmd": "node", + "args": ["--version"] + }, + { + "name": "list-packages", + "cmd": "ls", + "args": ["-R ~/.tea/tea.xyz/var/www | grep 'xz\\|gz'"] + } + ], "sidecar": false }, "window": { @@ -55,6 +71,13 @@ "startDragging": true, "unmaximize": true, "unminimize": true + }, + "fs": { + "readDir": true, + "scope": [ + "$HOME/.tea/*", + "$APPDATA/*" + ] } }, "bundle": { diff --git a/packages/gui/src/components/SearchPackages/SearchPackages.svelte b/packages/gui/src/components/SearchPackages/SearchPackages.svelte index 1307062..648a093 100644 --- a/packages/gui/src/components/SearchPackages/SearchPackages.svelte +++ b/packages/gui/src/components/SearchPackages/SearchPackages.svelte @@ -3,15 +3,18 @@ import Fuse from 'fuse.js'; import { packages as packagesStore, initializePackages } from '$libs/stores'; import SortingButtons from './SortingButtons.svelte'; - import type { Package } from '@tea/ui/types'; + import type { GUIPackage } from '$libs/types'; + import { PackageStates } from '$libs/types'; import PackageCard from '@tea/ui/PackageCard/PackageCard.svelte'; import SearchInput from '@tea/ui/SearchInput/SearchInput.svelte'; import Preloader from '@tea/ui/Preloader/Preloader.svelte'; import { onMount } from 'svelte'; - let allPackages: Package[] = []; - let packagesIndex: Fuse; - let packages: Package[] = []; + import { installPackage } from '@api'; + + let allPackages: GUIPackage[] = []; + let packagesIndex: Fuse; + let packages: GUIPackage[] = []; let initialized = false; let sortBy = 'popularity'; @@ -19,7 +22,7 @@ const searchLimit = 5; - const setPackages = (pkgs: Package[]) => { + const setPackages = (pkgs: GUIPackage[]) => { console.log('pkgs sub', pkgs); packages = pkgs.sort((a, b) => { if (sortBy === 'popularity') { @@ -54,7 +57,7 @@ }); const onSearch = (term: string) => { - if (term !== '' && term.length > 3) { + if (term !== '' && term.length > 1) { const res = packagesIndex.search(term); const matchingPackages = []; for (let i = 0; i < searchLimit; i++) { @@ -73,6 +76,15 @@ sortDirection = dir; setPackages(packages); }; + + const getCTALabel = (state: PackageStates): string => { + return { + [PackageStates.AVAILABLE]: 'INSTALL', + [PackageStates.INSTALLED]: 'INSTALLED', + [PackageStates.INSTALLING]: 'INSTALLING', + [PackageStates.UNINSTALLED]: 'RE-INSTALL' + }[state]; + };
@@ -87,9 +99,24 @@