Skip to content

Instantly share code, notes, and snippets.

View thebiltheory's full-sized avatar
🎯
Focusing

Nabil thebiltheory

🎯
Focusing
View GitHub Profile
@thebiltheory
thebiltheory / generate-payload-media.ts
Created March 1, 2024 04:25
Process payload medias
import sharp from "sharp";
import { Media } from "./collections/Media";
/**
* @see https://github.com/payloadcms/payload/discussions/1834
*/
export const regenerateMediaSizes = async ({ media, payload }) => {
try {
await Promise.all(
media.docs.map(async (mediaDoc) => {
@thebiltheory
thebiltheory / generate-icon-list.ts
Last active February 27, 2024 03:53
Generate an array of items from the content of a folder
const fs = require("fs");
const path = require("path");
const nodeUtils = require("../utils/node.utils");
const directoryPath: string = path.join(__dirname, "../assets/icons");
fs.readdir(
directoryPath,
(err: NodeJS.ErrnoException | null, files: string[]) => {
if (err) {
@thebiltheory
thebiltheory / ChoasLinesShader.metal
Created January 8, 2024 13:55 — forked from realvjy/ChoasLinesShader.metal
Choas Lines - Metal Shader
// Lines
float hash( float n ) {
return fract(sin(n)*753.5453123);
}
// Slight modification of iq's noise function.
float noise(vector_float2 x )
{
vector_float2 p = floor(x);
vector_float2 f = fract(x);
import {useState, useEffect} from 'react';
// Define a type for the prerequisite check function
type PrerequisiteCheck = () => Promise<any>;
export default function useUserPrerequisites(
prerequisiteChecks: PrerequisiteCheck[] = [],
) {
const [userHasPrerequisite, setUserHasPrerequisites] = useState(false);
const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
const checkPrerequisites = async () => {
import React, { useState, useEffect } from 'react';
import { View, Text, Image, AppState } from 'react-native';
const App = () => {
const [appState, setAppState] = useState(AppState.currentState);
const [isAppBackgrounded, setIsAppBackgrounded] = useState(false);
useEffect(() => {
const subscription = AppState.addEventListener("change", nextAppState => {
setAppState(nextAppState);
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@thebiltheory
thebiltheory / timezones.json
Last active April 18, 2020 17:11 — forked from erdem/timezone_locations.py
Center location coordinates for timezones
{
"Africa/Abidjan": [8, -5],
"Africa/Accra": [8, -2],
"Africa/Addis_Ababa": [8, 38],
"Africa/Algiers": [28, 3],
"Africa/Asmara": [15, 39],
"Africa/Bamako": [17, -4],
"Africa/Bangui": [7, 21],
"Africa/Banjul": [13.46666666, -16.56666666],
"Africa/Bissau": [12, -15],
// Available variables:
// - Machine
// - interpret
// - assign
// - send
// - sendParent
// - spawn
// - raise
// - actions
function waitFor(ms: number): Promise<void> {
return new Promise(resolve => setTimeout(resolve, ms));
}
export default async function fetchRetry(promise: Promise<unknown>, n: number, waitNseconds = 1000): Promise<unknown> {
try {
return await promise;
} catch (error) {
if (n === 1) throw error;
@thebiltheory
thebiltheory / useReduxPolling.ts
Created February 12, 2020 12:23
Dispatch a redux action every (n) seconds
import { useEffect, useRef } from 'react';
import { useDispatch } from 'react-redux';
function useReduxPolling(action: any, interval = 2000): void {
const dispatch = useDispatch();
const callback = useRef(action);
useEffect(() => {
callback.current = action;