Skip to content

Instantly share code, notes, and snippets.

View calderaro's full-sized avatar

Angel Calderaro calderaro

  • Mexico City
View GitHub Profile
async function createToken(tokenParams: CustomerCreateInput) {
const [month, year] = tokenParams.expiry.split('/');
const res = await fetch('https://api.conekta.io/tokens', {
method: 'POST',
body: JSON.stringify({
card: {
number: tokenParams.number.replace(/\s/g, ''),
cvc: tokenParams.cvc,
exp_month: month,
exp_year: year,
@calderaro
calderaro / FormHandler.tsx
Last active May 21, 2020 07:32
Async Handlers
import React from "react";
export interface FormHandlerChildrenProps<T> {
state: FormState<T>;
reload?: () => Promise<void>;
create?: () => Promise<void>;
update?: () => Promise<void>;
remove?: () => void;
onChange: (change: { id: string; value: any }) => void;
setModal: (name: string) => void;
@calderaro
calderaro / AuthContext.tsx
Last active May 19, 2020 00:59
Firebase-React AuthContext
import React from "react";
import { User } from "@firebase/auth-types";
import { getAuth } from "./firebase";
import { isAdmin } from "../services/auth";
export interface AuthContextState {
status: "loading" | "loaded" | "failure";
user: User | null;
isAdmin: boolean;
}
@calderaro
calderaro / index.js
Created December 10, 2019 17:38
Upload File to google storage from React native
changeProfileImage = async e => {
const metadata = { cacheControl: 'public,max-age=300', gzip: true };
const uid = this.state.user.uid;
const response = await fetch(e.uri);
const blob = await response.blob();
const imageRef = this.storage.child(`profileImages/${uid}.png`);
const uploadTaskSnapshot = await imageRef.put(blob, metadata);
const photoURL = await uploadTaskSnapshot.ref.getDownloadURL();
await this.state.user.updateProfile({ photoURL });
this.setState({ user: firebase.auth.currentUser });
@calderaro
calderaro / fileHandler.ts
Created September 21, 2019 17:35 — forked from jasonbyrne/fileHandler.ts
Firebase Functions + Express file uploader handler
/* Firebase Functions messes with your request and will wreck your day because none of the
* traditional upload handlers with Express will work.
*
* Credit: https://stackoverflow.com/questions/47242340/how-to-perform-an-http-file-upload-using-express-on-cloud-functions-for-firebase
*/
const Busboy = require('busboy');
const allowedMethods: string[] = ['POST', 'PUT'];
export class FileUpload {
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
<script src="https://d3js.org/d3-array.v2.min.js"></script>
<script src="https://d3js.org/d3-color.v1.min.js"></script>
<script src="https://d3js.org/d3-format.v1.min.js"></script>
@calderaro
calderaro / matterNotes1.html
Created July 19, 2019 17:43
Matterjs Notes 1
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/matter.js"></script>
</head>
<body>
<script>
// module aliases
const Engine = Matter.Engine;
const Render = Matter.Render;
const World = Matter.World;
@calderaro
calderaro / localStorage.js
Created June 11, 2019 17:27
Redux local storage util
import omit from 'lodash/omit';
import throttle from 'lodash/throttle';
import pick from 'lodash/pick';
export const loadState = () => {
try {
const serialized = localStorage.getItem('store');
if (!serialized) return undefined;
@calderaro
calderaro / graph-helpers.js
Created February 8, 2019 06:30
graph helper functions
const getBaseNumber = num => parseInt('1'.padEnd(String(num).length, '0'))
const roundNumber = num => Math.ceil(num / getBaseNumber(num)) * getBaseNumber(num)
const getNumberOfTicks = num => roundNumber(num) / getBaseNumber(num)
console.log(getBaseNumber(4500))
console.log(roundNumber(4800))
console.log('ticks: ', getNumberOfTicks(4500))
@calderaro
calderaro / install-watchman.sh
Created January 18, 2019 01:22
how to install watchman ubuntu xD
sudo apt install -y autoconf automake build-essential python-dev libtool libssl-dev pkg-config
cd /tmp
git clone https://github.com/facebook/watchman.git
cd watchman/
git checkout v4.9.0
./autogen.sh
./configure
make
sudo make install