feat: button to hide welcome msg

This commit is contained in:
Vasily Zubarev
2025-03-16 22:24:02 +01:00
parent c563a41ed2
commit 7ff5baf837
5 changed files with 22 additions and 6 deletions

View File

@@ -18,7 +18,7 @@ export async function saveSettingsAction(prevState: any, formData: FormData) {
} }
for (const key in validatedForm.data) { for (const key in validatedForm.data) {
await updateSettings(key, validatedForm.data[key as keyof typeof validatedForm.data] || "") await updateSettings(key, validatedForm.data[key as keyof typeof validatedForm.data])
} }
revalidatePath("/settings") revalidatePath("/settings")

View File

@@ -1,7 +1,8 @@
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"
import { Card, CardDescription, CardTitle } from "@/components/ui/card" import { Card, CardDescription, CardTitle } from "@/components/ui/card"
import { getSettings } from "@/data/settings" import { getSettings, updateSettings } from "@/data/settings"
import { Banknote, ChartBarStacked, FolderOpenDot, Key, TextCursorInput } from "lucide-react" import { Banknote, ChartBarStacked, FolderOpenDot, Key, TextCursorInput, X } from "lucide-react"
import { revalidatePath } from "next/cache"
import Link from "next/link" import Link from "next/link"
export async function WelcomeWidget() { export async function WelcomeWidget() {
@@ -11,7 +12,20 @@ export async function WelcomeWidget() {
<Card className="flex flex-col md:flex-row items-start gap-10 p-10 w-full"> <Card className="flex flex-col md:flex-row items-start gap-10 p-10 w-full">
<img src="/logo/1024.png" alt="Logo" className="w-64 h-64" /> <img src="/logo/1024.png" alt="Logo" className="w-64 h-64" />
<div className="flex flex-col"> <div className="flex flex-col">
<CardTitle className="text-2xl font-bold">Hey, I'm TaxHacker 👋</CardTitle> <CardTitle className="flex items-center justify-between">
<span className="text-2xl font-bold">Hey, I'm TaxHacker 👋</span>
<Button
variant="outline"
size="icon"
onClick={async () => {
"use server"
await updateSettings("is_welcome_message_hidden", "true")
revalidatePath("/")
}}
>
<X className="h-4 w-4" />
</Button>
</CardTitle>
<CardDescription className="mt-5"> <CardDescription className="mt-5">
<p className="mb-3"> <p className="mb-3">
I'm a little accountant app that tries to help you deal with endless receipts, checks and invoices with (you I'm a little accountant app that tries to help you deal with endless receipts, checks and invoices with (you

View File

@@ -118,7 +118,7 @@ export function ExportTransactionsDialog({
<div className="grid grid-cols-2 gap-2"> <div className="grid grid-cols-2 gap-2">
{fields.map((field) => ( {fields.map((field) => (
<div key={field.code} className="inline-flex gap-2"> <div key={field.code} className="inline-flex gap-2">
<label className="flex gap-1"> <label className="flex items-center gap-1">
<input <input
type="checkbox" type="checkbox"
name={field.code} name={field.code}

View File

@@ -11,7 +11,8 @@ export const getSettings = cache(async (): Promise<SettingsMap> => {
}, {} as SettingsMap) }, {} as SettingsMap)
}) })
export const updateSettings = cache(async (code: string, value: string) => { export const updateSettings = cache(async (code: string, value?: any) => {
console.log("updateSettings", code, value)
return await prisma.setting.upsert({ return await prisma.setting.upsert({
where: { code }, where: { code },
update: { value }, update: { value },

View File

@@ -8,4 +8,5 @@ export const settingsFormSchema = z.object({
default_project: z.string().optional(), default_project: z.string().optional(),
openai_api_key: z.string().optional(), openai_api_key: z.string().optional(),
prompt_analyse_new_file: z.string().optional(), prompt_analyse_new_file: z.string().optional(),
is_welcome_message_hidden: z.boolean().optional(),
}) })