ios_client
This commit is contained in:
62
ios_client 0.8.5/Kecalek/Views/Chat/PinnedMessagesView.swift
Normal file
62
ios_client 0.8.5/Kecalek/Views/Chat/PinnedMessagesView.swift
Normal file
@@ -0,0 +1,62 @@
|
||||
import SwiftUI
|
||||
|
||||
struct PinnedMessagesView: View {
|
||||
let messages: [Message]
|
||||
var onScrollTo: ((String) -> Void)?
|
||||
|
||||
@Environment(\.dismiss) private var dismiss
|
||||
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
Group {
|
||||
if messages.isEmpty {
|
||||
Text("No pinned messages")
|
||||
.foregroundStyle(.secondary)
|
||||
} else {
|
||||
List(messages) { message in
|
||||
Button {
|
||||
dismiss()
|
||||
onScrollTo?(message.id)
|
||||
} label: {
|
||||
VStack(alignment: .leading, spacing: 4) {
|
||||
HStack {
|
||||
Image(systemName: "pin.fill")
|
||||
.font(.caption)
|
||||
.foregroundStyle(.orange)
|
||||
Text(message.senderUsername)
|
||||
.font(.caption.bold())
|
||||
Spacer()
|
||||
Text(formatTime(message.createdAt))
|
||||
.font(.caption2)
|
||||
.foregroundStyle(.secondary)
|
||||
}
|
||||
Text(message.text ?? "")
|
||||
.font(.body)
|
||||
.lineLimit(3)
|
||||
}
|
||||
.padding(.vertical, 4)
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
}
|
||||
}
|
||||
}
|
||||
.navigationTitle("Pinned Messages")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
.toolbar {
|
||||
ToolbarItem(placement: .cancellationAction) {
|
||||
Button("Done") { dismiss() }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func formatTime(_ date: Date) -> String {
|
||||
let formatter = DateFormatter()
|
||||
if Calendar.current.isDateInToday(date) {
|
||||
formatter.dateFormat = "HH:mm"
|
||||
} else {
|
||||
formatter.dateFormat = "MMM d, HH:mm"
|
||||
}
|
||||
return formatter.string(from: date)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user