From c0dd5df415ed5e6dce5a0802a64ec42b47f4c583 Mon Sep 17 00:00:00 2001 From: Ebenezer Arthur Date: Sun, 8 Jun 2025 09:36:20 +0000 Subject: [PATCH 1/3] pin tasks --- app/components/status-menu.tsx | 24 ++++++++++- app/components/todo-item.tsx | 3 ++ app/lib/send-discord.ts | 32 ++++++++++++++- app/lib/use-task-pin.ts | 41 +++++++++++++++++++ app/lib/webhook-types.ts | 8 ++++ app/routes/list.tsx | 21 ++++++++-- .../20250608090308_pin_tasks/migration.sql | 2 + prisma/schema.prisma | 1 + 8 files changed, 126 insertions(+), 6 deletions(-) create mode 100644 app/lib/use-task-pin.ts create mode 100644 prisma/migrations/20250608090308_pin_tasks/migration.sql diff --git a/app/components/status-menu.tsx b/app/components/status-menu.tsx index 17cf3fe..09107c7 100644 --- a/app/components/status-menu.tsx +++ b/app/components/status-menu.tsx @@ -3,6 +3,7 @@ import clsx from "clsx"; import React from "react"; import { statuses } from "~/lib/statuses"; import { useTaskDelete } from "~/lib/use-task-delete"; +import { useTaskPin } from "~/lib/use-task-pin"; import { usePopoverContext } from "./popover"; interface StatusMenuProps { @@ -13,6 +14,7 @@ interface StatusMenuProps { export function StatusMenu({ task, onStatusUpdate }: StatusMenuProps) { const [confirmingDelete, setConfirmingDelete] = React.useState(false); const remove = useTaskDelete(task); + const pin = useTaskPin(task); const popover = usePopoverContext(); @@ -36,7 +38,8 @@ export function StatusMenu({ task, onStatusUpdate }: StatusMenuProps) { className={clsx( "flex items-center pl-3 rounded-lg hover:bg-neutral-200/80 dark:hover:bg-neutral-800/20", { - "bg-neutral-200/80 dark:bg-neutral-800/20": s.id === task.status, + "bg-neutral-200/80 dark:bg-neutral-800/20": + s.id === task.status, }, )} > @@ -59,11 +62,28 @@ export function StatusMenu({ task, onStatusUpdate }: StatusMenuProps) {
Actions