Skip to content

Instantly share code, notes, and snippets.

View mcjcloud's full-sized avatar
🏠
Working from home

Brayden Cloud mcjcloud

🏠
Working from home
View GitHub Profile
function FindProxyForURL(url, host) {
alert(JSON.stringify({ url, host }));
if (url.includes('facebook.com')) {
return 'PROXY 127.0.0.1:4916;';
}
return 'DIRECT';
}
@mcjcloud
mcjcloud / TodoPage.tsx
Created July 10, 2020 06:47
Asterisk Medium Article: useEffect
useEffect(() => {
dispatch(fetchTodos())
}, [])
@mcjcloud
mcjcloud / TodoPage.tsx
Last active July 10, 2020 06:55
Asterisk Medium Article: todo styles
// Styles
const useStyles = makeStyles({
...
})
@mcjcloud
mcjcloud / index.ts
Created July 10, 2020 06:46
Asterisk Medium Article: redux
import { applyMiddleware, combineReducers, createStore } from "redux"
import thunk from "redux-thunk"
import todo, { TodoAction } from "./todo"
// Action Types
export type Action = TodoAction
const reducer = combineReducers({ todo })
export type State = ReturnType<typeof reducer>
@mcjcloud
mcjcloud / todo.ts
Created July 10, 2020 06:46
Asterisk Medium Article: state interface
// State type
// this interface represents the schema for the Todo state
export interface TodoState {
fetchError?: any
createError?: any
completeError?: any
uncompleteError?: any
isFetchingTodos: boolean
isCreatingTodo: boolean
isCompletingTodo: boolean
@mcjcloud
mcjcloud / todo.ts
Created July 10, 2020 06:45
Asterisk Medium Article: services
/**
* mark a todo as incomplete
*/
export const uncompleteTodo = async (_id: string): Promise<TodoItem> => {
const todoCollection = await useCollection<TodoItem>("todo")
const { result } = await todoCollection.updateOne({ _id }, {
$set: { complete: false },
})
if (!result.ok) {
throw new Error("Could not uncomplete TodoItem")
@mcjcloud
mcjcloud / todo.ts
Created July 10, 2020 06:45
Asterisk Medium Article: selectors
export const selectIncompleteTodos = (state: RootState): TodoItem[] => state.todo.todos.filter(item => !item.complete) ?? []
@mcjcloud
mcjcloud / todo.ts
Created July 10, 2020 06:44
Asterisk Medium Article: todo router endpoint
/**
* POST /:id/uncomplete
* mark an existing to-do item as incomplete
*/
todoRouter.post("/:id/uncomplete", async (req: Request, res: Response) => {
const { id } = req.params
try {
const todo = await uncompleteTodo(id)
if (!todo) {
return res.status(404).json({ error: "Item not found" })
@mcjcloud
mcjcloud / routes.ts
Created July 10, 2020 06:44
Asterisk Medium Article: routes.ts
import { RouteProps } from "react-router-dom"
import HomePage from "./pages/HomePage"
import TodoPage from "./pages/TodoPage"
const routes: RouteProps[] = [
{ path: "/", component: HomePage, exact: true },
{ path: "/todo", component: TodoPage },
]
export default routes
@mcjcloud
mcjcloud / todo.ts
Created July 10, 2020 06:43
Asterisk Medium Article: reducer
// Reducer
const reducer = (state: TodoState = defaultState, action: TodoAction): TodoState => {
switch (action.type) {
...
case "TODO_UNCOMPLETED_STARTED": {
return { ...state, isUncompletingTodo: true }
}
case "TODO_UNCOMPLETED": {