diff --git a/src/pages/manage/boards/index.tsx b/src/pages/manage/boards/index.tsx index 53cd19c5d..474d3f606 100644 --- a/src/pages/manage/boards/index.tsx +++ b/src/pages/manage/boards/index.tsx @@ -16,6 +16,7 @@ import { useListState } from '@mantine/hooks'; import { modals } from '@mantine/modals'; import { IconApps, + IconDeviceFloppy, IconDotsVertical, IconFolderFilled, IconPlus, @@ -30,7 +31,13 @@ import { sleep } from '~/tools/client/time'; import { api } from '~/utils/api'; const BoardsPage = () => { + const context = api.useContext(); const { data } = api.boards.all.useQuery(); + const { mutateAsync } = api.user.makeDefaultDashboard.useMutation({ + onSettled: () => { + void context.boards.invalidate(); + }, + }); const [deletingDashboards, { append, filter }] = useListState([]); @@ -139,6 +146,16 @@ const BoardsPage = () => { + } + onClick={async () => { + void mutateAsync({ + board: board.name, + }); + }} + > + Set as your default board + { modals.openContextModal({ diff --git a/src/server/api/routers/user.ts b/src/server/api/routers/user.ts index 182b0297a..95c2392ab 100644 --- a/src/server/api/routers/user.ts +++ b/src/server/api/routers/user.ts @@ -155,13 +155,26 @@ export const userRouter = createTRPCRouter({ disablePingPulse: input.disablePingPulse, replacePingWithIcons: input.replaceDotsWithIcons, defaultBoard: input.defaultBoard, - language: input.language + language: input.language, }, }, }, }); }), + makeDefaultDashboard: publicProcedure + .input(z.object({ board: z.string() })) + .mutation(async ({ ctx, input }) => { + await ctx.prisma.userSettings.update({ + where: { + userId: ctx.session?.user.id, + }, + data: { + defaultBoard: input.board, + }, + }); + }), + all: publicProcedure .input( z.object({