ifish/Ifish/UMCommunity/UMCommunitySDK/UMComDataController/Feed/UMComFeedListDataController.m

928 lines
28 KiB
Objective-C

//
// UMComFeedListDataController.m
// UMCommunity
//
// Created by umeng on 16/5/3.
// Copyright © 2016年 Umeng. All rights reserved.
//
#import "UMComFeedListDataController.h"
#import <UMCommunitySDK/UMComSession.h>
#import <UMComDataStorage/UMComFeed.h>
#import <UMCommunitySDK/UMComDataTypeDefine.h>
#import <UMComDataStorage/UMComDataBasePublicHeader.h>
#import <UMComNetwork/UMComHttpCode.h>
#import "UMComFeedDetailDataController.h"
#import "UMComUserDataController.h"
@interface UMComFeedListDataController ()
@property (nonatomic, strong) UMComFeedDetailDataController *feedDataController;
@property (nonatomic, strong) UMComUserDataController *userDataController;
@end
@implementation UMComFeedListDataController
- (instancetype)init
{
self = [super init];
if (self) {
self.count = UMCom_Limit_Page_Count;
}
return self;
}
- (void)deleteFeed:(UMComFeed *)feed completion:(UMComDataRequestCompletion)completion
{
self.feedDataController = [[UMComFeedDetailDataController alloc] initWithFeed:feed viewExtra:nil];
[self.feedDataController deletedFeedWithCompletion:^(id responseObject, NSError *error) {
if (completion) {
completion(feed, error);
}
}];
}
- (void)likeFeed:(UMComFeed *)feed completion:(UMComDataRequestCompletion)completion
{
self.feedDataController = [[UMComFeedDetailDataController alloc] initWithFeed:feed viewExtra:nil];
[self.feedDataController likeFeedWithCompletion:^(id responseObject, NSError *error) {
if (completion) {
completion(feed, error);
}
}];
}
- (void)favouriteFeed:(UMComFeed *)feed completion:(UMComDataRequestCompletion)completion
{
self.feedDataController = [[UMComFeedDetailDataController alloc] initWithFeed:feed viewExtra:nil];
[self.feedDataController favoriteFeedWithCompletion:^(id responseObject, NSError *error) {
if (completion) {
completion(feed, error);
}
}];
}
//
- (void)spamFeed:(UMComFeed *)feed completion:(UMComDataRequestCompletion)completion
{
self.feedDataController = [[UMComFeedDetailDataController alloc] initWithFeed:feed viewExtra:nil];
[self.feedDataController spamFeedWithCompletion:^(id responseObject, NSError *error) {
if (completion) {
completion(feed, error);
}
}];
}
- (void)commentFeed:(UMComFeed *)feed
content:(NSString *)content
images:(NSArray *)images
completion:(UMComDataRequestCompletion)completion
{
self.feedDataController = [[UMComFeedDetailDataController alloc] initWithFeed:feed viewExtra:nil];
[self.feedDataController commentFeedWithContent:content images:images completion:^(id responseObject, NSError *error) {
if (completion) {
completion(feed, error);
}
}];
}
- (void)replyCommentFeed:(UMComFeed *)feed
comment:(UMComComment *)comment
content:(NSString *)content
images:(NSArray *)images
completion:(UMComDataRequestCompletion)completion
{
self.feedDataController = [[UMComFeedDetailDataController alloc] initWithFeed:feed viewExtra:nil];
[self.feedDataController replyCommentFeedWithComment:comment content:content images:images completion:^(id responseObject, NSError *error) {
if (completion) {
completion(feed, error);
}
}];
}
- (void)shareFeed:(UMComFeed *)feed toPlatform:(NSString *)platform completion:(UMComDataRequestCompletion)completion
{
self.feedDataController = [[UMComFeedDetailDataController alloc] initWithFeed:feed viewExtra:nil];
[self.feedDataController shareToPlatform:platform completion:^(id responseObject, NSError *error) {
if (completion) {
completion(feed, error);
}
}];
}
#define mark - user
- (void)spamUser:(UMComUser *)user completion:(UMComDataRequestCompletion)completion
{
self.userDataController = [UMComUserDataController userDataControllerWithUser:user];
[self.userDataController spamUserCompletion:^(id responseObject, NSError *error) {
if (completion) {
completion(user, error);
}
}];
}
- (void)banUser:(UMComUser *)user
topics:(NSArray *)topics
completion:(UMComDataRequestCompletion)completion
{
self.userDataController = [UMComUserDataController userDataControllerWithUser:user];
[self.userDataController banUserWithTopics:[topics valueForKeyPath:@"topicID"] completion:^(id responseObject, NSError *error) {
if (completion) {
completion(user, error);
}
}];
}
#pragma mark -
- (void)fetchDataWithCompletion:(UMComDataListRequestCompletion)localfetchcompletion serverDataCompletion:(UMComDataListRequestCompletion)serverRequestCompletion
{
__weak typeof(self) weakSelf = self;
if (self.isReadLoacalData) {
[self fetchLocalDataWithCompletion:^(NSArray *responseData, NSError *error) {
if (localfetchcompletion) {
localfetchcompletion(responseData, error);
}
[weakSelf refreshNewDataCompletion:serverRequestCompletion];
}];
}else{
[self refreshNewDataCompletion:serverRequestCompletion];
}
}
/**
* 过滤普通流中的置顶数据
*
* @param orginCommonFeedList 从网络取得普通流
*
* @return 返回新的过滤的array(默认返回自身)
*/
-(NSArray*) filterTopItemWithCommonFeed:(NSArray*)orginCommonFeedList;
{
return orginCommonFeedList;
}
- (void)handleNewData:(NSDictionary *)data error:(NSError *)error completion:(UMComDataListRequestCompletion)completion
{
if (![data isKindOfClass:[NSDictionary class]] || error) {
if (completion) {
completion(nil, error);
}
return;
}
if (!self.dataArray) {
self.dataArray = [NSMutableArray array];
}else{
[self.dataArray removeAllObjects];
}
NSMutableArray *dataArray = [NSMutableArray array];
//设置置顶数据
if (self.topFeedListDataController && self.topFeedListDataController.topDataArray &&
self.topFeedListDataController.topDataArray.count > 0) {
[dataArray addObjectsFromArray:self.topFeedListDataController.topDataArray];
self.topItemsCount = self.topFeedListDataController.topDataArray.count;
}
else
{
self.topItemsCount = 0;
}
NSArray *feedList = [data valueForKey:UMComModelDataKey];
if (self.topFeedListDataController) {
feedList = [self filterTopItemWithCommonFeed:feedList];
}
if ([feedList isKindOfClass:[NSArray class]] && feedList.count >0) {
[dataArray addObjectsFromArray:feedList];
}
[self.dataArray addObjectsFromArray:dataArray];
self.nextPageUrl = [data valueForKey:UMComModelDataNextPageUrlKey];
self.canVisitNextPage = [[data valueForKey:UMComModelDataVisitKey] boolValue];
if (completion) {
completion(self.dataArray, error);
}
}
- (void)handleNextPageData:(NSDictionary *)data error:(NSError *)error completion:(UMComDataListRequestCompletion)completion
{
if (![data isKindOfClass:[NSDictionary class]] || error) {
if (completion) {
completion(nil, error);
}
return;
}
NSArray *feedList = [data valueForKey:UMComModelDataKey];
if (self.topFeedListDataController) {
//过滤置顶数据
feedList = [self filterTopItemWithCommonFeed:feedList];
}
if ([feedList isKindOfClass:[NSArray class]] && feedList.count >0) {
[self.dataArray addObjectsFromArray:feedList];
}
self.nextPageUrl = [data valueForKey:UMComModelDataNextPageUrlKey];
self.canVisitNextPage = [[data valueForKey:UMComModelDataVisitKey] boolValue];
if (completion) {
completion(feedList, error);
}
}
- (void)refreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakself = self;
if (self.topFeedListDataController) {
[self.topFeedListDataController refreshNewDataCompletion:^(NSArray *responseData, NSError *error) {
[weakself doRefreshNewDataCompletion:^(NSArray *responseData, NSError *error) {
//是否存储网络的对象
if (weakself.isSaveLoacalData && responseData && [responseData isKindOfClass:[NSArray class]]) {
[weakself saveLocalDataWithDataArray:responseData];
}
if (completion) {
completion(responseData,error);
}
}];
}];
}
else{
[self doRefreshNewDataCompletion:^(NSArray *responseData, NSError *error) {
//是否存储网络的对象
if (weakself.isSaveLoacalData && responseData && [responseData isKindOfClass:[NSArray class]]) {
[weakself saveLocalDataWithDataArray:responseData];
}
if (completion) {
completion(responseData,error);
}
}];
}
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
if (completion) {
completion(nil,nil);
}
}
@end
@implementation UMComFeedRealTimeHotDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_RealTimeHotFeed count:count];
if (self) {
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchRealTimeHotFeedsWithCount:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
-(void)fetchLocalDataWithCompletion:(UMComDataListRequestCompletion)localfetchcompletion
{
[super fetchLocalDataWithCompletion:localfetchcompletion];
}
-(void)saveLocalDataWithDataArray:(NSArray*)dataArray
{
[super saveLocalDataWithDataArray:dataArray];
}
@end
/**
*热门Feed流
*/
@implementation UMComFeedHotDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_CommunityHotFeed count:count];
if (self) {
}
return self;
}
- (instancetype)initWithCount:(NSInteger)count hotDay:(NSInteger)hotDay
{
self = [self initWithCount:count];
if (self) {
self.hotDay = hotDay;
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsHotestWithDays:self.hotDay count:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
-(void)fetchLocalDataWithCompletion:(UMComDataListRequestCompletion)localfetchcompletion
{
__weak typeof(self) weakSelf = self;
[[UMComDataBaseManager shareManager] fetchASyncCommunityHotFeedWithHotDay:self.hotDay withCompleteBlock:^(NSArray* dataArray, NSError * error) {
[weakSelf handleLocalData:dataArray error:error completion:localfetchcompletion];
}];
}
-(void)saveLocalDataWithDataArray:(NSArray*)dataArray
{
[[UMComDataBaseManager shareManager] saveCommunityHotFeedWithHotDay:self.hotDay withFeeds:dataArray];
}
@end
/**
*实时feed流
*/
@implementation UMComFeedRealTimeDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_RealTimeFeed count:count];
if (self) {
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsRealTimeWithCount:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
-(void)fetchLocalDataWithCompletion:(UMComDataListRequestCompletion)localfetchcompletion
{
CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
[[UMComDataBaseManager shareManager] fetchASyncUMComFeedWithType:g_relatedIDTableTypeFromPageRequestType(self.pageRequestType) withCompleteBlock:^(id feedArray, NSError * error) {
CFAbsoluteTime end = CFAbsoluteTimeGetCurrent();
NSLog(@"time fetchLocalDataWithCompletion: %0.3f", end - start);
if (localfetchcompletion) {
localfetchcompletion(feedArray,error);
}
}];
}
-(void)saveLocalDataWithDataArray:(NSArray*)dataArray
{
[[UMComDataBaseManager shareManager] saveRelatedIDTableWithType:g_relatedIDTableTypeFromPageRequestType(self.pageRequestType) withFeeds:dataArray];
}
-(NSArray*) filterTopItemWithCommonFeed:(NSArray*)orginCommonFeedList
{
if (orginCommonFeedList && [orginCommonFeedList isKindOfClass:[NSArray class]] && orginCommonFeedList.count > 0) {
NSMutableArray* filterCommonFeedList = [NSMutableArray arrayWithCapacity:10];
[orginCommonFeedList enumerateObjectsUsingBlock:^(UMComFeed* _Nonnull feed, NSUInteger idx, BOOL * _Nonnull stop) {
if (feed && [feed isKindOfClass:[UMComFeed class]]) {
if ([feed.is_top isKindOfClass:[NSNumber class]] && feed.is_top.integerValue == 1) {
}
else{
[filterCommonFeedList addObject:feed];
}
}
}];
return filterCommonFeedList;
}
return [super filterTopItemWithCommonFeed:orginCommonFeedList];
}
@end
/**
*关注feed流
*/
@implementation UMComFeedFocusDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_FocusedFeed count:count];
if (self) {
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsByFollowWithCount:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
@end
/**
*推荐feed流
*/
@implementation UMComFeedRecommendDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_RecommendFeed count:count];
if (self) {
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsRecommentWithCount:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
@end
/**
*时间戳feed流
*/
@implementation UMComFeedTimeLineDataController
- (instancetype)initWithCount:(NSInteger)count
userID:(NSString *)userID
timeLineFeedListType:(UMComTimeLineFeedListType)timeLineFeedListType
{
self = [super initWithRequestType:UMComRequestType_RealTimeFeed count:count];
if (self) {
self.userID = userID;
self.timeLineFeedListType = timeLineFeedListType;
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsTimelineWithUid:self.userID sortType:self.timeLineFeedListType count:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
-(void)fetchLocalDataWithCompletion:(UMComDataListRequestCompletion)localfetchcompletion
{
__weak typeof(self) weakSelf = self;
[[UMComDataBaseManager shareManager] fetchASyncRelatedFeedIDWithUID:self.userID withCompleteBlock:^(NSArray* dataArray, NSError * error) {
[weakSelf handleLocalData:dataArray error:error completion:localfetchcompletion];
}];
}
-(void)saveLocalDataWithDataArray:(NSArray*)dataArray
{
[[UMComDataBaseManager shareManager] saveRelatedFeedIDWithUID:self.userID withFeeds:dataArray];
}
@end
/**
*话题下最新发布的feed流
*/
@implementation UMComFeedTopicFeedDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_TopicLatesReleaseFeed count:count];
if (self) {
}
return self;
}
- (instancetype)initWithCount:(NSInteger)count topicId:(NSString *)topicId topicFeedSortType:(UMComTopicFeedListSortType)topicFeedSortType
{
self = [super initWithRequestType:UMComRequestType_TopicLatesReleaseFeed count:count];
if (self) {
self.topicId = topicId;
self.topicFeedSortType = topicFeedSortType;
self.isReverse = NO;
}
return self;
}
- (instancetype)initWithCount:(NSInteger)count topicId:(NSString *)topicId topicFeedSortType:(UMComTopicFeedListSortType)topicFeedSortType isReverse:(BOOL)isReverse
{
if (self = [super initWithCount:count]) {
self.topicId = topicId;
self.topicFeedSortType = topicFeedSortType;
self.isReverse = isReverse;
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsTopicRelatedWithTopicId:self.topicId sortType:self.topicFeedSortType isReverse:self.isReverse count:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
@end
/**
*话题下热门feed流
*/
@implementation UMComFeedTopicHotDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_TopicHottestFeed count:count];
if (self) {
}
return self;
}
- (instancetype)initWithCount:(NSInteger)count topicId:(NSString *)topicId hotDay:(NSInteger)hotDay
{
self = [super initWithRequestType:UMComRequestType_TopicHottestFeed count:count];
if (self) {
self.topicId = topicId;
self.hotDay = hotDay;
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsTopicHotWithDays:self.hotDay topicId:self.topicId count:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
@end
/**
*话题下推荐feed流
*/
@implementation UMComFeedTopicRecommendDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_TopicRecommendFeed count:count];
if (self) {
}
return self;
}
- (instancetype)initWithCount:(NSInteger)count topicId:(NSString *)topicId
{
self = [super initWithRequestType:UMComRequestType_TopicRecommendFeed count:count];
if (self) {
self.topicId = topicId;
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsTopicRecommendWithTopicId:self.topicId count:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
@end
/**
*被@的feed流
*/
@implementation UMComFeedBeAtDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_UserBaAtFeed count:count];
if (self) {
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsUserBeAtWithCount:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
@end
/**
*我的好友圈的feed流
*/
@implementation UMComFeedFriendsDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_UserFriendsFeed count:count];
if (self) {
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsFriendsWithCount:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
@end
/**
*我的收藏的feed流
*/
@implementation UMComFeedFavoriteDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_UserFavoriteFeed count:count];
if (self) {
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsUserFavouriteWithCount:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
@end
/**
*附近的feed流
*/
@implementation UMComFeedSurroundingDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_SurroundingFeed count:count];
if (self) {
}
return self;
}
- (instancetype)initWithCount:(NSInteger)count location:(CLLocation *)location
{
self = [super initWithRequestType:UMComRequestType_SurroundingFeed count:count];
if (self) {
self.locatoion = location;
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsNearbyWithLocation:self.locatoion count:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
@end
/**
*搜索的feed流
*/
@implementation UMComFeedSearchDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_CoummunitySearchFeed count:count];
if (self) {
}
return self;
}
- (instancetype)initWithCount:(NSInteger)count keyWord:(NSString *)keyWord
{
self = [super initWithRequestType:UMComRequestType_CoummunitySearchFeed count:count];
if (self) {
self.keyWord = keyWord;
}
return self;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakSelf = self;
[[UMComDataRequestManager defaultManager] fetchFeedsSearchWithKeywords:self.keyWord count:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakSelf handleNewData:responseObject error:error completion:completion];
}];
}
@end
@interface UMComTopicFeedDataController ()
@property(nonatomic,strong)NSString* topicId;
@property(nonatomic,assign)BOOL isReverse;
@property(nonatomic,assign)NSInteger topicFeedcount;
@end
@implementation UMComTopicFeedDataController
- (instancetype)initWithCount:(NSInteger)count
{
self = [super initWithRequestType:UMComRequestType_RealTimeHotFeed count:count];
if (self) {
}
return self;
}
+ (id)fetchFeedsTopicRelatedWithTopicId:(NSString *)topicId
sortType:(UMComTopicFeedListSortType)sortType
isReverse:(BOOL)isReverse
count:(NSInteger)count
{
UMComTopicFeedDataController* topicFeedDataController = [[UMComTopicFeedDataController alloc] initWithRequestType:UMComRequestType_FeedWithTopicID count:count];
topicFeedDataController.topicId = topicId;
topicFeedDataController.sortType = sortType;
topicFeedDataController.isReverse = isReverse;
return topicFeedDataController;
}
- (void)doRefreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakself = self;
[[UMComDataRequestManager defaultManager] fetchFeedsTopicRelatedWithTopicId:self.topicId sortType:self.sortType isReverse:self.isReverse count:self.count completion:^(NSDictionary *responseObject, NSError *error) {
[weakself handleNewData:responseObject error:error completion:completion];
}];
}
-(NSArray*) filterTopItemWithCommonFeed:(NSArray*)orginCommonFeedList
{
if (orginCommonFeedList && [orginCommonFeedList isKindOfClass:[NSArray class]] && orginCommonFeedList.count > 0) {
NSMutableArray* filterCommonFeedList = [NSMutableArray arrayWithCapacity:10];
[orginCommonFeedList enumerateObjectsUsingBlock:^(UMComFeed* _Nonnull feed, NSUInteger idx, BOOL * _Nonnull stop) {
if (feed && [feed isKindOfClass:[UMComFeed class]]) {
if ([feed.is_topic_top isKindOfClass:[NSNumber class]] && feed.is_topic_top.integerValue == 1) {
}
else
{
[filterCommonFeedList addObject:feed];
}
}
}];
return filterCommonFeedList;
}
return [super filterTopItemWithCommonFeed:orginCommonFeedList];
}
@end
/*******************************************************/
/*置顶DataController begin*/
/*******************************************************/
@implementation UMComTopFeedListDataController
- (void)handleNewData:(NSDictionary *)data error:(NSError *)error completion:(UMComDataListRequestCompletion)completion
{
if (!self.topDataArray) {
self.topDataArray = [NSMutableArray array];
}
else{
[self.topDataArray removeAllObjects];
}
if (![data isKindOfClass:[NSDictionary class]]) {
if (completion) {
completion(nil, error);
}
return;
}
NSArray *feedList = [data valueForKey:UMComModelDataKey];
if ([feedList isKindOfClass:[NSArray class]] && feedList.count >0) {
[self.topDataArray addObjectsFromArray:feedList];
}
self.nextPageUrl = [data valueForKey:UMComModelDataNextPageUrlKey];
self.canVisitNextPage = [[data valueForKey:UMComModelDataVisitKey] boolValue];
self.topItemsCount = self.topDataArray.count;
if (completion) {
completion([data valueForKey:UMComModelDataKey], error);
}
}
@end
/**
* 全局置顶DataController
*/
@implementation UMComGlobalTopFeedListDataController
- (void)refreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakself = self;
[[UMComDataRequestManager defaultManager] fetchTopFeedWithCount:self.count
WithCompletion:^(NSDictionary *responseObject, NSError *error) {
[weakself handleNewData:responseObject error:error completion:completion];
}];
}
@end
/**
* 话题置顶DataController
*/
@implementation UMComTopTopicFeedListDataController
- (void)refreshNewDataCompletion:(UMComDataListRequestCompletion)completion
{
__weak typeof(self) weakself = self;
[[UMComDataRequestManager defaultManager] fetchTopTopicFeedWithCount:self.count
topfeedTopicID:self.topicID
WithCompletion:^(NSDictionary *responseObject, NSError *error) {
[weakself handleNewData:responseObject error:error completion:completion];
}];
}
@end
/*******************************************************/
/*置顶DataController end*/
/*******************************************************/