Skip to content

Commit 7a309dc

Browse files
committed
poll - 根据id拿数据
1 parent 34bd2b3 commit 7a309dc

4 files changed

Lines changed: 56 additions & 21 deletions

File tree

Coding_iOS/Controllers/ConversationViewController.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ - (void)doPoll{
207207
}
208208
__weak typeof(self) weakSelf = self;
209209
[[Coding_NetAPIManager sharedManager] request_Fresh_PrivateMessages:_myPriMsgs andBlock:^(id data, NSError *error) {
210-
if (data) {
210+
if (data && [(NSArray *)data count] > 0) {
211211
[weakSelf.myPriMsgs configWithPollArray:data];
212212
[weakSelf dataChangedWithError:NO scrollToBottom:YES animated:YES];
213213
}

Coding_iOS/Models/PrivateMessages.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
@property (readwrite, nonatomic, strong) NSMutableArray *list, *nextMessages, *dataList;
1717
@property (readwrite, nonatomic, strong) User *curFriend;
1818
+ (PrivateMessages *)priMsgsWithUser:(User *)user;
19+
+ (id)analyzeResponseData:(NSDictionary *)responseData;
1920

2021
- (NSString *)localPrivateMessagesPath;
2122
- (NSString *)toPath;
@@ -24,7 +25,7 @@
2425
- (NSString *)toPollPath;
2526
- (NSDictionary *)toPollParams;
2627

27-
- (void)configWithObj:(PrivateMessages *)priMsgs;
28+
- (void)configWithObj:(id)anObj;
2829
- (void)configWithPollArray:(NSArray *)pollList;
2930
- (void)sendNewMessage:(PrivateMessage *)nextMsg;
3031
- (void)sendSuccessMessage:(PrivateMessage *)sucessMsg andOldMessage:(PrivateMessage *)oldMsg;

Coding_iOS/Models/PrivateMessages.m

Lines changed: 47 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,20 @@ + (PrivateMessages *)priMsgsWithUser:(User *)user{
6363
return priMsgs;
6464
}
6565

66+
+ (id)analyzeResponseData:(NSDictionary *)responseData{
67+
id data = [responseData valueForKeyPath:@"data"];
68+
if (!data) {//旧数据直接保存的data属性
69+
data = responseData;
70+
}
71+
id resultA = nil;
72+
if ([data isKindOfClass:[NSArray class]]) {
73+
resultA = [NSObject arrayFromJSON:data ofObjects:@"PrivateMessage"];
74+
}else if (data){
75+
resultA = [NSObject objectOfClass:@"PrivateMessages" fromJSON:data];
76+
}
77+
return resultA;
78+
}
79+
6680
- (NSString *)localPrivateMessagesPath{
6781
NSString *path;
6882
if (_curFriend) {
@@ -75,15 +89,27 @@ - (NSString *)localPrivateMessagesPath{
7589
- (NSString *)toPath{
7690
NSString *path;
7791
if (_curFriend) {
78-
path = [NSString stringWithFormat:@"api/message/conversations/%@", _curFriend.global_key];
92+
path = [NSString stringWithFormat:@"api/message/conversations/%@/prev", _curFriend.global_key];
7993
}else{
8094
path = @"api/message/conversations";
8195
}
8296
return path;
8397
}
8498
- (NSDictionary *)toParams{
85-
return @{@"page" : _willLoadMore? [NSNumber numberWithInt:_page.intValue +1]: [NSNumber numberWithInt:1],
86-
@"pageSize" : _pageSize};
99+
NSDictionary *params = nil;
100+
if (_curFriend) {
101+
NSNumber *prevId = kDefaultLastId;
102+
if (_willLoadMore && _list.count > 0) {
103+
PrivateMessage *prev_Msg = [_list lastObject];
104+
prevId = prev_Msg.id;
105+
}
106+
params = @{@"id" : prevId,
107+
@"pageSize" : _pageSize};
108+
}else{
109+
params = @{@"page" : _willLoadMore? [NSNumber numberWithInt:_page.intValue +1]: [NSNumber numberWithInt:1],
110+
@"pageSize" : _pageSize};
111+
}
112+
return params;
87113
}
88114

89115
- (NSString *)toPollPath{
@@ -105,17 +131,26 @@ - (NSInteger)p_lastId{
105131
return last_id;
106132
}
107133

108-
- (void)configWithObj:(PrivateMessages *)priMsgs{
109-
self.page = priMsgs.page;
110-
self.pageSize = priMsgs.pageSize;
111-
self.totalPage = priMsgs.totalPage;
112-
if (!_willLoadMore) {
113-
[self.list removeAllObjects];
134+
- (void)configWithObj:(id)anObj{
135+
if ([anObj isKindOfClass:[PrivateMessages class]]) {
136+
PrivateMessages *priMsgs = (PrivateMessages *)anObj;
137+
self.page = priMsgs.page;
138+
self.pageSize = priMsgs.pageSize;
139+
self.totalPage = priMsgs.totalPage;
140+
if (!_willLoadMore) {
141+
[self.list removeAllObjects];
142+
}
143+
[self.list addObjectsFromArray:priMsgs.list];
144+
self.canLoadMore = _page.intValue < _totalPage.intValue;
145+
}else if ([anObj isKindOfClass:[NSArray class]]){
146+
NSArray *list = (NSArray *)anObj;
147+
if (!_willLoadMore) {
148+
[self.list removeAllObjects];
149+
}
150+
[self.list addObjectsFromArray:list];
151+
self.canLoadMore = list.count > 0;
114152
}
115-
[self.list addObjectsFromArray:priMsgs.list];
116153
[self reset_dataList];
117-
118-
_canLoadMore = _page.intValue < _totalPage.intValue;
119154
}
120155

121156
- (void)configWithPollArray:(NSArray *)pollList{

Coding_iOS/Util/Manager/Coding_NetAPIManager.m

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,11 +1197,10 @@ - (void)request_PrivateMessages:(PrivateMessages *)priMsgs andBlock:(void (^)(id
11971197
[[CodingNetAPIClient sharedJsonClient] requestJsonDataWithPath:[priMsgs toPath] withParams:[priMsgs toParams] withMethodType:Get andBlock:^(id data, NSError *error) {
11981198
priMsgs.isLoading = NO;
11991199
if (data) {
1200-
id resultData = [data valueForKeyPath:@"data"];
1201-
PrivateMessages *resultA = [NSObject objectOfClass:@"PrivateMessages" fromJSON:resultData];
1200+
id resultA = [PrivateMessages analyzeResponseData:data];
12021201
block(resultA, nil);
1203-
if (priMsgs.curFriend && priMsgs.curFriend.global_key) {
1204-
// 标记为已读
1202+
1203+
if (priMsgs.curFriend && priMsgs.curFriend.global_key) {//标记为已读
12051204
[[CodingNetAPIClient sharedJsonClient] requestJsonDataWithPath:[NSString stringWithFormat:@"api/message/conversations/%@/read", priMsgs.curFriend.global_key] withParams:nil withMethodType:Post andBlock:^(id data, NSError *error) {
12061205
if (data) {
12071206
[[UnReadManager shareManager] updateUnRead];
@@ -1210,15 +1209,15 @@ - (void)request_PrivateMessages:(PrivateMessages *)priMsgs andBlock:(void (^)(id
12101209
}];
12111210
}
12121211
//存储到本地
1213-
if (!priMsgs.willLoadMore && resultData) {
1214-
[NSObject saveResponseData:resultData toPath:[priMsgs localPrivateMessagesPath]];
1212+
if (!priMsgs.willLoadMore && data) {
1213+
[NSObject saveResponseData:data toPath:[priMsgs localPrivateMessagesPath]];
12151214
}
12161215
}else{
12171216
//读取本地存储
12181217
if (!priMsgs.willLoadMore) {
12191218
NSDictionary *resultData = [NSObject loadResponseWithPath:[priMsgs localPrivateMessagesPath]];
12201219
if (resultData) {
1221-
PrivateMessages *resultA = [NSObject objectOfClass:@"PrivateMessages" fromJSON:resultData];
1220+
id resultA = [PrivateMessages analyzeResponseData:resultData];
12221221
block(resultA, nil);
12231222
return;
12241223
}

0 commit comments

Comments
 (0)