Skip to content
This repository was archived by the owner on Feb 8, 2023. It is now read-only.

Commit 700fb62

Browse files
author
HarriesChen
committed
add option to showsBorder
1 parent 13fecb5 commit 700fb62

File tree

5 files changed

+33
-8
lines changed

5 files changed

+33
-8
lines changed

MessageKit/BaseMessageModel.swift

+8-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public protocol MessageModelProtocol: MessageItemProtocol {
2020

2121
var senderId: String { get }
2222
var isIncoming: Bool { get }
23+
var showsBorder: Bool { get }
2324
var date: NSDate { get }
2425
var status: MessageStatus { get set }
2526
var avatarClosure: AvatarClosure? { get }
@@ -46,6 +47,10 @@ public extension DecoratedMessageModelProtocol {
4647
return self.messageModel.isIncoming
4748
}
4849

50+
var showsBorder: Bool {
51+
return self.messageModel.showsBorder
52+
}
53+
4954
var date: NSDate {
5055
return self.messageModel.date
5156
}
@@ -68,16 +73,18 @@ public class MessageModel: MessageModelProtocol {
6873
public var uid: String
6974
public var senderId: String
7075
public var type: String
76+
public var showsBorder: Bool
7177
public var isIncoming: Bool
7278
public var date: NSDate
7379
public var status: MessageStatus
7480
public var avatarClosure: AvatarClosure?
7581

76-
public init(uid: String, senderId: String, type: String, isIncoming: Bool, date: NSDate, status: MessageStatus, avatarClosure: AvatarClosure) {
82+
public init(uid: String, senderId: String, type: String, isIncoming: Bool, showsBorder: Bool, date: NSDate, status: MessageStatus, avatarClosure: AvatarClosure) {
7783
self.uid = uid
7884
self.senderId = senderId
7985
self.type = type
8086
self.isIncoming = isIncoming
87+
self.showsBorder = showsBorder
8188
self.date = date
8289
self.status = status
8390
self.avatarClosure = avatarClosure

MessageKit/BaseMessageViewModel.swift

+10
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public protocol MessageViewModelProtocol: class {
3131
var isIncoming: Bool { get }
3232
var showsTail: Bool { get set }
3333
var showsFailedIcon: Bool { get }
34+
var showsBorder: Bool { get }
3435
var date: String { get }
3536
var status: MessageViewModelStatus { get }
3637
var messageModel: MessageModelProtocol { get }
@@ -53,6 +54,11 @@ extension DecoratedMessageViewModelProtocol {
5354
self.messageViewModel.showsTail = newValue
5455
}
5556
}
57+
58+
public var showsBorder: Bool {
59+
return self.messageViewModel.showsBorder
60+
}
61+
5662
public var date: String {
5763
return self.messageViewModel.date
5864
}
@@ -105,6 +111,10 @@ public class MessageViewModel: MessageViewModelProtocol {
105111
public var avatarClosure: AvatarClosure? {
106112
return self.messageModel.avatarClosure
107113
}
114+
115+
public var showsBorder: Bool {
116+
return self.messageModel.showsBorder
117+
}
108118
}
109119

110120
public class MessageViewModelDefaultBuilder {

MessageKit/FileBubbleView.swift

+7-3
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,13 @@ public final class FileBubbleView: UIView, MaximumLayoutWidthSpecificable, Backg
115115
return
116116
}
117117
let bubbleImage = self.fileMessageStyle.bubbleImage(viewModel: viewModel, isSelected: self.selected)
118-
let borderImage = self.fileMessageStyle.bubbleImageBorder(viewModel: viewModel, isSelected: self.selected)
119-
if self.bubbleImageView.image != bubbleImage { self.bubbleImageView.image = bubbleImage }
120-
if self.borderImageView.image != borderImage { self.borderImageView.image = borderImage }
118+
if self.bubbleImageView.image != bubbleImage { self.bubbleImageView.image = bubbleImage }
119+
120+
if viewModel.showsBorder {
121+
let borderImage = self.fileMessageStyle.bubbleImageBorder(viewModel: viewModel, isSelected: self.selected)
122+
if self.borderImageView.image != borderImage { self.borderImageView.image = borderImage }
123+
}
124+
121125
self.coverImageView.image = self.fileMessageStyle.folderImage(viewModel: viewModel, isSelected: self.selected)
122126
self.titleLabel.text = viewModel.fileName
123127
self.titleLabel.font = fileMessageStyle.titleFont(viewModel: viewModel, isSelected: self.selected)

MessageKit/TextBubbleView.swift

+6-2
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,11 @@ public final class TextBubbleView: UIView, MaximumLayoutWidthSpecificable, Backg
118118
let font = style.textFont(viewModel: viewModel, isSelected: self.selected)
119119
let textColor = style.textColor(viewModel: viewModel, isSelected: self.selected)
120120
let bubbleImage = self.style.bubbleImage(viewModel: self.textMessageViewModel, isSelected: self.selected)
121-
let borderImage = self.style.bubbleImageBorder(viewModel: self.textMessageViewModel, isSelected: self.selected)
121+
if viewModel.showsBorder {
122+
let borderImage = self.style.bubbleImageBorder(viewModel: self.textMessageViewModel, isSelected: self.selected)
123+
if self.borderImageView.image != borderImage { self.borderImageView.image = borderImage }
124+
}
125+
122126

123127
if self.textView.font != font { self.textView.font = font}
124128
if self.textView.text != viewModel.text {self.textView.text = viewModel.text}
@@ -130,7 +134,7 @@ public final class TextBubbleView: UIView, MaximumLayoutWidthSpecificable, Backg
130134
]
131135
}
132136
if self.bubbleImageView.image != bubbleImage { self.bubbleImageView.image = bubbleImage}
133-
if self.borderImageView.image != borderImage { self.borderImageView.image = borderImage }
137+
134138
}
135139

136140
private func bubbleImage() -> UIImage {

MessageKitDemo/MessageKitDemo/ViewController.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ class ViewController: MessageViewController {
166166
status = .Failed
167167
}
168168

169-
let baseMessageModel = MessageModel(uid: m.uid, senderId: m.senderId, type: m.type.rawValue, isIncoming: m.isIncoming, date: NSDate(), status: status, avatarClosure: { imageView in
169+
let baseMessageModel = MessageModel(uid: m.uid, senderId: m.senderId, type: m.type.rawValue, isIncoming: m.isIncoming, showsBorder: false, date: NSDate(), status: status, avatarClosure: { imageView in
170170
imageView.kf_setImageWithURL(NSURL(string: "https://striker.teambition.net/thumbnail/110771552384086e16cb0e32133ba589cf98/w/200/h/200")!, placeholderImage: nil)
171171
})
172172

@@ -233,7 +233,7 @@ class ViewController: MessageViewController {
233233

234234
let dataSource = FakeDataSource()
235235
var items = self.messageDataSource?.messageItems
236-
let messageModel = MessageModel(uid: "dsfsdf\(Int(arc4random() % 300))", senderId: "dsfsdf", type: "text-message", isIncoming: true, date: NSDate(), status: .Success, avatarClosure: { imageView in
236+
let messageModel = MessageModel(uid: "dsfsdf\(Int(arc4random() % 300))", senderId: "dsfsdf", type: "text-message", isIncoming: true, showsBorder: false, date: NSDate(), status: .Success, avatarClosure: { imageView in
237237

238238
})
239239
let textMessageModel = TextMessageModel(messageModel: messageModel, text: "dsfsdfsdfsdfsdf\(a[randomNumber])")

0 commit comments

Comments
 (0)