fix app tabs
This commit is contained in:
parent
ed200431f2
commit
d8769b2d9d
|
|
@ -2,7 +2,7 @@ import { define } from '@because/forge'
|
|||
import type { App } from '../../shared/types'
|
||||
import { restartApp, startApp, stopApp } from '../api'
|
||||
import { openDeleteAppModal, openRenameAppModal } from '../modals'
|
||||
import { apps, selectedTab } from '../state'
|
||||
import { apps, getSelectedTab } from '../state'
|
||||
import {
|
||||
ActionBar,
|
||||
Button,
|
||||
|
|
@ -44,6 +44,7 @@ const OpenEmojiPicker = define('OpenEmojiPicker', {
|
|||
export function AppDetail({ app, render }: { app: App, render: () => void }) {
|
||||
// Find all tools
|
||||
const tools = apps.filter(a => a.tool)
|
||||
const selectedTab = getSelectedTab(app.name)
|
||||
|
||||
return (
|
||||
<Main>
|
||||
|
|
|
|||
|
|
@ -1,16 +1,18 @@
|
|||
import type { App } from '../../shared/types'
|
||||
import { apps, selectedApp, selectedTab, setSelectedTab } from '../state'
|
||||
import { apps, getSelectedTab, setSelectedTab } from '../state'
|
||||
import { Tab, TabBar } from '../styles'
|
||||
import { resetToolIframe } from '../tool-iframes'
|
||||
|
||||
export function Nav({ app, render }: { app: App; render: () => void }) {
|
||||
const selectedTab = getSelectedTab(app.name)
|
||||
|
||||
const handleTabClick = (tab: string) => {
|
||||
// If clicking already-selected tool tab, reset to home
|
||||
if (tab === selectedTab && tab !== 'overview') {
|
||||
resetToolIframe(tab, selectedApp)
|
||||
resetToolIframe(tab, app.name)
|
||||
return
|
||||
}
|
||||
setSelectedTab(tab)
|
||||
setSelectedTab(app.name, tab)
|
||||
render()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { render as renderApp } from 'hono/jsx/dom'
|
||||
import { Dashboard } from './components'
|
||||
import { apps, selectedApp, selectedTab, setApps, setSelectedApp } from './state'
|
||||
import { apps, getSelectedTab, selectedApp, setApps, setSelectedApp } from './state'
|
||||
import { initModal } from './components/modal'
|
||||
import { initToolIframes, updateToolIframes } from './tool-iframes'
|
||||
import { initUpdate } from './update'
|
||||
|
|
@ -10,7 +10,7 @@ const render = () => {
|
|||
// Update tool iframes after DOM settles
|
||||
requestAnimationFrame(() => {
|
||||
const tools = apps.filter(a => a.tool)
|
||||
updateToolIframes(selectedTab, tools, selectedApp)
|
||||
updateToolIframes(getSelectedTab(selectedApp), tools, selectedApp)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ export let sidebarSection: 'apps' | 'tools' = (localStorage.getItem('sidebarSect
|
|||
export let apps: App[] = []
|
||||
|
||||
// Tab state
|
||||
export let selectedTab: string = localStorage.getItem('selectedTab') || 'overview'
|
||||
export let appTabs: Record<string, string> = JSON.parse(localStorage.getItem('appTabs') || '{}')
|
||||
|
||||
// State setters
|
||||
export function setSelectedApp(name: string | null) {
|
||||
|
|
@ -35,7 +35,11 @@ export function setApps(newApps: App[]) {
|
|||
apps = newApps
|
||||
}
|
||||
|
||||
export function setSelectedTab(tab: string) {
|
||||
selectedTab = tab
|
||||
localStorage.setItem('selectedTab', tab)
|
||||
export const getSelectedTab = (appName: string | null) =>
|
||||
appName ? appTabs[appName] || 'overview' : 'overview'
|
||||
|
||||
export function setSelectedTab(appName: string | null, tab: string) {
|
||||
if (!appName) return
|
||||
appTabs[appName] = tab
|
||||
localStorage.setItem('appTabs', JSON.stringify(appTabs))
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user