Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 5248 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
import React from 'react'
5239 stevensc 2
 
1 www 3
const jsonToParams = (data = {}) => {
6301 stevensc 4
  if (!data) {
5
    return false
6
  } else {
5130 stevensc 7
    const formBody = []
8
    for (const property in data) {
9
      const encodedKey = encodeURIComponent(property)
10
      // @ts-ignore
11
      const encodedValue = encodeURIComponent(data[property])
12
      formBody.push(encodedKey + '=' + encodedValue)
1 www 13
    }
5130 stevensc 14
    const _formBody = formBody.join('&')
15
    return _formBody
16
  }
1 www 17
}
5239 stevensc 18
 
1 www 19
const useWindowSize = () => {
5130 stevensc 20
  const [size, setSize] = React.useState([0, 0])
21
  React.useLayoutEffect(() => {
6301 stevensc 22
    function updateSize() {
5130 stevensc 23
      setSize([window.innerWidth, window.innerHeight])
24
    }
25
    window.addEventListener('resize', updateSize)
26
    updateSize()
27
    return () => window.removeEventListener('resize', updateSize)
28
  }, [])
29
  return size
1 www 30
}
5130 stevensc 31
 
6301 stevensc 32
const filterItems = (query = '', items = []) => {
33
  if (!query) {
34
    return items
35
  }
36
 
37
  return items.filter((conversation) =>
38
    conversation.name.toLowerCase().includes(query.toLowerCase())
39
  )
40
}
41
 
5130 stevensc 42
const debounce = (func, timeout = 300) => {
43
  let timer
44
  return (...args) => {
45
    clearTimeout(timer)
6301 stevensc 46
    timer = setTimeout(() => {
47
      func.apply(this, args)
48
    }, timeout)
5130 stevensc 49
  }
50
}
51
 
5239 stevensc 52
const scrollToBottom = (element) => {
5248 stevensc 53
  if (!element.current) {
54
    return false
55
  }
56
 
5239 stevensc 57
  element.scrollTop = element.scrollHeight * 9
58
}
59
 
6301 stevensc 60
export { useWindowSize, jsonToParams, debounce, scrollToBottom, filterItems }