Skip to content

Instantly share code, notes, and snippets.

View sturmenta's full-sized avatar
🌌

Nicolas Sturm sturmenta

🌌
  • Argentina
View GitHub Profile
@sturmenta
sturmenta / show-progress.tsx
Created October 11, 2022 08:28
react-native progress indicator
import React from 'react';
import {useTheme} from '@react-navigation/native';
import {ProgressChart} from 'react-native-chart-kit';
import {MyThemeInterfaceColors, getPercentageInHex} from '_utils';
import {useComponentTrackTrace} from '_hooks';
interface ShowProgressProps {
progress: number;
height?: number;
@sturmenta
sturmenta / get-new-image-size-by-aspect-ratio.ts
Created October 11, 2022 07:31
resize image and keep aspect ratio
type OneRequiredOneOptional =
| {desiredWidth: number; desiredHeight?: number}
| {desiredWidth?: number; desiredHeight: number};
interface CommonProps {
widthReadFromImage: number;
heightReadFromImage: number;
}
type FullProps = CommonProps & OneRequiredOneOptional;
@sturmenta
sturmenta / baseScraper.js
Last active September 30, 2022 12:18
basic scraper
const axios = require('axios');
const cheerio = require('cheerio');
const baseUrl = 'https://www.infomerlo.com';
const urlToScrap = baseUrl + '/noticias';
const numberOfFirstElementsToScrap = 10;
axios(urlToScrap)
.then(response => {
@sturmenta
sturmenta / addObjectsToArrayIfIdNotExists.ts
Created August 7, 2022 21:50
get from graphql with pagination
export const addObjectsToArrayIfIdNotExists = (
baseArray: any[],
objects: any[],
): any[] => {
objects.forEach(obj1 => {
if (!baseArray.find(obj2 => obj2.id === obj1.id)) {
baseArray.push(obj1);
}
});
@sturmenta
sturmenta / feedback.tsx
Last active June 29, 2024 18:35
react native collapse animation dynamic height
import React, {useEffect, useImperativeHandle, useState} from 'react';
import {Keyboard, View} from 'react-native';
import {useTheme} from '@react-navigation/native';
import {useSpring, animated} from '@react-spring/native';
import {MyThemeInterfaceColors} from '_styles';
import {GetDimensions} from '_atoms';
import {MultilineTextInput, Button, TextInputRef} from '_molecules';
import {getPercentageInHex, themedStyleSheet} from '_utils';
import {usePrevious} from '_hooks';
@sturmenta
sturmenta / container-with-dimensions.tsx
Last active December 17, 2023 06:42
react native - get the father component dimensions
import React, { useState } from "react"
import { View, ViewProps } from "react-native"
interface ContainerWithDimensionsProps {
children: ({
width,
height
}: {
width: number
height: number
@sturmenta
sturmenta / stringifyWithCustomDepth.ts
Last active November 19, 2022 14:48
Version of JSON.stringify limitied to a specific depth.
export const stringifyWithCustomDepth = (obj: any, depth = 1): string => {
return !obj
? JSON.stringify(obj, null, 2)
: typeof obj === 'object'
? JSON.stringify(
JSON.parse(
depth < 1
? '"???"'
: `{${Object.keys(obj)
.map((k) => `"${k}": ${stringifyWithCustomDepth(obj[k], depth - 1)}`)
@sturmenta
sturmenta / CTAWithFading.tsx
Created July 26, 2021 05:21
hex percentage - cta with fading
/* eslint-disable react/no-array-index-key */
import React, {ReactNode} from 'react';
import {SafeAreaView, View} from 'react-native';
import {withTheme} from '../../Elements';
import {baseTheme, darkTheme, PuraMenteTheme} from '../../../styles/base';
import {makeStyles} from '../../Utils/MakeStylesHoc';
interface CTAWithFadingProps {
theme: PuraMenteTheme;
@sturmenta
sturmenta / KeyboardListener.ts
Created April 6, 2021 17:27
react-native KeyboardListener
import React, {useEffect} from 'react';
import {Keyboard} from 'react-native';
const KeyboardListener: React.FC<{
onDidShow: (e: any) => void;
onDidHide: (e: any) => void;
}> = ({onDidShow, onDidHide}) => {
useEffect(() => {
if (onDidShow) Keyboard.addListener('keyboardDidShow', onDidShow);
if (onDidHide) Keyboard.addListener('keyboardDidHide', onDidHide);
@sturmenta
sturmenta / getFontScale.ts
Created October 23, 2020 03:32
react native - get font scale
import {PixelRatio, Platform} from 'react-native';
type fontScales = -3 | -2 | -1 | 0 | 1 | 2 | 3;
type iOS_fontScales = '0.823' | '0.882' | '0.941' | '1' | '1.118' | '1.235' | '1.353';
type iOS_fontScalesMap<T> = {[scale in iOS_fontScales]: T};
const fontScale_iOS: iOS_fontScalesMap<number> = {
'0.823': -3,
'0.882': -2,
'0.941': -1,