JXFriendObject.m 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643
  1. //
  2. // JXFriendObject.m
  3. //
  4. // Created by Reese on 13-8-11.
  5. // Copyright (c) 2013年 Reese. All rights reserved.
  6. //
  7. #import "JXFriendObject.h"
  8. #import "FMDatabase.h"
  9. #import "FMResultSet.h"
  10. #import "AppDelegate.h"
  11. #import "SBJsonParser.h"
  12. #import "SaveOrReadArr.h"
  13. @interface JXFriendObject ()
  14. @property (nonatomic, assign) BOOL isNewFriend;
  15. @end
  16. @implementation JXFriendObject
  17. static JXFriendObject *sharedUser;
  18. +(JXFriendObject*)sharedInstance{
  19. static dispatch_once_t onceToken;
  20. dispatch_once(&onceToken, ^{
  21. sharedUser=[[JXFriendObject alloc]init];
  22. });
  23. return sharedUser;
  24. }
  25. -(id)init{
  26. self = [super init];
  27. if(self){
  28. _tableName = @"newFriend";
  29. }
  30. return self;
  31. }
  32. -(void)dealloc{
  33. NSLog(@"JXFriendObject.dealloc");
  34. // [super dealloc];
  35. }
  36. -(BOOL)insert{
  37. self.roomFlag = [NSNumber numberWithInt:0];
  38. self.companyId = [NSNumber numberWithInt:0];
  39. self.offlineNoPushMsg = [NSNumber numberWithInt:0];
  40. self.talkTime = [NSNumber numberWithLong:0];
  41. return [super insert];
  42. }
  43. - (BOOL)update {
  44. if (!self.content || self.content.length <= 0) {
  45. self.content = [self getLastContent:self.userId];
  46. }
  47. return [super update];
  48. }
  49. -(JXFriendObject*)userFromDictionary:(NSDictionary*)aDic
  50. {
  51. JXFriendObject* user = [[JXFriendObject alloc]init];
  52. [super userFromDictionary:user dict:aDic];
  53. return user;
  54. }
  55. -(NSMutableArray*)fetchAllFriendsFromLocal
  56. {
  57. NSString* sql = @"select a.*,b.status as trueStatus from newfriend as a LEFT JOIN friend as b on a.userId=b.userId order by a.timeCreate desc";
  58. return [self doFetch:sql];
  59. }
  60. -(NSMutableArray*)doFetch:(NSString*)sql
  61. {
  62. NSMutableArray *resultArr=[[NSMutableArray alloc]init];
  63. NSString* myUserId = MY_USER_ID;
  64. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  65. [super checkTableCreatedInDb:db];
  66. FMResultSet *rs=[db executeQuery:sql];
  67. while ([rs next]) {
  68. JXFriendObject *user=[[JXFriendObject alloc] init];
  69. [super userFromDataset:user rs:rs];
  70. [resultArr addObject:user];
  71. // [user release];
  72. }
  73. [rs close];
  74. if([resultArr count]==0){
  75. // [resultArr release];
  76. resultArr = nil;
  77. }
  78. return resultArr;
  79. }
  80. -(void)notifyNewRequest{
  81. //发送全局通知
  82. [g_notify postNotificationName:kXMPPNewRequestNotifaction object:self userInfo:nil];
  83. }
  84. -(void)doSaveUser{
  85. // [self update];
  86. JXUserObject* user = [[JXUserObject alloc]init];
  87. [user loadFromObject:self];
  88. user.status = self.status;
  89. user.msgsNew = [NSNumber numberWithInt:0];
  90. user.content = nil;//很重要,必须有
  91. if([user haveTheUser]) {
  92. JXUserObject *oldUser = [[JXUserObject sharedInstance] getUserById:user.userId];
  93. user.userType = oldUser.userType;
  94. [user update];
  95. }
  96. else{
  97. [user insert];
  98. [user notifyNewFriend];
  99. }
  100. // [user release];
  101. }
  102. //- (void)doSaveAddressBook{
  103. // NSDictionary *dict = (NSDictionary *)self.content;
  104. // JXAddressBook *addressBook = [[JXAddressBook alloc] init];
  105. // addressBook.toUserId = [NSString stringWithFormat:@"%@",dict[@"toUserId"]];
  106. // addressBook.toUserName = dict[@"toUserName"];
  107. // addressBook.toTelephone = dict[@"toTelephone"];
  108. // addressBook.telephone = dict[@"telephone"];
  109. // addressBook.registerEd = dict[@"registerEd"];
  110. // addressBook.registerTime = [NSDate dateWithTimeIntervalSince1970:[dict[@"registerTime"] longLongValue]];
  111. // addressBook.isRead = [NSNumber numberWithBool:0];
  112. // [addressBook insert];
  113. //}
  114. -(void)doDelUser{
  115. self.status = [NSNumber numberWithInt:friend_status_none];
  116. [self update];
  117. [JXUserObject deleteUserAndMsg:self.userId];
  118. }
  119. -(NSString*)doMsgForNewUser{
  120. NSString* s;
  121. JXMessageObject* p = [[JXMessageObject alloc] init];
  122. if([self.isMySend boolValue]){
  123. p.fromUserId = MY_USER_ID;
  124. p.fromUserName = g_server.myself.userNickname;
  125. p.toUserId = self.userId;
  126. s = Localized(@"JXFriendObject_ChatNow");
  127. p.isMySend = YES;
  128. }else{
  129. p.fromUserId = self.userId;
  130. p.fromUserName = self.userNickname;
  131. p.toUserId = MY_USER_ID;
  132. s = Localized(@"JXFriendObject_StartChat");
  133. p.isMySend = NO;
  134. }
  135. if ([self.type intValue] == XMPP_TYPE_FRIEND) {
  136. p.fromUserId = self.userId;
  137. p.toUserId = MY_USER_ID;
  138. if ([self.isMySend boolValue]) {
  139. p.fromUserId = MY_USER_ID;
  140. p.toUserId = self.userId;
  141. }
  142. s = Localized(@"JXFriendObject_AddedFriend");
  143. }
  144. JXUserObject *serverUser = [[JXUserObject sharedInstance] getUserById:self.userId];
  145. if ([serverUser.userType intValue] == 2) {
  146. s = @" ";
  147. }else {
  148. p.content = s;
  149. p.type = [NSNumber numberWithInt:kWCMessageTypeText];
  150. p.isSend = [NSNumber numberWithInt:transfer_status_yes];
  151. p.isRead = [NSNumber numberWithInt:1];
  152. p.timeSend = [NSDate date];
  153. [p insert:nil];
  154. [p notifyNewMsg];
  155. }
  156. JXUserObject *user = [[JXUserObject alloc] init];
  157. user.userId = self.userId;
  158. user.userNickname = self.userNickname;
  159. user.content = s;
  160. [user insert];
  161. return s;
  162. }
  163. -(void)onSendRequest{
  164. if(![self.isMySend boolValue])
  165. return;
  166. NSNumber* tempStatus=nil;
  167. JXUserObject* user = [[JXUserObject sharedInstance] getUserById:self.userId];
  168. if(user)
  169. tempStatus = user.status;//先记住之前的关系
  170. switch ([self.type intValue]) {
  171. case XMPP_TYPE_SAYHELLO:
  172. if([tempStatus intValue]<=friend_status_none){
  173. self.status = [NSNumber numberWithInt:friend_status_see];
  174. [self doSaveUser];
  175. }
  176. break;
  177. case XMPP_TYPE_PASS:
  178. case XMPP_TYPE_CONTACTFRIEND:
  179. self.status = [NSNumber numberWithInt:friend_status_friend];
  180. [self doSaveUser];
  181. [self doMsgForNewUser];
  182. [g_notify postNotificationName:kFriendPassNotif object:self];
  183. break;
  184. case XMPP_TYPE_FEEDBACK:
  185. break;
  186. case XMPP_TYPE_NEWSEE:
  187. if([tempStatus intValue]<=friend_status_none){//新关注他人时,除非关系小于0,否则都用原来的关系,有可能已为2
  188. self.status = [NSNumber numberWithInt:friend_status_see];
  189. [self doSaveUser];
  190. }
  191. break;
  192. case XMPP_TYPE_DELSEE://删除关注
  193. [self doDelUser];
  194. break;
  195. case XMPP_TYPE_SEVERDELFRIEND:
  196. case XMPP_TYPE_DELALL:
  197. [self doDelUser];
  198. break;
  199. case XMPP_TYPE_SEVERDEL:
  200. [self doDelUser];
  201. break;
  202. case XMPP_TYPE_SEVERBLACK:
  203. case XMPP_TYPE_BLACK:
  204. self.status = [NSNumber numberWithInt:friend_status_black];
  205. [self doSaveUser];//建立黑名单
  206. [self notifyDelFriend];
  207. break;
  208. case XMPP_TYPE_SEVERNOBLACK:
  209. case XMPP_TYPE_NOBLACK:
  210. self.status = [NSNumber numberWithInt:friend_status_friend];
  211. [self doSaveUser];//取消黑名单
  212. [self doMsgForNewUser];
  213. break;
  214. case XMPP_TYPE_FRIEND:
  215. self.status = [NSNumber numberWithInt:friend_status_friend];
  216. // 加好友无法获取userType,此处调个接口
  217. [g_server getUser:self.userId toView:self];
  218. break;
  219. default:
  220. break;
  221. }
  222. // [user release];
  223. }
  224. -(void)onReceiveRequest{
  225. if([self.isMySend boolValue])
  226. return;
  227. NSNumber* tempStatus=nil;
  228. JXUserObject* user = [[JXUserObject sharedInstance] getUserById:self.userId];
  229. if(user)
  230. tempStatus = user.status;//先记住之前的关系
  231. // if([tempStatus intValue]<friend_status_none){//来者是我的黑名单时,直接忽略
  232. //// [user release];
  233. // return;
  234. // }
  235. switch ([self.type intValue]) {
  236. case XMPP_TYPE_SAYHELLO:
  237. {
  238. NSMutableArray *tempAArr= [SaveOrReadArr initNSKeyedTempFriendUnarchiver];
  239. if (tempAArr.count>0) {
  240. [tempAArr enumerateObjectsUsingBlock:^(JXUserObject * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
  241. if ([obj.userId isEqualToString:user.userId]) {
  242. }else{
  243. NSMutableArray *arrxx=[[NSMutableArray alloc]initWithArray:[SaveOrReadArr initNSKeyedFriendUnarchiver]];
  244. //本地存储
  245. [arrxx addObject:user];
  246. [SaveOrReadArr initSerializationTempFriend:arrxx];
  247. }
  248. }];
  249. }else{
  250. NSMutableArray *arrxx=[[NSMutableArray alloc]initWithArray:[SaveOrReadArr initNSKeyedFriendUnarchiver]];
  251. //本地存储
  252. [arrxx addObject:user];
  253. [SaveOrReadArr initSerializationTempFriend:arrxx];
  254. }
  255. [g_notify postNotificationName:@"newFriend" object:nil userInfo:@{@"use":user}];
  256. }
  257. break;
  258. case XMPP_TYPE_PASS:
  259. case XMPP_TYPE_CONTACTFRIEND:
  260. self.status = [NSNumber numberWithInt:friend_status_friend];
  261. [self doSaveUser];
  262. [self doMsgForNewUser];
  263. [g_notify postNotificationName:kFriendPassNotif object:self];
  264. break;
  265. case XMPP_TYPE_FEEDBACK:
  266. break;
  267. case XMPP_TYPE_NEWSEE:
  268. if([tempStatus intValue]==friend_status_see){//如果原来已关注,则升级为互粉
  269. self.status = [NSNumber numberWithInt:friend_status_friend];
  270. [self doSaveUser];
  271. }
  272. break;
  273. case XMPP_TYPE_DELSEE:
  274. if([tempStatus intValue]==friend_status_friend){//如果原来已关注,则降级为单方
  275. self.status = [NSNumber numberWithInt:friend_status_see];
  276. [self doSaveUser];
  277. }
  278. break;
  279. case XMPP_TYPE_SEVERDELFRIEND:
  280. case XMPP_TYPE_DELALL:
  281. [self doDelUser];
  282. break;
  283. case XMPP_TYPE_SEVERDEL:
  284. [self doDelUser];
  285. break;
  286. case XMPP_TYPE_SEVERBLACK:
  287. case XMPP_TYPE_BLACK:
  288. self.status = [NSNumber numberWithInt:friend_status_hisBlack];
  289. [self doSaveUser];//建立黑名单
  290. [self notifyDelFriend];
  291. break;
  292. case XMPP_TYPE_SEVERNOBLACK:
  293. case XMPP_TYPE_NOBLACK:
  294. self.status = [NSNumber numberWithInt:friend_status_friend];
  295. [self doSaveUser];
  296. [self doMsgForNewUser];
  297. break;
  298. case XMPP_TYPE_FRIEND:
  299. self.status = [NSNumber numberWithInt:friend_status_friend];
  300. [self doSaveUser];
  301. [self doMsgForNewUser];
  302. break;
  303. // case XMPP_TYPE_CONTACTREGISTER:
  304. // [self doSaveAddressBook];
  305. // [g_notify postNotificationName:kRefreshAddressBookNotif object:nil];
  306. // break;
  307. default:
  308. break;
  309. }
  310. // [user release];
  311. }
  312. -(void)loadFromMessageObj:(JXMessageObject*)msg{
  313. self.type = msg.type;
  314. self.content = msg.content;
  315. self.timeSend = msg.timeSend;
  316. self.isMySend = [NSNumber numberWithBool:msg.isMySend];
  317. if([self.isMySend boolValue]){
  318. self.userId = msg.toUserId;
  319. self.userNickname = msg.toUserName;
  320. }else{
  321. self.userId = msg.fromUserId;
  322. self.userNickname = msg.fromUserName;
  323. }
  324. if ([msg.type integerValue] == XMPP_TYPE_SEVERDEL) {
  325. self.userId = [NSString stringWithFormat:@"%@",msg.objectId];
  326. NSString *name = [JXUserObject getUserNameWithUserId:self.userId];
  327. if (name && name.length > 0) {
  328. self.userNickname = name;
  329. }
  330. }
  331. if ([msg.type integerValue] == XMPP_TYPE_SEVERBLACK || [msg.type integerValue] == XMPP_TYPE_SEVERNOBLACK || [msg.type integerValue] == XMPP_TYPE_SEVERDELFRIEND) {
  332. SBJsonParser * resultParser = [[SBJsonParser alloc] init] ;
  333. NSDictionary *resultObject = [resultParser objectWithString:msg.objectId];
  334. if ([resultObject[@"toUserId"] isEqualToString:MY_USER_ID]) {
  335. self.userId = resultObject[@"fromUserId"];
  336. self.userNickname = resultObject[@"fromUserName"];
  337. self.isMySend = [NSNumber numberWithBool:NO];
  338. }else {
  339. self.userNickname = resultObject[@"toUserName"];
  340. self.userId = resultObject[@"toUserId"];
  341. self.isMySend = [NSNumber numberWithBool:YES];
  342. }
  343. }
  344. JXFriendObject *user = [self selectUser:self.userId];
  345. self.status = user.status;
  346. self.msgsNew = user.msgsNew;
  347. if (user.userNickname.length > 0) {
  348. self.userNickname = user.userNickname;
  349. }
  350. [self insert];
  351. }
  352. -(void)doWriteDb{
  353. if([self.isMySend boolValue])
  354. [self onSendRequest];
  355. else
  356. [self onReceiveRequest];
  357. }
  358. -(NSString*)getLastContent:(NSString *)userId{
  359. NSString* myUserId = MY_USER_ID;
  360. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  361. [self checkTableCreatedInDb:db];
  362. FMResultSet *rs=[db executeQuery:[NSString stringWithFormat:@"select * from %@ where userId=?",_tableName],userId];
  363. JXFriendObject *user=[[JXFriendObject alloc] init];
  364. while ([rs next]) {
  365. [super userFromDataset:user rs:rs];
  366. }
  367. [rs close];
  368. return user.content;
  369. }
  370. // 查找user
  371. - (JXFriendObject *)selectUser:(NSString *)userId {
  372. NSString* myUserId = MY_USER_ID;
  373. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  374. [self checkTableCreatedInDb:db];
  375. FMResultSet *rs=[db executeQuery:[NSString stringWithFormat:@"select * from %@ where userId=?",_tableName],userId];
  376. JXFriendObject *user=[[JXFriendObject alloc] init];
  377. while ([rs next]) {
  378. [super userFromDataset:user rs:rs];
  379. // [user release];
  380. }
  381. [rs close];
  382. return user;
  383. }
  384. -(JXFriendObject*)getFriendById:(NSString*)userId {
  385. NSString* myUserId = MY_USER_ID;
  386. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  387. FMResultSet *rs=[db executeQuery:[NSString stringWithFormat:@"select * from %@ where userId=?",_tableName],userId];
  388. if ([rs next]) {
  389. JXFriendObject *friend=[[JXFriendObject alloc]init];
  390. [super userFromDataset:friend rs:rs];
  391. [rs close];
  392. return friend;
  393. };
  394. return nil;
  395. }
  396. // 更新新消息
  397. - (BOOL)updateNewMsgUserId:(NSString *)userId num:(int)num {
  398. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:MY_USER_ID];
  399. [self checkTableCreatedInDb:db];
  400. NSString *sql = [NSString stringWithFormat:@"update %@ set newMsgs=? where userId=?",_tableName];
  401. BOOL worked=[db executeUpdate:sql,[NSNumber numberWithInt:num],userId];
  402. return worked;
  403. }
  404. // 更新新朋友列表最后一条消息
  405. - (void)updateNewFriendLastContent {
  406. self.isNewFriend = YES;
  407. [g_server getUser:self.userId toView:self];
  408. }
  409. - (BOOL)updateLastContent:(NSString *)s userId:(NSString *)userId {
  410. NSString* myUserId = MY_USER_ID;
  411. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:myUserId];
  412. NSString *sql = [NSString stringWithFormat:@"update %@ set content=? where userId=?",_tableName];
  413. BOOL worked=[db executeUpdate:sql,s,userId];
  414. return worked;
  415. }
  416. -(NSString*)getUserNameWithUserId:(NSString*)userId{
  417. if(userId==nil)
  418. return nil;
  419. FMDatabase* db = [[JXXMPP sharedInstance] openUserDb:MY_USER_ID];
  420. //获取用户名
  421. NSString* sql= [NSString stringWithFormat:@"select userNickname from %@ where userId=%@",_tableName,userId];
  422. FMResultSet *rs=[db executeQuery:sql];
  423. if([rs next]) {
  424. NSString* s = [rs objectForColumnName:@"userNickname"];
  425. return s;
  426. }
  427. return nil;
  428. }
  429. -(void) didServerResultSucces:(JXConnection*)aDownload dict:(NSDictionary*)dict array:(NSArray*)array1{
  430. if([aDownload.action isEqualToString:act_UserGet]){
  431. JXUserObject *user = [[JXUserObject alloc] init];
  432. [user getDataFromDict:dict];
  433. if (self.isNewFriend) {
  434. self.isNewFriend = NO;
  435. NSString* s = self.content;
  436. int n = [self.type intValue];
  437. if([self.isMySend boolValue]){
  438. switch (n) {
  439. case XMPP_TYPE_SAYHELLO:
  440. s= Localized(@"JXFriendObject_WaitPass");
  441. break;
  442. case XMPP_TYPE_PASS:
  443. s = Localized(@"JXFriendObject_Passed");
  444. break;
  445. case XMPP_TYPE_FEEDBACK:
  446. s = self.content;
  447. break;
  448. case XMPP_TYPE_NEWSEE:
  449. s = Localized(@"JXFriendObject_Followed");
  450. break;
  451. case XMPP_TYPE_DELSEE:
  452. s = Localized(@"JXFriendObject_CencalFollowed");
  453. break;
  454. case XMPP_TYPE_SEVERDELFRIEND:
  455. case XMPP_TYPE_DELALL:
  456. if ([user.userType intValue] == 2) {
  457. s = [NSString stringWithFormat:@"已取消关注公众号 %@",self.userNickname];
  458. }else {
  459. s = [NSString stringWithFormat:@"%@ %@",Localized(@"JXAlert_DeleteFirend"),self.userNickname];
  460. }
  461. break;
  462. case XMPP_TYPE_SEVERDEL:
  463. s = self.content;
  464. break;
  465. case XMPP_TYPE_SEVERBLACK:
  466. case XMPP_TYPE_BLACK:
  467. s = [NSString stringWithFormat:@"%@ %@",Localized(@"JXFriendObject_AddedBlackList"),self.userNickname];
  468. break;
  469. case XMPP_TYPE_SEVERNOBLACK:
  470. case XMPP_TYPE_NOBLACK: {
  471. if (self.isMySend) {
  472. s = [NSString stringWithFormat:@"我%@",Localized(@"JXFriendObject_NoBlack")];
  473. }else {
  474. s = [NSString stringWithFormat:@"%@ %@",MY_USER_NAME,Localized(@"JXFriendObject_NoBlack")];
  475. }
  476. }
  477. break;
  478. case XMPP_TYPE_FRIEND: {
  479. if ([user.userType intValue] == 2) {
  480. s = @"已关注公众号";
  481. }else {
  482. s = Localized(@"JXFriendObject_AddedFriend");
  483. }
  484. }
  485. break;
  486. case XMPP_TYPE_CONTACTFRIEND:
  487. s = Localized(@"JX_FriendsViaMobileContacts");
  488. break;
  489. default:
  490. break;
  491. }
  492. }else{
  493. switch (n) {
  494. case XMPP_TYPE_SAYHELLO:
  495. s = self.content;
  496. break;
  497. case XMPP_TYPE_PASS:
  498. s = Localized(@"JXFriendObject_PassGo");
  499. break;
  500. case XMPP_TYPE_FEEDBACK:
  501. s = self.content;
  502. break;
  503. case XMPP_TYPE_NEWSEE:
  504. s = Localized(@"JXFriendObject_FollowYour");
  505. break;
  506. case XMPP_TYPE_DELSEE:
  507. s = Localized(@"JXFriendObject_CancelFollow");
  508. break;
  509. case XMPP_TYPE_SEVERDELFRIEND:
  510. case XMPP_TYPE_DELALL:
  511. s = [NSString stringWithFormat:@"%@ %@",self.userNickname,Localized(@"JXFriendObject_Deleted")];
  512. break;
  513. case XMPP_TYPE_SEVERDEL:
  514. s = self.content;
  515. break;
  516. case XMPP_TYPE_RECOMMEND:
  517. s = Localized(@"JXFriendObject_RecomYou");
  518. break;
  519. case XMPP_TYPE_SEVERBLACK:
  520. case XMPP_TYPE_BLACK:
  521. s = [NSString stringWithFormat:@"%@ %@",self.userNickname,Localized(@"JXFriendObject_PulledBlack")];
  522. break;
  523. case XMPP_TYPE_SEVERNOBLACK:
  524. case XMPP_TYPE_NOBLACK:
  525. s = [NSString stringWithFormat:@"%@ %@",self.userNickname,Localized(@"JXFriendObject_NoBlack")];
  526. break;
  527. case XMPP_TYPE_FRIEND:
  528. s = Localized(@"JXFriendObject_BeAddFriend");
  529. break;
  530. case XMPP_TYPE_CONTACTFRIEND:
  531. s = Localized(@"JX_FriendsViaMobileContacts");
  532. break;
  533. default:
  534. break;
  535. }
  536. }
  537. // 更新最后一条消息
  538. [self updateLastContent:s userId:user.userId];
  539. [self notifyNewRequest];
  540. return;
  541. }
  542. if (![user haveTheUser]) {
  543. [user insert];
  544. }else {
  545. [user update];
  546. }
  547. [self doSaveUser];
  548. [self doMsgForNewUser];
  549. [g_notify postNotificationName:kFriendPassNotif object:self];
  550. // [g_notify postNotificationName:@"newFriend" object:nil userInfo:@{@"use":user}];
  551. }
  552. }
  553. -(int) didServerResultFailed:(JXConnection*)aDownload dict:(NSDictionary*)dict{
  554. return hide_error;
  555. }
  556. -(int) didServerConnectError:(JXConnection*)aDownload error:(NSError *)error{//error为空时,代表超时
  557. return hide_error;
  558. }
  559. -(void) didServerConnectStart:(JXConnection*)aDownload{
  560. }
  561. @end