NIMTeamAnnouncementListViewController.m 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. //
  2. // TeamAnnouncementListViewController.m
  3. // NIM
  4. //
  5. // Created by Xuhui on 15/3/31.
  6. // Copyright (c) 2015年 Netease. All rights reserved.
  7. //
  8. #import "NIMTeamAnnouncementListViewController.h"
  9. #import "NIMUsrInfoData.h"
  10. #import "NIMCreateTeamAnnouncement.h"
  11. #import "NIMTeamAnnouncementListCell.h"
  12. #import "NIMKitDependency.h"
  13. #import "NIMKitProgressHUD.h"
  14. typedef NS_ENUM(NSInteger, TeamAnnouncementSectionType) {
  15. TeamAnnouncementSectionTitle = 1,
  16. TeamAnnouncementSectionInfo = 2,
  17. TeamAnnouncementSectionLine = 3,
  18. TeamAnnouncementSectionContent = 4
  19. };
  20. @interface NIMTeamAnnouncementListViewController () <UITableViewDelegate, UITableViewDataSource, NTESCreateTeamAnnouncementDelegate> {
  21. }
  22. @property (nonatomic,strong) NSMutableArray *announcements;;
  23. @property (nonatomic,strong) UITableView *tableView;
  24. @end
  25. @implementation NIMTeamAnnouncementListViewController
  26. - (void)viewDidLoad {
  27. [super viewDidLoad];
  28. // Do any additional setup after loading the view from its nib.
  29. if(_canCreateAnnouncement) {
  30. self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"新建" style:UIBarButtonItemStylePlain target:self action:@selector(onCreateAnnouncement:)];
  31. }
  32. self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
  33. self.tableView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
  34. self.tableView.delegate = self;
  35. self.tableView.dataSource = self;
  36. [self.view addSubview:self.tableView];
  37. self.navigationItem.title = @"群公告";
  38. [self.tableView registerClass:[NIMTeamAnnouncementListCell class] forCellReuseIdentifier:@"NIMTeamAnnouncementListCell"];
  39. self.tableView.rowHeight = 267;
  40. [self.tableView setTableFooterView:[UIView new]];
  41. if (self.team.announcement.length) {
  42. NSArray *data = [NSJSONSerialization JSONObjectWithData:[self.team.announcement dataUsingEncoding:NSUTF8StringEncoding] options:0 error:0];
  43. _announcements = [NSMutableArray arrayWithArray:data];
  44. }
  45. }
  46. - (void)viewWillAppear:(BOOL)animated {
  47. [super viewWillAppear:animated];
  48. }
  49. - (void)onCreateAnnouncement:(id)sender {
  50. NIMCreateTeamAnnouncement *vc = [[NIMCreateTeamAnnouncement alloc] initWithNibName:nil bundle:nil];
  51. vc.delegate = self;
  52. [self.navigationController pushViewController:vc animated:YES];
  53. }
  54. #pragma mark - UITableViewDataSource
  55. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  56. return 1;
  57. }
  58. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  59. return _announcements.lastObject ? 1 : 0;
  60. }
  61. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  62. NSDictionary *announcement = _announcements.lastObject;
  63. NIMTeamAnnouncementListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NIMTeamAnnouncementListCell"];
  64. [cell refreshData:announcement team:self.team];
  65. cell.userInteractionEnabled = NO;
  66. return cell;
  67. }
  68. #pragma mark - CreateTeamAnnouncementDelegate
  69. NSString *NTESCreatAnnouncementNotification = @"NTESCreatAnnouncementNotification";
  70. - (void)createTeamAnnouncementCompleteWithTitle:(NSString *)title content:(NSString *)content {
  71. if (title.length && content.length) {
  72. NSDictionary *announcement = @{@"title": title,
  73. @"content": content,
  74. @"creator": [[NIMSDK sharedSDK].loginManager currentAccount],
  75. @"time": @((NSInteger)[NSDate date].timeIntervalSince1970)};
  76. NSData *data = [NSJSONSerialization dataWithJSONObject:@[announcement] options:0 error:nil];
  77. self.team.announcement = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  78. }else{
  79. self.team.announcement = nil;
  80. }
  81. __weak typeof(self) wself = self;
  82. [NIMKitProgressHUD show];
  83. [[NIMSDK sharedSDK].teamManager updateTeamAnnouncement:[self.team.announcement copy] teamId:self.team.teamId completion:^(NSError *error) {
  84. [NIMKitProgressHUD dismiss];
  85. if(!error && wself) {
  86. [wself.view makeToast:@"创建成功"];
  87. if (self.team.announcement.length) {
  88. NSArray *data = [NSJSONSerialization JSONObjectWithData:[self.team.announcement dataUsingEncoding:NSUTF8StringEncoding] options:0 error:0];
  89. wself.announcements = [NSMutableArray arrayWithArray:data];
  90. }else{
  91. wself.announcements = nil;
  92. }
  93. [wself.tableView reloadData];
  94. [[NSNotificationCenter defaultCenter] postNotificationName:NTESCreatAnnouncementNotification object:nil];
  95. } else {
  96. [wself.view makeToast:@"创建失败"];
  97. }
  98. }];
  99. }
  100. @end