import { BasePageProps } from '@/types';
import { authentication, localeLinkGenerator } from '@/utils';
import { GetServerSideProps, NextPage } from 'next';
import { serverSideTranslations } from 'next-i18next/serverSideTranslations';
import { StudyGroupProvider } from '@/providers/StudyGroupContext';
import StudyGroupModule from '@/components/study-group/StudyGroupModule';

const StudyGroupDetailPage: NextPage<BasePageProps> = ({ member }) => {
    return (
        <StudyGroupProvider>
            <StudyGroupModule member={member} />
        </StudyGroupProvider>
    );
};

export default StudyGroupDetailPage;

export const getServerSideProps: GetServerSideProps = async ({ locale, req, resolvedUrl }) => {
    try {
        const authResponse = await authentication(req);

        return {
            props: {
                member: authResponse,
                ...(await serverSideTranslations(locale as string, [
                    'study-group',
                    'study-group-task',
                    'layout',
                    'common',
                    'messages',
                    'auth',
                    'api-messages',
                    'my-profile',
                ])),
            },
        };
    } catch (error: any) {
        if (error.response?.data?.unauthorized) {
            return {
                redirect: {
                    destination: localeLinkGenerator(locale, `/unauthorized`),
                    permanent: false,
                },
            };
        }

        return {
            redirect: {
                destination: localeLinkGenerator(locale, `/?redirect=/${resolvedUrl}`),
                permanent: false,
            },
        };
    }
};
