补齐搜索及进房记录
This commit is contained in:
@@ -204,6 +204,8 @@
|
||||
9B86D88328192DC000494FCD /* XPRoomRankEntranceView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D88228192DC000494FCD /* XPRoomRankEntranceView.m */; };
|
||||
9B86D886281942D200494FCD /* SocialMicroView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D885281942D200494FCD /* SocialMicroView.m */; };
|
||||
9B88E20C28C5EB8300D26FBA /* MessageContentRedPacketView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B88E20B28C5EB8300D26FBA /* MessageContentRedPacketView.m */; };
|
||||
9B88E20F28C6305400D26FBA /* XPRoomSearchRecordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B88E20E28C6305400D26FBA /* XPRoomSearchRecordViewController.m */; };
|
||||
9B88E21228C6365B00D26FBA /* XPHomeSearchRecordCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B88E21128C6365B00D26FBA /* XPHomeSearchRecordCell.m */; };
|
||||
9B8DE0E1289CF02900FB6EC2 /* XPGiftCompoundModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8DE0E0289CF02900FB6EC2 /* XPGiftCompoundModel.m */; };
|
||||
9B8DE0E4289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8DE0E3289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.m */; };
|
||||
9B8DE0E8289CFE8100FB6EC2 /* compound_gift_banner.svga in Resources */ = {isa = PBXBuildFile; fileRef = 9B8DE0E7289CFE8100FB6EC2 /* compound_gift_banner.svga */; };
|
||||
@@ -240,6 +242,7 @@
|
||||
9BA8A48327C726E8000365A3 /* ThemeColor+SkillCard.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA8A48227C726E8000365A3 /* ThemeColor+SkillCard.m */; };
|
||||
9BAA5FED277A1BBE007453F3 /* XPPrivacyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAA5FEC277A1BBE007453F3 /* XPPrivacyViewController.m */; };
|
||||
9BAA5FF0277A23F4007453F3 /* XPPermissionsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAA5FEF277A23F4007453F3 /* XPPermissionsViewController.m */; };
|
||||
9BAD41AC28C6EB13005E47B3 /* XPInRoomRecordPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BAD41AB28C6EB13005E47B3 /* XPInRoomRecordPresenter.m */; };
|
||||
9BB549592782E6A30090CD26 /* XPNobleCenterPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB549582782E6A30090CD26 /* XPNobleCenterPresenter.m */; };
|
||||
9BB5495C2782E79E0090CD26 /* NobleCenterModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB5495B2782E79E0090CD26 /* NobleCenterModel.m */; };
|
||||
9BB5495F2782E9DB0090CD26 /* NobleAuthInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BB5495E2782E9DB0090CD26 /* NobleAuthInfo.m */; };
|
||||
@@ -1565,6 +1568,10 @@
|
||||
9B86D885281942D200494FCD /* SocialMicroView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SocialMicroView.m; sourceTree = "<group>"; };
|
||||
9B88E20A28C5EB8300D26FBA /* MessageContentRedPacketView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MessageContentRedPacketView.h; sourceTree = "<group>"; };
|
||||
9B88E20B28C5EB8300D26FBA /* MessageContentRedPacketView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MessageContentRedPacketView.m; sourceTree = "<group>"; };
|
||||
9B88E20D28C6305400D26FBA /* XPRoomSearchRecordViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomSearchRecordViewController.h; sourceTree = "<group>"; };
|
||||
9B88E20E28C6305400D26FBA /* XPRoomSearchRecordViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomSearchRecordViewController.m; sourceTree = "<group>"; };
|
||||
9B88E21028C6365B00D26FBA /* XPHomeSearchRecordCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPHomeSearchRecordCell.h; sourceTree = "<group>"; };
|
||||
9B88E21128C6365B00D26FBA /* XPHomeSearchRecordCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPHomeSearchRecordCell.m; sourceTree = "<group>"; };
|
||||
9B8DE0DF289CF02900FB6EC2 /* XPGiftCompoundModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGiftCompoundModel.h; sourceTree = "<group>"; };
|
||||
9B8DE0E0289CF02900FB6EC2 /* XPGiftCompoundModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPGiftCompoundModel.m; sourceTree = "<group>"; };
|
||||
9B8DE0E2289CF7AA00FB6EC2 /* XPRoomGiftCompoundView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomGiftCompoundView.h; sourceTree = "<group>"; };
|
||||
@@ -1637,6 +1644,9 @@
|
||||
9BAA5FEC277A1BBE007453F3 /* XPPrivacyViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPPrivacyViewController.m; sourceTree = "<group>"; };
|
||||
9BAA5FEE277A23F4007453F3 /* XPPermissionsViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPPermissionsViewController.h; sourceTree = "<group>"; };
|
||||
9BAA5FEF277A23F4007453F3 /* XPPermissionsViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPPermissionsViewController.m; sourceTree = "<group>"; };
|
||||
9BAD41AA28C6EB13005E47B3 /* XPInRoomRecordPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPInRoomRecordPresenter.h; sourceTree = "<group>"; };
|
||||
9BAD41AB28C6EB13005E47B3 /* XPInRoomRecordPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPInRoomRecordPresenter.m; sourceTree = "<group>"; };
|
||||
9BAD41AD28C6ECBA005E47B3 /* XPInRoomRecordProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPInRoomRecordProtocol.h; sourceTree = "<group>"; };
|
||||
9BB549572782E6A30090CD26 /* XPNobleCenterPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNobleCenterPresenter.h; sourceTree = "<group>"; };
|
||||
9BB549582782E6A30090CD26 /* XPNobleCenterPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNobleCenterPresenter.m; sourceTree = "<group>"; };
|
||||
9BB5495A2782E79E0090CD26 /* NobleCenterModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NobleCenterModel.h; sourceTree = "<group>"; };
|
||||
@@ -7703,6 +7713,8 @@
|
||||
E8F9168627EC927C00F10D8F /* XPHomeLittleGamePesenter.m */,
|
||||
9B3353BC288156DB00AC2F24 /* XPHomeLivePresenter.h */,
|
||||
9B3353BD288156DB00AC2F24 /* XPHomeLivePresenter.m */,
|
||||
9BAD41AA28C6EB13005E47B3 /* XPInRoomRecordPresenter.h */,
|
||||
9BAD41AB28C6EB13005E47B3 /* XPInRoomRecordPresenter.m */,
|
||||
);
|
||||
path = Presenter;
|
||||
sourceTree = "<group>";
|
||||
@@ -7717,6 +7729,7 @@
|
||||
E8A6C29C27CF53E100AC7442 /* XPHomeLikeProtocol.h */,
|
||||
E8F9168827EC928F00F10D8F /* XPHomeLittleGameProtocol.h */,
|
||||
9B3353BF2881570400AC2F24 /* XPHomeLiveProtocol.h */,
|
||||
9BAD41AD28C6ECBA005E47B3 /* XPInRoomRecordProtocol.h */,
|
||||
);
|
||||
path = Protocol;
|
||||
sourceTree = "<group>";
|
||||
@@ -7781,6 +7794,8 @@
|
||||
E8C6FFDF2754EEF9004DC9F0 /* XPHomeSearchViewController.m */,
|
||||
E87A27012758BC81002DDC7A /* XPRoomSearchContainerViewController.h */,
|
||||
E87A27022758BC81002DDC7A /* XPRoomSearchContainerViewController.m */,
|
||||
9B88E20D28C6305400D26FBA /* XPRoomSearchRecordViewController.h */,
|
||||
9B88E20E28C6305400D26FBA /* XPRoomSearchRecordViewController.m */,
|
||||
);
|
||||
path = View;
|
||||
sourceTree = "<group>";
|
||||
@@ -7829,6 +7844,8 @@
|
||||
E8F9168A27EC940E00F10D8F /* XPHomeLittleGameTableViewCell.m */,
|
||||
9B39C88728854AB300564D17 /* XPHomeLiveRecordCell.h */,
|
||||
9B39C88828854AB300564D17 /* XPHomeLiveRecordCell.m */,
|
||||
9B88E21028C6365B00D26FBA /* XPHomeSearchRecordCell.h */,
|
||||
9B88E21128C6365B00D26FBA /* XPHomeSearchRecordCell.m */,
|
||||
);
|
||||
path = Cell;
|
||||
sourceTree = "<group>";
|
||||
@@ -9040,6 +9057,7 @@
|
||||
189DD53426DE255300AB55B1 /* TabbarViewController.m in Sources */,
|
||||
E81EF6E4279AB92E00FF3EDE /* LittleGameInfoModel.m in Sources */,
|
||||
E87A26F927587C62002DDC7A /* XPHomeContainerPresenter.m in Sources */,
|
||||
9B88E21228C6365B00D26FBA /* XPHomeSearchRecordCell.m in Sources */,
|
||||
18EE401A2754BA9F00A452BF /* NIMMessageMaker.m in Sources */,
|
||||
E8EEB91D26FC9D58007C6EBA /* XPMineUserInfoDateView.m in Sources */,
|
||||
E82325E9274CE56A003A3332 /* XPShareItem.m in Sources */,
|
||||
@@ -9295,6 +9313,7 @@
|
||||
9B734F79288A9C4B00CBDAA9 /* XPMineGameTableViewCell.m in Sources */,
|
||||
E8664EDC27E43632000171BA /* XPRoomPKEmptyTableViewCell.m in Sources */,
|
||||
E880B3A9278BD82300A83B0D /* AcrossRoomPKInfoModel.m in Sources */,
|
||||
9B88E20F28C6305400D26FBA /* XPRoomSearchRecordViewController.m in Sources */,
|
||||
E82D5C7A276B25D100858D6D /* SpriteSheetImageManager.m in Sources */,
|
||||
E874B88B27215EAF003954B9 /* MicroQueueModel.m in Sources */,
|
||||
9B92A3662798132600AD168F /* XPSkillCardTypeView.m in Sources */,
|
||||
@@ -9621,6 +9640,7 @@
|
||||
E8232600274E48EA003A3332 /* XPUserCardItemCollectionViewCell.m in Sources */,
|
||||
E88B5CC526FB42B000DA9178 /* XPMineUserInfoHeaderView.m in Sources */,
|
||||
E8EEB8FB26FC2874007C6EBA /* XPMineUserInfoTableViewCell.m in Sources */,
|
||||
9BAD41AC28C6EB13005E47B3 /* XPInRoomRecordPresenter.m in Sources */,
|
||||
E8AC721626F46B06007D6E91 /* XPMineSettingTableViewCell.m in Sources */,
|
||||
18EE3FDF2750C1F700A452BF /* SessionListCell.m in Sources */,
|
||||
9BB549622782EA1D0090CD26 /* NobleInfo.m in Sources */,
|
||||
|
22
xplan-ios/Main/Home/Presenter/XPInRoomRecordPresenter.h
Normal file
22
xplan-ios/Main/Home/Presenter/XPInRoomRecordPresenter.h
Normal file
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// XPInRoomRecordPresenter.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/9/6.
|
||||
//
|
||||
|
||||
#import "BaseMvpPresenter.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPInRoomRecordPresenter : BaseMvpPresenter
|
||||
|
||||
///获取进房记录
|
||||
- (void)getInRoomRecordList;
|
||||
|
||||
/// 清除进房记录
|
||||
- (void)cleanInRoomRecord;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
34
xplan-ios/Main/Home/Presenter/XPInRoomRecordPresenter.m
Normal file
34
xplan-ios/Main/Home/Presenter/XPInRoomRecordPresenter.m
Normal file
@@ -0,0 +1,34 @@
|
||||
//
|
||||
// XPInRoomRecordPresenter.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/9/6.
|
||||
//
|
||||
|
||||
#import "XPInRoomRecordPresenter.h"
|
||||
#import "Api+Mine.h"
|
||||
#import "AccountInfoStorage.h"
|
||||
#import "XPMineFootPrintModel.h"
|
||||
#import "XPInRoomRecordProtocol.h"
|
||||
|
||||
@implementation XPInRoomRecordPresenter
|
||||
|
||||
///获取进房记录
|
||||
- (void)getInRoomRecordList {
|
||||
NSString *uid = [AccountInfoStorage instance].getUid;
|
||||
[Api requestFootPrint:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSArray *array = [XPMineFootPrintModel modelsWithArray:data.data];
|
||||
[[self getView] getInRoomRecordSuccess:array];
|
||||
} fail:^(NSInteger code, NSString * _Nullable msg) {
|
||||
}] uid:uid page:@"1" pageSize:@"100"];
|
||||
}
|
||||
|
||||
/// 清除进房记录
|
||||
- (void)cleanInRoomRecord {
|
||||
NSString *uid = [AccountInfoStorage instance].getUid;
|
||||
[Api requestCleanFootPrint:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
[[self getView] cleanInRoomRecordSuccess];
|
||||
}] uid:uid];
|
||||
}
|
||||
|
||||
@end
|
30
xplan-ios/Main/Home/Protocol/XPInRoomRecordProtocol.h
Normal file
30
xplan-ios/Main/Home/Protocol/XPInRoomRecordProtocol.h
Normal file
@@ -0,0 +1,30 @@
|
||||
//
|
||||
// XPInRoomRecordProtocol.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/9/6.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class XPMineFootPrintModel;
|
||||
@protocol XPInRoomRecordProtocol <NSObject>
|
||||
|
||||
///获取个播浏览记录成功
|
||||
//- (void)getOnceLookRoomListSuccess:(HomeLiveLookRecordModel *)data;
|
||||
//
|
||||
/////获取所有的tag成功
|
||||
//- (void)getHomeLiveTagListSuccess:(NSArray<HomeLiveTagModel *> *)array;
|
||||
/////获取所有的tag失败
|
||||
//- (void)getHomeLiveTagListFail:(NSArray<HomeLiveTagModel *> *)array;
|
||||
//
|
||||
/////获取个播房成功
|
||||
//- (void)getAnchorRoomListSuccess:(NSArray<HomeRecommendRoomModel *> *)array;
|
||||
|
||||
///获取进房记录成功
|
||||
- (void)getInRoomRecordSuccess:(NSArray<XPMineFootPrintModel *> *)array;
|
||||
|
||||
///清除进房记录成功
|
||||
- (void)cleanInRoomRecordSuccess;
|
||||
|
||||
@end
|
@@ -8,9 +8,12 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class HomeLiveRoomModel;
|
||||
@class HomeLiveRoomModel, XPMineFootPrintModel;
|
||||
@interface XPHomeAttentionCollectionViewCell : UICollectionViewCell
|
||||
|
||||
@property (nonatomic,strong) HomeLiveRoomModel *liveRoom;
|
||||
@property (nonatomic, strong) XPMineFootPrintModel *recordRoom;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -14,6 +14,7 @@
|
||||
#import "UIImage+Utils.h"
|
||||
///Model
|
||||
#import "HomeLiveRoomModel.h"
|
||||
#import "XPMineFootPrintModel.h"
|
||||
|
||||
@interface XPHomeAttentionCollectionViewCell ()
|
||||
///头像
|
||||
@@ -99,6 +100,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setRecordRoom:(XPMineFootPrintModel *)recordRoom {
|
||||
_recordRoom = recordRoom;
|
||||
if (recordRoom) {
|
||||
self.avatarImageView.imageUrl = recordRoom.avatar;
|
||||
self.nickLabel.text = recordRoom.title;
|
||||
self.noteBgImageView.hidden = YES;
|
||||
}
|
||||
}
|
||||
|
||||
- (NetImageView *)avatarImageView {
|
||||
if (!_avatarImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
|
18
xplan-ios/Main/Home/View/Cell/XPHomeSearchRecordCell.h
Normal file
18
xplan-ios/Main/Home/View/Cell/XPHomeSearchRecordCell.h
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// XPHomeSearchRecordCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/9/5.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPHomeSearchRecordCell : UICollectionViewCell
|
||||
|
||||
@property (nonatomic, copy) NSString *recordString;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
51
xplan-ios/Main/Home/View/Cell/XPHomeSearchRecordCell.m
Normal file
51
xplan-ios/Main/Home/View/Cell/XPHomeSearchRecordCell.m
Normal file
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// XPHomeSearchRecordCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/9/5.
|
||||
//
|
||||
|
||||
#import "XPHomeSearchRecordCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
|
||||
@interface XPHomeSearchRecordCell ()
|
||||
|
||||
///昵称
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPHomeSearchRecordCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
self.backgroundColor = [UIColor whiteColor];
|
||||
self.layer.cornerRadius = 13;
|
||||
self.layer.masksToBounds = YES;
|
||||
[self addSubview:self.titleLabel];
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.center.mas_equalTo(self);
|
||||
}];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
- (void)setRecordString:(NSString *)recordString {
|
||||
self.titleLabel.text = recordString;
|
||||
}
|
||||
|
||||
#pragma mark - Getter & Setter
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.textColor = [ThemeColor mainTextColor];
|
||||
_titleLabel.font = [UIFont systemFontOfSize:12];
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
|
||||
|
||||
@end
|
@@ -14,6 +14,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (void)xPHomeSearchNavView:(XPHomeSearchNavView *)view didClickBack:(UIButton *)sender;
|
||||
///点击了搜索
|
||||
- (void)xPHomeSearchNavView:(XPHomeSearchNavView *)view didClickSearch:(UIButton *)sender;
|
||||
///搜索框没有文字
|
||||
- (void)xPHomeSearchNavViewClearTextField:(XPHomeSearchNavView *)view;
|
||||
|
||||
@end
|
||||
|
||||
@interface XPHomeSearchNavView : UIView
|
||||
|
@@ -30,12 +30,18 @@
|
||||
|
||||
@implementation XPHomeSearchNavView
|
||||
|
||||
- (void)dealloc {
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldChange:) name:UITextFieldTextDidChangeNotification object:nil];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@@ -96,6 +102,16 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (void)textFieldChange:(NSNotification *)notification {
|
||||
UITextField *textField = (UITextField *)notification.object;
|
||||
NSString *searchStr = textField.text;
|
||||
if (searchStr.length == 0) {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPHomeSearchNavViewClearTextField:)]) {
|
||||
[self.delegate xPHomeSearchNavViewClearTextField:self];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
|
||||
- (UIButton *)backButton {
|
||||
|
@@ -16,11 +16,12 @@
|
||||
#import "XPHomeSearchNavView.h"
|
||||
///View
|
||||
#import "XPHomeSearchViewController.h"
|
||||
#import "XPRoomSearchRecordViewController.h"
|
||||
|
||||
UIKIT_EXTERN NSString *kFromSearchToHomeViewKey;
|
||||
UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
|
||||
|
||||
@interface XPRoomSearchContainerViewController ()<JXCategoryViewDelegate, JXCategoryListContainerViewDelegate, XPHomeSearchNavViewDelegate,UITextFieldDelegate>
|
||||
@interface XPRoomSearchContainerViewController ()<JXCategoryViewDelegate, JXCategoryListContainerViewDelegate, XPHomeSearchNavViewDelegate,UITextFieldDelegate, XPRoomSearchRecordViewControllerDelegate>
|
||||
///分页标题
|
||||
@property (nonatomic, strong) NSArray<NSString *> *titles;
|
||||
///分页控件
|
||||
@@ -33,6 +34,9 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
|
||||
@property (nonatomic,strong) XPHomeSearchViewController *roomVC;
|
||||
///用户
|
||||
@property (nonatomic,strong) XPHomeSearchViewController *userVC;
|
||||
///进房、搜索记录
|
||||
@property (nonatomic, strong) XPRoomSearchRecordViewController *recordVc;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPRoomSearchContainerViewController
|
||||
@@ -53,6 +57,8 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
|
||||
[self.view addSubview:self.searchView];
|
||||
[self.view addSubview:self.titleView];
|
||||
[self.view addSubview:self.contentView];
|
||||
[self.view addSubview:self.recordVc.view];
|
||||
[self addChildViewController:self.recordVc];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
@@ -71,6 +77,11 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
|
||||
make.top.mas_equalTo(self.titleView.mas_bottom).offset(10);
|
||||
make.left.right.bottom.mas_equalTo(self.view);
|
||||
}];
|
||||
[self.recordVc.view mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.view);
|
||||
make.top.mas_equalTo(self.searchView.mas_bottom);
|
||||
make.bottom.mas_equalTo(self.view);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)searchVCLoadData:(NSString *)text {
|
||||
@@ -95,6 +106,8 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
|
||||
if (textField.text.length > 0) {
|
||||
[textField resignFirstResponder];
|
||||
[self searchVCLoadData:textField.text];
|
||||
[self.recordVc storeSearchRecord:textField.text];
|
||||
self.recordVc.view.hidden = YES;
|
||||
} else {
|
||||
[self showErrorToast:@"请输入需要搜索的内容"];
|
||||
}
|
||||
@@ -106,6 +119,8 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
|
||||
if (view.searchTextField.text.length > 0) {
|
||||
[view.searchTextField resignFirstResponder];
|
||||
[self searchVCLoadData:view.searchTextField.text];
|
||||
[self.recordVc storeSearchRecord:view.searchTextField.text];
|
||||
self.recordVc.view.hidden = YES;
|
||||
} else {
|
||||
[self showErrorToast:@"请输入需要搜索的内容"];
|
||||
}
|
||||
@@ -122,6 +137,24 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
|
||||
[self dismissViewControllerAnimated:YES completion:nil];
|
||||
}
|
||||
|
||||
///搜索框没有文字
|
||||
- (void)xPHomeSearchNavViewClearTextField:(XPHomeSearchNavView *)view {
|
||||
self.recordVc.view.hidden = NO;
|
||||
[self.recordVc updateSearchRecord];
|
||||
}
|
||||
|
||||
#pragma mark - XPRoomSearchRecordViewControllerDelegate
|
||||
- (void)xPRoomSearchRecordViewControllerSearchWithWord:(NSString *)word {
|
||||
if (word.length > 0) {
|
||||
self.searchView.searchTextField.text = word;
|
||||
[self searchVCLoadData:word];
|
||||
[self.recordVc storeSearchRecord:word];
|
||||
self.recordVc.view.hidden = YES;
|
||||
} else {
|
||||
[self showErrorToast:@"请输入需要搜索的内容"];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (JXCategoryTitleView *)titleView {
|
||||
if (!_titleView) {
|
||||
@@ -184,4 +217,12 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
|
||||
return _userVC;
|
||||
}
|
||||
|
||||
- (XPRoomSearchRecordViewController *)recordVc {
|
||||
if (!_recordVc) {
|
||||
_recordVc = [[XPRoomSearchRecordViewController alloc] init];
|
||||
_recordVc.delegate = self;
|
||||
}
|
||||
return _recordVc;
|
||||
}
|
||||
|
||||
@end
|
||||
|
29
xplan-ios/Main/Home/View/XPRoomSearchRecordViewController.h
Normal file
29
xplan-ios/Main/Home/View/XPRoomSearchRecordViewController.h
Normal file
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// XPRoomSearchRecordViewController.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/9/5.
|
||||
//
|
||||
|
||||
#import "MvpViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol XPRoomSearchRecordViewControllerDelegate <NSObject>
|
||||
|
||||
- (void)xPRoomSearchRecordViewControllerSearchWithWord:(NSString *)word;
|
||||
|
||||
@end
|
||||
|
||||
@interface XPRoomSearchRecordViewController : MvpViewController
|
||||
|
||||
@property (nonatomic, weak) id<XPRoomSearchRecordViewControllerDelegate> delegate;
|
||||
/// 保存搜索记录
|
||||
- (void)storeSearchRecord:(NSString *)record;
|
||||
|
||||
///更新搜索记录
|
||||
- (void)updateSearchRecord;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
349
xplan-ios/Main/Home/View/XPRoomSearchRecordViewController.m
Normal file
349
xplan-ios/Main/Home/View/XPRoomSearchRecordViewController.m
Normal file
@@ -0,0 +1,349 @@
|
||||
//
|
||||
// XPRoomSearchRecordViewController.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/9/5.
|
||||
//
|
||||
|
||||
#import "XPRoomSearchRecordViewController.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "AccountInfoStorage.h"
|
||||
#import "TTPopup.h"
|
||||
///View
|
||||
#import "XPHomeAttentionCollectionViewCell.h"
|
||||
#import "XPHomeSearchRecordCell.h"
|
||||
#import "XPRoomViewController.h"
|
||||
#import "XPMineUserInfoViewController.h"
|
||||
///P
|
||||
#import "XPInRoomRecordPresenter.h"
|
||||
#import "XPInRoomRecordProtocol.h"
|
||||
///Model
|
||||
#import "XPMineFootPrintModel.h"
|
||||
|
||||
NSString * const XPConstSearchRecordStoreKey = @"XPConstSearchRecordStoreKey";
|
||||
|
||||
@interface XPRoomSearchRecordViewController ()<UICollectionViewDelegate, UICollectionViewDataSource, XPInRoomRecordProtocol>
|
||||
|
||||
@property (nonatomic, strong) UILabel *recordTitle;
|
||||
@property (nonatomic, strong) UIButton *clearRecordBtn;
|
||||
@property (nonatomic, strong) UILabel *roomTitle;
|
||||
@property (nonatomic, strong) UIButton *clearRoomBtn;
|
||||
///列表
|
||||
@property (nonatomic, strong) UICollectionView *searchCollectionView;
|
||||
|
||||
@property (nonatomic, strong) UICollectionView *roomCollectionView;
|
||||
///数据源
|
||||
@property (nonatomic, strong) NSMutableArray *searchList;
|
||||
|
||||
@property (nonatomic, strong) NSMutableArray *inRoomList;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPRoomSearchRecordViewController
|
||||
|
||||
- (XPInRoomRecordPresenter *)createPresenter {
|
||||
return [[XPInRoomRecordPresenter alloc] init];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
[self initSearchRecordData];
|
||||
[self.presenter getInRoomRecordList];
|
||||
}
|
||||
|
||||
- (void)initSearchRecordData {
|
||||
[self.searchList removeAllObjects];
|
||||
NSArray *array = [self searchRecordList];
|
||||
[self.searchList addObjectsFromArray:array];
|
||||
[self.searchCollectionView reloadData];
|
||||
if (array.count) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
- (void)viewWillLayoutSubviews {
|
||||
[super viewWillLayoutSubviews];
|
||||
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewWillAppear:animated];
|
||||
}
|
||||
|
||||
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
|
||||
[self.view endEditing:YES];
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self.view addSubview:self.recordTitle];
|
||||
[self.view addSubview:self.clearRecordBtn];
|
||||
[self.view addSubview:self.searchCollectionView];
|
||||
[self.view addSubview:self.roomTitle];
|
||||
[self.view addSubview:self.clearRoomBtn];
|
||||
[self.view addSubview:self.roomCollectionView];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.recordTitle mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(16);
|
||||
make.top.mas_equalTo(10);
|
||||
make.height.mas_equalTo(20);
|
||||
}];
|
||||
[self.clearRecordBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(-16);
|
||||
make.centerY.mas_equalTo(self.recordTitle);
|
||||
make.width.height.mas_equalTo(30);
|
||||
}];
|
||||
[self.searchCollectionView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.view);
|
||||
make.height.mas_equalTo(26);
|
||||
make.top.mas_equalTo(self.recordTitle.mas_bottom).mas_offset(8);
|
||||
}];
|
||||
|
||||
[self.roomTitle mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(16);
|
||||
make.top.mas_equalTo(self.searchCollectionView.mas_bottom).mas_offset(24);
|
||||
make.height.mas_equalTo(20);
|
||||
}];
|
||||
[self.clearRoomBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(-16);
|
||||
make.centerY.mas_equalTo(self.roomTitle);
|
||||
make.width.height.mas_equalTo(30);
|
||||
}];
|
||||
[self.roomCollectionView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.view);
|
||||
make.height.mas_equalTo(75);
|
||||
make.top.mas_equalTo(self.roomTitle.mas_bottom).mas_offset(8);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - UICollectionViewDelegate
|
||||
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
|
||||
if (collectionView == self.searchCollectionView) {
|
||||
return self.searchList.count;
|
||||
} else {
|
||||
return self.inRoomList.count;
|
||||
}
|
||||
}
|
||||
|
||||
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (collectionView == self.searchCollectionView) {
|
||||
XPHomeSearchRecordCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPHomeSearchRecordCell class]) forIndexPath:indexPath];
|
||||
cell.recordString = [self.searchList objectAtIndex:indexPath.row];
|
||||
return cell;
|
||||
} else {
|
||||
XPHomeAttentionCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPHomeAttentionCollectionViewCell class]) forIndexPath:indexPath];
|
||||
cell.recordRoom = self.inRoomList[indexPath.row];
|
||||
return cell;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (collectionView == self.searchCollectionView) {
|
||||
NSString *str = self.searchList[indexPath.row];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPRoomSearchRecordViewControllerSearchWithWord:)]) {
|
||||
[self.delegate xPRoomSearchRecordViewControllerSearchWithWord:str];
|
||||
}
|
||||
} else {
|
||||
XPMineFootPrintModel *resultModel = self.inRoomList[indexPath.row];
|
||||
[self dismissViewControllerAnimated:YES completion:nil];
|
||||
if (resultModel.valid) {
|
||||
[XPRoomViewController openRoom:resultModel.roomUid viewController:self.presentingViewController];
|
||||
} else {
|
||||
XPMineUserInfoViewController * infoVC = [[XPMineUserInfoViewController alloc] init];
|
||||
infoVC.uid = resultModel.roomUid.integerValue;
|
||||
[(UINavigationController *)self.presentingViewController pushViewController:infoVC animated:YES];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (collectionView == self.searchCollectionView) {
|
||||
NSString *str = [self.searchList objectAtIndex:indexPath.row];
|
||||
CGFloat width = [str boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:12]} context:nil].size.width;
|
||||
return CGSizeMake(width + 26, 26);
|
||||
} else {
|
||||
return CGSizeMake(56, 75);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - 搜索记录操作
|
||||
/// 获取搜索记录
|
||||
- (NSArray *)searchRecordList {
|
||||
NSString *key = [NSString stringWithFormat:@"%@_%@", XPConstSearchRecordStoreKey, [AccountInfoStorage instance].getUid];
|
||||
NSArray *list = [[NSUserDefaults standardUserDefaults] objectForKey:key];
|
||||
return list;
|
||||
}
|
||||
|
||||
/// 保存搜索记录
|
||||
- (void)storeSearchRecord:(NSString *)record {
|
||||
if (record == nil || record.length <= 0) {
|
||||
return;
|
||||
}
|
||||
NSString *key = [NSString stringWithFormat:@"%@_%@", XPConstSearchRecordStoreKey, [AccountInfoStorage instance].getUid];
|
||||
NSMutableArray *list = [[[NSUserDefaults standardUserDefaults] objectForKey:key] mutableCopy];
|
||||
if (list == nil) {
|
||||
list = [[NSMutableArray alloc] init];
|
||||
}
|
||||
|
||||
[list removeObject:record];//去重
|
||||
[list insertObject:record atIndex:0];//插入
|
||||
|
||||
if (list.count > 20) {//最多保存20条记录
|
||||
[list removeLastObject];
|
||||
}
|
||||
|
||||
[[NSUserDefaults standardUserDefaults] setValue:list forKey:key];
|
||||
[[NSUserDefaults standardUserDefaults] synchronize];
|
||||
}
|
||||
|
||||
/// 清空搜索记录
|
||||
- (void)cleanSearchRecord {
|
||||
NSString *key = [NSString stringWithFormat:@"%@_%@", XPConstSearchRecordStoreKey, [AccountInfoStorage instance].getUid];
|
||||
[[NSUserDefaults standardUserDefaults] removeObjectForKey:key];
|
||||
[[NSUserDefaults standardUserDefaults] synchronize];
|
||||
}
|
||||
|
||||
- (void)updateSearchRecord {
|
||||
[self initSearchRecordData];
|
||||
}
|
||||
|
||||
///获取进房记录成功
|
||||
- (void)getInRoomRecordSuccess:(NSArray<XPMineFootPrintModel *> *)array {
|
||||
[self.inRoomList removeAllObjects];
|
||||
[self.inRoomList addObjectsFromArray:array];
|
||||
[self.roomCollectionView reloadData];
|
||||
}
|
||||
|
||||
///清除进房记录成功
|
||||
- (void)cleanInRoomRecordSuccess {
|
||||
[self.inRoomList removeAllObjects];
|
||||
[self.roomCollectionView reloadData];
|
||||
}
|
||||
|
||||
#pragma mark - action
|
||||
- (void)onClearSearchRecordClick:(UIButton *)sender {
|
||||
TTAlertConfig * config = [[TTAlertConfig alloc] init];
|
||||
config.confirmButtonConfig.title = @"清空";
|
||||
config.cancelButtonConfig.title = @"手滑了";
|
||||
config.message = @"确定清空搜索记录吗?";
|
||||
[TTPopup alertWithConfig:config confirmHandler:^{
|
||||
[self cleanSearchRecord];
|
||||
[self.searchList removeAllObjects];
|
||||
[self.searchCollectionView reloadData];
|
||||
} cancelHandler:^{
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)onClearRoomClick:(UIButton *)sender {
|
||||
TTAlertConfig * config = [[TTAlertConfig alloc] init];
|
||||
config.confirmButtonConfig.title = @"清空";
|
||||
config.cancelButtonConfig.title = @"手滑了";
|
||||
config.message = @"确定清空进房记录吗?";
|
||||
[TTPopup alertWithConfig:config confirmHandler:^{
|
||||
[self.presenter cleanInRoomRecord];
|
||||
} cancelHandler:^{
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - getter
|
||||
- (UILabel *)recordTitle {
|
||||
if (!_recordTitle) {
|
||||
UILabel *label = [[UILabel alloc] init];
|
||||
label.text = @"搜索记录";
|
||||
label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold];
|
||||
label.textColor = [ThemeColor mainTextColor];
|
||||
_recordTitle = label;
|
||||
}
|
||||
return _recordTitle;
|
||||
}
|
||||
|
||||
- (UILabel *)roomTitle {
|
||||
if (!_roomTitle) {
|
||||
UILabel *label = [[UILabel alloc] init];
|
||||
label.text = @"进房记录";
|
||||
label.font = [UIFont systemFontOfSize:14 weight:UIFontWeightBold];
|
||||
label.textColor = [ThemeColor mainTextColor];
|
||||
_roomTitle = label;
|
||||
}
|
||||
return _roomTitle;
|
||||
}
|
||||
|
||||
- (UIButton *)clearRecordBtn {
|
||||
if (!_clearRecordBtn) {
|
||||
UIButton *btn = [[UIButton alloc] init];
|
||||
[btn setImage:[UIImage imageNamed:@"sessionList_clear"] forState:UIControlStateNormal];
|
||||
[btn addTarget:self action:@selector(onClearSearchRecordClick:) forControlEvents:UIControlEventTouchUpInside];
|
||||
_clearRecordBtn = btn;
|
||||
}
|
||||
return _clearRecordBtn;
|
||||
}
|
||||
|
||||
- (UIButton *)clearRoomBtn {
|
||||
if (!_clearRoomBtn) {
|
||||
UIButton *btn = [[UIButton alloc] init];
|
||||
[btn setImage:[UIImage imageNamed:@"sessionList_clear"] forState:UIControlStateNormal];
|
||||
[btn addTarget:self action:@selector(onClearRoomClick:) forControlEvents:UIControlEventTouchUpInside];
|
||||
_clearRoomBtn = btn;
|
||||
}
|
||||
return _clearRoomBtn;
|
||||
}
|
||||
|
||||
- (UICollectionView *)searchCollectionView{
|
||||
if (!_searchCollectionView) {
|
||||
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
||||
layout.minimumLineSpacing = 8;
|
||||
layout.minimumInteritemSpacing = 8;
|
||||
layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15);
|
||||
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
|
||||
_searchCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
||||
_searchCollectionView.showsHorizontalScrollIndicator = NO;
|
||||
_searchCollectionView.dataSource = self;
|
||||
_searchCollectionView.delegate = self;
|
||||
_searchCollectionView.backgroundColor = [UIColor clearColor];
|
||||
[_searchCollectionView registerClass:[XPHomeSearchRecordCell class] forCellWithReuseIdentifier:NSStringFromClass([XPHomeSearchRecordCell class])];
|
||||
}
|
||||
return _searchCollectionView;
|
||||
}
|
||||
|
||||
- (UICollectionView *)roomCollectionView{
|
||||
if (!_roomCollectionView) {
|
||||
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
||||
layout.minimumLineSpacing = 8;
|
||||
layout.minimumInteritemSpacing = 0;
|
||||
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
|
||||
layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15);
|
||||
_roomCollectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
||||
_roomCollectionView.showsHorizontalScrollIndicator = NO;
|
||||
_roomCollectionView.dataSource = self;
|
||||
_roomCollectionView.delegate = self;
|
||||
_roomCollectionView.backgroundColor = [UIColor clearColor];
|
||||
[_roomCollectionView registerClass:[XPHomeAttentionCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPHomeAttentionCollectionViewCell class])];
|
||||
}
|
||||
return _roomCollectionView;
|
||||
}
|
||||
|
||||
- (NSMutableArray *)searchList {
|
||||
if (!_searchList) {
|
||||
_searchList = [NSMutableArray array];
|
||||
}
|
||||
return _searchList;
|
||||
}
|
||||
|
||||
- (NSMutableArray *)inRoomList {
|
||||
if (!_inRoomList) {
|
||||
_inRoomList = [NSMutableArray array];
|
||||
}
|
||||
return _inRoomList;
|
||||
}
|
||||
|
||||
@end
|
Reference in New Issue
Block a user