diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 3e0e6fad..bf906178 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -679,14 +679,10 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; @@ -744,14 +740,10 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; @@ -780,14 +772,10 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-WatchRunner Watch App/Pods-WatchRunner Watch App-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-WatchRunner Watch App/Pods-WatchRunner Watch App-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-WatchRunner Watch App/Pods-WatchRunner Watch App-frameworks.sh\"\n"; diff --git a/ios/WatchRunner Watch App/Views/ChatViews.swift b/ios/WatchRunner Watch App/Views/ChatViews.swift index 040a420c..fd04d826 100644 --- a/ios/WatchRunner Watch App/Views/ChatViews.swift +++ b/ios/WatchRunner Watch App/Views/ChatViews.swift @@ -260,6 +260,7 @@ struct ChatRoomView: View { @State private var isLoading = false @State private var error: Error? @State private var wsState: WebSocketState = .disconnected // New state for WebSocket status + @State private var hasLoadedMessages = false // Track if messages have been loaded @State private var cancellables = Set() // For managing subscriptions @@ -351,11 +352,17 @@ struct ChatRoomView: View { } private func loadMessages() async { + // Prevent reloading if already loaded + guard !hasLoadedMessages else { return } + guard let token = appState.token, let serverUrl = appState.serverUrl else { isLoading = false return } + isLoading = true + error = nil + do { let messages = try await appState.networkService.fetchChatMessages( chatRoomId: room.id, @@ -364,6 +371,7 @@ struct ChatRoomView: View { ) // Sort with newest messages first (for flipped list, newest will appear at bottom) self.messages = messages.sorted { $0.createdAt < $1.createdAt } + hasLoadedMessages = true } catch { print("[watchOS] Error loading messages: \(error.localizedDescription)") self.error = error @@ -487,12 +495,26 @@ struct ChatMessageItem: View { .foregroundColor(.secondary) } - if let content = message.content { + if let content = message.content, !content.isEmpty { Text(content) .font(.system(size: 14)) .lineLimit(nil) .fixedSize(horizontal: false, vertical: true) } + + if !message.attachments.isEmpty { + AttachmentView(attachment: message.attachments[0]) + if message.attachments.count > 1 { + HStack(spacing: 8) { + Image(systemName: "paperclip.circle.fill") + .frame(width: 12, height: 12) + .foregroundStyle(.gray) + Text("\(message.attachments.count - 1)+ attachments") + .font(.footnote) + .foregroundStyle(.gray) + } + } + } } } .padding(.vertical, 4)