Skip to content

Commit cedb222

Browse files
committed
讨论关注者 - 添加 & 移除
1 parent 993ebff commit cedb222

8 files changed

+90
-39
lines changed

Coding_iOS/Controllers/ProjectMemberListViewController.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ typedef NS_ENUM(NSInteger, ProMemType) {
1414
ProMemTypeProject = 0,
1515
ProMemTypeTaskOwner,
1616
ProMemTypeAT,
17-
ProMemTypeTaskWatchers
17+
ProMemTypeTaskWatchers,
18+
ProMemTypeTopicWatchers
1819
};
1920
typedef void(^ProjectMemberBlock)(ProjectMember *member);
2021
typedef void(^ProjectMemberListBlock)(NSArray *memberArray);
@@ -23,6 +24,7 @@ typedef void(^ProjectMemberCellBtnBlock)(ProjectMember *member);
2324
@interface ProjectMemberListViewController : BaseViewController<UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate,UISearchDisplayDelegate>
2425
@property (strong, nonatomic) NSMutableArray *myMemberArray;
2526
@property (strong, nonatomic) Task *curTask;
27+
@property (strong, nonatomic) ProjectTopic *curTopic;
2628
- (void)setFrame:(CGRect)frame project:(Project *)project type:(ProMemType)type refreshBlock:(ProjectMemberListBlock)refreshBlock selectBlock:(ProjectMemberBlock)selectBlock cellBtnBlock:(ProjectMemberCellBtnBlock)cellBtnBlock;
2729
- (void)willHiden;
2830
- (void)refreshMembersData;

Coding_iOS/Controllers/ProjectMemberListViewController.m

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,12 +216,13 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N
216216
__weak typeof(self) weakSelf = self;
217217
cell.curMember = curMember;
218218
cell.type = _type;
219-
if (_type == ProMemTypeTaskWatchers) {
220-
[cell.leftBtn setImage:[UIImage imageNamed:[self.curTask hasWatcher:curMember.user]? @"btn_project_added": @"btn_project_add"] forState:UIControlStateNormal];
221-
}
222219
if (_type == ProMemTypeProject) {
223220
[cell setRightUtilityButtons:[self rightButtonsWithObj:curMember] WithButtonWidth:[MemberCell cellHeight]];//编辑按钮
224221
cell.delegate = self;
222+
}else if (_type == ProMemTypeTaskWatchers) {
223+
[cell.leftBtn setImage:[UIImage imageNamed:[self.curTask hasWatcher:curMember.user]? @"btn_project_added": @"btn_project_add"] forState:UIControlStateNormal];
224+
}else if (_type == ProMemTypeTopicWatchers){
225+
[cell.leftBtn setImage:[UIImage imageNamed:[self.curTopic hasWatcher:curMember.user]? @"btn_project_added": @"btn_project_add"] forState:UIControlStateNormal];
225226
}
226227
cell.leftBtnClickedBlock = ^(UIButton *sender){
227228
if (tableView.isEditing) {
@@ -251,6 +252,9 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N
251252
if (data) {
252253
BOOL isAdded = [weakSelf.curTask hasWatcher:curMember.user] != nil;
253254
[sender setImage:[UIImage imageNamed:isAdded? @"btn_project_added": @"btn_project_add"] forState:UIControlStateNormal];
255+
if (weakSelf.cellBtnBlock) {
256+
weakSelf.cellBtnBlock(curMember);
257+
}
254258
}
255259
}
256260
}];
@@ -262,7 +266,24 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N
262266
[weakSelf.curTask.watchers addObject:curMember.user];
263267
}
264268
[sender setImage:[UIImage imageNamed:!hasWatcher? @"btn_project_added": @"btn_project_add"] forState:UIControlStateNormal];
269+
if (weakSelf.cellBtnBlock) {
270+
weakSelf.cellBtnBlock(curMember);
271+
}
265272
}
273+
}else if (_type == ProMemTypeTopicWatchers){
274+
[sender startQueryAnimate];
275+
[[Coding_NetAPIManager sharedManager] request_ChangeWatcher:curMember.user ofTopic:weakSelf.curTopic andBlock:^(id data, NSError *error) {
276+
if (cell.curMember == curMember) {
277+
[sender stopQueryAnimate];
278+
if (data) {
279+
BOOL isAdded = [weakSelf.curTopic hasWatcher:curMember.user] != nil;
280+
[sender setImage:[UIImage imageNamed:isAdded? @"btn_project_added": @"btn_project_add"] forState:UIControlStateNormal];
281+
if (weakSelf.cellBtnBlock) {
282+
weakSelf.cellBtnBlock(curMember);
283+
}
284+
}
285+
}
286+
}];
266287
}
267288
};
268289

Coding_iOS/Controllers/TopicDetailViewController.m

Lines changed: 27 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#import "WebViewController.h"
2323
#import "EditTopicViewController.h"
2424
#import "EditLabelViewController.h"
25+
#import "ProjectMemberListViewController.h"
2526

2627
@interface TopicDetailViewController ()<TTTAttributedLabelDelegate>
2728
@property (strong, nonatomic) UITableView *myTableView;
@@ -97,11 +98,6 @@ - (void)setCurTopic:(ProjectTopic *)curTopic
9798
self.title = curTopic.project.name ? curTopic.project.name : @"讨论详情";
9899
}
99100

100-
- (void)viewWillAppear:(BOOL)animated
101-
{
102-
[super viewWillAppear:animated];
103-
}
104-
105101
- (void)viewWillDisappear:(BOOL)animated
106102
{
107103
[super viewWillDisappear:animated];
@@ -122,12 +118,6 @@ - (void)viewDidAppear:(BOOL)animated
122118
}
123119
}
124120

125-
- (void)didReceiveMemoryWarning
126-
{
127-
[super didReceiveMemoryWarning];
128-
// Dispose of any resources that can be recreated.
129-
}
130-
131121
#pragma mark - click
132122
- (void)addtitleBtnClick
133123
{
@@ -214,6 +204,9 @@ - (void)refreshTopic
214204
if (_curTopic.isTopicLoading) {
215205
return;
216206
}
207+
if (!_curTopic.comments) {
208+
[self.view beginLoading];
209+
}
217210
__weak typeof(self) weakSelf = self;
218211
[[Coding_NetAPIManager sharedManager] request_ProjectTopic_WithObj:_curTopic andBlock:^(id data, NSError *error) {
219212
if (data) {
@@ -225,9 +218,9 @@ - (void)refreshTopic
225218
weakSelf.myMsgInputView.commentOfId = weakSelf.curTopic.id;
226219
weakSelf.myMsgInputView.toUser = nil;
227220
[weakSelf configNavBtn];
228-
[weakSelf.myTableView reloadData];
229221
[weakSelf refreshComments];
230222
} else {
223+
[weakSelf.view endLoading];
231224
[weakSelf.refreshControl endRefreshing];
232225
}
233226
}];
@@ -244,8 +237,12 @@ - (void)refreshMore
244237

245238
- (void)sendRequest
246239
{
240+
if (!_curTopic.comments) {
241+
[self.view beginLoading];
242+
}
247243
__weak typeof(self) weakSelf = self;
248244
[[Coding_NetAPIManager sharedManager] request_Comments_WithProjectTpoic:self.curTopic andBlock:^(id data, NSError *error) {
245+
[weakSelf.view endLoading];
249246
[weakSelf.refreshControl endRefreshing];
250247
[weakSelf.myTableView.infiniteScrollingView stopAnimating];
251248
if (data) {
@@ -281,13 +278,7 @@ - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger
281278
_headerV.curTopic = self.curTopic;
282279
__weak typeof(self) weakSelf = self;
283280
_headerV.goToUserBlock = ^(User *user){
284-
if (user) {
285-
UserInfoViewController *vc = [UserInfoViewController new];
286-
vc.curUser = user;
287-
[weakSelf.navigationController pushViewController:vc animated:YES];
288-
}else{
289-
290-
}
281+
[weakSelf goToUser:user];
291282
};
292283
_headerV.commentBlock = ^(id sender){
293284
[weakSelf doCommentToTopic:nil sender:sender];
@@ -305,6 +296,22 @@ - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger
305296
return headerV;
306297
}
307298

299+
- (void)goToUser:(User *)user{
300+
if (user) {
301+
UserInfoViewController *vc = [UserInfoViewController new];
302+
vc.curUser = user;
303+
[self.navigationController pushViewController:vc animated:YES];
304+
}else{
305+
__weak typeof(self) weakSelf = self;
306+
ProjectMemberListViewController *vc = [ProjectMemberListViewController new];
307+
[vc setFrame:self.view.bounds project:_curTopic.project type:ProMemTypeTopicWatchers refreshBlock:nil selectBlock:nil cellBtnBlock:^(ProjectMember *member) {
308+
[weakSelf.myTableView reloadData];
309+
}];
310+
vc.curTopic = _curTopic;
311+
[self.navigationController pushViewController:vc animated:YES];
312+
}
313+
}
314+
308315
#pragma mark Table M
309316
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
310317
return _curTopic && _curTopic.comments? 2: 0;
@@ -321,27 +328,15 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N
321328
TopicContentCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier_TopicContent forIndexPath:indexPath];
322329
cell.curTopic = self.curTopic;
323330
__weak typeof(self) weakSelf = self;
324-
// cell.commentTopicBlock = ^(ProjectTopic *curTopic, id sender){
325-
// [weakSelf doCommentToTopic:nil sender:sender];
326-
// };
327331
cell.cellHeightChangedBlock = ^(){
328-
[weakSelf.myTableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
329-
// [weakSelf.myTableView reloadData];
332+
[weakSelf.myTableView reloadData];
330333
};
331334
cell.addLabelBlock = ^(){
332335
[weakSelf addtitleBtnClick];
333336
};
334337
cell.loadRequestBlock = ^(NSURLRequest *curRequest){
335338
[weakSelf loadRequest:curRequest];
336339
};
337-
// cell.deleteTopicBlock = ^(ProjectTopic *curTopic){
338-
// UIActionSheet *actionSheet = [UIActionSheet bk_actionSheetCustomWithTitle:@"删除此讨论" buttonTitles:nil destructiveTitle:@"确认删除" cancelTitle:@"取消" andDidDismissBlock:^(UIActionSheet *sheet, NSInteger index) {
339-
// if (index == 0) {
340-
// [weakSelf deleteTopic:weakSelf.curTopic isComment:NO];
341-
// }
342-
// }];
343-
// [actionSheet showInView:self.view];
344-
// };
345340
[tableView addLineforPlainCell:cell forRowAtIndexPath:indexPath withLeftSpace:kPaddingLeftWidth];
346341
return cell;
347342
} else {

Coding_iOS/Models/ProjectTopic.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
+ (ProjectTopic *)topicWithPro:(Project *)pro;
4343
+ (ProjectTopic *)topicWithId:(NSNumber *)topicId;
4444

45+
- (User *)hasWatcher:(User *)watcher;
46+
4547
- (NSString *)toTopicPath;
4648
- (NSDictionary *)toEditParams;
4749

Coding_iOS/Models/ProjectTopic.m

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ + (ProjectTopic *)topicWithId:(NSNumber *)topicId{
6565
return topic;
6666
}
6767

68+
- (User *)hasWatcher:(User *)watcher{
69+
for (User *user in self.watchers) {
70+
if ([user.id isEqual:watcher.id]) {
71+
return user;
72+
}
73+
}
74+
return nil;
75+
}
76+
6877
- (NSString *)toTopicPath
6978
{
7079
return [NSString stringWithFormat:@"api/topic/%d", self.id.intValue];

Coding_iOS/Util/Manager/Coding_NetAPIManager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ typedef NS_ENUM(NSInteger, PurposeType) {
166166
- (void)request_Comments_WithProjectTpoic:(ProjectTopic *)proTopic andBlock:(void (^)(id data, NSError *error))block;
167167
- (void)request_DoComment_WithProjectTpoic:(ProjectTopic *)proTopic andBlock:(void (^)(id data, NSError *error))block;
168168
- (void)request_ProjectTopic_Delete_WithObj:(ProjectTopic *)proTopic andBlock:(void (^)(id data, NSError *error))block;
169+
- (void)request_ChangeWatcher:(User *)watcher ofTopic:(ProjectTopic *)proTopic andBlock:(void (^)(id data, NSError *error))block;
169170

170171
- (void)request_ModifyProjectTpoicLabel:(ProjectTopic *)proTopic
171172
andBlock:(void (^)(id data, NSError *error))block;

Coding_iOS/Util/Manager/Coding_NetAPIManager.m

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1439,8 +1439,8 @@ - (void)request_ProjectTopic_WithObj:(ProjectTopic *)proTopic andBlock:(void (^)
14391439
[MobClick event:kUmeng_Event_Request_Get label:@"讨论详情"];
14401440

14411441
NSArray *watchers = [NSArray arrayFromJSON:dataW[@"data"][@"list"] ofObjects:@"User"];
1442-
proTopic.watchers = watchers.mutableCopy;
1443-
block(proTopic, nil);
1442+
resultT.watchers = watchers.mutableCopy;
1443+
block(resultT, nil);
14441444
}else{
14451445
block(nil, errorW);
14461446
}
@@ -1546,6 +1546,27 @@ - (void)request_ProjectTopic_Delete_WithObj:(ProjectTopic *)proTopic andBlock:(v
15461546
}
15471547
}];
15481548
}
1549+
- (void)request_ChangeWatcher:(User *)watcher ofTopic:(ProjectTopic *)proTopic andBlock:(void (^)(id data, NSError *error))block{
1550+
NSString *path = [NSString stringWithFormat:@"api/topic/%@/user/%@/watch", proTopic.id.stringValue, watcher.global_key];
1551+
User *hasWatcher = [proTopic hasWatcher:watcher];
1552+
NetworkMethod method = hasWatcher? Delete: Post;
1553+
1554+
[[CodingNetAPIClient sharedJsonClient] requestJsonDataWithPath:path withParams:nil withMethodType:method andBlock:^(id data, NSError *error) {
1555+
if (data) {
1556+
[MobClick event:kUmeng_Event_Request_ActionOfServer label:method == Post? @"讨论_添加关注者": @"讨论_删除关注者"];
1557+
1558+
if (!hasWatcher && watcher) {
1559+
[proTopic.watchers addObject:watcher];
1560+
}else if (hasWatcher){
1561+
[proTopic.watchers removeObject:hasWatcher];
1562+
}
1563+
block(data, nil);
1564+
}else{
1565+
block(nil, error);
1566+
}
1567+
}];
1568+
1569+
}
15491570

15501571
- (void)request_ProjectTopic_Count_WithPath:(NSString *)path
15511572
andBlock:(void (^)(id data, NSError *error))block

Coding_iOS/Views/Cell/MemberCell.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ - (void)layoutSubviews{
110110
break;
111111
}
112112

113-
if (_type == ProMemTypeTaskWatchers) {//「添加、已添加」按钮
113+
if (_type == ProMemTypeTaskWatchers || _type == ProMemTypeTopicWatchers) {//「添加、已添加」按钮
114114
_leftBtn.hidden = NO;
115115
}else if (_type == ProMemTypeProject){
116116
if (_curMember.user_id.intValue != [Login curLoginUser].id.integerValue) {//「私信」按钮

0 commit comments

Comments
 (0)