Skip to content

Instantly share code, notes, and snippets.

View l0gicgate's full-sized avatar

Pierre B. l0gicgate

View GitHub Profile
export default class ReducerChain {
constructor(reducers) {
this.reducers = reducers;
if (!Array.isArray(reducers)) {
throw new Error('To create a reducer chain you must pass in an array of functions.');
}
return this.reducer;
}
@l0gicgate
l0gicgate / FetchActionCreators.js
Last active May 23, 2016 14:39
Reusable action creators / reducers.
import axios from 'axios';
class FetchActionCreators {
constructor(endpoint, actions) {
const [REQUEST, SUCCESS, FAILURE] = actions;
this.actions = {
REQUEST,
SUCCESS,
FAILURE,
@l0gicgate
l0gicgate / component.js
Last active June 17, 2022 18:23
Redux + Websockets
import React, { PropTypes } from 'react';
import { connect } from 'react-redux';
import { initializeSocket } from './redux/socket.js';
class App extends React.Component {
static propTypes = {
dispatch: PropTypes.func.isRequired,
socket: PropTypes.object.isRequired,
};
import React from 'react';
import { defineMessages } from 'react-intl';
import FormattedAnchor from './FormattedAnchor';
const messages = defineMessages({
menuItem: {
id: 'menu.item',
defaultMessage: 'Menu Item',
},
menuItem1: {
@l0gicgate
l0gicgate / App.js
Last active November 23, 2017 22:19
import React from 'react';
import ReactDOM from 'react-dom';
import Hydrator from './Hydrator';
import DataComponent from './DataComponent';
const App = () => <Hydrator><DataComponent /></Hydrator>;
ReactDOM.render(<App />, 'app');
import React from 'react';
import ReactDOM from 'react-dom';
import ReactFlux from 'react-flux';
import './index.css';
import AppForm from './react-components/AppForm';
import registerServiceWorker from './registerServiceWorker';
import axios from 'axios';
function getApplications() {
import React, { Component } from 'react';
import Paper from 'material-ui/Paper';
const panelStyle = {
width: '400px',
marginLeft: '42%',
marginRight: '50%',
}
class PaperPanel extends Component {
@l0gicgate
l0gicgate / API.js
Last active January 16, 2021 08:07
import * as Rx from 'rxjs';
import queryString from 'query-string';
/**
* This function simply transforms any actions into an array of actions
* This enables us to use the synthax Observable.of(...actions)
* If an array is passed to this function it will be returned automatically instead
* Example: mapObservables({ type: ACTION_1 }) -> will return: [{ type: ACTION_1 }]
* Example2: mapObservables([{ type: ACTION_1 }, { type: ACTION_2 }]) -> will return: [{ type: ACTION_1 }, { type: ACTION_2 }]
*/
@l0gicgate
l0gicgate / RequestMethodDetector.php
Last active February 16, 2018 06:46
Determine all allowed request methods for a request outside of slim app
<?php
use FastRoute\Dispatcher;
use FastRoute\RouteParser;
use FastRoute\RouteParser\Std as StdParser;
use FastRoute\RouteCollector;
use FastRoute\DataGenerator\GroupCountBased as GroupCountBasedDataGenerator;
use Psr\Http\Message\RequestInterface;
use Slim\Route;
use Slim\Router;
@l0gicgate
l0gicgate / createBrowserHistory.js
Created July 26, 2018 20:38
History.block behavior fix
import { createLocation } from 'history/LocationUtils';
import { addLeadingSlash, stripTrailingSlash, stripBasename, createPath } from 'history/PathUtils';
import { getConfirmation, supportsHistory, supportsPopStateOnHashChange, isExtraneousPopstateEvent } from 'history/DOMUtils';
import createTransitionManager from './createTransitionManager';
const PopStateEvent = 'popstate';
const HashChangeEvent = 'hashchange';
const getHistoryState = () => {
try {