// // TAPMessageModel.m // Moselo // // Created by Ritchie Nathaniel on 3/8/17. // Copyright © 2017 Moselo. All rights reserved. // #import "TAPMessageModel.h" @implementation TAPMessageModel #pragma mark - Lifecycle #pragma mark - Custom Method + (instancetype)createMessageWithUser:(TAPUserModel *)user created:(NSNumber *)created room:(TAPRoomModel *)room body:(NSString *)body type:(TAPChatMessageType)type messageData:(NSDictionary * _Nullable)messageData { TAPMessageModel *messageForReturn = [[TAPMessageModel alloc] init]; //DV Note - Set message ID to string 0 because server accepted as an integer, so empty string will cause a trouble in server messageForReturn.messageID = @"0"; messageForReturn.user = user; messageForReturn.room = room; messageForReturn.type = type; messageForReturn.body = body; messageForReturn.localID = [messageForReturn generateLocalIDwithLength:32]; messageForReturn.created = created; messageForReturn.isSending = YES; messageForReturn.isDeleted = NO; messageForReturn.isFailedSend = NO; messageForReturn.isRead = NO; messageForReturn.isDelivered = NO; messageForReturn.isHidden = NO; messageForReturn.data = messageData; //Obtain other user ID NSString *roomID = room.roomID; roomID = [TAPUtil nullToEmptyString:roomID]; TAPUserModel *currentUser = [TAPDataManager getActiveUser]; NSString *currentUserID = currentUser.userID; currentUserID = [TAPUtil nullToEmptyString:currentUserID]; if (room.type == RoomTypePersonal) { NSString *otherUserID = @""; NSArray *userIDArray = [roomID componentsSeparatedByString:@"-"]; for (NSString *userID in userIDArray) { if (![userID isEqualToString:currentUserID]) { otherUserID = userID; } } messageForReturn.recipientID = otherUserID; } else { //If group or channel set recipientID to 0 messageForReturn.recipientID = @"0"; } return messageForReturn; } + (instancetype)createMessageWithUser:(TAPUserModel *)user room:(TAPRoomModel *)room body:(NSString *)body type:(TAPChatMessageType)type messageData:(NSDictionary * _Nullable)messageData { NSDate *date = [NSDate date]; double createdDate = [date timeIntervalSince1970] * 1000.0f; NSNumber *createdDateNumber = [NSNumber numberWithLong:createdDate]; TAPMessageModel *messageForReturn = [[TAPMessageModel alloc] init]; messageForReturn = [self createMessageWithUser:user created:createdDateNumber room:room body:body type:type messageData:messageData]; return messageForReturn; } - (NSString *)generateLocalIDwithLength:(int)length { NSString* AB = @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"; NSMutableString *randomString = [NSMutableString stringWithCapacity: length]; for (int i=0; i