Add PDF maintenance report generation feature for Android and iOS
- Add generateTasksReport API endpoint in ResidenceApi - Implement report generation button in Android residence detail screen - Add report generation state management in shared ResidenceViewModel - Add report generation button to iOS residence detail view toolbar - Implement iOS-specific report generation logic in ResidenceViewModel - Display loading spinner and success/error alerts for report generation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,7 @@ struct ResidenceDetailView: View {
|
||||
@State private var selectedTaskForEdit: TaskDetail?
|
||||
@State private var selectedTaskForComplete: TaskDetail?
|
||||
@State private var hasAppeared = false
|
||||
@State private var showReportAlert = false
|
||||
|
||||
var body: some View {
|
||||
ZStack {
|
||||
@@ -105,6 +106,20 @@ struct ResidenceDetailView: View {
|
||||
}
|
||||
|
||||
ToolbarItemGroup(placement: .navigationBarTrailing) {
|
||||
// Generate Report button
|
||||
if viewModel.selectedResidence != nil {
|
||||
Button(action: {
|
||||
viewModel.generateTasksReport(residenceId: residenceId)
|
||||
}) {
|
||||
if viewModel.isGeneratingReport {
|
||||
ProgressView()
|
||||
} else {
|
||||
Image(systemName: "doc.text")
|
||||
}
|
||||
}
|
||||
.disabled(viewModel.isGeneratingReport)
|
||||
}
|
||||
|
||||
// Manage Users button - only show for primary owners
|
||||
if let residence = viewModel.selectedResidence, residence.isPrimaryOwner {
|
||||
Button(action: {
|
||||
@@ -164,6 +179,16 @@ struct ResidenceDetailView: View {
|
||||
loadResidenceTasks()
|
||||
}
|
||||
}
|
||||
.onChange(of: viewModel.reportMessage) { message in
|
||||
if message != nil {
|
||||
showReportAlert = true
|
||||
}
|
||||
}
|
||||
.alert("Maintenance Report", isPresented: $showReportAlert) {
|
||||
Button("OK", role: .cancel) { }
|
||||
} message: {
|
||||
Text(viewModel.reportMessage ?? "")
|
||||
}
|
||||
.onAppear {
|
||||
loadResidenceData()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user