From fc260b7f29b63c1a2a19592eb315c362c0b7c701 Mon Sep 17 00:00:00 2001 From: Jakobabs <89502961+Jakobabs@users.noreply.github.com> Date: Wed, 15 Jan 2025 19:30:34 -0500 Subject: [PATCH] Theseus Skin Manager (#1277) Initial skin manager --- Cargo.lock | 19 +- apps/app-frontend/package.json | 3 +- apps/app-frontend/src/App.vue | 119 +- apps/app-frontend/src/assets/icons/index.js | 1 + .../src/assets/icons/skin-editor.svg | 5 + .../src/components/ui/AccountsCard.vue | 473 +++----- .../src/components/ui/Instance.vue | 33 +- .../components/ui/InstanceCreationModal.vue | 16 +- .../src/components/ui/SkinSave.vue | 24 + .../src/components/ui/friends/FriendsList.vue | 21 +- .../ui/install_flow/InstallConfirmModal.vue | 4 +- apps/app-frontend/src/helpers/auth.js | 7 +- apps/app-frontend/src/helpers/pack.js | 14 +- apps/app-frontend/src/helpers/profile.js | 16 + apps/app-frontend/src/helpers/skin_manager.js | 135 +++ apps/app-frontend/src/helpers/types.d.ts | 16 +- .../app-frontend/src/locales/en-US/index.json | 69 ++ apps/app-frontend/src/pages/SkinManager.vue | 1007 +++++++++++++++++ apps/app-frontend/src/pages/index.js | 3 +- .../app-frontend/src/pages/instance/Index.vue | 59 +- apps/app-frontend/src/routes.js | 8 + apps/app-frontend/src/store/install.js | 4 +- apps/app/build.rs | 27 + apps/app/capabilities/plugins.json | 10 +- apps/app/package.json | 2 +- apps/app/src/api/auth.rs | 8 + apps/app/src/api/mod.rs | 1 + apps/app/src/api/skin_manager.rs | 180 +++ apps/app/src/assets/icons/skin-editor.svg | 5 + apps/app/src/main.rs | 9 +- apps/app/tauri.conf.json | 35 +- apps/frontend/src/pages/[type]/[id].vue | 108 +- .../pages/[type]/[id]/version/[version].vue | 7 + .../src/pages/dashboard/revenue/withdraw.vue | 10 +- .../src/pages/settings/billing/index.vue | 11 +- apps/labrinth/src/routes/internal/admin.rs | 2 +- packages/app-lib/Cargo.toml | 6 +- packages/app-lib/src/api/minecraft_auth.rs | 22 + packages/app-lib/src/api/mod.rs | 1 + packages/app-lib/src/api/pack/import/mod.rs | 18 + packages/app-lib/src/api/profile/mod.rs | 15 +- packages/app-lib/src/api/profile/update.rs | 2 +- packages/app-lib/src/api/skin_manager.rs | 672 +++++++++++ packages/app-lib/src/error.rs | 6 + packages/app-lib/src/launcher/mod.rs | 10 +- .../app-lib/src/state/legacy_converter.rs | 2 +- packages/app-lib/src/state/minecraft_auth.rs | 24 +- packages/app-lib/src/state/profiles.rs | 26 +- packages/assets/styles/variables.scss | 17 - packages/ui/src/components/base/Accordion.vue | 6 +- .../ui/src/components/base/OverflowMenu.vue | 20 +- .../ui/src/components/base/RadioButtons.vue | 42 + packages/ui/src/components/base/Slider.vue | 5 +- packages/ui/src/components/index.ts | 1 + packages/ui/src/components/modal/NewModal.vue | 2 +- .../src/components/project/ProjectHeader.vue | 9 +- .../project/ProjectSidebarCompatibility.vue | 3 + packages/ui/src/locales/en-US/index.json | 3 + packages/ui/src/utils/common-messages.ts | 4 + pnpm-lock.yaml | 66 +- 60 files changed, 2902 insertions(+), 551 deletions(-) create mode 100644 apps/app-frontend/src/assets/icons/skin-editor.svg create mode 100644 apps/app-frontend/src/components/ui/SkinSave.vue create mode 100644 apps/app-frontend/src/helpers/skin_manager.js create mode 100644 apps/app-frontend/src/pages/SkinManager.vue create mode 100644 apps/app/src/api/skin_manager.rs create mode 100644 apps/app/src/assets/icons/skin-editor.svg create mode 100644 packages/app-lib/src/api/skin_manager.rs create mode 100644 packages/ui/src/components/base/RadioButtons.vue diff --git a/Cargo.lock b/Cargo.lock index 8dffdfd5a7..07ec7836ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -660,19 +660,18 @@ dependencies = [ [[package]] name = "async-tungstenite" -version = "0.27.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5359381fd414fbdb272c48f2111c16cb0bb3447bfacd59311ff3736da9f6664" +checksum = "2cca750b12e02c389c1694d35c16539f88b8bbaa5945934fdc1b41a776688589" dependencies = [ "futures-io", "futures-util", "log", + "native-tls", "pin-project-lite", - "rustls-pki-types", "tokio 1.42.0", - "tokio-rustls 0.26.0", + "tokio-native-tls", "tungstenite", - "webpki-roots 0.26.6", ] [[package]] @@ -6603,6 +6602,7 @@ dependencies = [ "js-sys", "log", "mime", + "mime_guess", "native-tls", "once_cell", "percent-encoding", @@ -8886,6 +8886,7 @@ dependencies = [ "dunce", "flate2", "futures 0.3.30", + "image 0.24.9", "indicatif", "lazy_static", "notify", @@ -9588,9 +9589,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.23.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" dependencies = [ "byteorder", "bytes 1.7.2", @@ -9598,11 +9599,11 @@ dependencies = [ "http 1.1.0", "httparse", "log", + "native-tls", "rand 0.8.5", - "rustls 0.23.13", - "rustls-pki-types", "sha1 0.10.6", "thiserror 1.0.64", + "url", "utf-8", ] diff --git a/apps/app-frontend/package.json b/apps/app-frontend/package.json index f393806311..4f6d8d14ed 100644 --- a/apps/app-frontend/package.json +++ b/apps/app-frontend/package.json @@ -27,6 +27,7 @@ "floating-vue": "^5.2.2", "ofetch": "^1.3.4", "pinia": "^2.1.7", + "skinview3d": "^3.0.1", "posthog-js": "^1.158.2", "vite-svg-loader": "^5.1.0", "vue": "^3.5.13", @@ -54,4 +55,4 @@ }, "packageManager": "pnpm@9.4.0", "web-types": "../../web-types.json" -} +} \ No newline at end of file diff --git a/apps/app-frontend/src/App.vue b/apps/app-frontend/src/App.vue index 786e1f3121..9df086a427 100644 --- a/apps/app-frontend/src/App.vue +++ b/apps/app-frontend/src/App.vue @@ -1,24 +1,32 @@ -