mirror of
https://github.com/ajnart/homarr.git
synced 2025-11-10 07:25:48 +01:00
✨ Invalidate queries
This commit adds the functionality of query invalidation - when a config is created - when the calendar options are changed It also makes it so the calendar doesn't update if the widget is currently being edited
This commit is contained in:
@@ -4,6 +4,7 @@ import { useMutation } from '@tanstack/react-query';
|
|||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import { useConfigContext } from '../../../config/provider';
|
import { useConfigContext } from '../../../config/provider';
|
||||||
import { ConfigType } from '../../../types/config';
|
import { ConfigType } from '../../../types/config';
|
||||||
|
import { queryClient } from '../../server/configurations/tanstack/queryClient.tool';
|
||||||
|
|
||||||
export const useCopyConfigMutation = (configName: string) => {
|
export const useCopyConfigMutation = (configName: string) => {
|
||||||
const { config } = useConfigContext();
|
const { config } = useConfigContext();
|
||||||
@@ -14,13 +15,15 @@ export const useCopyConfigMutation = (configName: string) => {
|
|||||||
mutationFn: () => fetchCopy(configName, config),
|
mutationFn: () => fetchCopy(configName, config),
|
||||||
onSuccess() {
|
onSuccess() {
|
||||||
showNotification({
|
showNotification({
|
||||||
title: t('modal.events.configCopied.title'),
|
title: t('modal.copy.events.configCopied.title'),
|
||||||
icon: <IconCheck />,
|
icon: <IconCheck />,
|
||||||
color: 'green',
|
color: 'green',
|
||||||
autoClose: 1500,
|
autoClose: 1500,
|
||||||
radius: 'md',
|
radius: 'md',
|
||||||
message: t('modal.events.configCopied.message', { configName }),
|
message: t('modal.copy.events.configCopied.message', { configName }),
|
||||||
});
|
});
|
||||||
|
// Invalidate a query to fetch new config
|
||||||
|
queryClient.invalidateQueries(['config/get-all']);
|
||||||
},
|
},
|
||||||
onError() {
|
onError() {
|
||||||
showNotification({
|
showNotification({
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import { IWidget } from '../widgets';
|
|||||||
import { CalendarDay } from './CalendarDay';
|
import { CalendarDay } from './CalendarDay';
|
||||||
import { getBgColorByDateAndTheme } from './bg-calculator';
|
import { getBgColorByDateAndTheme } from './bg-calculator';
|
||||||
import { MediasType } from './type';
|
import { MediasType } from './type';
|
||||||
|
import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore';
|
||||||
|
|
||||||
const definition = defineWidget({
|
const definition = defineWidget({
|
||||||
id: 'calendar',
|
id: 'calendar',
|
||||||
@@ -52,10 +53,15 @@ function CalendarTile({ widget }: CalendarTileProps) {
|
|||||||
const { colorScheme } = useMantineTheme();
|
const { colorScheme } = useMantineTheme();
|
||||||
const { name: configName } = useConfigContext();
|
const { name: configName } = useConfigContext();
|
||||||
const [month, setMonth] = useState(new Date());
|
const [month, setMonth] = useState(new Date());
|
||||||
|
const isEditMode = useEditModeStore((x) => x.enabled);
|
||||||
|
|
||||||
const { data: medias } = useQuery({
|
const { data: medias } = useQuery({
|
||||||
queryKey: ['calendar/medias', { month: month.getMonth(), year: month.getFullYear() }],
|
queryKey: [
|
||||||
|
'calendar/medias',
|
||||||
|
{ month: month.getMonth(), year: month.getFullYear(), v4: widget.properties.useSonarrv4 },
|
||||||
|
],
|
||||||
staleTime: 1000 * 60 * 60 * 5,
|
staleTime: 1000 * 60 * 60 * 5,
|
||||||
|
enabled: isEditMode === false,
|
||||||
queryFn: async () =>
|
queryFn: async () =>
|
||||||
(await (
|
(await (
|
||||||
await fetch(
|
await fetch(
|
||||||
|
|||||||
Reference in New Issue
Block a user