Fixed & improved file transfer message listener use

This commit is contained in:
Sylvain Berfini 2017-11-13 15:09:04 +01:00
parent ae2d6c41a1
commit 342fa44027
2 changed files with 3 additions and 42 deletions

View file

@ -307,7 +307,7 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
String externalBodyUrl = message.getExternalBodyUrl();
Content fileTransferContent = message.getFileTransferInformation();
String appData = message.getAppdata();
if (externalBodyUrl != null || fileTransferContent != null) { // Incoming file transfer
if (externalBodyUrl != null) { // Incoming file transfer
if (appData != null) { // Download already done, just display the result
displayAttachedFile(message, holder);
} else { // Attachment not yet downloaded
@ -342,6 +342,7 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
holder.fileTransferLayout.setVisibility(View.GONE);
if (message.getState() == ChatMessage.State.InProgress) {
message.setListener(this); // add the listener for file upload progress display
holder.messageSendingInProgress.setVisibility(View.GONE);
holder.fileTransferLayout.setVisibility(View.VISIBLE);
holder.fileTransferAction.setText(mContext.getString(R.string.cancel));
@ -491,7 +492,6 @@ public class ChatEventsAdapter extends BaseAdapter implements ChatMessageListene
holder.fileTransferLayout.setVisibility(View.GONE);
displayAttachedFile(message, holder);
} else {
holder.fileTransferAction.setVisibility(View.GONE);
holder.fileTransferProgressBar.setVisibility(View.VISIBLE);
holder.fileTransferProgressBar.setProgress(offset * 100 / total);
}

View file

@ -625,46 +625,7 @@ public class GroupChatFragment extends Fragment implements ChatRoomListener, Con
} else {
msg = mChatRoom.createMessage(text);
}
msg.setListener(new ChatMessageListenerStub() {
@Override
public void onFileTransferProgressIndication(ChatMessage message, Content content, int offset, int total) {
ChatBubbleViewHolder holder = (ChatBubbleViewHolder) message.getUserData();
if (holder != null && message.getMessageId().equals(holder.messageId) && message.isOutgoing()) {
if (offset == total) {
holder.fileTransferLayout.setVisibility(View.GONE);
holder.fileTransferProgressBar.setVisibility(View.GONE);
holder.fileTransferAction.setVisibility(View.GONE);
} else {
holder.fileTransferProgressBar.setVisibility(View.VISIBLE);
holder.fileTransferProgressBar.setProgress(offset * 100 / total);
}
}
}
@Override
public void onMsgStateChanged(ChatMessage message, ChatMessage.State state) {
ChatBubbleViewHolder holder = (ChatBubbleViewHolder) message.getUserData();
if (holder != null && message.getMessageId().equals(holder.messageId) && message.isOutgoing()) {
if (state == ChatMessage.State.DeliveredToUser) {
holder.imdmLayout.setVisibility(View.VISIBLE);
holder.imdmIcon.setImageResource(R.drawable.chat_delivered);
holder.imdmLabel.setText(R.string.delivered);
holder.imdmLabel.setTextColor(getResources().getColor(R.color.colorD));
} else if (state == ChatMessage.State.Displayed) {
holder.imdmLayout.setVisibility(View.VISIBLE);
holder.imdmIcon.setImageResource(R.drawable.chat_read);
holder.imdmLabel.setText(R.string.displayed);
holder.imdmLabel.setTextColor(getResources().getColor(R.color.colorK));
} else if (state == ChatMessage.State.NotDelivered) {
holder.imdmLayout.setVisibility(View.VISIBLE);
holder.imdmIcon.setImageResource(R.drawable.chat_error);
holder.imdmLabel.setText(R.string.resend);
holder.imdmLabel.setTextColor(getResources().getColor(R.color.colorI));
}
}
}
});
// Set listener not required here anymore, message will be added to messages list and adapter will set the listener
msg.send();
mFilesUploadLayout.removeAllViews();