From 23ff953f646aefa563098681e683301803c9299f Mon Sep 17 00:00:00 2001 From: LynithDev <61880709+LynithDev@users.noreply.github.com> Date: Sun, 27 Oct 2024 17:22:25 +0100 Subject: [PATCH] feat: Add Launcher icons and begin work on importing instances --- .vscode/settings.json | 5 +- apps/desktop/src/api/commands/mod.rs | 3 +- apps/desktop/src/api/commands/package.rs | 27 +++++--- apps/frontend/src/assets/logos/curseforge.svg | 4 +- .../src/assets/logos/launchers/atlauncher.svg | 1 + .../src/assets/logos/launchers/ftb.svg | 1 + .../src/assets/logos/launchers/gdlauncher.png | Bin 0 -> 7717 bytes .../src/assets/logos/launchers/multimc.png | Bin 0 -> 39103 bytes .../assets/logos/launchers/prismlauncher.svg | 52 +++++++++++++++ .../src/assets/logos/launchers/technic.png | Bin 0 -> 7057 bytes .../src/assets/logos/launchers/tlauncher.png | Bin 0 -> 30297 bytes apps/frontend/src/assets/logos/modrinth.svg | 12 ++-- .../ui/components/content/LauncherIcon.tsx | 60 ++++++++++++++++++ .../ui/components/content/ProviderIcon.tsx | 2 + .../src/ui/pages/onboarding/Onboarding.tsx | 12 +++- .../ui/pages/onboarding/OnboardingImport.tsx | 24 +++++-- .../ui/pages/onboarding/OnboardingSummary.tsx | 2 +- .../settings/about/SettingsDeveloper.tsx | 28 +++++++- packages/client/src/bindings.ts | 14 +++- packages/core/src/api/package/import/mod.rs | 26 +++++++- 20 files changed, 231 insertions(+), 42 deletions(-) create mode 100644 apps/frontend/src/assets/logos/launchers/atlauncher.svg create mode 100644 apps/frontend/src/assets/logos/launchers/ftb.svg create mode 100644 apps/frontend/src/assets/logos/launchers/gdlauncher.png create mode 100644 apps/frontend/src/assets/logos/launchers/multimc.png create mode 100644 apps/frontend/src/assets/logos/launchers/prismlauncher.svg create mode 100644 apps/frontend/src/assets/logos/launchers/technic.png create mode 100644 apps/frontend/src/assets/logos/launchers/tlauncher.png create mode 100644 apps/frontend/src/ui/components/content/LauncherIcon.tsx diff --git a/.vscode/settings.json b/.vscode/settings.json index a582b844..d1d29577 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -188,6 +188,7 @@ "*.vue": "$(capture).*.ts, $(capture).*.js, $(capture).story.vue", "*.w": "$(capture).*.w, I$(capture).w", "*.xaml": "$(capture).xaml.cs" - }, - "typescript.tsdk": "node_modules/typescript/lib" + }, + "typescript.tsdk": "node_modules/typescript/lib", + "svg.preview.background": "editor" } diff --git a/apps/desktop/src/api/commands/mod.rs b/apps/desktop/src/api/commands/mod.rs index a3655106..e569501a 100644 --- a/apps/desktop/src/api/commands/mod.rs +++ b/apps/desktop/src/api/commands/mod.rs @@ -58,7 +58,8 @@ macro_rules! collect_commands { // Metadata get_minecraft_versions, // Launcher Packages (Instances) - import_launcher_instances, + get_launcher_instances, + import_instances, // Provider Packages get_provider_package, get_provider_packages, diff --git a/apps/desktop/src/api/commands/package.rs b/apps/desktop/src/api/commands/package.rs index 0ea3cc58..f59967ac 100644 --- a/apps/desktop/src/api/commands/package.rs +++ b/apps/desktop/src/api/commands/package.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use onelauncher::cluster::content::package; use onelauncher::data::{Loader, ManagedPackage, ManagedUser, ManagedVersion, PackageType}; use onelauncher::package::content::Providers; -use onelauncher::package::import::{default_launcher_path, ImportType}; +use onelauncher::package::import::ImportType; use onelauncher::store::{ Author, ClusterPath, Package, PackageBody, PackagePath, ProviderSearchResults, }; @@ -12,18 +12,25 @@ use uuid::Uuid; #[specta::specta] #[tauri::command] -pub async fn import_launcher_instances( +pub async fn get_launcher_instances( launcher: ImportType, path: Option, +) -> Result<(String, Vec), String> { + let (dir, instances) = onelauncher::api::package::import::get_launcher_instances(launcher, path).await?; + Ok(( + dir.to_str().ok_or("could not convert pathbuf to string")?.to_string(), + instances + )) +} + +#[specta::specta] +#[tauri::command] +pub async fn import_instances( + launcher: ImportType, + base_path: PathBuf, + instances: Vec, ) -> Result<(), String> { - onelauncher::api::package::import::import_instances( - launcher, - path.unwrap_or( - default_launcher_path(launcher) - .ok_or("couldn't get a default path for this launcher")?, - ), - ) - .await?; + onelauncher::api::package::import::import_instances(launcher, base_path, instances).await?; Ok(()) } diff --git a/apps/frontend/src/assets/logos/curseforge.svg b/apps/frontend/src/assets/logos/curseforge.svg index c00fb357..5664d7d6 100644 --- a/apps/frontend/src/assets/logos/curseforge.svg +++ b/apps/frontend/src/assets/logos/curseforge.svg @@ -1,4 +1,4 @@ - - \ No newline at end of file + diff --git a/apps/frontend/src/assets/logos/launchers/atlauncher.svg b/apps/frontend/src/assets/logos/launchers/atlauncher.svg new file mode 100644 index 00000000..fa2799c8 --- /dev/null +++ b/apps/frontend/src/assets/logos/launchers/atlauncher.svg @@ -0,0 +1 @@ + diff --git a/apps/frontend/src/assets/logos/launchers/ftb.svg b/apps/frontend/src/assets/logos/launchers/ftb.svg new file mode 100644 index 00000000..2d3fee4b --- /dev/null +++ b/apps/frontend/src/assets/logos/launchers/ftb.svg @@ -0,0 +1 @@ + diff --git a/apps/frontend/src/assets/logos/launchers/gdlauncher.png b/apps/frontend/src/assets/logos/launchers/gdlauncher.png new file mode 100644 index 0000000000000000000000000000000000000000..091e698c817e011f18128f499c4975b7d3de84fe GIT binary patch literal 7717 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 t;F}PoIEk>?A@EWWaR&IT&8>+82l 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 TCRntq00000NkvXXu0mjfTdBG0 literal 0 HcmV?d00001 diff --git a/apps/frontend/src/assets/logos/launchers/prismlauncher.svg b/apps/frontend/src/assets/logos/launchers/prismlauncher.svg new file mode 100644 index 00000000..1249b4f5 --- /dev/null +++ b/apps/frontend/src/assets/logos/launchers/prismlauncher.svg @@ -0,0 +1,52 @@ + + Prism Launcher Logo + + + + Prism Launcher Logo + 19/10/2022 + + + Prism Launcher + + + + + AutiOne, Boba, ely, Fulmine, gon sawa, Pankakes, tobimori, Zeke + + + https://github.com/PrismLauncher/PrismLauncher + + + Prism Launcher + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/frontend/src/assets/logos/launchers/technic.png b/apps/frontend/src/assets/logos/launchers/technic.png new file mode 100644 index 0000000000000000000000000000000000000000..a8cb9e49f18d5d6567eefafdfbcb802b1b922a1e GIT binary patch literal 7057 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 EUo&67FaQ7m literal 0 HcmV?d00001 diff --git a/apps/frontend/src/assets/logos/launchers/tlauncher.png b/apps/frontend/src/assets/logos/launchers/tlauncher.png new file mode 100644 index 0000000000000000000000000000000000000000..c515d2f58e49f400b1b3f0d0552e00cfa9b20425 GIT binary patch literal 30297 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 z z89B*=yw`s@P=5W5K-`5A{{h>LXL>oB5Sq~O5&U;=7Ra&7d*~kYNMc-&-onb@wA%t@ zS8Nig*o>sTQ@48wx_R?wUEihv?Gs90Y9`ki&h}fhpBgn_nBALg)YOExyrBoT#Wl){ zxFxY$yH2uNM3nK&joi#_p!P1-gbX35&=$tS@P)h8|GffpeD28^xzZ@^Bom}7c3#A4 zw-v(epkpGq75i0li1QRm_k;N}gr?zDtdbBeSO$ zQG7^PAh6txsd+v9`q>O;Q&|l?@PSk)cnte21M3A1`06U2W)$7~qC?xu=|@DlGmJY{ zAo_*M?F+m`CAsfV=H%o@&?|fi_Y3$|pcxHP)I;!)L5+7BW9tk8vu_Ct(0@L=zXZHt zh%NT^m`}UaakBkvOgLJ484wB@K15jQC8d=N&w7eYQ6*^iFI<2W_I}p%zBCHixu~NL zJpHqLR_1@;>sI`nwltez@3BNThkpZACRwH|Ov9#t@tOrNV!O~j2Afro2m9Ty9bAv; zvDSmf?n1Ic9aAD{>uU6>gx|a^kO05K=VAo!`T7Ji{yO1t($I5@v+XQrkVm_~nz)jP z=R4zFg%7BCI-4x}LS97klKryvD0c|Fz;uva+4*A+aCiHt{yd~nVfG$lw}%&m^e0d) zNdgP-p9Sdr2hQ1v@6jg>P%O - - - \ No newline at end of file + + + + diff --git a/apps/frontend/src/ui/components/content/LauncherIcon.tsx b/apps/frontend/src/ui/components/content/LauncherIcon.tsx new file mode 100644 index 00000000..e5a2241b --- /dev/null +++ b/apps/frontend/src/ui/components/content/LauncherIcon.tsx @@ -0,0 +1,60 @@ +import type { ImportType } from '@onelauncher/client/bindings'; +import CurseforgeIcon from '~assets/logos/curseforge.svg?component-solid'; +import AtLauncherIcon from '~assets/logos/launchers/atlauncher.svg?component-solid'; +import FTBIcon from '~assets/logos/launchers/ftb.svg?component-solid'; +import GDLauncherImage from '~assets/logos/launchers/gdlauncher.png'; +import MultiMCImage from '~assets/logos/launchers/multimc.png'; +import PrismIcon from '~assets/logos/launchers/prismlauncher.svg?component-solid'; +import TechnicImage from '~assets/logos/launchers/technic.png'; +import TLauncherImage from '~assets/logos/launchers/tlauncher.png'; +import ModrinthIcon from '~assets/logos/modrinth.svg?component-solid'; +import UnknownImage from '~assets/logos/vanilla.png'; +import { type JSX, type JSXElement, Show, splitProps } from 'solid-js'; + +type ElementType = (props: any) => JSXElement; + +export function getLauncherLogoElement(launcher: ImportType): ElementType { + const providerName = launcher.toLowerCase() as Lowercase; + + const image = (src: string, props: any) => {providerName}; + + // [provider logo, is svg] + const mapping: Record, ElementType | string> = { + modrinth: ModrinthIcon, + curseforge: CurseforgeIcon, + prismlauncher: PrismIcon, + atlauncher: AtLauncherIcon, + gdlauncher: GDLauncherImage, + ftblauncher: FTBIcon, + multimc: MultiMCImage, + tlauncher: TLauncherImage, + technic: TechnicImage, + unknown: UnknownImage, + }; + + const logo = mapping[providerName] || UnknownImage; + if (typeof logo === 'function') + return logo; + + return props => image(logo, props); +} + +type LauncherIconProps = JSX.HTMLAttributes & { + launcher: ImportType | undefined; +}; + +function LauncherIcon(props: LauncherIconProps) { + const [split, rest] = splitProps(props, ['launcher', 'class']); + + return ( + } /> + )} + when={split.launcher !== undefined} + /> + ); +} + +export default LauncherIcon; diff --git a/apps/frontend/src/ui/components/content/ProviderIcon.tsx b/apps/frontend/src/ui/components/content/ProviderIcon.tsx index b112319a..0975f92c 100644 --- a/apps/frontend/src/ui/components/content/ProviderIcon.tsx +++ b/apps/frontend/src/ui/components/content/ProviderIcon.tsx @@ -1,4 +1,5 @@ import type { ManagedPackage, Providers } from '@onelauncher/client/bindings'; +import CurseforgeIcon from '~assets/logos/curseforge.svg?component-solid'; import ModrinthImage from '~assets/logos/modrinth.svg?component-solid'; import { type Component, type JSX, Match, Show, splitProps, Switch } from 'solid-js'; @@ -8,6 +9,7 @@ export function getProviderLogoElement(provider: ManagedPackage | Providers): st // [provider logo, is svg] const mapping: Record, string | Component> = { modrinth: ModrinthImage, + curseforge: CurseforgeIcon, }; return mapping[providerName]; diff --git a/apps/frontend/src/ui/pages/onboarding/Onboarding.tsx b/apps/frontend/src/ui/pages/onboarding/Onboarding.tsx index 8e6f4215..01bd0191 100644 --- a/apps/frontend/src/ui/pages/onboarding/Onboarding.tsx +++ b/apps/frontend/src/ui/pages/onboarding/Onboarding.tsx @@ -32,7 +32,7 @@ export const enum OnboardingTaskStage { interface OnboardingContextType { setLanguage: (language: Language) => void; - setImportTypes: (types: ImportType[]) => void; + setImportTypeInstances: (type: ImportType, instances: string[]) => void; getTasks: () => string[]; @@ -51,7 +51,7 @@ function Onboarding(props: ParentProps) { const [forwardButtonEnabled, setForwardButtonEnabled] = createSignal(true); const [language, setLanguage] = createSignal('en'); - const [importTypes, setImportTypes] = createSignal([]); + const [importTypes, setImportTypes] = createSignal>(new Map()); const [tasksStage, setTasksStage] = createSignal(OnboardingTaskStage.NotStarted); const [tasksMessage, setTasksMessage] = createSignal(''); @@ -140,7 +140,13 @@ function Onboarding(props: ParentProps) { const ctx: OnboardingContextType = { setLanguage, - setImportTypes, + setImportTypeInstances(type, instances) { + setImportTypes((importTypes) => { + const newMap = new Map(importTypes); + newMap.set(type, instances); + return newMap; + }); + }, getTasks, diff --git a/apps/frontend/src/ui/pages/onboarding/OnboardingImport.tsx b/apps/frontend/src/ui/pages/onboarding/OnboardingImport.tsx index 0583c1ab..e55bb6e2 100644 --- a/apps/frontend/src/ui/pages/onboarding/OnboardingImport.tsx +++ b/apps/frontend/src/ui/pages/onboarding/OnboardingImport.tsx @@ -1,18 +1,24 @@ -import { useBeforeLeave } from '@solidjs/router'; +import type { ImportType } from '@onelauncher/client/bindings'; import Illustration from '~assets/illustrations/onboarding/import_from_others.svg?component-solid'; -import Image from '~assets/logos/vanilla.png'; +import LauncherIcon from '~ui/components/content/LauncherIcon'; import { LAUNCHER_IMPORT_TYPES } from '~utils'; import { OverlayScrollbarsComponent } from 'overlayscrollbars-solid'; import { For } from 'solid-js'; import Onboarding, { OnboardingStep } from './Onboarding'; +import { createModal } from '~ui/components/overlay/Modal'; function OnboardingImport() { const ctx = Onboarding.useContext(); - useBeforeLeave(() => { - ctx.setImportTypes([]); + const modal = createModal((props) => { + }); + function displayImport(type: ImportType) { + + } + + return ( } @@ -24,10 +30,10 @@ function OnboardingImport() {

@@ -38,3 +44,7 @@ function OnboardingImport() { } export default OnboardingImport; + +function InstancesPickerModal() { + +} diff --git a/apps/frontend/src/ui/pages/onboarding/OnboardingSummary.tsx b/apps/frontend/src/ui/pages/onboarding/OnboardingSummary.tsx index f234f001..1ee78490 100644 --- a/apps/frontend/src/ui/pages/onboarding/OnboardingSummary.tsx +++ b/apps/frontend/src/ui/pages/onboarding/OnboardingSummary.tsx @@ -16,7 +16,7 @@ function OnboardingSummary() { -
+
{task => ( diff --git a/apps/frontend/src/ui/pages/settings/about/SettingsDeveloper.tsx b/apps/frontend/src/ui/pages/settings/about/SettingsDeveloper.tsx index 82ac0dd9..041dbc22 100644 --- a/apps/frontend/src/ui/pages/settings/about/SettingsDeveloper.tsx +++ b/apps/frontend/src/ui/pages/settings/about/SettingsDeveloper.tsx @@ -1,4 +1,5 @@ -import { CodeBrowserIcon, GitMergeIcon, LinkExternal01Icon, RefreshCcw05Icon } from '@untitled-theme/icons-solid'; +import { useNavigate } from '@solidjs/router'; +import { CodeBrowserIcon, EyeIcon, GitMergeIcon, LinkExternal01Icon, RefreshCcw05Icon } from '@untitled-theme/icons-solid'; import Button from '~ui/components/base/Button'; import Toggle from '~ui/components/base/Toggle'; import ScrollableContainer from '~ui/components/ScrollableContainer'; @@ -7,7 +8,13 @@ import Sidebar from '~ui/components/Sidebar'; import useSettings from '~ui/hooks/useSettings'; function SettingsDeveloper() { - const { settings } = useSettings(); + const { settings, saveOnLeave } = useSettings(); + const navigate = useNavigate(); + + saveOnLeave(() => ({ + debug_mode: settings().debug_mode!, + onboarding_completed: settings().onboarding_completed!, + })); return ( @@ -44,7 +51,22 @@ function SettingsDeveloper() {