Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions app/components/ToastStack.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,11 @@
*/
import { animated, useTransition } from '@react-spring/web'

import { useToastStore } from '~/stores/toast'
import { removeToast, useToastStore } from '~/stores/toast'
import { Toast } from '~/ui/lib/Toast'

export function ToastStack() {
const toasts = useToastStore((state) => state.toasts)
const remove = useToastStore((state) => state.remove)

const transition = useTransition(toasts, {
keys: (toast) => toast.id,
Expand All @@ -36,7 +35,7 @@ export function ToastStack() {
key={item.id}
{...item.options}
onClose={() => {
remove(item.id)
removeToast(item.id)
item.options.onClose?.()
}}
/>
Expand Down
4 changes: 2 additions & 2 deletions app/forms/disk-create.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ import { ListboxField } from '~/components/form/fields/ListboxField'
import { NameField } from '~/components/form/fields/NameField'
import { RadioField } from '~/components/form/fields/RadioField'
import { SideModalForm } from '~/components/form/SideModalForm'
import { useForm, useProjectSelector, useToast } from '~/hooks'
import { useForm, useProjectSelector } from '~/hooks'
import { addToast } from '~/stores/toast'
import { FormDivider } from '~/ui/lib/Divider'
import { FieldLabel } from '~/ui/lib/FieldLabel'
import { Radio } from '~/ui/lib/Radio'
Expand Down Expand Up @@ -69,7 +70,6 @@ export function CreateDiskSideModalForm({
onDismiss,
}: CreateSideModalFormProps) {
const queryClient = useApiQueryClient()
const addToast = useToast()
const navigate = useNavigate()

const createDisk = useApiMutation('diskCreate', {
Expand Down
4 changes: 2 additions & 2 deletions app/forms/floating-ip-create.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ import { ListboxField } from '~/components/form/fields/ListboxField'
import { NameField } from '~/components/form/fields/NameField'
import { TextField } from '~/components/form/fields/TextField'
import { SideModalForm } from '~/components/form/SideModalForm'
import { useForm, useProjectSelector, useToast } from '~/hooks'
import { useForm, useProjectSelector } from '~/hooks'
import { addToast } from '~/stores/toast'
import { Badge } from '~/ui/lib/Badge'
import { Message } from '~/ui/lib/Message'
import { pb } from '~/util/path-builder'
Expand Down Expand Up @@ -65,7 +66,6 @@ export function CreateFloatingIpSideModalForm() {

const queryClient = useApiQueryClient()
const projectSelector = useProjectSelector()
const addToast = useToast()
const navigate = useNavigate()

const createFloatingIp = useApiMutation('floatingIpCreate', {
Expand Down
4 changes: 2 additions & 2 deletions app/forms/floating-ip-edit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ import {
import { DescriptionField } from '~/components/form/fields/DescriptionField'
import { NameField } from '~/components/form/fields/NameField'
import { SideModalForm } from '~/components/form/SideModalForm'
import { getFloatingIpSelector, useFloatingIpSelector, useForm, useToast } from 'app/hooks'
import { addToast } from '~/stores/toast'
import { getFloatingIpSelector, useFloatingIpSelector, useForm } from 'app/hooks'
import { pb } from 'app/util/path-builder'

EditFloatingIpSideModalForm.loader = async ({ params }: LoaderFunctionArgs) => {
Expand All @@ -31,7 +32,6 @@ EditFloatingIpSideModalForm.loader = async ({ params }: LoaderFunctionArgs) => {

export function EditFloatingIpSideModalForm() {
const queryClient = useApiQueryClient()
const addToast = useToast()
const navigate = useNavigate()

const floatingIpSelector = useFloatingIpSelector()
Expand Down
4 changes: 2 additions & 2 deletions app/forms/idp/create.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ import { FileField } from '~/components/form/fields/FileField'
import { NameField } from '~/components/form/fields/NameField'
import { TextField } from '~/components/form/fields/TextField'
import { SideModalForm } from '~/components/form/SideModalForm'
import { useForm, useSiloSelector, useToast } from '~/hooks'
import { useForm, useSiloSelector } from '~/hooks'
import { addToast } from '~/stores/toast'
import { readBlobAsBase64 } from '~/util/file'
import { pb } from '~/util/path-builder'

Expand Down Expand Up @@ -43,7 +44,6 @@ const defaultValues: IdpCreateFormValues = {
export function CreateIdpSideModalForm() {
const navigate = useNavigate()
const queryClient = useApiQueryClient()
const addToast = useToast()

const { silo } = useSiloSelector()

Expand Down
4 changes: 2 additions & 2 deletions app/forms/instance-create.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ import { SshKeysField } from '~/components/form/fields/SshKeysField'
import { TextField } from '~/components/form/fields/TextField'
import { Form } from '~/components/form/Form'
import { FullPageForm } from '~/components/form/FullPageForm'
import { getProjectSelector, useForm, useProjectSelector, useToast } from '~/hooks'
import { getProjectSelector, useForm, useProjectSelector } from '~/hooks'
import { addToast } from '~/stores/toast'
import { FormDivider } from '~/ui/lib/Divider'
import { EmptyMessage } from '~/ui/lib/EmptyMessage'
import { Message } from '~/ui/lib/Message'
Expand Down Expand Up @@ -150,7 +151,6 @@ CreateInstanceForm.loader = async ({ params }: LoaderFunctionArgs) => {
export function CreateInstanceForm() {
const [isSubmitting, setIsSubmitting] = useState(false)
const queryClient = useApiQueryClient()
const addToast = useToast()
const { project } = useProjectSelector()
const navigate = useNavigate()

Expand Down
4 changes: 2 additions & 2 deletions app/forms/ip-pool-edit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ import {
import { DescriptionField } from '~/components/form/fields/DescriptionField'
import { NameField } from '~/components/form/fields/NameField'
import { SideModalForm } from '~/components/form/SideModalForm'
import { getIpPoolSelector, useForm, useIpPoolSelector, useToast } from '~/hooks'
import { getIpPoolSelector, useForm, useIpPoolSelector } from '~/hooks'
import { addToast } from '~/stores/toast'
import { pb } from '~/util/path-builder'

EditIpPoolSideModalForm.loader = async ({ params }: LoaderFunctionArgs) => {
Expand All @@ -28,7 +29,6 @@ EditIpPoolSideModalForm.loader = async ({ params }: LoaderFunctionArgs) => {

export function EditIpPoolSideModalForm() {
const queryClient = useApiQueryClient()
const addToast = useToast()
const navigate = useNavigate()

const poolSelector = useIpPoolSelector()
Expand Down
4 changes: 2 additions & 2 deletions app/forms/project-edit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@ import { DescriptionField } from '~/components/form/fields/DescriptionField'
import { NameField } from '~/components/form/fields/NameField'
import { SideModalForm } from '~/components/form/SideModalForm'
import { useForm } from '~/hooks'
import { addToast } from '~/stores/toast'
import { pb } from '~/util/path-builder'

import { getProjectSelector, useProjectSelector, useToast } from '../hooks'
import { getProjectSelector, useProjectSelector } from '../hooks'

EditProjectSideModalForm.loader = async ({ params }: LoaderFunctionArgs) => {
const { project } = getProjectSelector(params)
Expand All @@ -30,7 +31,6 @@ EditProjectSideModalForm.loader = async ({ params }: LoaderFunctionArgs) => {

export function EditProjectSideModalForm() {
const queryClient = useApiQueryClient()
const addToast = useToast()
const navigate = useNavigate()

const projectSelector = useProjectSelector()
Expand Down
4 changes: 2 additions & 2 deletions app/forms/silo-create.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ import { RadioField } from '~/components/form/fields/RadioField'
import { TextField } from '~/components/form/fields/TextField'
import { TlsCertsField } from '~/components/form/fields/TlsCertsField'
import { SideModalForm } from '~/components/form/SideModalForm'
import { useForm, useToast } from '~/hooks'
import { useForm } from '~/hooks'
import { addToast } from '~/stores/toast'
import { FormDivider } from '~/ui/lib/Divider'
import { pb } from '~/util/path-builder'
import { GiB } from '~/util/units'
Expand Down Expand Up @@ -50,7 +51,6 @@ function validateQuota(value: number) {
export function CreateSiloSideModalForm() {
const navigate = useNavigate()
const queryClient = useApiQueryClient()
const addToast = useToast()

const onDismiss = () => navigate(pb.silos())

Expand Down
4 changes: 2 additions & 2 deletions app/forms/snapshot-create.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ import { DescriptionField } from '~/components/form/fields/DescriptionField'
import { ListboxField } from '~/components/form/fields/ListboxField'
import { NameField } from '~/components/form/fields/NameField'
import { SideModalForm } from '~/components/form/SideModalForm'
import { useForm, useProjectSelector, useToast } from '~/hooks'
import { useForm, useProjectSelector } from '~/hooks'
import { addToast } from '~/stores/toast'
import { pb } from '~/util/path-builder'

const useSnapshotDiskItems = (projectSelector: PP.Project) => {
Expand All @@ -43,7 +44,6 @@ const defaultValues: SnapshotCreate = {
export function CreateSnapshotSideModalForm() {
const queryClient = useApiQueryClient()
const projectSelector = useProjectSelector()
const addToast = useToast()
const navigate = useNavigate()

const diskItems = useSnapshotDiskItems(projectSelector)
Expand Down
4 changes: 2 additions & 2 deletions app/forms/vpc-create.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ import { DescriptionField } from '~/components/form/fields/DescriptionField'
import { NameField } from '~/components/form/fields/NameField'
import { TextField } from '~/components/form/fields/TextField'
import { SideModalForm } from '~/components/form/SideModalForm'
import { useForm, useProjectSelector, useToast } from '~/hooks'
import { useForm, useProjectSelector } from '~/hooks'
import { addToast } from '~/stores/toast'
import { pb } from '~/util/path-builder'

const defaultValues: VpcCreate = {
Expand All @@ -25,7 +26,6 @@ const defaultValues: VpcCreate = {
export function CreateVpcSideModalForm() {
const projectSelector = useProjectSelector()
const queryClient = useApiQueryClient()
const addToast = useToast()
const navigate = useNavigate()

const createVpc = useApiMutation('vpcCreate', {
Expand Down
4 changes: 2 additions & 2 deletions app/forms/vpc-edit.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ import {
import { DescriptionField } from '~/components/form/fields/DescriptionField'
import { NameField } from '~/components/form/fields/NameField'
import { SideModalForm } from '~/components/form/SideModalForm'
import { getVpcSelector, useForm, useToast, useVpcSelector } from '~/hooks'
import { getVpcSelector, useForm, useVpcSelector } from '~/hooks'
import { addToast } from '~/stores/toast'
import { pb } from '~/util/path-builder'

EditVpcSideModalForm.loader = async ({ params }: LoaderFunctionArgs) => {
Expand All @@ -29,7 +30,6 @@ EditVpcSideModalForm.loader = async ({ params }: LoaderFunctionArgs) => {
export function EditVpcSideModalForm() {
const { vpc: vpcName, project } = useVpcSelector()
const queryClient = useApiQueryClient()
const addToast = useToast()
const navigate = useNavigate()

const { data: vpc } = usePrefetchedApiQuery('vpcView', {
Expand Down
1 change: 0 additions & 1 deletion app/hooks/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,3 @@ export * from './use-key'
export * from './use-params'
export * from './use-quick-actions'
export * from './use-reduce-motion'
export * from './use-toast'
10 changes: 0 additions & 10 deletions app/hooks/use-toast.ts

This file was deleted.

6 changes: 3 additions & 3 deletions app/pages/LoginPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@ import { useApiMutation, type UsernamePasswordCredentials } from '@oxide/api'

import { TextFieldInner } from '~/components/form/fields/TextField'
import { useForm } from '~/hooks'
import { addToast } from '~/stores/toast'
import { Button } from '~/ui/lib/Button'
import { Identicon } from '~/ui/lib/Identicon'
import { pb } from '~/util/path-builder'

import { useSiloSelector, useToast } from '../hooks'
import { useSiloSelector } from '../hooks'

const defaultValues: UsernamePasswordCredentials = {
username: '',
Expand All @@ -27,7 +28,6 @@ const defaultValues: UsernamePasswordCredentials = {
export function LoginPage() {
const [searchParams] = useSearchParams()
const navigate = useNavigate()
const addToast = useToast()
const { silo } = useSiloSelector()

const form = useForm({ defaultValues })
Expand All @@ -39,7 +39,7 @@ export function LoginPage() {
addToast({ title: 'Logged in' })
navigate(searchParams.get('redirect_uri') || pb.projects())
}
}, [loginPost.isSuccess, navigate, searchParams, addToast])
}, [loginPost.isSuccess, navigate, searchParams])

return (
<>
Expand Down
6 changes: 3 additions & 3 deletions app/pages/project/disks/DisksPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ import {
import { Storage24Icon } from '@oxide/design-system/icons/react'

import { DiskStatusBadge } from '~/components/StatusBadge'
import { getProjectSelector, useProjectSelector, useToast } from '~/hooks'
import { getProjectSelector, useProjectSelector } from '~/hooks'
import { confirmDelete } from '~/stores/confirm-delete'
import { addToast } from '~/stores/toast'
import { InstanceLinkCell } from '~/table/cells/InstanceLinkCell'
import { useColsWithActions, type MenuAction } from '~/table/columns/action-col'
import { Columns } from '~/table/columns/common'
Expand Down Expand Up @@ -94,7 +95,6 @@ export function DisksPage() {
const queryClient = useApiQueryClient()
const { project } = useProjectSelector()
const { Table } = useQueryTable('diskList', { query: { project } })
const addToast = useToast()

const deleteDisk = useApiMutation('diskDelete', {
onSuccess() {
Expand Down Expand Up @@ -153,7 +153,7 @@ export function DisksPage() {
)),
},
],
[addToast, createSnapshot, deleteDisk, project]
[createSnapshot, deleteDisk, project]
)

const columns = useColsWithActions(staticCols, makeActions)
Expand Down
6 changes: 3 additions & 3 deletions app/pages/project/images/ImagesPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ import { Link, Outlet, type LoaderFunctionArgs } from 'react-router-dom'
import { apiQueryClient, useApiMutation, useApiQueryClient, type Image } from '@oxide/api'
import { Images24Icon } from '@oxide/design-system/icons/react'

import { getProjectSelector, useProjectSelector, useToast } from '~/hooks'
import { getProjectSelector, useProjectSelector } from '~/hooks'
import { confirmDelete } from '~/stores/confirm-delete'
import { addToast } from '~/stores/toast'
import { makeLinkCell } from '~/table/cells/LinkCell'
import { getActionsCol, type MenuAction } from '~/table/columns/action-col'
import { Columns } from '~/table/columns/common'
Expand Down Expand Up @@ -50,7 +51,6 @@ export function ImagesPage() {
const { project } = useProjectSelector()
const { Table } = useQueryTable('imageList', { query: { project } })
const queryClient = useApiQueryClient()
const addToast = useToast()

const [promoteImageName, setPromoteImageName] = useState<string | null>(null)

Expand Down Expand Up @@ -121,7 +121,7 @@ type PromoteModalProps = { onDismiss: () => void; imageName: string }
const PromoteImageModal = ({ onDismiss, imageName }: PromoteModalProps) => {
const { project } = useProjectSelector()
const queryClient = useApiQueryClient()
const addToast = useToast()

const promoteImage = useApiMutation('imagePromote', {
onSuccess(data) {
addToast({
Expand Down
Loading