-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexpenses.js
More file actions
83 lines (72 loc) · 1.87 KB
/
expenses.js
File metadata and controls
83 lines (72 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import uuid from 'uuid';
import database from '../firebase/firebase';
// ADD_EXPENSE
export const addExpense = (expense) => ({
type: 'ADD_EXPENSE',
expense
});
export const startAddExpense = (expenseData = {}) => {
return (dispatch, getState) => {
const uid = getState().auth.uid;
const {
description = '',
note = '',
amount = 0,
createdAt = 0
} = expenseData;
const expense = { description, note, amount, createdAt };
return database.ref(`users/${uid}/expenses`).push(expense).then((ref) => {
dispatch(addExpense({
id: ref.key,
...expense
}));
});
};
};
// REMOVE_EXPENSE
export const removeExpense = ({ id } = {}) => ({
type: 'REMOVE_EXPENSE',
id
});
export const startRemoveExpense = ({ id } = {}) => {
return (dispatch, getState) => {
const uid = getState().auth.uid;
return database.ref(`users/${uid}/expenses/${id}`).remove().then(() => {
dispatch(removeExpense({ id }));
});
};
};
// EDIT_EXPENSE
export const editExpense = (id, updates) => ({
type: 'EDIT_EXPENSE',
id,
updates
});
export const startEditExpense = (id, updates) => {
return (dispatch, getState) => {
const uid = getState().auth.uid;
return database.ref(`users/${uid}/expenses/${id}`).update(updates).then(() => {
dispatch(editExpense(id, updates));
});
};
};
// SET_EXPENSES
export const setExpenses = (expenses) => ({
type: 'SET_EXPENSES',
expenses
});
export const startSetExpenses = () => {
return (dispatch, getState) => {
const uid = getState().auth.uid;
return database.ref(`users/${uid}/expenses`).once('value').then((snapshot) => {
const expenses = [];
snapshot.forEach((childSnapshot) => {
expenses.push({
id: childSnapshot.key,
...childSnapshot.val()
});
});
dispatch(setExpenses(expenses));
});
};
};