@@ -53,7 +53,7 @@ open class SBUChannelViewController: UIViewController, UITableViewDelegate, UITa
53
53
} ( )
54
54
55
55
private lazy var _messageInputView : SBUMessageInputView = {
56
- return SBUMessageInputView . loadViewFromNib ( ) as! SBUMessageInputView
56
+ return SBUMessageInputView . loadViewFromNibForSB ( ) as! SBUMessageInputView
57
57
} ( )
58
58
59
59
private lazy var _newMessageInfoView : SBUNewMessageInfo = {
@@ -76,7 +76,7 @@ open class SBUChannelViewController: UIViewController, UITableViewDelegate, UITa
76
76
// for Logic
77
77
78
78
/// One of two must be set.
79
- private var channel : SBDGroupChannel ?
79
+ public private( set ) var channel : SBDGroupChannel ?
80
80
private var channelUrl : String ?
81
81
82
82
@SBUAtomic var fullMessageList : [ SBDBaseMessage ] = [ ]
@@ -436,14 +436,16 @@ open class SBUChannelViewController: UIViewController, UITableViewDelegate, UITa
436
436
}
437
437
}
438
438
439
- private func sendUserMessage( text: String ) {
439
+ public func sendUserMessage( text: String ) {
440
440
let text = text. trimmingCharacters ( in: . whitespacesAndNewlines)
441
- var preSendMessage : SBDUserMessage ?
442
441
guard let messageParam = SBDUserMessageParams ( message: text) else { return }
443
-
442
+ self . sendUserMessage ( messageParams: messageParam)
443
+ }
444
+
445
+ public func sendUserMessage( messageParams: SBDUserMessageParams ) {
444
446
SBULog . info ( " [Request] Send user message " )
445
447
446
- preSendMessage = self . channel? . sendUserMessage ( with: messageParam ) { [ weak self] userMessage, error in
448
+ let preSendMessage = self . channel? . sendUserMessage ( with: messageParams ) { [ weak self] userMessage, error in
447
449
guard let self = self else { return }
448
450
if let error = error {
449
451
guard let requestId = userMessage? . requestId else { return }
@@ -454,12 +456,12 @@ open class SBUChannelViewController: UIViewController, UITableViewDelegate, UITa
454
456
SBULog . error ( " [Failed] Send user message request: \( error. localizedDescription) " )
455
457
return
456
458
}
457
-
459
+
458
460
guard let message = userMessage else { return }
459
461
guard let requestId = userMessage? . requestId else { return }
460
462
461
463
SBULog . info ( " [Succeed] Send user message: \( message. description) " )
462
-
464
+
463
465
self . preSendMessages. removeValue ( forKey: requestId)
464
466
self . resendableMessages. removeValue ( forKey: requestId)
465
467
self . upsertMessages ( messages: [ message] , needReload: true )
@@ -476,27 +478,31 @@ open class SBUChannelViewController: UIViewController, UITableViewDelegate, UITa
476
478
self . scrollToBottom ( )
477
479
}
478
480
479
- private func sendFileMessage( fileData: Data , fileName: String , mimeType: String ) {
481
+ public func sendFileMessage( fileData: Data , fileName: String , mimeType: String ) {
482
+ let messageParams = SBDFileMessageParams ( file: fileData) !
483
+ messageParams. fileName = fileName
484
+ messageParams. mimeType = mimeType
485
+ messageParams. fileSize = UInt ( fileData. count)
486
+
487
+ self . sendFileMessage ( messageParams: messageParams)
488
+ }
489
+
490
+ public func sendFileMessage( messageParams: SBDFileMessageParams ) {
480
491
/*********************************
481
492
Thumbnail is a premium feature.
482
493
***********************************/
483
494
484
- var preSendMessage : SBDFileMessage ?
485
-
486
- let fileMessageParams = SBDFileMessageParams ( file: fileData) !
487
- fileMessageParams. fileName = fileName
488
- fileMessageParams. mimeType = mimeType
489
- fileMessageParams. fileSize = UInt ( fileData. count)
490
495
guard let channel = self . channel else { return }
491
496
492
497
SBULog . info ( " [Request] Send file message " )
493
- preSendMessage = channel. sendFileMessage ( with: fileMessageParams,
498
+ var preSendMessage : SBDFileMessage ?
499
+ preSendMessage = channel. sendFileMessage ( with: messageParams,
494
500
progressHandler: {
495
501
// [weak self]
496
502
bytesSent, totalBytesSent, totalBytesExpectedToSend in
497
503
498
504
//// If need reload cell for progress, call reload action in here.
499
- guard let requestId = preSendMessage? . requestId else { return }
505
+ guard let requestId = preSendMessage? . requestId else { return }
500
506
let fileTransferProgress = CGFloat ( totalBytesSent) / CGFloat( totalBytesExpectedToSend)
501
507
SBULog . info ( " File message transfer progress: \( requestId) - \( fileTransferProgress) " )
502
508
@@ -516,7 +522,9 @@ open class SBUChannelViewController: UIViewController, UITableViewDelegate, UITa
516
522
if let error = error {
517
523
guard let requestId = fileMessage? . requestId else { return }
518
524
self ? . resendableMessages [ requestId] = fileMessage
519
- self ? . resendableFileData [ requestId] = [ " data " : fileData, " type " : mimeType, " filename " : fileName] as [ String : AnyObject ]
525
+ if let fileData = messageParams. file, let mimeType = messageParams. mimeType, let fileName = messageParams. fileName {
526
+ self ? . resendableFileData [ requestId] = [ " data " : fileData, " type " : mimeType, " filename " : fileName] as [ String : AnyObject ]
527
+ }
520
528
self ? . preSendMessages. removeValue ( forKey: requestId)
521
529
self ? . preSendFileData. removeValue ( forKey: requestId)
522
530
self ? . sortAllMessageList ( needReload: true )
@@ -544,7 +552,9 @@ open class SBUChannelViewController: UIViewController, UITableViewDelegate, UITa
544
552
guard let unwrappedPreSendMessage = preSendMessage, let requestId = unwrappedPreSendMessage. requestId else { return }
545
553
SBULog . info ( " Presend file message: \( unwrappedPreSendMessage. description) " )
546
554
self . preSendMessages [ requestId] = unwrappedPreSendMessage
547
- self . preSendFileData [ requestId] = [ " data " : fileData, " type " : mimeType, " filename " : fileName] as [ String : AnyObject ]
555
+ if let fileData = messageParams. file, let mimeType = messageParams. mimeType, let fileName = messageParams. fileName {
556
+ self . preSendFileData [ requestId] = [ " data " : fileData, " type " : mimeType, " filename " : fileName] as [ String : AnyObject ]
557
+ }
548
558
self . fileTransferProgress [ requestId] = 0
549
559
self . sortAllMessageList ( needReload: true )
550
560
}
0 commit comments