// @flow import * as React from 'react' import App, { Container } from 'next/app' import Head from 'next/head' import Layout from '../components/layout' import { withCookies } from '../config/rpc' import ErrorP from './_error' type NextPage = React.Component & React.StatelessFunctionalComponent & { getInitialProps: (ctx: any, ...args: any) => any } class RoleypolyApp extends App { static async getInitialProps ({ Component, ctx }: { Component: NextPage, ctx: {[x:string]: any}}) { // Fix for next/error rendering instead of our error page. // Who knows why this would ever happen. if (Component.displayName === 'ErrorPage' || Component.constructor.name === 'ErrorPage') { Component = ErrorP } // console.log({ Component }) let pageProps = {} const rpc = withCookies(ctx) const user = await rpc.getCurrentUser() ctx.user = user ctx.layout = { noBackground: false } if (Component.getInitialProps) { pageProps = await Component.getInitialProps(ctx, rpc) } // console.log({ pageProps }) return { pageProps, user, layout: ctx.layout } } catchFOUC () { setTimeout(() => { if (document.documentElement) document.documentElement.className += ' force-active' }, 1500) } render () { const { Component, pageProps, router, user, layout } = this.props // Fix for next/error rendering instead of our error page. // Who knows why this would ever happen. const ErrorCaughtComponent = (Component.displayName === 'ErrorPage' || Component.constructor.name === 'ErrorPage') ? ErrorP : Component return ( Roleypoly ) } } export default RoleypolyApp