Skip to content

Instantly share code, notes, and snippets.

@saintplay
saintplay / useObservableState.ts
Created September 30, 2023 03:07
useObservableState.ts
import { useState, useRef, useEffect } from 'react';
import { BehaviorSubject } from 'rxjs';
export default function useObservableState<TElement>(initialValue: TElement) {
const observableRef = useRef(new BehaviorSubject(initialValue));
const [value, setValue] = useState(initialValue);
useEffect(() => {
observableRef.current.next(value);
}, [value]);
@saintplay
saintplay / useRefState.ts
Created September 30, 2023 03:05
useRefState.ts
import { useEffect, useState, useRef, useCallback } from 'react';
export default function useRefState<TValue>(initialState: TValue) {
const [state, setInnerState] = useState(initialState);
const ref = useRef(initialState);
const setState = useCallback((value: TValue) => {
setInnerState(value);
ref.current = value;
}, []);
@saintplay
saintplay / useArrayState.ts
Created September 21, 2023 01:10
useArrayState.ts
import { useState, useCallback } from 'react';
export default function useArrayState<TElement>(initialArr: Array<TElement>) {
const [arr, setArr] = useState(initialArr);
const setArrElement = useCallback((index: number, value: TElement) => {
if (!(index > -1)) return;
setArr((prevArr) => {
const arrayCopy = [...prevArr];
@saintplay
saintplay / get_sha_from_file.js
Last active November 3, 2023 17:51
Get SHA-256 from asset
fetch('/assets/app.bundle.js')
.then(response => { if (response.status > 200) throw new Error('not found'); return response.arrayBuffer() })
.then(async (buffer) => {
const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
const hashArray = Array.from(new Uint8Array(hashBuffer));
return hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');
})
.then(console.log)
@saintplay
saintplay / settings.json
Last active July 31, 2018 14:21
User Settings for vscode
{
"telemetry.enableTelemetry": false,
"explorer.openEditors.visible": 0,
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
"files.eol": "\n",
"workbench.colorTheme": "Night Owl",
"git.enableSmartCommit": true,
"extensions.ignoreRecommendations": false,
POLÍTICA DE PRIVACIDAD
El presente Política de Privacidad establece los términos en que usa y protege la información que es proporcionada por sus usuarios al momento de utilizar su sitio web. Esta compañía está comprometida con la seguridad de los datos de sus usuarios. Cuando le pedimos llenar los campos de información personal con la cual usted pueda ser identificado, lo hacemos asegurando que sólo se empleará de acuerdo con los términos de este documento. Sin embargo esta Política de Privacidad puede cambiar con el tiempo o ser actualizada por lo que le recomendamos y enfatizamos revisar continuamente esta página para asegurarse que está de acuerdo con dichos cambios.
Información que es recogida
Nuestro sitio web podrá recoger información personal por ejemplo: Nombre, información de contacto como su dirección de correo electrónica e información demográfica. Así mismo cuando sea necesario podrá ser requerida información específica para procesar algún pedido o realizar una entrega o facturación.
Uso
@saintplay
saintplay / counter.function.js
Last active October 17, 2021 17:00
Add counter for Firestore Collection
// functions/income/counter.function.js
'use strict'
const functions = require('firebase-functions')
const admin = require('firebase-admin')
// Prevent firebase from initializing twice
try { admin.initializeApp(functions.config().firebase) } catch (e) {}
@saintplay
saintplay / Spotify.ahk
Created November 9, 2017 18:16
Create shortcuts for next, previous and pause music. Works with AutoHotkey
^!Left::Media_Prev
^!Right::Media_Next
^!DOWN::Media_Play_Pause
# run shell:common startup and paste the file here to enable this scripts on startup
# Ctrl + Alt + Left: Previous
# Ctrl + Alt + Right: Next
# Ctrl + Alt + Down: Pause
@saintplay
saintplay / .bashrc
Last active July 5, 2018 20:49
Git Bash Windows .bashrc for ssh authentification
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }
agent_load_env
@saintplay
saintplay / .htacess
Created July 24, 2017 14:22
Cache-Control .htaccess
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType text/css "access plus 7 days"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType text/javascript "access plus 14 days"
ExpiresByType application/x-javascript "access plus 14 days"
ExpiresByType image/ico "access plus 14 days"
ExpiresByType image/jpg "access plus 7 days"
ExpiresByType image/jpeg "access plus 14 days"
ExpiresByType image/gif "access plus 14 days"