Skip to content

Instantly share code, notes, and snippets.

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

Andrew Walpole TCotton

🏠
Working from home
View GitHub Profile
@TCotton
TCotton / hook.js
Created May 17, 2021 10:55
Stale data invalidation
const swr = new Map;
const useSWR = (path, fetcher, cache) => {
let [data, update] = useState(null);
if (!swr.has(path) || swr.get(path) !== cache) {
fetcher(path).then(update, () => update(new Error(path)));
swr.set(path, cache);
}
const isError = data instanceof Error;
return {
@TCotton
TCotton / reduxsaga.js
Created May 17, 2021 10:49
Redux saga example
// customer
import { put, call } from 'redux-saga/effects';
const fetch = (url, data) =>
window.fetch(url, {
body: JSON.stringify(data),
method: 'POST',
credentials: 'same-origin',
headers: { 'Content-Type': 'application/json' }
@TCotton
TCotton / redux.js
Created December 8, 2020 16:17
Redux / Saga one
// customer
import { put, call } from 'redux-saga/effects';
const fetch = (url, data) =>
window.fetch(url, {
body: JSON.stringify(data),
method: 'POST',
credentials: 'same-origin',
headers: { 'Content-Type': 'application/json' }
/* Modernizr 2.8.3 (Custom Build) | MIT & BSD
* Build: http://modernizr.com/download/#-cssclasses-addtest-prefixed-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-img_webp
*/
window.Modernizr = (function(window, document, undefined) {
var version = '2.8.3',
Modernizr = {},
enableClasses = true,
@TCotton
TCotton / cloudSettings
Last active May 2, 2021 19:06
visual studio settings
{"lastUpload":"2021-05-02T19:06:07.371Z","extensionVersion":"v3.4.3"}
@TCotton
TCotton / module_pattern.js
Last active January 15, 2021 21:07
JS module / facade
var module = (function() {
var _private = {
i:5,
get : function() {
console.log('current value:' + this.i);
},
set : function( val ) {
this.i = val;
},
run : function() {
@TCotton
TCotton / chapter_one.js
Created November 20, 2020 20:55
chapter one - react test
import React from 'react';
export const Appointment = ({customer: { firstName }}) => <div>{firstName}</div>;
import React from 'react';
import ReactDOM from 'react-dom'
import { Appointment } from '../src/Appointment';
let container;
let component;
const render = component => ReactDOM.render(component, container);
describe("Appointment", () => {
@TCotton
TCotton / form-validation-advanced.js
Last active September 18, 2020 13:09
A JavaScript reusable form class
/* See blog post for details: http://www.suburban-glory.com/blog?page=173 */
;(function(window, document, undefined) {
// for browsers without navite bind support
if (!Function.prototype.bind) {
Function.prototype.bind = function(oThis) {
if (typeof this !== "function") {
// closest thing possible to the ECMAScript 5 internal IsCallable function
throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
@TCotton
TCotton / walpole.css
Created July 5, 2020 19:07
CSS for andywalpole.me
@media screen {
a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,fieldset,figcaption,figure,font,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,p,pre,q,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video {
margin: 0;
padding: 0;
border: none;
vertical-align: baseline;
font-size: 100%;
background: 0 0
}
@TCotton
TCotton / heydon.css
Created July 5, 2020 18:36
heydon best practice
@font-face {
font-family: Barlow Condensed;
src: url(/css/lib/fonts/barlowcondensed-bold.woff2) format("woff2"), url(/css/lib/fonts/barlowcondensed-bold.woff) format("woff");
font-weight: 700;
font-style: normal;
}
:root {
--font-plain: Helvetica Neue, Helvetica, Arial, sans-serif;
--font-special: Barlow Condensed, Helvetica, sans-serif;
--font-mono: Menlo, Courier, Courier New, Andale Mono, monospace;