Skip to content

Instantly share code, notes, and snippets.

View erkobridee's full-sized avatar

Erko Bridee erkobridee

View GitHub Profile
@erkobridee
erkobridee / useWait.ts
Created April 24, 2019 12:55
react hook for safe use setInterval or setTimeout
import * as React from 'react';
export type TFunction = (...args: any[]) => any;
/**
* common code to define useTimeout or useInterval hooks
*
* @param waitFunction
* @param cleanWaitFunction
*/
@erkobridee
erkobridee / AudioPlayerHelper.ts
Created April 19, 2019 12:24
a workaround to be able to play sounds anywhere (coded to be able to play sounds on iOS devices)
// empty sound
const TEST_AUDIO_MP3 = [
'data:audio/mpeg;base64',
',/+MYxAAAAANIAUAAAASEEB/jwOFM/0MM/90b/+RhST//w4NFwOjf',
'///PZu//',
'//9lns5GFDv//l9GlUIEEIAAAgIg8Ir/JGq3/',
'+MYxDsLIj5QMYcoAP0dv9HIjUcH//yYSg+CIbkGP//',
'8w0bLVjUP///3Z0x5QCAv/yLjwtGKTEFNRTMuOTeqqqqqqqqqqqqq/',
'+MYxEkNmdJkUYc4AKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq',
'qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq'
import * as React from 'react';
type TFunction = (...args: any[]) => any;
/**
* safe way to use window.setTimeout using a hook to handle it
*
* @param {TFunction} callback to be executed by the timeout
* @param {number} delay time to the execution
* @param {boolean} autorun flag that says if should start running right after call the hook - default true
import * as React from 'react';
export type TFunction = (...args: any[]) => any;
/**
* safe way to use window.setInterval using a hook to handle it
*
* @param {TFunction} callback to be executed on each interval
* @param {number} delay time between the executions
* @param {boolean} autorun flag that says if should start running right after call the hook - default true
import * as React from 'react';
export interface IClickOutsideProps {
onClick: () => void;
/** element to add the click event listener, default selector is body */
parentTargetQuerySelector?: string;
}
/**
* Function Component to re-use the behavior of click outside
import * as React from 'react';
/**
* extend the React.useState to have the state referente, so it will be possible to use its value
* inside of other callbacks
*
* @param {T} initialValue
*
* @return {[T, React.MutableRefObject<T>, React.Dispatch<React.SetStateAction<T>>]} array
*/
type TJSObject = { [key: string]: any };
type TJSValue = TJSObject | any;
type TArrayFilter<T> = (x: T) => boolean;
const TO_STRING = {}.toString;
const isObjectBasicCheck = <T extends object>(value: any): value is T => value !== null && typeof value === 'object';
@erkobridee
erkobridee / utils_values.js
Created January 25, 2019 21:06
nodejs script to manipulate and generate random data (uses the lodash and the moment libs)
'use strict';
var _ = require('lodash'),
hash = require('./utils_hash')
;
//----------------------------------------------------------------------------//
var SERVER_DATE_FORMAT = 'YYYY-MM-DD';
module.exports.SERVER_DATE_FORMAT = SERVER_DATE_FORMAT;
@erkobridee
erkobridee / utils_hash.js
Last active January 25, 2019 21:03
node.js script to generate a hash value using the hash.js and the lodash
'use strict';
var _ = require('lodash'),
toHash = {}
;
//============================================================================//
// hash ids with mininum length = 8
var hashids = (function(){
@erkobridee
erkobridee / requestImageAsString.ts
Created January 23, 2019 13:59
example of how read an image from the server as a binary one and parse it to its base64 string
const readImageAsDataURL = async (imageBlob: Blob): Promise<string> => {
// https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL
const imageReader = new FileReader();
return new Promise<string>(resolve => {
const load = () => {
imageReader.removeEventListener('load', load);
resolve(imageReader.result as string);
};
imageReader.addEventListener('load', load, false);
imageReader.readAsDataURL(imageBlob);