Search in sources :

Example 21 with Channel

use of com.applozic.mobicommons.people.channel.Channel in project Applozic-Android-SDK by AppLozic.

the class Message method isIgnoreMessageAdding.

/**
 * Internal. Do not use.
 */
public boolean isIgnoreMessageAdding(Context context) {
    if (ApplozicClient.getInstance(context).isSubGroupEnabled() && MobiComUserPreference.getInstance(context).getParentGroupKey() != null || !TextUtils.isEmpty(MobiComUserPreference.getInstance(context).getCategoryName())) {
        Channel channel = ChannelService.getInstance(context).getChannelByChannelKey(getGroupId());
        boolean subGroupFlag = channel != null && channel.getParentKey() != null && MobiComUserPreference.getInstance(context).getParentGroupKey().equals(channel.getParentKey());
        boolean categoryFlag = channel != null && channel.isPartOfCategory(MobiComUserPreference.getInstance(context).getCategoryName());
        return (subGroupFlag || categoryFlag || ApplozicClient.getInstance(context).isSubGroupEnabled() || !TextUtils.isEmpty(MobiComUserPreference.getInstance(context).getCategoryName()));
    }
    return ((ApplozicClient.getInstance(context).isActionMessagesHidden() && isActionMessage()) || hasHideKey());
}
Also used : Channel(com.applozic.mobicommons.people.channel.Channel)

Example 22 with Channel

use of com.applozic.mobicommons.people.channel.Channel in project Applozic-Android-SDK by AppLozic.

the class AlGroupOfTwoCreateTask method doInBackground.

@Override
protected Channel doInBackground() {
    Channel channel = null;
    if (localParentGroupKey != null && localParentGroupKey != 0 && withUserContact != null) {
        List<String> userIdList = new ArrayList<>();
        userIdList.add(withUserContact.getContactIds());
        int result = loggedInUserId.compareTo(withUserContact.getContactIds());
        StringBuilder stringBuffer = new StringBuilder();
        if (result == 0) {
            stringBuffer.append(localParentGroupKey).append(":").append(loggedInUserId).append(":").append(withUserContact.getContactIds());
        } else if (result < 0) {
            stringBuffer.append(localParentGroupKey).append(":").append(loggedInUserId).append(":").append(withUserContact.getContactIds());
        } else {
            stringBuffer.append(localParentGroupKey).append(":").append(withUserContact.getContactIds()).append(":").append(loggedInUserId);
        }
        ChannelInfo channelInfo = new ChannelInfo(stringBuffer.toString(), userIdList);
        channelInfo.setClientGroupId(stringBuffer.toString());
        channelInfo.setType(Channel.GroupType.GROUPOFTWO.getValue());
        channelInfo.setParentKey(localParentGroupKey);
        channel = channelService.createGroupOfTwo(channelInfo);
    }
    return channel;
}
Also used : Channel(com.applozic.mobicommons.people.channel.Channel) ArrayList(java.util.ArrayList) ChannelInfo(com.applozic.mobicomkit.api.people.ChannelInfo)

Example 23 with Channel

use of com.applozic.mobicommons.people.channel.Channel in project Applozic-Android-SDK by AppLozic.

the class ApplozicMqttWorker method doWork.

@NonNull
@Override
public Result doWork() {
    Data data = getInputData();
    boolean useEncryptedTopic = data.getBoolean(USE_ENCRYPTED_TOPIC, false);
    boolean subscribe = data.getBoolean(SUBSCRIBE, false);
    Contact contact = null;
    Channel channel = null;
    try {
        contact = (Contact) GsonUtils.getObjectFromJson(data.getString(CONTACT), Contact.class);
        channel = (Channel) GsonUtils.getObjectFromJson(data.getString(CHANNEL), Channel.class);
    } catch (Exception exception) {
        exception.printStackTrace();
    }
    boolean subscribeToTyping = data.getBoolean(SUBSCRIBE_TO_TYPING, false);
    boolean unSubscribeToTyping = data.getBoolean(UN_SUBSCRIBE_TO_TYPING, false);
    boolean subscribeToSupportGroupTopic = data.getBoolean(CONNECT_TO_SUPPORT_GROUP_TOPIC, false);
    boolean unSubscribeToSupportGroupTopic = data.getBoolean(DISCONNECT_FROM_SUPPORT_GROUP_TOPIC, false);
    String userKeyString = data.getString(USER_KEY_STRING);
    String deviceKeyString = data.getString(DEVICE_KEY_STRING);
    boolean connectedStatus = data.getBoolean(CONNECTED_PUBLISH, false);
    boolean stop = data.getBoolean(STOP_TYPING, false);
    boolean typing = data.getBoolean(TYPING, false);
    if (subscribe) {
        if (isAppInBackground()) {
            Log.d(TAG, "App is in background, MQTT method call not required...");
            return Result.success();
        }
        ApplozicMqttService applozicMqttService = ApplozicMqttService.getInstance(getApplicationContext());
        applozicMqttService.connectClient(true);
        applozicMqttService.subscribe(useEncryptedTopic);
        applozicMqttService.publishClientStatus(MobiComUserPreference.getInstance(getApplicationContext()).getSuUserKeyString(), MobiComUserPreference.getInstance(getApplicationContext()).getDeviceKeyString(), "1");
    }
    if (subscribeToTyping) {
        ApplozicMqttService.getInstance(getApplicationContext()).subscribeToTypingTopic(channel);
        if (channel != null && Channel.GroupType.OPEN.getValue().equals(channel.getType())) {
            ApplozicMqttService.getInstance(getApplicationContext()).subscribeToOpenGroupTopic(channel);
        }
        return Result.success();
    }
    if (unSubscribeToTyping) {
        ApplozicMqttService.getInstance(getApplicationContext()).unSubscribeToTypingTopic(channel);
        if (channel != null && Channel.GroupType.OPEN.getValue().equals(channel.getType())) {
            ApplozicMqttService.getInstance(getApplicationContext()).unSubscribeToOpenGroupTopic(channel);
        }
        return Result.success();
    }
    if (subscribeToSupportGroupTopic) {
        ApplozicMqttService.getInstance(getApplicationContext()).subscribeToSupportGroup(useEncryptedTopic);
        return Result.success();
    }
    if (unSubscribeToSupportGroupTopic) {
        ApplozicMqttService.getInstance(getApplicationContext()).unSubscribeToSupportGroup(useEncryptedTopic);
        return Result.success();
    }
    if (!TextUtils.isEmpty(userKeyString) && !TextUtils.isEmpty(deviceKeyString)) {
        ApplozicMqttService.getInstance(getApplicationContext()).publishOfflineStatusUnsubscribeAndDisconnect(userKeyString, deviceKeyString, useEncryptedTopic);
    }
    if (connectedStatus) {
        ApplozicMqttService applozicMqttService = ApplozicMqttService.getInstance(getApplicationContext());
        applozicMqttService.connectClient(true);
        applozicMqttService.publishClientStatus(MobiComUserPreference.getInstance(getApplicationContext()).getSuUserKeyString(), MobiComUserPreference.getInstance(getApplicationContext()).getDeviceKeyString(), "1");
    }
    if (contact != null && stop) {
        ApplozicMqttService.getInstance(getApplicationContext()).typingStopped(contact, null);
    }
    if (contact != null && (contact.isBlocked() || contact.isBlockedBy())) {
        return Result.success();
    }
    if (contact != null || channel != null) {
        if (typing) {
            ApplozicMqttService.getInstance(getApplicationContext()).typingStarted(contact, channel);
        } else {
            ApplozicMqttService.getInstance(getApplicationContext()).typingStopped(contact, channel);
        }
    }
    return Result.success();
}
Also used : ApplozicMqttService(com.applozic.mobicomkit.api.ApplozicMqttService) Channel(com.applozic.mobicommons.people.channel.Channel) Data(androidx.work.Data) Contact(com.applozic.mobicommons.people.contact.Contact) NonNull(androidx.annotation.NonNull)

Example 24 with Channel

use of com.applozic.mobicommons.people.channel.Channel in project Applozic-Android-SDK by AppLozic.

the class MobiComConversationFragment method updateChannelTitleAndSubTitle.

public void updateChannelTitleAndSubTitle() {
    if (channel != null) {
        Channel channelInfo = ChannelService.getInstance(getActivity()).getChannelInfo(channel.getKey());
        if (channelInfo.isDeleted()) {
            channel.setDeletedAtTime(channelInfo.getDeletedAtTime());
            if (channel != null && !ChannelService.getInstance(getContext()).isUserAlreadyPresentInChannel(channel.getKey(), loggedInUserId) && messageTemplate != null && messageTemplate.isEnabled() && templateAdapter != null) {
                templateAdapter.removeTemplates();
            }
        } else {
            if ((!ChannelService.getInstance(getActivity()).processIsUserPresentInChannel(channel.getKey()) && !Channel.GroupType.OPEN.getValue().equals(channel.getType()))) {
                if (messageTemplate != null && messageTemplate.isEnabled() && templateAdapter != null) {
                    templateAdapter.removeTemplates();
                }
            }
        }
        checkForUserNotAbleToChatAndToggleViews(null, channelInfo);
        updateChannelTitle(channelInfo);
        updateChannelSubTitle(channelInfo);
    }
}
Also used : Channel(com.applozic.mobicommons.people.channel.Channel)

Example 25 with Channel

use of com.applozic.mobicommons.people.channel.Channel in project Applozic-Android-SDK by AppLozic.

the class MobiComConversationFragment method onCreateView.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final View list = inflater.inflate(R.layout.mobicom_message_list, container, false);
    recyclerView = (RecyclerView) list.findViewById(R.id.messageList);
    linearLayoutManager = new AlLinearLayoutManager(getActivity());
    recyclerView.setLayoutManager(linearLayoutManager);
    recyclerView.setHasFixedSize(true);
    recyclerViewPositionHelper = new RecyclerViewPositionHelper(recyclerView, linearLayoutManager);
    ((ConversationActivity) getActivity()).setChildFragmentLayoutBGToTransparent();
    messageList = new ArrayList<Message>();
    multimediaPopupGrid = (GridView) list.findViewById(R.id.mobicom_multimedia_options1);
    getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    loggedInUserId = MobiComUserPreference.getInstance(getContext()).getUserId();
    toolbar = (Toolbar) getActivity().findViewById(R.id.my_toolbar);
    toolbar.setClickable(true);
    mainEditTextLinearLayout = (LinearLayout) list.findViewById(R.id.main_edit_text_linear_layout);
    individualMessageSendLayout = (LinearLayout) list.findViewById(R.id.individual_message_send_layout);
    slideImageView = (ImageView) list.findViewById(R.id.slide_image_view);
    sendButton = (ImageButton) individualMessageSendLayout.findViewById(R.id.conversation_send);
    recordButton = (ImageButton) individualMessageSendLayout.findViewById(R.id.record_button);
    mainEditTextLinearLayout = (LinearLayout) list.findViewById(R.id.main_edit_text_linear_layout);
    audioRecordFrameLayout = (FrameLayout) list.findViewById(R.id.audio_record_frame_layout);
    messageTemplateView = (RecyclerView) list.findViewById(R.id.mobicomMessageTemplateView);
    applozicLabel = list.findViewById(R.id.applozicLabel);
    Configuration config = getResources().getConfiguration();
    recordButtonWeakReference = new WeakReference<ImageButton>(recordButton);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        if (config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL) {
            sendButton.setScaleX(-1);
            mainEditTextLinearLayout.setBackgroundResource(R.drawable.applozic_chat_left_icon);
            audioRecordFrameLayout.setBackgroundResource(R.drawable.applozic_chat_left_icon);
            slideImageView.setImageResource(R.drawable.slide_arrow_right);
        }
    }
    if (MobiComUserPreference.getInstance(getContext()).getPricingPackage() == 1) {
        applozicLabel.setVisibility(VISIBLE);
    }
    if (alCustomizationSettings.isPoweredByApplozic()) {
        list.findViewById(R.id.txtPoweredByApplozic).setVisibility(VISIBLE);
    }
    extendedSendingOptionLayout = (LinearLayout) list.findViewById(R.id.extended_sending_option_layout);
    attachmentLayout = (RelativeLayout) list.findViewById(R.id.attachment_layout);
    isTyping = (TextView) list.findViewById(R.id.isTyping);
    contextFrameLayout = (FrameLayout) list.findViewById(R.id.contextFrameLayout);
    contextSpinner = (Spinner) list.findViewById(R.id.spinner_show);
    slideTextLinearlayout = (LinearLayout) list.findViewById(R.id.slide_LinearLayout);
    errorEditTextView = (EditText) list.findViewById(R.id.error_edit_text_view);
    audioRecordIconImageView = (ImageView) list.findViewById(R.id.audio_record_icon_image_view);
    recordTimeTextView = (TextView) list.findViewById(R.id.recording_time_text_view);
    mDetector = new GestureDetectorCompat(getContext(), this);
    adapterView = new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l) {
            if (conversations != null && conversations.size() > 0) {
                Conversation conversation = conversations.get(pos);
                BroadcastService.currentConversationId = conversation.getId();
                if (onSelected) {
                    currentConversationId = conversation.getId();
                    if (messageList != null) {
                        messageList.clear();
                    }
                    downloadConversation = new DownloadConversation(recyclerView, true, 1, 0, 0, contact, channel, conversation.getId());
                    AlTask.execute(downloadConversation);
                }
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    };
    mediaUploadProgressBar = (ProgressBar) attachmentLayout.findViewById(R.id.media_upload_progress_bar);
    emoticonsFrameLayout = (FrameLayout) list.findViewById(R.id.emojicons_frame_layout);
    emoticonsBtn = (ImageButton) list.findViewById(R.id.emoticons_btn);
    if (emojiIconHandler == null && emoticonsBtn != null) {
        emoticonsBtn.setVisibility(View.GONE);
    }
    replayRelativeLayout = (RelativeLayout) list.findViewById(R.id.reply_message_layout);
    messageTextView = (TextView) list.findViewById(R.id.messageTextView);
    galleryImageView = (ImageView) list.findViewById(R.id.imageViewForPhoto);
    nameTextView = (TextView) list.findViewById(R.id.replyNameTextView);
    attachReplyCancelLayout = (ImageButton) list.findViewById(R.id.imageCancel);
    messageDropDownActionButton = (FloatingActionButton) list.findViewById(R.id.message_drop_down);
    messageUnreadCountTextView = (TextView) list.findViewById(R.id.message_unread_count_textView);
    imageViewRLayout = (RelativeLayout) list.findViewById(R.id.imageViewRLayout);
    imageViewForAttachmentType = (ImageView) list.findViewById(R.id.imageViewForAttachmentType);
    spinnerLayout = inflater.inflate(R.layout.mobicom_message_list_header_footer, null);
    infoBroadcast = (TextView) spinnerLayout.findViewById(R.id.info_broadcast);
    spinnerLayout.setVisibility(View.GONE);
    emptyTextView = (TextView) list.findViewById(R.id.noConversations);
    emptyTextView.setTextColor(Color.parseColor(alCustomizationSettings.getNoConversationLabelTextColor().trim()));
    emoticonsBtn.setOnClickListener(this);
    sentIcon = getResources().getDrawable(R.drawable.applozic_ic_action_message_sent);
    deliveredIcon = getResources().getDrawable(R.drawable.applozic_ic_action_message_delivered);
    recordButton.setVisibility(alCustomizationSettings.isRecordButton() && (contact != null || channel != null) ? View.VISIBLE : View.GONE);
    sendButton.setVisibility(alCustomizationSettings.isRecordButton() && (contact != null || channel != null) ? View.GONE : View.VISIBLE);
    GradientDrawable bgShape = (GradientDrawable) sendButton.getBackground();
    bgShape.setColor(Color.parseColor(alCustomizationSettings.getSendButtonBackgroundColor().trim()));
    GradientDrawable bgShapeRecordButton = (GradientDrawable) recordButton.getBackground();
    bgShapeRecordButton.setColor(Color.parseColor(alCustomizationSettings.getSendButtonBackgroundColor().trim()));
    attachButton = (ImageButton) individualMessageSendLayout.findViewById(R.id.attach_button);
    sendType = (Spinner) extendedSendingOptionLayout.findViewById(R.id.sendTypeSpinner);
    messageEditText = (MentionAutoCompleteTextView) individualMessageSendLayout.findViewById(R.id.conversation_message);
    if (channel != null && !Channel.GroupType.OPEN.getValue().equals(channel.getType())) {
        MentionAdapter mentionAdapter = new MentionAdapter(requireContext());
        mentionAdapter.addAll(MentionHelper.getMentionsListForChannel(requireContext(), channel.getKey()));
        messageEditText.initMentions(mentionAdapter);
    }
    messageEditText.setTextColor(Color.parseColor(alCustomizationSettings.getMessageEditTextTextColor()));
    messageEditText.setHintTextColor(Color.parseColor(alCustomizationSettings.getMessageEditTextHintTextColor()));
    linearLayoutMessageSendDisabledInfo = (LinearLayout) list.findViewById(R.id.user_not_able_to_chat_layout);
    textViewMessageSendDisabledInfo = (TextView) linearLayoutMessageSendDisabledInfo.findViewById(R.id.user_not_able_to_chat_textView);
    textViewMessageSendDisabledInfo.setTextColor(Color.parseColor(alCustomizationSettings.getUserNotAbleToChatTextColor()));
    if (channel != null && channel.isDeleted()) {
        hideMessageSendLayoutAndShowGroupDeletedInfo();
    }
    if (!TextUtils.isEmpty(defaultText)) {
        messageEditText.setText(defaultText);
        defaultText = "";
    }
    scheduleOption = (Button) extendedSendingOptionLayout.findViewById(R.id.scheduleOption);
    mediaContainer = (ImageView) attachmentLayout.findViewById(R.id.media_container);
    attachedFile = (TextView) attachmentLayout.findViewById(R.id.attached_file);
    ImageView closeAttachmentLayout = (ImageView) attachmentLayout.findViewById(R.id.close_attachment_layout);
    swipeLayout = (SwipeRefreshLayout) list.findViewById(R.id.swipe_container);
    swipeLayout.setColorScheme(android.R.color.holo_blue_bright, android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light);
    ArrayAdapter<CharSequence> sendTypeAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.send_type_options, R.layout.mobiframework_custom_spinner);
    sendTypeAdapter.setDropDownViewResource(R.layout.mobiframework_custom_spinner);
    sendType.setAdapter(sendTypeAdapter);
    t = new CountDownTimer(Long.MAX_VALUE, 1000) {

        @Override
        public void onTick(long millisUntilFinished) {
            count++;
            seconds = count;
            if (seconds == 60) {
                minutes++;
                count = 0;
                seconds = 0;
            }
            if (minutes == 60) {
                minutes = 0;
                count = 0;
            }
            if (count % 2 == 0) {
                audioRecordIconImageView.setVisibility(VISIBLE);
                audioRecordIconImageView.setImageResource(R.drawable.applozic_audio_record);
            } else {
                audioRecordIconImageView.setVisibility(View.INVISIBLE);
            }
            recordTimeTextView.setText(String.format("%02d:%02d", minutes, seconds));
        }

        @Override
        public void onFinish() {
            count = 0;
        }
    };
    recordButton.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            mDetector.onTouchEvent(motionEvent);
            if (motionEvent.getAction() == MotionEvent.ACTION_UP && longPress) {
                isToastVisible = true;
                errorEditTextView.setVisibility(View.GONE);
                errorEditTextView.requestFocus();
                errorEditTextView.setError(null);
                startedDraggingX = -1;
                audioRecordFrameLayout.setVisibility(View.GONE);
                mainEditTextLinearLayout.setVisibility(View.VISIBLE);
                applozicAudioRecordManager.sendAudio();
                t.cancel();
                longPress = false;
                messageEditText.requestFocus();
                seconds = 0;
                minutes = 0;
                count = 0;
            } else if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
                float x = motionEvent.getX();
                if (x < -distCanMove) {
                    count = 0;
                    t.cancel();
                    audioRecordIconImageView.setImageResource(R.drawable.applozic_audio_delete);
                    recordTimeTextView.setVisibility(View.GONE);
                    applozicAudioRecordManager.cancelAudio();
                    messageEditText.requestFocus();
                }
                x = x + ApplozicAudioRecordAnimation.getX(recordButton);
                FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) slideTextLinearlayout.getLayoutParams();
                if (startedDraggingX != -1) {
                    float dist = (x - startedDraggingX);
                    params.leftMargin = dp(30) + (int) dist;
                    slideTextLinearlayout.setLayoutParams(params);
                    float alpha = 1.0f + dist / distCanMove;
                    if (alpha > 1) {
                        alpha = 1;
                    } else if (alpha < 0) {
                        alpha = 0;
                    }
                    ApplozicAudioRecordAnimation.setAlpha(slideTextLinearlayout, alpha);
                }
                if (x <= ApplozicAudioRecordAnimation.getX(slideTextLinearlayout) + slideTextLinearlayout.getWidth() + dp(30)) {
                    if (startedDraggingX == -1) {
                        startedDraggingX = x;
                        distCanMove = (audioRecordFrameLayout.getMeasuredWidth() - slideTextLinearlayout.getMeasuredWidth() - dp(48)) / 2.0f;
                        if (distCanMove <= 0) {
                            distCanMove = dp(80);
                        } else if (distCanMove > dp(80)) {
                            distCanMove = dp(80);
                        }
                    }
                }
                if (params.leftMargin > dp(30)) {
                    params.leftMargin = dp(30);
                    slideTextLinearlayout.setLayoutParams(params);
                    ApplozicAudioRecordAnimation.setAlpha(slideTextLinearlayout, 1);
                    startedDraggingX = -1;
                }
            }
            view.onTouchEvent(motionEvent);
            return true;
        }
    });
    messageEditText.addTextChangedListener(new TextWatcher() {

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }

        public void afterTextChanged(Editable s) {
            try {
                if (!TextUtils.isEmpty(s.toString()) && s.toString().trim().length() > 0 && !typingStarted) {
                    typingStarted = true;
                    handleSendAndRecordButtonView(true);
                } else if (s.toString().trim().length() == 0 && typingStarted) {
                    typingStarted = false;
                    handleSendAndRecordButtonView(!TextUtils.isEmpty(filePath));
                }
                if (contact != null || channel != null && !Channel.GroupType.OPEN.getValue().equals(channel.getType()) || contact != null) {
                    Applozic.publishTypingStatus(getContext(), channel, contact, typingStarted);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    messageEditText.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (alCustomizationSettings.isMessageFastScrollEnabled()) {
                if (getActivity() == null) {
                    return;
                }
                getActivity().runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        linearLayoutManager.setStackFromEnd(true);
                        linearLayoutManager.setReverseLayout(true);
                    }
                });
            }
            emoticonsFrameLayout.setVisibility(View.GONE);
        }
    });
    attachReplyCancelLayout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            messageMetaData = null;
            replayRelativeLayout.setVisibility(View.GONE);
        }
    });
    messageEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                if (typingStarted) {
                    if (contact != null || channel != null && !Channel.GroupType.OPEN.getValue().equals(channel.getType()) || contact != null) {
                        Applozic.publishTypingStatus(getActivity(), channel, contact, typingStarted);
                    }
                }
                emoticonsFrameLayout.setVisibility(View.GONE);
                multimediaPopupGrid.setVisibility(View.GONE);
            }
        }
    });
    recordButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (!isToastVisible && !typingStarted) {
                vibrate();
                errorEditTextView.requestFocus();
                errorEditTextView.setError(ApplozicService.getContext(getContext()).getString(R.string.hold_to_record_release_to_send));
                isToastVisible = true;
                new CountDownTimer(3000, 1000) {

                    @Override
                    public void onTick(long millisUntilFinished) {
                    }

                    @Override
                    public void onFinish() {
                        errorEditTextView.setError(null);
                        messageEditText.requestFocus();
                        isToastVisible = false;
                    }
                }.start();
            } else {
                errorEditTextView.setError(null);
                isToastVisible = false;
            }
            emoticonsFrameLayout.setVisibility(View.GONE);
            sendMessage();
            handleSendAndRecordButtonView(false);
            errorEditTextView.setVisibility(View.VISIBLE);
        }
    });
    sendButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (alCustomizationSettings.isMessageFastScrollEnabled()) {
                if (getActivity() == null) {
                    return;
                }
                getActivity().runOnUiThread(new Runnable() {

                    @Override
                    public void run() {
                        recyclerView.smoothScrollToPosition(messageList.size());
                        recyclerView.getLayoutManager().scrollToPosition(messageList.size());
                    }
                });
            }
            emoticonsFrameLayout.setVisibility(View.GONE);
            sendMessage();
        }
    });
    closeAttachmentLayout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            filePath = null;
            filePaths.clear();
            attachmentLayout.setVisibility(View.GONE);
            if (messageEditText != null && TextUtils.isEmpty(messageEditText.getText().toString().trim()) && recordButton != null && sendButton != null) {
                handleSendAndRecordButtonView(false);
            }
        }
    });
    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            if (recyclerDetailConversationAdapter != null) {
                recyclerDetailConversationAdapter.contactImageLoader.setPauseWork(newState == RecyclerView.SCROLL_STATE_DRAGGING);
            }
        }

        @Override
        public void onScrolled(final RecyclerView recyclerView, int dx, int dy) {
            if (alCustomizationSettings.isMessageFastScrollEnabled()) {
                int totalItemCount = linearLayoutManager.getItemCount();
                int lastVisible = linearLayoutManager.findLastVisibleItemPosition();
                if (totalItemCount - lastVisible != 1) {
                    messageDropDownActionButton.setVisibility(VISIBLE);
                } else {
                    messageUnreadCountTextView.setVisibility(View.INVISIBLE);
                    messageDropDownActionButton.setVisibility(View.INVISIBLE);
                    messageUnreadCount = 0;
                }
            }
            if (loadMore) {
                int topRowVerticalPosition = (recyclerView == null || recyclerView.getChildCount() == 0) ? 0 : recyclerView.getChildAt(0).getTop();
                swipeLayout.setEnabled(topRowVerticalPosition >= 0);
            }
        }
    });
    messageDropDownActionButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (getActivity() == null) {
                return;
            }
            getActivity().runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    recyclerView.smoothScrollToPosition(messageList.size());
                    recyclerView.getLayoutManager().scrollToPosition(messageList.size());
                }
            });
        }
    });
    toolbar.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (getContext() != null && getContext().getApplicationContext() instanceof ALProfileClickListener) {
                ((ALProfileClickListener) getContext().getApplicationContext()).onClick(getActivity(), (contact != null ? contact.getUserId() : null), channel, true);
            }
            if (channel != null) {
                if (Channel.GroupType.SUPPORT_GROUP.getValue().equals(channel.getType()) && User.RoleType.USER_ROLE.getValue().equals(MobiComUserPreference.getInstance(getContext()).getUserRoleType())) {
                    return;
                }
                if (channel.isDeleted()) {
                    return;
                }
                if (alCustomizationSettings.isGroupInfoScreenVisible() && !Channel.GroupType.GROUPOFTWO.getValue().equals(channel.getType()) && !Channel.GroupType.OPEN.getValue().equals(channel.getType())) {
                    Intent channelInfo = new Intent(getActivity(), ChannelInfoActivity.class);
                    channelInfo.putExtra(ChannelInfoActivity.CHANNEL_KEY, channel.getKey());
                    channelInfo.putExtra(ChannelInfoActivity.CHANNEL_UPDATE_RECEIVER, channelUpdateReceiver);
                    startActivity(channelInfo);
                } else if (Channel.GroupType.GROUPOFTWO.getValue().equals(channel.getType()) && alCustomizationSettings.isUserProfileFragment()) {
                    UserProfileFragment userProfileFragment = (UserProfileFragment) UIService.getFragmentByTag(getActivity(), ConversationUIService.USER_PROFILE_FRAMENT);
                    String userId = ChannelService.getInstance(getActivity()).getGroupOfTwoReceiverUserId(channel.getKey());
                    if (!TextUtils.isEmpty(userId)) {
                        BroadcastService.sendContactProfileClickBroadcast(ApplozicService.getContext(MobiComConversationFragment.this.getContext()), userId);
                        if (userProfileFragment == null) {
                            Contact newContact = appContactService.getContactById(userId);
                            userProfileFragment = new UserProfileFragment();
                            Bundle bundle = new Bundle();
                            bundle.putSerializable(ConversationUIService.CONTACT, newContact);
                            userProfileFragment.setArguments(bundle);
                            ConversationActivity.addFragment(getActivity(), userProfileFragment, ConversationUIService.USER_PROFILE_FRAMENT);
                        }
                    }
                }
            } else {
                if (contact != null) {
                    BroadcastService.sendContactProfileClickBroadcast(ApplozicService.getContext(MobiComConversationFragment.this.getContext()), contact.getUserId());
                }
                if (alCustomizationSettings.isUserProfileFragment()) {
                    UserProfileFragment userProfileFragment = (UserProfileFragment) UIService.getFragmentByTag(getActivity(), ConversationUIService.USER_PROFILE_FRAMENT);
                    if (userProfileFragment == null) {
                        userProfileFragment = new UserProfileFragment();
                        Bundle bundle = new Bundle();
                        bundle.putSerializable(ConversationUIService.CONTACT, contact);
                        userProfileFragment.setArguments(bundle);
                        ConversationActivity.addFragment(getActivity(), userProfileFragment, ConversationUIService.USER_PROFILE_FRAMENT);
                    }
                }
            }
        }
    });
    recyclerView.setLongClickable(true);
    messageTemplate = alCustomizationSettings.getMessageTemplate();
    if (messageTemplate != null && messageTemplate.isEnabled()) {
        templateAdapter = new MobicomMessageTemplateAdapter(getContext(), messageTemplate);
        MobicomMessageTemplateAdapter.MessageTemplateDataListener listener = new MobicomMessageTemplateAdapter.MessageTemplateDataListener() {

            @Override
            public void onItemSelected(String message) {
                final Message lastMessage = !messageList.isEmpty() ? messageList.get(messageList.size() - 1) : null;
                String messageType = null;
                if (lastMessage != null) {
                    messageType = lastMessage.getMessageType();
                }
                if ((messageTemplate.getTextMessageList() != null && !messageTemplate.getTextMessageList().getMessageList().isEmpty() && messageTemplate.getTextMessageList().isSendMessageOnClick() && "text".equals(messageType)) || (messageTemplate.getImageMessageList() != null && !messageTemplate.getImageMessageList().getMessageList().isEmpty() && messageTemplate.getImageMessageList().isSendMessageOnClick() && "image".equals(messageType)) || (messageTemplate.getVideoMessageList() != null && !messageTemplate.getVideoMessageList().getMessageList().isEmpty() && messageTemplate.getVideoMessageList().isSendMessageOnClick() && "video".equals(messageType)) || (messageTemplate.getLocationMessageList() != null && !messageTemplate.getLocationMessageList().getMessageList().isEmpty() && messageTemplate.getLocationMessageList().isSendMessageOnClick() && "location".equals(messageType)) || (messageTemplate.getContactMessageList() != null && !messageTemplate.getContactMessageList().getMessageList().isEmpty() && messageTemplate.getContactMessageList().isSendMessageOnClick() && "contact".equals(messageType)) || (messageTemplate.getAudioMessageList() != null && !messageTemplate.getAudioMessageList().getMessageList().isEmpty() && messageTemplate.getAudioMessageList().isSendMessageOnClick() && "audio".equals(messageType)) || messageTemplate.getSendMessageOnClick()) {
                    sendMessage(message);
                }
                if (messageTemplate.getHideOnSend()) {
                    AlMessageMetadataUpdateTask.MessageMetadataListener listener1 = new AlMessageMetadataUpdateTask.MessageMetadataListener() {

                        @Override
                        public void onSuccess(Context context, String message) {
                            templateAdapter.removeTemplates();
                        }

                        @Override
                        public void onFailure(Context context, String error) {
                        }
                    };
                    if (lastMessage != null) {
                        Map<String, String> metadata = lastMessage.getMetadata();
                        metadata.put("isDoneWithClicking", "true");
                        lastMessage.setMetadata(metadata);
                        AlTask.execute(new AlMessageMetadataUpdateTask(getContext(), lastMessage.getKeyString(), lastMessage.getMetadata(), listener1));
                    }
                }
                final Intent intent = new Intent();
                intent.setAction("com.applozic.mobicomkit.TemplateMessage");
                intent.putExtra("templateMessage", message);
                intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
                getActivity().sendBroadcast(intent);
            }
        };
        templateAdapter.setOnItemSelected(listener);
        LinearLayoutManager horizontalLayoutManagaer = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
        messageTemplateView.setLayoutManager(horizontalLayoutManagaer);
        messageTemplateView.setAdapter(templateAdapter);
    }
    createTemplateMessages();
    messageEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (EditorInfo.IME_ACTION_DONE == actionId && getActivity() != null) {
                Utils.toggleSoftKeyBoard(getActivity(), true);
                return true;
            }
            return false;
        }
    });
    channelUpdateReceiver = new ResultReceiver(null) {

        @Override
        protected void onReceiveResult(int resultCode, Bundle resultData) {
            if (resultCode == 1) {
                if (channel != null) {
                    Channel newChannel = ChannelDatabaseService.getInstance(getContext()).getChannelByChannelKey(channel.getKey());
                    setChannel(newChannel);
                    updateChannelTitle(newChannel);
                }
            }
        }
    };
    return list;
}
Also used : Configuration(android.content.res.Configuration) ViewConfiguration(android.view.ViewConfiguration) LinearLayoutManager(androidx.recyclerview.widget.LinearLayoutManager) AlLinearLayoutManager(com.applozic.mobicomkit.uiwidgets.conversation.AlLinearLayoutManager) AlMessageMetadataUpdateTask(com.applozic.mobicomkit.uiwidgets.async.AlMessageMetadataUpdateTask) ChannelInfoActivity(com.applozic.mobicomkit.uiwidgets.conversation.activity.ChannelInfoActivity) MentionAutoCompleteTextView(com.applozic.mobicomkit.uiwidgets.conversation.mention.MentionAutoCompleteTextView) TextView(android.widget.TextView) ImageView(android.widget.ImageView) ConversationActivity(com.applozic.mobicomkit.uiwidgets.conversation.activity.ConversationActivity) Channel(com.applozic.mobicommons.people.channel.Channel) MentionAdapter(com.applozic.mobicomkit.uiwidgets.conversation.mention.MentionAdapter) GradientDrawable(android.graphics.drawable.GradientDrawable) ALProfileClickListener(com.applozic.mobicomkit.uiwidgets.uilistener.ALProfileClickListener) AdapterView(android.widget.AdapterView) AlRichMessage(com.applozic.mobicomkit.uiwidgets.conversation.richmessaging.AlRichMessage) Message(com.applozic.mobicomkit.api.conversation.Message) Conversation(com.applozic.mobicommons.people.channel.Conversation) KeyEvent(android.view.KeyEvent) ImageButton(android.widget.ImageButton) RecyclerViewPositionHelper(com.applozic.mobicomkit.uiwidgets.conversation.activity.RecyclerViewPositionHelper) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) AlLinearLayoutManager(com.applozic.mobicomkit.uiwidgets.conversation.AlLinearLayoutManager) Context(android.content.Context) Bundle(android.os.Bundle) CountDownTimer(android.os.CountDownTimer) UserProfileFragment(com.applozic.mobicomkit.uiwidgets.people.fragment.UserProfileFragment) Intent(android.content.Intent) ImageView(android.widget.ImageView) MentionAutoCompleteTextView(com.applozic.mobicomkit.uiwidgets.conversation.mention.MentionAutoCompleteTextView) GridView(android.widget.GridView) View(android.view.View) AdapterView(android.widget.AdapterView) RecyclerView(androidx.recyclerview.widget.RecyclerView) TextView(android.widget.TextView) AttachmentView(com.applozic.mobicomkit.api.attachment.AttachmentView) GestureDetectorCompat(androidx.core.view.GestureDetectorCompat) Collections.disjoint(java.util.Collections.disjoint) ApplozicException(com.applozic.mobicomkit.exception.ApplozicException) PatternSyntaxException(java.util.regex.PatternSyntaxException) MotionEvent(android.view.MotionEvent) Contact(com.applozic.mobicommons.people.contact.Contact) FrameLayout(android.widget.FrameLayout) RecyclerView(androidx.recyclerview.widget.RecyclerView) MobicomMessageTemplateAdapter(com.applozic.mobicomkit.uiwidgets.conversation.adapter.MobicomMessageTemplateAdapter) ResultReceiver(android.os.ResultReceiver)

Aggregations

Channel (com.applozic.mobicommons.people.channel.Channel)70 Contact (com.applozic.mobicommons.people.contact.Contact)26 Intent (android.content.Intent)12 ChannelFeed (com.applozic.mobicomkit.feed.ChannelFeed)10 ArrayList (java.util.ArrayList)10 Message (com.applozic.mobicomkit.api.conversation.Message)8 MobiComUserPreference (com.applozic.mobicomkit.api.account.user.MobiComUserPreference)7 ApplozicException (com.applozic.mobicomkit.exception.ApplozicException)7 SyncChannelFeed (com.applozic.mobicomkit.sync.SyncChannelFeed)7 ChannelUserMapper (com.applozic.mobicommons.people.channel.ChannelUserMapper)7 NonNull (androidx.annotation.NonNull)6 FileClientService (com.applozic.mobicomkit.api.attachment.FileClientService)6 Context (android.content.Context)4 Cursor (android.database.Cursor)4 Bitmap (android.graphics.Bitmap)4 FileMeta (com.applozic.mobicomkit.api.attachment.FileMeta)4 ChannelFeedApiResponse (com.applozic.mobicomkit.feed.ChannelFeedApiResponse)4 ChannelUsersFeed (com.applozic.mobicomkit.feed.ChannelUsersFeed)4 Conversation (com.applozic.mobicommons.people.channel.Conversation)4 JSONException (org.json.JSONException)4