Skip to content

Instantly share code, notes, and snippets.

View whizkydee's full-sized avatar
🏠
Working from home

Olaolu Olawuyi whizkydee

🏠
Working from home
View GitHub Profile
@whizkydee
whizkydee / useEffectWithChangeLogger.ts
Created March 13, 2025 11:17
Drop-in replacement for `useEffect` that helps debug unstable dependencies
const useEffectWithChangeLogger = (
effect: () => void,
deps: any[],
name = 'Component',
) => {
const previousDepsRef = useRef<any[] | null>(null);
useEffect(() => {
if (previousDepsRef.current) {
const changedDeps = deps
export function isWithinOrigin(url: any, origin: string) {
try {
const {origin: derivedOrigin} = new URL(url);
if (derivedOrigin === origin) {
return true;
}
return false;
} catch {
return false;
}
{
"compilerOptions": {
"target": "esnext",
"baseUrl": "./",
"paths": {
"@/*": ["src/*"]
}
},
"exclude": ["node_modules"]
}
@whizkydee
whizkydee / git-pushing-multiple.rst
Created September 2, 2019 19:16 — forked from rvl/git-pushing-multiple.rst
How to push to multiple git remotes at once. Useful if you keep mirrors of your repo.

Pushing to Multiple Git Repos

If a project has to have multiple git repos (e.g. Bitbucket and Github) then it's better that they remain in sync.

Usually this would involve pushing each branch to each repo in turn, but actually Git allows pushing to multiple repos in one go.

If in doubt about what git is doing when you run these commands, just

function isObject(obj) {
return obj !== null && typeof obj === 'object'
}
export default function looseEqual(a, b) {
if (a === b) return true
const isObjectA = isObject(a)
const isObjectB = isObject(b)
if (isObjectA && isObjectB) {
try {
@whizkydee
whizkydee / country-dial-codes.json
Created April 27, 2019 19:58
Country Dial Codes JSON data (Extracted from Gmail)
[
{ "label": "+93", "value": "Afghanistan" },
{ "label": "+355", "value": "Albania" },
{ "label": "+213", "value": "Algeria" },
{ "label": "+1", "value": "American Samoa" },
{ "label": "+376", "value": "Andorra" },
{ "label": "+244", "value": "Angola" },
{ "label": "+1", "value": "Anguilla" },
{ "label": "+1", "value": "Antigua & Barbuda" },
{ "label": "+54", "value": "Argentina" },
@whizkydee
whizkydee / InputGroup.js
Last active May 4, 2019 12:50
HelloTax InputGroup v2
import Vue from 'vue'
const InputGroup = Vue.component('InputGroup', {
render() {
const {
type,
full,
name,
icon,
@whizkydee
whizkydee / TopBar.js
Last active May 4, 2019 12:53
Super React-y component in Vue
import Vue from 'vue'
import { mapState } from 'vuex'
import StyledTopBar from './styles'
import { Button } from '@/HelloTaxUI'
import { NavItem } from '../Navigation'
import { UserService } from '@/services'
import 'flag-icon-css/css/flag-icon.min.css'
import Notifications from '@/components/Notifications'
import { BellIcon, Cog, LogoutIcon } from '@/assets/icons'
handleUpload = event => {
const imgElem = this.imgRef.current;
const file = event.target.files[0];
if (file && file.type.startsWith('image/')) {
imgElem.file = file;
const form = new FormData();
form.append('files', file);
@whizkydee
whizkydee / svgToCanvas.js
Created October 24, 2018 14:55
WIP to write SVG data to Canvas
import React from 'react';
import Store from '../store';
import EventBus from '../eventBus';
import Selection from './selection';
import { getShapeRect } from '../utils';
import { renderToStaticMarkup } from 'react-dom/server.browser';
export default class WhiteBoard extends React.Component {
constructor() {
super();