Skip to content

Instantly share code, notes, and snippets.

View kingisaac95's full-sized avatar

Kingdom Orjiewuru kingisaac95

View GitHub Profile
@kingisaac95
kingisaac95 / usePolling.js
Created March 26, 2023 04:32
Recursively calls the provided action while caller component is mounted
import React, { useCallback, useEffect, useRef } from "react";
function usePolling(action, delay) {
const timeoutId = useRef(null);
const isComponentMounted = useRef(false);
const handlePolling = useCallback(() => {
action().then(() => {
if (isComponentMounted.current) {
timeoutId.current = setTimeout(handlePolling, delay);
@kingisaac95
kingisaac95 / allAnimals.js
Created December 14, 2022 21:58
List of all animals
// Source: https://a-z-animals.com/animals/
const allAnimals = {
Aardvark: true,
Aardwolf: true,
Abyssinian: true,
'Abyssinian Guinea Pig': true,
'Acadian Flycatcher': true,
'Achrioptera Manga': true,
'Ackie Monitor': true,
Addax: true,
@kingisaac95
kingisaac95 / TimelineCapsule
Created June 24, 2022 13:42
Timeline Capsule Component CSS
const borderStyle = css`
border: solid 1px ${({ theme }) => theme.colors.neutral._40};
`;
export const $TimelineCapsule = styled.div`
position: relative;
display: flex;
align-items: center;
justify-content: space-between;
const sortByPropertyName = ({ data, field = 'name' }) =>
data.sort(function (a, b) {
var nameA = a[field].toUpperCase();
var nameB = b[field].toUpperCase();
if (nameA < nameB) return -1;
if (nameA > nameB) return 1;
return 0;
});
@kingisaac95
kingisaac95 / timeago.js
Created January 17, 2022 14:46 — forked from IbeVanmeenen/timeago.js
TimeAgo - ES6
// Epochs
const epochs = [
['year', 31536000],
['month', 2592000],
['day', 86400],
['hour', 3600],
['minute', 60],
['second', 1]
];
@kingisaac95
kingisaac95 / retry.ts
Created December 10, 2021 10:50
Retry request with axios typings
import { AxiosResponse } from 'axios';
import { logger } from 'firebase-functions';
const retryPromise = (
fn: () => Promise<AxiosResponse>,
retries = 2,
err: null | unknown = null
): Promise<AxiosResponse> => {
logger.log('Retries: ', retries);
@kingisaac95
kingisaac95 / retry.js
Created December 10, 2021 10:46
Retry promise
function retry(fn, retries = 2, err = null) {
console.log("Retries: ", retries);
if (!retries) {
console.log("Done Retrying...");
return Promise.reject(err);
}
return fn().catch((err) => {
console.log("Retrying...");
return retry(fn, retries - 1, err.response);
@kingisaac95
kingisaac95 / formatCount.js
Created November 29, 2021 13:16
Add comma separation in numbers
const formatCount = (x) => x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
const uploadFile = ({
event,
onComplete
}: {
event: ChangeEvent<HTMLInputElement>;
onComplete: (file: File, base64File: string) => void;
}) => {
event.preventDefault();
let base64File: string;
@kingisaac95
kingisaac95 / Tabs.jsx
Created June 30, 2021 16:44
Tabs Component - React
// Tabs.jsx
import PropTypes from 'prop-types';
import { useState } from 'react';
import styles from './Tabs.module.css';
export const Tabs = ({ tabHeaders, children, defaultTab }) => {
const [currentTab, setCurrentTab] = useState(defaultTab.toLowerCase());
const handleTabSelect = (tabHeader) => {
setCurrentTab(tabHeader.toLowerCase());