diff --git a/xplan-ios/Base/Tool/Date/PLTimeUtil.h b/xplan-ios/Base/Tool/Date/PLTimeUtil.h index 62b99609..c5f4878f 100644 --- a/xplan-ios/Base/Tool/Date/PLTimeUtil.h +++ b/xplan-ios/Base/Tool/Date/PLTimeUtil.h @@ -45,5 +45,8 @@ + (NSString *)getNowTimeTimestampMillisecond; +///比较两个时间的差值 ++ (NSDateComponents *)compareTwoDate:(NSDate *)firstDate secondDate:(NSDate *)secondDate; + @end diff --git a/xplan-ios/Base/Tool/Date/PLTimeUtil.m b/xplan-ios/Base/Tool/Date/PLTimeUtil.m index 78e8bd4c..41b9b2f4 100644 --- a/xplan-ios/Base/Tool/Date/PLTimeUtil.m +++ b/xplan-ios/Base/Tool/Date/PLTimeUtil.m @@ -229,6 +229,17 @@ } ++ (NSDateComponents *)compareTwoDate:(NSDate *)firstDate secondDate:(NSDate *)secondDate { + // 当前日历 + NSCalendar *calendar = [NSCalendar currentCalendar]; + // 需要对比的时间数据 + NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth + | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; + // 对比时间差 + NSDateComponents *dateCom = [calendar components:unit fromDate:firstDate toDate:secondDate options:0]; + return dateCom; +} + @end diff --git a/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageParser.m b/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageParser.m index ab724f42..7021eaf3 100644 --- a/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageParser.m +++ b/xplan-ios/Main/Room/View/MessageContainerView/Tool/XPRoomMessageParser.m @@ -16,6 +16,7 @@ #import "XPMacro.h" #import "XPGiftStorage.h" #import "XPRoomFaceTool.h" +#import "TTPopup.h" ///Model #import "XPMessageRemoteExtModel.h" #import "AttachmentModel.h" @@ -32,6 +33,7 @@ #import "NetImageView.h" #import "XPUserCardViewController.h" +#import "XPRoomTopicAlertView.h" @implementation XPRoomMessageParser @@ -125,7 +127,24 @@ /// 房间tips消息 /// @param message 消息的实体 - (NSAttributedString*)makeTipsAttribute:(NIMMessage *)message { + if ([message.localExt.allKeys containsObject:@"isRoomTopic"]) { + NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init]; + [attribute appendAttributedString: [self createTextAttribute:message.text color:[UIColor whiteColor] font:kRoomMessageDefalutFont]]; + if ([[message.localExt objectForKey:@"isRoomTopic"] boolValue] == YES) { + [attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + TTPopupService * config = [[TTPopupService alloc] init]; + XPRoomTopicAlertView * alertView = [[XPRoomTopicAlertView alloc] init]; + alertView.title = roomInfo.roomDesc; + alertView.message = roomInfo.introduction; + config.contentView = alertView; + [TTPopup popupWithConfig:config]; + }]; + } + return attribute; + } else { return [self createTextAttribute:message.text color:UIColorFromRGB(0xFE5D7F) font:kRoomMessageDefalutFont]; + } } /// 房间通知类消息 diff --git a/xplan-ios/Main/Room/View/MessageContainerView/XPRoomMessageContainerView.m b/xplan-ios/Main/Room/View/MessageContainerView/XPRoomMessageContainerView.m index 87dec5b2..ad3350c5 100644 --- a/xplan-ios/Main/Room/View/MessageContainerView/XPRoomMessageContainerView.m +++ b/xplan-ios/Main/Room/View/MessageContainerView/XPRoomMessageContainerView.m @@ -17,6 +17,7 @@ #import "XPRoomMessageParser.h" #import "AccountInfoStorage.h" #import "XPRoomMiniManager.h" +#import "PLTimeUtil.h" ///Model #import "RoomInfoModel.h" #import "AttachmentModel.h" @@ -26,6 +27,7 @@ #import "XPRoomMessageHeaderView.h" #import "View/XPRoomMessageHeaderView.h" +NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; @interface XPRoomMessageContainerView () ///房间的代理 @@ -261,6 +263,51 @@ [self addRoomMessage:message]; } +///用户进入房间显示 房间话题 +- (void)createUserEnterRoomAddRoomtopicMessage { + RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; + if (roomInfo.uid == [AccountInfoStorage instance].getUid.integerValue) {return;} + NSString * key = [NSString stringWithFormat:@"%@_%@_%ld", kRoomShowTopicKey, [AccountInfoStorage instance].getUid, roomInfo.uid]; + NSDate * oldDate = [[NSUserDefaults standardUserDefaults] valueForKey:key]; + NSDate * date = [NSDate date]; + if (roomInfo.roomDesc.length > 0) { + if (oldDate) { + NSDateComponents *compons = [PLTimeUtil compareTwoDate:date secondDate:[NSDate date]]; + if (ABS(compons.year) > 0 || ABS(compons.month) > 0 || ABS(compons.day) > 0) { + NIMMessage * message = [[NIMMessage alloc] init]; + NSString * content = [NSString stringWithFormat:@"[房间公告] \n %@", roomInfo.introduction]; + message.text = content; + message.localExt = @{@"isRoomTopic": @(NO)}; + [message setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; + [message setValue:[NIMSession session:[NSString stringWithFormat:@"%ld", roomInfo.roomId] type:NIMSessionTypeChatroom] forKey:@"session"]; + [self addRoomMessage:message]; + + [[NSUserDefaults standardUserDefaults] setValue:@(YES) forKey:key]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } + } else { + NIMMessage * message = [[NIMMessage alloc] init]; + NSString * content = [NSString stringWithFormat:@"[房间公告] \n %@", roomInfo.introduction]; + message.text = content; + message.localExt = @{@"isRoomTopic": @(NO)}; + [message setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; + [message setValue:[NIMSession session:[NSString stringWithFormat:@"%ld", roomInfo.roomId] type:NIMSessionTypeChatroom] forKey:@"session"]; + [self addRoomMessage:message]; + + [[NSUserDefaults standardUserDefaults] setValue:@(YES) forKey:key]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } + } + + + NIMMessage * message = [[NIMMessage alloc] init]; + message.text = @"可点击查看本房间公告"; + message.localExt = @{@"isRoomTopic": @(YES)}; + [message setValue:@(NIMMessageTypeTip) forKey:@"messageType"]; + [message setValue:[NIMSession session:[NSString stringWithFormat:@"%ld", roomInfo.roomId] type:NIMSessionTypeChatroom] forKey:@"session"]; + [self addRoomMessage:message]; +} + #pragma mark - RoomGuestDelegate - (void)handleNIMCustomMessage:(NIMMessage *)message { self.isMiniEnter = NO; @@ -301,6 +348,7 @@ [self addRoomMessage:message]; return; } else { + [self createUserEnterRoomAddRoomtopicMessage]; [self addRoomMessage:message]; NIMChatroomNotificationMember *member = content.targets[0]; if (member.userId.integerValue == [AccountInfoStorage instance].getUid.integerValue) { @@ -394,7 +442,9 @@ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSAttributedString* attr = [self.datasource objectAtIndex:indexPath.row]; CGSize maxSize = CGSizeMake(kRoomMessageMaxWidth, MAXFLOAT); - YYTextLayout *layout = [YYTextLayout layoutWithContainerSize:maxSize text:attr]; + YYTextContainer *container = [YYTextContainer containerWithSize:maxSize]; + container.maximumNumberOfRows = 0; + YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:attr]; return layout.textBoundingSize.height + kRoomMessageTextSpaceHeight * 2 + 10; } diff --git a/xplan-ios/Main/Room/View/Setting/View/XPRoomTopicViewController.m b/xplan-ios/Main/Room/View/Setting/View/XPRoomTopicViewController.m index f24e6c76..45321dfe 100644 --- a/xplan-ios/Main/Room/View/Setting/View/XPRoomTopicViewController.m +++ b/xplan-ios/Main/Room/View/Setting/View/XPRoomTopicViewController.m @@ -112,7 +112,7 @@ if (textView.text.length > 300) { textView.text = [textView.text substringToIndex:300]; } - self.contentLabel.text = [NSString stringWithFormat:@"%ld/300", (300 - textView.text.length)]; + self.contentLabel.text = [NSString stringWithFormat:@"%ld/300", textView.text.length]; } - (void)textViewDidBeginEditing:(UITextView *)textView { @@ -137,7 +137,7 @@ if (textField.text.length > 15) { textField.text = [textField.text substringToIndex:15]; } - self.titleNumberLabel.text = [NSString stringWithFormat:@"%ld/15", (15 - textField.text.length)]; + self.titleNumberLabel.text = [NSString stringWithFormat:@"%ld/15", textField.text.length]; }