Steven 1 년 전
부모
커밋
24c42f7d01

+ 0 - 2
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSConversationListController.h

@@ -11,8 +11,6 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface KSConversationListController : TUIConversationListController
 
-@property(nonatomic, strong) UIView *tableViewContainer;
-
 
 @end
 

+ 1 - 697
KulexiuForTeacher/KulexiuForTeacher/Module/Chat/Controller/KSConversationListController.m

@@ -6,709 +6,13 @@
 //
 
 #import "KSConversationListController.h"
-#import <TIMCommon/TIMDefine.h>
-#import <TUICore/TUICore.h>
-#import <TUICore/TUIThemeManager.h>
-#import "TUIConversationCell.h"
-#import "TUIConversationListDataProvider.h"
-#import "TUIFoldListViewController.h"
 
-#define GroupBtnSpace 24
-#define GroupScrollViewHeight 30
-
-@interface KSConversationListController ()<UIGestureRecognizerDelegate,
-UIPopoverPresentationControllerDelegate,
-TUIConversationTableViewDelegate,
-TUIPopViewDelegate,
-TUINotificationProtocol>
-@property(nonatomic, strong) TUINaviBarIndicatorView *titleView;
-@property(nonatomic, strong) TUIConversationListBaseDataProvider *settingDataProvider;
-@property(nonatomic, strong) UIView *bannerView;
-@property(nonatomic, assign) CGFloat viewHeight;
-
-@property(nonatomic, assign) BOOL actualShowConversationGroup;
-@property(nonatomic, strong) UIView *groupView;
-@property(nonatomic, strong) UIScrollView *groupScrollView;
-@property(nonatomic, strong) UIView *groupAnimationView;
-@property(nonatomic, strong) UIView *groupBtnContainer;
-@property(nonatomic, strong) NSMutableArray *groupItemList;
+@interface KSConversationListController ()
 
 @end
 
 @implementation KSConversationListController
 
-- (instancetype)init {
-    self = [super init];
-    if (self) {
-        self.isShowBanner = YES;
-        self.isShowConversationGroup = YES;
-        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onThemeChanged) name:TUIDidApplyingThemeChangedNotfication object:nil];
-    }
-    return self;
-}
-
-#pragma mark - NSNotification
-- (void)onThemeChanged {
-    self.groupAnimationView.layer.borderColor = [TUIConversationDynamicColor(@"conversation_group_bg_color", @"#EBECF0") CGColor];
-}
-
-#pragma mark - SettingDataProvider
-- (void)setDataProvider:(TUIConversationListBaseDataProvider *)dataProvider {
-    self.settingDataProvider = dataProvider;
-}
-
-- (TUIConversationListBaseDataProvider *)dataProvider {
-    return self.settingDataProvider;
-}
-
-#pragma mark - Life Cycle
-- (void)viewDidLoad {
-    [super viewDidLoad];
-    [self setupNavigation];
-    [self setupViews];
-    [TUICore registerEvent:TUICore_TUIConversationGroupNotify subKey:@"" object:self];
-    [TUICore registerEvent:TUICore_TUIConversationMarkNotify subKey:@"" object:self];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
-    [super viewWillAppear:animated];
-    [self.currentTableView reloadData];
-}
-
-- (void)dealloc {
-    [NSNotificationCenter.defaultCenter removeObserver:self];
-    [TUICore unRegisterEventByObject:self];
-}
-
-- (void)setupNavigation {
-    UIButton *moreButton = [UIButton buttonWithType:UIButtonTypeCustom];
-    [moreButton setImage:TIMCommonDynamicImage(@"nav_more_img", [UIImage imageNamed:TIMCommonImagePath(@"more")]) forState:UIControlStateNormal];
-    [moreButton addTarget:self action:@selector(rightBarButtonClick:) forControlEvents:UIControlEventTouchUpInside];
-    moreButton.imageView.contentMode = UIViewContentModeScaleAspectFit;
-    [moreButton.widthAnchor constraintEqualToConstant:24].active = YES;
-    [moreButton.heightAnchor constraintEqualToConstant:24].active = YES;
-    UIBarButtonItem *moreItem = [[UIBarButtonItem alloc] initWithCustomView:moreButton];
-    self.navigationController.navigationItem.rightBarButtonItem = moreItem;
-
-    self.navigationController.interactivePopGestureRecognizer.enabled = YES;
-    self.navigationController.interactivePopGestureRecognizer.delegate = self;
-}
-
-- (void)rightBarButtonClick:(UIButton *)rightBarButton {
-    NSMutableArray *menus = [NSMutableArray array];
-    TUIPopCellData *friend = [[TUIPopCellData alloc] init];
-
-    friend.image = TUIConversationDynamicImage(@"pop_icon_new_chat_img", [UIImage imageNamed:TUIConversationImagePath(@"new_chat")]);
-    friend.title = TIMCommonLocalizableString(ChatsNewChatText);
-    [menus addObject:friend];
-
-    TUIPopCellData *group = [[TUIPopCellData alloc] init];
-    group.image = TUIConversationDynamicImage(@"pop_icon_new_group_img", [UIImage imageNamed:TUIConversationImagePath(@"new_groupchat")]);
-    group.title = TIMCommonLocalizableString(ChatsNewGroupText);
-    [menus addObject:group];
-
-    CGFloat height = [TUIPopCell getHeight] * menus.count + TUIPopView_Arrow_Size.height;
-    CGFloat orginY = 0;
-    TUIPopView *popView = [[TUIPopView alloc] initWithFrame:CGRectMake(Screen_Width - 155, orginY, 145, height)];
-    CGRect frameInNaviView = [self.navigationController.view convertRect:rightBarButton.frame fromView:rightBarButton.superview];
-    popView.arrowPoint = CGPointMake(frameInNaviView.origin.x + frameInNaviView.size.width * 0.5, orginY);
-    popView.delegate = self;
-    [popView setData:menus];
-    [popView showInWindow:self.view.window];
-}
-
-- (void)setupViews {
-    self.view.backgroundColor = TUIConversationDynamicColor(@"conversation_bg_color", @"#FFFFFF");
-    self.viewHeight = self.view.mm_h;
-    if (self.isShowBanner) {
-        CGSize size = CGSizeMake(self.view.bounds.size.width, 60);
-        self.bannerView.mm_width(size.width).mm_height(60);
-        NSMutableDictionary *param = [NSMutableDictionary dictionary];
-        param[TUICore_TUIConversationExtension_ConversationListBanner_BannerSize] = NSStringFromCGSize(size);
-        param[TUICore_TUIConversationExtension_ConversationListBanner_ModalVC] = self;
-        BOOL result = [TUICore raiseExtension:TUICore_TUIConversationExtension_ConversationListBanner_ClassicExtensionID
-                                   parentView:self.bannerView
-                                        param:param];
-        if (!result) {
-            self.bannerView.mm_height(0);
-        }
-    }
-
-    [self.view addSubview:self.tableViewContainer];
-    [self.tableViewContainer addSubview:self.tableViewForAll];
-
-    if (self.isShowConversationGroup) {
-        // 延迟点时间加载,等待插件能力位异步加载完毕
-        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-          NSArray *extensionList = [TUICore getExtensionList:TUICore_TUIConversationExtension_ConversationGroupListBanner_ClassicExtensionID param:nil];
-          @weakify(self);
-          [[[RACObserve(self, actualShowConversationGroup) distinctUntilChanged] skip:0] subscribeNext:^(NSNumber *showConversationGroup) {
-            @strongify(self);
-            if ([showConversationGroup boolValue]) {
-                [self.tableViewContainer setFrame:CGRectMake(0, self.groupView.mm_maxY, self.view.mm_w, self.viewHeight - self.groupView.mm_maxY)];
-
-                self.groupItemList = [NSMutableArray array];
-                TUIConversationGroupItem *allGroupItem = [[TUIConversationGroupItem alloc] init];
-                allGroupItem.groupName = TIMCommonLocalizableString(TUIConversationGroupAll);
-                [self addGroup:allGroupItem];
-
-                for (TUIExtensionInfo *info in extensionList) {
-                    TUIConversationGroupItem *groupItem = info.data[TUICore_TUIConversationExtension_ConversationGroupListBanner_GroupItemKey];
-                    if (groupItem) {
-                        [self addGroup:groupItem];
-                    }
-                }
-                [self onSelectGroup:allGroupItem];
-            } else {
-                self.tableViewContainer.frame = CGRectMake(0, self.bannerView.mm_maxY, self.view.mm_w, self.viewHeight - self.bannerView.mm_maxY);
-                self.tableViewForAll.frame = self.tableViewContainer.bounds;
-            }
-          }];
-          self.actualShowConversationGroup = (extensionList.count > 0);
-        });
-    } else {
-        self.tableViewContainer.frame = CGRectMake(0, self.bannerView.mm_maxY, self.view.mm_w, self.viewHeight - self.bannerView.mm_maxY);
-        self.tableViewForAll.frame = self.tableViewContainer.bounds;
-    }
-}
-
-- (UIView *)bannerView {
-    if (!_bannerView) {
-        _bannerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
-        [self.view addSubview:_bannerView];
-    }
-    return _bannerView;
-}
-
-- (TUIConversationTableView *)currentTableView {
-    for (UIView *view in self.tableViewContainer.subviews) {
-        if ([view isKindOfClass:[TUIConversationTableView class]]) {
-            return (TUIConversationTableView *)view;
-        }
-    }
-    return nil;
-}
-
-- (UIView *)tableViewContainer {
-    if (!_tableViewContainer) {
-        _tableViewContainer = [[UIView alloc] init];
-        _tableViewContainer.autoresizesSubviews = YES;
-    }
-    return _tableViewContainer;
-}
-
-
-
-- (UIView *)groupView {
-    if (!_groupView) {
-        _groupView = [[UIView alloc] initWithFrame:CGRectMake(0, self.bannerView.mm_maxY, self.view.mm_w, 60)];
-        [self.view addSubview:_groupView];
-
-        CGFloat groupExtensionBtnLeft = _groupView.mm_w - GroupScrollViewHeight - kScale375(16);
-        self.groupBtnContainer = [[UIView alloc] initWithFrame:CGRectMake(groupExtensionBtnLeft, 18, GroupScrollViewHeight, GroupScrollViewHeight)];
-        [_groupView addSubview:self.groupBtnContainer];
-        [TUICore raiseExtension:TUICore_TUIConversationExtension_ConversationGroupManagerContainer_ClassicExtensionID
-                     parentView:self.groupBtnContainer
-                          param:@{TUICore_TUIConversationExtension_ConversationGroupManagerContainer_ParentVCKey : self}];
-
-        CGFloat groupScrollViewWidth = self.groupBtnContainer.mm_x - kScale375(16) - kScale375(10);
-        self.groupScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(kScale375(16), 18, groupScrollViewWidth, GroupScrollViewHeight)];
-        self.groupScrollView.backgroundColor = TUIConversationDynamicColor(@"conversation_group_bg_color", @"#EBECF0");
-        self.groupScrollView.showsHorizontalScrollIndicator = NO;
-        self.groupScrollView.showsVerticalScrollIndicator = NO;
-        self.groupScrollView.bounces = NO;
-        self.groupScrollView.scrollEnabled = YES;
-        self.groupScrollView.layer.cornerRadius = GroupScrollViewHeight / 2.0;
-        self.groupScrollView.layer.masksToBounds = YES;
-        [_groupView addSubview:self.groupScrollView];
-        @weakify(self);
-        [[[RACObserve(self.groupScrollView, contentSize) distinctUntilChanged] skip:1] subscribeNext:^(NSValue *contentSizeValue) {
-          @strongify(self);
-          self.groupScrollView.mm_w = MIN(groupScrollViewWidth, [contentSizeValue CGSizeValue].width);
-        }];
-
-        self.groupAnimationView = [[UIView alloc] init];
-        self.groupAnimationView.backgroundColor = TUIConversationDynamicColor(@"conversation_group_animate_view_color", @"#FFFFFF");
-        self.groupAnimationView.layer.cornerRadius = GroupScrollViewHeight / 2.0;
-        self.groupAnimationView.layer.masksToBounds = YES;
-        self.groupAnimationView.layer.borderWidth = 1;
-        self.groupAnimationView.layer.borderColor = [TUIConversationDynamicColor(@"conversation_group_bg_color", @"#EBECF0") CGColor];
-        [self.groupScrollView addSubview:self.groupAnimationView];
-    }
-    return _groupView;
-}
-
-#pragma mark Conversation Group Manager
-- (void)createGroupBtn:(TUIConversationGroupItem *)groupItem positionX:(CGFloat)positionX {
-    UIButton *groupBtn = [UIButton buttonWithType:UIButtonTypeCustom];
-    [groupBtn setBackgroundColor:[UIColor clearColor]];
-    [groupBtn setAttributedTitle:[self getGroupBtnAttributedString:groupItem] forState:UIControlStateNormal];
-    [groupBtn setTitleColor:TUIConversationDynamicColor(@"conversation_group_btn_unselect_color", @"#666666") forState:UIControlStateNormal];
-    [groupBtn.titleLabel setFont:[UIFont systemFontOfSize:16]];
-    [groupBtn addTarget:self action:@selector(onGroupBtnClick:) forControlEvents:UIControlEventTouchUpInside];
-    [groupBtn sizeToFit];
-    groupBtn.mm_x = positionX;
-    groupBtn.mm_w = groupBtn.mm_w + GroupBtnSpace;
-    groupBtn.mm_h = GroupScrollViewHeight;
-    groupItem.groupBtn = groupBtn;
-}
-
-- (void)updateGroupBtn:(TUIConversationGroupItem *)groupItem {
-    [groupItem.groupBtn setAttributedTitle:[self getGroupBtnAttributedString:groupItem] forState:UIControlStateNormal];
-    [groupItem.groupBtn sizeToFit];
-    groupItem.groupBtn.mm_w = groupItem.groupBtn.mm_w + GroupBtnSpace;
-    groupItem.groupBtn.mm_h = GroupScrollViewHeight;
-}
-
-- (void)onGroupBtnClick:(UIButton *)btn {
-    for (TUIConversationGroupItem *groupItem in self.groupItemList) {
-        if ([groupItem.groupBtn isEqual:btn]) {
-            [self onSelectGroup:groupItem];
-            return;
-        }
-    }
-}
-
-- (void)loadGroupList:(NSArray<TUIConversationGroupItem *> *)groupItemList {
-    NSString *selectGroup = @"";
-    for (TUIConversationGroupItem *groupItem in self.groupItemList) {
-        if (groupItem.groupBtn.isSelected) {
-            selectGroup = groupItem.groupName;
-        }
-        [groupItem.groupBtn removeFromSuperview];
-    }
-    [self.groupItemList removeAllObjects];
-    [self.groupScrollView setContentSize:CGSizeZero];
-
-    for (TUIConversationGroupItem *groupItem in groupItemList) {
-        [self addGroup:groupItem];
-        if ([groupItem.groupName isEqualToString:selectGroup]) {
-            groupItem.groupBtn.selected = YES;
-            self.groupAnimationView.frame = groupItem.groupBtn.frame;
-        }
-    }
-}
-
-- (void)addGroup:(TUIConversationGroupItem *)addGroup {
-    [self createGroupBtn:addGroup positionX:self.groupScrollView.contentSize.width];
-    [self.groupItemList addObject:addGroup];
-    [self.groupScrollView addSubview:addGroup.groupBtn];
-    [self.groupScrollView setContentSize:CGSizeMake(addGroup.groupBtn.mm_maxX, GroupScrollViewHeight)];
-}
-
-- (void)insertGroup:(TUIConversationGroupItem *)insertGroup atIndex:(NSInteger)index {
-    if (index < self.groupItemList.count) {
-        for (int i = 0; i < self.groupItemList.count; ++i) {
-            TUIConversationGroupItem *groupItem = self.groupItemList[i];
-            if (i == index) {
-                [self createGroupBtn:insertGroup positionX:groupItem.groupBtn.mm_x];
-                [self.groupScrollView addSubview:insertGroup.groupBtn];
-            }
-            if (i >= index) {
-                groupItem.groupBtn.mm_x += insertGroup.groupBtn.mm_w;
-                if (groupItem.groupBtn.isSelected) {
-                    self.groupAnimationView.frame = groupItem.groupBtn.frame;
-                }
-            }
-        }
-        [self.groupItemList insertObject:insertGroup atIndex:index];
-        [self.groupScrollView setContentSize:CGSizeMake(self.groupScrollView.contentSize.width + insertGroup.groupBtn.mm_w, GroupScrollViewHeight)];
-    } else {
-        [self addGroup:insertGroup];
-    }
-}
-
-- (void)updateGroup:(TUIConversationGroupItem *)updateGroup {
-    CGFloat offsetX = 0;
-    for (int i = 0; i < self.groupItemList.count; ++i) {
-        TUIConversationGroupItem *groupItem = self.groupItemList[i];
-        if (offsetX != 0) {
-            groupItem.groupBtn.mm_x += offsetX;
-        }
-        if ([groupItem.groupName isEqualToString:updateGroup.groupName]) {
-            groupItem.unreadCount = updateGroup.unreadCount;
-            CGFloat oldBtnWidth = groupItem.groupBtn.mm_w;
-            [self updateGroupBtn:groupItem];
-            CGFloat newBtnWidth = groupItem.groupBtn.mm_w;
-            offsetX = newBtnWidth - oldBtnWidth;
-        }
-        if (groupItem.groupBtn.isSelected) {
-            self.groupAnimationView.frame = groupItem.groupBtn.frame;
-        }
-    }
-    [self.groupScrollView setContentSize:CGSizeMake(self.groupScrollView.contentSize.width + offsetX, GroupScrollViewHeight)];
-}
-
-- (void)renameGroup:(NSString *)oldName newName:(NSString *)newName {
-    CGFloat offsetX = 0;
-    for (int i = 0; i < self.groupItemList.count; ++i) {
-        TUIConversationGroupItem *groupItem = self.groupItemList[i];
-        if (offsetX != 0) {
-            groupItem.groupBtn.mm_x += offsetX;
-        }
-        if ([groupItem.groupName isEqualToString:oldName]) {
-            groupItem.groupName = newName;
-            CGFloat oldBtnWidth = groupItem.groupBtn.mm_w;
-            [self updateGroupBtn:groupItem];
-            CGFloat newBtnWidth = groupItem.groupBtn.mm_w;
-            offsetX = newBtnWidth - oldBtnWidth;
-        }
-        if (groupItem.groupBtn.isSelected) {
-            self.groupAnimationView.frame = groupItem.groupBtn.frame;
-        }
-    }
-    [self.groupScrollView setContentSize:CGSizeMake(self.groupScrollView.contentSize.width + offsetX, GroupScrollViewHeight)];
-}
-
-- (void)deleteGroup:(TUIConversationGroupItem *)deleteGroup {
-    CGFloat offsetX = 0;
-    NSUInteger removeIndex = 0;
-    BOOL isSelectedGroup = NO;
-    for (int i = 0; i < self.groupItemList.count; ++i) {
-        TUIConversationGroupItem *groupItem = self.groupItemList[i];
-        if (offsetX != 0) {
-            groupItem.groupBtn.mm_x += offsetX;
-        }
-        if ([groupItem.groupName isEqualToString:deleteGroup.groupName]) {
-            [groupItem.groupBtn removeFromSuperview];
-            offsetX = -groupItem.groupBtn.mm_w;
-            removeIndex = i;
-            isSelectedGroup = groupItem.groupBtn.isSelected;
-        }
-        if (groupItem.groupBtn.isSelected) {
-            self.groupAnimationView.frame = groupItem.groupBtn.frame;
-        }
-    }
-    [self.groupItemList removeObjectAtIndex:removeIndex];
-    [self.groupScrollView setContentSize:CGSizeMake(self.groupScrollView.contentSize.width + offsetX, GroupScrollViewHeight)];
-    if (isSelectedGroup) {
-        [self onSelectGroup:self.groupItemList.firstObject];
-    }
-}
-
-- (void)onSelectGroup:(TUIConversationGroupItem *)selectGroupItem {
-    for (int i = 0; i < self.groupItemList.count; ++i) {
-        TUIConversationGroupItem *groupItem = self.groupItemList[i];
-        if ([groupItem.groupName isEqualToString:selectGroupItem.groupName]) {
-            groupItem.groupBtn.selected = YES;
-
-            [UIView animateWithDuration:0.1
-                             animations:^{
-                               self.groupAnimationView.frame = groupItem.groupBtn.frame;
-                             }];
-            for (UIView *view in self.tableViewContainer.subviews) {
-                [view removeFromSuperview];
-            }
-            if ([groupItem.groupName isEqualToString:TIMCommonLocalizableString(TUIConversationGroupAll)]) {
-                self.tableViewForAll.frame = self.tableViewContainer.bounds;
-                [self.tableViewContainer addSubview:self.tableViewForAll];
-            } else {
-                [TUICore raiseExtension:TUICore_TUIConversationExtension_ConversationListContainer_ClassicExtensionID
-                             parentView:self.tableViewContainer
-                                  param:@{TUICore_TUIConversationExtension_ConversationListContainer_GroupNameKey : groupItem.groupName}];
-                self.currentTableView.convDelegate = self;
-            }
-        } else {
-            groupItem.groupBtn.selected = NO;
-        }
-        [self updateGroupBtn:groupItem];
-    }
-}
-
-- (NSMutableAttributedString *)getGroupBtnAttributedString:(TUIConversationGroupItem *)groupItem {
-    NSMutableString *content = [NSMutableString stringWithString:groupItem.groupName];
-    NSInteger unreadCount = groupItem.unreadCount;
-    if (unreadCount > 0) {
-        [content appendString:@" "];
-        [content appendString:(unreadCount > 99 ? @"99+" : [@(unreadCount) stringValue])];
-    }
-    NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:content];
-    if (groupItem.groupBtn.isSelected) {
-        [attributeString setAttributes:@{
-            NSFontAttributeName : [UIFont systemFontOfSize:16],
-            NSForegroundColorAttributeName : TUIConversationDynamicColor(@"conversation_group_btn_select_color", @"#147AFF")
-        }
-                                 range:NSMakeRange(0, groupItem.groupName.length)];
-    } else {
-        [attributeString setAttributes:@{
-            NSFontAttributeName : [UIFont systemFontOfSize:16],
-            NSForegroundColorAttributeName : TUIConversationDynamicColor(@"conversation_group_btn_unselect_color", @"#666666")
-        }
-                                 range:NSMakeRange(0, groupItem.groupName.length)];
-    }
-    [attributeString setAttributes:@{
-        NSForegroundColorAttributeName : TUIConversationDynamicColor(@"conversation_group_btn_select_color", @"#147AFF"),
-        NSFontAttributeName : [UIFont systemFontOfSize:12],
-        NSBaselineOffsetAttributeName : @(1)
-    }
-                             range:NSMakeRange(groupItem.groupName.length, content.length - groupItem.groupName.length)];
-    return attributeString;
-}
-
-#pragma mark TUINotificationProtocol
-- (void)onNotifyEvent:(NSString *)key subKey:(NSString *)subKey object:(nullable id)anObject param:(nullable NSDictionary *)param {
-    if ([key isEqualToString:TUICore_TUIConversationGroupNotify] || [key isEqualToString:TUICore_TUIConversationMarkNotify]) {
-        if (!self.actualShowConversationGroup) {
-            self.actualShowConversationGroup = YES;
-        }
-    }
-    if ([key isEqualToString:TUICore_TUIConversationGroupNotify]) {
-        if ([param objectForKey:TUICore_TUIConversationGroupNotify_GroupListLoadKey]) {
-            NSArray *groupItemList = [param objectForKey:TUICore_TUIConversationGroupNotify_GroupListLoadKey];
-            if (groupItemList && groupItemList.count > 0) {
-                [self loadGroupList:groupItemList];
-            }
-        } else if ([param objectForKey:TUICore_TUIConversationGroupNotify_GroupAddKey]) {
-            TUIConversationGroupItem *groupItem = [param objectForKey:TUICore_TUIConversationGroupNotify_GroupAddKey];
-            if (groupItem) {
-                [self addGroup:groupItem];
-            }
-        } else if ([param objectForKey:TUICore_TUIConversationGroupNotify_GroupUpdateKey]) {
-            TUIConversationGroupItem *groupItem = [param objectForKey:TUICore_TUIConversationGroupNotify_GroupUpdateKey];
-            if (groupItem) {
-                [self updateGroup:groupItem];
-            }
-        } else if ([param objectForKey:TUICore_TUIConversationGroupNotify_GroupRenameKey]) {
-            NSDictionary *renameItem = [param objectForKey:TUICore_TUIConversationGroupNotify_GroupRenameKey];
-            if (renameItem) {
-                [self renameGroup:renameItem.allKeys.firstObject newName:renameItem.allValues.firstObject];
-            }
-        } else if ([param objectForKey:TUICore_TUIConversationGroupNotify_GroupDeleteKey]) {
-            TUIConversationGroupItem *groupItem = [param objectForKey:TUICore_TUIConversationGroupNotify_GroupDeleteKey];
-            if (groupItem) {
-                [self deleteGroup:groupItem];
-            }
-        }
-    } else if ([key isEqualToString:TUICore_TUIConversationMarkNotify]) {
-        if ([param objectForKey:TUICore_TUIConversationGroupNotify_MarkAddKey]) {
-            TUIConversationGroupItem *groupItem = [param objectForKey:TUICore_TUIConversationGroupNotify_MarkAddKey];
-            if (groupItem) {
-                [self insertGroup:groupItem atIndex:groupItem.groupIndex];
-            }
-        } else if ([param objectForKey:TUICore_TUIConversationGroupNotify_MarkUpdateKey]) {
-            TUIConversationGroupItem *groupItem = [param objectForKey:TUICore_TUIConversationGroupNotify_MarkUpdateKey];
-            if (groupItem) {
-                [self updateGroup:groupItem];
-            }
-        }
-    }
-}
-
-#pragma TUIConversationTableViewDelegate
-- (void)tableViewDidScroll:(CGFloat)offsetY {
-    if (!self.bannerView || self.bannerView.hidden) {
-        return;
-    }
-    UIEdgeInsets safeAreaInsets = UIEdgeInsetsZero;
-    if (@available(iOS 11.0, *)) {
-        safeAreaInsets = self.currentTableView.adjustedContentInset;
-    }
-    CGFloat contentSizeHeight = self.currentTableView.contentSize.height + safeAreaInsets.top + safeAreaInsets.bottom;
-    if (contentSizeHeight > self.currentTableView.mm_h && self.currentTableView.contentOffset.y + self.currentTableView.mm_h > contentSizeHeight) {
-        return;
-    }
-    if (offsetY > self.bannerView.mm_h) {
-        offsetY = self.bannerView.mm_h;
-    }
-    if (offsetY < 0) {
-        offsetY = 0;
-    }
-    self.bannerView.mm_top(offsetY);
-    if (self.actualShowConversationGroup) {
-        self.groupView.mm_top(self.bannerView.mm_maxY);
-        self.tableViewContainer.mm_top(self.groupView.mm_maxY).mm_height(self.viewHeight - self.groupView.mm_maxY);
-    } else {
-        self.tableViewContainer.mm_top(self.bannerView.mm_maxY).mm_height(self.viewHeight - self.bannerView.mm_maxY);
-    }
-}
-
-- (void)tableViewDidSelectCell:(TUIConversationCellData *)data {
-    if (data.isLocalConversationFoldList) {
-        [TUIConversationListDataProvider cacheConversationFoldListSettings_FoldItemIsUnread:NO];
-
-        TUIFoldListViewController *foldVC = [[TUIFoldListViewController alloc] init];
-        [self.navigationController pushViewController:foldVC animated:YES];
-
-        @weakify(self);
-        foldVC.dismissCallback = ^(NSMutableAttributedString *_Nonnull foldStr, NSArray *_Nonnull sortArr, NSArray *_Nonnull needRemoveFromCacheMapArray) {
-          @strongify(self);
-          data.foldSubTitle = foldStr;
-          data.subTitle = data.foldSubTitle;
-          data.isMarkAsUnread = NO;
-
-          if (sortArr.count <= 0) {
-              data.orderKey = 0;
-              if ([self.dataProvider.conversationList containsObject:data]) {
-                  [self.dataProvider hideConversation:data];
-              }
-          }
-
-          for (NSString *removeId in needRemoveFromCacheMapArray) {
-              if ([self.dataProvider.markFoldMap objectForKey:removeId]) {
-                  [self.dataProvider.markFoldMap removeObjectForKey:removeId];
-              }
-          }
-
-          [TUIConversationListDataProvider cacheConversationFoldListSettings_FoldItemIsUnread:NO];
-          [self.currentTableView reloadData];
-        };
-        return;
-    }
-    if (self.delegate && [self.delegate respondsToSelector:@selector(conversationListController:didSelectConversation:)]) {
-        [self.delegate conversationListController:self didSelectConversation:data];
-    } else {
-        NSDictionary *param = @{
-            TUICore_TUIChatObjectFactory_ChatViewController_Title : data.title ?: @"",
-            TUICore_TUIChatObjectFactory_ChatViewController_UserID : data.userID ?: @"",
-            TUICore_TUIChatObjectFactory_ChatViewController_GroupID : data.groupID ?: @"",
-            TUICore_TUIChatObjectFactory_ChatViewController_AvatarImage : data.avatarImage ?: [UIImage new],
-            TUICore_TUIChatObjectFactory_ChatViewController_AvatarUrl : data.faceUrl ?: @"",
-            TUICore_TUIChatObjectFactory_ChatViewController_ConversationID : data.conversationID ?: @"",
-            TUICore_TUIChatObjectFactory_ChatViewController_AtMsgSeqs : data.atMsgSeqs ?: @[],
-            TUICore_TUIChatObjectFactory_ChatViewController_Draft : data.draftText ?: @""
-        };
-        [self.navigationController pushViewController:TUICore_TUIChatObjectFactory_ChatViewController_Classic param:param forResult:nil];
-    }
-}
-
-- (void)tableViewDidShowAlert:(UIAlertController *)ac {
-    [self presentViewController:ac animated:YES completion:nil];
-}
-
-#pragma TUIPopViewDelegate
-- (void)popView:(TUIPopView *)popView didSelectRowAtIndex:(NSInteger)index {
-    if (0 == index) {
-        [self startConversation:V2TIM_C2C];
-    } else {
-        [self startConversation:V2TIM_GROUP];
-    }
-}
-
-- (void)startConversation:(V2TIMConversationType)type {
-    __weak typeof(self) weakSelf = self;
-    void (^selectContactCompletion)(NSArray<TUICommonContactSelectCellData *> *) = ^(NSArray<TUICommonContactSelectCellData *> *array) {
-      if (V2TIM_C2C == type) {
-          NSDictionary *param = @{
-              TUICore_TUIChatObjectFactory_ChatViewController_Title : array.firstObject.title ?: @"",
-              TUICore_TUIChatObjectFactory_ChatViewController_UserID : array.firstObject.identifier ?: @"",
-              TUICore_TUIChatObjectFactory_ChatViewController_AvatarImage : array.firstObject.avatarImage ?: [UIImage new],
-              TUICore_TUIChatObjectFactory_ChatViewController_AvatarUrl : array.firstObject.avatarUrl.absoluteString ?: @""
-          };
-          [weakSelf.navigationController pushViewController:TUICore_TUIChatObjectFactory_ChatViewController_Classic param:param forResult:nil];
-
-          NSMutableArray *tempArray = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
-          [tempArray removeObjectAtIndex:tempArray.count - 2];
-          weakSelf.navigationController.viewControllers = tempArray;
-      } else {
-          NSString *loginUser = [[V2TIMManager sharedInstance] getLoginUser];
-          [[V2TIMManager sharedInstance]
-              getUsersInfo:@[ loginUser ]
-                      succ:^(NSArray<V2TIMUserFullInfo *> *infoList) {
-                        NSString *showName = loginUser;
-                        if (infoList.firstObject.nickName.length > 0) {
-                            showName = infoList.firstObject.nickName;
-                        }
-                        NSMutableString *groupName = [NSMutableString stringWithString:showName];
-                        for (TUICommonContactSelectCellData *item in array) {
-                            [groupName appendFormat:@"、%@", item.title];
-                        }
-
-                        if ([groupName length] > 10) {
-                            groupName = [groupName substringToIndex:10].mutableCopy;
-                        }
-                        void (^createGroupCompletion)(BOOL, V2TIMGroupInfo *) = ^(BOOL isSuccess, V2TIMGroupInfo *_Nonnull info) {
-                          NSDictionary *param = @{
-                              TUICore_TUIChatObjectFactory_ChatViewController_Title : info.groupName ?: @"",
-                              TUICore_TUIChatObjectFactory_ChatViewController_GroupID : info.groupID ?: @"",
-                              TUICore_TUIChatObjectFactory_ChatViewController_AvatarUrl : info.faceURL ?: @""
-                          };
-                          [self.navigationController pushViewController:TUICore_TUIChatObjectFactory_ChatViewController_Classic param:param forResult:nil];
-
-                          NSMutableArray *tempArray = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
-                          for (UIViewController *vc in self.navigationController.viewControllers) {
-                              if ([vc isKindOfClass:NSClassFromString(@"TUIGroupCreateController")] ||
-                                  [vc isKindOfClass:NSClassFromString(@"TUIContactSelectController")]) {
-                                  [tempArray removeObject:vc];
-                              }
-                          }
-
-                          weakSelf.navigationController.viewControllers = tempArray;
-                        };
-
-                        NSDictionary *param = @{
-                            TUICore_TUIContactObjectFactory_GetGroupCreateControllerMethod_TitleKey : array.firstObject.title ?: @"",
-                            TUICore_TUIContactObjectFactory_GetGroupCreateControllerMethod_GroupNameKey : groupName ?: @"",
-                            TUICore_TUIContactObjectFactory_GetGroupCreateControllerMethod_GroupTypeKey : GroupType_Work,
-                            TUICore_TUIContactObjectFactory_GetGroupCreateControllerMethod_CompletionKey : createGroupCompletion,
-                            TUICore_TUIContactObjectFactory_GetGroupCreateControllerMethod_ContactListKey : array ?: @[]
-                        };
-
-                        UIViewController *groupVC = (UIViewController *)[TUICore createObject:TUICore_TUIContactObjectFactory
-                                                                                          key:TUICore_TUIContactObjectFactory_GetGroupCreateControllerMethod
-                                                                                        param:param];
-                        [weakSelf.navigationController pushViewController:(UIViewController *)groupVC animated:YES];
-                      }
-                      fail:nil];
-      }
-    };
-    NSDictionary *param = @{
-        TUICore_TUIContactObjectFactory_GetContactSelectControllerMethod_TitleKey : TIMCommonLocalizableString(ChatsSelectContact),
-        TUICore_TUIContactObjectFactory_GetContactSelectControllerMethod_MaxSelectCount : @(type == V2TIM_C2C ? 1 : INT_MAX),
-        TUICore_TUIContactObjectFactory_GetContactSelectControllerMethod_CompletionKey : selectContactCompletion
-    };
-    UIViewController *vc = [TUICore createObject:TUICore_TUIContactObjectFactory
-                                             key:TUICore_TUIContactObjectFactory_GetContactSelectControllerMethod
-                                           param:param];
-    [self.navigationController pushViewController:vc animated:YES];
-}
-
-#pragma mark TUIConversationListDataProviderDelegate
-- (NSString *)getConversationDisplayString:(V2TIMConversation *)conversation {
-    if (self.delegate && [self.delegate respondsToSelector:@selector(getConversationDisplayString:)]) {
-        return [self.delegate getConversationDisplayString:conversation];
-    }
-    V2TIMMessage *msg = conversation.lastMessage;
-    if (msg.customElem == nil || msg.customElem.data == nil) {
-        return nil;
-    }
-    NSDictionary *param = [TUITool jsonData2Dictionary:msg.customElem.data];
-    if (param != nil && [param isKindOfClass:[NSDictionary class]]) {
-        NSString *businessID = param[@"businessID"];
-        if (![businessID isKindOfClass:[NSString class]]) {
-            return nil;
-        }
-
-        // whether custom jump message
-        if ([businessID isEqualToString:BussinessID_TextLink] || ([(NSString *)param[@"text"] length] > 0 && [(NSString *)param[@"link"] length] > 0)) {
-            NSString *desc = param[@"text"];
-            if (msg.status == V2TIM_MSG_STATUS_LOCAL_REVOKED) {
-                if (msg.isSelf) {
-                    desc = TIMCommonLocalizableString(TUIKitMessageTipsYouRecallMessage);
-                } else if (msg.userID.length > 0) {
-                    desc = TIMCommonLocalizableString(TUIKitMessageTipsOthersRecallMessage);
-                } else if (msg.groupID.length > 0) {
-                    /**
-                     * 对于群组消息的名称显示,优先显示群名片,昵称优先级其次,用户ID优先级最低。
-                     * For the name display of group messages, the group business card is displayed first, the nickname has the second priority, and the user ID
-                     * has the lowest priority.
-                     */
-                    NSString *userName = msg.nameCard;
-                    if (userName.length == 0) {
-                        userName = msg.nickName ?: msg.sender;
-                    }
-                    desc = [NSString stringWithFormat:TIMCommonLocalizableString(TUIKitMessageTipsRecallMessageFormat), userName];
-                }
-            }
-            return desc;
-        }
-    }
-    return nil;
-}
-
-- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
-    return UIModalPresentationNone;
-}
-
 @end
 
 

+ 147 - 162
KulexiuForTeacher/Podfile.lock

@@ -62,204 +62,189 @@ PODS:
   - SDWebImage/Core (5.16.0)
   - SocketRocket (0.6.0)
   - SSZipArchive (2.4.3)
-  - TIMCommon (7.3.4358):
-    - TIMCommon/BaseCell (= 7.3.4358)
-    - TIMCommon/CommonModel (= 7.3.4358)
-    - TIMCommon/UI_Classic (= 7.3.4358)
-    - TIMCommon/UI_Minimalist (= 7.3.4358)
-  - TIMCommon/BaseCell (7.3.4358):
-    - TIMCommon/BaseCell/CellData (= 7.3.4358)
-    - TIMCommon/BaseCell/CellUI (= 7.3.4358)
-  - TIMCommon/BaseCell/CellData (7.3.4358):
+  - TIMCommon (7.4.4643):
+    - TIMCommon/BaseCell (= 7.4.4643)
+    - TIMCommon/BaseCellData (= 7.4.4643)
+    - TIMCommon/CommonModel (= 7.4.4643)
+    - TIMCommon/UI_Classic (= 7.4.4643)
+    - TIMCommon/UI_Minimalist (= 7.4.4643)
+  - TIMCommon/BaseCell (7.4.4643):
+    - TIMCommon/BaseCellData
+  - TIMCommon/BaseCellData (7.4.4643):
     - TIMCommon/CommonModel
-  - TIMCommon/BaseCell/CellUI (7.3.4358):
-    - TIMCommon/BaseCell/CellData
-  - TIMCommon/CommonModel (7.3.4358):
+  - TIMCommon/CommonModel (7.4.4643):
     - ReactiveObjC
     - SDWebImage
-    - TUICore (= 7.3.4358)
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TIMCommon/UI_Classic (7.3.4358):
-    - TIMCommon/UI_Classic/Cell (= 7.3.4358)
-  - TIMCommon/UI_Classic/Cell (7.3.4358):
-    - TIMCommon/UI_Classic/Cell/CellData (= 7.3.4358)
-    - TIMCommon/UI_Classic/Cell/CellUI (= 7.3.4358)
-  - TIMCommon/UI_Classic/Cell/CellData (7.3.4358):
+    - TUICore (= 7.4.4643)
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TIMCommon/UI_Classic (7.4.4643):
     - TIMCommon/BaseCell
-  - TIMCommon/UI_Classic/Cell/CellUI (7.3.4358):
-    - TIMCommon/UI_Classic/Cell/CellData
-  - TIMCommon/UI_Minimalist (7.3.4358):
-    - TIMCommon/UI_Minimalist/Cell (= 7.3.4358)
-  - TIMCommon/UI_Minimalist/Cell (7.3.4358):
-    - TIMCommon/UI_Minimalist/Cell/CellData (= 7.3.4358)
-    - TIMCommon/UI_Minimalist/Cell/CellUI (= 7.3.4358)
-  - TIMCommon/UI_Minimalist/Cell/CellData (7.3.4358):
+  - TIMCommon/UI_Minimalist (7.4.4643):
     - TIMCommon/BaseCell
-  - TIMCommon/UI_Minimalist/Cell/CellUI (7.3.4358):
-    - TIMCommon/UI_Minimalist/Cell/CellData
-  - TUIChat/BaseCell (7.3.4358):
-    - TUIChat/BaseCell/CellData (= 7.3.4358)
-    - TUIChat/BaseCell/CellUI (= 7.3.4358)
-  - TUIChat/BaseCell/CellData (7.3.4358):
+  - TUIChat/BaseCell (7.4.4643):
+    - TUIChat/BaseCellData
+  - TUIChat/BaseCellData (7.4.4643):
+    - TUIChat/BaseCellData/Base (= 7.4.4643)
+    - TUIChat/BaseCellData/Chat (= 7.4.4643)
+    - TUIChat/BaseCellData/Custom (= 7.4.4643)
+    - TUIChat/BaseCellData/Emoji (= 7.4.4643)
+    - TUIChat/BaseCellData/Reply (= 7.4.4643)
+  - TUIChat/BaseCellData/Base (7.4.4643):
     - TUIChat/CommonModel
-  - TUIChat/BaseCell/CellUI (7.3.4358):
-    - TUIChat/BaseCell/CellData
-  - TUIChat/BaseDataProvider (7.3.4358):
-    - TUIChat/BaseCell
-  - TUIChat/CommonModel (7.3.4358):
+  - TUIChat/BaseCellData/Chat (7.4.4643):
+    - TUIChat/BaseCellData/Base
+  - TUIChat/BaseCellData/Custom (7.4.4643):
+    - TUIChat/BaseCellData/Chat
+  - TUIChat/BaseCellData/Emoji (7.4.4643):
+    - TUIChat/BaseCellData/Custom
+  - TUIChat/BaseCellData/Reply (7.4.4643):
+    - TUIChat/BaseCellData/Custom
+  - TUIChat/BaseDataProvider (7.4.4643):
+    - TUIChat/BaseDataProvider/Base (= 7.4.4643)
+    - TUIChat/BaseDataProvider/Impl (= 7.4.4643)
+  - TUIChat/BaseDataProvider/Base (7.4.4643):
+    - TUIChat/BaseCellData
+  - TUIChat/BaseDataProvider/Impl (7.4.4643):
+    - TUIChat/BaseCellData
+    - TUIChat/BaseDataProvider/Base
+  - TUIChat/CommonModel (7.4.4643):
     - ReactiveObjC
     - SDWebImage
-    - TIMCommon (= 7.3.4358)
+    - TIMCommon (= 7.4.4643)
     - TUIChat/VoiceConvert
-    - TUICore (= 7.3.4358)
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TUIChat/CommonUI (7.3.4358):
-    - TUIChat/CommonUI/Camera (= 7.3.4358)
-    - TUIChat/CommonUI/Pendency (= 7.3.4358)
-    - TUIChat/CommonUI/Pop (= 7.3.4358)
-  - TUIChat/CommonUI/Camera (7.3.4358):
+    - TUICore (= 7.4.4643)
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TUIChat/CommonUI (7.4.4643):
+    - TUIChat/CommonUI/Camera (= 7.4.4643)
+    - TUIChat/CommonUI/Pendency (= 7.4.4643)
+    - TUIChat/CommonUI/Pop (= 7.4.4643)
+  - TUIChat/CommonUI/Camera (7.4.4643):
+    - TUIChat/BaseCell
     - TUIChat/BaseDataProvider
-  - TUIChat/CommonUI/Pendency (7.3.4358):
+  - TUIChat/CommonUI/Pendency (7.4.4643):
+    - TUIChat/BaseCell
     - TUIChat/BaseDataProvider
-  - TUIChat/CommonUI/Pop (7.3.4358):
+  - TUIChat/CommonUI/Pop (7.4.4643):
+    - TUIChat/BaseCell
     - TUIChat/BaseDataProvider
-  - TUIChat/UI_Classic (7.3.4358):
-    - TUIChat/UI_Classic/Cell (= 7.3.4358)
-    - TUIChat/UI_Classic/Chat (= 7.3.4358)
-    - TUIChat/UI_Classic/DataProvider (= 7.3.4358)
-    - TUIChat/UI_Classic/Header (= 7.3.4358)
-    - TUIChat/UI_Classic/Input (= 7.3.4358)
-    - TUIChat/UI_Classic/Service (= 7.3.4358)
-  - TUIChat/UI_Classic/Cell (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellUI (= 7.3.4358)
-  - TUIChat/UI_Classic/Cell/CellData (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData/Base (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellData/Chat (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellData/Custom (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellData/Reply (= 7.3.4358)
-  - TUIChat/UI_Classic/Cell/CellData/Base (7.3.4358):
+  - TUIChat/UI_Classic (7.4.4643):
+    - TUIChat/UI_Classic/Cell (= 7.4.4643)
+    - TUIChat/UI_Classic/Chat (= 7.4.4643)
+    - TUIChat/UI_Classic/Header (= 7.4.4643)
+    - TUIChat/UI_Classic/Input (= 7.4.4643)
+    - TUIChat/UI_Classic/Service (= 7.4.4643)
+  - TUIChat/UI_Classic/Cell (7.4.4643):
+    - TUIChat/UI_Classic/Cell/Base (= 7.4.4643)
+    - TUIChat/UI_Classic/Cell/Chat (= 7.4.4643)
+    - TUIChat/UI_Classic/Cell/Custom (= 7.4.4643)
+    - TUIChat/UI_Classic/Cell/Reply (= 7.4.4643)
+  - TUIChat/UI_Classic/Cell/Base (7.4.4643):
     - TUIChat/CommonUI
-  - TUIChat/UI_Classic/Cell/CellData/Chat (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData/Base
-  - TUIChat/UI_Classic/Cell/CellData/Custom (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData/Chat
-  - TUIChat/UI_Classic/Cell/CellData/Reply (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData/Custom
-  - TUIChat/UI_Classic/Cell/CellUI (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellUI/Base (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellUI/Chat (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellUI/Custom (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellUI/Reply (= 7.3.4358)
-  - TUIChat/UI_Classic/Cell/CellUI/Base (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData
-  - TUIChat/UI_Classic/Cell/CellUI/Chat (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellUI/Base
-  - TUIChat/UI_Classic/Cell/CellUI/Custom (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellUI/Chat
-  - TUIChat/UI_Classic/Cell/CellUI/Reply (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellUI/Custom
-  - TUIChat/UI_Classic/Chat (7.3.4358):
+  - TUIChat/UI_Classic/Cell/Chat (7.4.4643):
+    - TUIChat/UI_Classic/Cell/Base
+  - TUIChat/UI_Classic/Cell/Custom (7.4.4643):
+    - TUIChat/UI_Classic/Cell/Chat
+  - TUIChat/UI_Classic/Cell/Reply (7.4.4643):
+    - TUIChat/UI_Classic/Cell/Custom
+  - TUIChat/UI_Classic/Chat (7.4.4643):
     - TUIChat/UI_Classic/Input
-  - TUIChat/UI_Classic/DataProvider (7.3.4358):
-    - TUIChat/UI_Classic/Cell
-  - TUIChat/UI_Classic/Header (7.3.4358):
+  - TUIChat/UI_Classic/Header (7.4.4643):
     - TUIChat/UI_Classic/Service
-  - TUIChat/UI_Classic/Input (7.3.4358):
-    - TUIChat/UI_Classic/DataProvider
-  - TUIChat/UI_Classic/Service (7.3.4358):
+  - TUIChat/UI_Classic/Input (7.4.4643):
+    - TUIChat/UI_Classic/Cell
+  - TUIChat/UI_Classic/Service (7.4.4643):
     - TUIChat/UI_Classic/Chat
-  - TUIChat/VoiceConvert (7.3.4358)
-  - TUIConversation/BaseCell (7.3.4358):
-    - TUIConversation/BaseCell/CellData (= 7.3.4358)
-    - TUIConversation/BaseCell/CellUI (= 7.3.4358)
-  - TUIConversation/BaseCell/CellData (7.3.4358):
+  - TUIChat/VoiceConvert (7.4.4643)
+  - TUIConversation/BaseCell (7.4.4643):
+    - TUIConversation/BaseCell/CellData (= 7.4.4643)
+    - TUIConversation/BaseCell/CellUI (= 7.4.4643)
+  - TUIConversation/BaseCell/CellData (7.4.4643):
     - TUIConversation/CommonModel
-  - TUIConversation/BaseCell/CellUI (7.3.4358):
+  - TUIConversation/BaseCell/CellUI (7.4.4643):
     - TUIConversation/BaseCell/CellData
-  - TUIConversation/BaseDataProvider (7.3.4358):
+  - TUIConversation/BaseDataProvider (7.4.4643):
     - TUIConversation/BaseCell
-  - TUIConversation/CommonModel (7.3.4358):
+  - TUIConversation/CommonModel (7.4.4643):
     - ReactiveObjC
-    - TIMCommon (= 7.3.4358)
-    - TUICore (= 7.3.4358)
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TUIConversation/UI_Classic (7.3.4358):
-    - TUIConversation/UI_Classic/DataProvider (= 7.3.4358)
-    - TUIConversation/UI_Classic/Header (= 7.3.4358)
-    - TUIConversation/UI_Classic/Service (= 7.3.4358)
-    - TUIConversation/UI_Classic/UI (= 7.3.4358)
-  - TUIConversation/UI_Classic/DataProvider (7.3.4358):
+    - TIMCommon (= 7.4.4643)
+    - TUICore (= 7.4.4643)
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TUIConversation/UI_Classic (7.4.4643):
+    - TUIConversation/UI_Classic/DataProvider (= 7.4.4643)
+    - TUIConversation/UI_Classic/Header (= 7.4.4643)
+    - TUIConversation/UI_Classic/Service (= 7.4.4643)
+    - TUIConversation/UI_Classic/UI (= 7.4.4643)
+  - TUIConversation/UI_Classic/DataProvider (7.4.4643):
     - TUIConversation/BaseDataProvider
-  - TUIConversation/UI_Classic/Header (7.3.4358):
+  - TUIConversation/UI_Classic/Header (7.4.4643):
     - TUIConversation/UI_Classic/Service
-  - TUIConversation/UI_Classic/Service (7.3.4358):
+  - TUIConversation/UI_Classic/Service (7.4.4643):
     - TUIConversation/UI_Classic/UI
-  - TUIConversation/UI_Classic/UI (7.3.4358):
+  - TUIConversation/UI_Classic/UI (7.4.4643):
     - TUIConversation/UI_Classic/DataProvider
-  - TUICore (7.3.4358):
+  - TUICore (7.4.4643):
     - ReactiveObjC
     - SDWebImage
-    - TUICore/ImSDK_Plus (= 7.3.4358)
-  - TUICore/Base (7.3.4358):
+    - TUICore/ImSDK_Plus (= 7.4.4643)
+  - TUICore/Base (7.4.4643):
     - ReactiveObjC
     - SDWebImage
-  - TUICore/ImSDK_Plus (7.3.4358):
+  - TUICore/ImSDK_Plus (7.4.4643):
     - ReactiveObjC
     - SDWebImage
     - TUICore/Base
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TUIGroup/BaseCell (7.3.4358):
-    - TUIGroup/BaseCell/CellData (= 7.3.4358)
-    - TUIGroup/BaseCell/CellUI (= 7.3.4358)
-  - TUIGroup/BaseCell/CellData (7.3.4358):
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TUIGroup/BaseCell (7.4.4643):
+    - TUIGroup/BaseCell/CellData (= 7.4.4643)
+    - TUIGroup/BaseCell/CellUI (= 7.4.4643)
+  - TUIGroup/BaseCell/CellData (7.4.4643):
     - TUIGroup/CommonModel
-  - TUIGroup/BaseCell/CellUI (7.3.4358):
+  - TUIGroup/BaseCell/CellUI (7.4.4643):
     - TUIGroup/BaseCell/CellData
-  - TUIGroup/BaseDataProvider (7.3.4358):
+  - TUIGroup/BaseDataProvider (7.4.4643):
     - TUIGroup/BaseCell
-  - TUIGroup/CommonModel (7.3.4358):
+  - TUIGroup/CommonModel (7.4.4643):
     - ReactiveObjC
-    - TIMCommon (= 7.3.4358)
-    - TUICore (= 7.3.4358)
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TUIGroup/CommonUI (7.3.4358):
+    - TIMCommon (= 7.4.4643)
+    - TUICore (= 7.4.4643)
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TUIGroup/CommonUI (7.4.4643):
     - TUIGroup/BaseDataProvider
-  - TUIGroup/UI_Classic (7.3.4358):
-    - TUIGroup/UI_Classic/Header (= 7.3.4358)
-    - TUIGroup/UI_Classic/Service (= 7.3.4358)
-    - TUIGroup/UI_Classic/UI (= 7.3.4358)
-  - TUIGroup/UI_Classic/Header (7.3.4358):
+  - TUIGroup/UI_Classic (7.4.4643):
+    - TUIGroup/UI_Classic/Header (= 7.4.4643)
+    - TUIGroup/UI_Classic/Service (= 7.4.4643)
+    - TUIGroup/UI_Classic/UI (= 7.4.4643)
+  - TUIGroup/UI_Classic/Header (7.4.4643):
     - TUIGroup/UI_Classic/Service
-  - TUIGroup/UI_Classic/Service (7.3.4358):
+  - TUIGroup/UI_Classic/Service (7.4.4643):
     - TUIGroup/UI_Classic/UI
-  - TUIGroup/UI_Classic/UI (7.3.4358):
+  - TUIGroup/UI_Classic/UI (7.4.4643):
     - TUIGroup/CommonUI
-  - TUISearch/BaseCell (7.3.4358):
-    - TUISearch/BaseCell/CellData (= 7.3.4358)
-    - TUISearch/BaseCell/CellUI (= 7.3.4358)
-  - TUISearch/BaseCell/CellData (7.3.4358):
-    - TIMCommon (= 7.3.4358)
-    - TUICore (= 7.3.4358)
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TUISearch/BaseCell/CellUI (7.3.4358):
+  - TUISearch/BaseCell (7.4.4643):
+    - TUISearch/BaseCell/CellData (= 7.4.4643)
+    - TUISearch/BaseCell/CellUI (= 7.4.4643)
+  - TUISearch/BaseCell/CellData (7.4.4643):
+    - TIMCommon (= 7.4.4643)
+    - TUICore (= 7.4.4643)
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TUISearch/BaseCell/CellUI (7.4.4643):
     - TUISearch/BaseCell/CellData
-  - TUISearch/BaseDataProvider (7.3.4358):
+  - TUISearch/BaseDataProvider (7.4.4643):
     - TUISearch/BaseCell
-  - TUISearch/UI_Classic (7.3.4358):
-    - TUISearch/UI_Classic/Header (= 7.3.4358)
-    - TUISearch/UI_Classic/Service (= 7.3.4358)
-    - TUISearch/UI_Classic/UI (= 7.3.4358)
-  - TUISearch/UI_Classic/Header (7.3.4358):
+  - TUISearch/UI_Classic (7.4.4643):
+    - TUISearch/UI_Classic/Header (= 7.4.4643)
+    - TUISearch/UI_Classic/Service (= 7.4.4643)
+    - TUISearch/UI_Classic/UI (= 7.4.4643)
+  - TUISearch/UI_Classic/Header (7.4.4643):
     - TUISearch/UI_Classic/Service
-  - TUISearch/UI_Classic/Service (7.3.4358):
+  - TUISearch/UI_Classic/Service (7.4.4643):
     - TUISearch/UI_Classic/UI
-  - TUISearch/UI_Classic/UI (7.3.4358):
+  - TUISearch/UI_Classic/UI (7.4.4643):
     - TUISearch/BaseDataProvider
-  - TXIMSDK_Plus_iOS (7.3.4358)
-  - TXLiteAVSDK_Professional (11.3.14354):
-    - TXLiteAVSDK_Professional/Professional (= 11.3.14354)
-  - TXLiteAVSDK_Professional/Professional (11.3.14354)
+  - TXIMSDK_Plus_iOS (7.4.4643)
+  - TXLiteAVSDK_Professional (11.4.14445):
+    - TXLiteAVSDK_Professional/Professional (= 11.4.14445)
+  - TXLiteAVSDK_Professional/Professional (11.4.14445)
   - TYCyclePagerView (1.2.0)
   - TZImagePickerController (3.8.3):
     - TZImagePickerController/Basic (= 3.8.3)
@@ -388,14 +373,14 @@ SPEC CHECKSUMS:
   SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
   SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
   SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
-  TIMCommon: 2adea2895422a640e100125f6fccc0dc2aeff44b
-  TUIChat: 557dd6872606d9da7f36913af92ee95c8e651795
-  TUIConversation: 643823f80f0958b7263ac24411e397fcd5f37e78
-  TUICore: b0e525287eb03f95fe648a696c9ffb253fc87098
-  TUIGroup: 6a4133f356bd240997ac11bb94f89648899096f7
-  TUISearch: 18a208d0ef13eb7bf7f44eae01ffefb26803aaf3
-  TXIMSDK_Plus_iOS: bc72c7cec1b5e975c3cc6629692c849513a932f5
-  TXLiteAVSDK_Professional: 988a489779cec7bab5ca7af65d812eee5ce48409
+  TIMCommon: 944f70d62dda70a2e048b125770efb32eae4bc3b
+  TUIChat: 92e4ea0472dad566da6e6c88a4676b3dfb9482da
+  TUIConversation: 9c79518b59fd7e213bd817d1dbbc179a6dc1bda1
+  TUICore: 5b6f4409de9af3bc18f08735808c907f18db0a6c
+  TUIGroup: 9b53d271c5556616058ef979762fccc621e7ff5e
+  TUISearch: 8f84a6a62b6fd97ae32a89a1d241593acb433d98
+  TXIMSDK_Plus_iOS: 4fe66054d3bc6953f21562c5b2bcce5526ba589f
+  TXLiteAVSDK_Professional: 0c3b51b758f5ae91f6f13a502b6c5f1b8e6e819c
   TYCyclePagerView: 2b051dade0615c70784aa34f40c646feeddb7344
   TZImagePickerController: e9909edbadf7381140efc5b5c9f5bdbfd630f7d4
   Whiteboard: 4622f3866b7c35a9c757955619ba0a2b26d968f5

+ 147 - 162
KulexiuForTeacher/Pods/Manifest.lock

@@ -62,204 +62,189 @@ PODS:
   - SDWebImage/Core (5.16.0)
   - SocketRocket (0.6.0)
   - SSZipArchive (2.4.3)
-  - TIMCommon (7.3.4358):
-    - TIMCommon/BaseCell (= 7.3.4358)
-    - TIMCommon/CommonModel (= 7.3.4358)
-    - TIMCommon/UI_Classic (= 7.3.4358)
-    - TIMCommon/UI_Minimalist (= 7.3.4358)
-  - TIMCommon/BaseCell (7.3.4358):
-    - TIMCommon/BaseCell/CellData (= 7.3.4358)
-    - TIMCommon/BaseCell/CellUI (= 7.3.4358)
-  - TIMCommon/BaseCell/CellData (7.3.4358):
+  - TIMCommon (7.4.4643):
+    - TIMCommon/BaseCell (= 7.4.4643)
+    - TIMCommon/BaseCellData (= 7.4.4643)
+    - TIMCommon/CommonModel (= 7.4.4643)
+    - TIMCommon/UI_Classic (= 7.4.4643)
+    - TIMCommon/UI_Minimalist (= 7.4.4643)
+  - TIMCommon/BaseCell (7.4.4643):
+    - TIMCommon/BaseCellData
+  - TIMCommon/BaseCellData (7.4.4643):
     - TIMCommon/CommonModel
-  - TIMCommon/BaseCell/CellUI (7.3.4358):
-    - TIMCommon/BaseCell/CellData
-  - TIMCommon/CommonModel (7.3.4358):
+  - TIMCommon/CommonModel (7.4.4643):
     - ReactiveObjC
     - SDWebImage
-    - TUICore (= 7.3.4358)
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TIMCommon/UI_Classic (7.3.4358):
-    - TIMCommon/UI_Classic/Cell (= 7.3.4358)
-  - TIMCommon/UI_Classic/Cell (7.3.4358):
-    - TIMCommon/UI_Classic/Cell/CellData (= 7.3.4358)
-    - TIMCommon/UI_Classic/Cell/CellUI (= 7.3.4358)
-  - TIMCommon/UI_Classic/Cell/CellData (7.3.4358):
+    - TUICore (= 7.4.4643)
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TIMCommon/UI_Classic (7.4.4643):
     - TIMCommon/BaseCell
-  - TIMCommon/UI_Classic/Cell/CellUI (7.3.4358):
-    - TIMCommon/UI_Classic/Cell/CellData
-  - TIMCommon/UI_Minimalist (7.3.4358):
-    - TIMCommon/UI_Minimalist/Cell (= 7.3.4358)
-  - TIMCommon/UI_Minimalist/Cell (7.3.4358):
-    - TIMCommon/UI_Minimalist/Cell/CellData (= 7.3.4358)
-    - TIMCommon/UI_Minimalist/Cell/CellUI (= 7.3.4358)
-  - TIMCommon/UI_Minimalist/Cell/CellData (7.3.4358):
+  - TIMCommon/UI_Minimalist (7.4.4643):
     - TIMCommon/BaseCell
-  - TIMCommon/UI_Minimalist/Cell/CellUI (7.3.4358):
-    - TIMCommon/UI_Minimalist/Cell/CellData
-  - TUIChat/BaseCell (7.3.4358):
-    - TUIChat/BaseCell/CellData (= 7.3.4358)
-    - TUIChat/BaseCell/CellUI (= 7.3.4358)
-  - TUIChat/BaseCell/CellData (7.3.4358):
+  - TUIChat/BaseCell (7.4.4643):
+    - TUIChat/BaseCellData
+  - TUIChat/BaseCellData (7.4.4643):
+    - TUIChat/BaseCellData/Base (= 7.4.4643)
+    - TUIChat/BaseCellData/Chat (= 7.4.4643)
+    - TUIChat/BaseCellData/Custom (= 7.4.4643)
+    - TUIChat/BaseCellData/Emoji (= 7.4.4643)
+    - TUIChat/BaseCellData/Reply (= 7.4.4643)
+  - TUIChat/BaseCellData/Base (7.4.4643):
     - TUIChat/CommonModel
-  - TUIChat/BaseCell/CellUI (7.3.4358):
-    - TUIChat/BaseCell/CellData
-  - TUIChat/BaseDataProvider (7.3.4358):
-    - TUIChat/BaseCell
-  - TUIChat/CommonModel (7.3.4358):
+  - TUIChat/BaseCellData/Chat (7.4.4643):
+    - TUIChat/BaseCellData/Base
+  - TUIChat/BaseCellData/Custom (7.4.4643):
+    - TUIChat/BaseCellData/Chat
+  - TUIChat/BaseCellData/Emoji (7.4.4643):
+    - TUIChat/BaseCellData/Custom
+  - TUIChat/BaseCellData/Reply (7.4.4643):
+    - TUIChat/BaseCellData/Custom
+  - TUIChat/BaseDataProvider (7.4.4643):
+    - TUIChat/BaseDataProvider/Base (= 7.4.4643)
+    - TUIChat/BaseDataProvider/Impl (= 7.4.4643)
+  - TUIChat/BaseDataProvider/Base (7.4.4643):
+    - TUIChat/BaseCellData
+  - TUIChat/BaseDataProvider/Impl (7.4.4643):
+    - TUIChat/BaseCellData
+    - TUIChat/BaseDataProvider/Base
+  - TUIChat/CommonModel (7.4.4643):
     - ReactiveObjC
     - SDWebImage
-    - TIMCommon (= 7.3.4358)
+    - TIMCommon (= 7.4.4643)
     - TUIChat/VoiceConvert
-    - TUICore (= 7.3.4358)
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TUIChat/CommonUI (7.3.4358):
-    - TUIChat/CommonUI/Camera (= 7.3.4358)
-    - TUIChat/CommonUI/Pendency (= 7.3.4358)
-    - TUIChat/CommonUI/Pop (= 7.3.4358)
-  - TUIChat/CommonUI/Camera (7.3.4358):
+    - TUICore (= 7.4.4643)
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TUIChat/CommonUI (7.4.4643):
+    - TUIChat/CommonUI/Camera (= 7.4.4643)
+    - TUIChat/CommonUI/Pendency (= 7.4.4643)
+    - TUIChat/CommonUI/Pop (= 7.4.4643)
+  - TUIChat/CommonUI/Camera (7.4.4643):
+    - TUIChat/BaseCell
     - TUIChat/BaseDataProvider
-  - TUIChat/CommonUI/Pendency (7.3.4358):
+  - TUIChat/CommonUI/Pendency (7.4.4643):
+    - TUIChat/BaseCell
     - TUIChat/BaseDataProvider
-  - TUIChat/CommonUI/Pop (7.3.4358):
+  - TUIChat/CommonUI/Pop (7.4.4643):
+    - TUIChat/BaseCell
     - TUIChat/BaseDataProvider
-  - TUIChat/UI_Classic (7.3.4358):
-    - TUIChat/UI_Classic/Cell (= 7.3.4358)
-    - TUIChat/UI_Classic/Chat (= 7.3.4358)
-    - TUIChat/UI_Classic/DataProvider (= 7.3.4358)
-    - TUIChat/UI_Classic/Header (= 7.3.4358)
-    - TUIChat/UI_Classic/Input (= 7.3.4358)
-    - TUIChat/UI_Classic/Service (= 7.3.4358)
-  - TUIChat/UI_Classic/Cell (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellUI (= 7.3.4358)
-  - TUIChat/UI_Classic/Cell/CellData (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData/Base (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellData/Chat (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellData/Custom (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellData/Reply (= 7.3.4358)
-  - TUIChat/UI_Classic/Cell/CellData/Base (7.3.4358):
+  - TUIChat/UI_Classic (7.4.4643):
+    - TUIChat/UI_Classic/Cell (= 7.4.4643)
+    - TUIChat/UI_Classic/Chat (= 7.4.4643)
+    - TUIChat/UI_Classic/Header (= 7.4.4643)
+    - TUIChat/UI_Classic/Input (= 7.4.4643)
+    - TUIChat/UI_Classic/Service (= 7.4.4643)
+  - TUIChat/UI_Classic/Cell (7.4.4643):
+    - TUIChat/UI_Classic/Cell/Base (= 7.4.4643)
+    - TUIChat/UI_Classic/Cell/Chat (= 7.4.4643)
+    - TUIChat/UI_Classic/Cell/Custom (= 7.4.4643)
+    - TUIChat/UI_Classic/Cell/Reply (= 7.4.4643)
+  - TUIChat/UI_Classic/Cell/Base (7.4.4643):
     - TUIChat/CommonUI
-  - TUIChat/UI_Classic/Cell/CellData/Chat (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData/Base
-  - TUIChat/UI_Classic/Cell/CellData/Custom (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData/Chat
-  - TUIChat/UI_Classic/Cell/CellData/Reply (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData/Custom
-  - TUIChat/UI_Classic/Cell/CellUI (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellUI/Base (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellUI/Chat (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellUI/Custom (= 7.3.4358)
-    - TUIChat/UI_Classic/Cell/CellUI/Reply (= 7.3.4358)
-  - TUIChat/UI_Classic/Cell/CellUI/Base (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellData
-  - TUIChat/UI_Classic/Cell/CellUI/Chat (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellUI/Base
-  - TUIChat/UI_Classic/Cell/CellUI/Custom (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellUI/Chat
-  - TUIChat/UI_Classic/Cell/CellUI/Reply (7.3.4358):
-    - TUIChat/UI_Classic/Cell/CellUI/Custom
-  - TUIChat/UI_Classic/Chat (7.3.4358):
+  - TUIChat/UI_Classic/Cell/Chat (7.4.4643):
+    - TUIChat/UI_Classic/Cell/Base
+  - TUIChat/UI_Classic/Cell/Custom (7.4.4643):
+    - TUIChat/UI_Classic/Cell/Chat
+  - TUIChat/UI_Classic/Cell/Reply (7.4.4643):
+    - TUIChat/UI_Classic/Cell/Custom
+  - TUIChat/UI_Classic/Chat (7.4.4643):
     - TUIChat/UI_Classic/Input
-  - TUIChat/UI_Classic/DataProvider (7.3.4358):
-    - TUIChat/UI_Classic/Cell
-  - TUIChat/UI_Classic/Header (7.3.4358):
+  - TUIChat/UI_Classic/Header (7.4.4643):
     - TUIChat/UI_Classic/Service
-  - TUIChat/UI_Classic/Input (7.3.4358):
-    - TUIChat/UI_Classic/DataProvider
-  - TUIChat/UI_Classic/Service (7.3.4358):
+  - TUIChat/UI_Classic/Input (7.4.4643):
+    - TUIChat/UI_Classic/Cell
+  - TUIChat/UI_Classic/Service (7.4.4643):
     - TUIChat/UI_Classic/Chat
-  - TUIChat/VoiceConvert (7.3.4358)
-  - TUIConversation/BaseCell (7.3.4358):
-    - TUIConversation/BaseCell/CellData (= 7.3.4358)
-    - TUIConversation/BaseCell/CellUI (= 7.3.4358)
-  - TUIConversation/BaseCell/CellData (7.3.4358):
+  - TUIChat/VoiceConvert (7.4.4643)
+  - TUIConversation/BaseCell (7.4.4643):
+    - TUIConversation/BaseCell/CellData (= 7.4.4643)
+    - TUIConversation/BaseCell/CellUI (= 7.4.4643)
+  - TUIConversation/BaseCell/CellData (7.4.4643):
     - TUIConversation/CommonModel
-  - TUIConversation/BaseCell/CellUI (7.3.4358):
+  - TUIConversation/BaseCell/CellUI (7.4.4643):
     - TUIConversation/BaseCell/CellData
-  - TUIConversation/BaseDataProvider (7.3.4358):
+  - TUIConversation/BaseDataProvider (7.4.4643):
     - TUIConversation/BaseCell
-  - TUIConversation/CommonModel (7.3.4358):
+  - TUIConversation/CommonModel (7.4.4643):
     - ReactiveObjC
-    - TIMCommon (= 7.3.4358)
-    - TUICore (= 7.3.4358)
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TUIConversation/UI_Classic (7.3.4358):
-    - TUIConversation/UI_Classic/DataProvider (= 7.3.4358)
-    - TUIConversation/UI_Classic/Header (= 7.3.4358)
-    - TUIConversation/UI_Classic/Service (= 7.3.4358)
-    - TUIConversation/UI_Classic/UI (= 7.3.4358)
-  - TUIConversation/UI_Classic/DataProvider (7.3.4358):
+    - TIMCommon (= 7.4.4643)
+    - TUICore (= 7.4.4643)
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TUIConversation/UI_Classic (7.4.4643):
+    - TUIConversation/UI_Classic/DataProvider (= 7.4.4643)
+    - TUIConversation/UI_Classic/Header (= 7.4.4643)
+    - TUIConversation/UI_Classic/Service (= 7.4.4643)
+    - TUIConversation/UI_Classic/UI (= 7.4.4643)
+  - TUIConversation/UI_Classic/DataProvider (7.4.4643):
     - TUIConversation/BaseDataProvider
-  - TUIConversation/UI_Classic/Header (7.3.4358):
+  - TUIConversation/UI_Classic/Header (7.4.4643):
     - TUIConversation/UI_Classic/Service
-  - TUIConversation/UI_Classic/Service (7.3.4358):
+  - TUIConversation/UI_Classic/Service (7.4.4643):
     - TUIConversation/UI_Classic/UI
-  - TUIConversation/UI_Classic/UI (7.3.4358):
+  - TUIConversation/UI_Classic/UI (7.4.4643):
     - TUIConversation/UI_Classic/DataProvider
-  - TUICore (7.3.4358):
+  - TUICore (7.4.4643):
     - ReactiveObjC
     - SDWebImage
-    - TUICore/ImSDK_Plus (= 7.3.4358)
-  - TUICore/Base (7.3.4358):
+    - TUICore/ImSDK_Plus (= 7.4.4643)
+  - TUICore/Base (7.4.4643):
     - ReactiveObjC
     - SDWebImage
-  - TUICore/ImSDK_Plus (7.3.4358):
+  - TUICore/ImSDK_Plus (7.4.4643):
     - ReactiveObjC
     - SDWebImage
     - TUICore/Base
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TUIGroup/BaseCell (7.3.4358):
-    - TUIGroup/BaseCell/CellData (= 7.3.4358)
-    - TUIGroup/BaseCell/CellUI (= 7.3.4358)
-  - TUIGroup/BaseCell/CellData (7.3.4358):
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TUIGroup/BaseCell (7.4.4643):
+    - TUIGroup/BaseCell/CellData (= 7.4.4643)
+    - TUIGroup/BaseCell/CellUI (= 7.4.4643)
+  - TUIGroup/BaseCell/CellData (7.4.4643):
     - TUIGroup/CommonModel
-  - TUIGroup/BaseCell/CellUI (7.3.4358):
+  - TUIGroup/BaseCell/CellUI (7.4.4643):
     - TUIGroup/BaseCell/CellData
-  - TUIGroup/BaseDataProvider (7.3.4358):
+  - TUIGroup/BaseDataProvider (7.4.4643):
     - TUIGroup/BaseCell
-  - TUIGroup/CommonModel (7.3.4358):
+  - TUIGroup/CommonModel (7.4.4643):
     - ReactiveObjC
-    - TIMCommon (= 7.3.4358)
-    - TUICore (= 7.3.4358)
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TUIGroup/CommonUI (7.3.4358):
+    - TIMCommon (= 7.4.4643)
+    - TUICore (= 7.4.4643)
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TUIGroup/CommonUI (7.4.4643):
     - TUIGroup/BaseDataProvider
-  - TUIGroup/UI_Classic (7.3.4358):
-    - TUIGroup/UI_Classic/Header (= 7.3.4358)
-    - TUIGroup/UI_Classic/Service (= 7.3.4358)
-    - TUIGroup/UI_Classic/UI (= 7.3.4358)
-  - TUIGroup/UI_Classic/Header (7.3.4358):
+  - TUIGroup/UI_Classic (7.4.4643):
+    - TUIGroup/UI_Classic/Header (= 7.4.4643)
+    - TUIGroup/UI_Classic/Service (= 7.4.4643)
+    - TUIGroup/UI_Classic/UI (= 7.4.4643)
+  - TUIGroup/UI_Classic/Header (7.4.4643):
     - TUIGroup/UI_Classic/Service
-  - TUIGroup/UI_Classic/Service (7.3.4358):
+  - TUIGroup/UI_Classic/Service (7.4.4643):
     - TUIGroup/UI_Classic/UI
-  - TUIGroup/UI_Classic/UI (7.3.4358):
+  - TUIGroup/UI_Classic/UI (7.4.4643):
     - TUIGroup/CommonUI
-  - TUISearch/BaseCell (7.3.4358):
-    - TUISearch/BaseCell/CellData (= 7.3.4358)
-    - TUISearch/BaseCell/CellUI (= 7.3.4358)
-  - TUISearch/BaseCell/CellData (7.3.4358):
-    - TIMCommon (= 7.3.4358)
-    - TUICore (= 7.3.4358)
-    - TXIMSDK_Plus_iOS (= 7.3.4358)
-  - TUISearch/BaseCell/CellUI (7.3.4358):
+  - TUISearch/BaseCell (7.4.4643):
+    - TUISearch/BaseCell/CellData (= 7.4.4643)
+    - TUISearch/BaseCell/CellUI (= 7.4.4643)
+  - TUISearch/BaseCell/CellData (7.4.4643):
+    - TIMCommon (= 7.4.4643)
+    - TUICore (= 7.4.4643)
+    - TXIMSDK_Plus_iOS (= 7.4.4643)
+  - TUISearch/BaseCell/CellUI (7.4.4643):
     - TUISearch/BaseCell/CellData
-  - TUISearch/BaseDataProvider (7.3.4358):
+  - TUISearch/BaseDataProvider (7.4.4643):
     - TUISearch/BaseCell
-  - TUISearch/UI_Classic (7.3.4358):
-    - TUISearch/UI_Classic/Header (= 7.3.4358)
-    - TUISearch/UI_Classic/Service (= 7.3.4358)
-    - TUISearch/UI_Classic/UI (= 7.3.4358)
-  - TUISearch/UI_Classic/Header (7.3.4358):
+  - TUISearch/UI_Classic (7.4.4643):
+    - TUISearch/UI_Classic/Header (= 7.4.4643)
+    - TUISearch/UI_Classic/Service (= 7.4.4643)
+    - TUISearch/UI_Classic/UI (= 7.4.4643)
+  - TUISearch/UI_Classic/Header (7.4.4643):
     - TUISearch/UI_Classic/Service
-  - TUISearch/UI_Classic/Service (7.3.4358):
+  - TUISearch/UI_Classic/Service (7.4.4643):
     - TUISearch/UI_Classic/UI
-  - TUISearch/UI_Classic/UI (7.3.4358):
+  - TUISearch/UI_Classic/UI (7.4.4643):
     - TUISearch/BaseDataProvider
-  - TXIMSDK_Plus_iOS (7.3.4358)
-  - TXLiteAVSDK_Professional (11.3.14354):
-    - TXLiteAVSDK_Professional/Professional (= 11.3.14354)
-  - TXLiteAVSDK_Professional/Professional (11.3.14354)
+  - TXIMSDK_Plus_iOS (7.4.4643)
+  - TXLiteAVSDK_Professional (11.4.14445):
+    - TXLiteAVSDK_Professional/Professional (= 11.4.14445)
+  - TXLiteAVSDK_Professional/Professional (11.4.14445)
   - TYCyclePagerView (1.2.0)
   - TZImagePickerController (3.8.3):
     - TZImagePickerController/Basic (= 3.8.3)
@@ -388,14 +373,14 @@ SPEC CHECKSUMS:
   SDWebImage: 2aea163b50bfcb569a2726b6a754c54a4506fcf6
   SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608
   SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
-  TIMCommon: 2adea2895422a640e100125f6fccc0dc2aeff44b
-  TUIChat: 557dd6872606d9da7f36913af92ee95c8e651795
-  TUIConversation: 643823f80f0958b7263ac24411e397fcd5f37e78
-  TUICore: b0e525287eb03f95fe648a696c9ffb253fc87098
-  TUIGroup: 6a4133f356bd240997ac11bb94f89648899096f7
-  TUISearch: 18a208d0ef13eb7bf7f44eae01ffefb26803aaf3
-  TXIMSDK_Plus_iOS: bc72c7cec1b5e975c3cc6629692c849513a932f5
-  TXLiteAVSDK_Professional: 988a489779cec7bab5ca7af65d812eee5ce48409
+  TIMCommon: 944f70d62dda70a2e048b125770efb32eae4bc3b
+  TUIChat: 92e4ea0472dad566da6e6c88a4676b3dfb9482da
+  TUIConversation: 9c79518b59fd7e213bd817d1dbbc179a6dc1bda1
+  TUICore: 5b6f4409de9af3bc18f08735808c907f18db0a6c
+  TUIGroup: 9b53d271c5556616058ef979762fccc621e7ff5e
+  TUISearch: 8f84a6a62b6fd97ae32a89a1d241593acb433d98
+  TXIMSDK_Plus_iOS: 4fe66054d3bc6953f21562c5b2bcce5526ba589f
+  TXLiteAVSDK_Professional: 0c3b51b758f5ae91f6f13a502b6c5f1b8e6e819c
   TYCyclePagerView: 2b051dade0615c70784aa34f40c646feeddb7344
   TZImagePickerController: e9909edbadf7381140efc5b5c9f5bdbfd630f7d4
   Whiteboard: 4622f3866b7c35a9c757955619ba0a2b26d968f5

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1828 - 1953
KulexiuForTeacher/Pods/Pods.xcodeproj/project.pbxproj


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.