Skip to content

Instantly share code, notes, and snippets.

View ChuckkNorris's full-sized avatar

Levi ChuckkNorris

  • Credera
  • Denver, CO
View GitHub Profile
@ChuckkNorris
ChuckkNorris / movie-browser.container.js
Created February 4, 2018 20:46
Movie Browser with MovieModal
import React from 'react';
import {connect} from 'react-redux';
import {Grid, Row, Col} from 'react-bootstrap';
import {AppBar, TextField, RaisedButton} from 'material-ui';
import * as movieActions from './movie-browser.actions';
import * as movieHelpers from './movie-browser.helpers';
import MovieList from './movie-list/movie-list.component';
import * as scrollHelpers from '../common/scroll.helpers';
import MovieModal from './movie-modal/movie-modal.container';
@ChuckkNorris
ChuckkNorris / movie-card.component.js
Created February 4, 2018 20:26
Movie-Card with open modal trigger
import React from 'react';
import {connect} from 'react-redux';
import {Card, CardTitle, CardMedia} from 'material-ui';
import {openMovieModal} from '../movie-modal/movie-modal.actions';
// These are inline styles
// You can pass styles as objects using this convention
const styles = {
cardMedia: {
maxHeight: 394,
@ChuckkNorris
ChuckkNorris / movie-modal.container.js
Last active February 4, 2018 19:50
Initial Movie-Modal container
import React from 'react';
import {connect} from 'react-redux';
import { Dialog } from 'material-ui';
import _ from 'lodash';
import { closeMovieModal } from './movie-modal.actions';
import { getMovieDetails } from '../movie-browser.actions';
import * as movieHelpers from '../movie-browser.helpers';
import Loader from '../../common/loader.component';
const styles = {
@ChuckkNorris
ChuckkNorris / movie-browser.reducers.js
Created February 4, 2018 19:37
Movie browser with movie modal imported
import {combineReducers} from 'redux';
import { createReducer, createAsyncReducer } from '../common/redux.helpers';
import { keys as movieActionKeys } from './movie-browser.actions';
import movieModalReducer from './movie-modal/movie-modal.reducer';
// This will create a new state with both the existing
// movies and new pages of movies
const moviesSuccessReducer = (state, action) => {
const existingMovies = state.response ? state.response.results : [];
// Create a new state object to be returned
@ChuckkNorris
ChuckkNorris / loader.component.js
Created February 3, 2018 23:55
Initial loader component
import React from 'react';
import _ from 'lodash';
import {RefreshIndicator} from 'material-ui'
const styles = {
refreshStyle: {
position: 'relative',
display: 'block',
margin: '0 auto'
}
@ChuckkNorris
ChuckkNorris / movie-modal.reducer.js
Last active February 3, 2018 20:59
Initial movie-modal reducer
import { keys } from './movie-modal.actions';
import { createReducer } from '../../common/redux.helpers';
// Placeholder reducer for our movie modal
const movieModalReducer = createReducer({ isOpen: false, movieId: undefined }, {
[keys.OPEN_MOVIE_MODAL]: (state, action) => ({
isOpen: true,
movieId: action.movieId
}),
[keys.CLOSE_MOVIE_MODAL]: (state, action) => ({
@ChuckkNorris
ChuckkNorris / movie-modal.actions.js
Created February 3, 2018 20:42
Initial Movie Modal Actions
// List of movie modal action type keys
export const keys = {
'OPEN_MOVIE_MODAL': 'OPEN_MOVIE_MODAL',
'CLOSE_MOVIE_MODAL': 'CLOSE_MOVIE_MODAL',
}
// Opens the <MovieModal /> with a movieId
export const openMovieModal = (movieId) => {
return {
type: keys.OPEN_MOVIE_MODAL,
@ChuckkNorris
ChuckkNorris / movie-browser.container.js
Last active May 17, 2018 02:58
Movie browser with initial infinite scroll added
import React from 'react';
import {connect} from 'react-redux';
import {Grid, Row, Col} from 'react-bootstrap';
import {AppBar} from 'material-ui';
import * as movieActions from './movie-browser.actions';
import * as movieHelpers from './movie-browser.helpers';
import MovieList from './movie-list/movie-list.component';
import * as scrollHelpers from '../common/scroll.helpers';
class MovieBrowser extends React.Component {
export const getScrollDownPercentage = (window) => {
const pageHeight = window.document.documentElement.scrollHeight;
const clientHeight = window.document.documentElement.clientHeight;
const scrollPos = window.pageYOffset;
const currentPosition = scrollPos + clientHeight;
const percentageScrolled = currentPosition / pageHeight;
return percentageScrolled;
}
import React from 'react';
import {connect} from 'react-redux';
import {Grid, Row, Col} from 'react-bootstrap';
import {AppBar} from 'material-ui';
// e.g. { getTopMovies, ... }
import * as movieActions from './movie-browser.actions';
import * as movieHelpers from './movie-browser.helpers';
import MovieList from './movie-list/movie-list.component';
class MovieBrowser extends React.Component {