I am handing the route of case study page using these two methods
- getStaticPaths
1export const getStaticPaths: GetStaticPaths = async () => {2 let pathsService: CaseStudyPathsService = new CaseStudyPathsServiceImpl();3 console.log("Case study page getStaticPaths runs");4 console.log("Paths: ", (await pathsService.getPaths()).paths);5 return await pathsService.getPaths();6};
- getStaticProps
1export const getStaticProps: GetStaticProps = async (context: GetStaticPropsContext) => {2 console.log("Case study page getStaticProps runs");34 let propsService: ICaseStudyPropsService = new CaseStudyPropsService();5 let urlService: IUrlService = UrlService.get();6 const caseStudyProps: any = await propsService.getProps(context);7 const languagePropService: LanguagePropService = new LanguagePropService();8 const langProps: any = languagePropService.getProps(context);910 if (caseStudyProps.props.shouldRedirect) {11 console.log("Redirecting from Case study page");1213 const availableLanguages: string[] = urlService.getAvailableLanguages();14 const languageExists: boolean = availableLanguages.includes(langProps.language);15 const redirectUrl: string = urlService.getCaseStudyUrlFromLanguage(16 languageExists ? langProps.langauge : "en"17 );1819 return {20 redirect: {21 destination: redirectUrl,22 permanent: false,23 },24 };25 }2627 const caseStudy: CaseStudy = JSON.parse(caseStudyProps.props.caseStudyJson);28 const canonicalUrl: string = urlService.getDynamicCanonical({29 language: langProps.props.language,30 contentUrl: caseStudy.url,31 staticUrl: urlService.CASE_STUDIES_STATIC,32 });33 const defaultAlternateUrl: string = urlService.getDynamicDefaultAlternate({34 availableUrls: caseStudyProps.props.availableUrls,35 staticUrl: urlService.CASE_STUDIES_STATIC,36 });37 const alternateUrls: DynamicUrl[] = urlService.getDynamicAlternatives({38 availableUrls: caseStudyProps.props.availableUrls,39 staticUrl: urlService.CASE_STUDIES_STATIC,40 });4142 return {43 props: {44 ...langProps.props,45 ...caseStudyProps.props,46 canonicalUrl,47 defaultAlternateUrl,48 alternateUrls: alternateUrls.map((url) => url.toObject()),49 },50 revalidate: 300,51 };52};