Skip to content
Merged

V2 #20

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 15 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
</br>
</div>

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.**

[![Platform](https://img.shields.io/badge/Platform-Android-brightgreen.svg)](#) [![Platform](https://img.shields.io/badge/Language-Java-yellowgreen.svg)](#)

Expand Down Expand Up @@ -81,40 +81,48 @@ 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




![Studio Guide](https://github.com/CometChat-Pulse/android-java-chat-app/blob/master/ScreenShots/guide.png)


## 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.






## Screenshots

<img align="left" width="185" height="331" src="https://github.com/CometChat-Pulse/android-java-chat-app/blob/master/ScreenShots/gif1.gif">
<img align="left" width="185" height="331" src="https://github.com/CometChat-Pulse/android-java-chat-app/blob/master/ScreenShots/gif_1.gif">


<img align="left" width="185" height="331" src="https://github.com/CometChat-Pulse/android-java-chat-app/blob/master/ScreenShots/gif2.gif">
<img align="left" width="185" height="331" src="https://github.com/CometChat-Pulse/android-java-chat-app/blob/master/ScreenShots/gif_2.gif">


<img align="left" width="185" height="331" src="https://github.com/CometChat-Pulse/android-java-chat-app/blob/master/ScreenShots/gif3.gif">
<img align="left" width="185" height="331" src="https://github.com/CometChat-Pulse/android-java-chat-app/blob/CP-31/ScreenShots/gif_3.gif">



<img align="left" width="185" height="331" src="https://github.com/CometChat-Pulse/android-java-chat-app/blob/master/ScreenShots/gif4.gif">
<img align="left" width="185" height="331" src="https://github.com/CometChat-Pulse/android-java-chat-app/blob/CP-31/ScreenShots/gif_4.gif">

` `<br></br><br></br><br></br><br></br><br></br><br></br><br></br><br></br></br>

Expand Down
Binary file added ScreenShots/gif_1.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ScreenShots/gif_2.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ScreenShots/gif_3.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added ScreenShots/gif_4.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 10 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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 {
Expand Down Expand Up @@ -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() {
Expand Down Expand Up @@ -121,13 +129,10 @@ public void onPageSelected(int i) {
adapter.notifyDataSetChanged();
pageNumber=i;
if (i==0)
{
searchItem.setVisible(false);
}
else
{
searchItem.setVisible(true);
}

}

@Override
Expand All @@ -136,12 +141,12 @@ public void onPageScrollStateChanged(int i) {
}
});


}

@Override
protected void onStart() {
super.onStart();

}

@Override
Expand All @@ -155,7 +160,6 @@ protected void onResume() {
cometChatActivityPresenter.addCallEventListener(context, TAG);
Log.d(TAG, "onResume: ");
cometChatActivityPresenter.addMessageListener(CometChatActivity.this,TAG);

}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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";

Expand Down Expand Up @@ -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);
Expand All @@ -169,6 +172,7 @@ protected void onCreate(Bundle savedInstanceState) {
groupChatPresenter = new GroupChatPresenter();
groupChatPresenter.attach(this);
initViewComponent();
MyFirebaseMessagingService.subscribeGroup(groupId);

}

Expand Down Expand Up @@ -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 -> {
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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;
});
Expand Down Expand Up @@ -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");
Expand Down Expand Up @@ -668,6 +676,7 @@ public void setAdapter(List<BaseMessage> messageList) {
}
if (groupMessageAdapter == null) {
groupMessageAdapter = new GroupMessageAdapter(messageList, context, groupId, ownerId);

messageRecyclerView.setAdapter(groupMessageAdapter);
decor = new StickyHeaderDecoration(groupMessageAdapter);
messageRecyclerView.addItemDecoration(decor, 0);
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -991,4 +1000,4 @@ private void addAttachment(int type) {

}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -92,6 +94,6 @@ private List<Option> getSampleUserList(){
public void startCometChatActivity() {

startActivity(new Intent(LoginActivity.this, CometChatActivity.class));
finish();
finish();
}
}
Loading