Commit 0aa6c32e authored by shigemi miura's avatar shigemi miura

チャット送信エラー時にダイアログを表示

parent c8ea3a7d
......@@ -10,7 +10,10 @@ import SwiftUI
struct ChatInputView: View {
@EnvironmentObject private var sceneDelegate: SceneDelegate
@ObservedObject var sessionUploadImage: SessionUploadImage = SessionUploadImage()
@ObservedObject var msg = SharingData.message
@State var inputText = ""
@State private var isChatAlert: Bool = false
@State private var isPhotAlert: Bool = false
@State private var selectionValue = 3
@State var isCamera: Bool = false
@State var isPhoto: Bool = false
......@@ -85,10 +88,7 @@ struct ChatInputView: View {
.padding(.leading, 20)
Button{
isKeyboard = false
let signalRService = SignalR()
signalRService.chatMessage(message: inputText)
inputText = ""
sendChatMessage(message: inputText)
} label: {
Image("send")
.resizable()
......@@ -128,8 +128,21 @@ struct ChatInputView: View {
}
}
.frame(maxHeight: 55)
.alert("Error", isPresented: $isChatAlert) {
Button("OK") {}
} message: {
Text("The message could not be sent.")
}
.alert("Error", isPresented: $isPhotAlert) {
Button("OK") {}
} message: {
Text("The Image could not be sent.")
}
}
/**
* イメージレスポンス
*/
func responseUploadImage(result: Result<Data, APIError>) {
print(debug: "calld")
switch result {
......@@ -139,9 +152,32 @@ struct ChatInputView: View {
case .failure(let errorCode):
print(debug: errorCode)
isPhotAlert = true
break
}
}
/**
* チャット送信
*/
func sendChatMessage(message: String) {
let signalRService = SignalR()
signalRService.chatMessage(message: inputText, completion: responseChatMessage)
}
/**
* チャットレスポンス
*/
func responseChatMessage(error: Error?) {
if let e = error {
print(debug: "Error:\(e)")
msg.messages.removeLast() //最後に追加したメッセージを削除
isChatAlert = true
} else {
isKeyboard = false
inputText = ""
}
}
}
#Preview {
......
......@@ -215,7 +215,7 @@ class AppDelegate: NSObject, UIApplicationDelegate ,MSNotificationHubDelegate, M
class SignalR: NSObject {
@ObservedObject var msg = SharingData.message
func chatMessage(message: String) {
func chatMessage(message: String, completion: @escaping (_ error: Error?) -> Void) {
var request = ReqMessage(shipId: Preferences.shipId, messageId: UUID().uuidString.lowercased())
request.type = 0 //0:テキスト, 1:スタンプ
request.time = DateTextLib.Date2ISO8601Text(Date())
......@@ -226,15 +226,12 @@ class SignalR: NSObject {
request.stampId = 0 //スタンプ番号 0:Fire~
if message != "" {
connection!.invoke(method: "chatMessage", request) { error in
if let e = error {
print(debug: "Error:\(e)")
}
connection!.invoke(method: "chatMessage", request, invocationDidComplete: completion)
let ownMsg = ChatMessage(shipId: request.shipId, messageId: request.messageId, type: request.type, time: request.time, location: request.location, from: request.from, message: request.message, stampId: request.stampId, viewer: [])
self.msg.messages.append(ownMsg)
}
}
}
func ackMessage(messageId: String) {
var request = ReqAckMessage(shipId: Preferences.shipId, messageId: messageId)
......
......@@ -106,12 +106,15 @@ class ServerSession{
do{
if error != nil{
// print(debug: "clientError: \(error)")
completion(.failure(.unknown))
throw APIError.clientError
}
guard let indata = data, let inresponse = response as? HTTPURLResponse else {
completion(.failure(.unknown))
throw APIError.responseError
}
if inresponse.statusCode != 200 {
completion(.failure(.unknown))
// let statusCode = inresponse.statusCode
// print(debug: "serverError: \(statusCode)")
throw APIError.serverError
......@@ -151,12 +154,16 @@ class ServerSession{
do{
if error != nil{
// print(debug: "clientError: \(error)")
completion(.failure(.unknown))
throw APIError.clientError
}
guard let indata = data, let inresponse = response as? HTTPURLResponse else {
completion(.failure(.unknown))
throw APIError.responseError
}
if inresponse.statusCode != 200 {
completion(.failure(.unknown))
// let statusCode = inresponse.statusCode
// print(debug: "serverError: \(statusCode)")
throw APIError.serverError
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment