Memoize bubble factory

Shaves 5% off of initial conversation load.

// FREEBIE
pull/1/head
Michael Kirk 8 years ago
parent fd829ba575
commit 9ac3ce3758

@ -9,33 +9,35 @@ import SignalServiceKit
@objc @objc
class OWSMessagesBubbleImageFactory: NSObject { class OWSMessagesBubbleImageFactory: NSObject {
static let shared = OWSMessagesBubbleImageFactory()
private let jsqFactory = JSQMessagesBubbleImageFactory()! private let jsqFactory = JSQMessagesBubbleImageFactory()!
// TODO: UIView is a little bit expensive to instantiate. // TODO: UIView is a little bit expensive to instantiate.
// Can we cache this value? // Can we cache this value?
private var isRTL: Bool { private lazy var isRTL: Bool = {
return UIView().isRTL() return UIView().isRTL()
} }()
public var incoming: JSQMessagesBubbleImage { public lazy var incoming: JSQMessagesBubbleImage = {
let color = UIColor.jsq_messageBubbleLightGray()! let color = UIColor.jsq_messageBubbleLightGray()!
return incoming(color: color) return self.incoming(color: color)
} }()
public var outgoing: JSQMessagesBubbleImage { public lazy var outgoing: JSQMessagesBubbleImage = {
let color = UIColor.ows_materialBlue() let color = UIColor.ows_materialBlue()
return outgoing(color: color) return self.outgoing(color: color)
} }()
public var currentlyOutgoing: JSQMessagesBubbleImage { public lazy var currentlyOutgoing: JSQMessagesBubbleImage = {
let color = UIColor.ows_fadedBlue() let color = UIColor.ows_fadedBlue()
return outgoing(color: color) return self.outgoing(color: color)
} }()
public var outgoingFailed: JSQMessagesBubbleImage { public lazy var outgoingFailed: JSQMessagesBubbleImage = {
let color = UIColor.gray let color = UIColor.gray
return outgoing(color: color) return self.outgoing(color: color)
} }()
public func bubble(message: TSMessage) -> JSQMessagesBubbleImage { public func bubble(message: TSMessage) -> JSQMessagesBubbleImage {
if message is TSIncomingMessage { if message is TSIncomingMessage {

@ -1048,12 +1048,7 @@ NS_ASSUME_NONNULL_BEGIN
- (OWSMessagesBubbleImageFactory *)bubbleFactory - (OWSMessagesBubbleImageFactory *)bubbleFactory
{ {
static OWSMessagesBubbleImageFactory *instance = nil; return [OWSMessagesBubbleImageFactory shared];
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [OWSMessagesBubbleImageFactory new];
});
return instance;
} }
- (void)prepareForReuse - (void)prepareForReuse

Loading…
Cancel
Save