diff --git a/desktop/.github/workflows/release.yml b/desktop/.github/workflows/release.yml index 9e604614..455fdc74 100644 --- a/desktop/.github/workflows/release.yml +++ b/desktop/.github/workflows/release.yml @@ -94,10 +94,11 @@ jobs: APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} APPLE_SIGNING_IDENTITY: ${{ env.CERT_ID }} + NO_STRIP: true with: tagName: v__VERSION__ # the action automatically replaces \_\_VERSION\_\_ with the app version. releaseName: 'Auto-release v__VERSION__' releaseBody: 'See the assets to download this version and install. This release was created automatically.' releaseDraft: false prerelease: true - args: ${{ matrix.args }} + args: ${{ matrix.args }} \ No newline at end of file diff --git a/desktop/.gitignore b/desktop/.gitignore index 5767a3f2..c60be723 100644 --- a/desktop/.gitignore +++ b/desktop/.gitignore @@ -26,4 +26,7 @@ dist-ssr .output src-tauri/flamegraph.svg -src-tauri/perf* \ No newline at end of file +src-tauri/perf* + +/*.AppImage +/squashfs-root \ No newline at end of file diff --git a/desktop/.gitmodules b/desktop/.gitmodules index f47083b2..df4511d8 100644 --- a/desktop/.gitmodules +++ b/desktop/.gitmodules @@ -1,9 +1,6 @@ -[submodule "drop-base"] - path = drop-base - url = https://github.com/drop-oss/drop-base [submodule "src-tauri/tailscale/libtailscale"] path = src-tauri/tailscale/libtailscale url = https://github.com/tailscale/libtailscale.git -[submodule "src-tauri/umu/umu-launcher"] - path = src-tauri/umu/umu-launcher - url = https://github.com/Open-Wine-Components/umu-launcher.git +[submodule "libs/drop-base"] + path = libs/drop-base + url = https://github.com/drop-oss/drop-base.git diff --git a/desktop/build.mjs b/desktop/build.mjs new file mode 100644 index 00000000..c4846f1f --- /dev/null +++ b/desktop/build.mjs @@ -0,0 +1,48 @@ +import fs from "fs"; +import process from "process"; +import childProcess from "child_process"; +import createLogger from "pino"; + +const OUTPUT = "./.output"; +const logger = createLogger({ transport: { target: "pino-pretty" } }); + +async function spawn(exec, opts) { + const output = childProcess.spawn(exec, { ...opts, shell: true }); + output.stdout.on("data", (data) => { + process.stdout.write(data); + }); + output.stderr.on("data", (data) => { + process.stderr.write(data); + }); + + return await new Promise((resolve, reject) => { + output.on("error", (err) => reject(err)); + output.on("exit", () => resolve()); + }); +} + +const views = fs.readdirSync(".").filter((view) => { + const expectedPath = `./${view}/package.json`; + return fs.existsSync(expectedPath); +}); + +fs.mkdirSync(OUTPUT, { recursive: true }); + +for (const view of views) { + const loggerChild = logger.child({}); + process.chdir(`./${view}`); + + loggerChild.info(`Install deps for "${view}"`); + await spawn("yarn"); + + loggerChild.info(`Building "${view}"`); + await spawn("yarn build", { + env: { ...process.env, NUXT_APP_BASE_URL: `/${view}/` }, + }); + + process.chdir(".."); + + fs.cpSync(`./${view}/.output/public`, `${OUTPUT}/${view}`, { + recursive: true, + }); +} \ No newline at end of file diff --git a/desktop/composables/app-state.ts b/desktop/composables/app-state.ts deleted file mode 100644 index 2781bd2d..00000000 --- a/desktop/composables/app-state.ts +++ /dev/null @@ -1,3 +0,0 @@ -import type { AppState } from "~/types"; - -export const useAppState = () => useState("state"); \ No newline at end of file diff --git a/desktop/drop-base b/desktop/libs/drop-base similarity index 100% rename from desktop/drop-base rename to desktop/libs/drop-base diff --git a/desktop/app.vue b/desktop/main/app.vue similarity index 75% rename from desktop/app.vue rename to desktop/main/app.vue index 46a38ab4..7d4165fe 100644 --- a/desktop/app.vue +++ b/desktop/main/app.vue @@ -10,8 +10,6 @@ import "~/composables/downloads.js"; import { invoke } from "@tauri-apps/api/core"; -import { AppStatus } from "~/types"; -import { listen } from "@tauri-apps/api/event"; import { useAppState } from "./composables/app-state.js"; import { initialNavigation, @@ -21,19 +19,26 @@ import { const router = useRouter(); const state = useAppState(); -try { - state.value = JSON.parse(await invoke("fetch_state")); -} catch (e) { - console.error("failed to parse state", e); + +async function fetchState() { + try { + state.value = JSON.parse(await invoke("fetch_state")); + if (!state.value) + throw createError({ + statusCode: 500, + statusMessage: `App state is: ${state.value}`, + fatal: true, + }); + } catch (e) { + console.error("failed to parse state", e); + throw e; + } } +await fetchState(); // This is inefficient but apparently we do it lol router.beforeEach(async () => { - try { - state.value = JSON.parse(await invoke("fetch_state")); - } catch (e) { - console.error("failed to parse state", e); - } + await fetchState(); }); setupHooks(); diff --git a/desktop/assets/main.scss b/desktop/main/assets/main.scss similarity index 100% rename from desktop/assets/main.scss rename to desktop/main/assets/main.scss diff --git a/desktop/assets/wallpaper.jpg b/desktop/main/assets/wallpaper.jpg similarity index 100% rename from desktop/assets/wallpaper.jpg rename to desktop/main/assets/wallpaper.jpg diff --git a/desktop/components/GameOptions/Launch.vue b/desktop/main/components/GameOptions/Launch.vue similarity index 100% rename from desktop/components/GameOptions/Launch.vue rename to desktop/main/components/GameOptions/Launch.vue diff --git a/desktop/components/GameOptionsModal.vue b/desktop/main/components/GameOptionsModal.vue similarity index 100% rename from desktop/components/GameOptionsModal.vue rename to desktop/main/components/GameOptionsModal.vue diff --git a/desktop/components/GameStatusButton.vue b/desktop/main/components/GameStatusButton.vue similarity index 100% rename from desktop/components/GameStatusButton.vue rename to desktop/main/components/GameStatusButton.vue diff --git a/desktop/components/Header.vue b/desktop/main/components/Header.vue similarity index 97% rename from desktop/components/Header.vue rename to desktop/main/components/Header.vue index 5cf299fd..160b9aec 100644 --- a/desktop/components/Header.vue +++ b/desktop/main/components/Header.vue @@ -37,7 +37,7 @@ - + diff --git a/desktop/components/HeaderButton.vue b/desktop/main/components/HeaderButton.vue similarity index 100% rename from desktop/components/HeaderButton.vue rename to desktop/main/components/HeaderButton.vue diff --git a/desktop/components/HeaderQueueWidget.vue b/desktop/main/components/HeaderQueueWidget.vue similarity index 100% rename from desktop/components/HeaderQueueWidget.vue rename to desktop/main/components/HeaderQueueWidget.vue diff --git a/desktop/components/HeaderUserWidget.vue b/desktop/main/components/HeaderUserWidget.vue similarity index 96% rename from desktop/components/HeaderUserWidget.vue rename to desktop/main/components/HeaderUserWidget.vue index b6e245fe..518f99c9 100644 --- a/desktop/components/HeaderUserWidget.vue +++ b/desktop/main/components/HeaderUserWidget.vue @@ -1,5 +1,5 @@