Add share field to app type and show share button

This commit is contained in:
Chris Wanstrath 2026-03-08 23:17:35 -07:00
parent 423c9588da
commit e0347444aa
4 changed files with 8 additions and 5 deletions

View File

@ -64,7 +64,7 @@ export function AppDetail({ app, render }: { app: App, render: () => void }) {
<ClickableAppName onClick={() => openRenameAppModal(app)}>{app.name}</ClickableAppName>
</MainTitle>
<HeaderActions>
{!app.tool && (
{(!app.tool || app.share) && (
app.tunnelUrl
? <Button onClick={() => { unshareApp(app.name) }}>Unshare</Button>
: app.tunnelEnabled

View File

@ -29,9 +29,9 @@ router.sse('/stream', (send) => {
let queue = Promise.resolve()
const broadcast = () => {
const apps: SharedApp[] = allApps().map(({
name, state, icon, error, port, started, logs, tool, apps: apps_, dashboard, tunnelEnabled, tunnelUrl
name, state, icon, error, port, started, logs, tool, apps: apps_, dashboard, share, tunnelEnabled, tunnelUrl
}) => ({
name, state, icon, error, port, started, logs, tool, apps: apps_, dashboard, tunnelEnabled, tunnelUrl,
name, state, icon, error, port, started, logs, tool, apps: apps_, dashboard, share, tunnelEnabled, tunnelUrl,
}))
queue = queue.then(() => send(apps))
}

View File

@ -162,7 +162,8 @@ export function registerApp(dir: string) {
const tool = pkg.toes?.tool
const apps = pkg.toes?.apps
const dashboard = pkg.toes?.dashboard
_apps.set(dir, { name: dir, state, icon, error, tool, apps, dashboard })
const share = pkg.toes?.share
_apps.set(dir, { name: dir, state, icon, error, tool, apps, dashboard, share })
update()
emit({ type: 'app:create', app: dir })
if (!error) {
@ -353,7 +354,8 @@ function discoverApps() {
const tool = pkg.toes?.tool
const apps = pkg.toes?.apps
const dashboard = pkg.toes?.dashboard
_apps.set(dir, { name: dir, state, icon, error, tool, apps, dashboard })
const share = pkg.toes?.share
_apps.set(dir, { name: dir, state, icon, error, tool, apps, dashboard, share })
}
update()
}

View File

@ -31,6 +31,7 @@ export type App = {
tool?: boolean | string
apps?: boolean
dashboard?: boolean
share?: boolean
tunnelEnabled?: boolean
tunnelUrl?: string
}