From 0fb201792410d77e47cd06ea2c41be42f598182b Mon Sep 17 00:00:00 2001 From: LynithDev <61880709+LynithDev@users.noreply.github.com> Date: Fri, 20 Sep 2024 22:07:02 +0200 Subject: [PATCH] feat: Start working on implementing Curseforge into the frontend + fetch_categories helper script --- .template.env | 3 + Cargo.lock | 9 +- Cargo.toml | 2 +- apps/frontend/src/ui/hooks/useBrowser.tsx | 4 +- .../src/ui/pages/browser/BrowserRoot.tsx | 2 +- .../src/ui/pages/browser/BrowserSearch.tsx | 2 +- apps/frontend/src/utils/browser.ts | 139 ++++++++++-------- apps/frontend/src/utils/index.ts | 5 +- packages/core/.template.env | 2 - packages/core/build.rs | 42 +++++- .../src/api/package/content/curseforge.rs | 52 +++---- packages/scripts/api/fetch_categories.ts | 120 +++++++++++++++ packages/scripts/package.json | 5 +- pnpm-lock.yaml | 29 ++++ 14 files changed, 309 insertions(+), 107 deletions(-) create mode 100644 .template.env delete mode 100644 packages/core/.template.env create mode 100644 packages/scripts/api/fetch_categories.ts diff --git a/.template.env b/.template.env new file mode 100644 index 00000000..434d6c54 --- /dev/null +++ b/.template.env @@ -0,0 +1,3 @@ +#! Use single quotes due to special characters and dotenvy being weird + +CURSEFORGE_API_KEY = '' diff --git a/Cargo.lock b/Cargo.lock index 56fd1d0d..9a172198 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1672,6 +1672,11 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "git+https://github.com/allan2/dotenvy/?rev=db0d6aa8fc8d1b0ddbfe94b5c833372e463eb1c5#db0d6aa8fc8d1b0ddbfe94b5c833372e463eb1c5" + [[package]] name = "dpi" version = "0.1.1" @@ -4357,7 +4362,7 @@ dependencies = [ "chrono", "dirs 5.0.1", "discord-rich-presence", - "dotenvy", + "dotenvy 0.15.7 (git+https://github.com/allan2/dotenvy/?rev=db0d6aa8fc8d1b0ddbfe94b5c833372e463eb1c5)", "flate2", "futures", "indicatif", @@ -5153,7 +5158,7 @@ dependencies = [ "bigdecimal 0.4.5", "chrono", "diagnostics", - "dotenvy", + "dotenvy 0.15.7 (registry+https://github.com/rust-lang/crates.io-index)", "futures", "include_dir", "indexmap 1.9.3", diff --git a/Cargo.toml b/Cargo.toml index 5f78aeda..8276853b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -179,7 +179,7 @@ cocoa = { version = "0.26" } objc = { version = "0.2" } cc = { version = "1.1" } libc = { version = "0.2" } -dotenvy = { version = "0.15.7" } +dotenvy = { git = "https://github.com/allan2/dotenvy/", rev = "db0d6aa8fc8d1b0ddbfe94b5c833372e463eb1c5" } # https://github.com/tauri-apps/tauri/blob/dev/crates/tauri/Cargo.toml#L102 webkit2gtk = { version = "=2.0.1", features = [ "v2_40" ] } diff --git a/apps/frontend/src/ui/hooks/useBrowser.tsx b/apps/frontend/src/ui/hooks/useBrowser.tsx index 5de57a25..473ca0e5 100644 --- a/apps/frontend/src/ui/hooks/useBrowser.tsx +++ b/apps/frontend/src/ui/hooks/useBrowser.tsx @@ -1,5 +1,3 @@ -import type { Cluster, ManagedPackage, PackageType, Providers, ProviderSearchQuery, ProviderSearchResults } from '@onelauncher/client/bindings'; -import type { ModalProps } from '~ui/components/overlay/Modal'; import { useNavigate } from '@solidjs/router'; import { bridge } from '~imports'; import Button from '~ui/components/base/Button'; @@ -7,6 +5,8 @@ import Dropdown from '~ui/components/base/Dropdown'; import Modal, { createModal } from '~ui/components/overlay/Modal'; import BrowserPackage from '~ui/pages/browser/BrowserPackage'; import { type Accessor, type Context, createContext, createEffect, createSignal, For, on, onMount, type ParentProps, type Setter, Show, untrack, useContext } from 'solid-js'; +import type { Cluster, ManagedPackage, PackageType, Providers, ProviderSearchQuery, ProviderSearchResults } from '@onelauncher/client/bindings'; +import type { ModalProps } from '~ui/components/overlay/Modal'; import { useRecentCluster } from './useCluster'; import useCommand, { tryResult } from './useCommand'; diff --git a/apps/frontend/src/ui/pages/browser/BrowserRoot.tsx b/apps/frontend/src/ui/pages/browser/BrowserRoot.tsx index d4896d9e..c2f8a713 100644 --- a/apps/frontend/src/ui/pages/browser/BrowserRoot.tsx +++ b/apps/frontend/src/ui/pages/browser/BrowserRoot.tsx @@ -93,7 +93,7 @@ function BrowserCategories() {
bridge.commands.searchProviderPackages('Modrinth', browser.searchQuery()));
+ const [results, { refetch }] = useCommand(() => bridge.commands.searchProviderPackages(browser.searchQuery().provider, browser.searchQuery()));
const paginationOptions = (): PaginationOptions => ({
itemsCount: () => results()?.total || 0,
diff --git a/apps/frontend/src/utils/browser.ts b/apps/frontend/src/utils/browser.ts
index cba8f15f..dabfc757 100644
--- a/apps/frontend/src/utils/browser.ts
+++ b/apps/frontend/src/utils/browser.ts
@@ -7,74 +7,11 @@ export interface CategoryItem {
id: string;
}
-type ModCategories = [
- 'adventure',
- 'library',
- 'equipment',
- 'decoration',
- 'food',
- 'magic',
- 'performance',
- 'storage',
- 'technology',
- 'utility',
- 'worldgen',
-];
-
-const modMapping: Record