From 795ec163919f8a6e629891cfa40b3090063637d6 Mon Sep 17 00:00:00 2001 From: Pontus Abrahamsson Date: Mon, 20 Nov 2023 22:06:57 +0100 Subject: [PATCH 1/4] Export --- .env-example | 1 - apps/dashboard/package.json | 8 ++--- .../src/actions/export-transactions-action.ts | 2 +- apps/dashboard/src/actions/schema.ts | 4 +-- .../src/app/api/download/document/route.ts | 2 +- apps/dashboard/src/components/attachments.tsx | 6 ++-- .../modals/export-transactions-modal.tsx | 19 +++++++++++- apps/dashboard/src/jobs/transactions.ts | 29 +++++++++++++++--- apps/website/package.json | 2 +- apps/website/src/locales/en.ts | 2 +- bun.lockb | Bin 435280 -> 435328 bytes package.json | 2 +- packages/email/package.json | 2 +- packages/gocardless/package.json | 2 +- packages/location/package.json | 2 +- packages/notification/package.json | 2 +- packages/supabase/package.json | 2 +- packages/supabase/src/mutations/index.ts | 2 +- .../supabase/src/queries/cached-queries.ts | 1 - packages/supabase/src/queries/index.ts | 2 +- packages/ui/package.json | 2 +- turbo.json | 4 +-- 22 files changed, 65 insertions(+), 33 deletions(-) diff --git a/.env-example b/.env-example index f7fdbbb87c..43bb08067b 100644 --- a/.env-example +++ b/.env-example @@ -1,4 +1,3 @@ -NEXTAUTH_URL=http://localhost:3000 NEXT_PUBLIC_SUPABASE_URL= NEXT_PUBLIC_SUPABASE_ANON_KEY= RESEND_API_KEY= diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 503961070a..998bf5598f 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -5,7 +5,7 @@ "scripts": { "build": "NODE_ENV=production next build", "clean": "git clean -xdf .next .turbo node_modules", - "jobs": "bunx @trigger.dev/cli@latest dev --port 3001", + "jobs": "bunx @trigger.dev/cli@latest dev --port 3001 --client-id=midday-CpkS", "dev": "next dev -p 3001", "lint": "next lint", "format": "biome format --write .", @@ -38,16 +38,16 @@ "react-dom": "18.2.0", "react-dropzone": "^14.2.3", "react-hook-form": "^7.48.2", - "recharts": "^2.9.3", + "recharts": "^2.10.1", "sharp": "^0.32.6", "zod": "^3.22.4" }, "devDependencies": { "@midday/tsconfig": "workspace:*", "@t3-oss/env-nextjs": "^0.7.1", - "@types/node": "^20.9.1", + "@types/node": "^20.9.2", "@types/react": "^18.2.37", "@types/react-dom": "^18.2.15", - "typescript": "^5.2.2" + "typescript": "^5.3.2" } } \ No newline at end of file diff --git a/apps/dashboard/src/actions/export-transactions-action.ts b/apps/dashboard/src/actions/export-transactions-action.ts index 84efa67a31..a051430f5f 100644 --- a/apps/dashboard/src/actions/export-transactions-action.ts +++ b/apps/dashboard/src/actions/export-transactions-action.ts @@ -19,6 +19,6 @@ export const exportTransactionsAction = action( }, }); - console.log(event); + return event; } ); diff --git a/apps/dashboard/src/actions/schema.ts b/apps/dashboard/src/actions/schema.ts index 9506e249ae..d7a0d763bb 100644 --- a/apps/dashboard/src/actions/schema.ts +++ b/apps/dashboard/src/actions/schema.ts @@ -66,6 +66,6 @@ export const createAttachmentsSchema = z.array( export const deleteAttachmentSchema = z.string(); export const exportTransactionsSchema = z.object({ - from: z.string(), - to: z.string(), + from: z.coerce.date(), + to: z.coerce.date(), }); diff --git a/apps/dashboard/src/app/api/download/document/route.ts b/apps/dashboard/src/app/api/download/document/route.ts index a3eadb9962..510cbfe5cf 100644 --- a/apps/dashboard/src/app/api/download/document/route.ts +++ b/apps/dashboard/src/app/api/download/document/route.ts @@ -9,7 +9,7 @@ export async function GET(req, res) { const path = requestUrl.searchParams.get("path"); const filename = requestUrl.searchParams.get("filename"); - const { data } = await supabase.storage.from("files").download(path); + const { data } = await supabase.storage.from("vault").download(path); const responseHeaders = new Headers(res.headers); responseHeaders.set( diff --git a/apps/dashboard/src/components/attachments.tsx b/apps/dashboard/src/components/attachments.tsx index d48a6ad4ed..988a193029 100644 --- a/apps/dashboard/src/components/attachments.tsx +++ b/apps/dashboard/src/components/attachments.tsx @@ -87,7 +87,7 @@ export function Attachments({ id, data }) { const uploadedFiles = await Promise.all( acceptedFiles.map(async (acceptedFile) => { const { path } = await uploadFile({ - bucket: "files", + bucket: "vault", path: `${userData?.team_id}/transactions/${id}`, file: acceptedFile, }); @@ -99,7 +99,7 @@ export function Attachments({ id, data }) { transaction_id: id, type: acceptedFile.type, }; - }), + }) ); const { data: newFiles } = await createAttachmentsAction(uploadedFiles); @@ -120,7 +120,7 @@ export function Attachments({ id, data }) {
diff --git a/apps/dashboard/src/components/modals/export-transactions-modal.tsx b/apps/dashboard/src/components/modals/export-transactions-modal.tsx index 2b1586e105..f592a1388f 100644 --- a/apps/dashboard/src/components/modals/export-transactions-modal.tsx +++ b/apps/dashboard/src/components/modals/export-transactions-modal.tsx @@ -10,6 +10,7 @@ import { DialogHeader, DialogTitle, } from "@midday/ui/dialog"; +import { useToast } from "@midday/ui/use-toast"; import { Loader2 } from "lucide-react"; import { useAction } from "next-safe-action/hook"; import { useSearchParams } from "next/navigation"; @@ -17,9 +18,10 @@ import { useEffect } from "react"; export function ExportTransactionsModal({ isOpen, setOpen }) { const searchParams = useSearchParams(); - const { execute, status } = useAction(exportTransactionsAction); + const { execute, status, result } = useAction(exportTransactionsAction); const filter = searchParams.get("filter"); const date = filter ? JSON.parse(filter)?.date : null; + const { toast } = useToast(); useEffect(() => { if (status === "hasSucceeded" && isOpen) { @@ -27,6 +29,21 @@ export function ExportTransactionsModal({ isOpen, setOpen }) { } }, [status]); + useEffect(() => { + if (result.data) { + toast({ + duration: 6000, + title: "Exporting...", + description: "Your export is ready base on 46 transactions.", + // action: ( + // + // Yes + // + // ), + }); + } + }, [result]); + return ( diff --git a/apps/dashboard/src/jobs/transactions.ts b/apps/dashboard/src/jobs/transactions.ts index dd6bc77e33..0259c060d3 100644 --- a/apps/dashboard/src/jobs/transactions.ts +++ b/apps/dashboard/src/jobs/transactions.ts @@ -3,6 +3,7 @@ import { TransactionsEmail } from "@midday/email/emails/transactions"; import { getI18n } from "@midday/email/locales"; import { getTransactions } from "@midday/gocardless"; import { TriggerEvents, triggerBulk } from "@midday/notification"; +import { getTransactionsQuery } from "@midday/supabase/queries"; import { Database } from "@midday/supabase/src/types"; import { renderAsync } from "@react-email/components"; import { eventTrigger } from "@trigger.dev/sdk"; @@ -287,8 +288,8 @@ client.defineJob({ trigger: eventTrigger({ name: "transactions.export", schema: z.object({ - from: z.string().datetime(), - to: z.string().datetime(), + from: z.coerce.date(), + to: z.coerce.date(), teamId: z.string(), }), }), @@ -296,14 +297,32 @@ client.defineJob({ run: async (payload, io) => { const { from, to, teamId } = payload; - const generateExport = await io.createStatus("generate-export", { - label: "Generating memes", + const client = await io.supabase.client; + + const generateExport = await io.createStatus("generate-export-start", { + label: "Generating export", state: "loading", }); await io.logger.info("Transactions Export"); - await generateExport.update("generate-export", { + console.log(from, to); + + const data = await getTransactionsQuery(client, { + teamId, + from: 0, + to: 100000, + filter: { + date: { + from: from.toDateString(), + to: to.toDateString(), + }, + }, + }); + + await io.logger.info(`Transactions: ${JSON.stringify(data, null, 2)}`); + + await generateExport.update("generate-export-done", { state: "success", data: { url: "", diff --git a/apps/website/package.json b/apps/website/package.json index e296e18d71..056dc90e17 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@midday/tsconfig": "workspace:*", - "@types/node": "^20.9.1", + "@types/node": "^20.9.2", "@types/react": "^18.2.37", "@types/react-dom": "^18.2.15" } diff --git a/apps/website/src/locales/en.ts b/apps/website/src/locales/en.ts index 8eec9db318..fb7ac83de3 100644 --- a/apps/website/src/locales/en.ts +++ b/apps/website/src/locales/en.ts @@ -8,7 +8,7 @@ export default { email: "Enter your email", open: "Open source", live: "Live profit/loss", - document: "Files", + document: "Vault", reciept: "Receipt linking", time: "Time tracking", ai: "AI-enhanced filter & search", diff --git a/bun.lockb b/bun.lockb index a89d178f613e238488605bd5c13a75064ae6959a..1c443812931ddeedd18363dfe4125d086ecdc44a 100755 GIT binary patch delta 58099 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 diff --git a/package.json b/package.json index 7c739b77a9..7b5e31cc9c 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "@biomejs/biome": "1.3.3", "@manypkg/cli": "^0.21.0", "turbo": "^1.10.16", - "typescript": "^5.2.2" + "typescript": "^5.3.2" }, "devDependencies": { "vercel": "^32.5.5" diff --git a/packages/email/package.json b/packages/email/package.json index ce6f54ff75..d34d67031f 100644 --- a/packages/email/package.json +++ b/packages/email/package.json @@ -17,6 +17,6 @@ "react-email": "1.9.5" }, "devDependencies": { - "typescript": "^5.2.2" + "typescript": "^5.3.2" } } \ No newline at end of file diff --git a/packages/gocardless/package.json b/packages/gocardless/package.json index 6747b315ef..997ced5644 100644 --- a/packages/gocardless/package.json +++ b/packages/gocardless/package.json @@ -14,6 +14,6 @@ "@midday/kv": "workspace:*" }, "devDependencies": { - "typescript": "^5.2.2" + "typescript": "^5.3.2" } } \ No newline at end of file diff --git a/packages/location/package.json b/packages/location/package.json index 92e1f93b71..5e26c9170d 100644 --- a/packages/location/package.json +++ b/packages/location/package.json @@ -11,6 +11,6 @@ "check:types": "tsc --noEmit" }, "devDependencies": { - "typescript": "^5.2.2" + "typescript": "^5.3.2" } } \ No newline at end of file diff --git a/packages/notification/package.json b/packages/notification/package.json index 10391a7004..fceb0f4116 100644 --- a/packages/notification/package.json +++ b/packages/notification/package.json @@ -13,6 +13,6 @@ "@novu/node": "^0.21.0" }, "devDependencies": { - "typescript": "^5.2.2" + "typescript": "^5.3.2" } } \ No newline at end of file diff --git a/packages/supabase/package.json b/packages/supabase/package.json index 63a3208926..6f142d4145 100644 --- a/packages/supabase/package.json +++ b/packages/supabase/package.json @@ -16,7 +16,7 @@ "supabase": "^1.112.0" }, "devDependencies": { - "typescript": "^5.2.2" + "typescript": "^5.3.2" }, "exports": { "./server": "./src/client/server.ts", diff --git a/packages/supabase/src/mutations/index.ts b/packages/supabase/src/mutations/index.ts index e1782dae21..1129f71201 100644 --- a/packages/supabase/src/mutations/index.ts +++ b/packages/supabase/src/mutations/index.ts @@ -182,7 +182,7 @@ export async function deleteAttachment(supabase: Client, id: string) { .single(); remove(supabase, { - bucket: "files", + bucket: "vault", path: `${data.team_id}/transactions/${data.transaction_id}/${data.name}`, }); diff --git a/packages/supabase/src/queries/cached-queries.ts b/packages/supabase/src/queries/cached-queries.ts index 10c706b2ef..18f6acf96c 100644 --- a/packages/supabase/src/queries/cached-queries.ts +++ b/packages/supabase/src/queries/cached-queries.ts @@ -149,7 +149,6 @@ export const getMetrics = async (params) => { ["metrics", teamId], { tags: [`metrics_${teamId}`], - revalidate: 10, } )(params); }; diff --git a/packages/supabase/src/queries/index.ts b/packages/supabase/src/queries/index.ts index 89ef2fa01c..92b34d2ac2 100644 --- a/packages/supabase/src/queries/index.ts +++ b/packages/supabase/src/queries/index.ts @@ -180,8 +180,8 @@ export async function getSpendingQuery( type GetTransactionsParams = { teamId: string; - from: number; to: number; + from: number; sort: { column: string; value: "asc" | "desc"; diff --git a/packages/ui/package.json b/packages/ui/package.json index 0a82d40186..37e0e3e844 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "autoprefixer": "^10.4.16", - "typescript": "^5.2.2" + "typescript": "^5.3.2" }, "exports": { "./calendar": "./src/components/calendar.tsx", diff --git a/turbo.json b/turbo.json index 5cec5d844e..aa204a991b 100644 --- a/turbo.json +++ b/turbo.json @@ -38,8 +38,6 @@ } }, "globalEnv": [ - "POSTGRES_URL", - "NEXTAUTH_SECRET", - "NEXTAUTH_URL" + "POSTGRES_URL" ] } From a95cfe51b1707615bb6e0e79aa347209dabab828 Mon Sep 17 00:00:00 2001 From: Pontus Abrahamsson Date: Wed, 22 Nov 2023 11:44:24 +0100 Subject: [PATCH 2/4] wip --- .../@dashboard/(root)/transactions/page.tsx | 8 ++++++- .../components/charts/transactions-list.tsx | 6 ++++- .../tables/transactions/data-table-row.tsx | 7 +++++- .../tables/transactions/data-table.tsx | 6 +++-- .../components/tables/transactions/index.tsx | 14 ++++++++++-- apps/dashboard/src/components/tag.tsx | 22 +++++++++++++++++++ apps/dashboard/src/jobs/transactions.ts | 4 +--- apps/dashboard/src/locales/en.ts | 3 +++ packages/supabase/src/queries/index.ts | 1 - 9 files changed, 60 insertions(+), 11 deletions(-) create mode 100644 apps/dashboard/src/components/tag.tsx diff --git a/apps/dashboard/src/app/[locale]/@dashboard/(root)/transactions/page.tsx b/apps/dashboard/src/app/[locale]/@dashboard/(root)/transactions/page.tsx index d0a394fca1..03539d1478 100644 --- a/apps/dashboard/src/app/[locale]/@dashboard/(root)/transactions/page.tsx +++ b/apps/dashboard/src/app/[locale]/@dashboard/(root)/transactions/page.tsx @@ -40,7 +40,13 @@ export default async function Transactions({ fallback={} key={page} > - +
diff --git a/apps/dashboard/src/components/charts/transactions-list.tsx b/apps/dashboard/src/components/charts/transactions-list.tsx index 967330545b..5231952dd1 100644 --- a/apps/dashboard/src/components/charts/transactions-list.tsx +++ b/apps/dashboard/src/components/charts/transactions-list.tsx @@ -4,6 +4,7 @@ import { Icons } from "@midday/ui/icons"; import { Skeleton } from "@midday/ui/skeleton"; import { cn } from "@midday/ui/utils"; import Link from "next/link"; +import { Tag } from "../tag"; import { transactionList } from "./data"; export function TransactionsListHeader() { @@ -66,7 +67,10 @@ export async function TransactionsList({ type, disabled }) { transaction?.amount > 0 && "text-[#00C969]" )} > - {transaction.name} +
+ {transaction.name} + {transaction?.pending && } +
diff --git a/apps/dashboard/src/components/tables/transactions/data-table-row.tsx b/apps/dashboard/src/components/tables/transactions/data-table-row.tsx index a45f13964b..ae84bd360f 100644 --- a/apps/dashboard/src/components/tables/transactions/data-table-row.tsx +++ b/apps/dashboard/src/components/tables/transactions/data-table-row.tsx @@ -2,6 +2,7 @@ import { AssignedUser } from "@/components/assigned-user"; import { Category } from "@/components/category"; +import { Tag } from "@/components/tag"; import { TransactionMethod } from "@/components/transaction-method"; import { useCurrentLocale } from "@/locales/client"; import { formatAmount } from "@/utils/format"; @@ -47,7 +48,11 @@ export function DataTableRow({ collapsed, onSelect, data, selected }) { {data.date && format(new Date(data.date), "MMM d")} - {data.name} + +
+ {data.name} {data.pending && } +
+
0 && "text-[#00C969]")}> diff --git a/apps/dashboard/src/components/tables/transactions/data-table.tsx b/apps/dashboard/src/components/tables/transactions/data-table.tsx index fbb6a3d90b..122d194b22 100644 --- a/apps/dashboard/src/components/tables/transactions/data-table.tsx +++ b/apps/dashboard/src/components/tables/transactions/data-table.tsx @@ -16,12 +16,14 @@ type Item = { type ItemsProps = { data: Item[]; teamId?: string; + initialTransactionId: string; }; -export function DataTable({ data, teamId }: ItemsProps) { +export function DataTable({ data, teamId, initialTransactionId }: ItemsProps) { const supabase = createClient(); const router = useRouter(); const [transactionId, setTransactionId] = useQueryState("id", { + defaultValue: initialTransactionId, shallow: false, // TODO: Fix without this (redirect after mutation) }); @@ -80,7 +82,7 @@ export function DataTable({ data, teamId }: ItemsProps) { .on( "postgres_changes", { - event: "*", + event: "INSERT", schema: "public", table: "transactions", filter: `team_id=eq.${teamId}`, diff --git a/apps/dashboard/src/components/tables/transactions/index.tsx b/apps/dashboard/src/components/tables/transactions/index.tsx index 655d232417..d17e5c028e 100644 --- a/apps/dashboard/src/components/tables/transactions/index.tsx +++ b/apps/dashboard/src/components/tables/transactions/index.tsx @@ -8,7 +8,13 @@ import { Loading } from "./loading"; const pageSize = 50; -export async function Table({ filter, page, sort, noAccounts }) { +export async function Table({ + filter, + page, + sort, + noAccounts, + initialTransactionId, +}) { const hasFilters = Object.keys(filter).length > 0; const { to, from } = getPagination(page, pageSize); const { data: userData } = await getUser(); @@ -30,7 +36,11 @@ export async function Table({ filter, page, sort, noAccounts }) { return ( <> - + {hasFilters ? (
) : ( diff --git a/apps/dashboard/src/components/tag.tsx b/apps/dashboard/src/components/tag.tsx new file mode 100644 index 0000000000..a5f119b18f --- /dev/null +++ b/apps/dashboard/src/components/tag.tsx @@ -0,0 +1,22 @@ +"use client"; + +import { useI18n } from "@/locales/client"; +import { cn } from "@midday/ui/utils"; + +type Props = { + type: "pending"; +}; + +export function Tag({ type }: Props) { + const t = useI18n(); + return ( +
+ {t(`tags.${type}`)} +
+ ); +} diff --git a/apps/dashboard/src/jobs/transactions.ts b/apps/dashboard/src/jobs/transactions.ts index 0259c060d3..af9003a35b 100644 --- a/apps/dashboard/src/jobs/transactions.ts +++ b/apps/dashboard/src/jobs/transactions.ts @@ -87,7 +87,7 @@ client.defineJob({ await dynamicSchedule.register(payload.record.id, { type: "interval", options: { - seconds: 3600 * 4, // every 4h + seconds: 3600, // every 1h }, }); }, @@ -306,8 +306,6 @@ client.defineJob({ await io.logger.info("Transactions Export"); - console.log(from, to); - const data = await getTransactionsQuery(client, { teamId, from: 0, diff --git a/apps/dashboard/src/locales/en.ts b/apps/dashboard/src/locales/en.ts index d76a4a7b8a..3c4c0e936d 100644 --- a/apps/dashboard/src/locales/en.ts +++ b/apps/dashboard/src/locales/en.ts @@ -43,4 +43,7 @@ export default { profit_loss: "Profit/Loss", income: "Income", }, + tags: { + pending: "Pending", + }, } as const; diff --git a/packages/supabase/src/queries/index.ts b/packages/supabase/src/queries/index.ts index 92b34d2ac2..1c658b00e4 100644 --- a/packages/supabase/src/queries/index.ts +++ b/packages/supabase/src/queries/index.ts @@ -218,7 +218,6 @@ export async function getTransactionsQuery( .select( ` *, - currency, assigned:assigned_id(*), attachments(id,size,name) `, From 0a63cc2a3520e3bc94934dc79a01648b14f04fff Mon Sep 17 00:00:00 2001 From: Pontus Abrahamsson Date: Wed, 22 Nov 2023 11:46:24 +0100 Subject: [PATCH 3/4] Upgrade dependencies --- apps/dashboard/package.json | 8 ++++---- apps/website/package.json | 6 +++--- bun.lockb | Bin 435328 -> 438384 bytes package.json | 2 +- packages/supabase/package.json | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 998bf5598f..a2cf0bf1dc 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -31,7 +31,7 @@ "framer-motion": "^10.16.5", "next": "14.0.4-canary.4", "next-international": "^1.1.4", - "next-safe-action": "^5.0.3", + "next-safe-action": "^5.1.2", "next-themes": "^0.2.1", "next-usequerystate": "^1.12.2", "react": "18.2.0", @@ -45,9 +45,9 @@ "devDependencies": { "@midday/tsconfig": "workspace:*", "@t3-oss/env-nextjs": "^0.7.1", - "@types/node": "^20.9.2", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15", + "@types/node": "^20.9.4", + "@types/react": "^18.2.38", + "@types/react-dom": "^18.2.17", "typescript": "^5.3.2" } } \ No newline at end of file diff --git a/apps/website/package.json b/apps/website/package.json index 056dc90e17..42dd251f5e 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -23,8 +23,8 @@ }, "devDependencies": { "@midday/tsconfig": "workspace:*", - "@types/node": "^20.9.2", - "@types/react": "^18.2.37", - "@types/react-dom": "^18.2.15" + "@types/node": "^20.9.4", + "@types/react": "^18.2.38", + "@types/react-dom": "^18.2.17" } } diff --git a/bun.lockb b/bun.lockb index 1c443812931ddeedd18363dfe4125d086ecdc44a..84f7b3489ed5c83e32c257383cd76b0d3e2d111b 100755 GIT binary patch delta 40084 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 GYK#Dqy^!Mo delta 38018 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 TP~I2B=hh1CoA|kRPV4^%kn-KY diff --git a/package.json b/package.json index 7b5e31cc9c..0564c199b0 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,6 @@ "typescript": "^5.3.2" }, "devDependencies": { - "vercel": "^32.5.5" + "vercel": "^32.5.6" } } diff --git a/packages/supabase/package.json b/packages/supabase/package.json index 6f142d4145..aced48ce6b 100644 --- a/packages/supabase/package.json +++ b/packages/supabase/package.json @@ -12,8 +12,8 @@ }, "dependencies": { "@supabase/ssr": "^0.0.10", - "@supabase/supabase-js": "^2.38.4", - "supabase": "^1.112.0" + "@supabase/supabase-js": "^2.38.5", + "supabase": "^1.113.2" }, "devDependencies": { "typescript": "^5.3.2" From 40abdcf09ac15b83855a4dff6ee0ad0e3d25f3af Mon Sep 17 00:00:00 2001 From: Pontus Abrahamsson Date: Thu, 23 Nov 2023 08:44:16 +0100 Subject: [PATCH 4/4] Update --- .../components/charts/transactions-list.tsx | 6 +---- .../src/components/notification-setting.tsx | 4 ++-- .../src/components/notification-settings.tsx | 7 ++++++ .../notifications-settings-list.tsx | 8 ++++--- .../tables/transactions/data-table-row.tsx | 7 +----- apps/dashboard/src/components/tag.tsx | 22 ------------------- apps/dashboard/src/jobs/transactions.ts | 14 +++++++++--- apps/dashboard/src/locales/en.ts | 3 --- 8 files changed, 27 insertions(+), 44 deletions(-) delete mode 100644 apps/dashboard/src/components/tag.tsx diff --git a/apps/dashboard/src/components/charts/transactions-list.tsx b/apps/dashboard/src/components/charts/transactions-list.tsx index 5231952dd1..967330545b 100644 --- a/apps/dashboard/src/components/charts/transactions-list.tsx +++ b/apps/dashboard/src/components/charts/transactions-list.tsx @@ -4,7 +4,6 @@ import { Icons } from "@midday/ui/icons"; import { Skeleton } from "@midday/ui/skeleton"; import { cn } from "@midday/ui/utils"; import Link from "next/link"; -import { Tag } from "../tag"; import { transactionList } from "./data"; export function TransactionsListHeader() { @@ -67,10 +66,7 @@ export async function TransactionsList({ type, disabled }) { transaction?.amount > 0 && "text-[#00C969]" )} > -
- {transaction.name} - {transaction?.pending && } -
+ {transaction.name}
diff --git a/apps/dashboard/src/components/notification-setting.tsx b/apps/dashboard/src/components/notification-setting.tsx index 7a19cc6892..3d81bdc319 100644 --- a/apps/dashboard/src/components/notification-setting.tsx +++ b/apps/dashboard/src/components/notification-setting.tsx @@ -20,7 +20,7 @@ export function NotificationSetting({ ...state, enabled: !state.enabled, }; - }, + } ); const onChange = () => { @@ -35,7 +35,7 @@ export function NotificationSetting({ }; return ( -
+
( + + )); +} + export async function NotificationSettings() { const { data: userData } = await getUser(); const { data: subscriberPreferences } = await getSubscriberPreferences({ diff --git a/apps/dashboard/src/components/notifications-settings-list.tsx b/apps/dashboard/src/components/notifications-settings-list.tsx index ce1145ed3c..a9aad2d9e3 100644 --- a/apps/dashboard/src/components/notifications-settings-list.tsx +++ b/apps/dashboard/src/components/notifications-settings-list.tsx @@ -5,9 +5,11 @@ import { CardHeader, CardTitle, } from "@midday/ui/card"; -import { Skeleton } from "@midday/ui/skeleton"; import { Suspense } from "react"; -import { NotificationSettings } from "./notification-settings"; +import { + NotificationSettings, + NotificationSettingsSkeleton, +} from "./notification-settings"; export async function NotificationsSettingsList() { return ( @@ -20,7 +22,7 @@ export async function NotificationsSettingsList() { - }> + }> diff --git a/apps/dashboard/src/components/tables/transactions/data-table-row.tsx b/apps/dashboard/src/components/tables/transactions/data-table-row.tsx index ae84bd360f..a45f13964b 100644 --- a/apps/dashboard/src/components/tables/transactions/data-table-row.tsx +++ b/apps/dashboard/src/components/tables/transactions/data-table-row.tsx @@ -2,7 +2,6 @@ import { AssignedUser } from "@/components/assigned-user"; import { Category } from "@/components/category"; -import { Tag } from "@/components/tag"; import { TransactionMethod } from "@/components/transaction-method"; import { useCurrentLocale } from "@/locales/client"; import { formatAmount } from "@/utils/format"; @@ -48,11 +47,7 @@ export function DataTableRow({ collapsed, onSelect, data, selected }) { {data.date && format(new Date(data.date), "MMM d")} - -
- {data.name} {data.pending && } -
-
+ {data.name} 0 && "text-[#00C969]")}> diff --git a/apps/dashboard/src/components/tag.tsx b/apps/dashboard/src/components/tag.tsx deleted file mode 100644 index a5f119b18f..0000000000 --- a/apps/dashboard/src/components/tag.tsx +++ /dev/null @@ -1,22 +0,0 @@ -"use client"; - -import { useI18n } from "@/locales/client"; -import { cn } from "@midday/ui/utils"; - -type Props = { - type: "pending"; -}; - -export function Tag({ type }: Props) { - const t = useI18n(); - return ( -
- {t(`tags.${type}`)} -
- ); -} diff --git a/apps/dashboard/src/jobs/transactions.ts b/apps/dashboard/src/jobs/transactions.ts index af9003a35b..dbbd3045ac 100644 --- a/apps/dashboard/src/jobs/transactions.ts +++ b/apps/dashboard/src/jobs/transactions.ts @@ -72,7 +72,7 @@ client.defineJob({ table: "bank_accounts", }), run: async (payload, io) => { - await io.sendEvent("Schedule Transactions", { + await io.sendEvent("Transactions Initial Sync", { id: payload.record.id, name: "transactions.initial.sync", payload: { @@ -237,7 +237,7 @@ client.defineJob({ client.defineJob({ id: "transactions-initial-sync", - name: "Transactions - Initial", + name: "Transactions - Initial Sync", version: "1.0.0", trigger: eventTrigger({ name: "transactions.initial.sync", @@ -253,6 +253,14 @@ client.defineJob({ const { transactions } = await getTransactions(accountId); + // Update bank account last_accessed + await io.supabase.client + .from("bank_accounts") + .update({ + last_accessed: new Date(), + }) + .eq("id", recordId); + if (!transactions?.booked.length) { await io.logger.info("No transactions found"); } @@ -261,7 +269,7 @@ client.defineJob({ .from("transactions") .insert( transformTransactions(transactions?.booked, { - accountId: recordId, + accountId: recordId, // Bank account record id teamId: teamId, }) ) diff --git a/apps/dashboard/src/locales/en.ts b/apps/dashboard/src/locales/en.ts index 3c4c0e936d..d76a4a7b8a 100644 --- a/apps/dashboard/src/locales/en.ts +++ b/apps/dashboard/src/locales/en.ts @@ -43,7 +43,4 @@ export default { profit_loss: "Profit/Loss", income: "Income", }, - tags: { - pending: "Pending", - }, } as const;