|
import SwiftUI |
|
|
|
class Contact : Codable { |
|
var contactId: String |
|
var displayName: String |
|
var phoneNumbers: [String] |
|
|
|
init(contactId: String, displayName: String, phoneNumbers: [String]) { |
|
self.contactId = contactId |
|
self.displayName = displayName |
|
self.phoneNumbers = phoneNumbers |
|
} |
|
} |
|
|
|
struct ContactBubble: Shape { |
|
func path(in rect: CGRect) -> Path { |
|
let path = UIBezierPath(roundedRect: rect, |
|
byRoundingCorners: [.allCorners], |
|
cornerRadii: CGSize(width: 9, height: 9)) |
|
return Path(path.cgPath) |
|
} |
|
} |
|
|
|
struct ContactRow: View { |
|
let contact: Contact |
|
|
|
var body: some View { |
|
HStack { |
|
Text(contact.displayName) |
|
.italic() |
|
.font(.system(size: 15)) |
|
.foregroundColor(.white) |
|
.padding(5) |
|
Spacer() |
|
Image(systemName: "phone.fill") |
|
.resizable() |
|
.frame(width: 17, height: 17) |
|
.foregroundColor(.white) |
|
} |
|
.background(Color.clear) |
|
.clipShape(ContactBubble()) |
|
} |
|
} |
|
|
|
struct Contact_Previews: PreviewProvider { |
|
static var previews: some View { |
|
ContactRow(contact: Contact( |
|
contactId: "5", |
|
displayName: "Peter Luo", |
|
phoneNumbers: ["123-234-345"]) |
|
) |
|
} |
|
} |
|
|