Search in sources :

Example 16 with TextMessage

use of com.cometchat.pro.models.TextMessage in project android-java-chat-push-notification-app by cometchat-pro.

the class CometChatMessageList method sendMessage.

/**
 * This method is used to send Text Message to other users and groups.
 *
 * @param message is a String which is been sent as message.
 * @see TextMessage
 * @see CometChat#sendMessage(TextMessage, CometChat.CallbackListener)
 */
private void sendMessage(String message) {
    TextMessage textMessage;
    if (type.equalsIgnoreCase(CometChatConstants.RECEIVER_TYPE_USER))
        textMessage = new TextMessage(Id, message, CometChatConstants.RECEIVER_TYPE_USER);
    else
        textMessage = new TextMessage(Id, message, CometChatConstants.RECEIVER_TYPE_GROUP);
    sendTypingIndicator(true);
    Log.e(TAG, "sendMessage: " + textMessage);
    textMessage.setCategory(CometChatConstants.CATEGORY_MESSAGE);
    textMessage.setSender(loggedInUser);
    textMessage.setMuid(System.currentTimeMillis() + "");
    if (messageAdapter != null) {
        MediaUtils.playSendSound(context, R.raw.outgoing_message);
        messageAdapter.addMessage(textMessage);
        scrollToBottom();
    }
    isSmartReplyClicked = false;
    rvSmartReply.setVisibility(GONE);
    CometChat.sendMessage(textMessage, new CometChat.CallbackListener<TextMessage>() {

        @Override
        public void onSuccess(TextMessage textMessage) {
            if (messageAdapter != null)
                messageAdapter.updateChangedMessage(textMessage);
        }

        @Override
        public void onError(CometChatException e) {
            if (e.getCode().equalsIgnoreCase("ERROR_INTERNET_UNAVAILABLE")) {
                CometChatSnackBar.show(context, rvChatListView, getString(R.string.no_internet_available), CometChatSnackBar.ERROR);
            } else if (!e.getCode().equalsIgnoreCase("ERR_BLOCKED_BY_EXTENSION")) {
                if (messageAdapter == null) {
                    Log.e(TAG, "onError: MessageAdapter is null");
                } else {
                    e.printStackTrace();
                    textMessage.setSentAt(-1);
                    messageAdapter.updateChangedMessage(textMessage);
                }
            } else if (messageAdapter != null) {
                messageAdapter.remove(textMessage);
            }
        }
    });
}
Also used : CometChatException(com.cometchat.pro.exceptions.CometChatException) CometChat(com.cometchat.pro.core.CometChat) TextMessage(com.cometchat.pro.models.TextMessage)

Example 17 with TextMessage

use of com.cometchat.pro.models.TextMessage in project android-java-chat-push-notification-app by cometchat-pro.

the class CometChatMessageList method setLongMessageClick.

@Override
public void setLongMessageClick(List<BaseMessage> baseMessagesList) {
    Log.e(TAG, "setLongMessageClick: " + baseMessagesList);
    isReply = false;
    isEdit = false;
    messageActionFragment = new CometChatMessageActions();
    replyMessageLayout.setVisibility(GONE);
    editMessageLayout.setVisibility(GONE);
    fetchSettings();
    List<BaseMessage> textMessageList = new ArrayList<>();
    List<BaseMessage> mediaMessageList = new ArrayList<>();
    List<BaseMessage> locationMessageList = new ArrayList<>();
    List<BaseMessage> pollsMessageList = new ArrayList<>();
    List<BaseMessage> stickerMessageList = new ArrayList<>();
    List<BaseMessage> whiteBoardMessageList = new ArrayList<>();
    List<BaseMessage> writeBoardMessageList = new ArrayList<>();
    List<BaseMessage> meetingMessageList = new ArrayList<>();
    for (BaseMessage baseMessage : baseMessagesList) {
        if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_TEXT)) {
            textMessageList.add(baseMessage);
        } else if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_IMAGE) || baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_VIDEO) || baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_FILE) || baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_AUDIO)) {
            mediaMessageList.add(baseMessage);
        } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.LOCATION)) {
            locationMessageList.add(baseMessage);
        } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.STICKERS)) {
            stickerMessageList.add(baseMessage);
        } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.POLLS)) {
            pollsMessageList.add(baseMessage);
        } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.WHITEBOARD)) {
            whiteBoardMessageList.add(baseMessage);
        } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.WRITEBOARD)) {
            writeBoardMessageList.add(baseMessage);
        } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.GROUP_CALL)) {
            meetingMessageList.add(baseMessage);
        }
    }
    if (textMessageList.size() == 1) {
        BaseMessage basemessage = textMessageList.get(0);
        if (basemessage != null && basemessage.getSender() != null) {
            if (!(basemessage instanceof Action) && basemessage.getDeletedAt() == 0) {
                baseMessage = basemessage;
                if (basemessage.getReplyCount() > 0)
                    threadVisible = false;
                if (basemessage.getSender().getUid().equals(CometChat.getLoggedInUser().getUid())) {
                    FeatureRestriction.isDeleteMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            deleteVisible = booleanVal;
                        }
                    });
                } else {
                    editVisible = false;
                    if (loggedInUserScope != null && (loggedInUserScope.equals(CometChatConstants.SCOPE_ADMIN) || loggedInUserScope.equals(CometChatConstants.SCOPE_MODERATOR))) {
                        FeatureRestriction.isDeleteMemberMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                            @Override
                            public void onSuccess(Boolean booleanVal) {
                                deleteVisible = booleanVal;
                            }
                        });
                    } else {
                        deleteVisible = false;
                    }
                }
                if (basemessage.getSentAt() == -1) {
                    translateVisible = false;
                    threadVisible = false;
                    deleteVisible = false;
                    editVisible = false;
                    copyVisible = false;
                    forwardVisible = false;
                    reactionVisible = false;
                    replyVisible = false;
                    shareVisible = false;
                    retryVisible = true;
                }
            }
        }
    }
    if (mediaMessageList.size() == 1) {
        translateVisible = false;
        BaseMessage basemessage = mediaMessageList.get(0);
        if (basemessage != null && basemessage.getSender() != null) {
            if (!(basemessage instanceof Action) && basemessage.getDeletedAt() == 0) {
                baseMessage = basemessage;
                if (basemessage.getReplyCount() > 0)
                    threadVisible = false;
                copyVisible = false;
                // }
                if (basemessage.getSender().getUid().equals(CometChat.getLoggedInUser().getUid())) {
                    FeatureRestriction.isDeleteMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            deleteVisible = booleanVal;
                        }
                    });
                    editVisible = false;
                } else {
                    if (loggedInUserScope != null && (loggedInUserScope.equals(CometChatConstants.SCOPE_ADMIN) || loggedInUserScope.equals(CometChatConstants.SCOPE_MODERATOR))) {
                        FeatureRestriction.isDeleteMemberMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                            @Override
                            public void onSuccess(Boolean booleanVal) {
                                deleteVisible = booleanVal;
                            }
                        });
                    } else {
                        deleteVisible = false;
                    }
                    editVisible = false;
                }
            }
            if (basemessage.getSentAt() == -1) {
                translateVisible = false;
                threadVisible = false;
                deleteVisible = false;
                editVisible = false;
                copyVisible = false;
                forwardVisible = false;
                reactionVisible = false;
                replyVisible = false;
                shareVisible = false;
                retryVisible = true;
            }
        }
    }
    if (locationMessageList.size() == 1) {
        translateVisible = false;
        BaseMessage basemessage = locationMessageList.get(0);
        if (basemessage != null && basemessage.getSender() != null) {
            if (!(basemessage instanceof Action) && basemessage.getDeletedAt() == 0) {
                baseMessage = basemessage;
                if (basemessage.getReplyCount() > 0)
                    threadVisible = false;
                else {
                    FeatureRestriction.isThreadedMessagesEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            threadVisible = booleanVal;
                        }
                    });
                }
                copyVisible = false;
                FeatureRestriction.isMessageRepliesEnabled(new FeatureRestriction.OnSuccessListener() {

                    @Override
                    public void onSuccess(Boolean booleanVal) {
                        replyVisible = booleanVal;
                    }
                });
                shareVisible = false;
                FeatureRestriction.isShareCopyForwardMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                    @Override
                    public void onSuccess(Boolean booleanVal) {
                        forwardVisible = booleanVal;
                    }
                });
                if (basemessage.getSender().getUid().equals(CometChat.getLoggedInUser().getUid())) {
                    FeatureRestriction.isDeleteMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            deleteVisible = booleanVal;
                        }
                    });
                    editVisible = false;
                } else {
                    if (loggedInUserScope != null && (loggedInUserScope.equals(CometChatConstants.SCOPE_ADMIN) || loggedInUserScope.equals(CometChatConstants.SCOPE_MODERATOR))) {
                        FeatureRestriction.isDeleteMemberMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                            @Override
                            public void onSuccess(Boolean booleanVal) {
                                deleteVisible = booleanVal;
                            }
                        });
                    } else {
                        deleteVisible = false;
                    }
                    editVisible = false;
                }
            }
            if (basemessage.getSentAt() == -1) {
                translateVisible = false;
                threadVisible = false;
                deleteVisible = false;
                editVisible = false;
                copyVisible = false;
                forwardVisible = false;
                reactionVisible = false;
                replyVisible = false;
                shareVisible = false;
                retryVisible = true;
            }
        }
    }
    if (pollsMessageList.size() == 1) {
        forwardVisible = false;
        translateVisible = false;
        copyVisible = false;
        editVisible = false;
        shareVisible = false;
        BaseMessage basemessage = pollsMessageList.get(0);
        if (basemessage != null && basemessage.getSender() != null) {
            if (!(basemessage instanceof Action) && basemessage.getDeletedAt() == 0) {
                baseMessage = basemessage;
                if (basemessage.getReplyCount() > 0)
                    threadVisible = false;
                else {
                    FeatureRestriction.isThreadedMessagesEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            threadVisible = booleanVal;
                        }
                    });
                }
                if (basemessage.getSender().getUid().equals(CometChat.getLoggedInUser().getUid())) {
                    FeatureRestriction.isDeleteMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            deleteVisible = booleanVal;
                        }
                    });
                } else {
                    if (loggedInUserScope != null && (loggedInUserScope.equals(CometChatConstants.SCOPE_ADMIN) || loggedInUserScope.equals(CometChatConstants.SCOPE_MODERATOR))) {
                        FeatureRestriction.isDeleteMemberMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                            @Override
                            public void onSuccess(Boolean booleanVal) {
                                deleteVisible = booleanVal;
                            }
                        });
                    } else {
                        deleteVisible = false;
                    }
                }
            }
        }
    }
    if (stickerMessageList.size() == 1) {
        forwardVisible = false;
        copyVisible = false;
        editVisible = false;
        translateVisible = false;
        shareVisible = false;
        BaseMessage basemessage = stickerMessageList.get(0);
        if (basemessage != null && basemessage.getSender() != null) {
            if (basemessage.getDeletedAt() == 0) {
                baseMessage = basemessage;
                if (basemessage.getReplyCount() > 0)
                    threadVisible = false;
                else {
                    FeatureRestriction.isThreadedMessagesEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            threadVisible = booleanVal;
                        }
                    });
                }
                if (basemessage.getSender().getUid().equals(CometChat.getLoggedInUser().getUid())) {
                    FeatureRestriction.isDeleteMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            deleteVisible = booleanVal;
                        }
                    });
                } else {
                    if (loggedInUserScope != null && (loggedInUserScope.equals(CometChatConstants.SCOPE_ADMIN) || loggedInUserScope.equals(CometChatConstants.SCOPE_MODERATOR))) {
                        FeatureRestriction.isDeleteMemberMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                            @Override
                            public void onSuccess(Boolean booleanVal) {
                                deleteVisible = booleanVal;
                            }
                        });
                    } else {
                        deleteVisible = false;
                    }
                }
            }
        }
    }
    if (whiteBoardMessageList.size() == 1) {
        forwardVisible = false;
        copyVisible = false;
        translateVisible = false;
        editVisible = false;
        shareVisible = false;
        BaseMessage basemessage = whiteBoardMessageList.get(0);
        if (basemessage != null && basemessage.getSender() != null) {
            if (basemessage.getDeletedAt() == 0) {
                baseMessage = basemessage;
                if (basemessage.getReplyCount() > 0)
                    threadVisible = false;
                else {
                    FeatureRestriction.isThreadedMessagesEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            threadVisible = booleanVal;
                        }
                    });
                }
                if (basemessage.getSender().getUid().equals(CometChat.getLoggedInUser().getUid())) {
                    FeatureRestriction.isDeleteMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            deleteVisible = booleanVal;
                        }
                    });
                } else {
                    if (loggedInUserScope != null && (loggedInUserScope.equals(CometChatConstants.SCOPE_ADMIN) || loggedInUserScope.equals(CometChatConstants.SCOPE_MODERATOR))) {
                        FeatureRestriction.isDeleteMemberMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                            @Override
                            public void onSuccess(Boolean booleanVal) {
                                deleteVisible = booleanVal;
                            }
                        });
                    } else {
                        deleteVisible = false;
                    }
                }
            }
        }
    }
    if (writeBoardMessageList.size() == 1) {
        forwardVisible = false;
        copyVisible = false;
        editVisible = false;
        translateVisible = false;
        shareVisible = false;
        BaseMessage basemessage = writeBoardMessageList.get(0);
        if (basemessage != null && basemessage.getSender() != null) {
            if (basemessage.getDeletedAt() == 0) {
                baseMessage = basemessage;
                if (basemessage.getReplyCount() > 0)
                    threadVisible = false;
                else {
                    FeatureRestriction.isThreadedMessagesEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            threadVisible = booleanVal;
                        }
                    });
                }
                if (basemessage.getSender().getUid().equals(CometChat.getLoggedInUser().getUid())) {
                    FeatureRestriction.isDeleteMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            deleteVisible = booleanVal;
                        }
                    });
                } else {
                    if (loggedInUserScope != null && (loggedInUserScope.equals(CometChatConstants.SCOPE_ADMIN) || loggedInUserScope.equals(CometChatConstants.SCOPE_MODERATOR))) {
                        FeatureRestriction.isDeleteMemberMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                            @Override
                            public void onSuccess(Boolean booleanVal) {
                                deleteVisible = booleanVal;
                            }
                        });
                    } else {
                        deleteVisible = false;
                    }
                }
            }
        }
    }
    if (meetingMessageList.size() == 1) {
        forwardVisible = false;
        copyVisible = false;
        editVisible = false;
        shareVisible = false;
        replyVisible = true;
        translateVisible = false;
        threadVisible = false;
        BaseMessage basemessage = meetingMessageList.get(0);
        if (basemessage != null && basemessage.getSender() != null) {
            if (basemessage.getDeletedAt() == 0) {
                baseMessage = basemessage;
                if (basemessage.getSender().getUid().equals(CometChat.getLoggedInUser().getUid())) {
                    FeatureRestriction.isDeleteMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                        @Override
                        public void onSuccess(Boolean booleanVal) {
                            deleteVisible = booleanVal;
                        }
                    });
                } else {
                    if (loggedInUserScope != null && (loggedInUserScope.equals(CometChatConstants.SCOPE_ADMIN) || loggedInUserScope.equals(CometChatConstants.SCOPE_MODERATOR))) {
                        FeatureRestriction.isDeleteMemberMessageEnabled(new FeatureRestriction.OnSuccessListener() {

                            @Override
                            public void onSuccess(Boolean booleanVal) {
                                deleteVisible = booleanVal;
                            }
                        });
                    } else {
                        deleteVisible = false;
                    }
                }
            }
        }
    }
    baseMessages = baseMessagesList;
    Bundle bundle = new Bundle();
    bundle.putBoolean("copyVisible", copyVisible);
    bundle.putBoolean("threadVisible", threadVisible);
    bundle.putBoolean("shareVisible", shareVisible);
    bundle.putBoolean("editVisible", editVisible);
    bundle.putBoolean("deleteVisible", deleteVisible);
    bundle.putBoolean("replyVisible", replyVisible);
    bundle.putBoolean("forwardVisible", forwardVisible);
    bundle.putBoolean("translateVisible", translateVisible);
    bundle.putBoolean("retryVisible", retryVisible);
    bundle.putBoolean("isReactionVisible", reactionVisible);
    if (baseMessage.getReceiverType().equalsIgnoreCase(CometChatConstants.RECEIVER_TYPE_GROUP) && !baseMessage.getSender().getUid().equalsIgnoreCase(loggedInUser.getUid())) {
        bundle.putBoolean("privateReplyVisible", replyPrivately);
        bundle.putBoolean("replyPrivatelyVisible", replyVisible);
    }
    if (CometChat.isExtensionEnabled("reactions")) {
        bundle.putBoolean("isReactionVisible", true);
    } else {
        bundle.putBoolean("isReactionVisible", false);
    }
    if (baseMessage.getReceiverType().equals(CometChatConstants.RECEIVER_TYPE_GROUP) && baseMessage.getSender().getUid().equals(loggedInUser.getUid())) {
        FeatureRestriction.isDeliveryReceiptsEnabled(new FeatureRestriction.OnSuccessListener() {

            @Override
            public void onSuccess(Boolean booleanVal) {
                if (booleanVal)
                    bundle.putBoolean("messageInfoVisible", true);
            }
        });
    }
    bundle.putString("type", CometChatMessageListActivity.class.getName());
    messageActionFragment.setArguments(bundle);
    if (baseMessage.getSentAt() != 0) {
        if (retryVisible || editVisible || copyVisible || threadVisible || shareVisible || deleteVisible || replyVisible || forwardVisible || reactionVisible) {
            messageActionFragment.show(getFragmentManager(), messageActionFragment.getTag());
        }
    }
    messageActionFragment.setMessageActionListener(new CometChatMessageActions.MessageActionListener() {

        @Override
        public void onReplyMessagePrivately() {
            if (baseMessage != null) {
                User user = baseMessage.getSender();
                Intent intent = new Intent(context, CometChatMessageListActivity.class);
                intent.putExtra(UIKitConstants.IntentStrings.UID, user.getUid());
                intent.putExtra(UIKitConstants.IntentStrings.AVATAR, user.getAvatar());
                intent.putExtra(UIKitConstants.IntentStrings.STATUS, user.getStatus());
                intent.putExtra(UIKitConstants.IntentStrings.LINK, user.getLink());
                intent.putExtra(UIKitConstants.IntentStrings.NAME, user.getName());
                intent.putExtra(UIKitConstants.IntentStrings.TYPE, CometChatConstants.RECEIVER_TYPE_USER);
                intent.putExtra(UIKitConstants.IntentStrings.MESSAGE, baseMessage.getRawMessage().toString());
                startActivity(intent);
                if (getActivity() != null)
                    getActivity().finish();
            }
        }

        @Override
        public void onPrivateReplyToUser() {
            if (baseMessage != null) {
                User user = baseMessage.getSender();
                Intent intent = new Intent(context, CometChatMessageListActivity.class);
                intent.putExtra(UIKitConstants.IntentStrings.UID, user.getUid());
                intent.putExtra(UIKitConstants.IntentStrings.AVATAR, user.getAvatar());
                intent.putExtra(UIKitConstants.IntentStrings.STATUS, user.getStatus());
                intent.putExtra(UIKitConstants.IntentStrings.LINK, user.getLink());
                intent.putExtra(UIKitConstants.IntentStrings.NAME, user.getName());
                intent.putExtra(UIKitConstants.IntentStrings.TYPE, CometChatConstants.RECEIVER_TYPE_USER);
                startActivity(intent);
                if (getActivity() != null)
                    getActivity().finish();
            }
        }

        @Override
        public void onThreadMessageClick() {
            startThreadActivity();
        }

        @Override
        public void onEditMessageClick() {
            if (baseMessage != null && baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_TEXT)) {
                isEdit = true;
                isReply = false;
                tvMessageTitle.setText(getResources().getString(R.string.edit_message));
                tvMessageSubTitle.setText(((TextMessage) baseMessage).getText());
                composeBox.ivMic.setVisibility(GONE);
                composeBox.ivSend.setVisibility(View.VISIBLE);
                editMessageLayout.setVisibility(View.VISIBLE);
                composeBox.etComposeBox.setText(((TextMessage) baseMessage).getText());
                if (messageAdapter != null) {
                    messageAdapter.setSelectedMessage(baseMessage.getId());
                    messageAdapter.notifyDataSetChanged();
                }
            }
        }

        @Override
        public void onReplyMessageClick() {
            replyMessage();
        }

        @Override
        public void onForwardMessageClick() {
            startForwardMessageActivity();
        }

        @Override
        public void onDeleteMessageClick() {
            deleteMessage(baseMessage);
            if (messageAdapter != null) {
                messageAdapter.clearLongClickSelectedItem();
                messageAdapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onCopyMessageClick() {
            String message = "";
            for (BaseMessage bMessage : baseMessages) {
                if (bMessage.getDeletedAt() == 0 && bMessage instanceof TextMessage) {
                    message = message + "[" + Utils.getLastMessageDate(context, bMessage.getSentAt()) + "] " + bMessage.getSender().getName() + ": " + ((TextMessage) bMessage).getText();
                }
            }
            Log.e(TAG, "onCopy: " + message);
            ClipboardManager clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
            ClipData clipData = ClipData.newPlainText("MessageAdapter", message);
            clipboardManager.setPrimaryClip(clipData);
            Toast.makeText(context, getResources().getString(R.string.text_copied), Toast.LENGTH_LONG).show();
            if (messageAdapter != null) {
                messageAdapter.clearLongClickSelectedItem();
                messageAdapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onShareMessageClick() {
            shareMessage();
        }

        @Override
        public void onMessageInfoClick() {
            Intent intent = new Intent(context, CometChatMessageInfoScreenActivity.class);
            intent.putExtra(UIKitConstants.IntentStrings.ID, baseMessage.getId());
            intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE, baseMessage.getType());
            intent.putExtra(UIKitConstants.IntentStrings.SENTAT, baseMessage.getSentAt());
            if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_TEXT)) {
                intent.putExtra(UIKitConstants.IntentStrings.TEXTMESSAGE, Extensions.checkProfanityMessage(context, baseMessage));
            } else if (baseMessage.getCategory().equals(CometChatConstants.CATEGORY_CUSTOM)) {
                if (((CustomMessage) baseMessage).getCustomData() != null)
                    intent.putExtra(UIKitConstants.IntentStrings.CUSTOM_MESSAGE, ((CustomMessage) baseMessage).getCustomData().toString());
                if (baseMessage.getType().equals(UIKitConstants.IntentStrings.LOCATION)) {
                    intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE, UIKitConstants.IntentStrings.LOCATION);
                } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.STICKERS)) {
                    intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE, UIKitConstants.IntentStrings.STICKERS);
                } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.WHITEBOARD)) {
                    intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE, UIKitConstants.IntentStrings.WHITEBOARD);
                    intent.putExtra(UIKitConstants.IntentStrings.TEXTMESSAGE, Extensions.getWhiteBoardUrl(baseMessage));
                } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.WRITEBOARD)) {
                    intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE, UIKitConstants.IntentStrings.WRITEBOARD);
                    intent.putExtra(UIKitConstants.IntentStrings.TEXTMESSAGE, Extensions.getWriteBoardUrl(baseMessage));
                } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.GROUP_CALL)) {
                    intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE, UIKitConstants.IntentStrings.GROUP_CALL);
                } else {
                    intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE, UIKitConstants.IntentStrings.POLLS);
                }
            } else {
                boolean isImageNotSafe = Extensions.getImageModeration(context, baseMessage);
                intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE_IMAGE_URL, ((MediaMessage) baseMessage).getAttachment().getFileUrl());
                intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE_IMAGE_NAME, ((MediaMessage) baseMessage).getAttachment().getFileName());
                intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE_IMAGE_SIZE, ((MediaMessage) baseMessage).getAttachment().getFileSize());
                intent.putExtra(UIKitConstants.IntentStrings.MESSAGE_TYPE_IMAGE_EXTENSION, ((MediaMessage) baseMessage).getAttachment().getFileExtension());
                intent.putExtra(UIKitConstants.IntentStrings.IMAGE_MODERATION, isImageNotSafe);
            }
            context.startActivity(intent);
        }

        @Override
        public void onReactionClick(Reaction reaction) {
            if (reaction.getName().equals("add_emoji")) {
                CometChatReactionDialog reactionDialog = new CometChatReactionDialog();
                reactionDialog.setOnEmojiClick(new OnReactionClickListener() {

                    @Override
                    public void onEmojiClicked(Reaction emojicon) {
                        sendReaction(emojicon);
                        reactionDialog.dismiss();
                    }
                });
                reactionDialog.show(getFragmentManager(), "ReactionDialog");
            } else {
                sendReaction(reaction);
            }
        }

        @Override
        public void onTranslateMessageClick() {
            try {
                String localeLanguage = Locale.getDefault().getLanguage();
                JSONObject body = new JSONObject();
                JSONArray languages = new JSONArray();
                languages.put(localeLanguage);
                body.put("msgId", baseMessage.getId());
                body.put("languages", languages);
                body.put("text", ((TextMessage) baseMessage).getText());
                CometChat.callExtension("message-translation", "POST", "/v2/translate", body, new CometChat.CallbackListener<JSONObject>() {

                    @Override
                    public void onSuccess(JSONObject jsonObject) {
                        if (Extensions.isMessageTranslated(jsonObject, ((TextMessage) baseMessage).getText())) {
                            if (baseMessage.getMetadata() != null) {
                                JSONObject meta = baseMessage.getMetadata();
                                try {
                                    meta.accumulate("values", jsonObject);
                                    baseMessage.setMetadata(meta);
                                    updateMessage(baseMessage);
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                            } else {
                                baseMessage.setMetadata(jsonObject);
                                updateMessage(baseMessage);
                            }
                        } else {
                            CometChatSnackBar.show(context, rvChatListView, context.getString(R.string.no_translation_available), CometChatSnackBar.WARNING);
                        }
                    }

                    @Override
                    public void onError(CometChatException e) {
                        Toast.makeText(context, e.getCode(), Toast.LENGTH_LONG).show();
                    }
                });
            } catch (Exception e) {
                Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onRetryClick() {
            if (baseMessage != null) {
                messageAdapter.remove(baseMessage);
                if (baseMessage.getType().equalsIgnoreCase(CometChatConstants.MESSAGE_TYPE_TEXT))
                    sendMessage(((TextMessage) baseMessage).getText());
            }
        }
    });
}
Also used : OnReactionClickListener(com.cometchat.pro.uikit.ui_components.shared.cometchatReaction.listener.OnReactionClickListener) CometChatException(com.cometchat.pro.exceptions.CometChatException) Action(com.cometchat.pro.models.Action) User(com.cometchat.pro.models.User) MediaMessage(com.cometchat.pro.models.MediaMessage) ArrayList(java.util.ArrayList) CometChatReactionDialog(com.cometchat.pro.uikit.ui_components.shared.cometchatReaction.CometChatReactionDialog) BaseMessage(com.cometchat.pro.models.BaseMessage) FeatureRestriction(com.cometchat.pro.uikit.ui_settings.FeatureRestriction) ClipboardManager(android.content.ClipboardManager) Bundle(android.os.Bundle) JSONArray(org.json.JSONArray) JSONException(org.json.JSONException) Intent(android.content.Intent) Reaction(com.cometchat.pro.uikit.ui_components.shared.cometchatReaction.model.Reaction) CometChatException(com.cometchat.pro.exceptions.CometChatException) JSONException(org.json.JSONException) JSONObject(org.json.JSONObject) CometChatMessageInfoScreenActivity(com.cometchat.pro.uikit.ui_components.messages.message_information.CometChatMessageInfoScreenActivity) CometChatMessageActions(com.cometchat.pro.uikit.ui_components.messages.message_actions.CometChatMessageActions) ClipData(android.content.ClipData) TextMessage(com.cometchat.pro.models.TextMessage)

Example 18 with TextMessage

use of com.cometchat.pro.models.TextMessage in project android-java-chat-push-notification-app by cometchat-pro.

the class Extensions method checkProfanityMessage.

/**
 * Below method checks whether baseMessage contains profanity or not using Profanity Filter
 * extension. If yes then it will return clean message else the orignal message will be return.
 * @param baseMessage is object of BaseMessage
 * @return a String value.
 */
public static String checkProfanityMessage(Context context, BaseMessage baseMessage) {
    String result = ((TextMessage) baseMessage).getText();
    HashMap<String, JSONObject> extensionList = Extensions.extensionCheck(baseMessage);
    if (extensionList != null) {
        try {
            if (extensionList.containsKey("profanityFilter")) {
                JSONObject profanityFilter = extensionList.get("profanityFilter");
                String profanity = profanityFilter.getString("profanity");
                String cleanMessage = profanityFilter.getString("message_clean");
                if (profanity.equals("no"))
                    result = ((TextMessage) baseMessage).getText();
                else
                    result = cleanMessage;
            } else {
                result = ((TextMessage) baseMessage).getText().trim();
            }
        } catch (Exception e) {
            Log.e(TAG, "checkProfanityMessage:Error: " + e.getMessage());
        }
    }
    return result;
}
Also used : JSONObject(org.json.JSONObject) TextMessage(com.cometchat.pro.models.TextMessage) CometChatException(com.cometchat.pro.exceptions.CometChatException) JSONException(org.json.JSONException)

Example 19 with TextMessage

use of com.cometchat.pro.models.TextMessage in project android-java-chat-push-notification-app by cometchat-pro.

the class CometChatForwardMessageActivity method init.

/**
 * This method is used to initialize the views
 */
public void init() {
    // Inflate the layout
    MaterialToolbar toolbar = findViewById(R.id.forward_toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    if (Utils.changeToolbarFont(toolbar) != null) {
        Utils.changeToolbarFont(toolbar).setTypeface(fontUtils.getTypeFace(FontUtils.robotoMedium));
    }
    selectedUsers = findViewById(R.id.selected_user);
    forwardBtn = findViewById(R.id.btn_forward);
    rvConversationList = findViewById(R.id.rv_conversation_list);
    etSearch = findViewById(R.id.search_bar);
    clearSearch = findViewById(R.id.clear_search);
    etSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            if (charSequence.length() > 1)
                clearSearch.setVisibility(View.VISIBLE);
        }

        @Override
        public void afterTextChanged(Editable editable) {
            if (editable.toString().length() != 0) {
                if (conversationListAdapter != null)
                    conversationListAdapter.getFilter().filter(editable.toString());
            }
        }
    });
    etSearch.setOnEditorActionListener((textView, i, keyEvent) -> {
        if (i == EditorInfo.IME_ACTION_SEARCH) {
            if (conversationListAdapter != null)
                conversationListAdapter.getFilter().filter(textView.getText().toString());
            clearSearch.setVisibility(View.VISIBLE);
            return true;
        }
        return false;
    });
    clearSearch.setOnClickListener(view1 -> {
        etSearch.setText("");
        clearSearch.setVisibility(View.GONE);
        InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        // Hide the soft keyboard
        inputMethodManager.hideSoftInputFromWindow(etSearch.getWindowToken(), 0);
    });
    rvConversationList.setItemClickListener(new OnItemClickListener<Conversation>() {

        @Override
        public void OnItemClick(Conversation conversation, int position) {
            if (userList != null && userList.size() < 5) {
                if (!userList.containsKey(conversation.getConversationId())) {
                    userList.put(conversation.getConversationId(), conversation);
                    Chip chip = new Chip(CometChatForwardMessageActivity.this);
                    if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
                        name = ((User) conversation.getConversationWith()).getName();
                        avatar = ((User) conversation.getConversationWith()).getAvatar();
                    } else {
                        name = ((Group) conversation.getConversationWith()).getName();
                        avatar = ((Group) conversation.getConversationWith()).getIcon();
                    }
                    chip.setText(name);
                    Glide.with(CometChatForwardMessageActivity.this).load(avatar).placeholder(R.drawable.ic_contacts).transform(new CircleCrop()).into(new SimpleTarget<Drawable>() {

                        @Override
                        public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
                            chip.setChipIcon(resource);
                        }
                    });
                    chip.setCloseIconVisible(true);
                    chip.setOnCloseIconClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View vw) {
                            userList.remove(conversation.getConversationId());
                            selectedUsers.removeView(vw);
                            checkUserList();
                        }
                    });
                    selectedUsers.addView(chip, 0);
                }
                checkUserList();
            } else {
                CometChatSnackBar.show(CometChatForwardMessageActivity.this, selectedUsers, getString(R.string.forward_to_5_at_a_time), CometChatSnackBar.WARNING);
            }
        }
    });
    // It sends message to selected users present in userList using thread. So UI thread doesn't get heavy.
    forwardBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (messageCategory.equals(CometChatConstants.CATEGORY_MESSAGE)) {
                if (messageType != null && messageType.equals(CometChatConstants.MESSAGE_TYPE_TEXT)) {
                    new Thread(() -> {
                        for (int i = 0; i <= userList.size() - 1; i++) {
                            Conversation conversation = new ArrayList<>(userList.values()).get(i);
                            TextMessage message;
                            String uid;
                            String type;
                            Log.e(TAG, "run: " + conversation.getConversationId());
                            if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
                                uid = ((User) conversation.getConversationWith()).getUid();
                                type = CometChatConstants.RECEIVER_TYPE_USER;
                            } else {
                                uid = ((Group) conversation.getConversationWith()).getGuid();
                                type = CometChatConstants.RECEIVER_TYPE_GROUP;
                            }
                            message = new TextMessage(uid, textMessage, type);
                            sendMessage(message);
                            if (i == userList.size() - 1) {
                                Intent intent = new Intent(CometChatForwardMessageActivity.this, CometChatUI.class);
                                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                                startActivity(intent);
                                finish();
                            }
                        }
                    }).start();
                } else if (messageType != null && (messageType.equals(CometChatConstants.MESSAGE_TYPE_IMAGE) || messageType.equals(CometChatConstants.MESSAGE_TYPE_AUDIO) || messageType.equals(CometChatConstants.MESSAGE_TYPE_FILE) || messageType.equals(CometChatConstants.MESSAGE_TYPE_VIDEO))) {
                    new Thread(() -> {
                        for (int i = 0; i <= userList.size() - 1; i++) {
                            Conversation conversation = new ArrayList<>(userList.values()).get(i);
                            MediaMessage message;
                            String uid;
                            String type;
                            Log.e(TAG, "run: " + conversation.getConversationId());
                            if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
                                uid = ((User) conversation.getConversationWith()).getUid();
                                type = CometChatConstants.RECEIVER_TYPE_USER;
                            } else {
                                uid = ((Group) conversation.getConversationWith()).getGuid();
                                type = CometChatConstants.RECEIVER_TYPE_GROUP;
                            }
                            message = new MediaMessage(uid, null, messageType, type);
                            Attachment attachment = new Attachment();
                            attachment.setFileUrl(mediaMessageUrl);
                            attachment.setFileMimeType(mediaMessageMime);
                            attachment.setFileSize(mediaMessageSize);
                            attachment.setFileExtension(mediaMessageExtension);
                            attachment.setFileName(mediaMessageName);
                            message.setAttachment(attachment);
                            Log.e(TAG, "onClick: " + attachment.toString());
                            sendMediaMessage(message, i);
                        // if (i == userList.size() - 1) {
                        // Intent intent = new Intent(CometChatForwardMessageActivity.this, CometChatUI.class);
                        // intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        // startActivity(intent);
                        // finish();
                        // }
                        }
                    }).start();
                } else if (messageType != null && (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_IMAGE_MESSAGE) || messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_VIDEO_MESSAGE) || messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_AUDIO_MESSAGE) || messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_FILE_MESSAGE))) {
                    new Thread(() -> {
                        for (int i = 0; i <= userList.size() - 1; i++) {
                            Conversation conversation = new ArrayList<>(userList.values()).get(i);
                            MediaMessage message = null;
                            String uid;
                            String type;
                            Log.e(TAG, "run: " + conversation.getConversationId());
                            if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
                                uid = ((User) conversation.getConversationWith()).getUid();
                                type = CometChatConstants.RECEIVER_TYPE_USER;
                            } else {
                                uid = ((Group) conversation.getConversationWith()).getGuid();
                                type = CometChatConstants.RECEIVER_TYPE_GROUP;
                            }
                            File file = MediaUtils.getRealPath(CometChatForwardMessageActivity.this, Uri.parse(mediaMessageUrl), true);
                            if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_IMAGE_MESSAGE))
                                message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_IMAGE, type);
                            else if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_VIDEO_MESSAGE))
                                message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_VIDEO, type);
                            else if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_AUDIO_MESSAGE))
                                message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_AUDIO, type);
                            else if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_FILE_MESSAGE))
                                message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_FILE, type);
                            try {
                                JSONObject jsonObject = new JSONObject();
                                jsonObject.put("path", mediaMessageUrl);
                                message.setMetadata(jsonObject);
                            } catch (Exception e) {
                                Log.e(TAG, "onError: " + e.getMessage());
                            }
                            sendMediaMessage(message, i);
                        }
                    }).start();
                } else {
                    if (messageType != null && messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.LOCATION)) {
                        new Thread(() -> {
                            for (int i = 0; i <= userList.size() - 1; i++) {
                                Conversation conversation = new ArrayList<>(userList.values()).get(i);
                                CustomMessage message;
                                String uid;
                                JSONObject customData = new JSONObject();
                                String type;
                                Log.e(TAG, "run: " + conversation.getConversationId());
                                if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
                                    uid = ((User) conversation.getConversationWith()).getUid();
                                    type = CometChatConstants.RECEIVER_TYPE_USER;
                                } else {
                                    uid = ((Group) conversation.getConversationWith()).getGuid();
                                    type = CometChatConstants.RECEIVER_TYPE_GROUP;
                                }
                                try {
                                    customData = new JSONObject();
                                    customData.put("latitude", lat);
                                    customData.put("longitude", lon);
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                                message = new CustomMessage(uid, type, UIKitConstants.IntentStrings.LOCATION, customData);
                                sendLocationMessage(message);
                                if (i == userList.size() - 1) {
                                    Intent intent = new Intent(CometChatForwardMessageActivity.this, CometChatUI.class);
                                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
                                    startActivity(intent);
                                    finish();
                                }
                            }
                        }).start();
                    }
                }
            }
        }
    });
    rvConversationList.addOnScrollListener(new RecyclerView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
            if (!recyclerView.canScrollVertically(1)) {
                makeConversationList();
            }
        }
    });
}
Also used : ChipGroup(com.google.android.material.chip.ChipGroup) Group(com.cometchat.pro.models.Group) User(com.cometchat.pro.models.User) MediaMessage(com.cometchat.pro.models.MediaMessage) ArrayList(java.util.ArrayList) InputMethodManager(android.view.inputmethod.InputMethodManager) Conversation(com.cometchat.pro.models.Conversation) Attachment(com.cometchat.pro.models.Attachment) Chip(com.google.android.material.chip.Chip) SimpleTarget(com.bumptech.glide.request.target.SimpleTarget) MaterialToolbar(com.google.android.material.appbar.MaterialToolbar) NonNull(androidx.annotation.NonNull) CustomMessage(com.cometchat.pro.models.CustomMessage) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) Drawable(android.graphics.drawable.Drawable) JSONException(org.json.JSONException) Intent(android.content.Intent) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(androidx.recyclerview.widget.RecyclerView) CometChatException(com.cometchat.pro.exceptions.CometChatException) JSONException(org.json.JSONException) CircleCrop(com.bumptech.glide.load.resource.bitmap.CircleCrop) JSONObject(org.json.JSONObject) Transition(com.bumptech.glide.request.transition.Transition) RecyclerView(androidx.recyclerview.widget.RecyclerView) File(java.io.File) Nullable(androidx.annotation.Nullable) TextMessage(com.cometchat.pro.models.TextMessage)

Aggregations

TextMessage (com.cometchat.pro.models.TextMessage)19 CometChatException (com.cometchat.pro.exceptions.CometChatException)17 JSONObject (org.json.JSONObject)13 JSONException (org.json.JSONException)12 BaseMessage (com.cometchat.pro.models.BaseMessage)8 Intent (android.content.Intent)7 CometChat (com.cometchat.pro.core.CometChat)7 View (android.view.View)5 ImageView (android.widget.ImageView)5 MediaMessage (com.cometchat.pro.models.MediaMessage)5 TextView (android.widget.TextView)4 RecyclerView (androidx.recyclerview.widget.RecyclerView)4 CardView (androidx.cardview.widget.CardView)3 CustomMessage (com.cometchat.pro.models.CustomMessage)3 User (com.cometchat.pro.models.User)3 FeatureRestriction (com.cometchat.pro.uikit.ui_settings.FeatureRestriction)3 ArrayList (java.util.ArrayList)3 ClipData (android.content.ClipData)2 ClipboardManager (android.content.ClipboardManager)2 Conversation (com.cometchat.pro.models.Conversation)2