Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d22ff1a

Browse files
committedJan 16, 2025·
Added&used variable from viewmodel
1 parent a5edbc5 commit d22ff1a

File tree

9 files changed

+57
-46
lines changed

9 files changed

+57
-46
lines changed
 

‎BaseStyle/BaseStyle/Views/AttachmentZoomView.swift

+1-4
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,12 @@ import Kingfisher
1212

1313
public struct AttachmentContainerView: View {
1414

15-
@Binding var showImageDisplayView: Bool
16-
1715
var image: UIImage?
1816
var imageUrl: String?
1917

2018
@Namespace private var animationNamespace
2119

22-
public init(showImageDisplayView: Binding<Bool>, image: UIImage? = nil, imageUrl: String? = nil) {
23-
self._showImageDisplayView = showImageDisplayView
20+
public init(image: UIImage? = nil, imageUrl: String? = nil) {
2421
self.image = image
2522
self.imageUrl = imageUrl
2623
}

‎Splito/UI/Home/Expense/AddExpenseView.swift

+21-18
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,11 @@ struct AddExpenseView: View {
3939
.scrollIndicators(.hidden)
4040
.scrollBounceBehavior(.basedOnSize)
4141

42-
AddNoteImageFooterView(date: $viewModel.expenseDate, showImagePickerOptions: $viewModel.showImagePickerOptions,
43-
image: viewModel.expenseImage, imageUrl: viewModel.expenseImageUrl,
44-
isNoteEmpty: viewModel.expenseNote.isEmpty, handleNoteBtnTap: viewModel.handleNoteBtnTap,
45-
handleImageTap: viewModel.handleExpenseImageTap,
42+
AddNoteImageFooterView(date: $viewModel.expenseDate, showImageDisplayView: $viewModel.showImageDisplayView,
43+
showImagePickerOptions: $viewModel.showImagePickerOptions, image: viewModel.expenseImage,
44+
imageUrl: viewModel.expenseImageUrl, isNoteEmpty: viewModel.expenseNote.isEmpty,
45+
handleNoteBtnTap: viewModel.handleNoteBtnTap, handleCameraTap: viewModel.handleCameraTap,
46+
handleAttachmentTap: viewModel.handleAttachmentTap,
4647
handleActionSelection: viewModel.handleActionSelection(_:))
4748
}
4849
}
@@ -210,14 +211,16 @@ private struct ExpenseDetailRow: View {
210211
struct AddNoteImageFooterView: View {
211212

212213
@Binding var date: Date
214+
@Binding var showImageDisplayView: Bool
213215
@Binding var showImagePickerOptions: Bool
214216

215217
let image: UIImage?
216218
let imageUrl: String?
217219
let isNoteEmpty: Bool
218220

219221
let handleNoteBtnTap: (() -> Void)
220-
let handleImageTap: (() -> Void)
222+
let handleCameraTap: (() -> Void)
223+
let handleAttachmentTap: (() -> Void)
221224
let handleActionSelection: ((ActionsOfSheet) -> Void)
222225

223226
var body: some View {
@@ -230,10 +233,11 @@ struct AddNoteImageFooterView: View {
230233

231234
DatePickerView(date: $date)
232235

233-
ImageAttachmentView(image: image, imageUrl: imageUrl, handleImageBtnTap: handleImageTap)
234-
.confirmationDialog("", isPresented: $showImagePickerOptions, titleVisibility: .hidden) {
235-
MediaPickerOptionsView(image: image, imageUrl: imageUrl, handleActionSelection: handleActionSelection)
236-
}
236+
ImageAttachmentView(showImageDisplayView: $showImageDisplayView, image: image, imageUrl: imageUrl,
237+
handleCameraTap: handleCameraTap, handleAttachmentTap: handleAttachmentTap)
238+
.confirmationDialog("", isPresented: $showImagePickerOptions, titleVisibility: .hidden) {
239+
MediaPickerOptionsView(image: image, imageUrl: imageUrl, handleActionSelection: handleActionSelection)
240+
}
237241

238242
NoteButtonView(isNoteEmpty: isNoteEmpty, handleNoteBtnTap: handleNoteBtnTap)
239243
}
@@ -244,22 +248,21 @@ struct AddNoteImageFooterView: View {
244248

245249
private struct ImageAttachmentView: View {
246250

251+
@Binding var showImageDisplayView: Bool
252+
247253
let image: UIImage?
248254
let imageUrl: String?
249-
250-
let handleImageBtnTap: (() -> Void)
251-
252-
@State private var showImageDisplayView = false
255+
256+
let handleCameraTap: (() -> Void)
257+
let handleAttachmentTap: (() -> Void)
253258

254259
var body: some View {
255260
HStack(spacing: 0) {
256261
if image != nil || (imageUrl != nil && !(imageUrl?.isEmpty ?? false)) {
257-
AttachmentContainerView(showImageDisplayView: $showImageDisplayView, image: image, imageUrl: imageUrl)
262+
AttachmentContainerView(image: image, imageUrl: imageUrl)
258263
.frame(width: 24, height: 24)
259264
.clipShape(RoundedRectangle(cornerRadius: 4))
260-
.onTapGestureForced {
261-
showImageDisplayView = true
262-
}
265+
.onTapGestureForced(perform: handleAttachmentTap)
263266
.padding(.leading, 8)
264267
.padding(.vertical, 4)
265268
}
@@ -270,7 +273,7 @@ private struct ImageAttachmentView: View {
270273
.frame(width: 24, height: 24)
271274
.padding(.horizontal, 8)
272275
.padding(.vertical, 4)
273-
.onTouchGesture(handleImageBtnTap)
276+
.onTouchGesture(handleCameraTap)
274277
}
275278
.background(container2Color)
276279
.cornerRadius(8)

‎Splito/UI/Home/Expense/AddExpenseViewModel.swift

+7-4
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class AddExpenseViewModel: BaseViewModel, ObservableObject {
3636
@Published var showAddNoteEditor = false
3737
@Published var showGroupSelection = false
3838
@Published var showPayerSelection = false
39+
@Published var showImageDisplayView = false
3940
@Published var showImagePickerOptions = false
4041
@Published var showSplitTypeSelection = false
4142
@Published private(set) var showLoader = false
@@ -186,7 +187,11 @@ extension AddExpenseViewModel {
186187
showGroupSelection = expenseId == nil
187188
}
188189

189-
func handleExpenseImageTap() {
190+
func handleAttachmentTap() {
191+
showImageDisplayView = true
192+
}
193+
194+
func handleCameraTap() {
190195
UIApplication.shared.endEditing()
191196
showImagePickerOptions = true
192197
}
@@ -421,9 +426,7 @@ extension AddExpenseViewModel {
421426
newExpense.splitTo = splitData.map { $0.key }
422427
newExpense.splitData = splitData
423428
newExpense.splitType = splitType
424-
425-
let participants = Array(Set(newExpense.splitTo + newExpense.paidBy.keys))
426-
newExpense.participants = participants
429+
newExpense.participants = Array(Set(newExpense.splitTo + newExpense.paidBy.keys))
427430

428431
return await updateExpense(group: group, expense: newExpense, oldExpense: expense)
429432
}

‎Splito/UI/Home/Expense/Expense Detail/ExpenseDetailsView.swift

+3-6
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ struct ExpenseDetailsView: View {
1414
@StateObject var viewModel: ExpenseDetailsViewModel
1515

1616
@FocusState var isFocused: Bool
17-
@State private var showImageDisplayView = false
1817

1918
var body: some View {
2019
VStack(alignment: .leading, spacing: 0) {
@@ -34,12 +33,10 @@ struct ExpenseDetailsView: View {
3433
VStack(spacing: 12) {
3534
SectionHeaderView(text: "Attachment")
3635

37-
AttachmentContainerView(showImageDisplayView: $showImageDisplayView, imageUrl: imageUrl)
36+
AttachmentContainerView(imageUrl: imageUrl)
3837
.frame(height: 140)
3938
.clipShape(RoundedRectangle(cornerRadius: 12))
40-
.onTapGestureForced {
41-
showImageDisplayView = true
42-
}
39+
.onTapGestureForced(perform: viewModel.handleAttachmentTap)
4340
.padding(.horizontal, 16)
4441
}
4542
.padding(.top, 8)
@@ -115,7 +112,7 @@ struct ExpenseDetailsView: View {
115112
}
116113
}
117114
}
118-
.navigationDestination(isPresented: $showImageDisplayView) {
115+
.navigationDestination(isPresented: $viewModel.showImageDisplayView) {
119116
if let imageUrl = viewModel.expense?.imageUrl, !imageUrl.isEmpty {
120117
AttachmentZoomView(imageUrl: imageUrl)
121118
}

‎Splito/UI/Home/Expense/Expense Detail/ExpenseDetailsViewModel.swift

+5
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class ExpenseDetailsViewModel: BaseViewModel, ObservableObject {
3232

3333
@Published var showLoader: Bool = false
3434
@Published var showAddNoteEditor = false
35+
@Published var showImageDisplayView = false
3536
@Published var showEditExpenseSheet = false
3637
@Published private(set) var hasMoreComments: Bool = true
3738

@@ -165,6 +166,10 @@ class ExpenseDetailsViewModel: BaseViewModel, ObservableObject {
165166
return expenseUsersData.first(where: { $0.id == id })
166167
}
167168

169+
func handleAttachmentTap() {
170+
showImageDisplayView = true
171+
}
172+
168173
func handleNoteTap() {
169174
guard let expense, expense.isActive, let userId = preference.user?.id,
170175
let group, group.members.contains(userId) else { return }

‎Splito/UI/Home/Groups/Group/Group Options/Settle up/Payment/GroupPaymentView.swift

+6-7
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,12 @@ struct GroupPaymentView: View {
7070
.scrollIndicators(.hidden)
7171
.scrollBounceBehavior(.basedOnSize)
7272

73-
AddNoteImageFooterView(date: $viewModel.paymentDate,
74-
showImagePickerOptions: $viewModel.showImagePickerOptions,
75-
image: viewModel.paymentImage, imageUrl: viewModel.paymentImageUrl,
76-
isNoteEmpty: (viewModel.paymentNote.isEmpty &&
77-
viewModel.paymentReason.isEmpty),
78-
handleNoteBtnTap: viewModel.handleNoteBtnTap,
79-
handleImageTap: viewModel.handlePaymentImageTap,
73+
AddNoteImageFooterView(date: $viewModel.paymentDate, showImageDisplayView: $viewModel.showImageDisplayView,
74+
showImagePickerOptions: $viewModel.showImagePickerOptions, image: viewModel.paymentImage,
75+
imageUrl: viewModel.paymentImageUrl,
76+
isNoteEmpty: (viewModel.paymentNote.isEmpty && viewModel.paymentReason.isEmpty),
77+
handleNoteBtnTap: viewModel.handleNoteBtnTap, handleCameraTap: viewModel.handleCameraTap,
78+
handleAttachmentTap: viewModel.handleAttachmentTap,
8079
handleActionSelection: viewModel.handleActionSelection(_:))
8180
}
8281
}

‎Splito/UI/Home/Groups/Group/Group Options/Settle up/Payment/GroupPaymentViewModel.swift

+6-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class GroupPaymentViewModel: BaseViewModel, ObservableObject {
2929

3030
@Published var showImagePicker = false
3131
@Published var showAddNoteEditor = false
32+
@Published var showImageDisplayView = false
3233
@Published var showImagePickerOptions = false
3334
@Published private(set) var showLoader: Bool = false
3435
@Published private(set) var sourceTypeIsCamera = false
@@ -154,8 +155,12 @@ class GroupPaymentViewModel: BaseViewModel, ObservableObject {
154155
self.paymentNote = note
155156
self.paymentReason = reason ?? ""
156157
}
158+
159+
func handleAttachmentTap() {
160+
showImageDisplayView = true
161+
}
157162

158-
func handlePaymentImageTap() {
163+
func handleCameraTap() {
159164
UIApplication.shared.endEditing()
160165
showImagePickerOptions = true
161166
}

‎Splito/UI/Home/Groups/Group/Group Options/Settlements/Transaction Detail/GroupTransactionDetailView.swift

+3-6
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ struct GroupTransactionDetailView: View {
1414
@StateObject var viewModel: GroupTransactionDetailViewModel
1515

1616
@FocusState var isFocused: Bool
17-
@State private var showImageDisplayView = false
1817

1918
var body: some View {
2019
GeometryReader { geometry in
@@ -42,12 +41,10 @@ struct GroupTransactionDetailView: View {
4241
VStack(spacing: 12) {
4342
SectionHeaderView(text: "Attachment")
4443

45-
AttachmentContainerView(showImageDisplayView: $showImageDisplayView, imageUrl: imageUrl)
44+
AttachmentContainerView(imageUrl: imageUrl)
4645
.frame(height: 140)
4746
.clipShape(RoundedRectangle(cornerRadius: 12))
48-
.onTapGestureForced {
49-
showImageDisplayView = true
50-
}
47+
.onTapGestureForced(perform: viewModel.handleAttachmentTap)
5148
.padding(.horizontal, 16)
5249
}
5350
.padding(.top, 24)
@@ -129,7 +126,7 @@ struct GroupTransactionDetailView: View {
129126
note: viewModel.paymentNote, paymentReason: viewModel.paymentReason))
130127
}
131128
}
132-
.navigationDestination(isPresented: $showImageDisplayView) {
129+
.navigationDestination(isPresented: $viewModel.showImageDisplayView) {
133130
if let imageUrl = viewModel.transaction?.imageUrl, !imageUrl.isEmpty {
134131
AttachmentZoomView(imageUrl: imageUrl)
135132
}

‎Splito/UI/Home/Groups/Group/Group Options/Settlements/Transaction Detail/GroupTransactionDetailViewModel.swift

+5
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class GroupTransactionDetailViewModel: BaseViewModel, ObservableObject {
3232

3333
@Published var showLoader: Bool = false
3434
@Published var showAddNoteEditor = false
35+
@Published var showImageDisplayView = false
3536
@Published var showEditTransactionSheet = false
3637
@Published private(set) var hasMoreComments: Bool = true
3738

@@ -170,6 +171,10 @@ class GroupTransactionDetailViewModel: BaseViewModel, ObservableObject {
170171
}
171172

172173
// MARK: - User Actions
174+
func handleAttachmentTap() {
175+
showImageDisplayView = true
176+
}
177+
173178
func handleNoteTap() {
174179
guard let transaction, transaction.isActive, let userId = preference.user?.id,
175180
let group, group.members.contains(userId) else { return }

0 commit comments

Comments
 (0)
Please sign in to comment.