Skip to content

Instantly share code, notes, and snippets.

@pizzarob
pizzarob / s3-client.js
Created Aug 16, 2016
Client Side Image Upload to AWS
View s3-client.js
const dataURItoBlob = (dataURI, type) => {
const byteString = atob(dataURI.split(',')[1]);
const ab = new ArrayBuffer(byteString.length);
const ia = new Uint8Array(ab);
for (let i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ab], {
type
View Mongoose_Pagination_Plugin.js
function paginate(query = {}, options = {}, callback) {
const limit = options.limit || 10;
let page = options.page || 1;
const countQuery = this.find(query).count();
return new Promise(resolve => {
countQuery.exec().then(count => {
const pages = Math.ceil(count / limit) || 1;
@pizzarob
pizzarob / Product of consecutive Fibonacci numbers.js
Last active Oct 15, 2016
Given a number, say prod (for product), we search two Fibonacci numbers F(n) and F(n+1) verifying F(n) * F(n+1) = prod.
View Product of consecutive Fibonacci numbers.js
// Given a number, say prod (for product), we search two Fibonacci numbers F(n) and F(n+1) verifying F(n) * F(n+1) = prod
// My solution to the code wars challenge https://www.codewars.com/kata/5541f58a944b85ce6d00006a/train/javascript
// Not used for this, but here's some code to test if a number is in the Fibonacci sequence.
// const isPerfectSquare = num => {
// const sq = Math.sqrt(num);
// return sq * sq === num;
// }
// const isFib = num => {
// return isPerfectSquare(5 * num * num + 4) || isPerfectSquare(5 * num * num - 4);
View deepEqual.js
const deepEqual = (a, b) => JSON.stringify(a) === JSON.stringify(b);
@pizzarob
pizzarob / 01_DropZone.jsx
Last active Nov 14, 2017
HTML5 Drag and Drop File Upload React Component
View 01_DropZone.jsx
import React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
const ANIMATION_DURATION = 1000;
class BatchDropZone extends React.Component {
static propTypes = {
@pizzarob
pizzarob / MongooseSingletonModel.js
Last active Dec 4, 2017
Mongoose Singleton Model
View MongooseSingletonModel.js
schema.statics = {
getSingleton: function (cb) {
this.findOne()
.sort({ updated: -1 })
.limit(1)
.exec((err, model) => {
if (err) {
cb(err, null);
} else if (!model) {
cb(err, new this());
View starter_02.js
if (isEnabled) {
// Get all the vendors in your crate. The creator of the crate (you) is
// added as a default vendor.
const { data: vendors } = await cargo.api.getCrateVendors(CRATE_ID);
// Map through each vendor and get the token contracts they created.
const contractResponses = await Promise.all(
vendors.map(({ vendorId }) => cargo.api.getVendorTokenContracts(vendorId))
);
View starter_04.js
// Get the resale items for our contracts. This method
// takes a list of token contract IDs, not addresses.
// The IDs are assigned by Cargo and used internally
const { data: resaleItems} = await cargo.api.getContractResaleItems(
contracts.map(contract => contract.tokenContractId)
);
// Pass our contract data and resale items to a function that will create some markup
// and add it to the page.
displayContractContent(contracts, resaleItems);
View starter_05.js
function displayContractContent(contracts, resaleItems) {
let template = '';
contracts.forEach(contract => {
const { name, symbol, tokenAddress, tokenContractId } = contract;
const currentResaleItems = resaleItems[tokenContractId];
let tokenMarkup = '';
currentResaleItems.forEach(token => {
const { metadata, price } = token;
View starter_07.js
const tokenRows = document.querySelector('[data-id="token-rows"]');
const txConfirmation = document.querySelector('[data-id="tx-confirmation"]');
// This listener checks to see if we clicked the buy now button
tokenRows.addEventListener('click', async evt => {
// If the target is the buy now button
if (evt.target.dataset.id === 'buy-now') {
// We want to get the resale ID and price we set on the button via
// data attributes.