Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 5 | Rev 1670 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

const jsonToParams = (data = {}) => {
  if (!data) {
    return false
  }
  const formBody = []

  for (const property in data) {
    const encodedKey = encodeURIComponent(property)

    // @ts-ignore
    const encodedValue = encodeURIComponent(data[property])
    formBody.push(encodedKey + '=' + encodedValue)
  }

  const _formBody = formBody.join('&')

  return _formBody
}

const filterItems = (query = '', items = []) => {
  if (!query) {
    return items
  }

  return items.filter((conversation) =>
    conversation.name.toLowerCase().includes(query.toLowerCase())
  )
}

const debounce = (func, timeout = 300) => {
  let timer
  return (...args) => {
    clearTimeout(timer)
    timer = setTimeout(() => {
      func.apply(this, args)
    }, timeout)
  }
}

const camalize = function camalize(str) {
  return str
    .toLowerCase()
    .replace(/[^a-zA-Z0-9]+(.)/g, (m, chr) => chr.toUpperCase())
}

const scrollToBottom = (element) => {
  if (!element.current) {
    return false
  }

  element.scrollTop = element.scrollHeight * 9
}

function arrayDiff(arr1, arr2) {
  return arr1
    .filter((item) => !arr2.includes(item))
    .concat(arr2.filter((item) => !arr1.includes(item)))
}

export {
  jsonToParams,
  debounce,
  scrollToBottom,
  filterItems,
  camalize,
  arrayDiff
}