use of com.cometchat.pro.models.Group in project android-java-chat-push-notification-app by cometchat-pro.
the class CometChatConversationsAdapter method getFilter.
/**
* It is used to perform search operation in filterConversationList. It will check
* whether searchKeyword is similar to username or group name and modify filterConversationList
* accordingly. In case if searchKeyword is empty it will set filterConversationList = conversationList
*
* @return
*/
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String searchKeyword = charSequence.toString();
if (searchKeyword.isEmpty()) {
filterConversationList = conversationList;
} else {
List<Conversation> tempFilter = new ArrayList<>();
for (Conversation conversation : filterConversationList) {
if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER) && ((User) conversation.getConversationWith()).getName().toLowerCase().contains(searchKeyword)) {
tempFilter.add(conversation);
} else if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_GROUP) && ((Group) conversation.getConversationWith()).getName().toLowerCase().contains(searchKeyword)) {
tempFilter.add(conversation);
} else if (conversation.getLastMessage() != null && conversation.getLastMessage().getCategory().equals(CometChatConstants.CATEGORY_MESSAGE) && conversation.getLastMessage().getType().equals(CometChatConstants.MESSAGE_TYPE_TEXT) && ((TextMessage) conversation.getLastMessage()).getText() != null && ((TextMessage) conversation.getLastMessage()).getText().contains(searchKeyword)) {
tempFilter.add(conversation);
}
}
filterConversationList = tempFilter;
}
FilterResults filterResults = new FilterResults();
filterResults.values = filterConversationList;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
filterConversationList = (List<Conversation>) filterResults.values;
notifyDataSetChanged();
}
};
}
use of com.cometchat.pro.models.Group in project android-java-chat-push-notification-app by cometchat-pro.
the class CallManager method startIncomingCall.
@RequiresApi(api = Build.VERSION_CODES.M)
public void startIncomingCall(Call call) {
if (context.checkSelfPermission(Manifest.permission.MANAGE_OWN_CALLS) == PackageManager.PERMISSION_GRANTED) {
Bundle extras = new Bundle();
Uri uri = Uri.fromParts(PhoneAccount.SCHEME_TEL, call.getSessionId().substring(0, 11), null);
extras.putString(UIKitConstants.IntentStrings.SESSION_ID, call.getSessionId());
extras.putString(UIKitConstants.IntentStrings.TYPE, call.getReceiverType());
extras.putString(UIKitConstants.IntentStrings.CALL_TYPE, call.getType());
extras.putString(UIKitConstants.IntentStrings.ID, call.getReceiverUid());
if (call.getReceiverType().equalsIgnoreCase(CometChatConstants.RECEIVER_TYPE_GROUP))
extras.putString(UIKitConstants.IntentStrings.NAME, ((Group) call.getReceiver()).getName());
else
extras.putString(UIKitConstants.IntentStrings.NAME, ((User) call.getCallInitiator()).getName());
if (call.getType().equalsIgnoreCase(CometChatConstants.CALL_TYPE_VIDEO))
extras.putInt(TelecomManager.EXTRA_INCOMING_VIDEO_STATE, VideoProfile.STATE_BIDIRECTIONAL);
else
extras.putInt(TelecomManager.EXTRA_INCOMING_VIDEO_STATE, VideoProfile.STATE_AUDIO_ONLY);
extras.putParcelable(TelecomManager.EXTRA_INCOMING_CALL_ADDRESS, uri);
extras.putParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle);
extras.putBoolean(TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE, true);
boolean isCallPermitted = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
isCallPermitted = telecomManager.isIncomingCallPermitted(phoneAccountHandle);
} else {
isCallPermitted = true;
}
Log.e("CallManager", "is incoming call permited = " + isCallPermitted + "\n" + phoneAccountHandle.toString());
try {
telecomManager.addNewIncomingCall(phoneAccountHandle, extras);
} catch (SecurityException e) {
e.printStackTrace();
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, "2").setSmallIcon(R.drawable.cc).setContentTitle(((User) call.getCallInitiator()).getName()).setContentText(call.getCallStatus().toUpperCase() + " " + call.getType().toUpperCase() + " " + context.getString(R.string.call)).setColor(context.getColor(R.color.colorPrimary)).setGroup("group_id").setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
builder.setPriority(NotificationCompat.PRIORITY_HIGH);
builder.setCategory(NotificationCompat.CATEGORY_CALL);
builder.addAction(0, "Answers", PendingIntent.getBroadcast(context.getApplicationContext(), 0, getCallIntent("Answer_", call), PendingIntent.FLAG_UPDATE_CURRENT));
builder.addAction(0, "Decline", PendingIntent.getBroadcast(context.getApplicationContext(), 1, getCallIntent("Decline_", call), PendingIntent.FLAG_UPDATE_CURRENT));
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
notificationManager.notify(UIKitConstants.Notification.ID, builder.build());
} catch (Exception e) {
Log.e("CallManagerError: ", e.getMessage());
}
}
}
use of com.cometchat.pro.models.Group in project android-java-chat-push-notification-app by cometchat-pro.
the class CometChatForwardMessageActivity method init.
/**
* This method is used to initialize the views
*/
public void init() {
// Inflate the layout
MaterialToolbar toolbar = findViewById(R.id.forward_toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
if (Utils.changeToolbarFont(toolbar) != null) {
Utils.changeToolbarFont(toolbar).setTypeface(fontUtils.getTypeFace(FontUtils.robotoMedium));
}
selectedUsers = findViewById(R.id.selected_user);
forwardBtn = findViewById(R.id.btn_forward);
rvConversationList = findViewById(R.id.rv_conversation_list);
etSearch = findViewById(R.id.search_bar);
clearSearch = findViewById(R.id.clear_search);
etSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if (charSequence.length() > 1)
clearSearch.setVisibility(View.VISIBLE);
}
@Override
public void afterTextChanged(Editable editable) {
if (editable.toString().length() != 0) {
if (conversationListAdapter != null)
conversationListAdapter.getFilter().filter(editable.toString());
}
}
});
etSearch.setOnEditorActionListener((textView, i, keyEvent) -> {
if (i == EditorInfo.IME_ACTION_SEARCH) {
if (conversationListAdapter != null)
conversationListAdapter.getFilter().filter(textView.getText().toString());
clearSearch.setVisibility(View.VISIBLE);
return true;
}
return false;
});
clearSearch.setOnClickListener(view1 -> {
etSearch.setText("");
clearSearch.setVisibility(View.GONE);
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
// Hide the soft keyboard
inputMethodManager.hideSoftInputFromWindow(etSearch.getWindowToken(), 0);
});
rvConversationList.setItemClickListener(new OnItemClickListener<Conversation>() {
@Override
public void OnItemClick(Conversation conversation, int position) {
if (userList != null && userList.size() < 5) {
if (!userList.containsKey(conversation.getConversationId())) {
userList.put(conversation.getConversationId(), conversation);
Chip chip = new Chip(CometChatForwardMessageActivity.this);
if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
name = ((User) conversation.getConversationWith()).getName();
avatar = ((User) conversation.getConversationWith()).getAvatar();
} else {
name = ((Group) conversation.getConversationWith()).getName();
avatar = ((Group) conversation.getConversationWith()).getIcon();
}
chip.setText(name);
Glide.with(CometChatForwardMessageActivity.this).load(avatar).placeholder(R.drawable.ic_contacts).transform(new CircleCrop()).into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
chip.setChipIcon(resource);
}
});
chip.setCloseIconVisible(true);
chip.setOnCloseIconClickListener(new View.OnClickListener() {
@Override
public void onClick(View vw) {
userList.remove(conversation.getConversationId());
selectedUsers.removeView(vw);
checkUserList();
}
});
selectedUsers.addView(chip, 0);
}
checkUserList();
} else {
CometChatSnackBar.show(CometChatForwardMessageActivity.this, selectedUsers, getString(R.string.forward_to_5_at_a_time), CometChatSnackBar.WARNING);
}
}
});
// It sends message to selected users present in userList using thread. So UI thread doesn't get heavy.
forwardBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (messageCategory.equals(CometChatConstants.CATEGORY_MESSAGE)) {
if (messageType != null && messageType.equals(CometChatConstants.MESSAGE_TYPE_TEXT)) {
new Thread(() -> {
for (int i = 0; i <= userList.size() - 1; i++) {
Conversation conversation = new ArrayList<>(userList.values()).get(i);
TextMessage message;
String uid;
String type;
Log.e(TAG, "run: " + conversation.getConversationId());
if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
uid = ((User) conversation.getConversationWith()).getUid();
type = CometChatConstants.RECEIVER_TYPE_USER;
} else {
uid = ((Group) conversation.getConversationWith()).getGuid();
type = CometChatConstants.RECEIVER_TYPE_GROUP;
}
message = new TextMessage(uid, textMessage, type);
sendMessage(message);
if (i == userList.size() - 1) {
Intent intent = new Intent(CometChatForwardMessageActivity.this, CometChatUI.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
}
}).start();
} else if (messageType != null && (messageType.equals(CometChatConstants.MESSAGE_TYPE_IMAGE) || messageType.equals(CometChatConstants.MESSAGE_TYPE_AUDIO) || messageType.equals(CometChatConstants.MESSAGE_TYPE_FILE) || messageType.equals(CometChatConstants.MESSAGE_TYPE_VIDEO))) {
new Thread(() -> {
for (int i = 0; i <= userList.size() - 1; i++) {
Conversation conversation = new ArrayList<>(userList.values()).get(i);
MediaMessage message;
String uid;
String type;
Log.e(TAG, "run: " + conversation.getConversationId());
if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
uid = ((User) conversation.getConversationWith()).getUid();
type = CometChatConstants.RECEIVER_TYPE_USER;
} else {
uid = ((Group) conversation.getConversationWith()).getGuid();
type = CometChatConstants.RECEIVER_TYPE_GROUP;
}
message = new MediaMessage(uid, null, messageType, type);
Attachment attachment = new Attachment();
attachment.setFileUrl(mediaMessageUrl);
attachment.setFileMimeType(mediaMessageMime);
attachment.setFileSize(mediaMessageSize);
attachment.setFileExtension(mediaMessageExtension);
attachment.setFileName(mediaMessageName);
message.setAttachment(attachment);
Log.e(TAG, "onClick: " + attachment.toString());
sendMediaMessage(message, i);
// if (i == userList.size() - 1) {
// Intent intent = new Intent(CometChatForwardMessageActivity.this, CometChatUI.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
// startActivity(intent);
// finish();
// }
}
}).start();
} else if (messageType != null && (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_IMAGE_MESSAGE) || messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_VIDEO_MESSAGE) || messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_AUDIO_MESSAGE) || messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_FILE_MESSAGE))) {
new Thread(() -> {
for (int i = 0; i <= userList.size() - 1; i++) {
Conversation conversation = new ArrayList<>(userList.values()).get(i);
MediaMessage message = null;
String uid;
String type;
Log.e(TAG, "run: " + conversation.getConversationId());
if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
uid = ((User) conversation.getConversationWith()).getUid();
type = CometChatConstants.RECEIVER_TYPE_USER;
} else {
uid = ((Group) conversation.getConversationWith()).getGuid();
type = CometChatConstants.RECEIVER_TYPE_GROUP;
}
File file = MediaUtils.getRealPath(CometChatForwardMessageActivity.this, Uri.parse(mediaMessageUrl), true);
if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_IMAGE_MESSAGE))
message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_IMAGE, type);
else if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_VIDEO_MESSAGE))
message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_VIDEO, type);
else if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_AUDIO_MESSAGE))
message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_AUDIO, type);
else if (messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.INTENT_MEDIA_FILE_MESSAGE))
message = new MediaMessage(uid, file, CometChatConstants.MESSAGE_TYPE_FILE, type);
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("path", mediaMessageUrl);
message.setMetadata(jsonObject);
} catch (Exception e) {
Log.e(TAG, "onError: " + e.getMessage());
}
sendMediaMessage(message, i);
}
}).start();
} else {
if (messageType != null && messageType.equalsIgnoreCase(UIKitConstants.IntentStrings.LOCATION)) {
new Thread(() -> {
for (int i = 0; i <= userList.size() - 1; i++) {
Conversation conversation = new ArrayList<>(userList.values()).get(i);
CustomMessage message;
String uid;
JSONObject customData = new JSONObject();
String type;
Log.e(TAG, "run: " + conversation.getConversationId());
if (conversation.getConversationType().equals(CometChatConstants.CONVERSATION_TYPE_USER)) {
uid = ((User) conversation.getConversationWith()).getUid();
type = CometChatConstants.RECEIVER_TYPE_USER;
} else {
uid = ((Group) conversation.getConversationWith()).getGuid();
type = CometChatConstants.RECEIVER_TYPE_GROUP;
}
try {
customData = new JSONObject();
customData.put("latitude", lat);
customData.put("longitude", lon);
} catch (JSONException e) {
e.printStackTrace();
}
message = new CustomMessage(uid, type, UIKitConstants.IntentStrings.LOCATION, customData);
sendLocationMessage(message);
if (i == userList.size() - 1) {
Intent intent = new Intent(CometChatForwardMessageActivity.this, CometChatUI.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
}
}).start();
}
}
}
}
});
rvConversationList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
if (!recyclerView.canScrollVertically(1)) {
makeConversationList();
}
}
});
}
use of com.cometchat.pro.models.Group in project android-java-chat-push-notification-app by cometchat-pro.
the class CometChatCreateGroup method createGroup.
private void createGroup(Group group) {
ProgressDialog progressDialog = ProgressDialog.show(getContext(), null, getString(R.string.creating_group));
CometChat.createGroup(group, new CometChat.CallbackListener<Group>() {
@Override
public void onSuccess(Group group) {
progressDialog.dismiss();
Intent intent = new Intent(getActivity(), CometChatMessageListActivity.class);
intent.putExtra(UIKitConstants.IntentStrings.NAME, group.getName());
intent.putExtra(UIKitConstants.IntentStrings.GROUP_OWNER, group.getOwner());
intent.putExtra(UIKitConstants.IntentStrings.GUID, group.getGuid());
intent.putExtra(UIKitConstants.IntentStrings.AVATAR, group.getIcon());
intent.putExtra(UIKitConstants.IntentStrings.GROUP_TYPE, group.getGroupType());
intent.putExtra(UIKitConstants.IntentStrings.TYPE, CometChatConstants.RECEIVER_TYPE_GROUP);
intent.putExtra(UIKitConstants.IntentStrings.MEMBER_COUNT, group.getMembersCount());
intent.putExtra(UIKitConstants.IntentStrings.GROUP_DESC, group.getDescription());
intent.putExtra(UIKitConstants.IntentStrings.GROUP_PASSWORD, group.getPassword());
if (getActivity() != null)
getActivity().finish();
startActivity(intent);
}
@Override
public void onError(CometChatException e) {
CometChatSnackBar.show(getContext(), etGroupName.getRootView(), CometChatError.localized(e), CometChatSnackBar.ERROR);
Log.e(TAG, "onError: " + e.getMessage());
}
});
}
use of com.cometchat.pro.models.Group in project android-java-chat-push-notification-app by cometchat-pro.
the class CometChatCreateGroup method createGroup.
private void createGroup() {
if (!etGroupName.getText().toString().isEmpty()) {
if (groupType.equals(CometChatConstants.GROUP_TYPE_PUBLIC) || groupType.equals(CometChatConstants.GROUP_TYPE_PRIVATE)) {
Group group = new Group("group" + generateRandomString(25), etGroupName.getText().toString(), groupType, "");
createGroup(group);
} else if (groupType.equals(CometChatConstants.GROUP_TYPE_PASSWORD)) {
if (etGroupPassword.getText().toString().isEmpty())
etGroupPassword.setError(getResources().getString(R.string.fill_this_field));
else if (etGroupCnfPassword.getText().toString().isEmpty())
etGroupCnfPassword.setError(getResources().getString(R.string.fill_this_field));
else if (etGroupPassword.getText().toString().equals(etGroupCnfPassword.getText().toString())) {
Group group = new Group(generateRandomString(25), etGroupName.getText().toString(), groupType, etGroupPassword.getText().toString());
createGroup(group);
} else if (etGroupPassword != null)
CometChatSnackBar.show(getContext(), etGroupCnfPassword.getRootView(), getResources().getString(R.string.password_not_matched), CometChatSnackBar.WARNING);
}
} else {
etGroupName.setError(getResources().getString(R.string.fill_this_field));
}
}
Aggregations