fix: update settings when visiting a settings page directly

This commit is contained in:
Henry Dollman
2024-09-16 16:51:23 -04:00
parent ddfcbc546b
commit 812fe20df7
2 changed files with 14 additions and 4 deletions

View File

@@ -71,7 +71,11 @@ export default function SettingsProfilePage({ userSettings }: { userSettings: Us
<Label className="block" htmlFor="chartTime"> <Label className="block" htmlFor="chartTime">
Default time period Default time period
</Label> </Label>
<Select name="chartTime" defaultValue={userSettings.chartTime}> <Select
name="chartTime"
key={userSettings.chartTime}
defaultValue={userSettings.chartTime}
>
<SelectTrigger id="chartTime"> <SelectTrigger id="chartTime">
<SelectValue /> <SelectValue />
</SelectTrigger> </SelectTrigger>

View File

@@ -5,7 +5,7 @@ import { pb } from '@/lib/stores'
import { Separator } from '@/components/ui/separator' import { Separator } from '@/components/ui/separator'
import { Card } from '@/components/ui/card' import { Card } from '@/components/ui/card'
import { BellIcon, LoaderCircleIcon, PlusIcon, SaveIcon, Trash2Icon } from 'lucide-react' import { BellIcon, LoaderCircleIcon, PlusIcon, SaveIcon, Trash2Icon } from 'lucide-react'
import { ChangeEventHandler, useState } from 'react' import { ChangeEventHandler, useEffect, useState } from 'react'
import { toast } from '@/components/ui/use-toast' import { toast } from '@/components/ui/use-toast'
import { InputTags } from '@/components/ui/input-tags' import { InputTags } from '@/components/ui/input-tags'
import { UserSettings } from '@/types' import { UserSettings } from '@/types'
@@ -29,7 +29,13 @@ const SettingsNotificationsPage = ({ userSettings }: { userSettings: UserSetting
const [emails, setEmails] = useState<string[]>(userSettings.emails ?? []) const [emails, setEmails] = useState<string[]>(userSettings.emails ?? [])
const [isLoading, setIsLoading] = useState(false) const [isLoading, setIsLoading] = useState(false)
const addWebhook = () => { // update values when userSettings changes
useEffect(() => {
setWebhooks(userSettings.webhooks ?? [])
setEmails(userSettings.emails ?? [])
}, [userSettings])
function addWebhook() {
setWebhooks([...webhooks, '']) setWebhooks([...webhooks, ''])
// focus on the new input // focus on the new input
queueMicrotask(() => { queueMicrotask(() => {
@@ -39,7 +45,7 @@ const SettingsNotificationsPage = ({ userSettings }: { userSettings: UserSetting
} }
const removeWebhook = (index: number) => setWebhooks(webhooks.filter((_, i) => i !== index)) const removeWebhook = (index: number) => setWebhooks(webhooks.filter((_, i) => i !== index))
const updateWebhook = (index: number, value: string) => { function updateWebhook(index: number, value: string) {
const newWebhooks = [...webhooks] const newWebhooks = [...webhooks]
newWebhooks[index] = value newWebhooks[index] = value
setWebhooks(newWebhooks) setWebhooks(newWebhooks)