Skip to content

Instantly share code, notes, and snippets.

View calderaro's full-sized avatar

Angel Calderaro calderaro

  • Mexico City
View GitHub Profile
@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
@calderaro
calderaro / deploy.js
Created August 20, 2018 16:49
deploy over http
const {exec} = require('child_process')
export default function runDeploy () {
return new Promise((resolve, reject) => {
exec('git pull origin master', (err, stdout1, stderr) => {
if (err) return reject(stderr)
exec('npm run update', (err, stdout2, stderr) => {
if (err) return reject(stderr)
return resolve([stdout1, stdout2])
})
@calderaro
calderaro / app.js
Created September 11, 2017 02:58 — forked from acdlite/app.js
Quick and dirty code splitting with React Router v4
// getComponent is a function that returns a promise for a component
// It will not be called until the first mount
function asyncComponent(getComponent) {
return class AsyncComponent extends React.Component {
static Component = null;
state = { Component: AsyncComponent.Component };
componentWillMount() {
if (!this.state.Component) {
getComponent().then(Component => {