@@ -63,218 +49,11 @@ const EventTypesPage = (props: PageProps) => {
{t("new_event_type_heading")}
{t("new_event_type_description")}
-
+
);
- const EventTypeListHeading = ({
- profile,
- membershipCount,
- }: {
- profile?: Profile;
- membershipCount: MembershipCount;
- }) => (
-
@@ -328,19 +107,11 @@ const EventTypesPage = (props: PageProps) => {
);
};
-const CreateNewEventDialog = ({
- profiles,
- canAddEvents,
- localeProp,
-}: {
- profiles: Profile[];
- canAddEvents: boolean;
- localeProp: string;
-}) => {
+const CreateNewEventDialog = ({ profiles, canAddEvents }: { profiles: Profile[]; canAddEvents: boolean }) => {
const router = useRouter();
const teamId: number | null = Number(router.query.teamId) || null;
const modalOpen = useToggleQuery("new");
- const { t } = useLocale({ localeProp });
+ const { t } = useLocale();
const createMutation = useMutation(createEventType, {
onSuccess: async ({ eventType }) => {
diff --git a/pages/settings/profile.tsx b/pages/settings/profile.tsx
index ac4408f4..66698310 100644
--- a/pages/settings/profile.tsx
+++ b/pages/settings/profile.tsx
@@ -13,7 +13,6 @@ import {
localeOptions,
OptionType,
} from "@lib/core/i18n/i18n.utils";
-import { useLocale } from "@lib/hooks/useLocale";
import { isBrandingHidden } from "@lib/isBrandingHidden";
import prisma from "@lib/prisma";
import { trpc } from "@lib/trpc";
@@ -92,7 +91,6 @@ function HideBrandingInput(props: {
}
export default function Settings(props: Props) {
- const { locale } = useLocale({ localeProp: props.localeProp });
const mutation = trpc.useMutation("viewer.updateProfile");
const [successModalOpen, setSuccessModalOpen] = useState(false);
@@ -101,14 +99,19 @@ export default function Settings(props: Props) {
const descriptionRef = useRef
();
const avatarRef = useRef(null);
const hideBrandingRef = useRef(null);
- const [selectedTheme, setSelectedTheme] = useState({ value: props.user.theme });
- const [selectedTimeZone, setSelectedTimeZone] = useState({ value: props.user.timeZone });
- const [selectedWeekStartDay, setSelectedWeekStartDay] = useState({ value: props.user.weekStart });
- const [selectedLanguage, setSelectedLanguage] = useState({
- value: locale,
- label: props.localeLabels[locale],
+ const [selectedTheme, setSelectedTheme] = useState({
+ value: props.user.theme,
});
- const [imageSrc, setImageSrc] = useState(props.user.avatar);
+ const [selectedTimeZone, setSelectedTimeZone] = useState({ value: props.user.timeZone });
+ const [selectedWeekStartDay, setSelectedWeekStartDay] = useState({
+ value: props.user.weekStart,
+ label: "",
+ });
+ const [selectedLanguage, setSelectedLanguage] = useState({
+ value: props.localeProp,
+ label: props.localeLabels[props.localeProp],
+ });
+ const [imageSrc, setImageSrc] = useState(props.user.avatar || "");
const [hasErrors, setHasErrors] = useState(false);
const [errorMessage, setErrorMessage] = useState("");
@@ -117,7 +120,7 @@ export default function Settings(props: Props) {
props.user.theme ? themeOptions.find((theme) => theme.value === props.user.theme) : null
);
setSelectedWeekStartDay({ value: props.user.weekStart, label: props.user.weekStart });
- setSelectedLanguage({ value: locale, label: props.localeLabels[locale] });
+ setSelectedLanguage({ value: props.localeProp, label: props.localeLabels[props.localeProp] });
}, []);
const closeSuccessModal = () => {
@@ -276,7 +279,7 @@ export default function Settings(props: Props) {
diff --git a/pages/settings/security.tsx b/pages/settings/security.tsx
index 1b846e94..0604080a 100644
--- a/pages/settings/security.tsx
+++ b/pages/settings/security.tsx
@@ -1,3 +1,4 @@
+import { GetServerSidePropsContext } from "next";
import { serverSideTranslations } from "next-i18next/serverSideTranslations";
import React from "react";
@@ -5,26 +6,26 @@ import { getSession } from "@lib/auth";
import { getOrSetUserLocaleFromHeaders } from "@lib/core/i18n/i18n.utils";
import { useLocale } from "@lib/hooks/useLocale";
import prisma from "@lib/prisma";
+import { inferSSRProps } from "@lib/types/inferSSRProps";
import SettingsShell from "@components/SettingsShell";
import Shell from "@components/Shell";
import ChangePasswordSection from "@components/security/ChangePasswordSection";
import TwoFactorAuthSection from "@components/security/TwoFactorAuthSection";
-export default function Security({ user, localeProp }) {
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- const { locale, t } = useLocale({ localeProp });
+export default function Security({ user }: inferSSRProps) {
+ const { t } = useLocale();
return (
-
-
+
+
);
}
-export async function getServerSideProps(context) {
+export async function getServerSideProps(context: GetServerSidePropsContext) {
const session = await getSession(context);
const locale = await getOrSetUserLocaleFromHeaders(context.req);
@@ -44,6 +45,10 @@ export async function getServerSideProps(context) {
},
});
+ if (!user) {
+ return { redirect: { permanent: false, destination: "/auth/login" } };
+ }
+
return {
props: {
localeProp: locale,
diff --git a/pages/settings/teams.tsx b/pages/settings/teams.tsx
index 2b28178a..559406b4 100644
--- a/pages/settings/teams.tsx
+++ b/pages/settings/teams.tsx
@@ -8,7 +8,6 @@ import { useEffect, useRef, useState } from "react";
import { getSession } from "@lib/auth";
import { getOrSetUserLocaleFromHeaders } from "@lib/core/i18n/i18n.utils";
-import { useLocale } from "@lib/hooks/useLocale";
import { Member } from "@lib/member";
import { Team } from "@lib/team";
@@ -20,7 +19,7 @@ import TeamList from "@components/team/TeamList";
import TeamListItem from "@components/team/TeamListItem";
import Button from "@components/ui/Button";
-export default function Teams(props: { localeProp: string }) {
+export default function Teams() {
const noop = () => undefined;
const [, loading] = useSession();
const [teams, setTeams] = useState([]);
@@ -29,7 +28,6 @@ export default function Teams(props: { localeProp: string }) {
const [editTeamEnabled, setEditTeamEnabled] = useState(false);
const [teamToEdit, setTeamToEdit] = useState();
const nameRef = useRef() as React.MutableRefObject;
- const { locale } = useLocale({ localeProp: props.localeProp });
const handleErrors = async (resp: Response) => {
if (!resp.ok) {
@@ -114,11 +112,7 @@ export default function Teams(props: { localeProp: string }) {
{!!teams.length && (
-
+
)}
{!!invites.length && (
@@ -127,7 +121,6 @@ export default function Teams(props: { localeProp: string }) {
{invites.map((team: Team) => (
)}
- {!!editTeamEnabled &&