mirror of
https://github.com/ajnart/homarr.git
synced 2025-11-12 16:35:49 +01:00
✨ Add make my default board button to manage boards
This commit is contained in:
@@ -16,6 +16,7 @@ import { useListState } from '@mantine/hooks';
|
|||||||
import { modals } from '@mantine/modals';
|
import { modals } from '@mantine/modals';
|
||||||
import {
|
import {
|
||||||
IconApps,
|
IconApps,
|
||||||
|
IconDeviceFloppy,
|
||||||
IconDotsVertical,
|
IconDotsVertical,
|
||||||
IconFolderFilled,
|
IconFolderFilled,
|
||||||
IconPlus,
|
IconPlus,
|
||||||
@@ -30,7 +31,13 @@ import { sleep } from '~/tools/client/time';
|
|||||||
import { api } from '~/utils/api';
|
import { api } from '~/utils/api';
|
||||||
|
|
||||||
const BoardsPage = () => {
|
const BoardsPage = () => {
|
||||||
|
const context = api.useContext();
|
||||||
const { data } = api.boards.all.useQuery();
|
const { data } = api.boards.all.useQuery();
|
||||||
|
const { mutateAsync } = api.user.makeDefaultDashboard.useMutation({
|
||||||
|
onSettled: () => {
|
||||||
|
void context.boards.invalidate();
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
const [deletingDashboards, { append, filter }] = useListState<string>([]);
|
const [deletingDashboards, { append, filter }] = useListState<string>([]);
|
||||||
|
|
||||||
@@ -139,6 +146,16 @@ const BoardsPage = () => {
|
|||||||
</ActionIcon>
|
</ActionIcon>
|
||||||
</Menu.Target>
|
</Menu.Target>
|
||||||
<Menu.Dropdown>
|
<Menu.Dropdown>
|
||||||
|
<Menu.Item
|
||||||
|
icon={<IconDeviceFloppy size="1rem" />}
|
||||||
|
onClick={async () => {
|
||||||
|
void mutateAsync({
|
||||||
|
board: board.name,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Set as your default board
|
||||||
|
</Menu.Item>
|
||||||
<Menu.Item
|
<Menu.Item
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
modals.openContextModal({
|
modals.openContextModal({
|
||||||
|
|||||||
@@ -155,13 +155,26 @@ export const userRouter = createTRPCRouter({
|
|||||||
disablePingPulse: input.disablePingPulse,
|
disablePingPulse: input.disablePingPulse,
|
||||||
replacePingWithIcons: input.replaceDotsWithIcons,
|
replacePingWithIcons: input.replaceDotsWithIcons,
|
||||||
defaultBoard: input.defaultBoard,
|
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
|
all: publicProcedure
|
||||||
.input(
|
.input(
|
||||||
z.object({
|
z.object({
|
||||||
|
|||||||
Reference in New Issue
Block a user