Beispiel #1
0
export const hydrateTransaction = (state, originalTransaction) => {
  assert(state, 'hydrateTransactions takes state as 1st argument')
  assert(
    originalTransaction,
    'hydrateTransactions takes transaction as 2nd argument'
  )

  const transaction = hydrateTransactionWithAccount(state, originalTransaction)

  if (!isHealthExpense(transaction)) {
    return transaction
  }

  const getBill = billId => getDocument(state, BILLS_DOCTYPE, billId)

  transaction.reimbursements = transaction.reimbursements || []
  transaction.reimbursements = transaction.reimbursements.map(r =>
    hydrateReimbursementWithBill(r, getBill)
  )

  return transaction
}
Beispiel #2
0
export const fetchTransactionsWithState = (exports.fetchTransactionsWithState = onFetch => (
  dispatch,
  getState
) => {
  const state = getState()
  const accountIds = getFilteredAccountIds(state)
  const period = getPeriod(state)
  const month = period && period.length === 8 && period
  assert(
    !month || (month && monthRx.exec(month)),
    'month must be in the form YYYY-MM'
  )
  const nextMonth = formatMonth(addMonths(parseMonth(month), 1))
  const selector = {}
  // This should be toggled when cozy-client supports
  // merging of collection
  // https://github.com/cozy/cozy-drive/pull/800
  //
  if (month) {
    selector.date = {
      $gt: month,
      $lt: nextMonth
    }
  }
  if (accountIds && accountIds.length) {
    selector.account = {
      $in: accountIds
    }
  }

  return dispatch(
    exports.fetchTransactions(
      {
        selector: Object.keys(selector).length > 0 ? selector : null
      },
      onFetch
    )
  )
})