Skip to content

Instantly share code, notes, and snippets.

View IvanAdmaers's full-sized avatar

IvanAdmaers

View GitHub Profile
// React hook useObserver
// It also works in next.js
import { useEffect, useRef } from 'react';
const useObserver = (ref, callback, options, shouldWork = null) => {
const observer = useRef();
useEffect(() => {
if (observer.current) {
@IvanAdmaers
IvanAdmaers / addParamsToUrl.js
Created September 21, 2021 13:38
AddParamsToUrl | NodeJS
const { URL } = require('url');
/**
* This function adds params to url
*
* @param {stirng} url - Url
* @param {...any} params - Params. E.g. url, param1, param1value, param2, param2value
*/
const addParamsToUrl = (url = '', ...params) => {
const myUrl = new URL(url);
@IvanAdmaers
IvanAdmaers / createFakeArray.js
Created October 23, 2021 10:26
Create a Fake Array JS
const getRandomId = () => `_${Math.random().toString(36).substring(2, 9)}`;
const createFakeArray = (length = 10) =>
new Array(length).fill('_').map(() => getRandomId());
@IvanAdmaers
IvanAdmaers / MyLink.js
Created November 20, 2021 12:07
NextJS Custom Link Component
@IvanAdmaers
IvanAdmaers / README.md
Last active January 22, 2022 12:57
Express Caching Middleware

Usage

router.get('/', cacheMiddleware(60 * 60), mainController);
@IvanAdmaers
IvanAdmaers / getObjectProperty.js
Created February 17, 2022 10:24
getObjectProperty JS
const getObjectProperty = (object = {}, property = '') => {
const properties = Array.isArray(property) ? property : property.split('.');
const propertyName = properties[0];
const value = object[propertyName];
if (properties.length <= 1) {
return value;
}
if (value === null || typeof value !== 'object') {
@IvanAdmaers
IvanAdmaers / PreviewImage.jsx
Last active March 8, 2022 06:52
PreviewImage | NextJS, MUI 5
import PropTypes from 'prop-types';
import Link from 'next/link';
import { Box } from '@mui/material';
/**
* @returns {number} - Image padding bottom
*/
const getImagePaddingBottom = (width = 0, height = 0) => 100 * (height / width);
const PreviewImage = ({ link, src, width, height, alt }) => {
@IvanAdmaers
IvanAdmaers / README.md
Last active May 17, 2022 14:15
Sort object | Sort the keys of an object recursively
@IvanAdmaers
IvanAdmaers / README.md
Last active May 17, 2022 14:16
collectObjectValues

This function collects object values { a: 1, b: 2 } => [1, 2] { c: { d: 3, e: 4 } } => [3, 4]

@IvanAdmaers
IvanAdmaers / createMD5Signature.test.ts
Created May 18, 2022 06:51
Create MD5 signature NodeJS | JavaScript | TypeScript
import createMD5Signature from './createMD5Signature';
describe('createMD5Signature', () => {
it('should return a correct hash', () => {
expect(createMD5Signature('JohnSmith:9129s$aW}a1')).toBe(
'6436241bc4170549efac409b8a4fc43f'
);
});
});