Skip to content
Snippets Groups Projects
methods.js 3.87 KiB
import * as injected from './injected';

export { q } from './app/query';

function send(name, args) {
  return injected.send(name, args);
}

export async function runImport(name, func) {
  await send('api/start-import', { budgetName: name });
  try {
    await func();
  } catch (e) {
    await send('api/abort-import');
    throw e;
  }
  await send('api/finish-import');
}

export async function loadBudget(budgetId) {
  return send('api/load-budget', { id: budgetId });
}

export async function downloadBudget(syncId, { password } = {}) {
  return send('api/download-budget', { syncId, password });
}

export async function sync() {
  return send('api/sync');
}

export async function batchBudgetUpdates(func) {
  await send('api/batch-budget-start');
  try {
    await func();
  } finally {
    await send('api/batch-budget-end');
  }
}

export function runQuery(query) {
  return send('api/query', { query: query.serialize() });
}

export function getBudgetMonths() {
  return send('api/budget-months');
}

export function getBudgetMonth(month) {
  return send('api/budget-month', { month });
}

export function setBudgetAmount(month, categoryId, value) {
  return send('api/budget-set-amount', { month, categoryId, amount: value });
}

export function setBudgetCarryover(month, categoryId, flag) {
  return send('api/budget-set-carryover', { month, categoryId, flag });
}

export function addTransactions(
  accountId,
  transactions,
  { learnCategories = false, runTransfers = false } = {},
) {
  return send('api/transactions-add', {
    accountId,
    transactions,
    learnCategories,
    runTransfers,
  });
}

export function importTransactions(accountId, transactions) {
  return send('api/transactions-import', { accountId, transactions });
}

export function getTransactions(accountId, startDate, endDate) {
  return send('api/transactions-get', { accountId, startDate, endDate });
}

export function filterTransactions(accountId, text) {
  return send('api/transactions-filter', { accountId, text });
}

export function updateTransaction(id, fields) {
  return send('api/transaction-update', { id, fields });
}

export function deleteTransaction(id) {
  return send('api/transaction-delete', { id });
}

export function getAccounts() {
  return send('api/accounts-get');
}

export function createAccount(account, initialBalance) {
  return send('api/account-create', { account, initialBalance });
}

export function updateAccount(id, fields) {
  return send('api/account-update', { id, fields });
}

export function closeAccount(id, transferAccountId, transferCategoryId) {
  return send('api/account-close', {
    id,
    transferAccountId,
    transferCategoryId,
  });
}

export function reopenAccount(id) {
  return send('api/account-reopen', { id });
}

export function deleteAccount(id) {
  return send('api/account-delete', { id });
}

export function createCategoryGroup(group) {
  return send('api/category-group-create', { group });
}

export function updateCategoryGroup(id, fields) {
  return send('api/category-group-update', { id, fields });
}

export function deleteCategoryGroup(id, transferCategoryId) {
  return send('api/category-group-delete', { id, transferCategoryId });
}

export function getCategories() {
  return send('api/categories-get', { grouped: false });
}

export function createCategory(category) {
  return send('api/category-create', { category });
}

export function updateCategory(id, fields) {
  return send('api/category-update', { id, fields });
}

export function deleteCategory(id, transferCategoryId) {
  return send('api/category-delete', { id, transferCategoryId });
}

export function getPayees() {
  return send('api/payees-get');
}

export function createPayee(payee) {
  return send('api/payee-create', { payee });
}

export function updatePayee(id, fields) {
  return send('api/payee-update', { id, fields });
}

export function deletePayee(id) {
  return send('api/payee-delete', { id });
}