fix(app): move workspace New session into header (#12624)
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import { useNavigate, useParams } from "@solidjs/router"
|
||||||
import { createEffect, createMemo, For, Show, type Accessor, type JSX } from "solid-js"
|
import { createEffect, createMemo, For, Show, type Accessor, type JSX } from "solid-js"
|
||||||
import { createStore } from "solid-js/store"
|
import { createStore } from "solid-js/store"
|
||||||
import { createSortable } from "@thisbeyond/solid-dnd"
|
import { createSortable } from "@thisbeyond/solid-dnd"
|
||||||
@@ -86,6 +87,8 @@ export const SortableWorkspace = (props: {
|
|||||||
project: LocalProject
|
project: LocalProject
|
||||||
mobile?: boolean
|
mobile?: boolean
|
||||||
}): JSX.Element => {
|
}): JSX.Element => {
|
||||||
|
const navigate = useNavigate()
|
||||||
|
const params = useParams()
|
||||||
const globalSync = useGlobalSync()
|
const globalSync = useGlobalSync()
|
||||||
const language = useLanguage()
|
const language = useLanguage()
|
||||||
const sortable = createSortable(props.directory)
|
const sortable = createSortable(props.directory)
|
||||||
@@ -111,6 +114,7 @@ export const SortableWorkspace = (props: {
|
|||||||
const busy = createMemo(() => props.ctx.isBusy(props.directory))
|
const busy = createMemo(() => props.ctx.isBusy(props.directory))
|
||||||
const wasBusy = createMemo((prev) => prev || busy(), false)
|
const wasBusy = createMemo((prev) => prev || busy(), false)
|
||||||
const loading = createMemo(() => open() && !booted() && sessions().length === 0 && !wasBusy())
|
const loading = createMemo(() => open() && !booted() && sessions().length === 0 && !wasBusy())
|
||||||
|
const showNew = createMemo(() => !loading() && (sessions().length === 0 || (active() && !params.id)))
|
||||||
const loadMore = async () => {
|
const loadMore = async () => {
|
||||||
setWorkspaceStore("limit", (limit) => limit + 5)
|
setWorkspaceStore("limit", (limit) => limit + 5)
|
||||||
await globalSync.project.loadSessions(props.directory)
|
await globalSync.project.loadSessions(props.directory)
|
||||||
@@ -260,6 +264,23 @@ export const SortableWorkspace = (props: {
|
|||||||
</DropdownMenu.Content>
|
</DropdownMenu.Content>
|
||||||
</DropdownMenu.Portal>
|
</DropdownMenu.Portal>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
|
<Tooltip value={language.t("command.session.new")} placement="top">
|
||||||
|
<IconButton
|
||||||
|
icon="plus-small"
|
||||||
|
variant="ghost"
|
||||||
|
class="size-6 rounded-md opacity-0 pointer-events-none group-hover/workspace:opacity-100 group-hover/workspace:pointer-events-auto group-focus-within/workspace:opacity-100 group-focus-within/workspace:pointer-events-auto"
|
||||||
|
data-action="workspace-new-session"
|
||||||
|
data-workspace={base64Encode(props.directory)}
|
||||||
|
aria-label={language.t("command.session.new")}
|
||||||
|
onClick={(event) => {
|
||||||
|
event.preventDefault()
|
||||||
|
event.stopPropagation()
|
||||||
|
props.ctx.setHoverSession(undefined)
|
||||||
|
props.ctx.clearHoverProjectSoon()
|
||||||
|
navigate(`/${slug()}/session`)
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</Tooltip>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -267,13 +288,15 @@ export const SortableWorkspace = (props: {
|
|||||||
|
|
||||||
<Collapsible.Content>
|
<Collapsible.Content>
|
||||||
<nav class="flex flex-col gap-1 px-2">
|
<nav class="flex flex-col gap-1 px-2">
|
||||||
<NewSessionItem
|
<Show when={showNew()}>
|
||||||
slug={slug()}
|
<NewSessionItem
|
||||||
mobile={props.mobile}
|
slug={slug()}
|
||||||
sidebarExpanded={props.ctx.sidebarExpanded}
|
mobile={props.mobile}
|
||||||
clearHoverProjectSoon={props.ctx.clearHoverProjectSoon}
|
sidebarExpanded={props.ctx.sidebarExpanded}
|
||||||
setHoverSession={props.ctx.setHoverSession}
|
clearHoverProjectSoon={props.ctx.clearHoverProjectSoon}
|
||||||
/>
|
setHoverSession={props.ctx.setHoverSession}
|
||||||
|
/>
|
||||||
|
</Show>
|
||||||
<Show when={loading()}>
|
<Show when={loading()}>
|
||||||
<SessionSkeleton />
|
<SessionSkeleton />
|
||||||
</Show>
|
</Show>
|
||||||
|
|||||||
Reference in New Issue
Block a user