Commit 9545cf30 authored by Kevin Reynaldo's avatar Kevin Reynaldo
Browse files

Merge branch 'release/2.14.2'

parents 04a0484c f27a6333
......@@ -3,7 +3,7 @@ Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.name = "TapTalk"
s.version = "2.14.1"
s.version = "2.14.2"
s.summary = "TapTalk.io is a complete in-app chat SDK and messaging API. TapTalk.io provides UI-based and code-based implementation & fully customizable."
s.homepage = "https://taptalk.io"
......
......@@ -97,7 +97,7 @@
self.textView.textContainerInset = UIEdgeInsetsZero;
_placeholderLabel = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMinX(self.textView.frame), CGRectGetMinY(self.textView.frame), CGRectGetWidth(self.textView.frame), CGRectGetHeight(self.textView.frame))];
_placeholderLabel = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMinX(self.textView.frame) + self.textView.textContainerInset.left, CGRectGetMinY(self.textView.frame), CGRectGetWidth(self.textView.frame), CGRectGetHeight(self.textView.frame))];
self.placeholderLabel.backgroundColor = [UIColor clearColor];
[self addSubview:self.placeholderLabel];
......@@ -220,7 +220,7 @@
}
- (void)checkHeight {
CGSize contentSize = [self.textView sizeThatFits:CGSizeMake(CGRectGetWidth(self.frame), MAXFLOAT)];
CGSize contentSize = [self.textView sizeThatFits:CGSizeMake(CGRectGetWidth(self.frame), MAXFLOAT + self.textView.textContainerInset.top + self.textView.textContainerInset.bottom)];
self.textView.textContainer.size = CGSizeMake(self.textView.textContainer.size.width, contentSize.height);
......@@ -234,6 +234,8 @@
self.textView.frame = CGRectMake(CGRectGetMinX(self.textView.frame), CGRectGetMinY(self.textView.frame), CGRectGetWidth(self.textView.frame), contentSize.height);
self.placeholderLabel.frame = CGRectMake(CGRectGetMinX(self.textView.frame) + self.textView.textContainerInset.left, CGRectGetMinY(self.textView.frame), CGRectGetWidth(self.textView.frame), CGRectGetHeight(self.textView.frame));
if (contentSize.height != CGRectGetHeight(self.frame)) {
if ([self.delegate respondsToSelector:@selector(customGrowingTextView:shouldChangeHeight:)]) {
[self.delegate customGrowingTextView:self shouldChangeHeight:contentSize.height];
......
......@@ -59,7 +59,12 @@
- (void)setInfoDesciption:(NSString *)descp{
self.infoDescriptionLabel.text = descp;
[self.infoDescriptionLabel sizeToFit];
CGSize size = [self.infoDescriptionLabel sizeThatFits:CGSizeMake(self.infoDescriptionLabel.frame.size.width, CGFLOAT_MAX)];
CGRect frame = self.infoDescriptionLabel.frame;
frame.size.height = size.height;
self.infoDescriptionLabel.frame = frame;
self.frame = CGRectMake(0.0f, 24.0f, CGRectGetWidth(self.frame), 62.0f - 24.0f + CGRectGetHeight(self.infoDescriptionLabel.frame) + 6.0f);
}
......
......@@ -91,7 +91,7 @@
self.phoneNumberTextField.delegate = self;
self.phoneNumberTextField.keyboardType = UIKeyboardTypePhonePad;
self.phoneNumberTextField.placeholder = @"8XXX XXX XXX";
self.phoneNumberTextField.placeholder = @"8XXX XXXX XXXX";
[self.phoneNumberTextField setTintColor:[[TAPStyleManager sharedManager] getComponentColorForType:TAPComponentColorTextFieldCursor]];
self.phoneNumberTextField.textColor = textFieldColor;
self.phoneNumberTextField.font = textFieldFont;
......
......@@ -114,7 +114,6 @@
self.errorInfoLabel.textColor = formErrorInfoLabelColor;
self.errorInfoLabel.numberOfLines = 0;
[self addSubview:self.errorInfoLabel];
}
return self;
......
......@@ -1486,7 +1486,24 @@
success:(void (^)(NSArray <NSString *> *updatedMessageIDs))success
failure:(void (^)(NSError *error))failure {
[TAPDataManager callAPIUpdateMessageReadStatusWithArray:messageArray
NSMutableArray *filteredMessageArray = [NSMutableArray array];
TAPUserModel *activeUser = [[TAPChatManager sharedManager] activeUser];
for (TAPMessageModel *message in messageArray) {
if (activeUser != nil &&
message.user != nil &&
![TAPUtil isEmptyString:activeUser.userID] &&
![TAPUtil isEmptyString:message.user.userID] &&
![message.user.userID isEqualToString:activeUser.userID]
) {
[filteredMessageArray addObject:message];
}
}
if ([filteredMessageArray count] == 0) {
return;
}
[TAPDataManager callAPIUpdateMessageReadStatusWithArray:filteredMessageArray
success:^(NSArray *updatedMessageIDsArray, NSArray *originMessageArray) {
[[TAPChatManager sharedManager] updateReadMessageToDatabaseQueueWithArray:originMessageArray];
success(updatedMessageIDsArray);
......@@ -2473,9 +2490,9 @@
NSMutableDictionary *data = [NSMutableDictionary dictionary];
[data setObject:url forKey:@"url"];
if (![TAPUtil isEmptyString:caption]) {
[data setObject:caption forKey:@"caption"];
}
[data setObject:@"" forKey:@"fileID"];
caption = [TAPUtil nullToEmptyString:caption];
[data setObject:caption forKey:@"caption"];
if (![TAPUtil isEmptyString:fileName]) {
[data setObject:fileName forKey:@"fileName"];
}
......
......@@ -44,6 +44,8 @@
+ (NSMutableDictionary *)getMutedRoomDictionary;
+ (void)setBlockedUserIDs:(NSArray *)userIDs;
+ (NSArray *)getBlockedUserIDs;
+ (void)seActiveUserPhotos:(NSArray<TAPPhotoListModel *> *)photos;
+ (NSArray<TAPPhotoListModel *> *)geActiveUserPhotos;
+ (void)setLastRoomMessageDeleteTime:(long)timestamp;
+ (long)getLastRoomMessageDeleteTime;
+ (void)setPendingScheduleMessages:(NSArray *)scheduleMessages;
......
......@@ -1681,6 +1681,17 @@
return coreConfigs;
}
+ (void)seActiveUserPhotos:(NSArray<TAPPhotoListModel *> *)photos {
[[NSUserDefaults standardUserDefaults] setSecureObject:photos forKey:TAP_PREFS_ACTIVE_USER_PHOTOS];
[[NSUserDefaults standardUserDefaults] synchronize];
}
+ (NSArray<TAPPhotoListModel *> *)geActiveUserPhotos {
NSArray *photos = [[NSUserDefaults standardUserDefaults] secureObjectForKey:TAP_PREFS_ACTIVE_USER_PHOTOS valid:nil];
[TAPUtil nullToEmptyArray:photos];
return photos;
}
+ (void)updateMessageToFailedWhenClosedInDatabase {
[[TAPDatabaseManager sharedManager] updateMessageToFailedWhenClosed];
}
......
......@@ -572,6 +572,8 @@
NSDictionary *currentDataDictionary = message.data;
NSString *currentFileID = [currentDataDictionary objectForKey:@"fileID"];
NSString *currentFileURL = [currentDataDictionary objectForKey:@"url"];
currentFileID = [TAPUtil nullToEmptyString:currentFileID];
currentFileURL = [TAPUtil nullToEmptyString:currentFileURL];
if (currentFileURL == nil || [currentFileURL isEqualToString:@""]) {
currentFileURL = [currentDataDictionary objectForKey:@"fileURL"];
}
......
......@@ -608,7 +608,11 @@
[[TAPChatManager sharedManager] removeFromWaitingUploadFileMessage:currentMessage];
//Save file path to cache
[[TAPFileDownloadManager sharedManager] saveDownloadedFilePathToDictionaryWithFilePath:fileUrl.path roomID:currentMessage.room.roomID fileID:fileID];
NSString *key = fileID;
if (![TAPUtil isEmptyString:key]) {
key = [[fileURL componentsSeparatedByCharactersInSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]] componentsJoinedByString:@""];
}
[[TAPFileDownloadManager sharedManager] saveDownloadedFilePathToDictionaryWithFilePath:fileUrl.path roomID:currentMessage.room.roomID fileID:key];
if(self.scheduleTime.longValue == 0) {
//Send emit
......@@ -1658,7 +1662,11 @@
[[TAPChatManager sharedManager] removeFromWaitingUploadFileMessage:currentMessage];
//Save file path to cache
[[TAPFileDownloadManager sharedManager] saveDownloadedFilePathToDictionaryWithFilePath:fileUrl.path roomID:currentMessage.room.roomID fileID:fileID];
NSString *key = fileID;
if (![TAPUtil isEmptyString:key]) {
key = [[fileURL componentsSeparatedByCharactersInSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]] componentsJoinedByString:@""];
}
[[TAPFileDownloadManager sharedManager] saveDownloadedFilePathToDictionaryWithFilePath:fileUrl.path roomID:currentMessage.room.roomID fileID:key];
//Send emit
[[TAPChatManager sharedManager] sendEmitFileMessage:currentMessage];
......@@ -2437,7 +2445,11 @@
[[TAPChatManager sharedManager] removeFromWaitingUploadFileMessage:resultMessage];
//Save video file path to cache
[[TAPFileDownloadManager sharedManager] saveDownloadedFilePathToDictionaryWithFilePath:filePathString roomID:resultMessage.room.roomID fileID:fileID];
NSString *key = fileID;
if (![TAPUtil isEmptyString:key]) {
key = [[fileURL componentsSeparatedByCharactersInSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]] componentsJoinedByString:@""];
}
[[TAPFileDownloadManager sharedManager] saveDownloadedFilePathToDictionaryWithFilePath:filePathString roomID:resultMessage.room.roomID fileID:key];
//Save video thumbnail image to cache
UIImage *thumbnailVideoImage = [[TAPFetchMediaManager sharedManager] generateThumbnailImageFromFilePathString:filePathString];
......
......@@ -60,13 +60,22 @@
#pragma mark - Custom Method
- (void)markMessageAsReadWithMessage:(TAPMessageModel *)message {
TAPUserModel *activeUser = [TAPDataManager getActiveUser];
if (activeUser != nil &&
message.user != nil &&
![TAPUtil isEmptyString:activeUser.userID] &&
![TAPUtil isEmptyString:message.user.userID] &&
[message.user.userID isEqualToString:activeUser.userID]
) {
return;
}
[self.readMessageQueueArray addObject:message];
//Add to read count dictionary
[self increaseReadCountDictionaryWithRoomID:message.room.roomID];
//Check if has mention
BOOL hasMention = [TAPUtil isActiveUserMentionedWithMessage:message activeUser:[TAPDataManager getActiveUser]];
BOOL hasMention = [TAPUtil isActiveUserMentionedWithMessage:message activeUser:activeUser];
if (hasMention) {
//Add to read mention count dictionary
[self increaseReadCountMentionDictionaryWithRoomID:message.room.roomID];
......@@ -74,7 +83,14 @@
}
- (void)markMessageAsDeliveredWithMessage:(TAPMessageModel *)message {
if (message.isDelivered) {
TAPUserModel *activeUser = [TAPDataManager getActiveUser];
if (message.isDelivered ||
(activeUser != nil &&
message.user != nil &&
![TAPUtil isEmptyString:activeUser.userID] &&
![TAPUtil isEmptyString:message.user.userID] &&
[message.user.userID isEqualToString:activeUser.userID])
) {
return;
}
[self.deliveryMessageQueueArray addObject:message];
......@@ -239,6 +255,17 @@
// NSString *messageIDString = message.messageID;
// NSArray *parameterMessageIDsArray = @[messageIDString];
TAPUserModel *activeUser = [TAPDataManager getActiveUser];
if (message.isDelivered ||
(activeUser != nil &&
message.user != nil &&
![TAPUtil isEmptyString:activeUser.userID] &&
![TAPUtil isEmptyString:message.user.userID] &&
[message.user.userID isEqualToString:activeUser.userID])
) {
return;
}
//Update to database
[TAPDataManager updateMessageDeliveryStatusToDatabaseWithData:@[message] success:^{
......
......@@ -3333,6 +3333,9 @@
}
- (NSString *)getInitialsWithName:(NSString *)name isGroup:(BOOL)isGroup {
if ([TAPUtil isEmptyString:name]) {
return @"";
}
NSMutableString *displayString = [NSMutableString stringWithString:@""];
NSMutableArray *words = [[name componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] mutableCopy];
if ([words count]) {
......@@ -3344,7 +3347,7 @@
}
if (isGroup) {
return displayString;
return [displayString uppercaseString];
}
if ([words count] >= 2) {
......@@ -3362,10 +3365,10 @@
}
}
return displayString;
return [displayString uppercaseString];
}
return displayString;
return [displayString uppercaseString];
}
@end
......@@ -16,6 +16,7 @@
#define TAP_DEFAULT_MAX_CHANNEL_PARTICIPANTS 5000
#define TAP_UPDATED_TIME_LIMIT 24 * 60 * 60 //1 day (in seconds)
#define TAP_NUMBER_OF_ITEMS_API_MESSAGE_BEFORE 50
#define TAP_REPORT_REASON_CHARACTER_LIMIT 2000
#define kCharacterLimit 4000
//Prefs Key
......@@ -50,6 +51,7 @@
#define TAP_PREFS_PENDING_UPDATE_READ_MESSAGE @"Prefs.TapTalkPendingUpdateReadMessage"
#define TAP_PREFS_USER_IGNORE_ADD_CONTACT_POPUP_DICTIONARY @"Prefs.TapTalkUserIgnoreAddContactPopupDictionary"
#define TAP_PREFS_GOOGLE_PLACES_TOKEN @"Prefs.TapTalkGooglePlacesToken"
#define TAP_PREFS_ACTIVE_USER_PHOTOS @"Prefs.TapTalkActiveUserPhotos"
//Color
#define TAP_COLOR_WHITE @"FFFFFF"
......
......@@ -643,6 +643,7 @@
[[NSUserDefaults standardUserDefaults] removeObjectForKey:TAP_PREFS_MUTED_ROOM_LIST];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:TAP_PREFS_UNREAD_ROOMIDS];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:TAP_PREFS_CURRENT_VOICE_MESSAGE_PLAYING];
[[NSUserDefaults standardUserDefaults] removeObjectForKey:TAP_PREFS_ACTIVE_USER_PHOTOS];
[[NSUserDefaults standardUserDefaults] synchronize];
//AS NOTE - CLEAR `receiveMessageDictionary` from AppGroup Share Extension
......
......@@ -14,6 +14,8 @@
@property (strong, nonatomic) TAPBlockedListView *blockedListView;
@property (strong, nonatomic) UIButton *rightNavigationButton;
@property (strong, nonatomic) UIBarButtonItem *barButtonRightItem;
@property (strong, nonatomic) UIView *loadingView;
@property (strong, nonatomic) UIImageView *loadingImageView;
@property (strong, nonatomic) NSMutableArray* blockedUserList;
@property (nonatomic) BOOL isEditState;
......@@ -28,6 +30,19 @@
[super loadView];
_blockedListView = [[TAPBlockedListView alloc] initWithFrame:[TAPBaseView frameWithNavigationBar]];
[self.view addSubview:self.blockedListView];
// Loading view
_loadingView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame))];
self.loadingView.backgroundColor = [[TAPUtil getColor:@"191919"] colorWithAlphaComponent:0.4f];
self.loadingView.alpha = 0.0f;
UIWindow *currentWindow = [UIApplication sharedApplication].keyWindow;
[currentWindow addSubview:self.loadingView];
CGFloat loadingImageSize = 56.0f;
_loadingImageView = [[UIImageView alloc] initWithFrame:CGRectMake((CGRectGetWidth(self.loadingView.frame) - loadingImageSize) / 2, (CGRectGetHeight(self.loadingView.frame) - loadingImageSize) / 2, loadingImageSize, loadingImageSize)];
[self.loadingImageView setImage:[UIImage imageNamed:@"TAPIconLoaderProgress" inBundle:[TAPUtil currentBundle] compatibleWithTraitCollection:nil]];
self.loadingImageView.image = [self.loadingImageView.image setImageTintColor:[[TAPStyleManager sharedManager] getComponentColorForType:TAPComponentColorIconLoadingProgressPrimary]];
[self.loadingView addSubview:self.loadingImageView];
}
- (void)viewDidLoad {
......@@ -101,6 +116,11 @@
}];
}
- (void)viewDidUnload {
[self.loadingView removeFromSuperview];
}
#pragma mark - Data Source
#pragma mark TableView
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
......@@ -194,8 +214,7 @@
}
- (void)updateRightNavigation {
if(self.blockedUserList.count == 0) {
if (self.blockedUserList.count == 0) {
[self.rightNavigationButton setTitle:@"" forState:UIControlStateNormal];
self.rightNavigationButton.userInteractionEnabled = NO;
self.barButtonRightItem = [[UIBarButtonItem alloc] initWithCustomView:self.rightNavigationButton];
......@@ -205,7 +224,7 @@
}
self.rightNavigationButton.userInteractionEnabled = YES;
if(self.isEditState) {
if (self.isEditState) {
self.isEditState = NO;
[self.rightNavigationButton setTitle:@"Edit" forState:UIControlStateNormal];
}
......@@ -219,34 +238,35 @@
}
- (void)popUpInfoTappedSingleButtonOrRightButtonWithIdentifier:(NSString *)popupIdentifier {
if ([popupIdentifier isEqualToString:@"unblock confirmation"]){
NSMutableArray *blockedUserIDs = [[TAPDataManager getBlockedUserIDs] mutableCopy];
if([blockedUserIDs containsObject:self.selectedContact.userID]) {
[blockedUserIDs removeObject:self.selectedContact.userID];
}
//[TAPDataManager setBlockedUserIDs:[blockedUserIDs copy]];
[self.blockedUserList removeObject:self.selectedContact];
[self.blockedListView.tableView reloadData];
if(self.blockedUserList.count == 0) {
self.blockedListView.emptyStateView.alpha = 1.0f;
}
else {
self.blockedListView.emptyStateView.alpha = 0.0f;
}
if(blockedUserIDs.count == 0) {
[self updateRightNavigation];
}
if ([popupIdentifier isEqualToString:@"unblock confirmation"]) {
[self showLoading:YES];
[[TAPCoreContactManager sharedManager] unblockUserWithUserID:self.selectedContact.userID success:^(TAPUserModel * _Nonnull unblockedUser) {
NSMutableArray *blockedUserIDs = [[TAPDataManager getBlockedUserIDs] mutableCopy];
if ([blockedUserIDs containsObject:self.selectedContact.userID]) {
[blockedUserIDs removeObject:self.selectedContact.userID];
}
//[TAPDataManager setBlockedUserIDs:[blockedUserIDs copy]];
[self.blockedUserList removeObject:self.selectedContact];
[self.blockedListView.tableView reloadData];
if (self.blockedUserList.count == 0) {
self.blockedListView.emptyStateView.alpha = 1.0f;
}
else {
self.blockedListView.emptyStateView.alpha = 0.0f;
}
if (blockedUserIDs.count == 0) {
[self updateRightNavigation];
}
[self showLoading:NO];
} failure:^(NSError *error) {
[self showLoading:NO];
}];
}
}
......@@ -277,4 +297,34 @@
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
[self.navigationItem setLeftBarButtonItem:barButtonItem];
}
- (void)showLoading:(BOOL)show {
if (show) {
if ([self.loadingImageView.layer animationForKey:@"SpinAnimation"] == nil) {
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.toValue = [NSNumber numberWithFloat:(2 * M_PI)];
animation.duration = 1.5f;
animation.repeatCount = INFINITY;
animation.cumulative = YES;
animation.removedOnCompletion = NO;
[self.loadingImageView.layer addAnimation:animation forKey:@"SpinAnimation"];
}
[UIView animateWithDuration:0.1f animations:^{
self.loadingView.alpha = 1.0f;
[self.view layoutIfNeeded];
}];
}
else {
[UIView animateWithDuration:0.1f animations:^{
self.loadingView.alpha = 0.0f;
[self.view layoutIfNeeded];
} completion:^(BOOL finished) {
if ([self.loadingImageView.layer animationForKey:@"SpinAnimation"] != nil) {
[self.loadingImageView.layer removeAnimationForKey:@"SpinAnimation"];
}
}];
}
}
@end
......@@ -19,6 +19,11 @@
- (void)viewDidLoad {
[super viewDidLoad];
if (self.otherUser == nil || self.otherUser.userID == nil) {
[self.navigationController popViewControllerAnimated:NO];
return;
}
self.title = NSLocalizedStringFromTableInBundle(self.otherUser.fullname, nil, [TAPUtil currentBundle], @"");
[self showCustomBackButton];
......
......@@ -137,6 +137,7 @@
TAPMediaPreviewModel *mediaPreview = [self.mediaDataArray objectAtIndex:0];
if (mediaPreview.caption != nil && ![mediaPreview.caption isEqualToString:@""]) {
[self.imagePreviewView.captionTextView setText:mediaPreview.caption];
self.imagePreviewView.wordCountLabel.text = [NSString stringWithFormat:@"%ld/%ld", [mediaPreview.caption length], [[TapTalk sharedInstance] getMaxCaptionLength]];
}
}
......@@ -410,17 +411,31 @@ minimumLineSpacingForSectionAtIndex:(NSInteger)section {
[cell setThumbnailImagePreviewCollectionViewCellType:TAPThumbnailImagePreviewCollectionViewCellTypeVideo];
}
UIImage *thumbnailImage = nil;
if (mediaPreview.asset == nil) {
if (mediaPreview.url != nil && ![mediaPreview.url isEqualToString:@""]) {
// Set thumbnail preview from URL
if ([mediaPreview.mediaType isEqualToString:@"video"]) {
// Fetch video data
[TAPUtil fetchVideoThumbnailWithRemoteURL:mediaPreview.url
success:^(UIImage *thumbnail) {
[cell setThumbnailImageView:thumbnail];
}
failure:^(NSError *error) {
}];
}
else {
[cell setImageUrl:mediaPreview.url];
}
}
else if (mediaPreview.asset == nil) {
//data is from Camera - UIImage
thumbnailImage = mediaPreview.image;
[cell setThumbnailImageView:mediaPreview.image];
}
else {
//data is from PHAsset
thumbnailImage = mediaPreview.thumbnailImage;
[cell setThumbnailImageView:mediaPreview.thumbnailImage];
}
[cell setThumbnailImageView:thumbnailImage];
cell.mediaPreviewData = mediaPreview;
}
......@@ -572,8 +587,10 @@ minimumLineSpacingForSectionAtIndex:(NSInteger)section {
[self.mediaDataArray removeObjectAtIndex:indexPath.item];
NSString *generatedAssetKey = toBeDeletedAsset.localIdentifier;
[self.excedeedSizeLimitMediaDictionary removeObjectForKey:generatedAssetKey];
if (toBeDeletedAsset != nil && ![TAPUtil isEmptyString:toBeDeletedAsset.localIdentifier]) {
NSString *generatedAssetKey = toBeDeletedAsset.localIdentifier;
[self.excedeedSizeLimitMediaDictionary removeObjectForKey:generatedAssetKey];
}
[self filterAssetSizeExcedeedLimitWithArray:self.mediaDataArray];
......
......@@ -414,7 +414,7 @@
delay:0.0f
usingSpringWithDamping:0.8f
initialSpringVelocity:0.8f
options:UIViewAnimationOptionCurveEaseOut
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.mediaDetailView.movementView.frame = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.mediaDetailView.movementView.frame), CGRectGetHeight(self.mediaDetailView.movementView.frame));
self.mediaDetailView.backgroundView.alpha = 1.0f;
......@@ -438,7 +438,7 @@
delay:0.0f
usingSpringWithDamping:0.8f
initialSpringVelocity:0.8f
options:UIViewAnimationOptionCurveEaseOut
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.mediaDetailView.movementView.frame = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.mediaDetailView.movementView.frame), CGRectGetHeight(self.mediaDetailView.movementView.frame));
self.mediaDetailView.backgroundView.alpha = 1.0f;
......
......@@ -12,6 +12,10 @@ NS_ASSUME_NONNULL_BEGIN
@interface TAPMessageInfoViewController : TAPBaseViewController
@property (strong, nonnull) TAPMessageModel *message;
@property (strong, nonatomic) NSMutableDictionary *participantListDictionary;
@property (strong, nonatomic) NSArray *mentionArray;
@property (nonatomic) BOOL showStar;
@property (nonatomic) BOOL showPin;
@end
......
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