IMAConversation.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. //
  2. // IMAConversation.h
  3. // TIMAdapter
  4. //
  5. // Created by AlexiChen on 16/1/29.
  6. // Copyright © 2016年 AlexiChen. All rights reserved.
  7. //
  8. #import <IMMessageExt/IMMessageExt.h>
  9. #import "BGCategoryHeader.h"
  10. @class IMAUser;
  11. @class IMAMsg;
  12. typedef void (^HandleMsgBlock)(NSArray *imamsgList, BOOL succ);
  13. typedef void (^HandleMsgCodeBlock)(NSArray *imamsgList, BOOL succ, int code);
  14. typedef void (^RemoveMsgBlock)(NSArray *imamsgList, BOOL succ, CommonBlock removeingAction);
  15. @interface IMAConversation : NSObject
  16. {
  17. @protected
  18. TIMConversation *_conversation;
  19. CLSafeMutableArray *_msgList;
  20. IMAMsg *_lastMessage;
  21. IMAConType _imaConType;
  22. }
  23. @property (nonatomic, strong) IMAMsg *lastMessage;
  24. @property (nonatomic, readonly) CLSafeMutableArray *msgList;
  25. @property (nonatomic, copy) HandleMsgBlock receiveMsg;
  26. - (instancetype)initWith:(TIMConversation *)conv;
  27. - (void)copyConversationInfo:(IMAConversation *)conv;
  28. // 主要用于启动的时候加载本地数据
  29. - (void)asyncLoadLocalLastMsg:(CommonBlock)block;
  30. // 用于切换聊天对象时,释放上次聊天的对象的数据主要是_msgList
  31. - (void)releaseConversation;
  32. // 切换到本会话前,先加载本地的最后count条聊天的的数据
  33. - (void)asyncLoadRecentMessage:(NSInteger)count completion:(HandleMsgBlock)block;
  34. // 用于顶部下拉加载更多历史消息
  35. - (void)asyncLoadRecentMessage:(NSInteger)count from:(IMAMsg *)msg completion:(HandleMsgBlock)block;
  36. - (TIMConversationType)type;
  37. - (NSString *)receiver;
  38. - (BOOL)isChatWith:(IMAUser *)user;
  39. - (NSArray *)sendMessage:(IMAMsg *)msg completion:(HandleMsgCodeBlock)block;
  40. - (void)sendOnlineMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
  41. - (NSArray *)appendWillSendMsg:(IMAMsg *)msg completion:(HandleMsgBlock)block;
  42. - (void)replaceWillSendMsg:(IMAMsg *)msg with:(IMAMsg *)newMsg completion:(HandleMsgBlock)block;
  43. - (NSArray *)removeMsg:(IMAMsg *)msg completion:(RemoveMsgBlock)block;
  44. - (NSArray *)revokeMsg:(IMAMsg *)msg isRemote:(BOOL)isRemote completion:(RemoveMsgBlock)block;
  45. - (void)setReadAllMsg;
  46. - (IMAConType)imaType;
  47. - (NSInteger)unReadCount;
  48. - (void)setDraft:(TIMMessageDraft *)msgDraft;
  49. - (TIMMessageDraft *)getDraft;
  50. //===========================
  51. // Protected方法
  52. - (void)onReceiveNewMessage:(IMAMsg *)msg;
  53. @end