Commit e4fe5d09 authored by Kevin Reynaldo's avatar Kevin Reynaldo
Browse files

• Updated version to 1.5.0

• Added multiple profile picture
• Added user bio
• Updated My Account & Chat Profile UI
• Added getMessagesFromServerWithRoomID and getAllOlderMessagesBeforeTimestamp to TapCoreMessageManager
• Optimized getAllMessagesWithRoomID method
• Fixed get unread message & mention query
• Fixed error handling in getGroupChatRoomWithGroupRoomID
parent 4b7bb6fa
......@@ -3,7 +3,7 @@ Pod::Spec.new do |s|
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.name = "TapTalk"
s.version = "1.4.2"
s.version = "1.5.0"
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"
......
......@@ -2131,7 +2131,7 @@
buildSettings = {
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 8;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = PA443D57Z2;
DYLIB_COMPATIBILITY_VERSION = 1;
......@@ -2153,7 +2153,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.4.2;
MARKETING_VERSION = 1.5.0;
PRODUCT_BUNDLE_IDENTIFIER = io.TapTalk.TapTalk;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
......@@ -2167,7 +2167,7 @@
buildSettings = {
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
CURRENT_PROJECT_VERSION = 8;
DEBUG_INFORMATION_FORMAT = dwarf;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = PA443D57Z2;
......@@ -2190,7 +2190,7 @@
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MARKETING_VERSION = 1.4.2;
MARKETING_VERSION = 1.5.0;
PRODUCT_BUNDLE_IDENTIFIER = io.TapTalk.TapTalk;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
......
//
// TAPCustomLabelView.h
// TapTalk
//
// Created by TapTalk.io on 17/02/22.
//
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSInteger,TAPCustomLabelViewType) {
TAPCustomLabelViewTypeAccountDetailField = 0,
};
@interface TAPCustomLabelView : UIView
@property (strong, nonatomic) UILabel *infoDescriptionLabel;
- (void)showSeparatorView:(BOOL)isShowed;
- (void) setAccountDetailFieldString:(NSString *)title description:(NSString *)description;
- (void)setInfoDesciption:(NSString *)descp;
@end
//
// TAPCustomLabelView.m
// TapTalk
//
// Created by TapTalk.io on 17/02/22.
//
#import "TAPCustomLabelView.h"
@interface TAPCustomLabelView ()
@property (strong, nonatomic) UILabel *titleLabel;
@property (strong, nonatomic) UIView *separatorView;
@end
@implementation TAPCustomLabelView
#pragma mark - Lifecycle
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor whiteColor];
UIFont *titleLabelFont = [[TAPStyleManager sharedManager] getComponentFontForType:TAPComponentFontChatProfileTitleLabelStyle];
UIColor *titleLabelColor = [[TAPStyleManager sharedManager] getTextColorForType:TAPTextColorChatProfileDetailTitleLabel];
_titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(24.0f, 9.0f, CGRectGetWidth(self.frame) - 24.0f - 24.0f, 16.0f)];
self.titleLabel.font = titleLabelFont;
self.titleLabel.textColor = titleLabelColor;
[self addSubview:self.titleLabel];
UIFont *descriptionFont = [[TAPStyleManager sharedManager] getComponentFontForType:TAPComponentFontChatProfileMenuLabel];
UIColor *descriptionLabelColor = [[TAPStyleManager sharedManager] getTextColorForType:TAPTextColorChatProfileMenuLabel];
_infoDescriptionLabel = [[UILabel alloc] initWithFrame:CGRectMake(24.0f, CGRectGetMaxY(self.titleLabel.frame) + 4.0f, CGRectGetWidth(frame) - 24.0f - 24.0f, 24.0f)];
self.infoDescriptionLabel.font = descriptionFont;
self.infoDescriptionLabel.textColor = descriptionLabelColor;
self.infoDescriptionLabel.numberOfLines = 0;
[self addSubview:self.infoDescriptionLabel];
_separatorView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, CGRectGetHeight(frame) - 1.0f, CGRectGetWidth(frame), 1.0f)];
self.separatorView.backgroundColor = [TAPUtil getColor:TAP_COLOR_GREY_DC];
[self addSubview:self.separatorView];
}
return self;
}
#pragma mark - Custom Method
- (void)showSeparatorView:(BOOL)isShowed {
if (isShowed) {
self.separatorView.alpha = 1.0f;
self.separatorView.frame = CGRectMake(0.0f, CGRectGetHeight(self.frame) - 1.0f, CGRectGetWidth(self.frame), 1.0f);
}
else {
self.separatorView.alpha = 0.0f;
}
}
- (void)setInfoDesciption:(NSString *)descp{
self.infoDescriptionLabel.text = descp;
[self.infoDescriptionLabel sizeToFit];
self.frame = CGRectMake(0.0f, 24.0f, CGRectGetWidth(self.frame), 62.0f - 24.0f + CGRectGetHeight(self.infoDescriptionLabel.frame) + 6.0f);
}
- (void)setAccountDetailFieldString:(NSString *)title description:(NSString *)description{
self.titleLabel.text = title;
self.infoDescriptionLabel.text = description;
}
@end
......@@ -507,6 +507,7 @@
else {
self.textField.textColor = textFieldPlaceholderColor;
self.textField.userInteractionEnabled = NO;
self.containerView.backgroundColor = [[TAPUtil getColor:TAP_COLOR_TEXT_DARK] colorWithAlphaComponent:0.1f];
}
}
......
......@@ -51,6 +51,10 @@ typedef NS_ENUM(NSInteger, TAPAPIManagerType) {
TAPAPIManagerTypeLeaveRoom,
TAPAPIManagerTypeDeleteRoom,
TAPAPIManagerTypeGetProjectConfigs,
TAPAPIManagerTypeUpdateBio,
TAPAPIManagerTypeGetPhotoList,
TAPAPIManagerTypeSetProfilePhotoAsMain,
TAPAPIManagerTypeRemoveProfilePhoto,
};
@interface TAPAPIManager : NSObject
......
......@@ -210,6 +210,22 @@ static NSString * const kAPIVersionString = @"v1";
NSString *apiPath = @"client/project_configs";
return [NSString stringWithFormat:@"%@/%@/%@", self.APIBaseURL, kAPIVersionString, apiPath];
}
else if (type == TAPAPIManagerTypeUpdateBio) {
NSString *apiPath = @"client/user/update_bio";
return [NSString stringWithFormat:@"%@/%@/%@", self.APIBaseURL, kAPIVersionString, apiPath];
}
else if (type == TAPAPIManagerTypeGetPhotoList) {
NSString *apiPath = @"client/user/photo/get_list";
return [NSString stringWithFormat:@"%@/%@/%@", self.APIBaseURL, kAPIVersionString, apiPath];
}
else if (type == TAPAPIManagerTypeSetProfilePhotoAsMain) {
NSString *apiPath = @"client/user/photo/set_main";
return [NSString stringWithFormat:@"%@/%@/%@", self.APIBaseURL, kAPIVersionString, apiPath];
}
else if (type == TAPAPIManagerTypeRemoveProfilePhoto) {
NSString *apiPath = @"client/user/photo/delete";
return [NSString stringWithFormat:@"%@/%@/%@", self.APIBaseURL, kAPIVersionString, apiPath];
}
return [NSString stringWithFormat:@"%@", self.APIBaseURL];
}
......
......@@ -80,6 +80,7 @@ NS_ASSUME_NONNULL_BEGIN
roomID:(NSString *)roomID
success:(void (^)(TAPRoomModel *room))success
failure:(void (^)(NSError *error))failure;
- (void)sendStartTypingEmitWithRoomID:(NSString *)roomID;
- (void)sendStopTypingEmitWithRoomID:(NSString *)roomID;
......
......@@ -113,13 +113,24 @@
[[TAPGroupManager sharedManager] setRoomWithRoomID:room.roomID room:room];
success(room);
} failure:^(NSError *error) {
TAPRoomModel *obtainedRoom = [[TAPGroupManager sharedManager] getRoomWithRoomID:groupRoomID];
if (obtainedRoom == nil) {
success(obtainedRoom);
if (error.code == 40301) {
// Permission denied
failure(error);
}
if (error.code == 40401) {
// Room not found
[[TAPGroupManager sharedManager] removeRoomWithRoomID:groupRoomID];
failure(error);
}
else {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failure(localizedError);
TAPRoomModel *obtainedRoom = [[TAPGroupManager sharedManager] getRoomWithRoomID:groupRoomID];
if (obtainedRoom != nil) {
success(obtainedRoom);
}
else {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failure(localizedError);
}
}
}];
}
......
......@@ -35,6 +35,9 @@ NS_ASSUME_NONNULL_BEGIN
- (void)searchLocalContactsByName:(NSString *)keyword
success:(void (^)(NSArray <TAPUserModel *>*userArray))success
failure:(void (^)(NSError *error))failure;
- (void)updateActiveUserBio:(NSString *)bio
success:(void (^)())success
failure:(void (^)(NSError *error))failure;
@end
NS_ASSUME_NONNULL_END
......@@ -144,4 +144,16 @@
}];
}
- (void)updateActiveUserBio:(NSString *)bio
success:(void (^)())success
failure:(void (^)(NSError *error))failure {
[TAPDataManager callAPIUpdateBio:bio success:^(TAPUserModel *user) {
success(user);
} failure:^(NSError *error) {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failure(localizedError);
}];
}
@end
......@@ -241,6 +241,14 @@ NS_ASSUME_NONNULL_BEGIN
- (void)getNewerMessagesWithRoomID:(NSString *)roomID
success:(void (^)(NSArray <TAPMessageModel *> *messageArray))success
failure:(void (^)(NSError *error))failure;
- (void)getAllOlderMessagesBeforeTimestamp:(NSNumber *)timestamp
roomID:(NSString *)roomID
olderMessageArray:(NSMutableArray<TAPMessageModel *> *)olderMessages
success:(void (^)(NSArray <TAPMessageModel *> *messageArray))success
failure:(void (^)(NSError *error))failure;
- (void)getMessagesFromServerWithRoomID:(NSString *)roomID
success:(void (^)(NSArray <TAPMessageModel *> *messageArray))success
failure:(void (^)(NSError *error))failure;
- (void)getAllMessagesWithRoomID:(NSString *)roomID
successLocalMessages:(void (^)(NSArray <TAPMessageModel *> *messageArray))successLocalMessages
successAllMessages:(void (^)(NSArray <TAPMessageModel *> *allMessagesArray,
......
......@@ -10,6 +10,8 @@
@interface TAPCoreMessageManager () <TAPChatManagerDelegate>
#define ITEM_LOAD_LIMIT 500
@property (strong, nonatomic) NSMutableDictionary *blockDictionary;
@property (strong, nonatomic) NSMutableArray<TAPMessageModel *> *pendingCallbackNewMessages;
@property (strong, nonatomic) NSMutableArray<TAPMessageModel *> *pendingCallbackUpdatedMessages;
......@@ -1080,6 +1082,64 @@
}];
}
- (void)getAllOlderMessagesBeforeTimestamp:(NSNumber *)timestamp
roomID:(NSString *)roomID
olderMessageArray:(NSMutableArray<TAPMessageModel *> *)olderMessages
success:(void (^)(NSArray <TAPMessageModel *> *messageArray))success
failure:(void (^)(NSError *error))failure {
[TAPDataManager callAPIGetMessageBeforeWithRoomID:roomID
maxCreated:timestamp
numberOfItems:[NSNumber numberWithInt:ITEM_LOAD_LIMIT]
success:^(NSArray *messageArray, BOOL hasMore) {
[olderMessages addObjectsFromArray:messageArray];
if (hasMore) {
// Fetch more older messages
TAPMessageModel *oldestMessage = [messageArray objectAtIndex:[messageArray count] - 1];
[self getAllOlderMessagesBeforeTimestamp:oldestMessage.created
roomID:roomID
olderMessageArray:olderMessages
success:success
failure:failure];
}
else {
// Return all older messages
success(olderMessages);
}
} failure:^(NSError *error) {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failure(localizedError);
}];
}
- (void)getMessagesFromServerWithRoomID:(NSString *)roomID
success:(void (^)(NSArray <TAPMessageModel *> *messageArray))success
failure:(void (^)(NSError *error))failure {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[TAPDataManager getDatabaseOldestCreatedTimeFromRoom:roomID success:^(NSNumber *createdTime) {
[self getAllOlderMessagesBeforeTimestamp:createdTime
roomID:roomID
olderMessageArray:[NSMutableArray array]
success:^(NSArray<TAPMessageModel *> *messageArray) {
dispatch_async(dispatch_get_main_queue(), ^(void) {
success(messageArray);
});
}
failure:^(NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^(void) {
failure(error);
});
}];
}
failure:^(NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^(void) {
failure(error);
});
}];
});
}
- (void)getAllMessagesWithRoomID:(NSString *)roomID
successLocalMessages:(void (^)(NSArray <TAPMessageModel *> *messageArray))successLocalMessages
successAllMessages:(void (^)(NSArray <TAPMessageModel *> *allMessagesArray,
......@@ -1092,47 +1152,30 @@
NSMutableArray<TAPMessageModel *> *olderMessages = [NSMutableArray array];
NSMutableArray<TAPMessageModel *> *newerMessages = [NSMutableArray array];
// Get messages from database
[self getLocalMessagesWithRoomID:roomID success:^(NSArray<TAPMessageModel *> *messageArray) {
successLocalMessages(messageArray);
[allMessages addObjectsFromArray:messageArray];
for (TAPMessageModel *message in messageArray) {
[messageDictionary setObject:message forKey:message.localID];
}
long lastTimestamp;
if ([allMessages count] > 0) {
lastTimestamp = [allMessages objectAtIndex:[allMessages count] - 1].created;
}
else {
lastTimestamp = [[NSDate date] timeIntervalSince1970];
}
// Fetch older messages from API
[self getAllOlderMessagesBeforeTimestamp:[NSNumber numberWithLong:lastTimestamp]
roomID:roomID
olderMessageArray:[NSMutableArray array]
success:^(NSArray<TAPMessageModel *> * _Nonnull messageArray) {
NSMutableArray<TAPMessageModel *> *filteredMessages = [NSMutableArray array];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Get messages from database
[self getLocalMessagesWithRoomID:roomID success:^(NSArray<TAPMessageModel *> *messageArray) {
dispatch_async(dispatch_get_main_queue(), ^(void) {
successLocalMessages(messageArray);
});
[allMessages addObjectsFromArray:messageArray];
for (TAPMessageModel *message in messageArray) {
if ([messageDictionary objectForKey:message.localID] == nil) {
[filteredMessages addObject:message];
}
[messageDictionary setObject:message forKey:message.localID];
}
[allMessages addObjectsFromArray:filteredMessages];
[olderMessages addObjectsFromArray:filteredMessages];
// Fetch newer messages from API
long lastUpdateTimestamp = [TAPDataManager getMessageLastUpdatedWithRoomID:roomID];
long minCreatedTimestamp = 0L;
long lastTimestamp;
if ([allMessages count] > 0) {
minCreatedTimestamp = [allMessages objectAtIndex:0].created;
lastTimestamp = [allMessages objectAtIndex:[allMessages count] - 1].created;
}
[self getNewerMessagesAfterTimestamp:[NSNumber numberWithLong:minCreatedTimestamp]
lastUpdatedTimestamp:[NSNumber numberWithLong:lastUpdateTimestamp]
roomID:roomID
else {
lastTimestamp = [[NSDate date] timeIntervalSince1970];
}
// Fetch older messages from API
[self getAllOlderMessagesBeforeTimestamp:[NSNumber numberWithLong:lastTimestamp]
roomID:roomID
olderMessageArray:[NSMutableArray array]
success:^(NSArray<TAPMessageModel *> * _Nonnull messageArray) {
NSMutableArray<TAPMessageModel *> *filteredMessages = [NSMutableArray array];
for (TAPMessageModel *message in messageArray) {
......@@ -1142,72 +1185,74 @@
[messageDictionary setObject:message forKey:message.localID];
}
[allMessages addObjectsFromArray:filteredMessages];
[newerMessages addObjectsFromArray:filteredMessages];
[olderMessages addObjectsFromArray:filteredMessages];
[self getLocalMessagesWithRoomID:roomID success:^(NSArray<TAPMessageModel *> * _Nonnull messageArray) {
successAllMessages(messageArray, olderMessages, newerMessages);
} failure:^(NSError * _Nonnull error) {
// Sort message array
NSMutableArray *currentMessageArray = [NSMutableArray arrayWithArray:allMessages];
NSMutableArray *sortedArray;
// Fetch newer messages from API
long lastUpdateTimestamp = [TAPDataManager getMessageLastUpdatedWithRoomID:roomID];
long minCreatedTimestamp = 0L;
if ([allMessages count] > 0) {
minCreatedTimestamp = [allMessages objectAtIndex:0].created;
}
[self getNewerMessagesAfterTimestamp:[NSNumber numberWithLong:minCreatedTimestamp]
lastUpdatedTimestamp:[NSNumber numberWithLong:lastUpdateTimestamp]
roomID:roomID
success:^(NSArray<TAPMessageModel *> * _Nonnull messageArray) {
NSMutableArray<TAPMessageModel *> *filteredMessages = [NSMutableArray array];
for (TAPMessageModel *message in messageArray) {
if ([messageDictionary objectForKey:message.localID] == nil) {
[filteredMessages addObject:message];
}
[messageDictionary setObject:message forKey:message.localID];
}
[allMessages addObjectsFromArray:filteredMessages];
[newerMessages addObjectsFromArray:filteredMessages];
sortedArray = [currentMessageArray sortedArrayUsingComparator:^NSComparisonResult(id message1, id message2) {
TAPMessageModel *messageModel1 = (TAPMessageModel *)message1;
TAPMessageModel *messageModel2 = (TAPMessageModel *)message2;
NSNumber *message1CreatedDate = messageModel1.created;
NSNumber *message2CreatedDate = messageModel2.created;
return [message2CreatedDate compare:message1CreatedDate];
}];
successAllMessages(allMessages, olderMessages, newerMessages);
successAllMessages(sortedArray, olderMessages, newerMessages);
// [self getLocalMessagesWithRoomID:roomID success:^(NSArray<TAPMessageModel *> * _Nonnull messageArray) {
// dispatch_async(dispatch_get_main_queue(), ^(void) {
// successAllMessages(messageArray, olderMessages, newerMessages);
// });
// } failure:^(NSError * _Nonnull error) {
// // Sort message array
// NSMutableArray *currentMessageArray = [NSMutableArray arrayWithArray:allMessages];
// NSMutableArray *sortedArray;
//
// sortedArray = [currentMessageArray sortedArrayUsingComparator:^NSComparisonResult(id message1, id message2) {
// TAPMessageModel *messageModel1 = (TAPMessageModel *)message1;
// TAPMessageModel *messageModel2 = (TAPMessageModel *)message2;
//
// NSNumber *message1CreatedDate = messageModel1.created;
// NSNumber *message2CreatedDate = messageModel2.created;
//
// return [message2CreatedDate compare:message1CreatedDate];
// }];
//
// dispatch_async(dispatch_get_main_queue(), ^(void) {
// successAllMessages(sortedArray, olderMessages, newerMessages);
// });
// }];
} failure:^(NSError * _Nonnull error) {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
dispatch_async(dispatch_get_main_queue(), ^(void) {
failure(localizedError);
});
}];
} failure:^(NSError * _Nonnull error) {
}
failure:^(NSError * _Nonnull error) {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failure(localizedError);
dispatch_async(dispatch_get_main_queue(), ^(void) {
failure(localizedError);
});
}];
}
failure:^(NSError * _Nonnull error) {
failure:^(NSError *error) {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failure(localizedError);
dispatch_async(dispatch_get_main_queue(), ^(void) {
failure(localizedError);
});
}];
}
failure:^(NSError *error) {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failure(localizedError);
}];
}
- (void)getAllOlderMessagesBeforeTimestamp:(NSNumber *)timestamp
roomID:(NSString *)roomID
olderMessageArray:(NSMutableArray<TAPMessageModel *> *)olderMessages
success:(void (^)(NSArray <TAPMessageModel *> *messageArray))success
failure:(void (^)(NSError *error))failure {
[TAPDataManager callAPIGetMessageBeforeWithRoomID:roomID
maxCreated:timestamp
numberOfItems:[NSNumber numberWithInt:TAP_NUMBER_OF_ITEMS_API_MESSAGE_BEFORE]
success:^(NSArray *messageArray, BOOL hasMore) {
[olderMessages addObjectsFromArray:messageArray];
if (hasMore) {
// Fetch more older messages
TAPMessageModel *oldestMessage = [messageArray objectAtIndex:[messageArray count] - 1];
[self getAllOlderMessagesBeforeTimestamp:oldestMessage.created
roomID:roomID
olderMessageArray:olderMessages
success:success
failure:failure];
}
else {
// Return all older messages
success(olderMessages);
}
} failure:^(NSError *error) {
NSError *localizedError = [[TAPCoreErrorManager sharedManager] generateLocalizedError:error];
failure(localizedError);
}];
});
}
- (void)getUnreadMessagesFromRoom:(NSString *)roomID
......@@ -1284,7 +1329,7 @@
[self.delegate tapTalkDidReceiveNewMessages:self.pendingCallbackNewMessages];
}
}
if ([self.pendingCallbackNewMessages count] == 1) {
else if ([self.pendingCallbackNewMessages count] == 1) {
if ([self.delegate respondsToSelector:@selector(tapTalkDidReceiveNewMessage:)]) {
[self.delegate tapTalkDidReceiveNewMessage:[self.pendingCallbackNewMessages firstObject]];
}
......@@ -1306,7 +1351,7 @@
[self.delegate tapTalkDidReceiveUpdatedMessages:self.pendingCallbackUpdatedMessages];
}
}
if ([self.pendingCallbackUpdatedMessages count] == 1) {
else if ([self.pendingCallbackUpdatedMessages count] == 1) {
if ([self.delegate respondsToSelector:@selector(tapTalkDidReceiveUpdatedMessage:)]) {
[self.delegate tapTalkDidReceiveUpdatedMessage:[self.pendingCallbackUpdatedMessages firstObject]];
}
......@@ -1329,7 +1374,7 @@
[self.delegate tapTalkDidDeleteMessages:self.pendingCallbackDeletedMessages];
}
}
if ([self.pendingCallbackDeletedMessages count] == 1) {
else if ([self.pendingCallbackDeletedMessages count] == 1) {
if ([self.delegate respondsToSelector:@selector(tapTalkDidDeleteMessage:)]) {
[self.delegate tapTalkDidDeleteMessage:[self.pendingCallbackDeletedMessages firstObject]];
}
......
......@@ -12,6 +12,7 @@
#import "TAPCountryModel.h"
#import "TAPProjectConfigsModel.h"
#import "TAPCoreConfigsModel.h"
#import "TAPPhotoListModel.h"
@import AFNetworking;
......@@ -119,6 +120,9 @@
+ (void)getDatabaseUnreadRoomCountWithActiveUserID:(NSString *)activeUserID
success:(void (^)(NSInteger unreadRoomCount))success
failure:(void (^)(NSError *error))failure;
+ (void)getDatabaseOldestCreatedTimeFromRoom:(NSString *)roomID
success:(void (^)(NSNumber *createdTime))success
failure:(void (^)(NSError *error))failure;
+ (void)getDatabaseContactSearchKeyword:(NSString *)keyword
sortBy:(NSString *)columnName
success:(void (^)(NSArray *resultArray))success
......@@ -337,7 +341,18 @@
failure:(void (^)(NSError *error))failure;
+ (void)callAPIGetProjectConfigsWithSuccess:(void (^)(NSDictionary *projectConfigsDictionary))success
failure:(void (^)(NSError *error))failure;
+ (void)callAPIUpdateBio:(NSString *)bioContent
success:(void (^)(TAPUserModel *user))success
failure:(void (^)(NSError *error))failure;
+ (void)callAPIGetPhotoList:(NSString *)userID success:(void (^)(NSMutableArray<TAPPhotoListModel *> * photoListArray))success
failure:(void (^)(NSError *error))failure;
+ (void)callAPISetProfilePhotoAsMain:(NSInteger)userID
success:(void (^)())success
failure:(void (^)(NSError *error))failure;
+ (void)callAPIRemovePhotoProfile:(NSInteger)userID createdTime:(long)createdTime
success:(void (^)())success
failure:(void (^)(NSError *error))failure;
// Used to prevent inserting message to deleted chat room
@property (strong, nonatomic) NSMutableArray<NSString *> *deletedRoomIDArray;
......
......@@ -2138,7 +2138,7 @@
+ (void)getDatabaseAllUnreadMessagesWithSuccess:(void (^)(NSArray *unreadMessages))success
failure:(void (^)(NSError *error))failure {
[TAPDatabaseManager loadDataFromTableName:kDatabaseTableMessage whereClauseQuery:@"isRead == 0 && isHidden == 0 && isDeleted == 0" sortByColumnName:@"created" isAscending:YES success:^(NSArray *resultArray) {
[TAPDatabaseManager loadDataFromTableName:kDatabaseTableMessage whereClauseQuery:@"isRead == 0" sortByColumnName:@"created" isAscending:YES success:^(NSArray *resultArray) {
resultArray = [TAPUtil nullToEmptyArray:resultArray];
NSMutableArray *obtainedArray = [NSMutableArray array];
......@@ -2159,7 +2159,7 @@
success:(void (^)(NSArray *))success
failure:(void (^)(NSError *))failure {
NSString *queryString = [NSString stringWithFormat:@"isRead == 0 && isHidden == 0 && isDeleted == 0 && roomID LIKE '%@' && !(userID LIKE '%@')", roomID, activeUserID];
NSString *queryString = [NSString stringWithFormat:@"isRead == 0 && roomID LIKE '%@' && !(userID LIKE '%@')", roomID, activeUserID];
[TAPDatabaseManager loadDataFromTableName:kDatabaseTableMessage whereClauseQuery:queryString sortByColumnName:@"created" isAscending:YES success:^(NSArray *resultArray) {
resultArray = [TAPUtil nullToEmptyArray:resultArray];
......@@ -2200,7 +2200,7 @@
NSString *subQueryMentionValidationString = [NSString stringWithFormat:@"(body LIKE '%@' || body LIKE '%@' || body LIKE '%@' || body LIKE '%@' || body LIKE '%@' || body LIKE '%@' || body LIKE '%@' || body LIKE '%@' || body LIKE '%@')", firstPredicateString, secondPredicateString, thirdPredicateString, fourthPredicateString, fifthPredicateString, sixthPredicateString, seventhPredicateString, eighthPredicateString, ninthPredicateString];
NSString *queryString = [NSString stringWithFormat:@"isRead == 0 && isHidden == 0 && isDeleted == 0 && roomID LIKE '%@' && !(userID LIKE '%@') && (type == %ld || type == %ld || type == %ld) && %@", roomID, activeUserID, TAPChatMessageTypeText, TAPChatMessageTypeImage, TAPChatMessageTypeVideo, subQueryMentionValidationString];
NSString *queryString = [NSString stringWithFormat:@"isRead == 0 && roomID LIKE '%@' && !(userID LIKE '%@') && (type == %ld || type == %ld || type == %ld) && %@", roomID, activeUserID, TAPChatMessageTypeText, TAPChatMessageTypeImage, TAPChatMessageTypeVideo, subQueryMentionValidationString];
[TAPDatabaseManager loadDataFromTableName:kDatabaseTableMessage whereClauseQuery:queryString sortByColumnName:@"created" isAscending:YES success:^(NSArray *resultArray) {
resultArray = [TAPUtil nullToEmptyArray:resultArray];
......@@ -2266,6 +2266,33 @@
}];
}
+ (void)getDatabaseOldestCreatedTimeFromRoom:(NSString *)roomID
success:(void (^)(NSNumber *createdTime))success
failure:(void (^)(NSError *error))failure {
[TAPDatabaseManager loadMessageWithRoomID:roomID
numberOfItems:1
ascending:YES
success:^(NSArray *resultArray) {
NSArray *messageArray = [TAPUtil nullToEmptyArray:resultArray];
if ([messageArray count] == 0) {
NSTimeInterval currentTimeInterval = [[NSDate date] timeIntervalSince1970];
NSNumber *currentTime = [NSNumber numberWithDouble: currentTimeInterval];
success(currentTime);
return;
}
else {
NSDictionary *databaseDictionary = [NSDictionary dictionaryWithDictionary:[messageArray firstObject]];
TAPMessageModel *messageModel = [TAPDataManager messageModelFromDictionary:databaseDictionary];
success(messageModel.created);
}
}
failure:^(NSError *error) {
failure(error);
}];
}
+ (void)searchChatAndContactWithString:(NSString *)searchString
SortBy:(NSString *)columnName
success:(void (^)(NSArray *roomArray, NSArray *unreadCountArray, NSDictionary *unreadMentionDictionary))success
......@@ -6274,4 +6301,306 @@
}];
}
+ (void)callAPIUpdateBio:(NSString *)bioContent
success:(void (^)(TAPUserModel *user))success
failure:(void (^)(NSError *error))failure {
NSString *requestURL = [[TAPAPIManager sharedManager] urlForType:TAPAPIManagerTypeUpdateBio];
NSMutableDictionary *parameterDictionary = [NSMutableDictionary dictionary];
[parameterDictionary setObject:bioContent forKey:@"bio"];
[[TAPNetworkManager sharedManager] post:requestURL parameters:parameterDictionary progress:^(NSProgress *uploadProgress) {
} success:^(NSURLSessionDataTask *dataTask, NSDictionary *responseObject) {
if (![self isResponseSuccess:responseObject]) {
NSDictionary *errorDictionary = [responseObject objectForKey:@"error"];
NSString *errorMessage = [errorDictionary objectForKey:@"message"];
errorMessage = [TAPUtil nullToEmptyString:errorMessage];
NSString *errorStatusCodeString = [responseObject objectForKey:@"status"];
errorStatusCodeString = [TAPUtil nullToEmptyString:errorStatusCodeString];
NSInteger errorStatusCode = [errorStatusCodeString integerValue];
if (errorStatusCode == 401) {
//Call refresh token
[[TAPDataManager sharedManager] callAPIRefreshAccessTokenSuccess:^{
[TAPDataManager callAPIUpdateBio:bioContent success:success failure:failure];
} failure:^(NSError *error) {
failure(error);
}];
return;
}
NSInteger errorCode = [[responseObject valueForKeyPath:@"error.code"] integerValue];
if (errorMessage == nil || [errorMessage isEqualToString:@""]) {
errorCode = 999;
}
NSError *error = [NSError errorWithDomain:errorMessage code:errorCode userInfo:@{@"message": errorMessage}];
failure(error);
return;
}
if ([self isDataEmpty:responseObject]) {
TAPUserModel *user = [TAPUserModel new];
success(user);
return;
}
NSDictionary *dataDictionary = [responseObject objectForKey:@"data"];
NSDictionary *userDictionary = [dataDictionary objectForKey:@"user"];
userDictionary = [TAPUtil nullToEmptyDictionary:userDictionary];
TAPUserModel *user = [[TAPUserModel alloc] initWithDictionary:userDictionary error:nil];
[TAPDataManager setActiveUser:user];
success(user);
} failure:^(NSURLSessionDataTask *dataTask, NSError *error) {
[TAPDataManager logErrorStringFromError:error];
#ifdef DEBUG
NSString *errorDomain = error.domain;
NSString *newDomain = [NSString stringWithFormat:@"%@ ~ %@", requestURL, errorDomain];
NSError *newError = [NSError errorWithDomain:newDomain code:error.code userInfo:error.userInfo];
failure(newError);
#else
NSError *localizedError = [NSError errorWithDomain:NSLocalizedStringFromTableInBundle(@"We are experiencing problem to connect to our server, please try again later...", nil, [TAPUtil currentBundle], @"") code:999 userInfo:@{@"message": NSLocalizedStringFromTableInBundle(@"Failed to connect to our server, please try again later...", nil, [TAPUtil currentBundle], @"")}];
failure(localizedError);
#endif
}];
}
+ (void)callAPIGetPhotoList:(NSString *)userID success:(void (^)(NSMutableArray<TAPPhotoListModel *> * photoListArray))success
failure:(void (^)(NSError *error))failure {
NSString *requestURL = [[TAPAPIManager sharedManager] urlForType:TAPAPIManagerTypeGetPhotoList];
NSMutableDictionary *parameterDictionary = [NSMutableDictionary dictionary];
[parameterDictionary setObject:userID forKey:@"userID"];
[[TAPNetworkManager sharedManager] post:requestURL parameters:parameterDictionary progress:^(NSProgress *uploadProgress) {
} success:^(NSURLSessionDataTask *dataTask, NSDictionary *responseObject) {
if (![self isResponseSuccess:responseObject]) {
NSDictionary *errorDictionary = [responseObject objectForKey:@"error"];
NSString *errorMessage = [errorDictionary objectForKey:@"message"];
errorMessage = [TAPUtil nullToEmptyString:errorMessage];
NSString *errorStatusCodeString = [responseObject objectForKey:@"status"];
errorStatusCodeString = [TAPUtil nullToEmptyString:errorStatusCodeString];
NSInteger errorStatusCode = [errorStatusCodeString integerValue];
/**
if (errorStatusCode == 401) {
//Call refresh token
[[TAPDataManager sharedManager] callAPIRefreshAccessTokenSuccess:^{
[TAPDataManager callAPIGetPh:success failure:failure];
} failure:^(NSError *error) {
failure(error);
}];
return;
}
*/
NSInteger errorCode = [[responseObject valueForKeyPath:@"error.code"] integerValue];
if (errorMessage == nil || [errorMessage isEqualToString:@""]) {
errorCode = 999;
}
NSError *error = [NSError errorWithDomain:errorMessage code:errorCode userInfo:@{@"message": errorMessage}];
failure(error);
return;
}
if ([self isDataEmpty:responseObject]) {
success([NSArray array]);
return;
}
NSDictionary *dataDictionary = [responseObject objectForKey:@"data"];
NSArray *photoArray = [dataDictionary objectForKey:@"photos"];
photoArray = [TAPUtil nullToEmptyArray:photoArray];
for(NSString *key in [dataDictionary allKeys]) {
//NSLog(@"==== %@",[dataDictionary objectForKey:key]);
}
NSMutableArray<TAPPhotoListModel *> *photoResultArray = [NSMutableArray array];
for (NSDictionary *photoDictionary in photoArray) {
//NSDictionary *obtainedUserDictionary = [userDictionary objectForKey:@"user"];
//obtainedUserDictionary = [TAPUtil nullToEmptyDictionary:obtainedUserDictionary];
TAPPhotoListModel *photo = [TAPPhotoListModel new];
NSString *userID = [photoDictionary objectForKey:@"id"];
userID = [TAPUtil nullToEmptyString:userID];
photo.userID = userID;
NSString *thumbnailImageURL = [photoDictionary objectForKey:@"thumbnailImageURL"];
thumbnailImageURL = [TAPUtil nullToEmptyString:thumbnailImageURL];
photo.thumbnailImageURL = thumbnailImageURL;
NSString *fullsizeImageURL = [photoDictionary objectForKey:@"fullsizeImageURL"];
fullsizeImageURL = [TAPUtil nullToEmptyString:fullsizeImageURL];
photo.fullsizeImageURL = fullsizeImageURL;
NSString *createdTime = [photoDictionary objectForKey:@"createdTime"];
createdTime = [TAPUtil nullToEmptyString:createdTime];
photo.createdTime = createdTime;
[photoResultArray addObject:photo];
}
success(photoResultArray);
/**
//Insert To Database
[TAPDataManager updateOrInsertDatabaseContactWithData:photoResultArray success:^{
success(photoResultArray);
} failure:^(NSError *error) {
}];
*/
} failure:^(NSURLSessionDataTask *dataTask, NSError *error) {
[TAPDataManager logErrorStringFromError:error];
#ifdef DEBUG
NSString *errorDomain = error.domain;
NSString *newDomain = [NSString stringWithFormat:@"%@ ~ %@", requestURL, errorDomain];
NSError *newError = [NSError errorWithDomain:newDomain code:error.code userInfo:error.userInfo];
failure(newError);
#else
NSError *localizedError = [NSError errorWithDomain:NSLocalizedStringFromTableInBundle(@"We are experiencing problem to connect to our server, please try again later...", nil, [TAPUtil currentBundle], @"") code:999 userInfo:@{@"message": NSLocalizedStringFromTableInBundle(@"Failed to connect to our server, please try again later...", nil, [TAPUtil currentBundle], @"")}];
failure(localizedError);
#endif
}];
}
+ (void)callAPISetProfilePhotoAsMain:(NSInteger)userID
success:(void (^)())success
failure:(void (^)(NSError *error))failure {
NSString *requestURL = [[TAPAPIManager sharedManager] urlForType:TAPAPIManagerTypeSetProfilePhotoAsMain];
NSMutableDictionary *parameterDictionary = [NSMutableDictionary dictionary];
[parameterDictionary setObject:@(userID) forKey:@"id"];
[[TAPNetworkManager sharedManager] post:requestURL parameters:parameterDictionary progress:^(NSProgress *uploadProgress) {
} success:^(NSURLSessionDataTask *dataTask, NSDictionary *responseObject) {
if (![self isResponseSuccess:responseObject]) {
NSDictionary *errorDictionary = [responseObject objectForKey:@"error"];
NSString *errorMessage = [errorDictionary objectForKey:@"message"];
errorMessage = [TAPUtil nullToEmptyString:errorMessage];
NSString *errorStatusCodeString = [responseObject objectForKey:@"status"];
errorStatusCodeString = [TAPUtil nullToEmptyString:errorStatusCodeString];
NSInteger errorStatusCode = [errorStatusCodeString integerValue];
if (errorStatusCode == 401) {
//Call refresh token
[[TAPDataManager sharedManager] callAPIRefreshAccessTokenSuccess:^{
[TAPDataManager callAPISetProfilePhotoAsMain:@(userID) success:success failure:failure];
} failure:^(NSError *error) {
failure(error);
}];
return;
}
NSInteger errorCode = [[responseObject valueForKeyPath:@"error.code"] integerValue];
if (errorMessage == nil || [errorMessage isEqualToString:@""]) {
errorCode = 999;
}
NSError *error = [NSError errorWithDomain:errorMessage code:errorCode userInfo:@{@"message": errorMessage}];
failure(error);
return;
}
success();
} failure:^(NSURLSessionDataTask *dataTask, NSError *error) {
[TAPDataManager logErrorStringFromError:error];
#ifdef DEBUG
NSString *errorDomain = error.domain;
NSString *newDomain = [NSString stringWithFormat:@"%@ ~ %@", requestURL, errorDomain];
NSError *newError = [NSError errorWithDomain:newDomain code:error.code userInfo:error.userInfo];
failure(newError);
#else
NSError *localizedError = [NSError errorWithDomain:NSLocalizedStringFromTableInBundle(@"We are experiencing problem to connect to our server, please try again later...", nil, [TAPUtil currentBundle], @"") code:999 userInfo:@{@"message": NSLocalizedStringFromTableInBundle(@"Failed to connect to our server, please try again later...", nil, [TAPUtil currentBundle], @"")}];
failure(localizedError);
#endif
}];
}
+ (void)callAPIRemovePhotoProfile:(NSInteger)userID createdTime:(long)createdTime
success:(void (^)())success
failure:(void (^)(NSError *error))failure {
NSString *requestURL = [[TAPAPIManager sharedManager] urlForType:TAPAPIManagerTypeRemoveProfilePhoto];
NSMutableDictionary *parameterDictionary = [NSMutableDictionary dictionary];
[parameterDictionary setObject:@(userID) forKey:@"id"];
[parameterDictionary setObject:@(createdTime) forKey:@"createdTime"];
[[TAPNetworkManager sharedManager] post:requestURL parameters:parameterDictionary progress:^(NSProgress *uploadProgress) {
} success:^(NSURLSessionDataTask *dataTask, NSDictionary *responseObject) {
if (![self isResponseSuccess:responseObject]) {
NSDictionary *errorDictionary = [responseObject objectForKey:@"error"];
NSString *errorMessage = [errorDictionary objectForKey:@"message"];
errorMessage = [TAPUtil nullToEmptyString:errorMessage];
NSString *errorStatusCodeString = [responseObject objectForKey:@"status"];
errorStatusCodeString = [TAPUtil nullToEmptyString:errorStatusCodeString];
NSInteger errorStatusCode = [errorStatusCodeString integerValue];
if (errorStatusCode == 401) {
//Call refresh token
[[TAPDataManager sharedManager] callAPIRefreshAccessTokenSuccess:^{
[TAPDataManager callAPISetProfilePhotoAsMain:@(userID) success:success failure:failure];
} failure:^(NSError *error) {
failure(error);
}];
return;
}
NSInteger errorCode = [[responseObject valueForKeyPath:@"error.code"] integerValue];
if (errorMessage == nil || [errorMessage isEqualToString:@""]) {
errorCode = 999;
}
NSError *error = [NSError errorWithDomain:errorMessage code:errorCode userInfo:@{@"message": errorMessage}];
failure(error);
return;
}
success();
} failure:^(NSURLSessionDataTask *dataTask, NSError *error) {
[TAPDataManager logErrorStringFromError:error];
#ifdef DEBUG
NSString *errorDomain = error.domain;
NSString *newDomain = [NSString stringWithFormat:@"%@ ~ %@", requestURL, errorDomain];
NSError *newError = [NSError errorWithDomain:newDomain code:error.code userInfo:error.userInfo];
failure(newError);
#else
NSError *localizedError = [NSError errorWithDomain:NSLocalizedStringFromTableInBundle(@"We are experiencing problem to connect to our server, please try again later...", nil, [TAPUtil currentBundle], @"") code:999 userInfo:@{@"message": NSLocalizedStringFromTableInBundle(@"Failed to connect to our server, please try again later...", nil, [TAPUtil currentBundle], @"")}];
failure(localizedError);
#endif
}];
}
@end
......@@ -43,6 +43,11 @@
numberOfItems:(NSInteger)numberOfItems
success:(void (^)(NSArray *resultArray))success
failure:(void (^)(NSError *error))failure;
+ (void)loadMessageWithRoomID:(NSString *)roomID
numberOfItems:(NSInteger)numberOfItems
ascending:(BOOL)ascending
success:(void (^)(NSArray *resultArray))success
failure:(void (^)(NSError *error))failure;
+ (void)loadRoomListSuccess:(void (^)(NSArray *resultArray))success
failure:(void (^)(NSError *error))failure;
+ (void)insertDataToDatabaseWithData:(NSArray *)dataArray
......
......@@ -309,6 +309,26 @@
// });
}
+ (void)loadMessageWithRoomID:(NSString *)roomID
numberOfItems:(NSInteger)numberOfItems
ascending:(BOOL)ascending
success:(void (^)(NSArray *resultArray))success
failure:(void (^)(NSError *error))failure {
RLMRealm *realm = [[TAPDatabaseManager sharedManager] createRealm];
RLMResults *results = [TAPMessageRealmModel allObjectsInRealm:realm];
results = [results objectsWhere:[NSString stringWithFormat:@"roomID == '%@'", roomID]];
results = [results sortedResultsUsingKeyPath:@"created" ascending:ascending];
if ([results count] == 0) {
success([NSArray array]);
}
else {
NSArray *resultArray = [NSArray array];
resultArray = [[TAPDatabaseManager sharedManager] convertRealmResultIntoArray:results];
success(resultArray);
}
}
+ (void)loadRoomListSuccess:(void (^)(NSArray *resultArray))success
failure:(void (^)(NSError *error))failure {
......
......@@ -171,6 +171,8 @@ typedef NS_ENUM(NSInteger, TAPComponentColor) {
TAPComponentColorIconGroupMemberProfileMenuDemoteAdmin, //Chat / Group Profile Page
TAPComponentColorIconGroupMemberProfileMenuRemoveMember, //Chat / Group Profile Page
TAPComponentColorIconGroupMemberProfileMenuReportUserOrGroup, //Chat / Group Profile Page
TAPComponentColorIconGroupMemberProfileSearchChat, //Chat / Group Profile Page
TAPComponentColorIconGroupMemberProfileEditGroup, //Chat / Group Profile Page
TAPComponentColorIconMediaPreviewAdd, //Media / Image Detail Preview
TAPComponentColorIconMediaPreviewWarning, //Media / Image Detail Preview
TAPComponentColorIconMediaPreviewThumbnailWarning,//Media / Image Detail Preview
......@@ -263,6 +265,7 @@ typedef NS_ENUM(NSInteger, TAPTextColor) {
TAPTextColorNewChatMenuLabel,
TAPTextColorChatProfileRoomNameLabel,
TAPTextColorChatProfileMenuLabel,
TAPTextColorChatProfileDetailTitleLabel,
TAPTextColorChatProfileMenuDestructiveLabel,
TAPTextColorSearchNewContactResultName,
TAPTextColorSearchNewContactResultUsername,
......@@ -398,6 +401,7 @@ typedef NS_ENUM(NSInteger, TAPComponentFont) {
TAPComponentFontNewChatMenuLabel,
TAPComponentFontChatProfileRoomNameLabel,
TAPComponentFontChatProfileMenuLabel,
TAPComponentFontChatProfileTitleLabelStyle,
TAPComponentFontChatProfileMenuDestructiveLabel,
TAPComponentFontSearchNewContactResultName,
TAPComponentFontSearchNewContactResultUsername,
......
......@@ -527,6 +527,14 @@
return font;
break;
}
case TAPComponentFontChatProfileTitleLabelStyle:
{
UIFont *font = [[TAPStyleManager sharedManager] getDefaultFontForType:TAPDefaultFontBold];
font = [font fontWithSize:TAP_CHAT_PROFILE_DETAIL_TITLE_LABEL_FONTSIZE_STYLE];
return font;
break;
}
case TAPComponentFontChatProfileMenuDestructiveLabel:
{
......@@ -1552,6 +1560,11 @@
return color;
break;
}
case TAPTextColorChatProfileDetailTitleLabel: {
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorPrimary];
return color;
break;
}
case TAPTextColorChatProfileMenuDestructiveLabel: {
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorError];
return color;
......@@ -2891,25 +2904,25 @@
}
case TAPComponentColorIconChatProfileMenuNotificationInactive:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconGray];
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorPrimary];
return color;
break;
}
case TAPComponentColorIconChatProfileMenuConversationColor:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconGray];
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconPrimary];
return color;
break;
}
case TAPComponentColorIconChatProfileMenuBlockUser:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconGray];
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconPrimary];
return color;
break;
}
case TAPComponentColorIconChatProfileMenuSearchChat:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconGray];
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconPrimary];
return color;
break;
}
......@@ -2921,31 +2934,31 @@
}
case TAPComponentColorIconGroupProfileMenuViewMembers:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconGray];
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconPrimary];
return color;
break;
}
case TAPComponentColorIconGroupMemberProfileMenuAddToContacts:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconGray];
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconPrimary];
return color;
break;
}
case TAPComponentColorIconGroupMemberProfileMenuSendMessage:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconGray];
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconPrimary];
return color;
break;
}
case TAPComponentColorIconGroupMemberProfileMenuPromoteAdmin:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconGray];
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconPrimary];
return color;
break;
}
case TAPComponentColorIconGroupMemberProfileMenuDemoteAdmin:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconGray];
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconPrimary];
return color;
break;
}
......@@ -2961,6 +2974,18 @@
return color;
break;
}
case TAPComponentColorIconGroupMemberProfileSearchChat:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconPrimary];
return color;
break;
}
case TAPComponentColorIconGroupMemberProfileEditGroup:
{
UIColor *color = [[TAPStyleManager sharedManager] getDefaultColorForType:TAPDefaultColorIconPrimary];
return color;
break;
}
//Media / Image Detail Preview
case TAPComponentColorIconMediaPreviewAdd:
{
......
//
// TAPPhotoListModel.h
// TapTalk
//
// Created by TapTalk.io on 24/02/22.
//
#import <TapTalk/TapTalk.h>
NS_ASSUME_NONNULL_BEGIN
@interface TAPPhotoListModel : TAPBaseModel
@property (nonatomic, strong) NSString *userID;
@property (nonatomic, strong) NSString *thumbnailImageURL;
@property (nonatomic, strong) NSString *fullsizeImageURL;
@property (nonatomic, strong) NSString *createdTime;
@end
NS_ASSUME_NONNULL_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