Skip to content

Instantly share code, notes, and snippets.

View use-async.ts
const useAsync = <T, E = string>(
asyncFunction: () => Promise<T>,
immediate = true
) => {
const [status, setStatus] = useState<
"idle" | "pending" | "success" | "error"
>("idle");
const [value, setValue] = useState<T | null>(null);
const [error, setError] = useState<E | null>(null);
// The execute function wraps asyncFunction and
View use-timeout.ts
function useTimeout(callback: () => void, delay = 1000 * 5) {
const callbackRef = useRef<typeof callback | null>(null);
useEffect(() => {
callbackRef.current = callback;
}, [callback]);
useEffect(() => {
function execute() {
callbackRef.current?.();
View typed-form-submission.tsx
// Define which elements this form is going to have
interface FormElements extends HTMLFormControlsCollection {
fieldName: HTMLInputElement;
}
// Set a "HTMLFormElement" interface with those elements
interface MyForm extends HTMLFormElement {
readonly elements: FormElements;
}
@weslleyaraujo
weslleyaraujo / simple-fuzzy.js
Created Aug 8, 2020
simple fuzzy search regex
View simple-fuzzy.js
new RegExp(".*" + "string".split("").join(".*") + ".*")
@weslleyaraujo
weslleyaraujo / index.html
Last active Jan 14, 2020
React w/TypeScript
View index.html
<div id="app"></div>
@weslleyaraujo
weslleyaraujo / Build_Vim7.4_CentOS7.txt
Created Oct 10, 2017 — forked from junxie6/Build_Vim7.4_CentOS7.txt
Compile the latest Vim 7.4 on CentOS 7
View Build_Vim7.4_CentOS7.txt
Compile the latest Vim 7.4 on CentOS 7
# yum install gcc make ncurses ncurses-devel
# yum install ruby ruby-devel lua lua-devel luajit \
luajit-devel ctags git python python-devel \
python3 python3-devel tcl-devel \
perl perl-devel perl-ExtUtils-ParseXS \
perl-ExtUtils-XSpp perl-ExtUtils-CBuilder \
perl-ExtUtils-Embed
View dispatching.js
import sleep from 'utils/sleep';
const SONG_DELAY_TIME = 400;
export const sing = payload => async (dispatch, getState) => {
dispatch(startSong());
const { match } = getState();
for (let i = 0; i <= match.all.length - 1; i++) {
const id = match.all[i];
dispatch(lightenPad({ id }));
await sleep(SONG_DELAY_TIME); // sleep time during note play
View sleep.js
export default function sleep(ms = 0) {
 return new Promise(r => setTimeout(r, ms));
}
View game-actions.js
const start = createAction(START_GAME);
const next = createAction(NEXT_LEVEL);
const startGame = payload => start({ next: getRandomId() });
const nextLevel = payload => next({ next: getRandomId() });
startGame(); // { type: ‘START_GAME’, payload: { next: ‘red’ } }
startGame(); // { type: ‘START_GAME’, payload: { next: ‘blue’ } }
startGame(); // { type: ‘START_GAME’, payload: { next: ‘yellow’ } }
View match-example.js
const { guessed, all } = getState().match;
console.log(all, guessed) // ['red'] ['red']
if (guessed[0] === all[0]) {
// keep going from here, guesses are correct
return;
}
// player didnt guessed properly, do something about it