Skip to content

Commit 894a7aa

Browse files
committed
Add Income tags and fix default for new txns
Fixes #31 Sets the default transaction to "Expense + Others" instead of the "Income + Transport" combination.
1 parent 3117e04 commit 894a7aa

File tree

3 files changed

+51
-15
lines changed

3 files changed

+51
-15
lines changed

Expenso/Configs.swift

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ let CURRENCY_LIST = ["₹", "$", "€", "¥", "£", "¢", "₭"]
3030
let TRANS_TYPE_INCOME = "income"
3131
let TRANS_TYPE_EXPENSE = "expense"
3232

33-
// Transaction tags
33+
// Expense Transaction tags
3434
let TRANS_TAG_TRANSPORT = "transport"
3535
let TRANS_TAG_FOOD = "food"
3636
let TRANS_TAG_HOUSING = "housing"
@@ -39,11 +39,20 @@ let TRANS_TAG_MEDICAL = "medical"
3939
let TRANS_TAG_SAVINGS = "savings"
4040
let TRANS_TAG_PERSONAL = "personal"
4141
let TRANS_TAG_ENTERTAINMENT = "entertainment"
42-
let TRANS_TAG_OTHERS = "others"
4342
let TRANS_TAG_UTILITIES = "utilities"
4443

44+
// Income Transaction tags
45+
let TRANS_TAG_SALARY = "salary"
46+
let TRANS_TAG_CASHBACK = "cashback"
47+
let TRANS_TAG_INVESTMENT_RETURNS = "investment_returns"
48+
let TRANS_TAG_SALE = "sale"
49+
50+
// Common Transaction tags
51+
let TRANS_TAG_OTHERS = "others"
52+
4553
func getTransTagIcon(transTag: String) -> String {
4654
switch transTag {
55+
// Expenses
4756
case TRANS_TAG_TRANSPORT: return "trans_type_transport"
4857
case TRANS_TAG_FOOD: return "trans_type_food"
4958
case TRANS_TAG_HOUSING: return "trans_type_housing"
@@ -52,14 +61,22 @@ func getTransTagIcon(transTag: String) -> String {
5261
case TRANS_TAG_SAVINGS: return "trans_type_savings"
5362
case TRANS_TAG_PERSONAL: return "trans_type_personal"
5463
case TRANS_TAG_ENTERTAINMENT: return "trans_type_entertainment"
55-
case TRANS_TAG_OTHERS: return "trans_type_others"
5664
case TRANS_TAG_UTILITIES: return "trans_type_utilities"
65+
66+
// Incomes
67+
// TODO: Add icon sets for every income tag
68+
case TRANS_TAG_SALARY: return "trans_type_savings"
69+
case TRANS_TAG_CASHBACK: return "trans_type_savings"
70+
case TRANS_TAG_INVESTMENT_RETURNS: return "trans_type_savings"
71+
case TRANS_TAG_SALE: return "trans_type_savings"
72+
5773
default: return "trans_type_others"
5874
}
5975
}
6076

6177
func getTransTagTitle(transTag: String) -> String {
6278
switch transTag {
79+
// Expenses
6380
case TRANS_TAG_TRANSPORT: return "Transport"
6481
case TRANS_TAG_FOOD: return "Food"
6582
case TRANS_TAG_HOUSING: return "Housing"
@@ -68,8 +85,17 @@ func getTransTagTitle(transTag: String) -> String {
6885
case TRANS_TAG_SAVINGS: return "Savings"
6986
case TRANS_TAG_PERSONAL: return "Personal"
7087
case TRANS_TAG_ENTERTAINMENT: return "Entertainment"
71-
case TRANS_TAG_OTHERS: return "Others"
7288
case TRANS_TAG_UTILITIES: return "Utilities"
89+
90+
// Incomes
91+
case TRANS_TAG_SALARY: return "Salary"
92+
case TRANS_TAG_CASHBACK: return "Cashback"
93+
case TRANS_TAG_INVESTMENT_RETURNS: return "Investment Returns"
94+
case TRANS_TAG_SALE: return "Sale"
95+
96+
// Common
97+
case TRANS_TAG_OTHERS: return "Others"
98+
7399
default: return "Unknown"
74100
}
75101
}

Expenso/Screens/AddExpense/AddExpenseView.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ struct AddExpenseView: View {
2222
DropdownOption(key: TRANS_TYPE_EXPENSE, val: "Expense")
2323
]
2424

25-
let tagOptions = [
25+
let expenseTagOptions = [
2626
DropdownOption(key: TRANS_TAG_TRANSPORT, val: "Transport"),
2727
DropdownOption(key: TRANS_TAG_FOOD, val: "Food"),
2828
DropdownOption(key: TRANS_TAG_HOUSING, val: "Housing"),
@@ -35,6 +35,14 @@ struct AddExpenseView: View {
3535
DropdownOption(key: TRANS_TAG_UTILITIES, val: "Utilities")
3636
]
3737

38+
let incomeTagOptions = [
39+
DropdownOption(key: TRANS_TAG_SALARY, val: "Salary"),
40+
DropdownOption(key: TRANS_TAG_CASHBACK, val: "Cashback"),
41+
DropdownOption(key: TRANS_TAG_INVESTMENT_RETURNS, val: "Investment Returns"),
42+
DropdownOption(key: TRANS_TAG_OTHERS, val: "Others"),
43+
DropdownOption(key: TRANS_TAG_SALE, val: "Sale"),
44+
]
45+
3846
var body: some View {
3947
NavigationView {
4048
ZStack {
@@ -88,8 +96,10 @@ struct AddExpenseView: View {
8896
}
8997

9098
DropdownButton(shouldShowDropdown: $viewModel.showTagDrop, displayText: $viewModel.tagTitle,
91-
options: tagOptions, mainColor: Color.text_primary_color,
92-
backgroundColor: Color.secondary_color, cornerRadius: 4, buttonHeight: 50) { key in
99+
options: viewModel.selectedType == TRANS_TYPE_INCOME ? incomeTagOptions : expenseTagOptions,
100+
mainColor: Color.text_primary_color, backgroundColor: Color.secondary_color,
101+
cornerRadius: 4, buttonHeight: 50) { key in
102+
let tagOptions = viewModel.selectedType == TRANS_TYPE_INCOME ? incomeTagOptions : expenseTagOptions
93103
let selectedObj = tagOptions.filter({ $0.key == key }).first
94104
if let object = selectedObj {
95105
viewModel.tagTitle = object.val

Expenso/Screens/AddExpense/AddExpenseViewModel.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ class AddExpenseViewModel: ObservableObject {
1616
@Published var amount = ""
1717
@Published var occuredOn = Date()
1818
@Published var note = ""
19-
@Published var typeTitle = "Income"
20-
@Published var tagTitle = getTransTagTitle(transTag: TRANS_TAG_TRANSPORT)
19+
@Published var typeTitle = "Expense"
20+
@Published var tagTitle = getTransTagTitle(transTag: TRANS_TAG_OTHERS)
2121
@Published var showTypeDrop = false
2222
@Published var showTagDrop = false
2323

24-
@Published var selectedType = TRANS_TYPE_INCOME
25-
@Published var selectedTag = TRANS_TAG_TRANSPORT
24+
@Published var selectedType = TRANS_TYPE_EXPENSE
25+
@Published var selectedTag = TRANS_TAG_OTHERS
2626

2727
@Published var imageUpdated = false // When transaction edit, check if attachment is updated?
2828
@Published var imageAttached: UIImage? = nil
@@ -40,13 +40,13 @@ class AddExpenseViewModel: ObservableObject {
4040
self.typeTitle = expenseObj.type == TRANS_TYPE_INCOME ? "Income" : "Expense"
4141
} else {
4242
self.amount = ""
43-
self.typeTitle = "Income"
43+
self.typeTitle = "Expense"
4444
}
4545
self.occuredOn = expenseObj?.occuredOn ?? Date()
4646
self.note = expenseObj?.note ?? ""
47-
self.tagTitle = getTransTagTitle(transTag: expenseObj?.tag ?? TRANS_TAG_TRANSPORT)
48-
self.selectedType = expenseObj?.type ?? TRANS_TYPE_INCOME
49-
self.selectedTag = expenseObj?.tag ?? TRANS_TAG_TRANSPORT
47+
self.tagTitle = getTransTagTitle(transTag: expenseObj?.tag ?? TRANS_TAG_OTHERS)
48+
self.selectedType = expenseObj?.type ?? TRANS_TYPE_EXPENSE
49+
self.selectedTag = expenseObj?.tag ?? TRANS_TAG_OTHERS
5050
if let data = expenseObj?.imageAttached {
5151
self.imageAttached = UIImage(data: data)
5252
}

0 commit comments

Comments
 (0)