Merge branch 'charlesmchen/pauseMediaAdapters'

pull/1/head
Matthew Chen 8 years ago
commit 0603ab72d0

@ -431,6 +431,8 @@
34B3F8A11E8EA6040035BE1A /* ViewControllerUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewControllerUtils.m; sourceTree = "<group>"; }; 34B3F8A11E8EA6040035BE1A /* ViewControllerUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewControllerUtils.m; sourceTree = "<group>"; };
34D5CC941EA6AFAD005515DB /* OWSContactsSyncing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSContactsSyncing.h; sourceTree = "<group>"; }; 34D5CC941EA6AFAD005515DB /* OWSContactsSyncing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSContactsSyncing.h; sourceTree = "<group>"; };
34D5CC951EA6AFAD005515DB /* OWSContactsSyncing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSContactsSyncing.m; sourceTree = "<group>"; }; 34D5CC951EA6AFAD005515DB /* OWSContactsSyncing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OWSContactsSyncing.m; sourceTree = "<group>"; };
34D5CC981EA6EB79005515DB /* OWSMessageCollectionViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSMessageCollectionViewCell.h; sourceTree = "<group>"; };
34D5CC9B1EA6ED17005515DB /* OWSMessageMediaAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OWSMessageMediaAdapter.h; sourceTree = "<group>"; };
34DFCB831E8E04B400053165 /* AddToBlockListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddToBlockListViewController.h; sourceTree = "<group>"; }; 34DFCB831E8E04B400053165 /* AddToBlockListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddToBlockListViewController.h; sourceTree = "<group>"; };
34DFCB841E8E04B500053165 /* AddToBlockListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddToBlockListViewController.m; sourceTree = "<group>"; }; 34DFCB841E8E04B500053165 /* AddToBlockListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddToBlockListViewController.m; sourceTree = "<group>"; };
34FD936E1E3BD43A00109093 /* OWSAnyTouchGestureRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWSAnyTouchGestureRecognizer.h; path = views/OWSAnyTouchGestureRecognizer.h; sourceTree = "<group>"; }; 34FD936E1E3BD43A00109093 /* OWSAnyTouchGestureRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OWSAnyTouchGestureRecognizer.h; path = views/OWSAnyTouchGestureRecognizer.h; sourceTree = "<group>"; };
@ -1257,6 +1259,7 @@
450873C51D9D867B006B54F2 /* OWSIncomingMessageCollectionViewCell.h */, 450873C51D9D867B006B54F2 /* OWSIncomingMessageCollectionViewCell.h */,
450873C61D9D867B006B54F2 /* OWSIncomingMessageCollectionViewCell.m */, 450873C61D9D867B006B54F2 /* OWSIncomingMessageCollectionViewCell.m */,
45F2B1951D9CA207000D2C69 /* OWSIncomingMessageCollectionViewCell.xib */, 45F2B1951D9CA207000D2C69 /* OWSIncomingMessageCollectionViewCell.xib */,
34D5CC981EA6EB79005515DB /* OWSMessageCollectionViewCell.h */,
45F2B1921D9C9F48000D2C69 /* OWSOutgoingMessageCollectionViewCell.h */, 45F2B1921D9C9F48000D2C69 /* OWSOutgoingMessageCollectionViewCell.h */,
45F2B1931D9C9F48000D2C69 /* OWSOutgoingMessageCollectionViewCell.m */, 45F2B1931D9C9F48000D2C69 /* OWSOutgoingMessageCollectionViewCell.m */,
45F2B1961D9CA207000D2C69 /* OWSOutgoingMessageCollectionViewCell.xib */, 45F2B1961D9CA207000D2C69 /* OWSOutgoingMessageCollectionViewCell.xib */,
@ -1296,6 +1299,7 @@
341BB7481DB727EE001E2975 /* JSQMediaItem+OWS.m */, 341BB7481DB727EE001E2975 /* JSQMediaItem+OWS.m */,
45666ECE1D995B94008FE134 /* OWSMessageData.h */, 45666ECE1D995B94008FE134 /* OWSMessageData.h */,
4526BD481CA61C8D00166BC8 /* OWSMessageEditing.h */, 4526BD481CA61C8D00166BC8 /* OWSMessageEditing.h */,
34D5CC9B1EA6ED17005515DB /* OWSMessageMediaAdapter.h */,
4CE0E3751B95453C007210CF /* TSAnimatedAdapter.h */, 4CE0E3751B95453C007210CF /* TSAnimatedAdapter.h */,
4CE0E3761B954546007210CF /* TSAnimatedAdapter.m */, 4CE0E3761B954546007210CF /* TSAnimatedAdapter.m */,
B6D3CBCE1C1376BE00C039DF /* TSContentAdapters.h */, B6D3CBCE1C1376BE00C039DF /* TSContentAdapters.h */,

@ -0,0 +1,15 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
NS_ASSUME_NONNULL_BEGIN
@protocol OWSMessageMediaAdapter
- (void)setCellVisible:(BOOL)isVisible;
- (void)clearCachedMediaViews;
@end
NS_ASSUME_NONNULL_END

@ -3,13 +3,14 @@
// //
#import "OWSMessageEditing.h" #import "OWSMessageEditing.h"
#import "OWSMessageMediaAdapter.h"
#import <JSQMessagesViewController/JSQPhotoMediaItem.h> #import <JSQMessagesViewController/JSQPhotoMediaItem.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class TSAttachmentStream; @class TSAttachmentStream;
@interface TSAnimatedAdapter : JSQMediaItem <OWSMessageEditing> @interface TSAnimatedAdapter : JSQMediaItem <OWSMessageEditing, OWSMessageMediaAdapter>
- (instancetype)initWithAttachment:(TSAttachmentStream *)attachment incoming:(BOOL)incoming; - (instancetype)initWithAttachment:(TSAttachmentStream *)attachment incoming:(BOOL)incoming;

@ -14,8 +14,9 @@
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@interface TSAnimatedAdapter () @interface TSAnimatedAdapter ()
//<FLAnimatedImageViewDebugDelegate>
@property (nonatomic, nullable) UIImageView *cachedImageView; @property (nonatomic, nullable) FLAnimatedImageView *cachedImageView;
@property (nonatomic) UIImage *image; @property (nonatomic) UIImage *image;
@property (nonatomic) TSAttachmentStream *attachment; @property (nonatomic) TSAttachmentStream *attachment;
@property (nonatomic, nullable) AttachmentUploadView *attachmentUploadView; @property (nonatomic, nullable) AttachmentUploadView *attachmentUploadView;
@ -43,22 +44,21 @@ NS_ASSUME_NONNULL_BEGIN
return self; return self;
} }
- (void)dealloc { - (void)clearAllViews
{
[_cachedImageView removeFromSuperview];
_cachedImageView = nil; _cachedImageView = nil;
_attachment = nil; _attachmentUploadView = nil;
_attachmentId = nil;
_image = nil;
_fileData = nil;
} }
- (void)clearCachedMediaViews { - (void)clearCachedMediaViews {
[super clearCachedMediaViews]; [super clearCachedMediaViews];
_cachedImageView = nil; [self clearAllViews];
} }
- (void)setAppliesMediaViewMaskAsOutgoing:(BOOL)appliesMediaViewMaskAsOutgoing { - (void)setAppliesMediaViewMaskAsOutgoing:(BOOL)appliesMediaViewMaskAsOutgoing {
[super setAppliesMediaViewMaskAsOutgoing:appliesMediaViewMaskAsOutgoing]; [super setAppliesMediaViewMaskAsOutgoing:appliesMediaViewMaskAsOutgoing];
_cachedImageView = nil; [self clearAllViews];
} }
#pragma mark - NSObject #pragma mark - NSObject
@ -68,6 +68,17 @@ NS_ASSUME_NONNULL_BEGIN
return super.hash ^ self.image.hash; return super.hash ^ self.image.hash;
} }
#pragma mark - OWSMessageMediaAdapter
- (void)setCellVisible:(BOOL)isVisible
{
if (isVisible) {
[self.cachedImageView startAnimating];
} else {
[self.cachedImageView stopAnimating];
}
}
#pragma mark - JSQMessageMediaData protocol #pragma mark - JSQMessageMediaData protocol
- (UIView *)mediaView { - (UIView *)mediaView {

@ -3,13 +3,14 @@
// //
#import "OWSMessageEditing.h" #import "OWSMessageEditing.h"
#import "OWSMessageMediaAdapter.h"
#import <JSQMessagesViewController/JSQMediaItem.h> #import <JSQMessagesViewController/JSQMediaItem.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class TSAttachmentStream; @class TSAttachmentStream;
@interface TSGenericAttachmentAdapter : JSQMediaItem <OWSMessageEditing> @interface TSGenericAttachmentAdapter : JSQMediaItem <OWSMessageEditing, OWSMessageMediaAdapter>
- (instancetype)initWithAttachment:(TSAttachmentStream *)attachment incoming:(BOOL)incoming; - (instancetype)initWithAttachment:(TSAttachmentStream *)attachment incoming:(BOOL)incoming;

@ -45,16 +45,23 @@ NS_ASSUME_NONNULL_BEGIN
return self.attachment.uniqueId; return self.attachment.uniqueId;
} }
- (void)clearAllViews
{
[_cachedMediaView removeFromSuperview];
_cachedMediaView = nil;
_attachmentUploadView = nil;
}
- (void)clearCachedMediaViews - (void)clearCachedMediaViews
{ {
[super clearCachedMediaViews]; [super clearCachedMediaViews];
_cachedMediaView = nil; [self clearAllViews];
} }
- (void)setAppliesMediaViewMaskAsOutgoing:(BOOL)appliesMediaViewMaskAsOutgoing - (void)setAppliesMediaViewMaskAsOutgoing:(BOOL)appliesMediaViewMaskAsOutgoing
{ {
[super setAppliesMediaViewMaskAsOutgoing:appliesMediaViewMaskAsOutgoing]; [super setAppliesMediaViewMaskAsOutgoing:appliesMediaViewMaskAsOutgoing];
_cachedMediaView = nil; [self clearAllViews];
} }
// TODO: Should we override hash or mediaHash? // TODO: Should we override hash or mediaHash?
@ -196,6 +203,13 @@ NS_ASSUME_NONNULL_BEGIN
} }
} }
#pragma mark - OWSMessageMediaAdapter
- (void)setCellVisible:(BOOL)isVisible
{
// Ignore.
}
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -3,13 +3,14 @@
// //
#import "OWSMessageEditing.h" #import "OWSMessageEditing.h"
#import "OWSMessageMediaAdapter.h"
#import <JSQMessagesViewController/JSQPhotoMediaItem.h> #import <JSQMessagesViewController/JSQPhotoMediaItem.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class TSAttachmentStream; @class TSAttachmentStream;
@interface TSPhotoAdapter : JSQPhotoMediaItem <OWSMessageEditing> @interface TSPhotoAdapter : JSQPhotoMediaItem <OWSMessageEditing, OWSMessageMediaAdapter>
- (instancetype)initWithAttachment:(TSAttachmentStream *)attachment incoming:(BOOL)incoming; - (instancetype)initWithAttachment:(TSAttachmentStream *)attachment incoming:(BOOL)incoming;

@ -39,14 +39,22 @@ NS_ASSUME_NONNULL_BEGIN
return self; return self;
} }
- (void)dealloc { - (void)clearAllViews
self.image = nil; {
[_cachedImageView removeFromSuperview];
_cachedImageView = nil; _cachedImageView = nil;
_attachmentUploadView = nil;
}
- (void)clearCachedMediaViews
{
[super clearCachedMediaViews];
[self clearAllViews];
} }
- (void)setAppliesMediaViewMaskAsOutgoing:(BOOL)appliesMediaViewMaskAsOutgoing { - (void)setAppliesMediaViewMaskAsOutgoing:(BOOL)appliesMediaViewMaskAsOutgoing {
[super setAppliesMediaViewMaskAsOutgoing:appliesMediaViewMaskAsOutgoing]; [super setAppliesMediaViewMaskAsOutgoing:appliesMediaViewMaskAsOutgoing];
_cachedImageView = nil; [self clearAllViews];
} }
#pragma mark - JSQMessageMediaData protocol #pragma mark - JSQMessageMediaData protocol
@ -130,6 +138,13 @@ NS_ASSUME_NONNULL_BEGIN
OWSAssert(NO); OWSAssert(NO);
} }
#pragma mark - OWSMessageMediaAdapter
- (void)setCellVisible:(BOOL)isVisible
{
// Ignore.
}
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -3,13 +3,14 @@
// //
#import "OWSMessageEditing.h" #import "OWSMessageEditing.h"
#import "OWSMessageMediaAdapter.h"
#import <JSQMessagesViewController/JSQVideoMediaItem.h> #import <JSQMessagesViewController/JSQVideoMediaItem.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@class TSAttachmentStream; @class TSAttachmentStream;
@interface TSVideoAttachmentAdapter : JSQVideoMediaItem <OWSMessageEditing> @interface TSVideoAttachmentAdapter : JSQVideoMediaItem <OWSMessageEditing, OWSMessageMediaAdapter>
@property NSString *attachmentId; @property NSString *attachmentId;
@property (nonatomic, strong) NSString *contentType; @property (nonatomic, strong) NSString *contentType;

@ -47,11 +47,29 @@ NS_ASSUME_NONNULL_BEGIN
return self; return self;
} }
- (void)clearAllViews
{
[_cachedImageView removeFromSuperview];
_cachedImageView = nil;
_attachmentUploadView = nil;
}
- (void)clearCachedMediaViews
{
[super clearCachedMediaViews];
[self clearAllViews];
}
- (void)setAppliesMediaViewMaskAsOutgoing:(BOOL)appliesMediaViewMaskAsOutgoing
{
[super setAppliesMediaViewMaskAsOutgoing:appliesMediaViewMaskAsOutgoing];
[self clearAllViews];
}
- (BOOL)isAudio { - (BOOL)isAudio {
return [MIMETypeUtil isSupportedAudioMIMEType:_contentType]; return [MIMETypeUtil isSupportedAudioMIMEType:_contentType];
} }
- (BOOL)isVideo { - (BOOL)isVideo {
return [MIMETypeUtil isSupportedVideoMIMEType:_contentType]; return [MIMETypeUtil isSupportedVideoMIMEType:_contentType];
} }
@ -212,11 +230,6 @@ NS_ASSUME_NONNULL_BEGIN
return [super hash]; return [super hash];
} }
- (void)setAppliesMediaViewMaskAsOutgoing:(BOOL)appliesMediaViewMaskAsOutgoing {
[super setAppliesMediaViewMaskAsOutgoing:appliesMediaViewMaskAsOutgoing];
_cachedImageView = nil;
}
#pragma mark - OWSMessageEditing Protocol #pragma mark - OWSMessageEditing Protocol
- (BOOL)canPerformEditingAction:(SEL)action - (BOOL)canPerformEditingAction:(SEL)action
@ -276,6 +289,13 @@ NS_ASSUME_NONNULL_BEGIN
} }
} }
#pragma mark - OWSMessageMediaAdapter
- (void)setCellVisible:(BOOL)isVisible
{
// Ignore.
}
@end @end
NS_ASSUME_NONNULL_END NS_ASSUME_NONNULL_END

@ -21,6 +21,7 @@
#import "OWSDisplayedMessageCollectionViewCell.h" #import "OWSDisplayedMessageCollectionViewCell.h"
#import "OWSExpirableMessageView.h" #import "OWSExpirableMessageView.h"
#import "OWSIncomingMessageCollectionViewCell.h" #import "OWSIncomingMessageCollectionViewCell.h"
#import "OWSMessageCollectionViewCell.h"
#import "OWSMessagesBubblesSizeCalculator.h" #import "OWSMessagesBubblesSizeCalculator.h"
#import "OWSOutgoingMessageCollectionViewCell.h" #import "OWSOutgoingMessageCollectionViewCell.h"
#import "OWSUnknownContactBlockOfferMessage.h" #import "OWSUnknownContactBlockOfferMessage.h"
@ -1204,6 +1205,15 @@ typedef enum : NSUInteger {
return YES; return YES;
} }
- (void)collectionView:(UICollectionView *)collectionView
willDisplayCell:(UICollectionViewCell *)cell
forItemAtIndexPath:(NSIndexPath *)indexPath
{
if ([cell conformsToProtocol:@protocol(OWSMessageCollectionViewCell)]) {
[((id<OWSMessageCollectionViewCell>)cell) setCellVisible:YES];
}
}
- (void)collectionView:(UICollectionView *)collectionView - (void)collectionView:(UICollectionView *)collectionView
didEndDisplayingCell:(nonnull UICollectionViewCell *)cell didEndDisplayingCell:(nonnull UICollectionViewCell *)cell
forItemAtIndexPath:(nonnull NSIndexPath *)indexPath forItemAtIndexPath:(nonnull NSIndexPath *)indexPath
@ -1212,6 +1222,10 @@ typedef enum : NSUInteger {
id<OWSExpirableMessageView> expirableView = (id<OWSExpirableMessageView>)cell; id<OWSExpirableMessageView> expirableView = (id<OWSExpirableMessageView>)cell;
[expirableView stopExpirationTimer]; [expirableView stopExpirationTimer];
} }
if ([cell conformsToProtocol:@protocol(OWSMessageCollectionViewCell)]) {
[((id<OWSMessageCollectionViewCell>)cell) setCellVisible:NO];
}
} }
#pragma mark - JSQMessages CollectionView DataSource #pragma mark - JSQMessages CollectionView DataSource
@ -1306,6 +1320,11 @@ typedef enum : NSUInteger {
DDLogError(@"%@ Unexpected cell type: %@", self.tag, cell); DDLogError(@"%@ Unexpected cell type: %@", self.tag, cell);
return cell; return cell;
} }
if ([message isMediaMessage] && [[message media] conformsToProtocol:@protocol(OWSMessageMediaAdapter)]) {
cell.mediaAdapter = (id<OWSMessageMediaAdapter>)[message media];
}
[cell ows_didLoad]; [cell ows_didLoad];
return cell; return cell;
} }
@ -1321,6 +1340,11 @@ typedef enum : NSUInteger {
DDLogError(@"%@ Unexpected cell type: %@", self.tag, cell); DDLogError(@"%@ Unexpected cell type: %@", self.tag, cell);
return cell; return cell;
} }
if ([message isMediaMessage] && [[message media] conformsToProtocol:@protocol(OWSMessageMediaAdapter)]) {
cell.mediaAdapter = (id<OWSMessageMediaAdapter>)[message media];
}
[cell ows_didLoad]; [cell ows_didLoad];
if (message.isMediaMessage) { if (message.isMediaMessage) {

@ -1,13 +1,21 @@
// Created by Michael Kirk on 9/29/16. //
// Copyright © 2016 Open Whisper Systems. All rights reserved. // Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "JSQMessagesCollectionViewCell+OWS.h" #import "JSQMessagesCollectionViewCell+OWS.h"
#import "OWSExpirableMessageView.h" #import "OWSExpirableMessageView.h"
#import "OWSMessageCollectionViewCell.h"
#import "OWSMessageMediaAdapter.h"
#import <JSQMessagesViewController/JSQMessagesCollectionViewCellIncoming.h> #import <JSQMessagesViewController/JSQMessagesCollectionViewCellIncoming.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@interface OWSIncomingMessageCollectionViewCell : JSQMessagesCollectionViewCellIncoming <OWSExpirableMessageView> @class JSQMediaItem;
@interface OWSIncomingMessageCollectionViewCell
: JSQMessagesCollectionViewCellIncoming <OWSExpirableMessageView, OWSMessageCollectionViewCell>
@property (nonatomic, nullable) id<OWSMessageMediaAdapter> mediaAdapter;
@end @end

@ -1,9 +1,11 @@
// Created by Michael Kirk on 9/29/16. //
// Copyright © 2016 Open Whisper Systems. All rights reserved. // Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "OWSIncomingMessageCollectionViewCell.h" #import "OWSIncomingMessageCollectionViewCell.h"
#import "OWSExpirationTimerView.h" #import "OWSExpirationTimerView.h"
#import "UIColor+OWS.h" #import "UIColor+OWS.h"
#import <JSQMessagesViewController/JSQMediaItem.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@ -26,6 +28,17 @@ NS_ASSUME_NONNULL_BEGIN
{ {
[super prepareForReuse]; [super prepareForReuse];
self.expirationTimerViewWidthConstraint.constant = 0.0f; self.expirationTimerViewWidthConstraint.constant = 0.0f;
[self.mediaAdapter setCellVisible:NO];
[self.mediaAdapter clearCachedMediaViews];
self.mediaAdapter = nil;
}
// pragma mark - OWSMessageCollectionViewCell
- (void)setCellVisible:(BOOL)isVisible
{
[self.mediaAdapter setCellVisible:isVisible];
} }
// pragma mark - OWSExpirableMessageView // pragma mark - OWSExpirableMessageView

@ -0,0 +1,13 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
NS_ASSUME_NONNULL_BEGIN
@protocol OWSMessageCollectionViewCell
- (void)setCellVisible:(BOOL)isVisible;
@end
NS_ASSUME_NONNULL_END

@ -1,13 +1,21 @@
// Created by Michael Kirk on 9/28/16. //
// Copyright © 2016 Open Whisper Systems. All rights reserved. // Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "JSQMessagesCollectionViewCell+OWS.h" #import "JSQMessagesCollectionViewCell+OWS.h"
#import "OWSExpirableMessageView.h" #import "OWSExpirableMessageView.h"
#import "OWSMessageCollectionViewCell.h"
#import "OWSMessageMediaAdapter.h"
#import <JSQMessagesViewController/JSQMessagesCollectionViewCellOutgoing.h> #import <JSQMessagesViewController/JSQMessagesCollectionViewCellOutgoing.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@interface OWSOutgoingMessageCollectionViewCell : JSQMessagesCollectionViewCellOutgoing <OWSExpirableMessageView> @class JSQMediaItem;
@interface OWSOutgoingMessageCollectionViewCell
: JSQMessagesCollectionViewCellOutgoing <OWSExpirableMessageView, OWSMessageCollectionViewCell>
@property (nonatomic, nullable) id<OWSMessageMediaAdapter> mediaAdapter;
@end @end

@ -1,8 +1,11 @@
// Created by Michael Kirk on 9/28/16. //
// Copyright © 2016 Open Whisper Systems. All rights reserved. // Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
#import "OWSOutgoingMessageCollectionViewCell.h" #import "OWSOutgoingMessageCollectionViewCell.h"
#import "FLAnimatedImageView.h"
#import "OWSExpirationTimerView.h" #import "OWSExpirationTimerView.h"
#import <JSQMessagesViewController/JSQMediaItem.h>
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN
@ -26,6 +29,17 @@ NS_ASSUME_NONNULL_BEGIN
[super prepareForReuse]; [super prepareForReuse];
self.mediaView.alpha = 1.0; self.mediaView.alpha = 1.0;
self.expirationTimerViewWidthConstraint.constant = 0.0f; self.expirationTimerViewWidthConstraint.constant = 0.0f;
[self.mediaAdapter setCellVisible:NO];
[self.mediaAdapter clearCachedMediaViews];
self.mediaAdapter = nil;
}
// pragma mark - OWSMessageCollectionViewCell
- (void)setCellVisible:(BOOL)isVisible
{
[self.mediaAdapter setCellVisible:isVisible];
} }
- (UIColor *)ows_textColor - (UIColor *)ows_textColor

Loading…
Cancel
Save