Skip to content

Instantly share code, notes, and snippets.

View pkellner's full-sized avatar

Peter Kellner pkellner

View GitHub Profile
<Link
href={{
pathname: "/session", query:
{
sessionSlug: 'cracking-the-product-manager-interview',
sessionId: '7368',
sessionData: {
id: 7368,
junk: 'abcd',
sessionSlug: 'cracking-the-product-manager-interview'}
@pkellner
pkellner / next.config.js
Created November 11, 2018 21:43
Sample next.config.js for Next.js that includes environment variables, and other plugins (CSS and Image)
const withCSS = require("@zeit/next-css");
require('dotenv').config()
const path = require('path')
const Dotenv = require('dotenv-webpack')
const withImages = require('next-images')
module.exports = withCSS(withImages({
inlineImageLimit: 16384,
webpack(config, options) {
@pkellner
pkellner / ErrorSegment.tsx
Created December 21, 2018 18:25
Be nice to get some hint of what type children should be in typescript
import React, {FunctionComponent} from 'react';
interface Props {
errorMessage: string,
children: JSX.Element
}
const ErrorSegment: FunctionComponent<Props> =
({errorMessage,children}) => {
return (
@pkellner
pkellner / speakers.tsx
Created December 21, 2018 21:30
Need typescript Props interface for getInitialProps
import React, {FunctionComponent} from 'react';
import axios, {AxiosResponse} from 'axios';
import useAxiosFetch
from '../src/components/codecamp/common/hooks/useAxiosFetch';
import getConfig from 'next/config';
import App from "../src/App";
import {Speaker} from "../src/components/codecamp/common/CodeCampInterfaces";
import React, {FunctionComponent} from 'react';
import axios, {AxiosResponse} from 'axios';
import useAxiosFetch
from '../src/components/codecamp/common/hooks/useAxiosFetch';
import getConfig from 'next/config';
import App from "../src/App";
import {Speaker} from "../src/components/codecamp/common/CodeCampInterfaces";
import React, {FunctionComponent} from 'react';
import axios, {AxiosResponse} from 'axios';
import useAxiosFetch
from '../src/components/codecamp/common/hooks/useAxiosFetch';
import getConfig from 'next/config';
import App from "../src/App";
import {Speaker} from "../src/components/codecamp/common/CodeCampInterfaces";
...
render() {
return (
<div
className={`${this.props.className
? this.props.className
: ''} session-status-dropdown`}
ref={dropdownContainer => {
this.dropdownContainer = dropdownContainer;
import React, { FunctionComponent } from 'react';
import axios, { AxiosResponse } from 'axios';
import useAxiosFetch from '../src/components/codecamp/common/hooks/useAxiosFetch';
import getConfig from 'next/config';
import App from '../src/App';
import { IUserInfo, Session } from '../src/components/codecamp/common/CodeCampInterfaces';
import fetchUserInfoPromise from '../src/utils/fetchUserInfoPromise';
import axios from 'axios';
import { IUserInfo } from '../components/codecamp/common/CodeCampInterfaces';
//import getEnvParameters from './getEnvParameter';
//import getConfig from 'next/config';
//const { publicRuntimeConfig } = getConfig();
const fetchUserInfoPromise: Promise<{userInfo: IUserInfo} | {hasErrored: boolean,isServer: boolean,errorMessage: any}> = (cookieValue: string) => {
//$$$ TODO: check for cookieValue and if null, just return empty speaker so don't need to do check on every request
import { RunTypes } from '../components/codecamp/common/CodeCampInterfaces';
import getConfig from 'next/config';
const { publicRuntimeConfig } = getConfig();
/** A function that when called will return an environmental variable
* specified either in the .env file or the next.config.js defaults
* @param envKey value passed in which is environmental value without_DEV,_PROD or _STAGING
* @param devProdOrStaging
* @devProdOrStaging can only be "DEV","PROD", or "STAGING". If not included, then will default to process_env.NODE_ENV
* @returns returns the value after evaluating based on process.env.NODE_ENV