Skip to content

Instantly share code, notes, and snippets.

View mattbajorek's full-sized avatar

Matt Bajorek mattbajorek

View GitHub Profile
@mattbajorek
mattbajorek / utils.js
Created March 26, 2020 02:54
todos-redux-to-react-sweet-state utils
import { createHook } from 'react-sweet-state'
const makeSelectorsIntoHooks = (selectors, store) => (
Object.keys(selectors).reduce((accSelectors, selectorName) => {
accSelectors[selectorName] = createHook(store, {
selector: selectors[selectorName]
})
return accSelectors
}, {})
)
@mattbajorek
mattbajorek / visibilityFilter.store.js
Created March 26, 2020 14:08
todos-redux-to-react-sweet-state visibility filter store
import { createStore } from 'react-sweet-state'
import actions from './visibilityFilter.actions'
export const VisibilityFilters = {
SHOW_ALL: 'SHOW_ALL',
SHOW_COMPLETED: 'SHOW_COMPLETED',
SHOW_ACTIVE: 'SHOW_ACTIVE'
}
const initialState = VisibilityFilters.SHOW_ALL
@mattbajorek
mattbajorek / visibilityFilter.actions.js
Created March 26, 2020 14:08
todos-redux-to-react-sweet-state visibility filter actions
const visibilityFilterActions = {
setVisibilityFilter: filter => ({ setState }) => {
setState(() => filter)
}
}
export default visibilityFilterActions
@mattbajorek
mattbajorek / visibilityFilter.selectors.js
Created March 26, 2020 14:09
todos-redux-to-react-sweet-state visibility filter selectors
import makeSelectorsIntoHooks from '../utils'
import visibilityFilterStore from '../visibilityFilter/visibilityFilter.store'
const visibilityFilterSelectors = {
useVisibilityFilterActions: null,
useVisibilityFilter: visibilityFilter => visibilityFilter
}
export default makeSelectorsIntoHooks(visibilityFilterSelectors, visibilityFilterStore)
@mattbajorek
mattbajorek / multi-store.selector.js
Created March 27, 2020 20:42
todos-redux-to-react-sweet-state multi store selector
import todosSelectors from './todos/todos.selectors'
import visibilityFilterSelectors from './visibilityFilter/visibilityFilter.selectors'
const multiStoreSelectors = {
useVisibleTodos: () => {
const [visibilityFilter, visibilityFilterActions] = visibilityFilterSelectors.useVisibilityFilter()
const [visibleTodos, todosActions] = todosSelectors.useVisibleTodos(visibilityFilter)
return [visibleTodos, { ...visibilityFilterActions, ...todosActions }]
}
}
@mattbajorek
mattbajorek / AddTodo.js
Created March 27, 2020 20:56
todos-redux-to-react-sweet-state add todo component
import React from 'react'
import todosSelectors from '../stores/todos/todos.selectors'
const AddTodo = () => {
let input
const [, { addTodo }] = todosSelectors.useTodosActions()
return (
<div>
@mattbajorek
mattbajorek / FilterLink.js
Created March 27, 2020 20:57
todos-redux-to-react-sweet-state filter link container
@mattbajorek
mattbajorek / VisibleTodoList.js
Created March 27, 2020 20:57
todos-redux-to-react-sweet-state visibile todo list container
import React from 'react'
import TodoList from '../components/TodoList'
import multiStoreSelectors from '../stores/multi-store.selectors'
const VisibleTodoList = ({ children }) => {
const [visibleTodos, { toggleTodo }] = multiStoreSelectors.useVisibleTodos()
return (
<TodoList
todos={visibleTodos}
@mattbajorek
mattbajorek / build.gradle
Last active April 5, 2020 14:18
Dependencies section of build.gradle for Native Calculations Android Library
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// TODO: Change to local Unity classes jar location
compileOnly files('/Applications/Unity/Hub/Editor/2018.4.19f1/PlaybackEngines/AndroidPlayer/Variations/mono/Release/Classes/classes.jar')
api 'androidx.appcompat:appcompat:1.1.0'
implementation files('libs/gson-2.8.6.jar')
testImplementation 'junit:junit:4.12'
@mattbajorek
mattbajorek / build.gradle
Created April 5, 2020 18:10
Copying build output to Unity's Android Plugin folder
afterEvaluate {
assembleDebug.finalizedBy(exportAARDebug)
}
task deleteOldAARDebug(type: Delete) {
delete '../../UnityPluginExample/Assets/Plugins/Android/nativecalculations-debug.aar'
}
task exportAARDebug(type: Copy) {
from('build/outputs/aar')