feat(app): migrate to solid-sonner (#39519)
Co-authored-by: Brendan Allan <git@brendonovich.dev>
This commit is contained in:
parent
73009f0b09
commit
a9eda2e99e
10 changed files with 406 additions and 209 deletions
|
|
@ -33,8 +33,7 @@ import { createStore, produce, reconcile } from "solid-js/store"
|
|||
import { DragDropProvider, DragDropSensors, DragOverlay, SortableProvider, closestCenter } from "@thisbeyond/solid-dnd"
|
||||
import type { DragEvent } from "@thisbeyond/solid-dnd"
|
||||
import { useProviders } from "@/hooks/use-providers"
|
||||
import { toaster } from "@opencode-ai/ui/toast"
|
||||
import { setV2Toast, showToast, ToastRegion } from "@/utils/toast"
|
||||
import { dismissToast, setV2Toast, showToast, ToastRegion } from "@/utils/toast"
|
||||
import { useServerSDK } from "@/context/server-sdk"
|
||||
import { normalizeProjectInfo } from "@/context/global-sync/utils"
|
||||
import { clearWorkspaceTerminals } from "@/context/terminal"
|
||||
|
|
@ -384,7 +383,7 @@ export default function LegacyLayout(props: ParentProps) {
|
|||
const dismissSessionAlert = (sessionKey: string) => {
|
||||
const toastId = toastBySession.get(sessionKey)
|
||||
if (toastId === undefined) return
|
||||
toaster.dismiss(toastId)
|
||||
dismissToast(toastId)
|
||||
toastBySession.delete(sessionKey)
|
||||
alertedAtBySession.delete(sessionKey)
|
||||
}
|
||||
|
|
@ -1459,7 +1458,7 @@ export default function LegacyLayout(props: ParentProps) {
|
|||
title: language.t("workspace.resetting.title"),
|
||||
description: language.t("workspace.resetting.description"),
|
||||
})
|
||||
const dismiss = () => toaster.dismiss(progress)
|
||||
const dismiss = () => dismissToast(progress)
|
||||
|
||||
const sessions = await listAllSessions(serverSDK().api.session, { directory, order: "desc" }).catch(() => [])
|
||||
|
||||
|
|
@ -2450,7 +2449,7 @@ function UpdateAvailableToast(props: {
|
|||
|
||||
onCleanup(() => {
|
||||
if (toastId === undefined) return
|
||||
toaster.dismiss(toastId)
|
||||
dismissToast(toastId)
|
||||
})
|
||||
|
||||
return null
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
import { Icon, type IconProps } from "@opencode-ai/ui/icon"
|
||||
import { Toast, showToast as showLegacyToast, type ToastOptions, type ToastVariant } from "@opencode-ai/ui/toast"
|
||||
import { ToastV2, showToastV2 } from "@opencode-ai/ui/v2/toast-v2"
|
||||
import {
|
||||
Toast,
|
||||
showToast as showLegacyToast,
|
||||
toaster as legacyToaster,
|
||||
type ToastOptions,
|
||||
type ToastVariant,
|
||||
} from "@opencode-ai/ui/toast"
|
||||
import { ToastV2, showToastV2, toasterV2 } from "@opencode-ai/ui/v2/toast-v2"
|
||||
|
||||
let v2 = false
|
||||
|
||||
|
|
@ -27,6 +33,13 @@ export function showToast(options: ToastOptions | string) {
|
|||
})
|
||||
}
|
||||
|
||||
// v1 and v2 ids come from separate registries, so dismissal has to use the same
|
||||
// implementation that issued the id.
|
||||
export function dismissToast(toastId: number) {
|
||||
if (!v2) return legacyToaster.dismiss(toastId)
|
||||
return toasterV2.dismiss(toastId)
|
||||
}
|
||||
|
||||
function resolveIcon(icon: IconProps["name"] | undefined, variant: ToastVariant | undefined) {
|
||||
const name = icon ?? (variant === "success" ? "check" : undefined)
|
||||
if (!name) return
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue