Skip to content

Commit

Permalink
Update odometer reading in Firebase
Browse files Browse the repository at this point in the history
  • Loading branch information
mikaelacaron committed Nov 25, 2023
1 parent 3a99a3f commit 9b0385c
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class OdometerViewModel {
var isShowingAddOdometerReading = false
var errorMessage: String = ""

var showEditErrorAlert = false
var selectedReading: OdometerReading?
var isShowingEditReadingView = false

Expand Down Expand Up @@ -83,7 +84,24 @@ class OdometerViewModel {

func updateOdometerReading(_ reading: OdometerReading) {

isShowingEditReadingView = false
if let userUID = userUID {
guard let id = reading.id else { return }

var readingToUpdate = reading
readingToUpdate.userID = userUID

do {
try Firestore.firestore()
.collection(FirestorePath.odometerReadings(vehicleID: readingToUpdate.vehicleID).path)
.document(id)
.setData(from: readingToUpdate)

isShowingEditReadingView = false
} catch {
errorMessage = error.localizedDescription
showEditErrorAlert = true
}
}
}

func getVehicles() async {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ struct EditOdometerReadingView: View {
let updateTapped: (OdometerReading) -> Void

@State private var date = Date()
@State private var selectedVehicleID: String?
@State private var isMetric = false
@State private var distance = 0

Expand Down Expand Up @@ -69,13 +68,12 @@ struct EditOdometerReadingView: View {

ToolbarItem {
Button {
if let selectedVehicleID {
let reading = OdometerReading(date: date,
distance: distance,
isMetric: isMetric,
vehicleID: selectedVehicleID)
updateTapped(reading)
}
let reading = OdometerReading(id: selectedReading.id,
date: date,
distance: distance,
isMetric: isMetric,
vehicleID: selectedReading.vehicleID)
updateTapped(reading)
} label: {
Text("Update",
comment: "Label for submit button on form to add an entry")
Expand All @@ -89,7 +87,6 @@ struct EditOdometerReadingView: View {

func setEditReadingValues(_ reading: OdometerReading) {
self.date = reading.date
self.selectedVehicleID = reading.vehicleID
self.isMetric = reading.isMetric
self.distance = reading.distance
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,14 @@ struct OdometerView: View {
}
.sheet(isPresented: $viewModel.isShowingEditReadingView) {
if let selectedReading = viewModel.selectedReading {
EditOdometerReadingView(selectedReading: selectedReading,
vehicles: viewModel.vehicles) { updatedReading in
EditOdometerReadingView(selectedReading: selectedReading, vehicles: viewModel.vehicles) { updatedReading in
viewModel.updateOdometerReading(updatedReading)
}
.alert("An Error Occurred", isPresented: $viewModel.showEditErrorAlert) {
Button("OK", role: .cancel) { }
} message: {
Text(viewModel.errorMessage)
}
}
}

Expand Down

0 comments on commit 9b0385c

Please sign in to comment.