Skip to content

Commit 6b87171

Browse files
committed
able to update and delete from firebase
1 parent f99878d commit 6b87171

File tree

3 files changed

+23
-12
lines changed

3 files changed

+23
-12
lines changed

screens/ManageExpenses.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { GlobalStyles } from "../constants/styles";
55
import Button from "../components/UI/Button";
66
import { ExpensesContext } from "../store/expenses-context";
77
import ExpenseForm from "../components/ManageExpense/ExpenseForm";
8-
import { storeExpense } from "../util/http";
8+
import { storeExpense, updateExpense, deleteExpense } from "../util/http";
99

1010
function ManageExpenses({ route, navigation }) {
1111
const expensesCtx = useContext(ExpensesContext);
@@ -21,24 +21,24 @@ function ManageExpenses({ route, navigation }) {
2121
});
2222
}, [navigation, isEditing]);
2323

24-
function deleteExpenseHandler() {
24+
async function deleteExpenseHandler() {
2525
expensesCtx.deleteExpense(editedExpenseId);
26+
await deleteExpense(editedExpenseId);
2627
navigation.goBack();
2728
}
2829

2930
function cancelHandler() {
3031
navigation.goBack();
3132
}
3233

33-
function confirmHandler(expenseData) {
34+
async function confirmHandler(expenseData) {
3435
if (isEditing) {
3536
expensesCtx.updateExpense(editedExpenseId, expenseData);
37+
await updateExpense(editedExpenseId, expenseData)
3638
} else {
37-
storeExpense(expenseData);
38-
expensesCtx.addExpense(expenseData);
39-
39+
const id = await storeExpense(expenseData);
40+
expensesCtx.addExpense({...expenseData, id: id});
4041
}
41-
4242
navigation.goBack();
4343
}
4444

store/expenses-context.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ export const ExpensesContext = createContext({
1313
function expensesReducer(state, action) {
1414
switch (action.type) {
1515
case "ADD":
16-
const id = new Date().toString() + Math.random().toString();
17-
return [{ ...action.payload, id: id }, ...state];
16+
return [action.payload, ...state];
1817
case "SET":
19-
return action.payload;
18+
const inverted = action.payload.reverse();
19+
return inverted;
2020
case "UPDATE":
2121
const updatableExpenseIndex = state.findIndex(
2222
(expense) => expense.id === action.payload.id

util/http.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import axios from "axios";
22

33
const BACKEND_URL =
44
"https://react-native-course-8ee6a-default-rtdb.firebaseio.com";
5-
export function storeExpense(expenseData) {
6-
axios.post(BACKEND_URL + "/expenses.json", expenseData);
5+
export async function storeExpense(expenseData) {
6+
const response = await axios.post(BACKEND_URL + "/expenses.json", expenseData);
7+
const id = response.data.name;
8+
return id;
79
}
810

911
export async function fetchExpenses() {
@@ -20,3 +22,12 @@ export async function fetchExpenses() {
2022
}
2123
return expenses;
2224
}
25+
26+
27+
export async function updateExpense(id, expenseData) {
28+
return axios.put(BACKEND_URL + `/expenses/${id}.json`, expenseData);
29+
}
30+
31+
export async function deleteExpense(id, expenseData) {
32+
return axios.delete(BACKEND_URL + `/expenses/${id}.json`);
33+
}

0 commit comments

Comments
 (0)