use of com.fanap.podchat.cachemodel.CacheParticipant in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getThreadsByThreadName.
public List<Thread> getThreadsByThreadName(String threadName) {
List<Thread> threads;
List<ThreadVo> listThreadVo = messageDao.getThreadByName(50, 0, threadName);
if (listThreadVo != null) {
threads = new ArrayList<>();
for (ThreadVo threadVo : listThreadVo) {
CacheParticipant cacheParticipant;
CacheReplyInfoVO cacheReplyInfoVO;
Participant participant = null;
ReplyInfoVO replyInfoVO = null;
MessageVO lastMessageVO = null;
if (threadVo.getInviterId() > 0) {
threadVo.setInviter(messageDao.getInviter(threadVo.getInviterId()));
}
if (threadVo.getLastMessageVOId() > 0) {
threadVo.setLastMessageVO(messageDao.getLastMessageVO(threadVo.getLastMessageVOId()));
CacheMessageVO cacheLastMessageVO = threadVo.getLastMessageVO();
if (cacheLastMessageVO != null) {
if (cacheLastMessageVO.getParticipantId() != null) {
cacheParticipant = messageDao.getParticipant(cacheLastMessageVO.getParticipantId());
participant = cacheToParticipantMapper(cacheParticipant, null, null);
}
if (cacheLastMessageVO.getReplyInfoVOId() != null) {
cacheReplyInfoVO = messageDao.getReplyInfo(cacheLastMessageVO.getReplyInfoVOId());
if (cacheReplyInfoVO != null)
replyInfoVO = new ReplyInfoVO(cacheReplyInfoVO.getRepliedToMessageId(), cacheReplyInfoVO.getMessageType(), cacheReplyInfoVO.isDeleted(), cacheReplyInfoVO.getRepliedToMessage(), cacheReplyInfoVO.getSystemMetadata(), cacheReplyInfoVO.getMetadata(), cacheReplyInfoVO.getMessage(), cacheReplyInfoVO.getRepliedToMessageTime(), cacheReplyInfoVO.getRepliedToMessageNanos());
}
lastMessageVO = cacheMessageVoToMessageVoMapper(participant, replyInfoVO, null, cacheLastMessageVO);
}
}
// adding pinned message of thread if exist
addPinnedMessageOfThread(threadVo);
Thread thread = threadVoToThreadMapper(threadVo, lastMessageVO);
threads.add(thread);
}
} else {
return new ArrayList<>();
}
return threads;
}
use of com.fanap.podchat.cachemodel.CacheParticipant in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method saveMessageHistory.
/**
* Cache history
*/
public void saveMessageHistory(@NonNull List<MessageVO> messageVOS, long threadId, int expireAmount) {
worker(() -> {
List<CacheMessageVO> cacheMessageVOList = new ArrayList<>();
for (MessageVO messageVO : messageVOS) {
CacheMessageVO cacheMessageVO = new CacheMessageVO(messageVO);
cacheMessageVO.setThreadVoId(threadId);
long time = cacheMessageVO.getTime();
long timeNanos = cacheMessageVO.getTimeNanos();
long pow = (long) Math.pow(10, 9);
long timestamp = ((time / 1000) * pow) + timeNanos;
cacheMessageVO.setTimeStamp(timestamp);
if (messageVO.getParticipant() != null) {
CacheParticipant cacheParticipant = new CacheParticipant(messageVO.getParticipant(), threadId);
cacheMessageVO.setParticipant(cacheParticipant);
}
if (cacheMessageVO.getParticipant() != null) {
cacheMessageVO.setParticipantId(cacheMessageVO.getParticipant().getId());
saveParticipant(cacheMessageVO.getParticipant(), threadId, expireAmount);
}
if (cacheMessageVO.getConversation() != null) {
cacheMessageVO.setConversationId(cacheMessageVO.getConversation().getId());
}
if (cacheMessageVO.getForwardInfo() != null) {
cacheMessageVO.setForwardInfoId(cacheMessageVO.getForwardInfo().getId());
messageDao.insertForwardInfo(cacheMessageVO.getForwardInfo());
if (cacheMessageVO.getForwardInfo().getParticipant() != null) {
cacheMessageVO.getForwardInfo().setParticipantId(cacheMessageVO.getForwardInfo().getParticipant().getId());
messageDao.insertParticipant(cacheMessageVO.getForwardInfo().getParticipant());
}
}
if (cacheMessageVO.getReplyInfoVO() != null) {
cacheMessageVO.setReplyInfoVOId(cacheMessageVO.getReplyInfoVO().getRepliedToMessageId());
if (cacheMessageVO.getReplyInfoVO().getParticipant() != null) {
cacheMessageVO.getReplyInfoVO().setParticipantId(cacheMessageVO.getReplyInfoVO().getParticipant().getId());
messageDao.insertParticipant(cacheMessageVO.getReplyInfoVO().getParticipant());
}
if (cacheMessageVO.getReplyInfoVO().getParticipant() != null) {
cacheMessageVO.getReplyInfoVO().setParticipantId(cacheMessageVO.getReplyInfoVO().getParticipant().getId());
messageDao.insertParticipant(cacheMessageVO.getReplyInfoVO().getParticipant());
}
messageDao.insertReplyInfoVO(cacheMessageVO.getReplyInfoVO());
}
List<String> hashtags = getHashtags(cacheMessageVO.getMessage());
if (hashtags != null && hashtags.size() > 0)
cacheMessageVO.setHashtags(hashtags);
cacheMessageVOList.add(cacheMessageVO);
}
messageDao.insertHistories(cacheMessageVOList);
});
}
use of com.fanap.podchat.cachemodel.CacheParticipant in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method addPinnedMessageOfThread.
private void addPinnedMessageOfThread(ThreadVo threadVo) {
worker(() -> {
PinMessageVO pinnedMessage = messageDao.getThreadPinnedMessage(threadVo.getId());
if (pinnedMessage != null) {
// get cached participant
if (pinnedMessage.getParticipantId() > 0) {
CacheParticipant cacheParticipant = messageDao.getParticipant(pinnedMessage.getParticipantId());
if (cacheParticipant != null) {
// convert cached participant to participant
Participant participant = cacheToParticipantMapper(cacheParticipant, false, null);
pinnedMessage.setParticipant(participant);
}
}
threadVo.setPinMessageVO(pinnedMessage);
}
});
}
use of com.fanap.podchat.cachemodel.CacheParticipant in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getThreads.
public List<Thread> getThreads(long count, long offset) {
List<Thread> threads;
if (messageDao.getThreads(count, offset) != null) {
List<ThreadVo> threadVos = messageDao.getThreads(count, offset);
threads = new ArrayList<>();
CacheParticipant cacheParticipant;
CacheReplyInfoVO cacheReplyInfoVO;
Participant participant = null;
ReplyInfoVO replyInfoVO = null;
for (ThreadVo threadVo : threadVos) {
MessageVO lastMessageVO = null;
if (threadVo.getInviterId() > 0) {
threadVo.setInviter(messageDao.getInviter(threadVo.getInviterId()));
}
if (threadVo.getLastMessageVOId() > 0) {
threadVo.setLastMessageVO(messageDao.getLastMessageVO(threadVo.getLastMessageVOId()));
CacheMessageVO cacheLastMessageVO = threadVo.getLastMessageVO();
if (cacheLastMessageVO != null) {
if (cacheLastMessageVO.getParticipantId() != null) {
cacheParticipant = messageDao.getParticipant(cacheLastMessageVO.getParticipantId());
if (cacheParticipant != null) {
participant = cacheToParticipantMapper(cacheParticipant, null, null);
}
}
if (cacheLastMessageVO.getReplyInfoVOId() != null) {
cacheReplyInfoVO = messageDao.getReplyInfo(cacheLastMessageVO.getReplyInfoVOId());
if (cacheReplyInfoVO != null)
replyInfoVO = new ReplyInfoVO(cacheReplyInfoVO.getRepliedToMessageId(), cacheReplyInfoVO.getMessageType(), cacheReplyInfoVO.isDeleted(), cacheReplyInfoVO.getRepliedToMessage(), cacheReplyInfoVO.getSystemMetadata(), cacheReplyInfoVO.getMetadata(), cacheReplyInfoVO.getMessage(), cacheReplyInfoVO.getRepliedToMessageTime(), cacheReplyInfoVO.getRepliedToMessageNanos());
}
lastMessageVO = cacheMessageVoToMessageVoMapper(participant, replyInfoVO, null, cacheLastMessageVO);
}
}
// adding pinned message of thread if exist
addPinnedMessageOfThread(threadVo);
Thread thread = threadVoToThreadMapper(threadVo, lastMessageVO);
threads.add(thread);
}
// sort threads by last message time
Collections.sort(new ArrayList<>(threads), (o1, o2) -> Long.compare(o1.getLastMessageVO().getTime(), o2.getLastMessageVO().getTime()));
return threads;
} else {
threads = new ArrayList<>();
}
return threads;
}
use of com.fanap.podchat.cachemodel.CacheParticipant in project pod-chat-android-sdk by FanapSoft.
the class MessageDatabaseHelper method getThreadsByThreadIds.
@NonNull
public List<Thread> getThreadsByThreadIds(@NonNull ArrayList<Integer> threadIds) {
List<Thread> threads = new ArrayList<>();
for (int id : threadIds) {
if (messageDao.getThreadById(id) != null) {
ThreadVo threadVo = messageDao.getThreadById(id);
CacheParticipant cacheParticipant;
CacheReplyInfoVO cacheReplyInfoVO;
Participant participant = null;
ReplyInfoVO replyInfoVO = null;
MessageVO lastMessageVO = null;
if (threadVo.getInviterId() > 0) {
threadVo.setInviter(messageDao.getInviter(threadVo.getInviterId()));
}
if (threadVo.getLastMessageVOId() > 0) {
threadVo.setLastMessageVO(messageDao.getLastMessageVO(threadVo.getLastMessageVOId()));
CacheMessageVO cacheLastMessageVO = threadVo.getLastMessageVO();
if (cacheLastMessageVO != null) {
if (cacheLastMessageVO.getParticipantId() != null) {
cacheParticipant = messageDao.getParticipant(cacheLastMessageVO.getParticipantId());
participant = cacheToParticipantMapper(cacheParticipant, null, null);
}
if (cacheLastMessageVO.getReplyInfoVOId() != null) {
cacheReplyInfoVO = messageDao.getReplyInfo(cacheLastMessageVO.getReplyInfoVOId());
if (cacheReplyInfoVO != null)
replyInfoVO = new ReplyInfoVO(cacheReplyInfoVO.getRepliedToMessageId(), cacheReplyInfoVO.getMessageType(), cacheReplyInfoVO.isDeleted(), cacheReplyInfoVO.getRepliedToMessage(), cacheReplyInfoVO.getSystemMetadata(), cacheReplyInfoVO.getMetadata(), cacheReplyInfoVO.getMessage(), cacheReplyInfoVO.getRepliedToMessageTime(), cacheReplyInfoVO.getRepliedToMessageNanos());
}
lastMessageVO = cacheMessageVoToMessageVoMapper(participant, replyInfoVO, null, cacheLastMessageVO);
}
}
// adding pinned message of thread if exist
addPinnedMessageOfThread(threadVo);
Thread thread = threadVoToThreadMapper(threadVo, lastMessageVO);
threads.add(thread);
}
}
return threads;
}
Aggregations