mirror of
https://github.com/kunkunsh/kunkun.git
synced 2025-04-20 05:29:17 +00:00

* chore: add vendor submodules * feat: add packages for db,ci,schema,api,jarvis cmds * feat: add tauri-jarvis-plugin * feat: implement extension commands list * fix(desktop): import path errors after packages refactor * chore: add self signed cert * fix: prevent prerender for desktop * fix(desktop): desktop sveltekit static build, use csr for dynamic route * feat: add error handling page and components * refactor: component lib * refactor: move more types, functions and components out of desktop * refactor(ui): more refactor * refactor(ui): move store components to @kksh/ui * ci: add CI for build & test * refactor: rename @kksh/extensions to @kksh/extension * ci: add 2 more ci * ci: fix * fix: CI env var * chore: add changeset * feat: implement extension store item detail view * feat: implement extension store install, uninstall, upgrade * format * revert: upgradable logic, the new one doesn't work yet * refactor: make @kksh/ui dependent only on @kksh/api Reason: @kksh/ui may be published later for building website, all its dependency packages must be also published. To avoid trouble it should be standalone, depend only on packages already published * refactor: cleanup * fixed: some typescript error * chore: got typedoc working on @kksh/api * ci: disable manifest schema upload CI on push
51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import { db, unregisterExtensionWindow } from "@kksh/api/commands"
|
|
import type { Ext as ExtInfoInDB, ExtPackageJsonExtra } from "@kksh/api/models"
|
|
import { loadExtensionManifestFromDisk } from "@kksh/extension"
|
|
import { join } from "@tauri-apps/api/path"
|
|
import { error } from "@tauri-apps/plugin-log"
|
|
import { goto } from "$app/navigation"
|
|
import { toast } from "svelte-sonner"
|
|
import { z } from "zod"
|
|
import type { PageLoad } from "./$types"
|
|
|
|
export const load: PageLoad = async ({
|
|
url,
|
|
params,
|
|
route
|
|
}): Promise<{
|
|
extPath: string
|
|
url: string
|
|
loadedExt: ExtPackageJsonExtra
|
|
extInfoInDB: ExtInfoInDB
|
|
}> => {
|
|
// both query parameter must exist
|
|
const _extPath = url.searchParams.get("extPath")
|
|
const _extUrl = url.searchParams.get("url")
|
|
if (!_extPath || !_extUrl) {
|
|
toast.error("Invalid extension path or url")
|
|
error("Invalid extension path or url")
|
|
goto("/")
|
|
}
|
|
const extPath = z.string().parse(_extPath)
|
|
const extUrl = z.string().parse(_extUrl)
|
|
let _loadedExt: ExtPackageJsonExtra | undefined
|
|
try {
|
|
_loadedExt = await loadExtensionManifestFromDisk(await join(extPath, "package.json"))
|
|
} catch (err) {
|
|
error(`Error loading extension manifest: ${err}`)
|
|
toast.error("Error loading extension manifest", {
|
|
description: `${err}`
|
|
})
|
|
goto("/")
|
|
}
|
|
const loadedExt = _loadedExt!
|
|
const extInfoInDB = await db.getUniqueExtensionByPath(loadedExt.extPath)
|
|
if (!extInfoInDB) {
|
|
toast.error("Unexpected Error", {
|
|
description: `Extension ${loadedExt.kunkun.identifier} not found in database. Run Troubleshooter.`
|
|
})
|
|
goto("/")
|
|
}
|
|
return { extPath, url: extUrl, loadedExt, extInfoInDB: extInfoInDB! }
|
|
}
|