ios_client

This commit is contained in:
Filip
2026-03-14 12:43:56 +01:00
parent 5fd80e6dd6
commit 214da18779
74 changed files with 13136 additions and 284 deletions

View File

@@ -0,0 +1,77 @@
import SwiftUI
struct ForwardPickerView: View {
let message: Message
let appState: AppState
@Environment(\.dismiss) private var dismiss
@State private var conversations: [Conversation] = []
@State private var isLoading = true
@State private var isSending = false
var body: some View {
NavigationStack {
Group {
if isLoading {
ProgressView("Loading conversations...")
} else if conversations.isEmpty {
Text("No conversations available")
.foregroundStyle(.secondary)
} else {
List(conversations) { conv in
Button {
forwardTo(conv)
} label: {
HStack {
CircularAvatarView(
name: conv.displayName(currentUserId: appState.currentUser?.id ?? ""),
size: 36,
isGroup: conv.isGroup
)
Text(conv.displayName(currentUserId: appState.currentUser?.id ?? ""))
Spacer()
}
}
.disabled(isSending)
}
}
}
.navigationTitle("Forward to...")
.navigationBarTitleDisplayMode(.inline)
.toolbar {
ToolbarItem(placement: .cancellationAction) {
Button("Cancel") { dismiss() }
}
}
}
.task {
conversations = await appState.chatClient.listConversations()
isLoading = false
}
}
private func forwardTo(_ conv: Conversation) {
isSending = true
Task {
let forwardPayload: [String: Any] = [
"forwarded_from": [
"sender": message.senderUsername,
"conversation_id": message.conversationId,
"message_id": message.id,
] as [String: Any]
]
let (success, _, _) = await appState.chatClient.sendMessage(
convId: conv.id,
text: message.text ?? "",
members: conv.members,
extraPayload: forwardPayload
)
await MainActor.run {
isSending = false
if success {
dismiss()
}
}
}
}
}