Skip to content

Instantly share code, notes, and snippets.

View daverivera's full-sized avatar

Dave Rivera daverivera

View GitHub Profile
@daverivera
daverivera / index.diff
Created May 29, 2019 12:58
redux-crosstab_indexdb_index
import React from 'react'
import { render } from 'react-dom'
-import { createStore } from 'redux'
+import { createStore, compose } from 'redux'
import { Provider } from 'react-redux'
import App from './components/App'
import reducer from './reducers'
import 'todomvc-app-css/index.css'
+import PouchDB from 'pouchdb'
@daverivera
daverivera / reducers-index.diff
Created May 29, 2019 12:56
redux-crosstab_indexdb_reducers-index
import { combineReducers } from 'redux'
import todos from './todos'
import visibilityFilter from './visibilityFilter'
+import { persistentReducer } from 'redux-pouchdb'
const rootReducer = combineReducers({
todos,
visibilityFilter
})
@daverivera
daverivera / reducers-index.diff
Created May 29, 2019 12:51
redux-crosstab_persist_redux-index
import { combineReducers } from 'redux'
import todos from './todos'
import visibilityFilter from './visibilityFilter'
+import { withReduxStateSync } from 'redux-state-sync'
const rootReducer = combineReducers({
todos,
visibilityFilter
})
@daverivera
daverivera / index.diff
Created May 29, 2019 12:49
redux-crosstab_webworker_index
import React from 'react'
import { render } from 'react-dom'
-import { createStore } from 'redux'
+import { createStore, applyMiddleware } from 'redux'
import { Provider } from 'react-redux'
import App from './components/App'
import reducer from './reducers'
import 'todomvc-app-css/index.css'
+import { createStateSyncMiddleware, initStateWithPrevTab } from 'redux-state-sync'
@daverivera
daverivera / index.diff
Created May 29, 2019 12:44
redux-crosstab_persist_index
import React from 'react'
import { render } from 'react-dom'
import { createStore } from 'redux'
import { Provider } from 'react-redux'
import App from './components/App'
import reducer from './reducers'
import 'todomvc-app-css/index.css'
+import { persistStore, persistReducer } from 'redux-persist'
+import { PersistGate } from 'redux-persist/integration/react'
@daverivera
daverivera / utils-reduxpersist-listener.js
Last active December 17, 2020 11:54
redux-crosstab_persist_listener
import { getStoredState, REHYDRATE } from 'redux-persist'
export default
function crossBrowserListener(store, persistConfig) {
return async function() {
let state = await getStoredState(persistConfig)
store.dispatch({
type: REHYDRATE,
key: persistConfig.key,
@daverivera
daverivera / index.js.diff
Created May 29, 2019 12:29
redux-crosstab_localstorage_index
import { render } from 'react-dom'
-import { createStore } from 'redux'
+import { createStore, compose, applyMiddleware } from 'redux'
import { Provider } from 'react-redux'
import App from './components/App'
import reducer from './reducers'
import 'todomvc-app-css/index.css'
+import { storageMiddleware } from './middleware/storage'
+import { createStorageListener } from './utils/storage-listener'
@daverivera
daverivera / utils-storage-listener.js
Created May 29, 2019 11:47
redux-crosstab_localstorage_storage-listener
export function createStorageListener(store) {
return () => {
const wrappedAction = JSON.parse(localStorage.getItem(storageKey))
delete wrappedAction.source
store.dispatch(wrappedAction)
}
}
@daverivera
daverivera / middleware-storage.js
Last active May 29, 2019 11:47
redux-crosstab_localstorage_middleware
const storageKey = 'redux-local-tab-sync'
export function storageMiddleware() {
return () => next => action => {
if (!action.source) {
const wrappedAction = Object.assign({ source: 'another tab' }, action)
localStorage.setItem(storageKey, JSON.stringify(wrappedAction))
}
next(action)
@daverivera
daverivera / app.component.js
Last active May 29, 2023 09:39
Dynamically add components to the DOM with Angular
import { Component, Inject, ViewContainerRef } from '@angular/core'
import { Service } from './service'
@Component({
selector: 'my-app',
template: `<h1>Hello {{name}}</h1>`
})
export class AppComponent {