NIMContactSelectConfig.m 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. //
  2. // NIMContactSelectConfig.m
  3. // NIMKit
  4. //
  5. // Created by chris on 15/9/14.
  6. // Copyright (c) 2015年 NetEase. All rights reserved.
  7. //
  8. #import "NIMContactSelectConfig.h"
  9. #import <NIMSDK/NIMSDK.h>
  10. #import "NIMGlobalMacro.h"
  11. #import "NIMGroupedData.h"
  12. #import "NIMGroupedUsrInfo.h"
  13. #import "NIMKit.h"
  14. @implementation NIMContactFriendSelectConfig : NSObject
  15. - (BOOL)isMutiSelected{
  16. return self.needMutiSelected;
  17. }
  18. - (NSString *)title{
  19. return @"选择联系人";
  20. }
  21. - (NSInteger)maxSelectedNum{
  22. if (self.needMutiSelected) {
  23. return self.maxSelectMemberCount? self.maxSelectMemberCount : NSIntegerMax;
  24. }else{
  25. return 1;
  26. }
  27. }
  28. - (NSString *)selectedOverFlowTip{
  29. return @"选择超限";
  30. }
  31. - (void)getContactData:(NIMContactDataProviderHandler)handler {
  32. NIMGroupedData *groupedData = [[NIMGroupedData alloc] init];
  33. NSMutableArray *myFriendArray = @[].mutableCopy;
  34. NSMutableArray *data = [NIMSDK sharedSDK].userManager.myFriends.mutableCopy;
  35. NSArray *robot_uids = @[].mutableCopy;
  36. NSMutableArray *members = @[].mutableCopy;
  37. for (NIMUser *user in data) {
  38. [myFriendArray addObject:user.userId];
  39. }
  40. NSArray *friend_uids = [self filterData:myFriendArray];
  41. for (NSString *uid in friend_uids) {
  42. NIMGroupUser *user = [[NIMGroupUser alloc] initWithUserId:uid];
  43. [members addObject:user];
  44. }
  45. groupedData.members = members;
  46. if (members) {
  47. [members removeAllObjects];
  48. }
  49. if (self.enableRobot) {
  50. NSMutableArray *robotsArr = @[].mutableCopy;
  51. NSMutableArray *robot_data = [NIMSDK sharedSDK].robotManager.allRobots.mutableCopy;
  52. for (NIMRobot *robot in robot_data) {
  53. [robotsArr addObject:robot.userId];
  54. }
  55. robot_uids = [self filterData:robotsArr];
  56. for (NSString *uid in robot_uids) {
  57. NIMGroupUser *user = [[NIMGroupUser alloc] initWithUserId:uid];
  58. [members addObject:user];
  59. }
  60. groupedData.specialMembers = members;
  61. }
  62. if (handler) {
  63. handler(groupedData.contentDic, groupedData.sectionTitles);
  64. }
  65. }
  66. - (NSArray *)filterData:(NSMutableArray *)data{
  67. if (data) {
  68. if ([self respondsToSelector:@selector(filterIds)]) {
  69. NSArray *ids = [self filterIds];
  70. [data removeObjectsInArray:ids];
  71. }
  72. return data;
  73. }
  74. return nil;
  75. }
  76. - (NIMKitInfo *)getInfoById:(NSString *)selectedId {
  77. NIMKitInfo *info = nil;
  78. info = [[NIMKit sharedKit] infoByUser:selectedId option:nil];
  79. return info;
  80. }
  81. @end
  82. @implementation NIMContactRobotSelectConfig
  83. - (BOOL)isMutiSelected{
  84. return self.needMutiSelected;
  85. }
  86. - (NSString *)title{
  87. return @"选择机器人";
  88. }
  89. - (NSInteger)maxSelectedNum{
  90. if (self.needMutiSelected) {
  91. return self.maxSelectMemberCount? self.maxSelectMemberCount : NSIntegerMax;
  92. }else{
  93. return 1;
  94. }
  95. }
  96. - (NSString *)selectedOverFlowTip{
  97. return @"选择超限";
  98. }
  99. - (void)getContactData:(NIMContactDataProviderHandler)handler {
  100. NIMGroupedData *groupedData = [[NIMGroupedData alloc] init];
  101. NSMutableArray *robotsArray = @[].mutableCopy;
  102. NSMutableArray *robot_data = [NIMSDK sharedSDK].robotManager.allRobots.mutableCopy;
  103. NSMutableArray *members = @[].mutableCopy;
  104. for (NIMRobot *robot in robot_data) {
  105. [robotsArray addObject:robot.userId];
  106. }
  107. NSArray *robot_uids = [self filterData:robotsArray];
  108. if (members) {
  109. [members removeAllObjects];
  110. }
  111. for (NSString *uid in robot_uids) {
  112. NIMGroupUser *user = [[NIMGroupUser alloc] initWithUserId:uid];
  113. [members addObject:user];
  114. }
  115. groupedData.specialMembers = members;
  116. if (handler) {
  117. handler(groupedData.contentDic, groupedData.sectionTitles);
  118. }
  119. }
  120. - (NSArray *)filterData:(NSMutableArray *)data{
  121. if (data) {
  122. if ([self respondsToSelector:@selector(filterIds)]) {
  123. NSArray *ids = [self filterIds];
  124. [data removeObjectsInArray:ids];
  125. }
  126. return data;
  127. }
  128. return nil;
  129. }
  130. - (NIMKitInfo *)getInfoById:(NSString *)selectedId {
  131. NIMKitInfo *info = nil;
  132. info = [[NIMKit sharedKit] infoByUser:selectedId option:nil];
  133. return info;
  134. }
  135. @end
  136. @implementation NIMContactTeamMemberSelectConfig : NSObject
  137. - (NSInteger)maxSelectedNum{
  138. if (self.needMutiSelected) {
  139. return self.maxSelectMemberCount? self.maxSelectMemberCount : NSIntegerMax;
  140. }else{
  141. return 1;
  142. }
  143. }
  144. - (NSString *)title{
  145. return @"选择联系人";
  146. }
  147. - (NSString *)selectedOverFlowTip{
  148. return @"选择超限";
  149. }
  150. - (void)getContactData:(NIMContactDataProviderHandler)handler {
  151. NIMGroupedData *groupedData = [[NIMGroupedData alloc] init];
  152. NSString *teamID = self.teamId;
  153. __block NSMutableArray *membersArr = @[].mutableCopy;
  154. NIMKit_WEAK_SELF(weakSelf);
  155. [[NIMSDK sharedSDK].teamManager fetchTeamMembers:teamID completion:^(NSError * _Nullable error, NSArray<NIMTeamMember *> * _Nullable members) {
  156. if (!error) {
  157. NSMutableArray *teamMember_data = @[].mutableCopy;
  158. NSArray *robot_uids = @[].mutableCopy;
  159. for (NIMTeamMember *member in members) {
  160. [teamMember_data addObject:member.userId];
  161. }
  162. NSArray *member_uids = [weakSelf filterData:teamMember_data];
  163. for (NSString *uid in member_uids) {
  164. NIMGroupTeamMember *user = [[NIMGroupTeamMember alloc] initWithUserId:uid teamId:teamID];
  165. [membersArr addObject:user];
  166. }
  167. groupedData.members = membersArr;
  168. if (membersArr) {
  169. [membersArr removeAllObjects];
  170. }
  171. if (weakSelf.enableRobot) {
  172. NSMutableArray *robotsArray = @[].mutableCopy;
  173. NSMutableArray *robot_data = [NIMSDK sharedSDK].robotManager.allRobots.mutableCopy;
  174. for (NIMRobot *robot in robot_data) {
  175. [robotsArray addObject:robot.userId];
  176. }
  177. robot_uids = [weakSelf filterData:robotsArray];
  178. for (NSString *uid in robot_uids) {
  179. NIMGroupUser *user = [[NIMGroupUser alloc] initWithUserId:uid];
  180. [membersArr addObject:user];
  181. }
  182. groupedData.specialMembers = membersArr;
  183. }
  184. if (handler) {
  185. handler(groupedData.contentDic, groupedData.sectionTitles);
  186. }
  187. }
  188. }];
  189. }
  190. - (NSArray *)filterData:(NSMutableArray *)data{
  191. if (data) {
  192. if ([self respondsToSelector:@selector(filterIds)]) {
  193. NSArray *ids = [self filterIds];
  194. [data removeObjectsInArray:ids];
  195. }
  196. return data;
  197. }
  198. return nil;
  199. }
  200. - (NIMKitInfo *)getInfoById:(NSString *)selectedId {
  201. NIMKitInfo *info = nil;
  202. info = [[NIMKit sharedKit] infoByUser:selectedId option:nil];
  203. return info;
  204. }
  205. @end
  206. @implementation NIMContactTeamSelectConfig : NSObject
  207. - (NSString *)title{
  208. return @"选择群组";
  209. }
  210. - (NSInteger)maxSelectedNum{
  211. if (self.needMutiSelected) {
  212. return self.maxSelectMemberCount? self.maxSelectMemberCount : NSIntegerMax;
  213. }else{
  214. return 1;
  215. }
  216. }
  217. - (NSString *)selectedOverFlowTip{
  218. return @"选择超限";
  219. }
  220. - (void)getContactData:(NIMContactDataProviderHandler)handler {
  221. NIMGroupedData *groupedData = [[NIMGroupedData alloc] init];
  222. NSMutableArray *teams = @[].mutableCopy;
  223. NSArray *robot_uids = @[].mutableCopy;
  224. NSMutableArray *members = @[].mutableCopy;
  225. NSMutableArray *team_data = [[NIMSDK sharedSDK].teamManager.allMyTeams mutableCopy];
  226. for (NIMTeam *team in team_data) {
  227. [teams addObject:team.teamId];
  228. }
  229. NSArray *team_uids = [self filterData:teams];
  230. for (NSString *teamId in team_uids) {
  231. NIMGroupTeam *team = [[NIMGroupTeam alloc] initWithTeam:teamId];
  232. [members addObject:team];
  233. }
  234. groupedData.members = members;
  235. if (members) {
  236. [members removeAllObjects];
  237. }
  238. if (self.enableRobot) {
  239. NSMutableArray *robotsArray = @[].mutableCopy;
  240. NSMutableArray *robot_data = [NIMSDK sharedSDK].robotManager.allRobots.mutableCopy;
  241. for (NIMRobot *robot in robot_data) {
  242. [robotsArray addObject:robot.userId];
  243. }
  244. robot_uids = [self filterData:robotsArray];
  245. for (NSString *uid in robot_uids) {
  246. NIMGroupUser *user = [[NIMGroupUser alloc] initWithUserId:uid];
  247. [members addObject:user];
  248. }
  249. groupedData.specialMembers = members;
  250. }
  251. if (handler) {
  252. handler(groupedData.contentDic, groupedData.sectionTitles);
  253. }
  254. }
  255. - (NSArray *)filterData:(NSMutableArray *)data{
  256. if (data) {
  257. if ([self respondsToSelector:@selector(filterIds)]) {
  258. NSArray *ids = [self filterIds];
  259. [data removeObjectsInArray:ids];
  260. }
  261. return data;
  262. }
  263. return nil;
  264. }
  265. - (NIMKitInfo *)getInfoById:(NSString *)selectedId {
  266. NIMKitInfo *info = nil;
  267. info = [[NIMKit sharedKit] infoByTeam:selectedId option:nil];
  268. return info;
  269. }
  270. @end