Example #1
0
export const getFilesFromDate = async date => {
  // Note a file without a metadata.datetime would not be indexed: this is not
  // a big deal as this is only used to compute parameters
  const filesIndex = await cozyClient.data.defineIndex(DOCTYPE_FILES, [
    'metadata.datetime',
    'class',
    'trashed'
  ])
  const selector = {
    'metadata.datetime': { $gt: date },
    class: 'image',
    trashed: false
  }
  // The results are paginated
  let next = true
  let skip = 0
  let files = []
  while (next) {
    const result = await cozyClient.files.query(filesIndex, {
      selector: selector,
      wholeResponse: true,
      skip: skip
    })
    files = files.concat(result.data)
    skip = files.length
    // NOTE: this is because of https://github.com/cozy/cozy-stack/pull/598
    if (result.meta.count < Math.pow(2, 31) - 2) {
      next = false
    }
  }
  return files
}
Example #2
0
export const getFilesByAutoAlbum = async album => {
  album._type = DOCTYPE_ALBUMS
  let files = []
  let next = true
  let skip = 0
  while (next) {
    const result = await cozyClient.data.fetchReferencedFiles(album, {
      skip: skip,
      wholeResponse: true
    })
    if (result && result.included) {
      const includedFiles = result.included.map(included => {
        const attributes = included.attributes
        attributes.id = included.id
        attributes.clusterId = album._id
        return attributes
      })
      files = files.concat(includedFiles)
      skip = files.length
      if (result.meta.count < includedFiles.length) {
        next = false
      }
    } else {
      next = false
    }
  }
  return files
}
Example #3
0
export const updateSettingStatus = async (setting, count, changes) => {
  log('info', 'Update setting for last seq', changes.newLastSeq)
  const evaluationCount =
    count > 0 ? setting.evaluationCount + count : setting.evaluationCount
  const lastSeq = changes.newLastSeq
  const newSetting = { ...setting, evaluationCount, lastSeq }
  return cozyClient.data.update(DOCTYPE_PHOTOS_SETTINGS, setting, newSetting)
}
Example #4
0
export const getAllPhotos = async () => {
  const files = await cozyClient.data.findAll(DOCTYPE_FILES)
  return files.filter(file => file.class === 'image' && !file.trashed)
}
Example #5
0
export const updateSetting = async (oldSetting, newSetting) => {
  return cozyClient.data.update(DOCTYPE_PHOTOS_SETTINGS, oldSetting, newSetting)
}
Example #6
0
export const readSetting = async () => {
  const settings = await cozyClient.data.findAll(DOCTYPE_PHOTOS_SETTINGS)
  return settings.find(doc => doc.type === SETTING_TYPE)
}
Example #7
0
export const createSetting = initParameters => {
  log('info', 'Create setting')
  const defaultSetting = DEFAULT_SETTING
  defaultSetting.parameters[0] = initParameters
  return cozyClient.data.create(DOCTYPE_PHOTOS_SETTINGS, defaultSetting)
}