Skip to content

Instantly share code, notes, and snippets.

View sturmenta's full-sized avatar
🌌

Nicolas Sturm sturmenta

🌌
  • Argentina
View GitHub Profile
@sturmenta
sturmenta / getPercentageInHex.ts
Created July 24, 2023 05:05
convert decimal percentage on hexadecimal percentage to be used with hex colors
export const getPercentageInHex = (percentage: number): string => {
if (percentage >= 0 && percentage <= 100) {
const preHexNumber = (percentage * 255) / 100;
const hexNumber = preHexNumber.toString(16).split('.')[0].padStart(2, '0').replace('f0', 'ff');
return hexNumber;
}
return 'ff';
};
@sturmenta
sturmenta / useGetDivDimensions.ts
Last active March 3, 2024 05:13
get dimensions of div with ResizeObserver and hooks
import { useEffect, useRef, useState } from "react";
export const useGetDivDimensions = () => {
const [dimensions, setDimensions] = useState({ height: 0, width: 0 });
const div_ref = useRef<HTMLDivElement | null>(null);
useEffect(() => {
const resizeObserver = new ResizeObserver((event) => {
setDimensions({
@sturmenta
sturmenta / WeekdaysSelector.tsx
Created June 12, 2023 03:53
react native WeekdaysSelector
import { TouchableOpacity, View } from 'react-native';
import { withLightHapticFeedback } from '_utils';
import { C_Text } from './C_Text';
const weekdays = ['L', 'M', 'X', 'J', 'V', 'S', 'D'];
export const WeekdaysSelector = ({
selectedDays,
@sturmenta
sturmenta / plausible.ts
Last active October 31, 2024 17:03
plausible react-native expo config
import Plausible, { EventOptions, PlausibleOptions } from 'plausible-tracker';
import { setLocationHref } from '@expo/metro-runtime/build/location/Location.native.js';
// NOTE: see tracking events here: https://plausible.io/asd.xyz
const runPlausibleInitialConfig = () => {
let alreadyRun = false;
if (!alreadyRun) {
alreadyRun = true;
@sturmenta
sturmenta / removeHoursMinutesAndSecondsFromDate.ts
Created November 7, 2022 23:16
remove Hours Minutes And Seconds From Date
import dayjs from 'dayjs';
/**
* return DD/MM/YYYY
*/
export const removeHoursMinutesAndSecondsFromDate = (
date: Date,
): {newDate: dayjs.Dayjs; DDMMYYYY: string} => {
const _date = dayjs(date);
@sturmenta
sturmenta / validateAtLeast13Years.ts
Created November 7, 2022 23:11
validate user date greater than 13 years
import dayjs from 'dayjs';
export const validateAtLeast13Years = (DDMMYYYY?: string): boolean => {
if (!DDMMYYYY) return false;
const timePickerDate = DDMMYYYY.split('/').reverse().join('-');
const date1 = dayjs();
const date2 = dayjs(timePickerDate);
const diff = date1.diff(date2, 'years');
@sturmenta
sturmenta / check-versionA-is-greater-or-equal-than-versionB.ts
Created October 29, 2022 03:03
check version "A" is greater or equal than version "B"
export const checkVersionAIsGreaterOrEqualThanVersionB = ({
versionA,
versionB,
}: {
versionA: string; // 1.2.3
versionB: string; // 1.2.3
}): boolean => {
const _versionA = {
major: parseInt(versionA.split('.')[0], 10), // 1.2.3 -> 1
minor: parseInt(versionA.split('.')[1].split('.')[0], 10), // 1.2.3 -> 2
@sturmenta
sturmenta / example.ts
Last active October 28, 2022 18:29
get gist text - get gist raw text - fetch gist text
const gistUrl = 'https://gist.github.com/sturmenta/df1c9da1f219c88e996e48f19d57acd3';
const {data, error} = await getGistFirstFileText(`${gistUrl}.json`);
console.log(data);
// ## some title
//
// some text
@sturmenta
sturmenta / get-google-maps-place-by-autocomplete.ts
Last active October 19, 2022 11:31
get google maps place by autocomplete
import Qs from 'qs';
import {GOOGLE_MAPS_API_KEY} from 'react-native-dotenv';
export const getGoogleMapsPlaceByAutocomplete = (
place: string,
): Promise<{
data?: {
predictions: Array<{
description: string;
place_id: string;
@sturmenta
sturmenta / scalable-image-uri.tsx
Created October 11, 2022 08:33
react-native uri-image with progress indicator
import React, {useState} from 'react';
import {ImageProps, View} from 'react-native';
import FastImage, {FastImageProps} from 'react-native-fast-image';
import {useComponentTrackTrace} from '_hooks';
import {ShowProgress} from '_atoms';
import {ToastShow} from '_utils';
import {getNewImageSizeByAspectRatio} from './get-new-image-size-by-aspect-ratio';