OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / keet-store / store / chat / file / chat-file.model.js

41 lines · javascript ref:
import { FILE_GROUP_BATCH as e, FILE_GROUP_THRESHOLD as t } from "./chat-file.constant"
import { isMediaMimeType as a } from "../../lib/file"
const s = (e) =>
  /^data:(?:[\w-]+\/[\w.+-]+(?:;[\w!#$%&'*+.^`{|}~-]+=[\w!#$%&'*+.^`{|}~-]+)*)?(?:;base64)?,[\w()/!$&'*+.,;=~:@?%-]*$/iu.test(
    e,
  )
export const isFilePath = (e) => e && !s(e)
export const getBytes = (e) => {
  let t
  return (s(e.path) && (t = Buffer.from(e.path.split("base64,")[1], "base64")), t)
}
export const generateTempId = (e) => (e.id ? e.id : e.url)
export function groupFiles(s) {
  const i = [],
    n = []
  for (const e of s) a(e.metadata.mimetype) ? i.push(e) : n.push(e)
  const o = n.map((e) => [e])
  let r = []
  if (i.length < t) r = i.map((e) => [e])
  else
    for (let t = 0; t < i.length; t += e) {
      const a = i.slice(t, t + e)
      r.push(a)
    }
  return [...o, ...r]
}
function i(e) {
  return {
    base64: e.base64,
    buffer: e.buffer,
    mimetype: e.metadata.mimetype,
    dimensions: e.metadata.dimensions,
  }
}
export function getChatFileMetadata(e) {
  return {
    previews: { large: i(e.large), medium: i(e.medium), small: i(e.small) },
    dimensions: e.metadata.dimensions,
  }
}