♻️ Deprecate calendar firstdayofweek option

This commit is contained in:
Meier Lukas
2023-08-06 16:00:40 +02:00
parent 65cd15aba5
commit 3e4c9cdc3d
4 changed files with 19 additions and 20 deletions

View File

@@ -7,9 +7,6 @@
"useSonarrv4": { "useSonarrv4": {
"label": "Use Sonarr v4 API" "label": "Use Sonarr v4 API"
}, },
"sundayStart": {
"label": "Start the week on Sunday"
},
"radarrReleaseType": { "radarrReleaseType": {
"label": "Radarr release type" "label": "Radarr release type"
}, },

View File

@@ -1,10 +1,7 @@
import { ColorScheme as MantineColorScheme, MantineProvider, MantineTheme } from '@mantine/core'; import { ColorScheme as MantineColorScheme, MantineProvider, MantineTheme } from '@mantine/core';
import { ModalsProvider } from '@mantine/modals'; import { ModalsProvider } from '@mantine/modals';
import { Notifications } from '@mantine/notifications'; import { Notifications } from '@mantine/notifications';
import AsyncStorage from '@react-native-async-storage/async-storage';
import { createAsyncStoragePersister } from '@tanstack/query-async-storage-persister';
import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
import { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';
import Consola from 'consola'; import Consola from 'consola';
import { getCookie, setCookie } from 'cookies-next'; import { getCookie, setCookie } from 'cookies-next';
import 'flag-icons/css/flag-icons.min.css'; import 'flag-icons/css/flag-icons.min.css';
@@ -13,15 +10,12 @@ import { Session } from 'next-auth';
import { SessionProvider, getSession } from 'next-auth/react'; import { SessionProvider, getSession } from 'next-auth/react';
import { appWithTranslation } from 'next-i18next'; import { appWithTranslation } from 'next-i18next';
import { AppProps } from 'next/app'; import { AppProps } from 'next/app';
import Head from 'next/head';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import 'video.js/dist/video-js.css'; import 'video.js/dist/video-js.css';
import { z } from 'zod';
import { CommonHead } from '~/components/layout/Meta/CommonHead'; import { CommonHead } from '~/components/layout/Meta/CommonHead';
import { env } from '~/env.js'; import { env } from '~/env.js';
import { ColorSchemeProvider } from '~/hooks/use-colorscheme'; import { ColorSchemeProvider } from '~/hooks/use-colorscheme';
import { modals } from '~/modals'; import { modals } from '~/modals';
import { queryClient } from '~/tools/server/configurations/tanstack/queryClient.tool';
import { ConfigType } from '~/types/config'; import { ConfigType } from '~/types/config';
import { api } from '~/utils/api'; import { api } from '~/utils/api';
import { colorSchemeParser } from '~/validations/user'; import { colorSchemeParser } from '~/validations/user';
@@ -71,10 +65,6 @@ function App(
const { setInitialPackageAttributes } = usePackageAttributesStore(); const { setInitialPackageAttributes } = usePackageAttributesStore();
const asyncStoragePersister = createAsyncStoragePersister({
storage: AsyncStorage,
});
useEffect(() => { useEffect(() => {
setInitialPackageAttributes(props.pageProps.packageAttributes); setInitialPackageAttributes(props.pageProps.packageAttributes);
}, []); }, []);

View File

@@ -5,11 +5,12 @@
* We also create a few inference helpers for input and output types. * We also create a few inference helpers for input and output types.
*/ */
import { createTRPCProxyClient, httpBatchLink, loggerLink } from '@trpc/client'; import { createTRPCProxyClient, httpBatchLink, loggerLink } from '@trpc/client';
import { createTRPCNext } from '@trpc/next'; import { WithTRPCConfig, createTRPCNext } from '@trpc/next';
import { type inferRouterInputs, type inferRouterOutputs } from '@trpc/server'; import { type inferRouterInputs, type inferRouterOutputs } from '@trpc/server';
import superjson from 'superjson'; import superjson from 'superjson';
import { env } from '~/env'; import { env } from '~/env';
import { type RootRouter } from '~/server/api/root'; import { type RootRouter } from '~/server/api/root';
import { queryClient } from '~/tools/server/configurations/tanstack/queryClient.tool';
const getTrpcConfiguration = () => ({ const getTrpcConfiguration = () => ({
/** /**
@@ -34,6 +35,7 @@ const getTrpcConfiguration = () => ({
url: `${getBaseUrl()}/api/trpc`, url: `${getBaseUrl()}/api/trpc`,
}), }),
], ],
queryClient,
}); });
const getBaseUrl = () => { const getBaseUrl = () => {

View File

@@ -1,9 +1,10 @@
import { useMantineTheme } from '@mantine/core'; import { useMantineTheme } from '@mantine/core';
import { Calendar } from '@mantine/dates'; import { Calendar } from '@mantine/dates';
import { IconCalendarTime } from '@tabler/icons-react'; import { IconCalendarTime } from '@tabler/icons-react';
import { useSession } from 'next-auth/react';
import { i18n } from 'next-i18next'; import { i18n } from 'next-i18next';
import { useState } from 'react'; import { useState } from 'react';
import { api } from '~/utils/api'; import { RouterOutputs, api } from '~/utils/api';
import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore'; import { useEditModeStore } from '../../components/Dashboard/Views/useEditModeStore';
import { useConfigContext } from '../../config/provider'; import { useConfigContext } from '../../config/provider';
@@ -25,10 +26,6 @@ const definition = defineWidget({
type: 'switch', type: 'switch',
defaultValue: false, defaultValue: false,
}, },
sundayStart: {
type: 'switch',
defaultValue: false,
},
radarrReleaseType: { radarrReleaseType: {
type: 'select', type: 'select',
defaultValue: 'inCinemas', defaultValue: 'inCinemas',
@@ -70,6 +67,10 @@ function CalendarTile({ widget }: CalendarTileProps) {
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 isEditMode = useEditModeStore((x) => x.enabled);
const { data: sessionData } = useSession();
const { data: userWithSettings } = api.user.withSettings.useQuery(undefined, {
enabled: !!sessionData?.user,
});
const { data: medias } = api.calendar.medias.useQuery( const { data: medias } = api.calendar.medias.useQuery(
{ {
@@ -84,6 +85,8 @@ function CalendarTile({ widget }: CalendarTileProps) {
} }
); );
const firstDayOfWeek = userWithSettings?.settings.firstDayOfWeek ?? 'monday';
return ( return (
<Calendar <Calendar
defaultDate={new Date()} defaultDate={new Date()}
@@ -91,7 +94,7 @@ function CalendarTile({ widget }: CalendarTileProps) {
onNextMonth={setMonth} onNextMonth={setMonth}
size={widget.properties.fontSize} size={widget.properties.fontSize}
locale={i18n?.resolvedLanguage ?? 'en'} locale={i18n?.resolvedLanguage ?? 'en'}
firstDayOfWeek={widget.properties.sundayStart ? 0 : 1} firstDayOfWeek={getFirstDayOfWeek(firstDayOfWeek)}
hideWeekdays={widget.properties.hideWeekDays} hideWeekdays={widget.properties.hideWeekDays}
style={{ position: 'relative' }} style={{ position: 'relative' }}
date={month} date={month}
@@ -147,6 +150,13 @@ function CalendarTile({ widget }: CalendarTileProps) {
); );
} }
const getFirstDayOfWeek = (
firstDayOfWeek: RouterOutputs['user']['withSettings']['settings']['firstDayOfWeek']
) => {
if (firstDayOfWeek === 'sunday') return 0;
if (firstDayOfWeek === 'monday') return 1;
return 6;
};
const getReleasedMediasForDate = ( const getReleasedMediasForDate = (
medias: MediasType | undefined, medias: MediasType | undefined,
date: Date, date: Date,