Skip to content

Instantly share code, notes, and snippets.

View pubudu-ranasinghe's full-sized avatar
🦄
¯\_(ツ)_/¯

Pubudu Ranasinghe pubudu-ranasinghe

🦄
¯\_(ツ)_/¯
View GitHub Profile
@pubudu-ranasinghe
pubudu-ranasinghe / store.js
Created May 26, 2021 13:24
redux-in-2021-02
import { configureStore } from '@reduxjs/toolkit'
import userReducer from './reducers/userReducer'
import orderReducer from './reducers/orderReducer'
const store = configureStore({
reducer: {
users: userReducer,
orders: orderReducer
}
import { combineReducers } from 'redux'
import userReducer from './reducers/userReducer'
import orderReducer from './reducers/orderReducer'
const rootReducer = combineReducers({
users: userReducer,
orders: orderReducer
})
@pubudu-ranasinghe
pubudu-ranasinghe / script.js
Created November 8, 2019 12:50
airbnb eslint errors to warnings
import react from "../node_modules/eslint-config-airbnb-base/rules/strict.js";
function isError(config) {
if(Array.isArray(config)) {
if(config[0] === 2 || config[0] === "error") {
return config;
}
}
if (config === 2 || config === "error")
return config;
@pubudu-ranasinghe
pubudu-ranasinghe / PrivateRoute.js
Created November 3, 2019 13:07
react-context-example-20
import React from "react";
import { Route, Redirect } from "react-router-dom";
import { useAuthContext } from "../contexts/AuthContext";
export default function PrivateRoute({ children, ...rest }) {
const { auth } = useAuthContext();
return (
<Route
{...rest}
render={({ location }) =>
@pubudu-ranasinghe
pubudu-ranasinghe / Login.js
Last active November 3, 2019 13:25
react-context-example-19
import React, { useState } from "react";
import {
useAuthContext,
loginSuccess,
loginFail
} from "../contexts/AuthContext";
import { apiLogin } from "../api/auth";
import { Redirect } from "react-router-dom";
export default function Login() {
@pubudu-ranasinghe
pubudu-ranasinghe / App.js
Created November 3, 2019 12:41
react-context-example-18
import React from "react";
import Todos from "./components/Todos";
import Login from "./components/Login";
import { TodoProvider } from "./contexts/TodoContext";
import { AuthProvider, useAuthContext, logout } from "./contexts/AuthContext";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import "./App.css";
function App() {
return (
@pubudu-ranasinghe
pubudu-ranasinghe / AuthContext.js
Created November 3, 2019 12:30
react-context-example-17
import React, { createContext, useReducer, useContext } from "react";
export const AuthContext = createContext();
// Initial state
const initialState = {
isLoggedIn: false,
name: null,
error: null
};
@pubudu-ranasinghe
pubudu-ranasinghe / auth.js
Created November 3, 2019 12:26
react-context-example-16
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
// A fake authenticator to mock async api call
export async function apiLogin(name) {
await delay(2000);
if (name === "John") return true;
throw new Error("User not found!");
}
@pubudu-ranasinghe
pubudu-ranasinghe / App.js
Created November 3, 2019 11:31
react-context-example-15
import React from "react";
import Todos from "./components/Todos";
import Login from "./components/Login";
import { TodoProvider } from "./contexts/TodoContext";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import "./App.css";
function App() {
return (
<Router>
@pubudu-ranasinghe
pubudu-ranasinghe / Login.js
Created November 3, 2019 11:29
react-context-example-14
import React, { useState } from "react";
export default function Login() {
const [name, setName] = useState("");
const [loading, setLoading] = useState(false);
function handleLogin() {
// Handle login here
}