Search in sources :

Example 1 with RecyclerTouchListener

use of drift.com.drift.helpers.RecyclerTouchListener in project drift-sdk-android by Driftt.

the class ConversationActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.drift_sdk_activity_conversation);
    StatusBarColorizer.setActivityColor(this);
    IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
    registerReceiver(downloadReceiver, filter);
    textEntryEditText = findViewById(R.id.drift_sdk_conversation_activity_edit_text);
    sendButtonImageView = findViewById(R.id.drift_sdk_conversation_activity_send_button);
    plusButtonImageView = findViewById(R.id.drift_sdk_conversation_activity_plus_button);
    recyclerView = findViewById(R.id.drift_sdk_conversation_activity_recycler_activity);
    statusTextView = findViewById(R.id.drift_sdk_conversation_activity_status_view);
    progressBar = findViewById(R.id.drift_sdk_conversation_activity_progress_view);
    driftWelcomeMessage = findViewById(R.id.drift_sdk_conversation_activity_welcome_text_view);
    driftWelcomeImageView = findViewById(R.id.drift_sdk_conversation_activity_welcome_image_view);
    driftBrandTextView = findViewById(R.id.drift_sdk_conversation_activity_drift_brand_text_view);
    welcomeMessageLinearLayout = findViewById(R.id.drift_sdk_conversation_activity_welcome_linear_layout);
    Intent intent = getIntent();
    if (intent.getExtras() != null) {
        conversationId = intent.getExtras().getInt(CONVERSATION_ID, -1);
        conversationType = (ConversationType) intent.getExtras().getSerializable(CONVERSATION_TYPE);
    }
    if (conversationId == -1 && conversationType == ConversationType.CONTINUE) {
        Toast.makeText(this, "Invalid Conversation Id", Toast.LENGTH_SHORT).show();
        finish();
    }
    Auth auth = Auth.getInstance();
    if (auth != null && auth.endUser != null) {
        endUserId = auth.endUser.id;
    } else {
        // No Auth
        Toast.makeText(this, "We're sorry, an unknown error occurred", Toast.LENGTH_LONG).show();
        finish();
    }
    sendButtonImageView.setBackgroundColor(ColorHelper.getBackgroundColor());
    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.setTitle("Conversation");
    }
    sendButtonImageView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            didPressSendButton();
        }
    });
    textEntryEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if (actionId == EditorInfo.IME_ACTION_SEND) {
                didPressSendButton();
                return true;
            }
            return false;
        }
    });
    textEntryEditText.addTextChangedListener(new TextWatcher() {

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

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

        @Override
        public void afterTextChanged(Editable s) {
            if (s.length() != 0) {
                sendButtonImageView.setVisibility(View.VISIBLE);
            } else {
                sendButtonImageView.setVisibility(View.GONE);
            }
        }
    });
    AttachmentManager.getInstance().setAttachmentLoadHandle(this);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    layoutManager.setReverseLayout(true);
    layoutManager.setAutoMeasureEnabled(false);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.addOnItemTouchListener(new RecyclerTouchListener(this, recyclerView, new ClickListener() {

        @Override
        public void onClick(View view, int position) {
            Message message = conversationAdapter.getItemAt(position);
            if (message != null && message.sendStatus == Message.SendStatus.FAILED) {
                resendMessage(message);
            }
        }
    }));
    conversationAdapter = new ConversationAdapter(this, MessageManager.getInstance().getMessagesForConversationId(conversationId));
    recyclerView.setAdapter(conversationAdapter);
    if (conversationAdapter.getItemCount() == 0) {
        progressBar.setVisibility(View.VISIBLE);
    } else {
        progressBar.setVisibility(View.GONE);
    }
}
Also used : RecyclerTouchListener(drift.com.drift.helpers.RecyclerTouchListener) IntentFilter(android.content.IntentFilter) Message(drift.com.drift.model.Message) ConversationAdapter(drift.com.drift.adapters.ConversationAdapter) Intent(android.content.Intent) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) KeyEvent(android.view.KeyEvent) Auth(drift.com.drift.model.Auth) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) TextView(android.widget.TextView) ActionBar(android.support.v7.app.ActionBar) ClickListener(drift.com.drift.helpers.ClickListener)

Example 2 with RecyclerTouchListener

use of drift.com.drift.helpers.RecyclerTouchListener in project drift-sdk-android by Driftt.

the class ConversationListActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    StatusBarColorizer.setActivityColor(this);
    setContentView(R.layout.drift_sdk_activity_conversation_list);
    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.setTitle("Conversations");
    }
    conversationRecyclerView = findViewById(R.id.drift_sdk_conversation_list_recycler_view);
    progressBar = findViewById(R.id.drift_sdk_conversation_list_progress_bar);
    networkAvailabilityBar = findViewById(R.id.drift_sdk_conversation_list_load_page_text_view);
    emptyState = findViewById(R.id.drift_sdk_conversation_list_empty_linear_layout);
    emptyStateButton = findViewById(R.id.drift_sdk_conversation_list_empty_state_create_button);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    conversationRecyclerView.setLayoutManager(layoutManager);
    DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(conversationRecyclerView.getContext(), layoutManager.getOrientation());
    dividerItemDecoration.setDrawable(ContextCompat.getDrawable(this, R.drawable.drift_sdk_recycler_view_divider));
    conversationRecyclerView.addItemDecoration(dividerItemDecoration);
    conversationRecyclerView.addOnItemTouchListener(new RecyclerTouchListener(this, conversationRecyclerView, new ClickListener() {

        @Override
        public void onClick(View view, int position) {
            Conversation conversation = conversationListAdapter.getItemAt(position);
            if (conversation != null) {
                Intent intent = ConversationActivity.intentForConversation(ConversationListActivity.this, conversation.id);
                ConversationListActivity.this.startActivity(intent);
            }
        }
    }));
    emptyStateButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Intent intent = ConversationActivity.intentForCreateConversation(ConversationListActivity.this);
            ConversationListActivity.this.startActivity(intent);
        }
    });
    emptyStateButton.setTextColor(ColorHelper.getForegroundColor());
    Drawable backgroundDrawable = DrawableCompat.wrap(emptyStateButton.getBackground()).mutate();
    DrawableCompat.setTint(backgroundDrawable, ColorHelper.getBackgroundColor());
    emptyState.setVisibility(View.GONE);
    conversationListAdapter = new ConversationListAdapter(this, ConversationManager.getInstance().getConversations());
    conversationRecyclerView.setAdapter(conversationListAdapter);
    if (conversationListAdapter.getItemCount() == 0) {
        progressBar.setVisibility(View.VISIBLE);
    } else {
        progressBar.setVisibility(View.GONE);
    }
}
Also used : RecyclerTouchListener(drift.com.drift.helpers.RecyclerTouchListener) Drawable(android.graphics.drawable.Drawable) Conversation(drift.com.drift.model.Conversation) Intent(android.content.Intent) ConversationListAdapter(drift.com.drift.adapters.ConversationListAdapter) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) DividerItemDecoration(android.support.v7.widget.DividerItemDecoration) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) ActionBar(android.support.v7.app.ActionBar) ClickListener(drift.com.drift.helpers.ClickListener)

Aggregations

Intent (android.content.Intent)2 ActionBar (android.support.v7.app.ActionBar)2 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)2 RecyclerView (android.support.v7.widget.RecyclerView)2 View (android.view.View)2 TextView (android.widget.TextView)2 ClickListener (drift.com.drift.helpers.ClickListener)2 RecyclerTouchListener (drift.com.drift.helpers.RecyclerTouchListener)2 IntentFilter (android.content.IntentFilter)1 Drawable (android.graphics.drawable.Drawable)1 DividerItemDecoration (android.support.v7.widget.DividerItemDecoration)1 Editable (android.text.Editable)1 TextWatcher (android.text.TextWatcher)1 KeyEvent (android.view.KeyEvent)1 ImageView (android.widget.ImageView)1 ConversationAdapter (drift.com.drift.adapters.ConversationAdapter)1 ConversationListAdapter (drift.com.drift.adapters.ConversationListAdapter)1 Auth (drift.com.drift.model.Auth)1 Conversation (drift.com.drift.model.Conversation)1 Message (drift.com.drift.model.Message)1