diff --git a/README.md b/README.md
index 61d39780..699059f3 100755
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@
-CometChat Android Demo app (built using **CometChat Pro**) is a fully functional messaging app capable of **one-on-one** (private) and **group** messaging along with recent conversations. The app enables users to send **text** and **multimedia messages like audio, video, images, documents.**
+CometChat Android Demo app (built using **CometChat Pro**) is a fully functional messaging app capable of **one-on-one** (private) and **group** messaging. The app enables users to send **text** and **multimedia messages like audio, video, images, documents.**
[](#) [](#)
@@ -81,15 +81,17 @@ To run our open source app with CometChat Pro v1, follow these steps:
` public static final String API_KEY = "XXXXXXXXX";`
+ - add `google-service.json` file for push notification
+
## Note
- You can Obtain your *APP_ID* and *API_KEY* from [CometChat-Pro Dashboard](https://app.cometchat.com/)
+ You can Obtain your *APP_ID* and *API_KEY* from [CometChat-Pulse Dashboard](https://app.cometchat.com/)
- For more information read [CometChat-Pro Android SDK](https://prodocs.cometchat.com/docs/android-quick-start) Documentation
+ For more information read [CometChat-Pulse Android SDK](https://prodocs.cometchat.com/docs/android-quick-start) Documentation
@@ -97,6 +99,12 @@ To run our open source app with CometChat Pro v1, follow these steps:

+## Push Notification
+
+The Push Notification extension allows you to send push notifications to mobile apps and desktop browsers.
+
+For more information read [Android-Push-Notification](https://prodocs.cometchat.com/docs/android-extensions-push-notification) Documentation.
+
@@ -104,17 +112,17 @@ To run our open source app with CometChat Pro v1, follow these steps:
## Screenshots
-
+
-
+
-
+
-
+
` `
diff --git a/ScreenShots/gif_1.gif b/ScreenShots/gif_1.gif
new file mode 100644
index 00000000..1711ed20
Binary files /dev/null and b/ScreenShots/gif_1.gif differ
diff --git a/ScreenShots/gif_2.gif b/ScreenShots/gif_2.gif
new file mode 100644
index 00000000..43fa0d5c
Binary files /dev/null and b/ScreenShots/gif_2.gif differ
diff --git a/ScreenShots/gif_3.gif b/ScreenShots/gif_3.gif
new file mode 100644
index 00000000..0e070aed
Binary files /dev/null and b/ScreenShots/gif_3.gif differ
diff --git a/ScreenShots/gif_4.gif b/ScreenShots/gif_4.gif
new file mode 100644
index 00000000..eb41aeec
Binary files /dev/null and b/ScreenShots/gif_4.gif differ
diff --git a/app/build.gradle b/app/build.gradle
index 403bb8de..935d11e9 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -63,8 +63,16 @@ dependencies {
implementation 'com.github.bumptech.glide:glide:4.8.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
- //cometchat sdk
- implementation 'com.cometchat:pro-android-chat-sdk:2.0.0-beta8'
+ //Firebase
+ implementation 'com.google.android.gms:play-services-auth:17.0.0'
+ implementation 'com.google.android.gms:play-services-plus:17.0.0'
+ implementation 'com.google.firebase:firebase-core:17.2.1'
+ implementation 'com.google.firebase:firebase-messaging:20.1.0'
+ implementation 'com.google.android.gms:play-services-maps:17.0.0'
+ implementation 'com.google.android.gms:play-services-location:17.0.0'
+ implementation 'com.google.android.gms:play-services-places:17.0.0'
+
+ implementation 'com.cometchat:pro-android-chat-sdk:2.0.2'
implementation 'androidx.recyclerview:recyclerview-selection:1.0.0'
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/CallActivity.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/CallActivity.java
index ca14a6f2..b7ed5cc4 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/CallActivity.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/CallActivity.java
@@ -41,7 +41,6 @@ protected void onCreate(Bundle savedInstanceState) {
if (getIntent().hasExtra(StringContract.IntentStrings.SESSION_ID)) {
sessionId = getIntent().getStringExtra(StringContract.IntentStrings.SESSION_ID);
Logger.error(TAG, " sessionId " + sessionId);
-
CometChat.startCall(CallActivity.this, sessionId, callView, new CometChat.OngoingCallListener() {
@Override
public void onUserJoined(User user) {
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/CometChatActivity.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/CometChatActivity.java
index 43dfe456..07b91279 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/CometChatActivity.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/CometChatActivity.java
@@ -18,8 +18,10 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.widget.Toast;
import com.cometchat.pro.core.CometChat;
+import com.cometchat.pro.exceptions.CometChatException;
import com.cometchat.pro.models.User;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.tabs.TabLayout;
@@ -30,11 +32,15 @@
import com.inscripts.cometchatpulse.demo.Fragments.GroupListFragment;
import com.inscripts.cometchatpulse.demo.Fragments.RecentsFragment;
import com.inscripts.cometchatpulse.demo.Helper.FabIconAnimator;
+import com.inscripts.cometchatpulse.demo.Helper.MyFirebaseMessagingService;
import com.inscripts.cometchatpulse.demo.Helper.ScrollHelper;
import com.inscripts.cometchatpulse.demo.Presenters.CometChatActivityPresenter;
import com.inscripts.cometchatpulse.demo.R;
+import com.inscripts.cometchatpulse.demo.Utils.CommonUtils;
import com.inscripts.cometchatpulse.demo.Utils.FontUtils;
import java.util.HashMap;
+import java.util.Timer;
+import java.util.TimerTask;
public class CometChatActivity extends AppCompatActivity implements ScrollHelper, CometChatActivityContract.CometChatActivityView {
@@ -74,9 +80,11 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_comet_chat);
context = this;
+ MyFirebaseMessagingService.subscribeUser(CometChat.getLoggedInUser().getUid());
cometChatActivityPresenter = new CometChatActivityPresenter();
cometChatActivityPresenter.attach(this);
initViewComponents();
+
}
private void initViewComponents() {
@@ -121,13 +129,10 @@ public void onPageSelected(int i) {
adapter.notifyDataSetChanged();
pageNumber=i;
if (i==0)
- {
searchItem.setVisible(false);
- }
else
- {
searchItem.setVisible(true);
- }
+
}
@Override
@@ -136,12 +141,12 @@ public void onPageScrollStateChanged(int i) {
}
});
-
}
@Override
protected void onStart() {
super.onStart();
+
}
@Override
@@ -155,7 +160,6 @@ protected void onResume() {
cometChatActivityPresenter.addCallEventListener(context, TAG);
Log.d(TAG, "onResume: ");
cometChatActivityPresenter.addMessageListener(CometChatActivity.this,TAG);
-
}
@Override
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/GroupChatActivity.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/GroupChatActivity.java
index 720426fc..e81851c2 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/GroupChatActivity.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/GroupChatActivity.java
@@ -41,6 +41,7 @@
import com.cometchat.pro.models.MessageReceipt;
import com.cometchat.pro.models.TextMessage;
import com.cometchat.pro.models.TypingIndicator;
+import com.inscripts.cometchatpulse.demo.Helper.MyFirebaseMessagingService;
import com.inscripts.cometchatpulse.demo.Helper.RecyclerTouchListener;
import com.inscripts.cometchatpulse.demo.R;
import com.inscripts.cometchatpulse.demo.Adapter.GroupMessageAdapter;
@@ -75,7 +76,7 @@
public class GroupChatActivity extends AppCompatActivity implements GroupChatActivityContract.GroupChatView, TextWatcher, View.OnClickListener, ActionMode.Callback {
- private static final int LIMIT = 10;
+ private static final int LIMIT = 30;
private static final String TAG = "GroupChatActivity";
@@ -159,6 +160,8 @@ public class GroupChatActivity extends AppCompatActivity implements GroupChatAct
private SearchView searchView;
+ private boolean searchBox = false;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
@@ -169,6 +172,7 @@ protected void onCreate(Bundle savedInstanceState) {
groupChatPresenter = new GroupChatPresenter();
groupChatPresenter.attach(this);
initViewComponent();
+ MyFirebaseMessagingService.subscribeGroup(groupId);
}
@@ -274,25 +278,27 @@ private void initViewComponent() {
new Thread(() -> groupChatPresenter.fetchGroupMembers(groupId)).start();
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- setScrollListener();
- } else {
- messageRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
+ if (!searchBox) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ setScrollListener();
+ } else {
+ messageRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
- if (linearLayoutManager.findFirstVisibleItemPosition() == 0) {
+ if (!messageRecyclerView.canScrollVertically(-1)) {
- groupChatPresenter.fetchPreviousMessage(groupId, LIMIT);
+ groupChatPresenter.fetchPreviousMessage(groupId, LIMIT);
- }
+ }
- //for toolbar elevation animation i.e stateListAnimator
- toolbar.setSelected(recyclerView.canScrollVertically(-1));
+ //for toolbar elevation animation i.e stateListAnimator
+ toolbar.setSelected(recyclerView.canScrollVertically(-1));
- }
- });
+ }
+ });
+ }
}
KeyboardVisibilityEvent.setEventListener(this, var1 -> {
@@ -340,7 +346,7 @@ private void setScrollListener() {
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
int temp = linearLayoutManager.findFirstVisibleItemPosition();
- if (temp < 5) {
+ if (!messageRecyclerView.canScrollVertically(-1)) {
groupChatPresenter.fetchPreviousMessage(groupId, LIMIT);
@@ -477,12 +483,14 @@ public boolean onQueryTextSubmit(String s) {
@Override
public boolean onQueryTextChange(String s) {
+ searchBox = true;
groupChatPresenter.searchMessage(s,groupId);
- return false;
+ return false;
}
});
searchView.setOnCloseListener(() -> {
+ searchBox = false;
groupChatPresenter.fetchPreviousMessage(groupId,30);
return false;
});
@@ -568,16 +576,16 @@ protected void onResume() {
super.onResume();
groupChatPresenter.addMessageReceiveListener(getResources().getString(R.string.group_message_listener), groupId, ownerId);
groupChatPresenter.addGroupEventListener("action_message", groupId, ownerId);
- groupChatPresenter.refreshList(groupId,ownerId,LIMIT);
+// groupChatPresenter.refreshList(groupId,ownerId,LIMIT);
groupChatPresenter.addCallListener("call_listener");
}
@Override
protected void onPause() {
super.onPause();
- if (groupMessageAdapter!=null) {
- groupMessageAdapter.stopPlayer();
- }
+ if (groupMessageAdapter!=null) {
+ groupMessageAdapter.stopPlayer();
+ }
groupChatPresenter.removeMessageReceiveListener(getResources().getString(R.string.group_message_listener));
groupChatPresenter.removeMessageReceiveListener("action_message");
groupChatPresenter.removeCallListener("call_listener");
@@ -668,6 +676,7 @@ public void setAdapter(List messageList) {
}
if (groupMessageAdapter == null) {
groupMessageAdapter = new GroupMessageAdapter(messageList, context, groupId, ownerId);
+
messageRecyclerView.setAdapter(groupMessageAdapter);
decor = new StickyHeaderDecoration(groupMessageAdapter);
messageRecyclerView.addItemDecoration(decor, 0);
@@ -709,26 +718,26 @@ public void addReceivedMessage(BaseMessage baseMessage) {
@Override
public void typingStarted(TypingIndicator typingIndicator) {
- toolbarSubTitle.setText(typingIndicator.getSender().getName()+" "+getString(R.string.is_typing));
+ toolbarSubTitle.setText(typingIndicator.getSender().getName()+" "+getString(R.string.is_typing));
}
@Override
public void typingEnded(TypingIndicator typingIndicator) {
- toolbarSubTitle.setText(names);
+ toolbarSubTitle.setText(names);
}
@Override
public void setDeliveryReceipt(MessageReceipt messageReceipt) {
- if (groupMessageAdapter!=null){
- groupMessageAdapter.setDelivered(messageReceipt);
- }
+// if (groupMessageAdapter!=null){
+// groupMessageAdapter.setDelivered(messageReceipt);
+// }
}
@Override
public void onMessageRead(MessageReceipt messageReceipt) {
- if (groupMessageAdapter!=null){
- groupMessageAdapter.setRead(messageReceipt);
- }
+// if (groupMessageAdapter!=null){
+// groupMessageAdapter.setRead(messageReceipt);
+// }
}
@Override
@@ -991,4 +1000,4 @@ private void addAttachment(int type) {
}
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/LoginActivity.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/LoginActivity.java
index 6e7c4b9a..afea27cb 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/LoginActivity.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/LoginActivity.java
@@ -13,6 +13,8 @@
import com.inscripts.cometchatpulse.demo.R;
import com.inscripts.cometchatpulse.demo.Contracts.LoginActivityContract;
import com.inscripts.cometchatpulse.demo.Presenters.LoginAcitivityPresenter;
+import com.inscripts.cometchatpulse.demo.Utils.CommonUtils;
+
import java.util.ArrayList;
import java.util.List;
@@ -92,6 +94,6 @@ private List getSampleUserList(){
public void startCometChatActivity() {
startActivity(new Intent(LoginActivity.this, CometChatActivity.class));
- finish();
+ finish();
}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/MessageInfoActivity.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/MessageInfoActivity.java
index d4471b29..c2cdb857 100644
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/MessageInfoActivity.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/MessageInfoActivity.java
@@ -18,7 +18,6 @@
import com.inscripts.cometchatpulse.demo.Presenters.MessageInfoActivityPresenter;
import com.inscripts.cometchatpulse.demo.R;
-import java.util.HashMap;
import java.util.List;
public class MessageInfoActivity extends AppCompatActivity implements MessageInfoActivityContract.MessageInfoActivityView {
@@ -33,8 +32,6 @@ public class MessageInfoActivity extends AppCompatActivity implements MessageInf
private View rlText;
- private int id;
-
private View rlImage;
private String type;
@@ -45,8 +42,6 @@ public class MessageInfoActivity extends AppCompatActivity implements MessageInf
private String url;
- private String TAG = "MessageInfoActivity";
-
private RecyclerView rvMessageReceipts;
private ProgressBar progressBar;
@@ -126,7 +121,7 @@ public void receiverUID(String receiverUID) {
}
@Override
- public void setReceiptsAdapter(HashMap messageReceipts) {
+ public void setReceiptsAdapter(List messageReceipts) {
runOnUiThread(() -> {
if (messageReceipts!=null) {
messageReceiptsAdapter = new MessageReceiptsAdapter(MessageInfoActivity.this, messageReceipts);
@@ -134,31 +129,4 @@ public void setReceiptsAdapter(HashMap messageReceipts) {
}
});
}
-
- @Override
- public void updateReciept(MessageReceipt messageReceipt) {
- messageReceiptsAdapter.updateReciept(messageReceipt);
- }
-
- @Override
- public void setMessageId(int id) {
- this.id = id;
- }
-
- @Override
- protected void onStart() {
- super.onStart();
- messageInfoActivityPresenter.addmessagelistener(TAG,id);
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- messageInfoActivityPresenter.removemessagelistener(TAG);
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- }
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/OneToOneChatActivity.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/OneToOneChatActivity.java
index 376838c8..8cc15da4 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/OneToOneChatActivity.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Activity/OneToOneChatActivity.java
@@ -81,7 +81,7 @@
public class OneToOneChatActivity extends AppCompatActivity implements OneToOneActivityContract.OneToOneView, View.OnClickListener, TextWatcher, ActionMode.Callback {
- private static final int LIMIT = 30;
+ private static final int LIMIT = 10;
public static final int RECORD_CODE = 22;
@@ -177,6 +177,7 @@ public class OneToOneChatActivity extends AppCompatActivity implements OneToOneA
private AlertDialog.Builder alertDialog;
+ private boolean searchbox = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -263,28 +264,30 @@ private void initViewComponent() {
oneToOnePresenter.getOwnerDetail();
oneToOnePresenter.handleIntent(getIntent());
- new Thread(() -> oneToOnePresenter.fetchPreviousMessage(contactUid, LIMIT)).start();
-
-// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
-// setScrollListener();
-//
-// } else {
-// messageRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
-// @Override
-// public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
-//
-// if (linearLayoutManager.findFirstVisibleItemPosition() == 0) {
-// Logger.error("slow scroll");
-// oneToOnePresenter.fetchPreviousMessage(contactUid, LIMIT);
-// }
-//
-// //for toolbar elevation animation i.e stateListAnimator
-// toolbar.setSelected(messageRecyclerView.canScrollVertically(-1));
-//
-//
-// }
-// });
-// }
+ oneToOnePresenter.fetchPreviousMessage(contactUid, LIMIT);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ if (!searchbox)
+ setScrollListener();
+
+ } else {
+ messageRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
+
+ if (!messageRecyclerView.canScrollVertically(-1)) {
+ Logger.error("slow scroll");
+ if (!searchbox)
+ oneToOnePresenter.fetchPreviousMessage(contactUid, LIMIT);
+ }
+
+ //for toolbar elevation animation i.e stateListAnimator
+ toolbar.setSelected(messageRecyclerView.canScrollVertically(-1));
+
+
+ }
+ });
+ }
@@ -324,9 +327,10 @@ private void setScrollListener() {
int temp = linearLayoutManager.findFirstVisibleItemPosition();
- if (temp < 5 ) {
+ if (!messageRecyclerView.canScrollVertically(-1)) {
Logger.error("Fast scroll");
- oneToOnePresenter.fetchPreviousMessage(contactUid, LIMIT);
+ if (!searchbox)
+ oneToOnePresenter.fetchPreviousMessage(contactUid, LIMIT);
}
@@ -432,6 +436,7 @@ public boolean onQueryTextSubmit(String s) {
@Override
public boolean onQueryTextChange(String s) {
+ searchbox = true;
oneToOnePresenter.searchMessage(s,contactUid);
return false;
}
@@ -440,6 +445,7 @@ public boolean onQueryTextChange(String s) {
searchView.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
+ searchbox = false;
oneToOnePresenter.fetchPreviousMessage(contactUid,30);
return false;
}
@@ -673,8 +679,7 @@ protected void onResume() {
Logger.error(TAG, "onResume: ");
oneToOnePresenter.addPresenceListener(getString(R.string.presenceListener));
oneToOnePresenter.addMessageReceiveListener(contactUid);
- if (oneToOneAdapter!=null)
- oneToOnePresenter.refreshList(contactUid,LIMIT);
+
oneToOnePresenter.addCallEventListener(TAG);
}
@@ -750,22 +755,17 @@ public void setAdapter(List messageArrayList) {
if (oneToOneAdapter == null) {
oneToOneAdapter = new OneToOneAdapter(this, messageArrayList, ownerUid);
oneToOneAdapter.setHasStableIds(true);
- oneToOneAdapter.setTopReachedListener(new OnTopReachedListener() {
- @Override
- public void onTopReached(int pos) {
- Log.e(TAG, "onTopReached: " + pos);
- oneToOnePresenter.fetchPreviousMessage(contactUid, LIMIT);
- messageRecyclerView.scrollToPosition(LIMIT);
- }
- });
messageRecyclerView.setAdapter(oneToOneAdapter);
StickyHeaderDecoration decor = new StickyHeaderDecoration(oneToOneAdapter);
messageRecyclerView.addItemDecoration(decor);
- if (oneToOneAdapter.getItemCount() != 0) {
- messageRecyclerView.scrollToPosition(oneToOneAdapter.getItemCount() - 1);
- }
+// if (oneToOneAdapter.getItemCount() != 0) {
+// messageRecyclerView.scrollToPosition(oneToOneAdapter.getItemCount() - 1);
+// }
} else if (messageArrayList != null && messageArrayList.size() != 0) {
oneToOneAdapter.refreshData(messageArrayList);
+ if (oneToOneAdapter.getItemCount() != 0) {
+ messageRecyclerView.scrollToPosition(LIMIT);
+ }
}
}
@@ -811,6 +811,15 @@ public void addSendMessage(BaseMessage baseMessage) {
messageRecyclerView.scrollToPosition(oneToOneAdapter.getItemCount() - 1);
}
}
+ else
+ {
+ oneToOneAdapter = new OneToOneAdapter(this,ownerUid);
+ oneToOneAdapter.setHasStableIds(true);
+ messageRecyclerView.setAdapter(oneToOneAdapter);
+ StickyHeaderDecoration decor = new StickyHeaderDecoration(oneToOneAdapter);
+ messageRecyclerView.addItemDecoration(decor);
+ oneToOneAdapter.addMessage(baseMessage);
+ }
}
@Override
@@ -851,8 +860,8 @@ public void setPresence(User user) {
toolbarSubTitle.setText(userStatus);
}
if (user!=null&&user.isBlockedByMe()){
- rvBanner.setVisibility(View.VISIBLE);
- tvBanner.setText("Tab to unblock "+user.getName());
+ rvBanner.setVisibility(View.VISIBLE);
+ tvBanner.setText("Tab to unblock "+user.getName());
}
}
@@ -876,7 +885,7 @@ public void endTyping() {
@Override
public void setMessageDelivered(MessageReceipt messageReceipt) {
if (oneToOneAdapter!=null)
- oneToOneAdapter.Delivered(messageReceipt);
+ oneToOneAdapter.Delivered(messageReceipt);
}
@Override
@@ -920,7 +929,7 @@ else if (isEditMessage&&!TextUtils.isEmpty(message)){
break;
case R.id.blockBanner:
- oneToOnePresenter.unBlockUser(user.getUid(),OneToOneChatActivity.this);
+ oneToOnePresenter.unBlockUser(user.getUid(),OneToOneChatActivity.this);
break;
case R.id.rl_titlecontainer:
@@ -965,7 +974,7 @@ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (len > 0) {
sendButton.setTextColor(getResources().getColor(R.color.secondaryDarkColor));
- oneToOnePresenter.sendTypingIndicator(contactUid);
+ oneToOnePresenter.sendTypingIndicator(contactUid);
} else {
sendButton.setTextColor(getResources().getColor(R.color.secondaryTextColor));
@@ -1018,7 +1027,7 @@ public boolean onCreateActionMode(ActionMode mode, Menu menu) {
}
if (!baseMessage.getSender().getUid().equals(ownerUid) && baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_TEXT)){
- menu.findItem(R.id.edit).setVisible(false);
+ menu.findItem(R.id.edit).setVisible(false);
}
@@ -1034,9 +1043,9 @@ public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
@Override
public void setDeletedMessage(BaseMessage baseMessage) {
- if (oneToOneAdapter!=null){
+ if (oneToOneAdapter!=null){
oneToOneAdapter.deleteMessage(baseMessage);
- }
+ }
}
@Override
@@ -1048,9 +1057,9 @@ public void setEditedMessage(BaseMessage baseMessage) {
@Override
public void setFilterList(List list) {
- if (oneToOneAdapter!=null){
- oneToOneAdapter.setFilterList(list);
- }
+ if (oneToOneAdapter!=null){
+ oneToOneAdapter.setFilterList(list);
+ }
}
@Override
@@ -1062,15 +1071,15 @@ public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.delete:
- oneToOnePresenter.deleteMessage(baseMessage);
+ oneToOnePresenter.deleteMessage(baseMessage);
break;
case R.id.edit:
TextMessage textMessage;
- isEditMessage=true;
- if (baseMessage instanceof TextMessage){
- textMessage=(TextMessage)baseMessage;
- messageField.setText(textMessage.getText());
- }
+ isEditMessage=true;
+ if (baseMessage instanceof TextMessage){
+ textMessage=(TextMessage)baseMessage;
+ messageField.setText(textMessage.getText());
+ }
break;
}
@@ -1089,4 +1098,4 @@ public void onClick(int type) {
}
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/ContactListAdapter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/ContactListAdapter.java
index 2a0e1b0e..6386247b 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/ContactListAdapter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/ContactListAdapter.java
@@ -10,6 +10,7 @@
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
+
import com.bumptech.glide.Glide;
import com.inscripts.cometchatpulse.demo.R;
import com.inscripts.cometchatpulse.demo.CustomView.CircleImageView;
@@ -81,13 +82,9 @@ public void onBindViewHolder(@NonNull ContactViewHolder contactViewHolder, final
Glide.with(context).load(user.getAvatar()).into(contactViewHolder.avatar);
} else {
Drawable drawable = context.getResources().getDrawable(R.drawable.default_avatar);
- try {
- contactViewHolder.avatar.setCircleBackgroundColor(ColorUtils.getMaterialColor(context));
- contactViewHolder.avatar.setImageBitmap(MediaUtils.getPlaceholderImage(context, drawable));
- } catch (Exception e) {
- contactViewHolder.avatar.setCircleBackgroundColor(context.getResources().getColor(R.color.secondaryDarkColor));
- contactViewHolder.avatar.setImageDrawable(drawable);
- }
+ contactViewHolder.avatar.setCircleBackgroundColor(context.getResources().getColor(R.color.secondaryColor));
+ contactViewHolder.avatar.setImageBitmap(MediaUtils.getPlaceholderImage(context, drawable));
+
}
contactViewHolder.view.setTag(R.string.user_avatar, user.getAvatar());
@@ -129,11 +126,11 @@ public void removeUser(String uid) {
}
public void setUnreadCount(HashMap stringIntegerHashMap) {
- unreadCountMap =stringIntegerHashMap;
+ unreadCountMap = stringIntegerHashMap;
}
public void setFilterList(HashMap hashMap) {
- userHashMap=hashMap;
+ userHashMap = hashMap;
notifyDataSetChanged();
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/GroupListAdapter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/GroupListAdapter.java
index 2b9711c5..1688b4c1 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/GroupListAdapter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/GroupListAdapter.java
@@ -67,20 +67,14 @@ public void onBindViewHolder(@NonNull GroupHolder groupHolder, int i) {
groupHolder.usersOnline.setTypeface(FontUtils.robotoRegular);
Drawable drawable = context.getResources().getDrawable(R.drawable.cc_ic_group);
+
if (group.getIcon() != null && !group.getIcon().isEmpty()) {
Glide.with(context).load(group.getIcon()).into(groupHolder.imageViewGroupAvatar);
+
} else {
- try {
- groupHolder.imageViewGroupAvatar.setCircleBackgroundColor(ColorUtils.getMaterialColor(context));
+ groupHolder.imageViewGroupAvatar.setCircleBackgroundColor(context.getResources().getColor(R.color.secondaryColor));
groupHolder.imageViewGroupAvatar.setImageBitmap(MediaUtils.getPlaceholderImage(context, drawable));
- } catch (Exception e) {
- groupHolder.imageViewGroupAvatar.setCircleBackgroundColor(context.getResources().
- getColor(R.color.secondaryDarkColor));
-
- groupHolder.imageViewGroupAvatar.setImageDrawable(drawable);
- }
-
}
if (group.getGroupType().equals(CometChatConstants.GROUP_TYPE_PASSWORD)) {
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/GroupMessageAdapter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/GroupMessageAdapter.java
index aeac7531..25319387 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/GroupMessageAdapter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/GroupMessageAdapter.java
@@ -61,8 +61,11 @@
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Date;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import static com.inscripts.cometchatpulse.demo.Utils.FileUtils.getFileExtension;
import static com.inscripts.cometchatpulse.demo.Utils.FileUtils.getFileName;
@@ -71,11 +74,10 @@
public class GroupMessageAdapter extends RecyclerView.Adapter implements
StickyHeaderAdapter {
-
private static final int LEFT_CUSTOM_MESSAGE = 1034;
private static final int RIGHT_CUSTOM_MESSAGE = 934;
-
+
private static final int RIGHT_TEXT_MESSAGE = 940;
private static final int LEFT_TEXT_MESSAGE = 489;
@@ -111,7 +113,7 @@ public class GroupMessageAdapter extends RecyclerView.Adapter messageList=new LongSparseArray<>();
+ private LinkedHashMap messageList=new LinkedHashMap<>();
private Context context;
@@ -168,10 +170,13 @@ public GroupMessageAdapter(List messageList, Context context, Strin
}
- private void setList(List messageList){
- for (BaseMessage basemessage:messageList) {
- this.messageList.put(basemessage.getId(),basemessage);
+ private void setList(List messagesList){
+ LinkedHashMap oldmessageArray = (LinkedHashMap) messageList.clone();
+ messageList.clear();
+ for (BaseMessage basemessage:messagesList) {
+ messageList.put(basemessage.getId(),basemessage);
}
+ messageList.putAll(oldmessageArray);
notifyDataSetChanged();
}
@NonNull
@@ -282,7 +287,7 @@ public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup,
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
- BaseMessage baseMessage = messageList.get(messageList.keyAt(viewHolder.getAdapterPosition()));
+ BaseMessage baseMessage = new ArrayList(messageList.values()).get(viewHolder.getAdapterPosition());
String message = null;
String mediaFile = null;
String avatar = baseMessage.getSender().getAvatar();
@@ -297,13 +302,13 @@ public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i)
currentSenderId = baseMessage.getSender().getUid();
currentData = new java.text.SimpleDateFormat("yyyy/MM/dd")
- .format(new java.util.Date(messageList.get(messageList.keyAt(position)).getSentAt() * 1000));
+ .format(new java.util.Date(baseMessage.getSentAt() * 1000));
if (position > 0) {
previousViewType = getItemViewType(position - 1);
- previousSenderId = messageList.get(messageList.keyAt(i-1)).getSender().getUid();
+ previousSenderId = baseMessage.getSender().getUid();
previousDate = new java.text.SimpleDateFormat("yyyy/MM/dd")
- .format(new java.util.Date(messageList.get(messageList.keyAt(i-1) ).getSentAt() * 1000));
+ .format(new java.util.Date(baseMessage.getSentAt() * 1000));
}
if (baseMessage instanceof TextMessage) {
@@ -1371,29 +1376,29 @@ private void setAvatar(CircleImageView circleImageView, String url) {
@Override
public int getItemViewType(int position) {
-
- switch (messageList.get(messageList.keyAt(position)).getCategory()) {
+ BaseMessage message = new ArrayList(messageList.values()).get(position);
+ switch (message.getCategory()) {
case CometChatConstants.CATEGORY_MESSAGE:
- if (ownerId.equalsIgnoreCase(messageList.get(messageList.keyAt(position)).getSender().getUid())) {
+ if (ownerId.equalsIgnoreCase(message.getSender().getUid())) {
- if (messageList.get(messageList.keyAt(position)) instanceof TextMessage &&
- ((TextMessage) messageList.get(messageList.keyAt(position))).getMetadata() != null
- && ((TextMessage) messageList.get(messageList.keyAt(position))).getMetadata().has("reply")) {
+ if (message instanceof TextMessage &&
+ ((TextMessage) message).getMetadata() != null
+ && ((TextMessage) message).getMetadata().has("reply")) {
return RIGHT_TEXT_REPLY_MESSAGE;
- } else if (messageList.get(messageList.keyAt(position)) instanceof MediaMessage &&
- ((MediaMessage) messageList.get(messageList.keyAt(position))).getMetadata() != null
- && ((MediaMessage) messageList.get(messageList.keyAt(position))).getMetadata().has("reply")) {
+ } else if (message instanceof MediaMessage &&
+ ((MediaMessage) message).getMetadata() != null
+ && ((MediaMessage) message).getMetadata().has("reply")) {
return RIGHT_MEDIA_REPLY_MESSAGE;
} else {
- switch (messageList.get(messageList.keyAt(position)).getType()) {
+ switch (message.getType()) {
case CometChatConstants.MESSAGE_TYPE_TEXT:
return RIGHT_TEXT_MESSAGE;
@@ -1416,22 +1421,22 @@ public int getItemViewType(int position) {
}
} else {
- if (messageList.get(messageList.keyAt(position)) instanceof TextMessage &&
- ((TextMessage) messageList.get(messageList.keyAt(position))).getMetadata() != null
- && ((TextMessage) messageList.get(messageList.keyAt(position))).getMetadata().has("reply")) {
+ if (message instanceof TextMessage &&
+ ((TextMessage) message).getMetadata() != null
+ && ((TextMessage) message).getMetadata().has("reply")) {
return LEFT_TEXT_REPLY_MESSAGE;
- } else if (messageList.get(messageList.keyAt(position)) instanceof MediaMessage &&
- ((MediaMessage) messageList.get(messageList.keyAt(position))).getMetadata() != null
- && ((MediaMessage) messageList.get(messageList.keyAt(position))).getMetadata().has("reply")) {
+ } else if (message instanceof MediaMessage &&
+ ((MediaMessage) message).getMetadata() != null
+ && ((MediaMessage) message).getMetadata().has("reply")) {
return LEFT_MEDIA_REPLY_MESSAGE;
} else {
- switch (messageList.get(messageList.keyAt(position)).getType()) {
+ switch (message.getType()) {
case CometChatConstants.MESSAGE_TYPE_TEXT:
@@ -1460,9 +1465,9 @@ public int getItemViewType(int position) {
case CometChatConstants.CATEGORY_ACTION:
return ACTION_MESSAGE;
-
+
case CometChatConstants.CATEGORY_CUSTOM:
- if (ownerId.equalsIgnoreCase(messageList.get(messageList.keyAt(position)).getSender().getUid())) {
+ if (ownerId.equalsIgnoreCase(message.getSender().getUid())) {
return RIGHT_CUSTOM_MESSAGE;
} else {
return LEFT_CUSTOM_MESSAGE;
@@ -1475,7 +1480,6 @@ public int getItemViewType(int position) {
public int getItemCount() {
if (messageList != null) {
-
return messageList.size();
} else {
return 0;
@@ -1485,7 +1489,8 @@ public int getItemCount() {
@Override
public long getHeaderId(int var1) {
- return Long.parseLong(DateUtils.getDateId(messageList.get(messageList.keyAt(var1)).getSentAt() * 1000));
+ BaseMessage baseMessage = new ArrayList(messageList.values()).get(var1);
+ return Long.parseLong(DateUtils.getDateId(baseMessage.getSentAt() * 1000));
}
@Override
@@ -1499,13 +1504,13 @@ public GroupMessageAdapter.DateItemHolder onCreateHeaderViewHolder(ViewGroup var
@Override
public void onBindHeaderViewHolder(GroupMessageAdapter.DateItemHolder var1, int var2, long var3) {
- Date date = new Date(messageList.get(messageList.keyAt(var2)).getSentAt() * 1000);
+ BaseMessage baseMessage = new ArrayList(messageList.values()).get(var2);
+ Date date = new Date(baseMessage.getSentAt() * 1000);
String formattedDate = DateUtils.getCustomizeDate(date.getTime());
var1.txtMessageDate.setBackground(context.getResources().getDrawable(R.drawable.cc_rounded_date_button));
var1.txtMessageDate.setTypeface(FontUtils.robotoMedium);
var1.txtMessageDate.setText(formattedDate);
}
-
public void add(BaseMessage baseMessage) {
messageList.put(baseMessage.getId(),baseMessage);
notifyDataSetChanged();
@@ -1513,8 +1518,8 @@ public void add(BaseMessage baseMessage) {
public void refreshData(List messageList) {
setList(messageList);
- notifyItemRangeInserted(0, messageList.size());
- notifyItemChanged(messageList.size());
+// notifyItemRangeInserted(0, messageList.size());
+// notifyItemChanged(messageList.size());
}
@@ -1524,7 +1529,6 @@ private void setDeliveryIcon(CircleImageView circleImageView,BaseMessage baseMes
private void setReadIcon(CircleImageView circleImageView,BaseMessage baseMessage){
if (baseMessage.getReadAt()!=0){
- Log.e(TAG, "setReadIcon: "+baseMessage);
circleImageView.setImageResource(R.drawable.ic_double_tick_blue);
circleImageView.setCircleBackgroundColor(context.getResources().getColor(android.R.color.transparent));
}
@@ -1539,31 +1543,38 @@ else if (baseMessage.getDeliveredAt()!=0){
}
public void setDelivered(MessageReceipt messageReceipt) {
- for (int i = messageList.size() - 1; i >0; i--) {
- if (messageList.get(messageList.keyAt(i)).getReadAt() > 0) {
- break;
- } else {
- BaseMessage baseMessage = messageList.get(messageList.keyAt(i));
- if (baseMessage!=null){
- baseMessage.setDeliveredAt(messageReceipt.getDeliveredAt());
- messageList.put(baseMessage.getId(),baseMessage);
+ for (Map.Entry entry : messageList.entrySet()) {
+ if (messageList.containsKey(entry.getKey())) {
+ if (messageList.get(entry.getKey()).getDeliveredAt() > 0) {
+ break;
+ } else {
+ BaseMessage baseMessage = messageList.get(entry.getKey());
+ if (baseMessage != null) {
+ baseMessage.setDeliveredAt(messageReceipt.getDeliveredAt());
+ messageList.put(baseMessage.getId(), baseMessage);
+ }
}
}
+ else
+ {
+ Log.e(TAG, "setDeliverednull: "+messageList.get(messageReceipt.getMessageId()));
+ }
}
notifyDataSetChanged();
}
public void setRead(MessageReceipt messageReceipt) {
-
- for (int i = messageList.size() - 1; i > 0; i--) {
- if (messageList.get(messageList.keyAt(i)).getReadAt() > 0) {
- break;
- } else {
- BaseMessage baseMessage = messageList.get(messageList.keyAt(i));
- if (baseMessage!=null){
- baseMessage.setReadAt(messageReceipt.getReadAt());
- messageList.put(baseMessage.getId(),baseMessage);
+ for (Map.Entry entry : messageList.entrySet()) {
+ if (messageList.containsKey(entry.getKey())) {
+ if (messageList.get(entry.getKey()).getReadAt() > 0) {
+ break;
+ } else {
+ BaseMessage baseMessage = messageList.get(entry.getKey());
+ if (baseMessage != null) {
+ baseMessage.setReadAt(messageReceipt.getReadAt());
+ messageList.put(baseMessage.getId(), baseMessage);
+ }
}
}
}
@@ -1577,7 +1588,7 @@ public void deleteMessage(BaseMessage baseMessage) {
}
public void setEditMessage(BaseMessage baseMessage) {
- messageList.put(baseMessage.getId(),baseMessage);
+ messageList.put(baseMessage.getId(), baseMessage);
notifyDataSetChanged();
}
@@ -1598,4 +1609,4 @@ class DateItemHolder extends RecyclerView.ViewHolder {
}
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/MessageReceiptsAdapter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/MessageReceiptsAdapter.java
index dd894b64..00f5e09e 100644
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/MessageReceiptsAdapter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/MessageReceiptsAdapter.java
@@ -1,7 +1,6 @@
package com.inscripts.cometchatpulse.demo.Adapter;
import android.content.Context;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -15,17 +14,15 @@
import com.inscripts.cometchatpulse.demo.R;
import com.inscripts.cometchatpulse.demo.Utils.DateUtils;
-import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
public class MessageReceiptsAdapter extends RecyclerView.Adapter {
private Context context;
- private HashMap messageReceiptList;
+ private List messageReceiptList;
- public MessageReceiptsAdapter(Context context, HashMap messageReceiptList) {
+ public MessageReceiptsAdapter(Context context, List messageReceiptList) {
this.context = context;
this.messageReceiptList = messageReceiptList;
}
@@ -39,23 +36,11 @@ public ReceiptsHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
@Override
public void onBindViewHolder(@NonNull ReceiptsHolder receiptsHolder, int i) {
- MessageReceipt messageReceipt= new ArrayList(messageReceiptList.values()).get(i);
- if (messageReceipt.getReadAt()>0) {
- receiptsHolder.tvRead.setVisibility(View.VISIBLE);
- receiptsHolder.tvRead.setText("Read At:" + DateUtils.getTimeStringFromTimestamp(messageReceipt.getReadAt(), "hh:mm a"));
- }
- else
- {
- receiptsHolder.tvRead.setVisibility(View.GONE);
- }
- if (messageReceipt.getDeliveredAt()>0) {
- receiptsHolder.tvDelivery.setVisibility(View.VISIBLE);
- receiptsHolder.tvDelivery.setText("Delivered At:" + DateUtils.getTimeStringFromTimestamp(messageReceipt.getDeliveredAt(), "hh:mm a"));
- }
- else
- {
- receiptsHolder.tvDelivery.setVisibility(View.GONE);
- }
+ MessageReceipt messageReceipt=messageReceiptList.get(i);
+
+ receiptsHolder.tvRead.setText("Read At:"+DateUtils.getTimeStringFromTimestamp(messageReceipt.getReadAt(), "hh:mm a"));
+ receiptsHolder.tvDelivery.setText("Delivered At:"+DateUtils.getTimeStringFromTimestamp(messageReceipt.getDeliveredAt(), "hh:mm a"));
+
Glide.with(context).load(messageReceipt.getSender().getAvatar()).into(receiptsHolder.ivAvatar);
}
@@ -64,11 +49,6 @@ public int getItemCount() {
return messageReceiptList.size();
}
- public void updateReciept(MessageReceipt messageReceipt) {
- messageReceiptList.put(messageReceipt.getSender().getUid(),messageReceipt);
- notifyDataSetChanged();
- }
-
class ReceiptsHolder extends RecyclerView.ViewHolder {
TextView tvDelivery;
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/OneToOneAdapter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/OneToOneAdapter.java
index 4c3af338..1b4051ef 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/OneToOneAdapter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/OneToOneAdapter.java
@@ -61,9 +61,12 @@
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Map;
import static com.inscripts.cometchatpulse.demo.Utils.FileUtils.getFileExtension;
import static com.inscripts.cometchatpulse.demo.Utils.FileUtils.getFileName;
@@ -114,7 +117,7 @@ public class OneToOneAdapter extends RecyclerView.Adapter messageArrayList=new LongSparseArray<>();
+ private LinkedHashMap messageArrayList=new LinkedHashMap<>();
private Context context;
@@ -136,13 +139,18 @@ public class OneToOneAdapter extends RecyclerView.Adapter messageArrayList, String ownerUid) {
this.ownerUid = ownerUid;
this.context = context;
- setList(messageArrayList);
+ setList(messageArrayList);
- audioDurations = new LongSparseArray<>();
+ audioDurations = new LongSparseArray<>();
if (null == player) {
player = new MediaPlayer();
@@ -263,10 +271,7 @@ private void setReadIcon(CircleImageView circleImageView,BaseMessage baseMessage
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int i) {
this.holder=holder;
- if (i == 0) {
- this.topReachedListener.onTopReached(i);
- }
- BaseMessage baseMessage = messageArrayList.get(messageArrayList.keyAt(i));
+ BaseMessage baseMessage = new ArrayList(messageArrayList.values()).get(i);
TextMessage textMessage = null;
MediaMessage mediaMessage = null;
@@ -1204,11 +1209,13 @@ public void run() {
}
-
private void setList(List messageList){
+ LinkedHashMap oldmessageArray = (LinkedHashMap) messageArrayList.clone();
+ messageArrayList.clear();
for (BaseMessage basemessage:messageList) {
messageArrayList.put(basemessage.getId(),basemessage);
}
+ messageArrayList.putAll(oldmessageArray);
notifyDataSetChanged();
}
@@ -1308,27 +1315,27 @@ public int getItemCount() {
@Override
public int getItemViewType(int position) {
+ BaseMessage message = new ArrayList(messageArrayList.values()).get(position);
+ if (message.getCategory().equals(CometChatConstants.CATEGORY_MESSAGE)) {
- if (messageArrayList.get(messageArrayList.keyAt(position)).getCategory().equals(CometChatConstants.CATEGORY_MESSAGE)) {
+ if (ownerUid.equalsIgnoreCase(message.getSender().getUid())) {
- if (ownerUid.equalsIgnoreCase(messageArrayList.get(messageArrayList.keyAt(position)).getSender().getUid())) {
-
- if (messageArrayList.get(messageArrayList.keyAt(position)) instanceof TextMessage &&
- messageArrayList.get(messageArrayList.keyAt(position)).getMetadata() != null
- && messageArrayList.get(messageArrayList.keyAt(position)).getMetadata().has("reply")) {
+ if (message instanceof TextMessage &&
+ message.getMetadata() != null
+ && message.getMetadata().has("reply")) {
return RIGHT_TEXT_REPLY_MESSAGE;
- } else if (messageArrayList.get(messageArrayList.keyAt(position)) instanceof MediaMessage &&
- messageArrayList.get(messageArrayList.keyAt(position)).getMetadata() != null
- && messageArrayList.get(messageArrayList.keyAt(position)).getMetadata().has("reply")) {
+ } else if (message instanceof MediaMessage &&
+ message.getMetadata() != null
+ && message.getMetadata().has("reply")) {
return RIGHT_MEDIA_REPLY_MESSAGE;
} else {
- switch (messageArrayList.get(messageArrayList.keyAt(position)).getType()) {
+ switch (message.getType()) {
case CometChatConstants.MESSAGE_TYPE_TEXT:
return RIGHT_TEXT_MESSAGE;
@@ -1351,22 +1358,22 @@ public int getItemViewType(int position) {
}
} else {
- if (messageArrayList.get(messageArrayList.keyAt(position)) instanceof TextMessage &&
- messageArrayList.get(messageArrayList.keyAt(position)).getMetadata() != null
- && messageArrayList.get(messageArrayList.keyAt(position)).getMetadata().has("reply")) {
+ if (message instanceof TextMessage &&
+ message.getMetadata() != null
+ && message.getMetadata().has("reply")) {
return LEFT_TEXT_REPLY_MESSAGE;
- } else if (messageArrayList.get(messageArrayList.keyAt(position)) instanceof MediaMessage &&
- messageArrayList.get(messageArrayList.keyAt(position)).getMetadata() != null
- && messageArrayList.get(messageArrayList.keyAt(position)).getMetadata().has("reply")) {
+ } else if (message instanceof MediaMessage &&
+ message.getMetadata() != null
+ && message.getMetadata().has("reply")) {
return LEFT_MEDIA_REPLY_MESSAGE;
} else {
- switch (messageArrayList.get(messageArrayList.keyAt(position)).getType()) {
+ switch (message.getType()) {
case CometChatConstants.MESSAGE_TYPE_TEXT:
@@ -1389,13 +1396,13 @@ public int getItemViewType(int position) {
}
}
}
- } else if (messageArrayList.get(messageArrayList.keyAt(position)).getCategory().equals(CometChatConstants.CATEGORY_CUSTOM)) {
- if (ownerUid.equalsIgnoreCase(messageArrayList.get(messageArrayList.keyAt(position)).getSender().getUid())) {
+ } else if (message.getCategory().equals(CometChatConstants.CATEGORY_CUSTOM)) {
+ if (ownerUid.equalsIgnoreCase(message.getSender().getUid())) {
return RIGHT_CUSTOM_MESSAGE;
} else {
return LEFT_CUSTOM_MESSAGE;
}
- } else if (messageArrayList.get(messageArrayList.keyAt(position)).getCategory().equals(CometChatConstants.CATEGORY_CALL)) {
+ } else if (message.getCategory().equals(CometChatConstants.CATEGORY_CALL)) {
return CALL_MESSAGE;
}
return super.getItemViewType(position);
@@ -1405,22 +1412,23 @@ public int getItemViewType(int position) {
@Override
public long getItemId(int position) {
- return messageArrayList.get(messageArrayList.keyAt(position)).getId();
+ BaseMessage message = new ArrayList(messageArrayList.values()).get(position);
+ return message.getId();
}
public void refreshData(List userArrayList) {
setList(userArrayList);
- notifyItemRangeInserted(0, userArrayList.size());
- notifyItemChanged(userArrayList.size());
+// notifyItemRangeInserted(0, userArrayList.size());
+// notifyItemChanged(userArrayList.size());
}
@Override
public long getHeaderId(int var1) {
-
- return Long.parseLong(DateUtils.getDateId(messageArrayList.get(messageArrayList.keyAt(var1)).getSentAt() * 1000));
+ BaseMessage message = new ArrayList(messageArrayList.values()).get(var1);
+ return Long.parseLong(DateUtils.getDateId(message.getSentAt() * 1000));
}
@Override
@@ -1433,8 +1441,8 @@ public DateItemHolder onCreateHeaderViewHolder(ViewGroup var1) {
@Override
public void onBindHeaderViewHolder(DateItemHolder var1, int var2, long var3) {
-
- Date date = new Date(messageArrayList.get(messageArrayList.keyAt(var2)).getSentAt() * 1000);
+ BaseMessage message = new ArrayList(messageArrayList.values()).get(var2);
+ Date date = new Date(message.getSentAt() * 1000);
String formattedDate = DateUtils.getCustomizeDate(date.getTime());
var1.txtMessageDate.setBackground(context.getResources().getDrawable(R.drawable.cc_rounded_date_button));
var1.txtMessageDate.setTypeface(FontUtils.robotoMedium);
@@ -1447,34 +1455,37 @@ public void addMessage(BaseMessage baseMessage) {
}
public void Delivered(MessageReceipt messageReceipt) {
+
BaseMessage baseMessage=messageArrayList.get(messageReceipt.getMessageId());
if (baseMessage!=null) {
for (int i=messageArrayList.size()-1;i>0;i--) {
- if (messageArrayList.get(messageArrayList.keyAt(i)).getDeliveredAt() > 0) {
+ BaseMessage arraymessage = new ArrayList(messageArrayList.values()).get(i);
+ if (arraymessage.getDeliveredAt() > 0) {
break;
} else {
- BaseMessage message = messageArrayList.get(messageArrayList.keyAt(i));
- message.setDeliveredAt(messageReceipt.getTimestamp());
- messageArrayList.put(message.getId(), message);
+ arraymessage.setDeliveredAt(messageReceipt.getTimestamp());
+ messageArrayList.put(arraymessage.getId(), arraymessage);
}
}
notifyDataSetChanged();
}
+
}
public void setRead(MessageReceipt messageReceipt) {
+
BaseMessage baseMessage=messageArrayList.get(messageReceipt.getMessageId());
if (baseMessage!=null) {
for (int i = messageArrayList.size() - 1; i > 0; i--) {
- if (messageArrayList.get(messageArrayList.keyAt(i)).getReadAt() > 0) {
+ BaseMessage arraymessage = new ArrayList(messageArrayList.values()).get(i);
+ if (arraymessage.getReadAt() > 0) {
break;
} else {
- BaseMessage message = messageArrayList.get(messageArrayList.keyAt(i));
- message.setReadAt(messageReceipt.getReadAt());
+ arraymessage.setReadAt(messageReceipt.getReadAt());
Log.d(TAG, "setRead:getTimestamp " + messageReceipt.getTimestamp() + " Id " + messageReceipt.getMessageId());
Log.d(TAG, "setRead: getReadAt " + messageReceipt.getReadAt() + " Id " + messageReceipt.getMessageId());
- Log.d(TAG, "setRead: baseMessage " + message.toString());
- messageArrayList.put(message.getId(), message);
+ Log.d(TAG, "setRead: baseMessage " + arraymessage.toString());
+ messageArrayList.put(arraymessage.getId(), arraymessage);
}
}
notifyDataSetChanged();
@@ -1483,8 +1494,8 @@ public void setRead(MessageReceipt messageReceipt) {
public void updateMessage(BaseMessage baseMessage) {
Log.d(TAG, "updateMessage: "+baseMessage.toString());
- messageArrayList.put(baseMessage.getId(),baseMessage);
- notifyDataSetChanged();
+ messageArrayList.put(baseMessage.getId(),baseMessage);
+ notifyDataSetChanged();
}
@@ -1515,9 +1526,5 @@ class DateItemHolder extends RecyclerView.ViewHolder {
}
}
- public void setTopReachedListener(OnTopReachedListener topReachedListener) {
-
- this.topReachedListener = topReachedListener;
- }
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/RecentsListAdapter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/RecentsListAdapter.java
index d17fd24e..79d5a950 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/RecentsListAdapter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Adapter/RecentsListAdapter.java
@@ -15,6 +15,7 @@
import com.bumptech.glide.Glide;
import com.cometchat.pro.constants.CometChatConstants;
import com.cometchat.pro.core.Call;
+import com.cometchat.pro.core.CometChat;
import com.cometchat.pro.models.Action;
import com.cometchat.pro.models.Conversation;
import com.cometchat.pro.models.CustomMessage;
@@ -27,11 +28,13 @@
import com.inscripts.cometchatpulse.demo.CustomView.CircleImageView;
import com.inscripts.cometchatpulse.demo.R;
import com.inscripts.cometchatpulse.demo.Utils.ColorUtils;
+import com.inscripts.cometchatpulse.demo.Utils.DateUtils;
import com.inscripts.cometchatpulse.demo.Utils.FontUtils;
import com.inscripts.cometchatpulse.demo.Utils.MediaUtils;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.List;
import static java.security.AccessController.getContext;
@@ -47,7 +50,7 @@ public class RecentsListAdapter extends RecyclerView.Adapter conversationList, Context context,
}
-
@NonNull
@Override
public RecentsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
@@ -75,48 +77,23 @@ public void onBindViewHolder(@NonNull RecentsViewHolder contactViewHolder, final
Conversation conversation =conversationList.get(contactViewHolder.getAdapterPosition());
Drawable statusDrawable;
+// contactViewHolder.messageTime.setText(DateUtils.getLastMessageDate(conversation.getLastMessage().getSentAt()));
if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_GROUP))
{
+// str = conversation.getLastMessage().getSender().getName()+": ";
guid = ((Group)conversation.getConversationWith()).getGuid();
groupName = ((Group)conversation.getConversationWith()).getName();
contactViewHolder.userName.setText(groupName);
- if (((Group)conversation.getConversationWith()).getIcon() != null && !((Group)conversation.getConversationWith()).getIcon().isEmpty()) {
- icon = ((Group)conversation.getConversationWith()).getIcon();
- Glide.with(context).load(icon).into(contactViewHolder.avatar);
- contactViewHolder.avatar.setCircleBackgroundColor(context.getResources().getColor(android.R.color.white));
- }
- else {
- Drawable drawable = context.getResources().getDrawable(R.drawable.default_avatar);
- try {
- contactViewHolder.avatar.setCircleBackgroundColor(ColorUtils.getMaterialColor(context));
- contactViewHolder.avatar.setImageBitmap(MediaUtils.getPlaceholderImage(context, drawable));
- } catch (Exception e) {
- contactViewHolder.avatar.setCircleBackgroundColor(context.getResources().getColor(R.color.secondaryDarkColor));
- contactViewHolder.avatar.setImageDrawable(drawable);
- }
- }
-
+ setIcon(((Group) conversation.getConversationWith()).getIcon(),R.drawable.cc_ic_group,contactViewHolder.avatar);
}
else
{
+ str = "";
uid = ((User)conversation.getConversationWith()).getUid();
username = ((User)conversation.getConversationWith()).getName();
contactViewHolder.userName.setText(username);
- if (((User)conversation.getConversationWith()).getAvatar() != null && !((User)conversation.getConversationWith()).getAvatar().isEmpty()) {
- avatar = ((User)conversation.getConversationWith()).getAvatar();
- Glide.with(context).load(avatar).into(contactViewHolder.avatar);
- contactViewHolder.avatar.setCircleBackgroundColor(context.getResources().getColor(android.R.color.white));
- } else {
- Drawable drawable = context.getResources().getDrawable(R.drawable.default_avatar);
- try {
- contactViewHolder.avatar.setCircleBackgroundColor(ColorUtils.getMaterialColor(context));
- contactViewHolder.avatar.setImageBitmap(MediaUtils.getPlaceholderImage(context, drawable));
- } catch (Exception e) {
- contactViewHolder.avatar.setCircleBackgroundColor(context.getResources().getColor(R.color.secondaryDarkColor));
- contactViewHolder.avatar.setImageDrawable(drawable);
- }
- }
+ setIcon(((User) conversation.getConversationWith()).getAvatar(),R.drawable.default_avatar,contactViewHolder.avatar);
}
contactViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
@@ -144,11 +121,12 @@ public void onClick(View view) {
contactViewHolder.userName.setTypeface(FontUtils.robotoRegular);
contactViewHolder.lastMessage.setTypeface(FontUtils.robotoRegular);
if (conversation.getLastMessage()!=null) {
+ Log.e("LastMessage: ",conversation.getLastMessage().toString());
if (conversation.getLastMessage().getType().equals(CometChatConstants.MESSAGE_TYPE_TEXT)) {
contactViewHolder.lastMessage.setText(((TextMessage) conversation.getLastMessage()).getText());
} else if (conversation.getLastMessage().getType().equals(CometChatConstants.MESSAGE_TYPE_IMAGE)) {
contactViewHolder.lastMessage.setText("Image File");
- } else if (conversation.getLastMessage().getType().equals(CometChatConstants.MESSAGE_TYPE_AUDIO)) {
+ } else if (conversation.getLastMessage().getType().equals(CometChatConstants.MESSAGE_TYPE_AUDIO) && conversation.getLastMessage().getCategory().equals(CometChatConstants.CATEGORY_MESSAGE)) {
contactViewHolder.lastMessage.setText("Audio File");
} else if (conversation.getLastMessage().getType().equals(CometChatConstants.MESSAGE_TYPE_VIDEO)) {
contactViewHolder.lastMessage.setText("Video File");
@@ -181,11 +159,32 @@ public void onClick(View view) {
contactViewHolder.unreadCount.setText(conversation.getUnreadMessageCount()+"");
}
+ private void setIcon(String url,int drawableRes,CircleImageView circleImageView){
+
+ if (url!= null && !url.trim().isEmpty()) {
+ Glide.with(context).load(url).into(circleImageView);
+ circleImageView.setCircleBackgroundColor(context.getResources().getColor(android.R.color.white));
+ } else {
+ Drawable drawable = context.getResources().getDrawable(drawableRes);
+ circleImageView.setCircleBackgroundColor(context.getResources().getColor(R.color.secondaryColor));
+ circleImageView.setImageBitmap(MediaUtils.getPlaceholderImage(context, drawable));
+
+ }
+ }
+
public void refreshData(List conversationsList) {
- this.conversationList.clear();
- this.conversationList.addAll(conversationsList);
- notifyDataSetChanged();
+ if (conversationsList!=null) {
+ for (Conversation conversation : conversationsList)
+ {
+ if (this.conversationList.contains(conversation))
+ {
+ this.conversationList.remove(conversation);
+ }
+ }
+ this.conversationList.addAll(conversationsList);
+ notifyDataSetChanged();
+ }
}
public void setFilterList(List hashMap) {
@@ -195,7 +194,7 @@ public void setFilterList(List hashMap) {
@Override
public int getItemCount() {
- return conversationList.size();
+ return conversationList.size();
}
@@ -205,9 +204,17 @@ public void updateConversation(Conversation newConversation) {
Conversation oldConversation=conversationList.get(conversationList.indexOf(newConversation));
conversationList.remove(oldConversation);
newConversation.setUnreadMessageCount(oldConversation.getUnreadMessageCount()+1);
- Log.e( "updateConversation: ",newConversation.toString());
+ Log.e( "updateConversation: ",oldConversation.toString()+"\n"+newConversation.toString());
+ conversationList.add(0,newConversation);
+ notifyDataSetChanged();
+ }else {
conversationList.add(0,newConversation);
+ notifyItemInserted(0);
}
+ }
+
+ public void clear() {
+ conversationList.clear();
notifyDataSetChanged();
}
@@ -217,6 +224,7 @@ public class RecentsViewHolder extends RecyclerView.ViewHolder {
public TextView userName;
public TextView lastMessage;
public TextView unreadCount;
+ public TextView messageTime;
public CircleImageView avatar;
public View view;
@@ -227,8 +235,8 @@ public class RecentsViewHolder extends RecyclerView.ViewHolder {
userName = (TextView) view.findViewById(R.id.textviewUserName);
lastMessage = (TextView) view.findViewById(R.id.textviewLastMessage);
unreadCount = (TextView) view.findViewById(R.id.textviewSingleChatUnreadCount);
-
+ messageTime = (TextView)view.findViewById(R.id.textviewSingleChatTime);
}
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/CometApplication.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/CometApplication.java
index bc75e414..09ffae2d 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/CometApplication.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/CometApplication.java
@@ -1,6 +1,9 @@
package com.inscripts.cometchatpulse.demo;
import android.app.Application;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.os.Build;
import android.os.StrictMode;
import android.util.Log;
import android.widget.Toast;
@@ -8,6 +11,9 @@
import com.cometchat.pro.core.CometChat;
import com.cometchat.pro.exceptions.CometChatException;
import com.cometchat.pro.helpers.Logger;
+import com.cometchat.pro.models.User;
+import com.google.firebase.FirebaseApp;
+import com.google.firebase.FirebaseOptions;
import com.inscripts.cometchatpulse.demo.Contracts.StringContract;
import timber.log.Timber;
@@ -23,13 +29,14 @@ public void onCreate() {
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
-// Logger.enableLogs("4ddd5d736cf33ca31a0b4c72ae64b6d5");
+
AppSettings appSettings=new AppSettings.AppSettingsBuilder().subscribePresenceForAllUsers().setRegion(StringContract.AppDetails.REGION).build();
CometChat.init(this,StringContract.AppDetails.APP_ID,appSettings,new CometChat.CallbackListener() {
@Override
public void onSuccess(String s) {
Toast.makeText(CometApplication.this, "SetUp Complete", Toast.LENGTH_SHORT).show();
+//
}
@Override
@@ -40,5 +47,29 @@ public void onError(CometChatException e) {
});
+
+ FirebaseOptions.Builder fcmbuilder = new FirebaseOptions.Builder()
+ .setApplicationId(StringContract.Firebase.FCM_APPLICATION_ID)
+ .setApiKey(StringContract.Firebase.FCM_WEB_API_KEY);
+ FirebaseApp.initializeApp(this, fcmbuilder.build());
+
+
+ createNotificationChannel();
+ }
+ private void createNotificationChannel() {
+ // Create the NotificationChannel, but only on API 26+ because
+ // the NotificationChannel class is new and not in the support library
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ CharSequence name = getString(R.string.app_name);
+ String description = getString(R.string.channel_description);
+ int importance = NotificationManager.IMPORTANCE_HIGH;
+ NotificationChannel channel = new NotificationChannel("2", name, importance);
+ channel.setDescription(description);
+ // Register the channel with the system; you can't change the importance
+ // or other notification behaviors after this
+ NotificationManager notificationManager = getSystemService(NotificationManager.class);
+ notificationManager.createNotificationChannel(channel);
+ }
+
}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/MessageInfoActivityContract.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/MessageInfoActivityContract.java
index 8c40f4d9..9931fb74 100644
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/MessageInfoActivityContract.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/MessageInfoActivityContract.java
@@ -6,7 +6,6 @@
import com.cometchat.pro.models.MessageReceipt;
import com.inscripts.cometchatpulse.demo.Base.BasePresenter;
-import java.util.HashMap;
import java.util.List;
public interface MessageInfoActivityContract {
@@ -19,18 +18,10 @@ interface MessageInfoActivityView{
void receiverUID(String receiverUID);
- void setReceiptsAdapter(HashMap messageReceipts);
-
- void updateReciept(MessageReceipt messageReceipt);
-
- void setMessageId(int id);
+ void setReceiptsAdapter(List messageReceipts);
}
interface MessageInfoActivityPresenter extends BasePresenter{
void getIntent(Context context,Intent intent);
-
- void addmessagelistener(String tag,int id);
-
- void removemessagelistener(String tag);
}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/RecentsContract.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/RecentsContract.java
index a0264110..1c33e9ae 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/RecentsContract.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/RecentsContract.java
@@ -22,9 +22,9 @@ interface RecentsView{
void setLastMessage(Conversation conversation);
- void setFilterList(List hashMap);
-
void refreshConversation(BaseMessage message);
+
+ void clearConversations();
}
interface RecentsPresenter extends BasePresenter {
@@ -38,5 +38,7 @@ interface RecentsPresenter extends BasePresenter {
// void searchConversation(String s);
void updateConversation();
+
+ void refreshConversations(Context context);
}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/StringContract.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/StringContract.java
index 2bb3bb9a..8f585db2 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/StringContract.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Contracts/StringContract.java
@@ -45,9 +45,15 @@ public static class RequestCode {
}
public static class AppDetails{
- public static final String APP_ID = "XXXXXXXXXXX"; // your app_id
- public static final String API_KEY = "XXXXXXXXXXXXXXXXXXXXX"; // your api_key
- public static final String REGION = "XX"; // your app region
+ public static final String APP_ID = "XXXXXXXXXXXX"; // your app_id
+ public static final String API_KEY = "XXXXXXXXXXX"; // your api_key
+ public static final String REGION = "XXXX"; // your app region
+
+ }
+
+ public static class Firebase {
+ public static final String FCM_APPLICATION_ID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // Firebase Application ID
+ public static final String FCM_WEB_API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX" ; //Firebase Web API Key
}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Fragments/GroupListFragment.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Fragments/GroupListFragment.java
index abc091f5..ba37843c 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Fragments/GroupListFragment.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Fragments/GroupListFragment.java
@@ -299,6 +299,7 @@ public void onButtonClick(AlertDialog alertDialog, View v, int which, int popupI
if (groupPassword.length() == 0) {
groupPasswordInput.setText("");
groupPasswordInput.setError(getString(R.string.incorrect_password));
+ alertDialog.dismiss();
} else {
try {
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Fragments/RecentsFragment.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Fragments/RecentsFragment.java
index a5268de9..b348fef5 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Fragments/RecentsFragment.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Fragments/RecentsFragment.java
@@ -88,7 +88,7 @@ public View onCreateView(LayoutInflater inflater, final ViewGroup container,
recentPresenter.attach(this);
- new Thread(() -> recentPresenter.fetchConversations(getContext())).start();
+// recentPresenter.fetchConversations(getContext());
recentsRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
@@ -112,10 +112,6 @@ public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
}
- @Override
- public void setFilterList(List hashMap) {
- recentsListAdapter.setFilterList(hashMap);
- }
@Override
public void onDestroy() {
@@ -133,7 +129,7 @@ public void onStart() {
public void onResume() {
super.onResume();
recentPresenter.addMessageListener(getString(R.string.presenceListener));
- recentPresenter.fetchConversations(getContext());
+ recentPresenter.refreshConversations(getContext());
}
@Override
@@ -148,6 +144,14 @@ public void refreshConversation(BaseMessage message) {
Conversation newConversation= CometChatHelper.getConversationFromMessage(message);
recentsListAdapter.updateConversation(newConversation);
}
+
+ @Override
+ public void clearConversations() {
+ if (recentsListAdapter != null) {
+ recentsListAdapter.clear();
+ }
+ }
+
@Override
public void setRecentAdapter(List conversationList) {
this.conversationList.addAll(conversationList);
@@ -159,7 +163,7 @@ public void setRecentAdapter(List conversationList) {
recentShimmer.setVisibility(View.GONE);
} else {
- if (this.conversationList != null) {
+ if (this.conversationList != null&&conversationList.size()!=0) {
recentsListAdapter.refreshData(conversationList);
}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Helper/CallNotificationAction.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Helper/CallNotificationAction.java
new file mode 100644
index 00000000..51eaf49d
--- /dev/null
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Helper/CallNotificationAction.java
@@ -0,0 +1,63 @@
+package com.inscripts.cometchatpulse.demo.Helper;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+import android.widget.Toast;
+
+import androidx.core.app.NotificationManagerCompat;
+
+import com.cometchat.pro.constants.CometChatConstants;
+import com.cometchat.pro.core.Call;
+import com.cometchat.pro.core.CometChat;
+import com.cometchat.pro.exceptions.CometChatException;
+import com.inscripts.cometchatpulse.demo.Activity.CallActivity;
+import com.inscripts.cometchatpulse.demo.Activity.IncomingCallActivity;
+import com.inscripts.cometchatpulse.demo.Contracts.StringContract;
+
+public class CallNotificationAction extends BroadcastReceiver {
+
+ String TAG = "CallNotificationAction";
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String sessionID = intent.getStringExtra(StringContract.IntentStrings.SESSION_ID);
+ Log.e(TAG, "onReceive: " + intent.getStringExtra(StringContract.IntentStrings.SESSION_ID));
+ if (intent.getAction().equals("Answers"))
+ {
+ CometChat.acceptCall(sessionID, new CometChat.CallbackListener() {
+ @Override
+ public void onSuccess(Call call) {
+ Intent acceptIntent = new Intent(context, CallActivity.class);
+ acceptIntent.putExtra(StringContract.IntentStrings.SESSION_ID,call.getSessionId());
+ acceptIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(acceptIntent);
+ NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
+ notificationManager.cancel(05);
+ }
+
+ @Override
+ public void onError(CometChatException e) {
+ Toast.makeText(context,"Error "+e.getMessage(),Toast.LENGTH_LONG).show();
+ NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
+ notificationManager.cancel(05);
+ }
+ });
+ }
+ else {
+ CometChat.rejectCall(sessionID, CometChatConstants.CALL_STATUS_REJECTED, new CometChat.CallbackListener() {
+ @Override
+ public void onSuccess(Call call) {
+ Log.e(TAG, "onSuccess: " + call.getCallStatus());
+ NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
+ notificationManager.cancel(05);
+ }
+
+ @Override
+ public void onError(CometChatException e) {
+ Log.e(TAG, "onError: " + e.getCode() + e.getDetails());
+ }
+ });
+ }
+ }
+}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Helper/MyFirebaseMessagingService.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Helper/MyFirebaseMessagingService.java
new file mode 100644
index 00000000..4af243b9
--- /dev/null
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Helper/MyFirebaseMessagingService.java
@@ -0,0 +1,175 @@
+package com.inscripts.cometchatpulse.demo.Helper;
+
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.media.RingtoneManager;
+import android.util.Log;
+
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
+
+import com.cometchat.pro.constants.CometChatConstants;
+import com.cometchat.pro.core.Call;
+import com.cometchat.pro.helpers.CometChatHelper;
+import com.cometchat.pro.models.BaseMessage;
+import com.cometchat.pro.models.Group;
+import com.google.firebase.messaging.FirebaseMessaging;
+import com.google.firebase.messaging.FirebaseMessagingService;
+import com.google.firebase.messaging.RemoteMessage;
+import com.inscripts.cometchatpulse.demo.Activity.GroupChatActivity;
+import com.inscripts.cometchatpulse.demo.Activity.OneToOneChatActivity;
+import com.inscripts.cometchatpulse.demo.Contracts.StringContract;
+import com.inscripts.cometchatpulse.demo.R;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.Date;
+
+
+
+public class MyFirebaseMessagingService extends FirebaseMessagingService {
+ private static final String TAG = "MyFirebaseService";
+ private JSONObject json;
+ private Intent intent;
+ private int count=0;
+ private Call call;
+ private static final int REQUEST_CODE = 12;
+
+ private boolean isCall;
+
+
+ public static void subscribeUser(String UID) {
+ FirebaseMessaging.getInstance().subscribeToTopic(StringContract.AppDetails.APP_ID + "_"+ CometChatConstants.RECEIVER_TYPE_USER +"_" +
+ UID);
+ }
+
+ public static void unsubscribeUser(String UID) {
+ FirebaseMessaging.getInstance().unsubscribeFromTopic(StringContract.AppDetails.APP_ID + "_"+ CometChatConstants.RECEIVER_TYPE_USER +"_" +
+ UID);
+ }
+
+ public static void subscribeGroup(String GUID) {
+ FirebaseMessaging.getInstance().subscribeToTopic(StringContract.AppDetails.APP_ID + "_"+ CometChatConstants.RECEIVER_TYPE_GROUP +"_" +
+ GUID);
+ }
+
+ public static void unsubscribeGroup(String GUID) {
+ FirebaseMessaging.getInstance().unsubscribeFromTopic(StringContract.AppDetails.APP_ID + "_"+ CometChatConstants.RECEIVER_TYPE_GROUP +"_" +
+ GUID);
+ }
+
+ @Override
+ public void onNewToken(String s) {
+ Log.d(TAG, "onNewToken: "+s);
+ }
+
+ @Override
+ public void onMessageReceived(RemoteMessage remoteMessage) {
+ try {
+ count++;
+ json = new JSONObject(remoteMessage.getData());
+ Log.d(TAG, "JSONObject: "+json.toString());
+ JSONObject messageData = new JSONObject(json.getString("message"));
+ BaseMessage baseMessage = CometChatHelper.processMessage(new JSONObject(remoteMessage.getData().get("message")));
+ if (baseMessage.getReceiverType().equals(CometChatConstants.RECEIVER_TYPE_USER))
+ {
+ intent = new Intent(getApplicationContext(), OneToOneChatActivity.class);
+ intent.putExtra(StringContract.IntentStrings.USER_ID,baseMessage.getSender().getUid());
+ intent.putExtra(StringContract.IntentStrings.AVATAR,baseMessage.getSender().getAvatar());
+ intent.putExtra(StringContract.IntentStrings.USER_NAME,baseMessage.getSender().getName());
+ }
+ else if (baseMessage.getReceiverType().equals(CometChatConstants.RECEIVER_TYPE_GROUP)){
+ intent = new Intent(getApplicationContext(), GroupChatActivity.class);
+ intent.putExtra(StringContract.IntentStrings.INTENT_GROUP_ID,baseMessage.getReceiverUid());
+ intent.putExtra(StringContract.IntentStrings.INTENT_GROUP_NAME,((Group)baseMessage.getReceiver()).getName());
+ }
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+ if (baseMessage instanceof Call){
+ call = (Call)baseMessage;
+ isCall=true;
+ }
+ showNotifcation(pendingIntent,baseMessage);
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public Bitmap getBitmapFromURL(String strURL) {
+ try {
+ URL url = new URL(strURL);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ connection.setDoInput(true);
+ connection.connect();
+ InputStream input = connection.getInputStream();
+ Bitmap myBitmap = BitmapFactory.decodeStream(input);
+ return myBitmap;
+ } catch (IOException e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ private void showNotifcation(PendingIntent pendingIntent,BaseMessage baseMessage) {
+
+ try {
+ int m = (int) ((new Date().getTime()));
+ String GROUP_ID = "group_id";
+
+ NotificationCompat.Builder builder = new NotificationCompat.Builder(this,"2")
+ .setSmallIcon(R.drawable.cc)
+ .setContentTitle(json.getString("title"))
+ .setContentText(json.getString("alert"))
+ .setPriority(Notification.PRIORITY_HIGH)
+ .setContentIntent(pendingIntent)
+ .setColor(getResources().getColor(R.color.primaryColor))
+ .setLargeIcon(getBitmapFromURL(baseMessage.getSender().getAvatar()))
+ .setGroup(GROUP_ID)
+ .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
+
+ NotificationCompat.Builder summaryBuilder = new NotificationCompat.Builder(this,"2")
+ .setContentTitle("CometChat")
+ .setContentText(count+" messages")
+ .setSmallIcon(R.drawable.cc)
+ .setGroup(GROUP_ID)
+ .setGroupSummary(true);
+ NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
+
+ if (isCall){
+ builder.setGroup(GROUP_ID+"Call");
+ if (json.getString("alert").equals("Incoming audio call") || json.getString("alert").equals("Incoming video call")) {
+ builder.setOngoing(true);
+ builder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE));
+ builder.addAction(0, "Answers", PendingIntent.getBroadcast(getApplicationContext(), REQUEST_CODE, getCallIntent("Answers"), PendingIntent.FLAG_UPDATE_CURRENT));
+ builder.addAction(0, "Decline", PendingIntent.getBroadcast(getApplicationContext(), 1, getCallIntent("Decline"), PendingIntent.FLAG_UPDATE_CURRENT));
+ }
+ notificationManager.notify(05,builder.build());
+ }
+ else {
+ notificationManager.notify(baseMessage.getId(), builder.build());
+ notificationManager.notify(0, summaryBuilder.build());
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ private Intent getCallIntent(String title){
+ Intent callIntent = new Intent(getApplicationContext(), CallNotificationAction.class);
+ callIntent.putExtra(StringContract.IntentStrings.SESSION_ID,call.getSessionId());
+ callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ callIntent.setAction(title);
+ return callIntent;
+ }
+
+}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Helper/OnTopReachedListener.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Helper/OnTopReachedListener.java
old mode 100644
new mode 100755
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/BannedMemberListPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/BannedMemberListPresenter.java
index afe8c9e3..498e79ba 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/BannedMemberListPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/BannedMemberListPresenter.java
@@ -38,11 +38,12 @@ public void initMemberList(String groupId, int limit, Context context) {
public void onSuccess(List groupMembers) {
if (groupMembers != null && groupMembers.size() != 0) {
Logger.error("OutcastMembersRequest", " " + groupMembers.size());
- if (isViewAttached())
+ if (isViewAttached()){
for (GroupMember groupMember :groupMembers) {
groupMemberHashMap.put(groupMember.getUid(),groupMember);
}
- getBaseView().setAdapter(groupMemberHashMap);
+ getBaseView().setAdapter(groupMemberHashMap);
+ }
}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/BlockedUserListActivityPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/BlockedUserListActivityPresenter.java
index 5e902d10..e07451db 100644
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/BlockedUserListActivityPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/BlockedUserListActivityPresenter.java
@@ -10,6 +10,7 @@
import com.cometchat.pro.models.User;
import com.inscripts.cometchatpulse.demo.Base.Presenter;
import com.inscripts.cometchatpulse.demo.Contracts.BlockedUserListActivityContract;
+import com.inscripts.cometchatpulse.demo.Contracts.StringContract;
import java.util.ArrayList;
import java.util.HashMap;
@@ -24,7 +25,8 @@ public class BlockedUserListActivityPresenter extends Presenter>() {
@Override
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/CometChatActivityPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/CometChatActivityPresenter.java
index 8e67d715..fff38477 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/CometChatActivityPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/CometChatActivityPresenter.java
@@ -17,6 +17,7 @@
import com.inscripts.cometchatpulse.demo.Base.Presenter;
import com.inscripts.cometchatpulse.demo.Contracts.CometChatActivityContract;
import com.inscripts.cometchatpulse.demo.Contracts.StringContract;
+import com.inscripts.cometchatpulse.demo.Helper.MyFirebaseMessagingService;
import com.inscripts.cometchatpulse.demo.Helper.PreferenceHelper;
import com.inscripts.cometchatpulse.demo.Utils.CommonUtils;
import com.cometchat.pro.constants.CometChatConstants;
@@ -141,6 +142,7 @@ public void logOut(Context context) {
CometChat.logout(new CometChat.CallbackListener() {
@Override
public void onSuccess(String s) {
+ Log.e(TAG, "onSuccess: "+s );
Intent intent=new Intent(context, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/ContactsListPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/ContactsListPresenter.java
index 3f06fa89..a7aae3b7 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/ContactsListPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/ContactsListPresenter.java
@@ -8,6 +8,7 @@
import com.inscripts.cometchatpulse.demo.Base.Presenter;
import com.inscripts.cometchatpulse.demo.CometApplication;
import com.inscripts.cometchatpulse.demo.Contracts.ContactsContract;
+import com.inscripts.cometchatpulse.demo.Helper.MyFirebaseMessagingService;
import com.inscripts.cometchatpulse.demo.Utils.Logger;
import com.cometchat.pro.core.CometChat;
import com.cometchat.pro.core.UsersRequest;
@@ -34,8 +35,8 @@ public void fetchUsers(Context context) {
if (usersRequest==null) {
-
- usersRequest = new UsersRequest.UsersRequestBuilder().setLimit(100).build();
+ usersRequest = new UsersRequest.UsersRequestBuilder().setLimit(100).build();
+ }
usersRequest.fetchNext(new CometChat.CallbackListener>() {
@Override
@@ -54,31 +55,6 @@ public void onError(CometChatException e) {
Timber.d("fetchNext onError: %s", e.getMessage());
}
});
- }
- else {
- usersRequest.fetchNext(new CometChat.CallbackListener>() {
- @Override
- public void onSuccess(List users) {
- if (users != null) {
- for (int i = 0; i < users.size(); i++) {
-
- Timber.d("fetchNext onSuccess: %s", users.toString());
-
- userHashMap.put(users.get(i).getUid(), users.get(i));
- }
- getBaseView().setContactAdapter(userHashMap);
- }
- }
-
- @Override
- public void onError(CometChatException e) {
- Timber.d("fetchNext old onError: ");
- Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
- }
-
- });
- }
-
}
@Override
@@ -86,13 +62,13 @@ public void addPresenceListener(String presenceListener) {
CometChat.addUserListener(presenceListener, new CometChat.UserListener() {
@Override
public void onUserOnline(User user) {
- Timber.d("onUserOnline: %s", user.toString());
+ Log.d("onUserOnline: %s", user.toString());
getBaseView().updatePresence(user);
}
@Override
public void onUserOffline(User user) {
- Timber.d("onUserOffline: %s", user.toString());
+ Log.d("onUserOffline: %s", user.toString());
getBaseView().updatePresence(user);
}
});
@@ -119,14 +95,14 @@ public void searchUser(String s) {
@Override
public void onSuccess(List users) {
for (User user:users){
- Timber.d("usersRequest onSuccess: %s", user.toString());
+ Log.d("usersRequest onSuccess:", user.toString());
hashMap.put(user.getUid(),user);
}
getBaseView().setFilterList(hashMap);
}
@Override
public void onError(CometChatException e) {
- Timber.d("onError: fetchNext %s", e.getMessage());
+ Log.d("onError: fetchNext %s", e.getMessage());
}
});
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/CreateGroupActivityPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/CreateGroupActivityPresenter.java
index c9342cb1..8cb1e8ee 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/CreateGroupActivityPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/CreateGroupActivityPresenter.java
@@ -9,6 +9,7 @@
import com.cometchat.pro.models.Group;
import com.inscripts.cometchatpulse.demo.Base.Presenter;
import com.inscripts.cometchatpulse.demo.Contracts.CreateGroupActivityContract;
+import com.inscripts.cometchatpulse.demo.Helper.MyFirebaseMessagingService;
import com.inscripts.cometchatpulse.demo.Utils.CommonUtils;
import org.json.JSONException;
@@ -27,6 +28,8 @@ public void createGroup(final Context context, Group group) {
@Override
public void onSuccess(Group group) {
+ MyFirebaseMessagingService.subscribeGroup(group.getGuid());
+
CommonUtils.startActivityIntent(group, context, true, null);
Toast.makeText(context, group.getGroupType() + " group created ", Toast.LENGTH_SHORT).show();
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/GroupChatPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/GroupChatPresenter.java
index 93687603..c22f6e7c 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/GroupChatPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/GroupChatPresenter.java
@@ -91,7 +91,7 @@ public void addMessageReceiveListener(String listenerId, final String groupId, f
CometChat.addMessageListener(listenerId, new CometChat.MessageListener() {
@Override
public void onTextMessageReceived(TextMessage message) {
- if (groupId != null && groupId.equals(message.getReceiverUid()) && !message.getSender().getUid().equals(ownerId)) {
+ if (groupId != null && groupId.equals(message.getReceiverUid())) {
CometChat.markAsRead(message.getId(), message.getReceiverUid(), message.getReceiverType());
MediaUtils.playSendSound(context, R.raw.receive);
getBaseView().addReceivedMessage(message);
@@ -100,7 +100,7 @@ public void onTextMessageReceived(TextMessage message) {
@Override
public void onMediaMessageReceived(MediaMessage message) {
- if (groupId != null && groupId.equals(message.getReceiverUid()) && !message.getSender().getUid().equals(ownerId)) {
+ if (groupId != null && groupId.equals(message.getReceiverUid()) ) {
CometChat.markAsRead(message.getId(), message.getReceiverUid(), message.getReceiverType());
@@ -111,39 +111,39 @@ public void onMediaMessageReceived(MediaMessage message) {
@Override
public void onTypingStarted(TypingIndicator typingIndicator) {
- if (typingIndicator.getReceiverType().equals(CometChatConstants.RECEIVER_TYPE_GROUP))
+ if (groupId != null && groupId.equals(typingIndicator.getReceiverId()))
getBaseView().typingStarted(typingIndicator);
}
@Override
public void onTypingEnded(TypingIndicator typingIndicator) {
- if (typingIndicator.getReceiverType().equals(CometChatConstants.RECEIVER_TYPE_GROUP))
+ if (groupId != null && groupId.equals(typingIndicator.getReceiverId()))
getBaseView().typingEnded(typingIndicator);
}
@Override
public void onMessagesDelivered(MessageReceipt messageReceipt) {
- if (messageReceipt.getReceivertype().equals(CometChatConstants.RECEIVER_TYPE_GROUP))
+ if (groupId != null && groupId.equals(messageReceipt.getReceiverId()))
getBaseView().setDeliveryReceipt(messageReceipt);
}
@Override
public void onMessagesRead(MessageReceipt messageReceipt) {
- if (messageReceipt.getReceivertype().equals(CometChatConstants.RECEIVER_TYPE_GROUP))
+ if (groupId != null && groupId.equals(messageReceipt.getReceiverId()))
getBaseView().onMessageRead(messageReceipt);
}
@Override
public void onMessageEdited(BaseMessage message) {
- if (message.getReceiverType().equals(CometChatConstants.RECEIVER_TYPE_GROUP))
+ if (groupId != null && groupId.equals(message.getReceiverUid()))
getBaseView().setEditedMessage(message);
}
@Override
public void onMessageDeleted(BaseMessage message) {
- if (message.getReceiverType().equals(CometChatConstants.RECEIVER_TYPE_GROUP))
+ if (groupId != null && groupId.equals(message.getReceiverUid()))
getBaseView().setDeletedMessage(message);
}
@@ -295,17 +295,17 @@ public void onIncomingCallReceived(Call call) {
@Override
public void onOutgoingCallAccepted(Call call) {
- Log.e(TAG, "onOutgoingCallAccepted: "+call.getCallStatus());
+
}
@Override
public void onOutgoingCallRejected(Call call) {
- Log.e(TAG, "onOutgoingCallRejected"+call.getCallStatus());
+
}
@Override
public void onIncomingCallCancelled(Call call) {
- Log.e(TAG, "onIncomingCallCancelled: "+call.getCallStatus());
+
}
});
@@ -377,7 +377,7 @@ public void onSuccess(List baseMessages) {
if (isViewAttached()) {
for (BaseMessage baseMessage : baseMessages) {
Log.d(TAG, "onSuccess: delete " + baseMessage.getDeletedAt());
- if (!baseMessage.getCategory().equals(CometChatConstants.CATEGORY_ACTION) && baseMessage.getDeletedAt() == 0) {
+ if (baseMessage.getDeletedAt() == 0) {
list.add(baseMessage);
}
}
@@ -413,16 +413,15 @@ public void onSuccess(List baseMessages) {
for (BaseMessage baseMessage : baseMessages) {
Log.d(TAG, "onSuccess: fetchPrevious" + baseMessage.toString());
Logger.error("groupMessage" + baseMessage.getId());
-
if (baseMessage.getDeletedAt() == 0) {
list.add(baseMessage);
}
+ if (!baseMessage.getSender().getUid().equals(CometChat.getLoggedInUser().getUid())){
+ CometChat.markAsRead(baseMessage.getId(), baseMessage.getReceiverUid(), baseMessage.getReceiverType());
+ }
}
- if (baseMessages.size() != 0) {
- BaseMessage baseMessage = baseMessages.get(baseMessages.size() - 1);
- CometChat.markAsRead(baseMessage.getId(), baseMessage.getReceiverUid(), baseMessage.getReceiverType());
- }
- getBaseView().setAdapter(baseMessages);
+
+ getBaseView().setAdapter(list);
}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/GroupListPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/GroupListPresenter.java
index fa5dd195..3f5aa4ba 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/GroupListPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/GroupListPresenter.java
@@ -34,9 +34,7 @@ public class GroupListPresenter extends Presenter i
public void initGroupView() {
if (groupsRequest == null) {
-
groupsRequest = new GroupsRequest.GroupsRequestBuilder().setLimit(50).build();
-
}
setGroupsRequest(groupsRequest);
}
@@ -83,7 +81,11 @@ public void onSuccess(Group group) {
@Override
public void onError(CometChatException e) {
Log.d("joinGroup", "onError: " + e.getMessage());
- progressDialog.dismiss();
+ if (e.getCode().equals("ERR_ALREADY_JOINED")){
+ if (isViewAttached())
+ getBaseView().groupjoinCallback(group);
+ }
+ progressDialog.dismiss();
Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/IncomingCallActivityPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/IncomingCallActivityPresenter.java
index e8b198a4..88688ed5 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/IncomingCallActivityPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/IncomingCallActivityPresenter.java
@@ -5,7 +5,6 @@
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.hardware.Camera;
-import android.util.Log;
import android.widget.ImageView;
import android.widget.RelativeLayout;
@@ -102,7 +101,7 @@ public void onSuccess(Call call) {
@Override
public void onError(CometChatException e) {
- Log.e( "onError: ",e.getMessage() );
+
}
});
@@ -139,7 +138,6 @@ public void onOutgoingCallAccepted(Call call) {
@Override
public void onOutgoingCallRejected(Call call) {
- Log.e( "onOutgoingCallRejected",call.getCallStatus() );
((IncomingCallActivity) context).finish();
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/MessageInfoActivityPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/MessageInfoActivityPresenter.java
index dd2d3d69..1bcf1425 100644
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/MessageInfoActivityPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/MessageInfoActivityPresenter.java
@@ -2,7 +2,6 @@
import android.content.Context;
import android.content.Intent;
-import android.util.Log;
import com.cometchat.pro.constants.CometChatConstants;
import com.cometchat.pro.core.CometChat;
@@ -11,7 +10,6 @@
import com.inscripts.cometchatpulse.demo.Base.Presenter;
import com.inscripts.cometchatpulse.demo.Contracts.MessageInfoActivityContract;
-import java.util.HashMap;
import java.util.List;
public class MessageInfoActivityPresenter extends Presenter
@@ -43,15 +41,10 @@ public void getIntent(Context context,Intent intent) {
}
if (intent.hasExtra("id")){
- getBaseView().setMessageId(intent.getIntExtra("id",0));
CometChat.getMessageReceipts(intent.getIntExtra("id", 0), new CometChat.CallbackListener>() {
@Override
public void onSuccess(List messageReceipts) {
- HashMap recieptMap = new HashMap();
- for (MessageReceipt messageReceipt : messageReceipts) {
- recieptMap.put(messageReceipt.getSender().getUid(),messageReceipt);
- }
- getBaseView().setReceiptsAdapter(recieptMap);
+ getBaseView().setReceiptsAdapter(messageReceipts);
}
@Override
@@ -61,34 +54,4 @@ public void onError(CometChatException e) {
});
}
}
-
- @Override
- public void addmessagelistener(String tag,int id) {
- CometChat.addMessageListener(tag, new CometChat.MessageListener() {
- @Override
- public void onMessagesDelivered(MessageReceipt messageReceipt) {
- if (messageReceipt.getMessageId()==id)
- {
- Log.e( "onMessagesDelivered: ",messageReceipt.toString());
- getBaseView().updateReciept(messageReceipt);
- }
- super.onMessagesDelivered(messageReceipt);
- }
-
- @Override
- public void onMessagesRead(MessageReceipt messageReceipt) {
- if (messageReceipt.getMessageId()==id)
- {
- Log.e( "onMessagesRead: ",messageReceipt.toString() );
- getBaseView().updateReciept(messageReceipt);
- }
- super.onMessagesRead(messageReceipt);
- }
- });
- }
-
- @Override
- public void removemessagelistener(String tag) {
-
- }
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/OneToOneActivityPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/OneToOneActivityPresenter.java
index 2b29cead..e835be39 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/OneToOneActivityPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/OneToOneActivityPresenter.java
@@ -253,39 +253,41 @@ public void onError(CometChatException e) {
@Override
public void fetchPreviousMessage(String contactUid, int limit) {
- Log.e(TAG, "Fetch Previous called");
+
List list=new ArrayList<>();
if (messagesRequest == null) {
messagesRequest = new MessagesRequest.MessagesRequestBuilder().setUID(contactUid).setLimit(limit).build();
-
}
- messagesRequest.fetchPrevious(new CometChat.CallbackListener>() {
- @Override
- public void onSuccess(List baseMessages) {
- Logger.error("old message request obj");
- if (baseMessages.size() != 0) {
+
+ messagesRequest.fetchPrevious(new CometChat.CallbackListener>() {
+ @Override
+ public void onSuccess(List baseMessages) {
if (isViewAttached()) {
for (BaseMessage baseMessage : baseMessages) {
+
+ Log.d(TAG, "fetchPreviousMessage onSuccess: delete "+baseMessage.getDeletedAt());
+
+ Log.d(TAG, "fetchPreviousMessage onSuccess: "+baseMessage.toString());
if (!baseMessage.getCategory().equals(CometChatConstants.CATEGORY_ACTION)&&baseMessage.getDeletedAt()==0) {
+
list.add(baseMessage);
}
- }
- if (baseMessages.size()!=0) {
- BaseMessage baseMessage = baseMessages.get(baseMessages.size() - 1);
- if (!baseMessage.getSender().getUid().equals(CometChat.getLoggedInUser().getUid())) {
- CometChat.markAsRead(baseMessage.getId(), baseMessage.getSender().getUid(), baseMessage.getReceiverType());
- }
+ if (baseMessage.getSender().getUid().equals(contactUid)){
+ CometChat.markAsRead(baseMessage.getId(), baseMessage.getSender().getUid(), baseMessage.getReceiverType());
+ }
}
getBaseView().setAdapter(list);
}
}
- }
- @Override
- public void onError(CometChatException e) {
- showToast(e.getMessage());
+
+ @Override
+ public void onError(CometChatException e) {
+ Log.d(TAG, "fetchPreviousMessage onError: "+e.getMessage());
+ showToast(e.getMessage());
}
- });
+
+ });
}
@Override
@@ -475,7 +477,7 @@ public void searchMessage(String s,String UID) {
messagesRequest=null;
MessagesRequest searchMessageRequest=new MessagesRequest.MessagesRequestBuilder()
- .setUID(UID).setSearchKeyword(s).setLimit(30).build();
+ .setUID(UID).setSearchKeyword(s).setCategory(CometChatConstants.CATEGORY_MESSAGE).setLimit(30).build();
searchMessageRequest.fetchPrevious(new CometChat.CallbackListener>() {
@Override
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/RecentsListPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/RecentsListPresenter.java
index 0f9d4b5f..d3614b3b 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/RecentsListPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/RecentsListPresenter.java
@@ -35,12 +35,14 @@ public class RecentsListPresenter extends Presenter
private ConversationsRequest conversationRequest;
- private static final String TAG = "ContactsListPresenter";
+ private static final String TAG = "RecentsListPresenter";
@Override
public void fetchConversations(Context context) {
- conversationRequest = new ConversationsRequest.ConversationsRequestBuilder().setLimit(100).build();
+ if (conversationRequest==null) {
+ conversationRequest = new ConversationsRequest.ConversationsRequestBuilder().setLimit(30).build();
+ }
conversationRequest.fetchNext(new CometChat.CallbackListener>() {
@Override
public void onSuccess(List conversations) {
@@ -61,7 +63,7 @@ public void addMessageListener(String messageListener) {
CometChat.addMessageListener(messageListener, new CometChat.MessageListener() {
@Override
public void onTextMessageReceived(TextMessage message) {
- getBaseView().refreshConversation(message);
+ getBaseView().refreshConversation(message);
}
@@ -84,44 +86,15 @@ public void removeMessageListener(String messageListener) {
}
-// @Override
-// public void searchConversation(String s) {
-//
-// ConversationsRequest conversationsRequest= new ConversationsRequest.ConversationsRequestBuilder().setLimit(100).build();
-// List hashMap = new ArrayList<>();
-// conversationsRequest.fetchNext(new CometChat.CallbackListener>() {
-// @Override
-// public void onSuccess(List conversations) {
-// for (Conversation conversation :conversations) {
-// if (s!=null) {
-// if (conversation.getConversationId().contains(s)) {
-// hashMap.add(conversation);
-// } else {
-// if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER) && ((User) conversation.getConversationWith()).getName().toLowerCase().contains(s)) {
-// Log.e(TAG, "onSuccess: " + s + "=" + ((User) conversation.getConversationWith()).getName().toLowerCase());
-// hashMap.add(conversation);
-// } else if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_GROUP) && ((Group) conversation.getConversationWith()).getName().toLowerCase().contains(s)) {
-// Log.e(TAG, "Group: " + ((Group) conversation.getConversationWith()).getName().toLowerCase() + "=" + s);
-// hashMap.add(conversation);
-// }
-// }
-// }
-// else
-// {
-// hashMap.add(conversation);
-// }
-// }
-// getBaseView().setFilterList(hashMap);
-// }
-// @Override
-// public void onError(CometChatException e) {
-// Timber.d("onError: fetchNext %s", e.getMessage());
-// }
-// });
-// }
-
@Override
public void updateConversation() {
}
-}
+
+ @Override
+ public void refreshConversations(Context context) {
+ conversationRequest=null;
+ getBaseView().clearConversations();
+ fetchConversations(context);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/UserProfileViewPresenter.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/UserProfileViewPresenter.java
index 84d5005d..a8e3bc74 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/UserProfileViewPresenter.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Presenters/UserProfileViewPresenter.java
@@ -29,9 +29,9 @@ public class UserProfileViewPresenter extends Presenter messageList=new ArrayList<>();
+ private List messageList = new ArrayList<>();
@Override
public void handleIntent(Intent data) {
@@ -90,11 +90,11 @@ public void removeUserPresenceListener(String presenceListener) {
@Override
public void sendCallRequest(Context context, String contactUid, String receiverType, String callTyp) {
- Call call=new Call(contactUid,receiverType,callTyp);
+ Call call = new Call(contactUid, receiverType, callTyp);
CometChat.initiateCall(call, new CometChat.CallbackListener() {
@Override
public void onSuccess(Call call) {
- CommonUtils.startCallIntent(context,((User) call.getCallReceiver()),call.getType(),true,call.getSessionId());
+ CommonUtils.startCallIntent(context, ((User) call.getCallReceiver()), call.getType(), true, call.getSessionId());
}
@Override
@@ -105,57 +105,24 @@ public void onError(CometChatException e) {
}
@Override
- public void getMediaMessage(String contactUid,int limit) {
-
- if (messagesRequest==null)
- {
- messagesRequest=new MessagesRequest.MessagesRequestBuilder().setUID(contactUid).setLimit(limit).build();
-
- messagesRequest.fetchPrevious(new CometChat.CallbackListener>() {
- @Override
- public void onSuccess(List baseMessages) {
-
- for (BaseMessage message:baseMessages){
-
- if (message instanceof MediaMessage){
- if (message.getType().equals(CometChatConstants.MESSAGE_TYPE_IMAGE)) {
- messageList.add((MediaMessage) message);
- }
- }
- }
- if (isViewAttached()) {
- getBaseView().setAdapter(messageList);
- }
- }
-
- @Override
- public void onError(CometChatException e) {
-
- }
- });
- }
- else {
- messagesRequest.fetchPrevious(new CometChat.CallbackListener>() {
- @Override
- public void onSuccess(List baseMessages) {
+ public void getMediaMessage(String contactUid, int limit) {
- for (BaseMessage message:baseMessages){
+ if (messagesRequest == null) {
+ messagesRequest = new MessagesRequest.MessagesRequestBuilder().setUID(contactUid)
+ .setCategory(CometChatConstants.CATEGORY_MESSAGE).setType(CometChatConstants.MESSAGE_TYPE_IMAGE).setLimit(limit).build();
+ }
- if (message instanceof MediaMessage){
- if (message.getType().equals(CometChatConstants.MESSAGE_TYPE_IMAGE)) {
- messageList.add((MediaMessage) message);
- }
- }
- }
+ messagesRequest.fetchPrevious(new CometChat.CallbackListener>() {
+ @Override
+ public void onSuccess(List baseMessages) {
+ getBaseView().setAdapter(messageList);
- getBaseView().setAdapter(messageList);
- }
+ }
- @Override
- public void onError(CometChatException e) {
+ @Override
+ public void onError(CometChatException e) {
- }
- });
- }
+ }
+ });
}
}
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/CommonUtils.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/CommonUtils.java
index 6373e5bf..d7f563cd 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/CommonUtils.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/CommonUtils.java
@@ -15,6 +15,7 @@
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.util.DisplayMetrics;
+import android.util.Log;
import android.view.View;
import com.cometchat.pro.models.Group;
import com.cometchat.pro.models.User;
@@ -24,9 +25,14 @@
import com.inscripts.cometchatpulse.demo.Activity.GroupChatActivity;
import com.inscripts.cometchatpulse.demo.Contracts.StringContract;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
public class CommonUtils {
static ConnectivityManager cm = null;
+ private static final String TAG = "CommonUtils";
public static boolean isConnected(Context context) {
@@ -38,6 +44,32 @@ public static boolean isConnected(Context context) {
return null != var0 && var0.isConnectedOrConnecting();
}
+ public static String getRandomElement() {
+ List list=new ArrayList<>();
+ list.add("superhero1");
+ list.add("superhero2");
+ list.add("superhero3");
+ list.add("superhero4");
+ list.add("superhero5");
+ list.add("testuser128");
+ list.add("testuser12");
+ list.add("testuser13");
+ list.add("testuser11");
+ list.add("testuser15");
+ list.add("testuser25");
+ list.add("testuser26");
+ list.add("testuser28");
+ list.add("testuser27");
+ list.add("testuser30");
+ list.add("testuser31");
+ list.add("testuser33");
+
+ Random rand = new Random();
+ String s=list.get(rand.nextInt(list.size()));
+ Log.d(TAG, "getRandomElement: "+s);
+ return s;
+ }
+
public static void startCallIntent(Context context, User user, String type,
boolean isOutgoing, @NonNull String sessionId) {
Intent videoCallIntent = new Intent(context, IncomingCallActivity.class);
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/DateUtils.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/DateUtils.java
index 47a8d664..ad92514a 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/DateUtils.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/DateUtils.java
@@ -2,6 +2,7 @@
import android.content.Context;
import android.text.format.DateFormat;
+import android.util.Log;
import com.inscripts.cometchatpulse.demo.R;
@@ -29,7 +30,29 @@ public static String getMessageTime(String time, String dateFormat) {
String str = format.format(timestamp);
return str;
}
+ public static String getLastMessageDate(long timestamp) {
+ String lastMessageTime = new SimpleDateFormat("hh:mm a").format(new java.util.Date(timestamp*1000));
+ String lastMessageDate = new SimpleDateFormat("dd/MM/yyyy").format(new java.util.Date(timestamp*1000));
+ String lastMessageWeek = new SimpleDateFormat("EEE").format(new java.util.Date(timestamp*1000));
+ long currentTimeStamp = System.currentTimeMillis();
+
+ long diffTimeStamp = currentTimeStamp - timestamp*1000;
+
+ if (diffTimeStamp < 24 * 60 * 60 * 1000) {
+ return lastMessageTime;
+
+ } else if (diffTimeStamp < 48 * 60 * 60 * 1000) {
+ return "Yesterday";
+ } else if (diffTimeStamp < 7 * 24 * 60 * 60 * 1000)
+ {
+ return lastMessageWeek;
+ }
+ else {
+ return lastMessageDate;
+ }
+
+ }
public static String convertTimeStampToDurationTime(long var0) {
long var2 = var0 / 1000L;
long var4 = var2 / 60L % 60L;
diff --git a/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/FontUtils.java b/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/FontUtils.java
index 628bac0f..7961319f 100755
--- a/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/FontUtils.java
+++ b/app/src/main/java/com/inscripts/cometchatpulse/demo/Utils/FontUtils.java
@@ -24,10 +24,11 @@ public FontUtils(Context context) {
private void initFonts() {
-
- robotoMedium=Typeface.createFromAsset(context.getAssets(),"Roboto-Medium.ttf");
- robotoRegular=Typeface.createFromAsset(context.getAssets(),"Roboto-Regular.ttf");
- openSansRegular =Typeface.createFromAsset(context.getAssets(),"OpenSans-Regular.ttf");
- robotoCondenseRegular=Typeface.createFromAsset(context.getAssets(),"RobotoCondensed-Regular.ttf");
+ if (context!=null) {
+ robotoMedium = Typeface.createFromAsset(context.getAssets(), "Roboto-Medium.ttf");
+ robotoRegular = Typeface.createFromAsset(context.getAssets(), "Roboto-Regular.ttf");
+ openSansRegular = Typeface.createFromAsset(context.getAssets(), "OpenSans-Regular.ttf");
+ robotoCondenseRegular = Typeface.createFromAsset(context.getAssets(), "RobotoCondensed-Regular.ttf");
+ }
}
}
diff --git a/app/src/main/res/layout/activity_one_to_one_chat.xml b/app/src/main/res/layout/activity_one_to_one_chat.xml
index b477037e..7686d6ca 100755
--- a/app/src/main/res/layout/activity_one_to_one_chat.xml
+++ b/app/src/main/res/layout/activity_one_to_one_chat.xml
@@ -100,7 +100,6 @@
android:divider="@null"
android:dividerHeight="0dp"
android:paddingBottom="2dp"
- android:overScrollMode="never"
android:scrollbars="vertical" />
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/recent_list_item.xml b/app/src/main/res/layout/recent_list_item.xml
index 61c498eb..166756d7 100755
--- a/app/src/main/res/layout/recent_list_item.xml
+++ b/app/src/main/res/layout/recent_list_item.xml
@@ -91,7 +91,7 @@
android:id="@+id/textviewSingleChatUnreadCount"
android:layout_width="26dp"
android:layout_height="26dp"
- android:layout_centerVertical="true"
+ android:layout_below="@+id/textviewSingleChatTime"
android:layout_marginEnd="20dp"
android:layout_marginRight="20dp"
android:background="@drawable/cc_circular_background"
@@ -100,9 +100,21 @@
android:padding="1dp"
android:singleLine="true"
android:text="@string/unread_count"
+ android:visibility="invisible"
android:textColor="#FFF"
- android:textSize="12sp"
- android:visibility="invisible" />
+ android:textSize="12sp"/>
+
+
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index bff21470..5613e698 100755
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -80,6 +80,7 @@
Typing..
is Typing...
Add Members
+ channel
- Select Type
- public
diff --git a/settings.gradle b/settings.gradle
index ec250fca..a21eefc1 100755
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1 @@
-include ':app', ':pro-android-chat-sdk'
\ No newline at end of file
+include ':app', ':pro-android-chat-sdk', ':pro-android-chat-sdk (1)'
\ No newline at end of file