- Update all Kotlin API models to match Go API response structures - Fix Swift type aliases (TaskDetail→TaskResponse, Residence→ResidenceResponse, etc.) - Update TaskCompletionCreateRequest to simplified Go API format (taskId, notes, actualCost, photoUrl) - Fix optional handling for frequency, priority, category, status in task models - Replace isPrimaryOwner with ownerId comparison against current user - Update ResidenceUsersResponse to use owner.id instead of ownerId - Fix non-optional String fields to use isEmpty checks instead of optional binding - Add type aliases for backwards compatibility in Kotlin models 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
54 lines
1.7 KiB
Swift
54 lines
1.7 KiB
Swift
import SwiftUI
|
|
import ComposeApp
|
|
|
|
// MARK: - Share Code Card
|
|
struct ShareCodeCard: View {
|
|
let shareCode: ShareCodeResponse?
|
|
let residenceName: String
|
|
let isGeneratingCode: Bool
|
|
let onGenerateCode: () -> Void
|
|
|
|
var body: some View {
|
|
VStack(alignment: .leading, spacing: 12) {
|
|
HStack {
|
|
VStack(alignment: .leading, spacing: 4) {
|
|
Text("Share Code")
|
|
.font(.subheadline)
|
|
.foregroundColor(Color.appTextSecondary)
|
|
|
|
if let shareCode = shareCode {
|
|
Text(shareCode.code)
|
|
.font(.title)
|
|
.fontWeight(.bold)
|
|
.foregroundColor(Color.appPrimary)
|
|
} else {
|
|
Text("No active code")
|
|
.font(.body)
|
|
.foregroundColor(Color.appTextSecondary)
|
|
}
|
|
}
|
|
|
|
Spacer()
|
|
|
|
Button(action: onGenerateCode) {
|
|
HStack {
|
|
Image(systemName: "square.and.arrow.up")
|
|
Text(shareCode != nil ? "New Code" : "Generate")
|
|
}
|
|
}
|
|
.buttonStyle(.borderedProminent)
|
|
.disabled(isGeneratingCode)
|
|
}
|
|
|
|
if shareCode != nil {
|
|
Text("Share this code with others to give them access to \(residenceName)")
|
|
.font(.caption)
|
|
.foregroundColor(Color.appTextSecondary)
|
|
}
|
|
}
|
|
.padding()
|
|
.background(Color.appPrimary.opacity(0.1))
|
|
.cornerRadius(12)
|
|
}
|
|
}
|