diff --git a/app/build.gradle b/app/build.gradle index 5040402..c416ed1 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,7 +65,7 @@ dependencies { implementation 'android.arch.lifecycle:extensions:1.1.1' kapt "android.arch.lifecycle:compiler:1.1.1" //cometchat sdk - implementation 'com.cometchat:pro-android-chat-sdk:2.0.0-beta2' + implementation 'com.cometchat:pro-android-chat-sdk:2.0.0-beta4' implementation 'com.facebook.shimmer:shimmer:0.4.0' api 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.0' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a38933d..64fbd68 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -65,7 +65,7 @@ + android:windowSoftInputMode="stateAlwaysHidden" /> diff --git a/app/src/main/java/com/inscripts/cometchatpulse/Activities/GroupDetailActivity.kt b/app/src/main/java/com/inscripts/cometchatpulse/Activities/GroupDetailActivity.kt index 2cbd6b7..924f0b9 100755 --- a/app/src/main/java/com/inscripts/cometchatpulse/Activities/GroupDetailActivity.kt +++ b/app/src/main/java/com/inscripts/cometchatpulse/Activities/GroupDetailActivity.kt @@ -37,7 +37,7 @@ class GroupDetailActivity : AppCompatActivity() { private lateinit var groupOptionAdapter: GroupOptionAdapter - private var groupOptionList: MutableList = mutableListOf() + private var groupOptionList: MutableMap = mutableMapOf() private lateinit var groupViewModel: GroupViewModel @@ -150,16 +150,16 @@ class GroupDetailActivity : AppCompatActivity() { } - private fun GroupOptionItemList(): MutableList { + private fun GroupOptionItemList(): MutableMap { - groupOptionList.add(GroupOption(getString(R.string.view_members), ContextCompat.getDrawable(this, R.drawable.ic_person_black_24dp))) + groupOptionList.put(0,GroupOption(getString(R.string.view_members), ContextCompat.getDrawable(this, R.drawable.ic_person_black_24dp))) if(userScope==CometChatConstants.SCOPE_ADMIN||userScope==CometChatConstants.SCOPE_MODERATOR) { - groupOptionList.add(GroupOption(getString(R.string.add_members), ContextCompat.getDrawable(this, R.drawable.ic_person_add_black_24dp))) + groupOptionList.put(1,GroupOption(getString(R.string.add_members), ContextCompat.getDrawable(this, R.drawable.ic_person_add_black_24dp))) } - groupOptionList.add(GroupOption(getString(R.string.unban_members), ContextCompat.getDrawable(this, R.drawable.ic_supervisor_account_black_24dp))) - groupOptionList.add(GroupOption(getString(R.string.leave_group), ContextCompat.getDrawable(this, R.drawable.ic_exit_to_app_black_24dp))) + groupOptionList.put(2,GroupOption(getString(R.string.unban_members), ContextCompat.getDrawable(this, R.drawable.ic_supervisor_account_black_24dp))) + groupOptionList.put(3,GroupOption(getString(R.string.leave_group), ContextCompat.getDrawable(this, R.drawable.ic_exit_to_app_black_24dp))) if (userScope==CometChatConstants.SCOPE_ADMIN) { - groupOptionList.add(GroupOption(getString(R.string.delete_group), ContextCompat.getDrawable(this, R.drawable.ic_delete_black_24dp))) + groupOptionList.put(4,GroupOption(getString(R.string.delete_group), ContextCompat.getDrawable(this, R.drawable.ic_delete_black_24dp))) } return groupOptionList } diff --git a/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupChatAdapter.kt b/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupChatAdapter.kt index fd54c79..a956911 100755 --- a/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupChatAdapter.kt +++ b/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupChatAdapter.kt @@ -27,7 +27,6 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.cometchat.pro.constants.CometChatConstants import com.cometchat.pro.core.Call -import com.cometchat.pro.core.CometChat import com.cometchat.pro.models.* import com.inscripts.cometchatpulse.Activities.ImageViewActivity import com.inscripts.cometchatpulse.AsyncTask.DownloadFile @@ -279,8 +278,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri rightTextMessageHolder.binding.tvMessage.typeface = StringContract.Font.message } - setDeliveryIcon(rightTextMessageHolder.binding.imgMessageStatus,baseMessage) - setReadIcon(rightTextMessageHolder.binding.imgMessageStatus,baseMessage) + setStatusIcon(rightTextMessageHolder.binding.imgMessageStatus,baseMessage) } @@ -335,8 +333,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri } }) - setDeliveryIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage) - setReadIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage) + setStatusIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage) setLongClick(rightImageVideoMessageHolder.binding.imageMessage,baseMessage) } @@ -353,8 +350,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri rightFileViewHolder.binding.timeStamp.typeface = StringContract.Font.status val finalMediaFile = mediaFile setLongClick(rightFileViewHolder.binding.root,baseMessage) - setDeliveryIcon(rightFileViewHolder.binding.messageStatus,baseMessage) - setReadIcon(rightFileViewHolder.binding.messageStatus,baseMessage) + setStatusIcon(rightFileViewHolder.binding.messageStatus,baseMessage) rightFileViewHolder.binding.fileName.setOnClickListener(View.OnClickListener { context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(finalMediaFile))) }) } catch (e: Exception) { @@ -369,10 +365,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri rightLocationViewHolder.binding.message = baseMessage as TextMessage rightLocationViewHolder.binding.timestamp.typeface = StringContract.Font.status rightLocationViewHolder.bindView(p1, messagesList) - setDeliveryIcon(rightLocationViewHolder.binding.imgMessageStatus,baseMessage) - setReadIcon(rightLocationViewHolder.binding.imgMessageStatus,baseMessage) - - + setStatusIcon(rightLocationViewHolder.binding.imgMessageStatus,baseMessage) } StringContract.ViewType.LEFT_LOCATION_MESSAGE -> { @@ -390,8 +383,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri rightReplyMessageHolder.binding.message = baseMessage rightReplyMessageHolder.binding.rlMain.background.setColorFilter(StringContract.Color.rightMessageColor, PorterDuff.Mode.SRC_ATOP) - baseMessage?.let { setDeliveryIcon(rightReplyMessageHolder.binding.messageStatus, it) } - baseMessage?.let { setReadIcon(rightReplyMessageHolder.binding.messageStatus, it) } + baseMessage?.let { setStatusIcon(rightReplyMessageHolder.binding.messageStatus, it) } if (baseMessage is TextMessage) { rightReplyMessageHolder.binding.txtNewmsg.visibility = View.VISIBLE @@ -460,8 +452,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri rightReplyMessageHolder.binding.message = baseMessage rightReplyMessageHolder.binding.rlMain.background.setColorFilter(StringContract.Color.rightMessageColor, PorterDuff.Mode.SRC_ATOP) - baseMessage?.let { setDeliveryIcon(rightReplyMessageHolder.binding.messageStatus, it) } - baseMessage?.let { setReadIcon(rightReplyMessageHolder.binding.messageStatus, it) } + baseMessage?.let { setStatusIcon(rightReplyMessageHolder.binding.messageStatus, it) } if (baseMessage is MediaMessage) { @@ -941,8 +932,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri } }) - setDeliveryIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage) - setReadIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage) + setStatusIcon(rightImageVideoMessageHolder.binding.messageStatus,baseMessage) setLongClick(rightImageVideoMessageHolder.binding.root,baseMessage) } @@ -955,8 +945,7 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri rightAudioMessageHolder.binding.timeStamp.typeface = StringContract.Font.status rightAudioMessageHolder.binding.audioLength.typeface = StringContract.Font.status setLongClick(rightAudioMessageHolder.binding.root, baseMessage) - setDeliveryIcon(rightAudioMessageHolder.binding.messageStatus,baseMessage) - setReadIcon(rightAudioMessageHolder.binding.messageStatus,baseMessage) + setStatusIcon(rightAudioMessageHolder.binding.messageStatus,baseMessage) try { if (timeStampLong?.let { GroupChatAdapter.audioDurations.get(it) } == null) { @@ -1446,21 +1435,25 @@ class GroupChatAdapter(val context: Context, val guid: String, val ownerId: Stri notifyDataSetChanged() } - private fun setDeliveryIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) { - if (baseMessage.deliveredAt != 0L) { - circleImageView.setImageResource(R.drawable.ic_double_tick) - } - } + private fun setStatusIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) { - private fun setReadIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) { if (baseMessage.readAt != 0L) { - val drawable= ContextCompat.getDrawable(context,R.drawable.ic_double_tick_blue); + val drawable=ContextCompat.getDrawable(context,R.drawable.ic_double_tick_blue); drawable?.setColorFilter(StringContract.Color.primaryColor,PorterDuff.Mode.SRC_ATOP) circleImageView.setImageDrawable(drawable) - circleImageView.setCircleBackgroundColor(context.resources.getColor(android.R.color.transparent)) + circleImageView.circleBackgroundColor = context.resources.getColor(android.R.color.transparent) + } + else if (baseMessage.deliveredAt != 0L) { + circleImageView.setImageResource(R.drawable.ic_double_tick) + circleImageView.circleBackgroundColor = StringContract.Color.primaryColor + } + else{ + circleImageView.setImageResource(R.drawable.ic_check_24dp) + circleImageView.circleBackgroundColor = StringContract.Color.primaryColor } } + fun setDeletedMessage(deletedMessage: BaseMessage) { messagesList.put(deletedMessage.id.toLong(),deletedMessage) notifyDataSetChanged() diff --git a/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupOptionAdapter.kt b/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupOptionAdapter.kt index 5389c35..ef832e6 100755 --- a/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupOptionAdapter.kt +++ b/app/src/main/java/com/inscripts/cometchatpulse/Adapter/GroupOptionAdapter.kt @@ -16,7 +16,7 @@ import com.inscripts.cometchatpulse.ViewHolder.GroupOptionViewHolder import com.inscripts.cometchatpulse.databinding.GroupOptionItemBinding -class GroupOptionAdapter(val context:Context,val groupOptionList: MutableList, +class GroupOptionAdapter(val context:Context,val groupOptionList: MutableMap, val ownerId:String,val guid:String, onOptionClickListener: OnOptionClickListener): RecyclerView.Adapter() { private var onOptionClickListener:OnOptionClickListener @@ -38,7 +38,7 @@ class GroupOptionAdapter(val context:Context,val groupOptionList: MutableList { @@ -1018,8 +1009,7 @@ class OneToOneAdapter(val context: Context, val ownerId: String, rightFileViewHolder.binding.fileName.setOnClickListener(View.OnClickListener { context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(finalMediaFile))) }) - setDeliveryIcon(rightFileViewHolder.binding.messageStatus, baseMessage) - setReadIcon(rightFileViewHolder.binding.messageStatus, baseMessage) + setStatusIcon(rightFileViewHolder.binding.messageStatus, baseMessage) setLongClick(rightFileViewHolder.binding.root, baseMessage) } catch (e: Exception) { e.printStackTrace() @@ -1104,9 +1094,7 @@ class OneToOneAdapter(val context: Context, val ownerId: String, }) - setDeliveryIcon(rightImageVideoMessageHolder.binding.messageStatus, baseMessage) - setReadIcon(rightImageVideoMessageHolder.binding.messageStatus, baseMessage) - + setStatusIcon(rightImageVideoMessageHolder.binding.messageStatus, baseMessage) setLongClick(rightImageVideoMessageHolder.binding.root, baseMessage) } @@ -1120,8 +1108,7 @@ class OneToOneAdapter(val context: Context, val ownerId: String, rightAudioMessageHolder.binding.audioLength.typeface = StringContract.Font.status setLongClick(rightAudioMessageHolder.binding.root, baseMessage) - setDeliveryIcon(rightAudioMessageHolder.binding.messageStatus, baseMessage) - setReadIcon(rightAudioMessageHolder.binding.messageStatus, baseMessage) + setStatusIcon(rightAudioMessageHolder.binding.messageStatus, baseMessage) try { @@ -1374,7 +1361,7 @@ class OneToOneAdapter(val context: Context, val ownerId: String, } } - private fun setDeliveryIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) { + private fun setStatusIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) { if (baseMessage.readAt != 0L) { val drawable=ContextCompat.getDrawable(context,R.drawable.ic_double_tick_blue); @@ -1392,14 +1379,6 @@ class OneToOneAdapter(val context: Context, val ownerId: String, } } - private fun setReadIcon(circleImageView: CircleImageView, baseMessage: BaseMessage) { -// if (baseMessage.readAt != 0L) { -// val drawable=ContextCompat.getDrawable(context,R.drawable.ic_double_tick_blue); -// drawable?.setColorFilter(StringContract.Color.primaryColor,PorterDuff.Mode.SRC_ATOP) -// circleImageView.setImageDrawable(drawable) -// circleImageView.circleBackgroundColor = context.resources.getColor(android.R.color.transparent) -// } - } private fun startIntent(baseMessage: MediaMessage) { val imageIntent = Intent(context, ImageViewActivity::class.java) diff --git a/app/src/main/java/com/inscripts/cometchatpulse/CustomView/RecordMicButton.kt b/app/src/main/java/com/inscripts/cometchatpulse/CustomView/RecordMicButton.kt index 2325c79..1562c90 100755 --- a/app/src/main/java/com/inscripts/cometchatpulse/CustomView/RecordMicButton.kt +++ b/app/src/main/java/com/inscripts/cometchatpulse/CustomView/RecordMicButton.kt @@ -121,8 +121,6 @@ class RecordMicButton : android.support.v7.widget.AppCompatImageView, View.OnTou MotionEvent.ACTION_DOWN ->{ recordAudio!!.onActionDown(view as RecordMicButton, context)} - MotionEvent.ACTION_MOVE -> {recordAudio!!.onActionMove(view as RecordMicButton, motionEvent)} - MotionEvent.ACTION_UP -> {recordAudio!!.onActionUp(view as RecordMicButton)} } diff --git a/app/src/main/java/com/inscripts/cometchatpulse/Repository/MessageRepository.kt b/app/src/main/java/com/inscripts/cometchatpulse/Repository/MessageRepository.kt index cca0953..6825272 100755 --- a/app/src/main/java/com/inscripts/cometchatpulse/Repository/MessageRepository.kt +++ b/app/src/main/java/com/inscripts/cometchatpulse/Repository/MessageRepository.kt @@ -22,7 +22,6 @@ import com.cometchat.pro.models.MessageReceipt import com.cometchat.pro.models.MediaMessage import com.cometchat.pro.models.TextMessage import com.cometchat.pro.models.BaseMessage -import com.google.android.gms.location.places.ui.PlaceAutocomplete.getStatus import com.inscripts.cometchatpulse.Fragment.GroupFragment class MessageRepository { @@ -72,8 +71,6 @@ class MessageRepository { @WorkerThread fun fetchMessage(LIMIT: Int, userId: String,isRefresh:Boolean) { - - try { if (isRefresh){ messageRequest= null @@ -82,64 +79,72 @@ class MessageRepository { if (messageRequest == null) { messageRequest = MessagesRequest.MessagesRequestBuilder().setUID(userId).setLimit(LIMIT).build() - messageRequest?.fetchPrevious(object : CometChat.CallbackListener>() { - override fun onSuccess(p0: List?) { + fetchMessageRequest(messageRequest) + } else { + fetchMessageRequest(messageRequest) + } + } catch (e: NullPointerException) { + e.printStackTrace() + } - if (p0 != null) { - for (baseMessage: BaseMessage in p0) { - Log.d(TAG, "baseMessage onSuccess: " + baseMessage.id) - if (baseMessage.category != CometChatConstants.CATEGORY_ACTION && baseMessage.deletedAt == 0L) { - mutableOneToOneMessageList.add(baseMessage) - } - } - if(p0.isNotEmpty()){ - val message=p0.get(p0.size-1) - CometChat.markAsRead(message.id,message.sender.uid,message.receiverType); - } - onetoOneMessageList.value = mutableOneToOneMessageList - } + } - Log.d(TAG, "messageRequest onSuccess: ${p0?.size}") + fun fetchMessageRequest(messagesRequest: MessagesRequest?){ - } + messagesRequest?.fetchPrevious(object : CometChat.CallbackListener>() { + override fun onSuccess(p0: List?) { - override fun onError(p0: CometChatException?) { - Log.d(TAG, "messageRequest onError: ${p0?.message}") + if (p0 != null) { + for (baseMessage: BaseMessage in p0) { + Log.d(TAG, "baseMessage onSuccess: " + baseMessage.id) + if (baseMessage.category != CometChatConstants.CATEGORY_ACTION && baseMessage.deletedAt == 0L) { + mutableOneToOneMessageList.add(baseMessage) + } + } + if(p0.isNotEmpty()){ + val message=p0.get(p0.size-1) + CometChat.markAsRead(message.id,message.sender.uid,message.receiverType); } + onetoOneMessageList.value = mutableOneToOneMessageList + } - }) + Log.d(TAG, "messageRequest onSuccess: ${p0?.size}") - } else { - messageRequest?.fetchPrevious(object : CometChat.CallbackListener>() { - override fun onError(p0: CometChatException?) { + } - } + override fun onError(p0: CometChatException?) { + Log.d(TAG, "messageRequest onError: ${p0?.message}") + } - override fun onSuccess(p0: List?) { + }) + } - if (p0 != null) { - for (baseMessage: BaseMessage in p0) { - Log.d(TAG, "baseMessage onSuccess: " + baseMessage.id) - if (baseMessage.category != CometChatConstants.CATEGORY_ACTION && baseMessage.deletedAt == 0L) { - mutableOneToOneMessageList.add(baseMessage) - } - } - onetoOneMessageList.value = mutableOneToOneMessageList - if(p0.isNotEmpty()){ - val message=p0.get(p0.size-1); - CometChat.markAsRead(message.id,message.sender.uid,message.receiverType); - } - } + fun fetchGroupMessageRequest(messagesRequest: MessagesRequest?){ + groupMessageRequest!!.fetchPrevious(object : CometChat.CallbackListener>() { + override fun onSuccess(p0: List?) { + Log.e("groupMessageRequest","${p0?.size}") + if (p0!=null) { + for (message in p0) { + if (message.category != CometChatConstants.CATEGORY_ACTION && message.deletedAt == 0L) { + p0.let { mutableGroupMessageList.addAll(0, it) } + groupMessageList.value = mutableGroupMessageList + } + } + if(p0.isNotEmpty()){ + val message=p0.get(p0.size-1) + CometChat.markAsRead(message.id,message.receiverUid,message.receiverType) } + } - }) + } + override fun onError(p0: CometChatException?) { + Log.d(TAG, "fetchGroupMessage onError: " + p0?.message) } - } catch (e: NullPointerException) { - e.printStackTrace() - } + + }) } @WorkerThread @@ -149,54 +154,10 @@ class MessageRepository { if (groupMessageRequest == null) { groupMessageRequest = MessagesRequest.MessagesRequestBuilder().setGUID(guid).setLimit(LIMIT).build() + fetchGroupMessageRequest(groupMessageRequest) - groupMessageRequest!!.fetchPrevious(object : CometChat.CallbackListener>() { - override fun onSuccess(p0: List?) { - Log.e("groupMessageRequest","${p0?.size}") - if (p0!=null) { - for (message in p0) { - if (message.category != CometChatConstants.CATEGORY_ACTION && message.deletedAt == 0L) { - p0.let { mutableGroupMessageList.addAll(0, it) } - groupMessageList.value = mutableGroupMessageList - } - } - if(p0.isNotEmpty()){ - val message=p0.get(p0.size-1) - CometChat.markAsRead(message.id,message.receiverUid,message.receiverType) - } - } - - } - - override fun onError(p0: CometChatException?) { - Log.d(TAG, "fetchGroupMessage onError: " + p0?.message) - } - - - }) } else { - - groupMessageRequest!!.fetchPrevious(object : CometChat.CallbackListener>() { - override fun onSuccess(p0: List?) { - Log.e("groupMessageRequest 1","${p0?.size}") - if (p0!=null) { - for (message in p0) { - if (message.category != CometChatConstants.CATEGORY_ACTION && message.deletedAt == 0L) { - p0.let { mutableGroupMessageList.addAll(0, it) } - groupMessageList.value = mutableGroupMessageList - } - } - if(p0.isNotEmpty()){ - val message=p0.get(p0.size-1) - CometChat.markAsRead(message.id,message.receiverUid,message.receiverType) - } - } - } - - override fun onError(p0: CometChatException?) { - Log.d(TAG,"fetchGroupMessage 1 onError: ") - } - }) + fetchGroupMessageRequest(groupMessageRequest) } } diff --git a/app/src/main/java/com/inscripts/cometchatpulse/StringContract.kt b/app/src/main/java/com/inscripts/cometchatpulse/StringContract.kt index c44cf93..22a819d 100755 --- a/app/src/main/java/com/inscripts/cometchatpulse/StringContract.kt +++ b/app/src/main/java/com/inscripts/cometchatpulse/StringContract.kt @@ -14,7 +14,7 @@ class StringContract { const val API_KEY: String = "XXXXXXXXXXXXXX" - const val REGION:String="XXXXXX" + const val REGION:String="XXXX" lateinit var theme: Appearance.AppTheme diff --git a/app/src/main/res/layout/message_edit_box.xml b/app/src/main/res/layout/message_edit_box.xml index d2cb0d9..a598377 100755 --- a/app/src/main/res/layout/message_edit_box.xml +++ b/app/src/main/res/layout/message_edit_box.xml @@ -37,7 +37,6 @@ android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" - android:layout_alignBottom="@id/frame" android:layout_marginBottom="8dp" android:layout_marginStart="4dp" android:layout_marginEnd="4dp" @@ -45,19 +44,14 @@ app:srcCompat="@drawable/ic_send_24dp" /> - - @@ -71,7 +65,7 @@ + android:layout_marginEnd="16dp"> -