Skip to content

Commit

Permalink
fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
steve02081504 committed Jan 18, 2025
1 parent 6bb7f42 commit c689b3b
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
5 changes: 3 additions & 2 deletions src/public/ImportHanlders/fount/path.mjs
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import path from 'node:path'
import fs from 'node:fs'
import { getUserDictionary } from '../../../server/auth.mjs'
import { uninstallPartBase } from '../../../server/parts_loader.mjs'

export function resolvePath(username, type, name) {
let userPath = getUserDictionary(username)
let partPath = path.join(userPath, type, name)
return partPath
}

export function getAvailablePath(username, type, name) {
export async function getAvailablePath(username, type, name) {
let targetPath = resolvePath(username, type, name)
if (fs.existsSync(targetPath))
fs.rmSync(targetPath, { recursive: true, force: true })
await uninstallPartBase(username, type, name)
return targetPath
}
24 changes: 21 additions & 3 deletions src/server/parts_loader.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ export async function uninstallPartBase(username, parttype, partname, unLoadargs
unLoader = (part) => part.Unload?.(unLoadargs),
pathGetter = () => GetPartPath(username, parttype, partname),
Uninstaller = async (part, path) => {
await part.Uninstall?.(uninstallArgs)
await part?.Uninstall?.(uninstallArgs)
fs.rmSync(path, { recursive: true, force: true })
}
} = {}) {
Expand All @@ -122,8 +122,15 @@ export async function uninstallPartBase(username, parttype, partname, unLoadargs
} catch (error) {
console.error(error)
}
part ??= await baseloadPart(username, parttype, partname, { Loader, pathGetter })
try {
part ??= await baseloadPart(username, parttype, partname, { Loader, pathGetter })
} catch (error) {
console.error(error)
}
await Uninstaller(part, pathGetter())
delete parts_set[username][parttype][partname]
let parts_details_cache = loadData(username, 'parts_details_cache')
delete parts_details_cache[parttype][partname]
}

export function getPartListBase(username, parttype, {
Expand Down Expand Up @@ -155,14 +162,25 @@ export async function getPartDetails(username, parttype, partname) {
let parts_details_cache = loadData(username, 'parts_details_cache')
let details = parts_details_cache?.[parttype]?.[partname]
if (parts_set?.[username]?.[parttype]?.[partname]) details = undefined
if (details === undefined) {
if (details === undefined) try {
const part = await baseloadPart(username, parttype, partname).catch(() => loadPart(username, parttype, partname))
parts_details_cache[parttype] ??= {}
details = parts_details_cache[parttype][partname] = {
info: JSON.parse(JSON.stringify(part.info)),
supportedInterfaces: Object.keys(part.interfaces || {}),
}
}
catch (error) {
return {
info: {
name: partname,
avatar: 'https://api.iconify.design/line-md/emoji-frown-open.svg',
description: 'error loading part',
description_markdown: `# error loading part\n\n\`\`\`\`\n${error.message}\n${error.stack}\`\`\`\``,
},
supportedInterfaces: [],
}
}
const { locale } = getUserByUsername(username)
return {
...details,
Expand Down

0 comments on commit c689b3b

Please sign in to comment.