Commit 1751210a authored by Kevin Reynaldo's avatar Kevin Reynaldo
Browse files

• Updated version to 1.3.14

• Added setChangeProfilePictureButtonVisible to TapUI
• Updated my account text field colors
• Added file path to download file/video callback
• Added message model to download callback
• Invoke userLogout after logoutAndClearAllTapTalkData is finished
parent 51ec8936
......@@ -3,7 +3,7 @@ Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.name = "TapTalk"
s.version = "1.3.13"
s.version = "1.3.14"
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"
......
......@@ -2153,7 +2153,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.3.13;
MARKETING_VERSION = 1.3.14;
PRODUCT_BUNDLE_IDENTIFIER = io.TapTalk.TapTalk;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
......@@ -2190,7 +2190,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.3.13;
MARKETING_VERSION = 1.3.14;
PRODUCT_BUNDLE_IDENTIFIER = io.TapTalk.TapTalk;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
......
......@@ -235,6 +235,7 @@
placeholderString = NSLocalizedStringFromTableInBundle(@"e.g Bernama", nil, [TAPUtil currentBundle], @"");
self.textField.placeholder = placeholderString;
self.textField.alpha = 0.4f;
self.containerView.alpha = 1.0f;
self.phoneNumberPickerView.alpha = 0.0f;
[self showShowPasswordButton:NO];
......@@ -261,6 +262,7 @@
self.textField.placeholder = placeholderString;
self.textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
self.textField.autocorrectionType = UITextAutocorrectionTypeNo;
self.textField.alpha = 0.4f;
self.containerView.alpha = 1.0f;
self.phoneNumberPickerView.alpha = 0.0f;
[self showShowPasswordButton:NO];
......@@ -294,6 +296,7 @@
self.textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
placeholderString = NSLocalizedStringFromTableInBundle(@"e.g example@work.com", nil, [TAPUtil currentBundle], @"");
self.textField.placeholder = placeholderString;
self.textField.alpha = 0.4f;
self.containerView.alpha = 1.0f;
self.phoneNumberPickerView.alpha = 0.0f;
[self showShowPasswordButton:NO];
......
......@@ -175,18 +175,18 @@ NS_ASSUME_NONNULL_BEGIN
- (void)downloadMessageFile:(TAPMessageModel *)message
start:(void (^)(void))startBlock
progress:(void (^)(TAPMessageModel *message, CGFloat progress, CGFloat total))progressBlock
success:(void (^)(NSData *fileData))successBlock
failure:(void (^)(NSError *error))failureBlock;
success:(void (^)(TAPMessageModel *message, NSData *fileData, NSString *filePath))successBlock
failure:(void (^)(TAPMessageModel *message, NSError *error))failureBlock;
- (void)downloadMessageImage:(TAPMessageModel *)message
start:(void (^)(void))startBlock
progress:(void (^)(TAPMessageModel *message, CGFloat progress, CGFloat total))progressBlock
success:(void (^)(UIImage *fullImage))successBlock
failure:(void (^)(NSError *error))failureBlock;
success:(void (^)(TAPMessageModel *message, UIImage *fullImage))successBlock
failure:(void (^)(TAPMessageModel *message, NSError *error))failureBlock;
- (void)downloadMessageVideo:(TAPMessageModel *)message
start:(void (^)(void))startBlock
progress:(void (^)(TAPMessageModel *message, CGFloat progress, CGFloat total))progressBlock
success:(void (^)(NSData *fileData))successBlock
failure:(void (^)(NSError *error))failureBlock;
success:(void (^)(TAPMessageModel *message, NSData *fileData, NSString *filePath))successBlock
failure:(void (^)(TAPMessageModel *message, NSError *error))failureBlock;
- (void)cancelMessageFileDownload:(TAPMessageModel *)message
success:(void (^)(void))success
failure:(void (^)(NSError *error))failure;
......
......@@ -726,69 +726,69 @@
- (void)downloadMessageFile:(TAPMessageModel *)message
start:(void (^)(void))startBlock
progress:(void (^)(TAPMessageModel *message, CGFloat progress, CGFloat total))progressBlock
success:(void (^)(NSData *fileData))successBlock
failure:(void (^)(NSError *error))failureBlock {
success:(void (^)(TAPMessageModel *message, NSData *fileData, NSString *filePath))successBlock
failure:(void (^)(TAPMessageModel *message, NSError *error))failureBlock {
if (message.type == TAPChatMessageTypeFile) {
[[TAPFileDownloadManager sharedManager] receiveFileDataWithMessage:message start:^(TAPMessageModel * _Nonnull receivedMessage) {
startBlock();
} progress:^(CGFloat progress, CGFloat total, TAPMessageModel * _Nonnull receivedMessage) {
progressBlock(receivedMessage, progress, total);
} success:^(NSData * _Nonnull fileData, TAPMessageModel * _Nonnull receivedMessage) {
successBlock(fileData);
} success:^(NSData * _Nonnull fileData, TAPMessageModel * _Nonnull receivedMessage, NSString * _Nonnull filePath) {
successBlock(receivedMessage, fileData, filePath);
} failure:^(NSError * _Nonnull error, TAPMessageModel * _Nonnull receivedMessage) {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failureBlock(localizedError);
failureBlock(receivedMessage, localizedError);
}];
}
else {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedErrorWithErrorCode:90305 errorMessage:@"Invalid message type. Allowed type is file (1004)"];
failureBlock(localizedError);
failureBlock(message, localizedError);
}
}
- (void)downloadMessageImage:(TAPMessageModel *)message
start:(void (^)(void))startBlock
progress:(void (^)(TAPMessageModel *message, CGFloat progress, CGFloat total))progressBlock
success:(void (^)(NSData *fileData))successBlock
failure:(void (^)(NSError *error))failureBlock {
success:(void (^)(TAPMessageModel *message, UIImage *fullImage))successBlock
failure:(void (^)(TAPMessageModel *message, NSError *error))failureBlock {
if (message.type == TAPChatMessageTypeImage) {
[[TAPFileDownloadManager sharedManager] receiveImageDataWithMessage:message start:^(TAPMessageModel * _Nonnull receivedMessage) {
startBlock();
} progress:^(CGFloat progress, CGFloat total, TAPMessageModel * _Nonnull receivedMessage) {
progressBlock(receivedMessage, progress, total);
} success:^(UIImage * _Nonnull fullImage, TAPMessageModel * _Nonnull receivedMessage) {
successBlock(fullImage);
successBlock(receivedMessage, fullImage);
} failure:^(NSError * _Nonnull error, TAPMessageModel * _Nonnull receivedMessage) {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failureBlock(localizedError);
failureBlock(receivedMessage, localizedError);
}];
}
else {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedErrorWithErrorCode:90305 errorMessage:@"Invalid message type. Allowed type is image (1002)"];
failureBlock(localizedError);
failureBlock(message, localizedError);
}
}
- (void)downloadMessageVideo:(TAPMessageModel *)message
start:(void (^)(void))startBlock
progress:(void (^)(TAPMessageModel *message, CGFloat progress, CGFloat total))progressBlock
success:(void (^)(NSData *fileData))successBlock
failure:(void (^)(NSError *error))failureBlock {
success:(void (^)(TAPMessageModel *message, NSData *fileData, NSString *filePath))successBlock
failure:(void (^)(TAPMessageModel *message, NSError *error))failureBlock {
if (message.type == TAPChatMessageTypeVideo) {
[[TAPFileDownloadManager sharedManager] receiveVideoDataWithMessage:message start:^(TAPMessageModel * _Nonnull receivedMessage) {
startBlock();
} progress:^(CGFloat progress, CGFloat total, TAPMessageModel * _Nonnull receivedMessage) {
progressBlock(receivedMessage, progress, total);
} success:^(NSData * _Nonnull fileData, TAPMessageModel * _Nonnull receivedMessage) {
successBlock(fileData);
} success:^(NSData * _Nonnull fileData, TAPMessageModel * _Nonnull receivedMessage, NSString * _Nonnull filePath) {
successBlock(receivedMessage, fileData, filePath);
} failure:^(NSError * _Nonnull error, TAPMessageModel * _Nonnull receivedMessage) {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failureBlock(localizedError);
failureBlock(receivedMessage, localizedError);
}];
}
else {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedErrorWithErrorCode:90305 errorMessage:@"Invalid message type. Allowed type is video (1003)"];
failureBlock(localizedError);
failureBlock(message, localizedError);
}
}
......
......@@ -26,13 +26,13 @@ NS_ASSUME_NONNULL_BEGIN
- (void)receiveFileDataWithMessage:(TAPMessageModel *)message
start:(void(^)(TAPMessageModel *receivedMessage))startProgress
progress:(void (^)(CGFloat progress, CGFloat total, TAPMessageModel *receivedMessage))progressBlock
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage))success
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage, NSString *filePath))success
failure:(void(^)(NSError *error, TAPMessageModel *receivedMessage))failure;
- (void)receiveVideoDataWithMessage:(TAPMessageModel *)message
start:(void(^)(TAPMessageModel *receivedMessage))startProgress
progress:(void (^)(CGFloat progress, CGFloat total, TAPMessageModel *receivedMessage))progressBlock
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage))success
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage, NSString *filePath))success
failure:(void(^)(NSError *error, TAPMessageModel *receivedMessage))failure;
- (NSDictionary *)getDownloadProgressWithLocalID:(NSString *)localID;
......
......@@ -236,7 +236,7 @@
- (void)receiveFileDataWithMessage:(TAPMessageModel *)message
start:(void(^)(TAPMessageModel *receivedMessage))startProgress
progress:(void (^)(CGFloat progress, CGFloat total, TAPMessageModel *receivedMessage))progressBlock
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage))success
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage, NSString *filePath))success
failure:(void(^)(NSError *error, TAPMessageModel *receivedMessage))failure {
NSDictionary *currentDataDictionary = message.data;
NSString *currentFileID = [currentDataDictionary objectForKey:@"fileID"];
......@@ -281,7 +281,7 @@
NSData *downloadedData = [NSData dataWithContentsOfURL:filePath];
if (downloadedData != nil) {
NSString *key = [[currentFileURL componentsSeparatedByCharactersInSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]] componentsJoinedByString:@""];
[self saveDownloadedData:downloadedData andThumbnailWithKey:key message:message success:success failure:failure];
[self saveDownloadedData:downloadedData andThumbnailWithKey:key message:message success:success];
}
else {
[self handleFileDownloadError:error message:message];
......@@ -298,8 +298,7 @@
[TAPDataManager callAPIDownloadFileWithFileID:currentFileID
roomID:message.room.roomID
completionBlock:^(NSData *downloadedData) {
[self saveDownloadedData:downloadedData message:message key:currentFileID];
success(downloadedData, message);
[self saveDownloadedData:downloadedData message:message key:currentFileID success:success];
}
progressBlock:^(CGFloat progress, CGFloat total) {
[self updateDownloadProgress:progress total:total message:message];
......@@ -315,7 +314,7 @@
- (void)receiveVideoDataWithMessage:(TAPMessageModel *)message
start:(void(^)(TAPMessageModel *receivedMessage))startProgress
progress:(void (^)(CGFloat progress, CGFloat total, TAPMessageModel *receivedMessage))progressBlock
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage))success
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage, NSString *filePath))success
failure:(void(^)(NSError *error, TAPMessageModel *receivedMessage))failure {
NSDictionary *currentDataDictionary = message.data;
......@@ -361,7 +360,7 @@
NSData *downloadedData = [NSData dataWithContentsOfURL:filePath];
if (downloadedData != nil) {
NSString *key = [[currentFileURL componentsSeparatedByCharactersInSet:[[NSCharacterSet alphanumericCharacterSet] invertedSet]] componentsJoinedByString:@""];
[self saveDownloadedData:downloadedData andThumbnailWithKey:key message:message success:success failure:failure];
[self saveDownloadedData:downloadedData andThumbnailWithKey:key message:message success:success];
}
else {
[self handleFileDownloadError:error message:message];
......@@ -378,7 +377,7 @@
[TAPDataManager callAPIDownloadFileWithFileID:currentFileID
roomID:message.room.roomID
completionBlock:^(NSData *downloadedData) {
[self saveDownloadedData:downloadedData andThumbnailWithKey:currentFileID message:message success:success failure:failure];
[self saveDownloadedData:downloadedData andThumbnailWithKey:currentFileID message:message success:success];
}
progressBlock:^(CGFloat progress, CGFloat total) {
[self updateDownloadProgress:progress total:total message:message];
......@@ -421,7 +420,8 @@
- (void)saveDownloadedData:(NSData *)data
message:(TAPMessageModel *)message
key:(NSString *)key {
key:(NSString *)key
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage, NSString *filePath))success {
// Save file message data
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
......@@ -459,11 +459,14 @@
[data writeToFile:destinationFileString atomically:YES];
// TODO: ADD FILE PATH SUCCESS CALLBACK (?)
[[TAPFileDownloadManager sharedManager] saveDownloadedFilePathToDictionaryWithFilePath:destinationFileString roomID:message.room.roomID fileID:key];
[self.failedDownloadDictionary removeObjectForKey:message.localID];
[self.downloadProgressDictionary removeObjectForKey:message.localID];
success(data, message, [self getDownloadedFilePathWithRoomID:message.room.roomID fileID:key]);
CGFloat progress = 1.0f;
CGFloat total = 1.0f;
NSMutableDictionary *objectDictionary = [NSMutableDictionary dictionary];
......@@ -477,8 +480,7 @@
- (void)saveDownloadedData:(NSData *)data
andThumbnailWithKey:(NSString *)key
message:(TAPMessageModel *)message
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage))success
failure:(void(^)(NSError *error, TAPMessageModel *receivedMessage))failure {
success:(void (^)(NSData *fileData, TAPMessageModel *receivedMessage, NSString *filePath))success {
// Save video message data
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
......@@ -528,7 +530,7 @@
[TAPImageView saveImageToCache:thumbnailVideoImage withKey:key];
}
success(data, message);
success(data, message, [self getDownloadedFilePathWithRoomID:message.room.roomID fileID:key]);
[self.downloadProgressDictionary removeObjectForKey:message.localID];
......@@ -637,7 +639,7 @@
if (self.downloadedFilePathDictionary == nil) {
self.downloadedFilePathDictionary = [[NSMutableDictionary alloc] init];
}
NSMutableDictionary *downloadedFilePathPerRoomDictionary = [[self.downloadedFilePathDictionary objectForKey:roomID] mutableCopy];
if (downloadedFilePathPerRoomDictionary == nil || [downloadedFilePathPerRoomDictionary count] == 0) {
......
......@@ -566,10 +566,16 @@
[[TapTalk sharedInstance] clearAllTapTalkData];
[[TapTalk sharedInstance] disconnectWithCompletionHandler:^{
}];
if ([self.delegate respondsToSelector:@selector(userLogout)]) {
[self.delegate userLogout];
}
} failure:^(NSError *error) {
[[TapTalk sharedInstance] clearAllTapTalkData];
[[TapTalk sharedInstance] disconnectWithCompletionHandler:^{
}];
if ([self.delegate respondsToSelector:@selector(userLogout)]) {
[self.delegate userLogout];
}
}];
}
......
......@@ -255,6 +255,18 @@ https://developer.taptalk.io/docs/event-delegate#section-tapuicustomkeyboarddele
//==========================================================
// My Account View
//==========================================================
/**
Show or hide change profile picture button in MyAccount view
@param isVisible (BOOL) boolean to indicating is visible or not
*/
- (void)setChangeProfilePictureButtonVisible:(BOOL)isVisible;
/**
Get current visibility state of change profile picture button
*/
- (BOOL)getChangeProfilePictureButtonVisibleState;
/**
Show or hide logout button in MyAccount view
......
......@@ -13,6 +13,7 @@
@property (strong, nonatomic) TAPCustomNotificationAlertViewController *customNotificationAlertViewController;
@property (nonatomic) BOOL isDisableActivateInAppNotification;
@property (nonatomic) BOOL isChangeProfilePictureButtonHidden;
@property (nonatomic) BOOL isLogoutButtonVisible;
@property (nonatomic) BOOL isSearchBarRoomListViewHidden;
@property (nonatomic) BOOL isLeftBarItemRoomListViewHidden;
......@@ -344,6 +345,22 @@ scrollToMessageWithLocalID:(NSString *)messageLocalID
success(chatViewController);
}
/**
Show or hide change profile picture button in MyAccount view
@param isVisible (BOOL) boolean to indicating is visible or not
*/
- (void)setChangeProfilePictureButtonVisible:(BOOL)isVisible {
_isChangeProfilePictureButtonHidden = !isVisible;
}
/**
Get current visibility state of change profile picture button
*/
- (BOOL)getChangeProfilePictureButtonVisibleState {
return !self.isChangeProfilePictureButtonHidden;
}
/**
Show or hide logout button in MyAccount view
......
......@@ -60,10 +60,13 @@
self.myAccountView.emailTextField.delegate = self;
self.myAccountView.continueButtonView.delegate = self;
[self.myAccountView.changeProfilePictureButton addTarget:self action:@selector(changeProfilePictureButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
[self.myAccountView.removeProfilePictureButton addTarget:self action:@selector(removeProfilePictureButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
[self.myAccountView.cancelButton addTarget:self action:@selector(cancelButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
[self.myAccountView.cancelButton addTarget:self action:@selector(cancelButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
if ([[TapUI sharedInstance] getChangeProfilePictureButtonVisibleState]) {
[self.myAccountView.changeProfilePictureButton addTarget:self action:@selector(changeProfilePictureButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
[self.myAccountView.removeProfilePictureButton addTarget:self action:@selector(removeProfilePictureButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
}
if ([[TapUI sharedInstance] getLogoutButtonVisibleState]) {
//Handle only when logout is visible
[self.myAccountView.logoutButton addTarget:self action:@selector(logoutButtonDidTapped) forControlEvents:UIControlEventTouchUpInside];
......
......@@ -1418,7 +1418,7 @@ minimumLineSpacingForSectionAtIndex:(NSInteger)section {
//Already handled via Notification
} progress:^(CGFloat progress, CGFloat total, TAPMessageModel * _Nonnull receivedMessage) {
//Already handled via Notification
} success:^(NSData * _Nonnull fileData, TAPMessageModel * _Nonnull receivedMessage) {
} success:^(NSData * _Nonnull fileData, TAPMessageModel * _Nonnull receivedMessage, NSString * _Nonnull filePath) {
//Already handled via Notification
} failure:^(NSError * _Nonnull error, TAPMessageModel * _Nonnull receivedMessage) {
//Already handled via Notification
......
......@@ -6462,7 +6462,7 @@ typedef NS_ENUM(NSInteger, TopFloatingIndicatorViewType) {
//Already Handled via Notification
} progress:^(CGFloat progress, CGFloat total, TAPMessageModel * _Nonnull receivedMessage) {
//Already Handled via Notification
} success:^(NSData * _Nonnull fileData, TAPMessageModel * _Nonnull receivedMessage) {
} success:^(NSData * _Nonnull fileData, TAPMessageModel * _Nonnull receivedMessage, NSString * _Nonnull filePath) {
//Already Handled via Notification
} failure:^(NSError * _Nonnull error, TAPMessageModel * _Nonnull receivedMessage) {
//Already Handled via Notification
......@@ -6474,7 +6474,7 @@ typedef NS_ENUM(NSInteger, TopFloatingIndicatorViewType) {
//Already Handled via Notification
} progress:^(CGFloat progress, CGFloat total, TAPMessageModel * _Nonnull receivedMessage) {
//Already Handled via Notification
} success:^(NSData * _Nonnull fileData, TAPMessageModel * _Nonnull receivedMessage) {
} success:^(NSData * _Nonnull fileData, TAPMessageModel * _Nonnull receivedMessage, NSString * _Nonnull filePath) {
//Already Handled via Notification
} failure:^(NSError * _Nonnull error, TAPMessageModel * _Nonnull receivedMessage) {
//Already Handled via Notification
......
......@@ -210,6 +210,13 @@
self.emailTextField.frame = CGRectMake(CGRectGetMinX(self.emailTextField.frame), CGRectGetMinY(self.emailTextField.frame), CGRectGetWidth(self.emailTextField.frame), [self.emailTextField getTextFieldHeight]);
[self.scrollView addSubview:self.emailTextField];
if (![[TapUI sharedInstance] getChangeProfilePictureButtonVisibleState]) {
self.changeIconImageView.alpha = 0.0f;
self.changeLabel.alpha = 0.0f;
self.changeProfilePictureButton.alpha = 0.0f;
self.removeProfilePictureButton.alpha = 0.0f;
}
if ([[TapUI sharedInstance] getLogoutButtonVisibleState]) {
_logoutView = [[UIView alloc] initWithFrame:CGRectMake(16.0f, CGRectGetMaxY(self.emailTextField.frame) + 24.0f, CGRectGetWidth(self.frame) - 32.0f, 50.0f)];
self.logoutView.alpha = 1.0f;
......
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