diff --git a/.idea/misc.xml b/.idea/misc.xml index d5d35ec..59f6372 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,9 +1,4 @@ - - - - - + \ No newline at end of file diff --git a/README.md b/README.md index 39c4fa7..54310a2 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ The UI Kit is developed to keep developers in mind and aims to reduce developmen [![Platform](https://img.shields.io/badge/Language-Java-yellowgreen.svg)](#) ![GitHub repo size](https://img.shields.io/github/repo-size/cometchat-pro/android-java-chat-ui-kit) ![GitHub contributors](https://img.shields.io/github/contributors/cometchat-pro/android-java-chat-ui-kit) -![Version](https://shields.io/badge/version-v3.0.0--beta4--1-orange) +![Version](https://shields.io/badge/version-v3.0.0--1-orange) ![GitHub stars](https://img.shields.io/github/stars/cometchat-pro/android-java-chat-ui-kit?style=social) ![Twitter Follow](https://img.shields.io/twitter/follow/cometchat?style=social) @@ -28,7 +28,7 @@ The UI Kit is developed to keep developers in mind and aims to reduce developmen Before you begin, ensure you have met the following requirements:
✅   You have `Android Studio` installed in your machine.
✅   You have a `Android Device or Emulator` with Android Version 6.0 or above.
- ✅   You have read [CometChat Key Concepts](https://prodocs.cometchat.com/v3.0-beta/docs/concepts).
+ ✅   You have read [CometChat Key Concepts](https://prodocs.cometchat.com/v3.0/docs/concepts).

@@ -70,7 +70,12 @@ allprojects { ```groovy dependencies { - implementation 'com.cometchat:pro-android-chat-sdk:3.0.0-beta4' + implementation 'com.cometchat:pro-android-chat-sdk:3.0.0' + + /** From v2.4+ onwards, Voice & Video Calling functionality has been + moved to a separate library. In case you plan to use the calling + feature, please add the Calling dependency.**/ + implementation 'com.cometchat:pro-android-calls-sdk:2.1.0' } ``` @@ -92,7 +97,7 @@ android { You can refer to the below link for instructions on how to do so:
-[📝 Add CometChat Dependency](https://prodocs.cometchat.com/v3.0-beta/docs/android-quick-start#section-add-the-cometchat-dependency) +[📝 Add CometChat Dependency](https://prodocs.cometchat.com/v3.0/docs/android-quick-start#section-add-the-cometchat-dependency)
@@ -167,7 +172,7 @@ String authKey = "AUTH_KEY"; // Replace with your App Auth Key
-📝   Please refer to our [Developer Documentation](https://prodocs.cometchat.com/v3.0-beta/docs/android-quick-start) for more information on how to configure the CometChat Pro SDK and implement various features using the same. +📝   Please refer to our [Developer Documentation](https://prodocs.cometchat.com/v3.0/docs/android-quick-start) for more information on how to configure the CometChat Pro SDK and implement various features using the same.
@@ -175,7 +180,7 @@ String authKey = "AUTH_KEY"; // Replace with your App Auth Key 1. Simply clone the project from [android-java-chat-ui-kit](https://github.com/cometchat-pro/android-java-chat-ui-kit/tree/v3) repository. -2. Import `uikit` Module from Module Settings.( To know how to import `uikit` as Module visit this [link](https://prodocs.cometchat.com/v3.0-beta/docs/android-ui-kit-setup) ) +2. Import `uikit` Module from Module Settings.( To know how to import `uikit` as Module visit this [link](https://prodocs.cometchat.com/v3.0/docs/android-ui-kit-setup) ) 3. If the Library is added successfully, it will look like mentioned in the below image. @@ -286,7 +291,7 @@ Visit our [Kotlin sample app](https://github.com/cometchat-pro/android-kotlin-ch ## Troubleshooting -- To read the full documentation on UI Kit integration visit our [Documentation](https://prodocs.cometchat.com/v3.0-beta/docs/android-ui-kit) . +- To read the full documentation on UI Kit integration visit our [Documentation](https://prodocs.cometchat.com/v3.0/docs/android-ui-kit) . - Facing any issues while integrating or installing the UI Kit please connect with us via real time support present in CometChat Dashboard.. diff --git a/build.gradle b/build.gradle index eff2378..f49409b 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.5.2' + classpath 'com.android.tools.build:gradle:4.0.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 987c254..d105203 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Jan 23 15:07:58 IST 2020 +#Tue Aug 17 02:58:03 IST 2021 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-bin.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +zipStoreBase=GRADLE_USER_HOME diff --git a/uikit/build.gradle b/uikit/build.gradle index de722dc..d49870e 100644 --- a/uikit/build.gradle +++ b/uikit/build.gradle @@ -1,10 +1,10 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 29 + compileSdkVersion 30 defaultConfig { minSdkVersion 21 - targetSdkVersion 29 + targetSdkVersion 30 versionCode 1 versionName "1.0" multiDexEnabled true @@ -90,7 +90,7 @@ dependencies { implementation 'com.google.android.gms:play-services-location:17.0.0' implementation 'com.google.android.gms:play-services-maps:17.0.0' //cometchat - compileOnly 'com.cometchat:pro-android-chat-sdk:3.0.0-beta4' - + compileOnly 'com.cometchat:pro-android-chat-sdk:3.0.0' + compileOnly 'com.cometchat:pro-android-calls-sdk:2.1.0' implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.0' } diff --git a/uikit/src/main/AndroidManifest.xml b/uikit/src/main/AndroidManifest.xml index 2cba428..1d3bc25 100644 --- a/uikit/src/main/AndroidManifest.xml +++ b/uikit/src/main/AndroidManifest.xml @@ -6,28 +6,49 @@ - + - + + + + + + + + + + + + + + + + + + + + - - + + + - + @@ -47,7 +68,7 @@ - + @@ -57,6 +78,7 @@ + @@ -95,6 +117,7 @@ android:name=".ui_components.messages.message_list.CometChatMessageListActivity" android:parentActivityName=".ui_components.cometchat_ui.CometChatUI" android:screenOrientation="portrait" /> + - - + - - + \ No newline at end of file diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_list/CometChatCallList.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_list/CometChatCallList.java index 96a71d5..09bc78e 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_list/CometChatCallList.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_list/CometChatCallList.java @@ -21,6 +21,7 @@ import com.cometchat.pro.uikit.R; import com.cometchat.pro.uikit.ui_components.shared.cometchatCalls.CometChatCalls; import com.cometchat.pro.uikit.ui_resources.utils.CometChatError; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; import com.facebook.shimmer.ShimmerFrameLayout; import com.google.android.material.tabs.TabLayout; @@ -83,20 +84,17 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, // Inflate the layout for this fragment view = inflater.inflate(R.layout.fragment_cometchat_calls, container, false); tvTitle = view.findViewById(R.id.tv_title); - fetchSettings(); CometChatError.init(getContext()); phoneAddIv = view.findViewById(R.id.add_phone_iv); - if (oneOnoneCallEnabled || oneOnoneVideoCallEnabled) - phoneAddIv.setVisibility(View.VISIBLE); - else - phoneAddIv.setVisibility(View.GONE); - phoneAddIv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { openUserListScreen(); } }); + + fetchSettings(); + viewPager = view.findViewById(R.id.viewPager); tabLayout = view.findViewById(R.id.tabLayout); if (getActivity() != null) { @@ -106,13 +104,13 @@ public void onClick(View v) { viewPager.setAdapter(tabAdapter); } tabLayout.setupWithViewPager(viewPager); - if (FeatureRestriction.getColor()!=null) { - phoneAddIv.setImageTintList(ColorStateList.valueOf(Color.parseColor(FeatureRestriction.getColor()))); + if (UIKitSettings.getColor()!=null) { + phoneAddIv.setImageTintList(ColorStateList.valueOf(Color.parseColor(UIKitSettings.getColor()))); Drawable wrappedDrawable = DrawableCompat.wrap(getResources(). getDrawable(R.drawable.tab_layout_background_active)); - DrawableCompat.setTint(wrappedDrawable, Color.parseColor(FeatureRestriction.getColor())); + DrawableCompat.setTint(wrappedDrawable, Color.parseColor(UIKitSettings.getColor())); tabLayout.getTabAt(tabLayout.getSelectedTabPosition()).view.setBackground(wrappedDrawable); - tabLayout.setSelectedTabIndicatorColor(Color.parseColor(FeatureRestriction.getColor())); + tabLayout.setSelectedTabIndicatorColor(Color.parseColor(UIKitSettings.getColor())); } else { tabLayout.getTabAt(tabLayout.getSelectedTabPosition()). view.setBackgroundColor(getResources().getColor(R.color.colorPrimary)); @@ -121,10 +119,10 @@ public void onClick(View v) { tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { - if (FeatureRestriction.getColor()!=null) { + if (UIKitSettings.getColor()!=null) { Drawable wrappedDrawable = DrawableCompat.wrap(getResources(). getDrawable(R.drawable.tab_layout_background_active)); - DrawableCompat.setTint(wrappedDrawable, Color.parseColor(FeatureRestriction.getColor())); + DrawableCompat.setTint(wrappedDrawable, Color.parseColor(UIKitSettings.getColor())); tab.view.setBackground(wrappedDrawable); } else @@ -149,13 +147,15 @@ private void fetchSettings() { FeatureRestriction.isOneOnOneAudioCallEnabled(new FeatureRestriction.OnSuccessListener() { @Override public void onSuccess(Boolean booleanVal) { - oneOnoneCallEnabled = booleanVal; + if (booleanVal) + phoneAddIv.setVisibility(View.VISIBLE); } }); FeatureRestriction.isOneOnOneVideoCallEnabled(new FeatureRestriction.OnSuccessListener() { @Override public void onSuccess(Boolean booleanVal) { - oneOnoneVideoCallEnabled = booleanVal; + if (booleanVal) + phoneAddIv.setVisibility(View.VISIBLE); } }); } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_list/CometChatNewCallList.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_list/CometChatNewCallList.java index f98782d..78c6137 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_list/CometChatNewCallList.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_list/CometChatNewCallList.java @@ -48,6 +48,7 @@ import com.cometchat.pro.uikit.R; import com.cometchat.pro.uikit.ui_components.shared.CometChatSnackBar; import com.cometchat.pro.uikit.ui_resources.utils.CometChatError; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; import com.facebook.shimmer.ShimmerFrameLayout; import java.util.List; @@ -101,19 +102,19 @@ public CometChatNewCallList() { protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_cometchat_userlist); + fetchSettings(); title = findViewById(R.id.tv_title); CometChatError.init(this); ImageView imageView = new ImageView(this); - imageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_close_24dp)); - if (FeatureRestriction.getColor()!=null) { - getWindow().setStatusBarColor(Color.parseColor(FeatureRestriction.getColor())); + imageView.setImageDrawable(getResources().getDrawable(R.drawable.ic_back_arrow_selected)); + if (UIKitSettings.getColor()!=null) { + getWindow().setStatusBarColor(Color.parseColor(UIKitSettings.getColor())); imageView.setImageTintList(ColorStateList.valueOf( - Color.parseColor(FeatureRestriction.getColor()))); + Color.parseColor(UIKitSettings.getColor()))); } else imageView.setImageTintList( ColorStateList.valueOf(getResources().getColor(R.color.colorPrimary))); - fetchSettings(); imageView.setClickable(true); imageView.setPadding(8,8,8,8); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); @@ -128,11 +129,11 @@ public void onClick(View v) { onBackPressed(); } }); - title.setTypeface(FontUtils.getInstance(this).getTypeFace(FontUtils.robotoMedium)); RelativeLayout.LayoutParams titleLayoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); titleLayoutParams.setMargins(16,32,16,48); titleLayoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL); title.setLayoutParams(titleLayoutParams); + title.setTextAppearance(R.style.TextAppearance_AppCompat_Large); title.setText(getResources().getString(R.string.new_call)); rvUserList = findViewById(R.id.rv_user_list); etSearch = findViewById(R.id.search_bar); @@ -201,9 +202,7 @@ public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newStat } }); - if (audioCallEnabled || videoCallEnabled) { - // Used to trigger event on click of user item in rvUserList (RecyclerView) - rvUserList.setItemClickListener(new OnItemClickListener() { + rvUserList.setItemClickListener(new OnItemClickListener() { @Override public void OnItemClick(User var, int position) { User user = var; @@ -229,7 +228,7 @@ public void onClick(DialogInterface dialogInterface, int i) { alertDialog.show(); } }); - } + fetchUsers(); } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_manager/CometChatCallActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_manager/CometChatCallActivity.java index 28fbc7c..dca99c3 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_manager/CometChatCallActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_manager/CometChatCallActivity.java @@ -234,10 +234,10 @@ public void setCallType(boolean isVideoCall, boolean isIncoming) { outgoingCallView.setVisibility(View.GONE); if (isVideoCall) { callMessage.setText(getResources().getString(R.string.incoming_video_call)); - callMessage.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable.ic_videocam_white_24dp),null,null,null); + callMessage.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable.ic_incoming_video_call),null,null,null); } else { callMessage.setText(getResources().getString(R.string.incoming_audio_call)); - callMessage.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable.ic_call_incoming_24dp),null,null,null); + callMessage.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable.ic_incoming_call),null,null,null); } } else { callTv.setText(getString(R.string.calling)); @@ -248,7 +248,7 @@ public void setCallType(boolean isVideoCall, boolean isIncoming) { if (isVideoCall) { cameraPreview = new CameraPreview(this); cameraFrame.addView(cameraPreview); - hangUp.setImageDrawable(getResources().getDrawable(R.drawable.ic_videocam_white_24dp)); + hangUp.setImageDrawable(getResources().getDrawable(R.drawable.ic_videocall)); } else { hangUp.setImageDrawable(getResources().getDrawable(R.drawable.ic_call_end_white_24dp)); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_manager/CometChatStartCallActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_manager/CometChatStartCallActivity.java index 7884292..e680847 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_manager/CometChatStartCallActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/calls/call_manager/CometChatStartCallActivity.java @@ -25,8 +25,8 @@ import com.cometchat.pro.core.CallSettings; import com.cometchat.pro.core.CometChat; import com.cometchat.pro.exceptions.CometChatException; +import com.cometchat.pro.models.AudioMode; import com.cometchat.pro.models.User; -import com.cometchat.pro.rtc.model.AudioMode; import com.cometchat.pro.uikit.R; import com.cometchat.pro.uikit.ui_components.calls.call_manager.ongoing_call.OngoingCallService; import com.cometchat.pro.uikit.ui_components.shared.CometChatSnackBar; @@ -94,16 +94,17 @@ protected void onCreate(Bundle savedInstanceState) { .setSessionId(sessionID) .build(); + CometChatError.init(this); Log.e( "startCallActivity: ",sessionID+" "+type); CometChat.startCall(callSettings, new CometChat.OngoingCallListener() { @Override - public void onAudioModesUpdated(List list) { - Log.e( "onAudioModesUpdated: ",list.toString() ); + public void onUserListUpdated(List list) { + Log.e( "onUserListUpdated: ",list.toString() ); } @Override - public void onUserListUpdated(List list) { - Log.e( "onUserListUpdated: ",list.toString() ); + public void onAudioModesUpdated(List list) { + Log.e("onAudioModesUpdated: ",list.toString() ); } @Override @@ -122,7 +123,7 @@ public void onUserLeft(User user) { mainView, getString(R.string.user_left)+":"+ user.getName(), CometChatSnackBar.INFO); Log.e("onUserLeft: ", user.getUid()); - if (callSettings.isDefaultLayout()) { + if (callSettings.getMode().equals(CallSettings.MODE_SINGLE)) { endCall(); } } else { diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/chats/CometChatConversationList.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/chats/CometChatConversationList.java index ec7ce8f..faba9bc 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/chats/CometChatConversationList.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/chats/CometChatConversationList.java @@ -21,6 +21,7 @@ import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; import android.widget.EditText; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; @@ -33,6 +34,7 @@ import com.cometchat.pro.models.Action; import com.cometchat.pro.models.Group; import com.cometchat.pro.models.MessageReceipt; +import com.cometchat.pro.models.TypingIndicator; import com.cometchat.pro.models.User; import com.cometchat.pro.uikit.ui_components.shared.CometChatSnackBar; import com.cometchat.pro.uikit.ui_components.shared.cometchatConversations.CometChatConversations; @@ -46,6 +48,7 @@ import com.cometchat.pro.uikit.ui_resources.utils.custom_alertDialog.CustomAlertDialogHelper; import com.cometchat.pro.uikit.ui_resources.utils.custom_alertDialog.OnAlertDialogButtonClickListener; import com.cometchat.pro.uikit.ui_resources.utils.recycler_touch.RecyclerViewSwipeListener; +import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; import com.cometchat.pro.uikit.ui_settings.UIKitSettings; import com.facebook.shimmer.ShimmerFrameLayout; @@ -93,6 +96,8 @@ public class CometChatConversationList extends Fragment implements TextWatcher, private List conversationList = new ArrayList<>(); + private ImageView startConversation; + public CometChatConversationList() { // Required empty public constructor } @@ -122,6 +127,23 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, CometChatError.init(getContext()); + startConversation = view.findViewById(R.id.start_conversation); + FeatureRestriction.isStartConversationEnabled(new FeatureRestriction.OnSuccessListener() { + @Override + public void onSuccess(Boolean booleanVal) { + if (booleanVal) + startConversation.setVisibility(View.VISIBLE); + else + startConversation.setVisibility(View.GONE); + } + }); + + startConversation.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + CometChatStartConversation.launch(getContext()); + } + }); searchEdit.setOnEditorActionListener((textView, i, keyEvent) -> { if (i == EditorInfo.IME_ACTION_SEARCH) { if (!textView.getText().toString().isEmpty()) { @@ -184,69 +206,76 @@ public void OnItemClick(Conversation conversation, int position) { RecyclerViewSwipeListener swipeHelper = new RecyclerViewSwipeListener(getContext()) { @Override public void instantiateUnderlayButton(RecyclerView.ViewHolder viewHolder, List underlayButtons) { - Bitmap deleteBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.ic_delete); - underlayButtons.add(new RecyclerViewSwipeListener.UnderlayButton( - "Delete", - deleteBitmap, - getResources().getColor(R.color.red), - new RecyclerViewSwipeListener.UnderlayButtonClickListener() { - @Override - public void onClick(final int pos) { - Conversation conversation = rvConversationList.getConversation(pos); - if (conversation!=null) { - String conversationUid = ""; - String type = ""; - if (conversation.getConversationType() - .equalsIgnoreCase(CometChatConstants.CONVERSATION_TYPE_GROUP)) { - conversationUid = ((Group)conversation.getConversationWith()).getGuid(); - type = CometChatConstants.CONVERSATION_TYPE_GROUP; - } else { - conversationUid = ((User)conversation.getConversationWith()).getUid(); - type = CometChatConstants.CONVERSATION_TYPE_USER; - } - String finalConversationUid = conversationUid; - String finalType = type; - new CustomAlertDialogHelper(getContext(), - getString(R.string.delete_conversation_message), - null, - getString(R.string.yes), - "", getString(R.string.no), new OnAlertDialogButtonClickListener() { + Bitmap deleteBitmap = Utils.drawableToBitmap(getResources().getDrawable(R.drawable.ic_delete_conversation)); + FeatureRestriction.isDeleteConversationEnabled(new FeatureRestriction.OnSuccessListener() { + @Override + public void onSuccess(Boolean booleanVal) { + if (booleanVal) { + underlayButtons.add(new RecyclerViewSwipeListener.UnderlayButton( + "Delete", + deleteBitmap, + getResources().getColor(R.color.red), + new RecyclerViewSwipeListener.UnderlayButtonClickListener() { @Override - public void onButtonClick(AlertDialog alertDialog, View v, int which, int popupId) { - if (which==DialogInterface.BUTTON_POSITIVE) { - ProgressDialog progressDialog = ProgressDialog.show(getContext(),null, - getString(R.string.deleting_conversation)); - CometChat.deleteConversation( - finalConversationUid, finalType, - new CometChat.CallbackListener() { - @Override - public void onSuccess(String s) { - Handler handler = new Handler(); - handler.postDelayed(new Runnable() { - public void run() { - alertDialog.dismiss(); - progressDialog.dismiss(); - } - }, 1500); - rvConversationList.remove(conversation); - } - - @Override - public void onError(CometChatException e) { - progressDialog.dismiss(); - e.printStackTrace(); - } - }); - } else if (which==DialogInterface.BUTTON_NEGATIVE) { - alertDialog.dismiss(); + public void onClick(final int pos) { + Conversation conversation = rvConversationList.getConversation(pos); + if (conversation!=null) { + String conversationUid = ""; + String type = ""; + if (conversation.getConversationType() + .equalsIgnoreCase(CometChatConstants.CONVERSATION_TYPE_GROUP)) { + conversationUid = ((Group)conversation.getConversationWith()).getGuid(); + type = CometChatConstants.CONVERSATION_TYPE_GROUP; + } else { + conversationUid = ((User)conversation.getConversationWith()).getUid(); + type = CometChatConstants.CONVERSATION_TYPE_USER; + } + String finalConversationUid = conversationUid; + String finalType = type; + new CustomAlertDialogHelper(getContext(), + getString(R.string.delete_conversation_message), + null, + getString(R.string.yes), + "", getString(R.string.no), new OnAlertDialogButtonClickListener() { + @Override + public void onButtonClick(AlertDialog alertDialog, View v, int which, int popupId) { + if (which==DialogInterface.BUTTON_POSITIVE) { + ProgressDialog progressDialog = ProgressDialog.show(getContext(),null, + getString(R.string.deleting_conversation)); + CometChat.deleteConversation( + finalConversationUid, finalType, + new CometChat.CallbackListener() { + @Override + public void onSuccess(String s) { + Handler handler = new Handler(); + handler.postDelayed(new Runnable() { + public void run() { + alertDialog.dismiss(); + progressDialog.dismiss(); + } + }, 1500); + rvConversationList.remove(conversation); + } + + @Override + public void onError(CometChatException e) { + progressDialog.dismiss(); + e.printStackTrace(); + } + }); + } else if (which==DialogInterface.BUTTON_NEGATIVE) { + alertDialog.dismiss(); + } + } + }, 1, true); + } } - }, 1, true); - - } - } + } + )); } - )); + } + }); } }; swipeHelper.attachToRecyclerView(rvConversationList); @@ -378,6 +407,8 @@ private void addConversationListener() { CometChat.addMessageListener(TAG, new CometChat.MessageListener() { @Override public void onTextMessageReceived(TextMessage message) { + if (!message.getSender().getUid().equalsIgnoreCase(CometChat.getLoggedInUser().getUid())) + CometChat.markAsDelivered(message); if (rvConversationList!=null) { rvConversationList.refreshConversation(message); checkNoConverstaion(); @@ -386,6 +417,8 @@ public void onTextMessageReceived(TextMessage message) { @Override public void onMediaMessageReceived(MediaMessage message) { + if (!message.getSender().getUid().equalsIgnoreCase(CometChat.getLoggedInUser().getUid())) + CometChat.markAsDelivered(message); if (rvConversationList != null) { rvConversationList.refreshConversation(message); checkNoConverstaion(); @@ -394,6 +427,8 @@ public void onMediaMessageReceived(MediaMessage message) { @Override public void onCustomMessageReceived(CustomMessage message) { + if (!message.getSender().getUid().equalsIgnoreCase(CometChat.getLoggedInUser().getUid())) + CometChat.markAsDelivered(message); if (rvConversationList != null) { rvConversationList.refreshConversation(message); checkNoConverstaion(); @@ -423,6 +458,18 @@ public void onMessageDeleted(BaseMessage message) { if (rvConversationList!=null) rvConversationList.refreshConversation(message); } + + @Override + public void onTypingStarted(TypingIndicator typingIndicator) { + if (rvConversationList!=null) + rvConversationList.setTypingIndicator(typingIndicator,false); + } + + @Override + public void onTypingEnded(TypingIndicator typingIndicator) { + if (rvConversationList!=null) + rvConversationList.setTypingIndicator(typingIndicator,true); + } }); CometChat.addGroupListener(TAG, new CometChat.GroupListener() { @Override diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/chats/CometChatStartConversation.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/chats/CometChatStartConversation.java new file mode 100644 index 0000000..e864b79 --- /dev/null +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/chats/CometChatStartConversation.java @@ -0,0 +1,98 @@ +package com.cometchat.pro.uikit.ui_components.chats; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.FragmentActivity; +import androidx.viewpager.widget.ViewPager; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import com.cometchat.pro.uikit.R; +import com.cometchat.pro.uikit.ui_components.groups.group_list.CometChatGroupList; +import com.cometchat.pro.uikit.ui_components.shared.cometchatSharedMedia.adapter.TabAdapter; +import com.cometchat.pro.uikit.ui_components.users.user_list.CometChatUserList; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; +import com.cometchat.pro.uikit.ui_settings.enums.ConversationMode; +import com.google.android.material.tabs.TabLayout; + +public class CometChatStartConversation extends AppCompatActivity { + + private ViewPager viewPager; + + private TabLayout tabLayout; + + private TabAdapter adapter; + + private TextView title; + + private ImageView backIcon; + + private String conversationType = UIKitSettings.getConversationsMode().toString(); + + public static void launch(Context context) { + context.startActivity(new Intent(context,CometChatStartConversation.class)); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_comet_chat_start_conversation); + title = findViewById(R.id.title); + viewPager = findViewById(R.id.viewPager); + tabLayout = findViewById(R.id.tabLayout); + adapter = new TabAdapter(getSupportFragmentManager()); + backIcon = findViewById(R.id.backIcon); + backIcon.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onBackPressed(); + } + }); + + CometChatUserList cometChatUserList = new CometChatUserList(); + cometChatUserList.setTitleVisible(false); + CometChatGroupList cometChatGroupList = new CometChatGroupList(); + cometChatGroupList.setTitleVisible(false); + cometChatGroupList.setGroupCreateVisible(false); + if (conversationType.equalsIgnoreCase(ConversationMode.ALL_CHATS.toString())) { + adapter.addFragment(cometChatUserList, getString(R.string.users)); + adapter.addFragment(cometChatGroupList, getString(R.string.groups)); + } else if (conversationType.equalsIgnoreCase(ConversationMode.GROUP.toString())) { + title.setText(getString(R.string.select_group)); + tabLayout.setVisibility(View.GONE); + adapter.addFragment(cometChatGroupList, getString(R.string.groups)); + } else { + title.setText(getString(R.string.select_user)); + tabLayout.setVisibility(View.GONE); + adapter.addFragment(cometChatUserList, getString(R.string.users)); + } + viewPager.setAdapter(adapter); + viewPager.setOffscreenPageLimit(3); + tabLayout.setupWithViewPager(viewPager); + + tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + if (tab.getPosition()==0) { + title.setText(getString(R.string.select_user)); + } else { + title.setText(getString(R.string.select_group)); + } + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { + + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { + + } + }); + } +} \ No newline at end of file diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/cometchat_ui/CometChatUI.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/cometchat_ui/CometChatUI.java index ea259ad..1ae4ca6 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/cometchat_ui/CometChatUI.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/cometchat_ui/CometChatUI.java @@ -40,6 +40,8 @@ import com.cometchat.pro.uikit.databinding.ActivityCometchatUnifiedBinding; import com.cometchat.pro.uikit.ui_components.shared.CometChatSnackBar; import com.cometchat.pro.uikit.ui_resources.utils.CometChatError; +import com.cometchat.pro.uikit.ui_resources.utils.EncryptionUtils; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; import com.google.android.material.badge.BadgeDrawable; import com.google.android.material.bottomnavigation.BottomNavigationView; @@ -62,6 +64,11 @@ import com.cometchat.pro.uikit.ui_resources.utils.Utils; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; + +import static java.nio.charset.StandardCharsets.UTF_8; + /** * Purpose - CometChatUnified class is main class used to launch the fully working chat application. * It consist of BottomNavigationBar which helps to navigate between different screens like @@ -121,8 +128,6 @@ protected void onCreate(Bundle savedInstanceState) { // It performs action on click of user item in CometChatUserListScreen. setUserClickListener(); - - //It performs action on click of group item in CometChatGroupListScreen. //It checks whether the logged-In user is already a joined a group or not and based on it perform actions. setGroupClickListener(); @@ -148,26 +153,20 @@ private void setGroupClickListener() { CometChatGroupList.setItemClickListener(new OnItemClickListener() { @Override public void OnItemClick(Group g, int position) { - FeatureRestriction.isGroupChatEnabled(new FeatureRestriction.OnSuccessListener() { - @Override - public void onSuccess(Boolean booleanVal) { - group = g; - if (group.isJoined()) { - startGroupIntent(group); - } else { - if (group.getGroupType().equals(CometChatConstants.GROUP_TYPE_PASSWORD)) { - View dialogview = getLayoutInflater().inflate(R.layout.cc_dialog, null); - TextView tvTitle = dialogview.findViewById(R.id.textViewDialogueTitle); - tvTitle.setText(String.format(getResources().getString(R.string.enter_password_to_join),group.getName())); - new CustomAlertDialogHelper(CometChatUI.this, getResources().getString(R.string.password), dialogview, getResources().getString(R.string.join), - "", getResources().getString(R.string.cancel), CometChatUI.this, 1, false); - } else if (group.getGroupType().equals(CometChatConstants.GROUP_TYPE_PUBLIC)) { - joinGroup(group); - } - } - + group = g; + if (group.isJoined()) { + startGroupIntent(group); + } else { + if (group.getGroupType().equals(CometChatConstants.GROUP_TYPE_PASSWORD)) { + View dialogview = getLayoutInflater().inflate(R.layout.cc_dialog, null); + TextView tvTitle = dialogview.findViewById(R.id.textViewDialogueTitle); + tvTitle.setText(String.format(getResources().getString(R.string.enter_password_to_join),group.getName())); + new CustomAlertDialogHelper(CometChatUI.this, getResources().getString(R.string.password), dialogview, getResources().getString(R.string.join), + "", getResources().getString(R.string.cancel), CometChatUI.this, 1, false); + } else if (group.getGroupType().equals(CometChatConstants.GROUP_TYPE_PUBLIC)) { + joinGroup(group); } - }); + } } }); } @@ -176,13 +175,7 @@ private void setUserClickListener() { CometChatUserList.setItemClickListener(new OnItemClickListener() { @Override public void OnItemClick(User user, int position) { - FeatureRestriction.isOneOnOneChatEnabled(new FeatureRestriction.OnSuccessListener() { - @Override - public void onSuccess(Boolean booleanVal) { - if (booleanVal) - startUserIntent(user); - } - }); + startUserIntent(user); } }); } @@ -206,9 +199,9 @@ private void initViewComponent() { activityCometChatUnifiedBinding.bottomNavigation.setOnNavigationItemSelectedListener(this); - if (FeatureRestriction.getColor()!=null && !FeatureRestriction.getColor().isEmpty()) { - getWindow().setStatusBarColor(Color.parseColor(FeatureRestriction.getColor())); - int widgetColor = Color.parseColor(FeatureRestriction.getColor()); + if (UIKitSettings.getColor()!=null && !UIKitSettings.getColor().isEmpty()) { + getWindow().setStatusBarColor(Color.parseColor(UIKitSettings.getColor())); + int widgetColor = Color.parseColor(UIKitSettings.getColor()); ColorStateList colorStateList = new ColorStateList(new int[][] { { -android.R.attr.state_selected }, {} }, new int[] { Color.GRAY, widgetColor }); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/add_members/CometChatAddMembersActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/add_members/CometChatAddMembersActivity.java index 3fa7c43..041aa87 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/add_members/CometChatAddMembersActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/add_members/CometChatAddMembersActivity.java @@ -13,6 +13,7 @@ import com.cometchat.pro.uikit.ui_resources.constants.UIKitConstants; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; public class CometChatAddMembersActivity extends AppCompatActivity { @@ -23,8 +24,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_screen); handleIntent(); - if (FeatureRestriction.getColor()!=null) - getWindow().setStatusBarColor(Color.parseColor(FeatureRestriction.getColor())); + if (UIKitSettings.getColor()!=null) + getWindow().setStatusBarColor(Color.parseColor(UIKitSettings.getColor())); } private void handleIntent() { diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/admin_moderator_list/CometChatAdminModeratorListActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/admin_moderator_list/CometChatAdminModeratorListActivity.java index add9ea4..e7e8389 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/admin_moderator_list/CometChatAdminModeratorListActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/admin_moderator_list/CometChatAdminModeratorListActivity.java @@ -13,6 +13,7 @@ import com.cometchat.pro.uikit.ui_resources.constants.UIKitConstants; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; public class CometChatAdminModeratorListActivity extends AppCompatActivity { @@ -29,8 +30,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_screen); handleIntent(); - if (FeatureRestriction.getColor()!=null) - getWindow().setStatusBarColor(Color.parseColor(FeatureRestriction.getColor())); + if (UIKitSettings.getColor()!=null) + getWindow().setStatusBarColor(Color.parseColor(UIKitSettings.getColor())); } private void handleIntent() { diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/banned_members/CometChatBanMembersActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/banned_members/CometChatBanMembersActivity.java index 4867131..654d121 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/banned_members/CometChatBanMembersActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/banned_members/CometChatBanMembersActivity.java @@ -10,6 +10,7 @@ import android.view.View; import com.cometchat.pro.uikit.R; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; import com.google.android.material.appbar.MaterialToolbar; import com.cometchat.pro.uikit.ui_resources.constants.UIKitConstants; @@ -32,8 +33,8 @@ public void onClick(View v) { } }); handleIntent(); - if (FeatureRestriction.getColor()!=null) - getWindow().setStatusBarColor(Color.parseColor(FeatureRestriction.getColor())); + if (UIKitSettings.getColor()!=null) + getWindow().setStatusBarColor(Color.parseColor(UIKitSettings.getColor())); CometChatBanMembers banFragment = new CometChatBanMembers(); Bundle bundle = new Bundle(); bundle.putString(UIKitConstants.IntentStrings.GUID,guid); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/create_group/CometChatCreateGroup.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/create_group/CometChatCreateGroup.java index f158b5e..a4cb7e8 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/create_group/CometChatCreateGroup.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/create_group/CometChatCreateGroup.java @@ -89,7 +89,7 @@ public void beforeTextChanged(CharSequence s, int start, int count, int after) { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (!etGroupPassword.getText().toString().isEmpty() && s.toString().equals(etGroupPassword.getText().toString())) { - groupCnfPasswordLayout.setEndIconDrawable(getResources().getDrawable(R.drawable.ic_check_black_24dp)); + groupCnfPasswordLayout.setEndIconDrawable(getResources().getDrawable(R.drawable.ic_baseline_check_circle_24)); groupCnfPasswordLayout.setEndIconTintList(ColorStateList.valueOf(getResources().getColor(R.color.green_600))); } } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/create_group/CometChatCreateGroupActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/create_group/CometChatCreateGroupActivity.java index 3b02b83..1d21f88 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/create_group/CometChatCreateGroupActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/create_group/CometChatCreateGroupActivity.java @@ -12,6 +12,7 @@ import com.cometchat.pro.uikit.R; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; public class CometChatCreateGroupActivity extends AppCompatActivity { @@ -26,8 +27,8 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_screen); Fragment fragment = new CometChatCreateGroup(); getSupportFragmentManager().beginTransaction().replace(R.id.frame_fragment,fragment).commit(); - if (FeatureRestriction.getColor()!=null) - getWindow().setStatusBarColor(Color.parseColor(FeatureRestriction.getColor())); + if (UIKitSettings.getColor()!=null) + getWindow().setStatusBarColor(Color.parseColor(UIKitSettings.getColor())); } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_details/CometChatGroupDetailActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_details/CometChatGroupDetailActivity.java index 78ec891..e85eddb 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_details/CometChatGroupDetailActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_details/CometChatGroupDetailActivity.java @@ -78,6 +78,8 @@ public class CometChatGroupDetailActivity extends AppCompatActivity { private CometChatAvatar groupIcon; + private ImageView editGroup; + private String groupType; private String ownerId; @@ -124,8 +126,6 @@ public class CometChatGroupDetailActivity extends AppCompatActivity { private TextView tvLoadMore; - private List groupMembers = new ArrayList<>(); - private AlertDialog.Builder dialog; private TextView tvMemberCount; @@ -167,6 +167,13 @@ private void initComponent() { tvGroupName = findViewById(R.id.tv_group_name); tvGroupDesc = findViewById(R.id.group_description); tvGroupName.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + } + }); + editGroup = findViewById(R.id.edit_group); + + editGroup.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { updateGroupDialog(); @@ -224,6 +231,13 @@ public void onClick(View v) { // rvMemberList.setNestedScrollingEnabled(false); handleIntent(); + + if (loggedInUserScope.equalsIgnoreCase(CometChatConstants.SCOPE_ADMIN)) + editGroup.setVisibility(View.VISIBLE); + else + editGroup.setVisibility(View.GONE); + + checkDarkMode(); sharedMediaLayout = findViewById(R.id.shared_media_layout); @@ -368,8 +382,8 @@ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMen super.onCreateContextMenu(menu, v, menuInfo); MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.group_action_menu, menu); - - menu.findItem(R.id.item_make_admin).setVisible(false); + if (!ownerId.equalsIgnoreCase(loggedInUser.getUid())) + menu.findItem(R.id.item_make_admin).setVisible(false); menu.setHeaderTitle(getString(R.string.group_alert)); } @@ -382,11 +396,32 @@ public boolean onContextItemSelected(@NonNull MenuItem item) { kickMember(); } else if(item.getItemId() == R.id.item_ban) { banMember(); + } else if (item.getItemId() == R.id.item_make_admin) { + transferOwner(groupMember); } return super.onContextItemSelected(item); } + private void transferOwner(GroupMember groupMember) { + CometChat.transferGroupOwnership(guid, groupMember.getUid(), new CometChat.CallbackListener() { + @Override + public void onSuccess(String s) { + CometChatSnackBar.show(CometChatGroupDetailActivity.this, + rvMemberList, + String.format(getResources().getString(R.string.user_is_owner),groupMember.getName()), CometChatSnackBar.SUCCESS); + } + + @Override + public void onError(CometChatException e) { + CometChatSnackBar.show(CometChatGroupDetailActivity.this, + rvMemberList, + String.format(getResources().getString(R.string.update_scope_error)+e.getCode(),groupMember.getName()) + +", "+CometChatError.localized(e),CometChatSnackBar.ERROR); + } + }); + } + /** * This method is used to create dialog box on click of events like Delete Group and Exit Group @@ -495,6 +530,10 @@ private void handleIntent() { } if (getIntent().hasExtra(UIKitConstants.IntentStrings.GROUP_DESC)) { gDesc = getIntent().getStringExtra(UIKitConstants.IntentStrings.GROUP_DESC); + if (gDesc!=null) { + if (!gDesc.isEmpty()) + tvGroupDesc.setVisibility(View.VISIBLE); + } tvGroupDesc.setText(gDesc); } if (getIntent().hasExtra(UIKitConstants.IntentStrings.GROUP_PASSWORD)) { @@ -983,7 +1022,7 @@ public void afterTextChanged(Editable s) { if(!s.toString().isEmpty()) { avatar.setVisibility(View.VISIBLE); - Glide.with(CometChatGroupDetailActivity.this).load(s.toString()).into(avatar); + avatar.setAvatar(s.toString()); } else avatar.setVisibility(View.GONE); } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_list/CometChatGroupList.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_list/CometChatGroupList.java index d1e9582..cba07d4 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_list/CometChatGroupList.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_list/CometChatGroupList.java @@ -10,6 +10,7 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; import android.text.Editable; import android.text.TextWatcher; @@ -40,6 +41,7 @@ import java.util.ArrayList; import java.util.List; +import com.cometchat.pro.uikit.ui_resources.constants.UIKitConstants; import com.cometchat.pro.uikit.ui_resources.utils.CometChatError; import com.cometchat.pro.uikit.ui_resources.utils.item_clickListener.OnItemClickListener; import com.cometchat.pro.uikit.ui_components.groups.create_group.CometChatCreateGroupActivity; @@ -65,10 +67,14 @@ public class CometChatGroupList extends Fragment { private CometChatGroups rvGroupList; //Uses to display list of groups. - private GroupsRequest groupsRequest; //Uses to fetch Groups. + private SwipeRefreshLayout swipeRefreshLayout; + private GroupsRequest groupsRequest; //Uses to fetch Groups. + private TextView title; private EditText etSearch; //Uses to perform search operations on groups. + private boolean isGroupCreateVisible = true; + private ImageView clearSearch; private ImageView ivCreateGroup; @@ -87,22 +93,76 @@ public CometChatGroupList() { // Required empty public constructor } + + public void setGroupCreateVisible(boolean isVisible) { + Bundle bundle = null; + if (getArguments()!=null) { + bundle = getArguments(); + } else { + bundle = new Bundle(); + } + bundle.putBoolean(UIKitConstants.IntentStrings.CREATE_GROUP_VISIBLE, isVisible); + setArguments(bundle); + } + + public void isGroupCreateVisible() { + if (getArguments()!=null) { + isGroupCreateVisible = getArguments() + .getBoolean(UIKitConstants.IntentStrings.CREATE_GROUP_VISIBLE, true); + if (isGroupCreateVisible) + ivCreateGroup.setVisibility(View.VISIBLE); + else + ivCreateGroup.setVisibility(View.GONE); + } + } + + public void setTitleVisible(boolean isVisible) { + Bundle bundle = null; + if (getArguments()!=null) { + bundle = getArguments(); + } else { + bundle = new Bundle(); + } + bundle.putBoolean(UIKitConstants.IntentStrings.IS_TITLE_VISIBLE,isVisible); + setArguments(bundle); + } + + public void isTitleVisible() { + if (getArguments()!=null) { + boolean isVisible = getArguments() + .getBoolean(UIKitConstants.IntentStrings.IS_TITLE_VISIBLE, true); + if (isVisible) + title.setVisibility(View.VISIBLE); + else + title.setVisibility(View.GONE); + } + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view= inflater.inflate(R.layout.fragment_cometchat_grouplist, container, false); - TextView title = view.findViewById(R.id.tv_title); + title = view.findViewById(R.id.tv_title); title.setTypeface(FontUtils.getInstance(getActivity()).getTypeFace(FontUtils.robotoMedium)); rvGroupList=view.findViewById(R.id.rv_group_list); + swipeRefreshLayout = view.findViewById(R.id.swipe_refresh); noGroupLayout = view.findViewById(R.id.no_group_layout); etSearch = view.findViewById(R.id.search_bar); clearSearch = view.findViewById(R.id.clear_search); CometChatError.init(getContext()); ivCreateGroup = view.findViewById(R.id.create_group); - ivCreateGroup.setImageTintList(ColorStateList.valueOf(Color.parseColor(FeatureRestriction.getColor()))); + ivCreateGroup.setImageTintList(ColorStateList.valueOf(Color.parseColor(UIKitSettings.getColor()))); + isTitleVisible(); + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + groupsRequest = null; + rvGroupList.clear(); + fetchGroup(); + } + }); FeatureRestriction.isGroupSearchEnabled(new FeatureRestriction.OnSuccessListener() { @Override public void onSuccess(Boolean booleanVal) { @@ -115,7 +175,7 @@ public void onSuccess(Boolean booleanVal) { FeatureRestriction.isGroupCreationEnabled(new FeatureRestriction.OnSuccessListener() { @Override public void onSuccess(Boolean booleanVal) { - if (booleanVal) + if (booleanVal && isGroupCreateVisible) ivCreateGroup.setVisibility(View.VISIBLE); else ivCreateGroup.setVisibility(View.GONE); @@ -224,11 +284,13 @@ public void OnItemClick(Group group, int position) { event.OnItemClick(group,position); } }); + isGroupCreateVisible(); return view; } private void checkGroups() { - if (isPublicGroupEnabled || isPasswordGroupEnabled || isPrivateGroupEnabled) { + if ((isPublicGroupEnabled || isPasswordGroupEnabled || isPrivateGroupEnabled) + && isGroupCreateVisible) { ivCreateGroup.setVisibility(View.VISIBLE); } else ivCreateGroup.setVisibility(View.GONE); @@ -254,6 +316,8 @@ private void fetchGroup(){ public void onSuccess(List groups) { rvGroupList.setGroupList(groups); // sets the groups in rvGroupList i.e CometChatGroupList Component. groupList.addAll(groups); + if (swipeRefreshLayout.isRefreshing()) + swipeRefreshLayout.setRefreshing(false); if (groupList.size()==0) { noGroupLayout.setVisibility(View.VISIBLE); rvGroupList.setVisibility(View.GONE); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_members/CometChatGroupMemberListActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_members/CometChatGroupMemberListActivity.java index f792fdf..f79d1a7 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_members/CometChatGroupMemberListActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_members/CometChatGroupMemberListActivity.java @@ -13,6 +13,7 @@ import com.cometchat.pro.uikit.ui_resources.constants.UIKitConstants; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; public class CometChatGroupMemberListActivity extends AppCompatActivity { @@ -42,8 +43,8 @@ protected void onCreate(Bundle savedInstanceState) { bundle.putBoolean(UIKitConstants.IntentStrings.TRANSFER_OWNERSHIP,transferOwnerShip); fragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.frame_fragment,fragment).commit(); - if (FeatureRestriction.getColor()!=null) - getWindow().setStatusBarColor(Color.parseColor(FeatureRestriction.getColor())); + if (UIKitSettings.getColor()!=null) + getWindow().setStatusBarColor(Color.parseColor(UIKitSettings.getColor())); } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_members/GroupMemberAdapter.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_members/GroupMemberAdapter.java index 5fda61e..135d485 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_members/GroupMemberAdapter.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/groups/group_members/GroupMemberAdapter.java @@ -113,7 +113,7 @@ public void onBindViewHolder(@NonNull GroupMemberViewHolder groupMemberViewHolde } else if (groupMember.getScope().equals(CometChatConstants.SCOPE_MODERATOR)){ groupMemberViewHolder.userListRowBinding.txtUserScope.setText(R.string.moderator); } else { - groupMemberViewHolder.userListRowBinding.txtUserScope.setText(""); + groupMemberViewHolder.userListRowBinding.txtUserScope.setText(R.string.participant); } groupMemberViewHolder.userListRowBinding.txtUserName.setTypeface(fontUtils.getTypeFace(FontUtils.robotoMedium)); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/forward_message/CometChatForwardMessageActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/forward_message/CometChatForwardMessageActivity.java index 31a41b9..77c6c85 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/forward_message/CometChatForwardMessageActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/forward_message/CometChatForwardMessageActivity.java @@ -231,10 +231,10 @@ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { @Override public void afterTextChanged(Editable editable) { - if (editable.toString().length()!=0) { - if (conversationListAdapter != null) - conversationListAdapter.getFilter().filter(editable.toString()); - } + if (editable.toString().length()!=0) { + if (conversationListAdapter != null) + conversationListAdapter.getFilter().filter(editable.toString()); + } } }); @@ -273,7 +273,7 @@ public void OnItemClick(Conversation conversation, int position) { avatar = ((Group) conversation.getConversationWith()).getIcon(); } chip.setText(name); - Glide.with(CometChatForwardMessageActivity.this).load(avatar).placeholder(R.drawable.ic_contacts_24dp).transform(new CircleCrop()).into(new SimpleTarget() { + Glide.with(CometChatForwardMessageActivity.this).load(avatar).placeholder(R.drawable.ic_contacts).transform(new CircleCrop()).into(new SimpleTarget() { @Override public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { chip.setChipIcon(resource); @@ -294,7 +294,7 @@ public void onClick(View vw) { checkUserList(); } else { - CometChatSnackBar.show(CometChatForwardMessageActivity.this, + CometChatSnackBar.show(CometChatForwardMessageActivity.this, selectedUsers, getString(R.string.forward_to_5_at_a_time), CometChatSnackBar.WARNING); } @@ -333,7 +333,11 @@ public void onClick(View view) { } }).start(); - } else if (messageType != null && messageType.equals(CometChatConstants.MESSAGE_TYPE_IMAGE)) { + } 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); @@ -547,9 +551,9 @@ public boolean onCreateOptionsMenu(Menu menu) { @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { - if (item.getItemId()==android.R.id.home){ - onBackPressed(); - } + if (item.getItemId()==android.R.id.home){ + onBackPressed(); + } return super.onOptionsItemSelected(item); } @@ -582,7 +586,7 @@ public void onSuccess(List conversationsList) { @Override public void onError(CometChatException e) { - CometChatSnackBar.show(CometChatForwardMessageActivity.this, + CometChatSnackBar.show(CometChatForwardMessageActivity.this, rvConversationList, CometChatError.localized(e), CometChatSnackBar.ERROR); } }); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_actions/CometChatMessageActions.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_actions/CometChatMessageActions.java index 80f62e0..2bdb5d8 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_actions/CometChatMessageActions.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_actions/CometChatMessageActions.java @@ -47,10 +47,10 @@ public class CometChatMessageActions extends BottomSheetDialogFragment { private TextView shareMessage; private TextView translateMessage; private TextView retryMessage; + private TextView replyMessagePrivately; private TextView messagePrivately; - private String userName; private String userAvatar; private LinearLayout reactionsList; @@ -64,6 +64,7 @@ public class CometChatMessageActions extends BottomSheetDialogFragment { private boolean isDeleteVisible; private boolean isForwardVisible; private boolean isReplyVisible; + private boolean isReplyPrivatelyVisible; private boolean isMessageInfoVisible; private boolean isReactionsVisible; private boolean isTranslateVisible; @@ -89,6 +90,7 @@ private void fetchArguments() { isEditVisible = getArguments().getBoolean("editVisible"); isDeleteVisible = getArguments().getBoolean("deleteVisible"); isReplyVisible = getArguments().getBoolean("replyVisible"); + isReplyPrivatelyVisible = getArguments().getBoolean("replyPrivatelyVisible"); isForwardVisible = getArguments().getBoolean("forwardVisible"); isShareVisible = getArguments().getBoolean("shareVisible"); isMessageInfoVisible = getArguments().getBoolean("messageInfoVisible"); @@ -117,22 +119,6 @@ public void onGlobalLayout() { } }); - messagePrivately = view.findViewById(R.id.reply_privately); - - if ((userName!=null && userName.isEmpty()) - || (userAvatar!=null && userAvatar.isEmpty())) - messagePrivately.setVisibility(View.GONE); - else { - if (isPrivateReplyVisible) - messagePrivately.setVisibility(View.VISIBLE); - else - messagePrivately.setVisibility(View.GONE); - } - - messagePrivately.setOnClickListener(v-> { - messageActionListener.onPrivateReplyToUser(); - dismiss(); - }); reactionsList = view.findViewById(R.id.initial_reactions); List reactions = Extensions.getInitialReactions(INITIAL_REACTION_COUNT); for(Reaction reaction : reactions) { @@ -157,7 +143,7 @@ public void onClick(View view) { }); } ImageView addEmojiView = new ImageView(getContext()); - addEmojiView.setImageDrawable(getResources().getDrawable(R.drawable.add_emoji)); + addEmojiView.setImageDrawable(getResources().getDrawable(R.drawable.ic_reactions)); LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( (int)Utils.dpToPx(getContext(),36),(int)Utils.dpToPx(getContext(),36)); layoutParams.topMargin = 8; @@ -184,6 +170,19 @@ public void onClick(View view) { shareMessage = view.findViewById(R.id.share_message); messageInfo = view.findViewById(R.id.message_info); + messagePrivately = view.findViewById(R.id.reply_privately); + replyMessagePrivately = view.findViewById(R.id.reply_message_privately); + + if (isPrivateReplyVisible) + messagePrivately.setVisibility(View.VISIBLE); + else + messagePrivately.setVisibility(View.GONE); + + if (isReplyPrivatelyVisible) + replyMessagePrivately.setVisibility(View.VISIBLE); + else + replyMessagePrivately.setVisibility(View.GONE); + if (isPrivateReplyVisible) messagePrivately.setVisibility(View.VISIBLE); else @@ -236,10 +235,23 @@ public void onClick(View view) { messageInfo.setVisibility(View.VISIBLE); else messageInfo.setVisibility(View.GONE); + if (type!=null && type.equals(CometChatThreadMessageListActivity.class.getName())) { threadMessage.setVisibility(View.GONE); } + replyMessagePrivately.setOnClickListener(v-> { + if (messageActionListener!=null) + messageActionListener.onReplyMessagePrivately(); + dismiss(); + }); + messagePrivately.setOnClickListener(v-> { + if (messageActionListener!=null) { + messageActionListener.onPrivateReplyToUser(); + dismiss(); + } + }); + retryMessage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -346,6 +358,8 @@ public interface MessageActionListener { void onTranslateMessageClick(); void onRetryClick(); void onPrivateReplyToUser(); + + void onReplyMessagePrivately(); } @Override diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/CometChatMessageList.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/CometChatMessageList.java index 7243d53..82d643c 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/CometChatMessageList.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/CometChatMessageList.java @@ -5,6 +5,7 @@ import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; +import android.annotation.TargetApi; import android.app.Dialog; import android.app.ProgressDialog; import android.content.ClipData; @@ -31,9 +32,6 @@ import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateDecelerateInterpolator; @@ -48,7 +46,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.core.view.inputmethod.InputContentInfoCompat; import androidx.fragment.app.Fragment; @@ -64,6 +61,7 @@ import com.cometchat.pro.core.GroupMembersRequest; import com.cometchat.pro.core.MessagesRequest; import com.cometchat.pro.exceptions.CometChatException; +import com.cometchat.pro.helpers.CometChatHelper; import com.cometchat.pro.models.Action; import com.cometchat.pro.models.Attachment; import com.cometchat.pro.models.BaseMessage; @@ -73,6 +71,7 @@ import com.cometchat.pro.models.MediaMessage; import com.cometchat.pro.models.MessageReceipt; import com.cometchat.pro.models.TextMessage; +import com.cometchat.pro.models.TransientMessage; import com.cometchat.pro.models.TypingIndicator; import com.cometchat.pro.models.User; import com.cometchat.pro.uikit.R; @@ -110,6 +109,7 @@ import com.cometchat.pro.uikit.ui_resources.utils.pattern_utils.PatternUtils; import com.cometchat.pro.uikit.ui_resources.utils.sticker_header.StickyHeaderDecoration; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; import com.facebook.shimmer.ShimmerFrameLayout; import com.google.android.gms.location.FusedLocationProviderClient; import com.google.android.gms.location.LocationServices; @@ -260,7 +260,7 @@ public class CometChatMessageList extends Fragment implements View.OnClickListen private User loggedInUser = CometChat.getLoggedInUser(); - String[] CAMERA_PERMISSION = {Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE}; + String[] CAMERA_PERMISSION = {Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE}; private boolean isInProgress; @@ -320,7 +320,9 @@ public class CometChatMessageList extends Fragment implements View.OnClickListen private ImageView videoCallAction; private ImageView backIcon; + private BaseMessage repliedMessage; + private boolean isLiveReactionEnded = true; public CometChatMessageList() { // Required empty public constructor } @@ -351,6 +353,16 @@ private void handleArguments() { groupPassword = getArguments().getString(UIKitConstants.IntentStrings.GROUP_PASSWORD); groupType = getArguments().getString(UIKitConstants.IntentStrings.GROUP_TYPE); } + + String message = getArguments().getString(UIKitConstants.IntentStrings.MESSAGE); + if (message != null) { + try { + JSONObject repliedMessageJSON = new JSONObject(message); + repliedMessage = CometChatHelper.processMessage(repliedMessageJSON); + } catch (JSONException e) { + e.printStackTrace(); + } + } } } @@ -391,53 +403,36 @@ private void initViewComponent(View view) { composeBox.hideGroupCallOption(true); setComposeBoxListener(); - composeBox.setVisibility(View.VISIBLE); + if (type.equalsIgnoreCase(CometChatConstants.RECEIVER_TYPE_USER)) { + FeatureRestriction.isOneOnOneChatEnabled(new FeatureRestriction.OnSuccessListener() { + @Override + public void onSuccess(Boolean booleanVal) { + if (booleanVal) + composeBox.setVisibility(View.VISIBLE); + else + composeBox.setVisibility(View.GONE); + } + }); + } else if (type.equalsIgnoreCase(CometChatConstants.RECEIVER_TYPE_GROUP)) { + FeatureRestriction.isGroupChatEnabled(new FeatureRestriction.OnSuccessListener() { + @Override + public void onSuccess(Boolean booleanVal) { + if (booleanVal) + composeBox.setVisibility(View.VISIBLE); + else + composeBox.setVisibility(GONE); + } + }); + } container = view.findViewById(R.id.reactions_container); - composeBox.liveReactionBtn.setOnTouchListener(new LiveReactionListener(700, 1000, new ReactionClickListener() { - @Override - public void onClick(View var1) { - container.setAlpha(1.0f); - sendLiveReaction(); - } - + composeBox.liveReactionBtn.setOnClickListener(new View.OnClickListener() { @Override - public void onCancel(View var1) { - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - if (imageView!=null && animation!=null && animation.isRunning()) { - ObjectAnimator animator = ObjectAnimator.ofFloat(container,"alpha",0.2f); - animator.setDuration(700); - animator.start(); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - if (imageView!=null) - imageView.clearAnimation(); - container.removeAllViews(); - if (typingTimer!=null) - typingTimer.schedule(new TimerTask() { - @Override - public void run() { - JSONObject metaData = new JSONObject(); - try { - metaData.put("reaction", "heart"); - } catch (JSONException e) { - e.printStackTrace(); - } - TypingIndicator typingIndicator = new TypingIndicator(Id, type, metaData); - CometChat.endTyping(typingIndicator); - } - },2000); - } - }); - } - } - },1400); + public void onClick(View v) { + if (isLiveReactionEnded) + sendLiveReaction(); } - })); + }); newMessageLayout = view.findViewById(R.id.new_message_layout); @@ -468,12 +463,12 @@ public void onClick(View view) { public void onClickListener(Sticker sticker) { JSONObject stickerData = new JSONObject(); try { - stickerData.put("url",sticker.getUrl()); - stickerData.put("name",sticker.getName()); + stickerData.put("sticker_url", sticker.getUrl()); + stickerData.put("sticker_name", sticker.getName()); } catch (JSONException e) { e.printStackTrace(); } - sendCustomMessage(UIKitConstants.IntentStrings.STICKERS,stickerData); + sendCustomMessage(UIKitConstants.IntentStrings.STICKERS, stickerData); stickerLayout.setVisibility(GONE); } }); @@ -485,6 +480,10 @@ public void onClickListener(Sticker sticker) { replyClose = view.findViewById(R.id.iv_reply_close); replyClose.setOnClickListener(this); + if (repliedMessage != null) { + baseMessage = repliedMessage; + replyMessage(); + } rvChatListView = view.findViewById(R.id.rv_message_list); MaterialButton unblockUserBtn = view.findViewById(R.id.btn_unblock_user); @@ -532,7 +531,7 @@ public void onClickListener(Sticker sticker) { if (isEdit) { composeBox.ivMic.setVisibility(GONE); composeBox.ivSend.setVisibility(View.VISIBLE); - }else { + } else { FeatureRestriction.isVoiceNotesEnabled(new FeatureRestriction.OnSuccessListener() { @Override public void onSuccess(Boolean booleanVal) { @@ -562,16 +561,16 @@ public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newStat @Override public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) { - if (!isNoMoreMessages && !isInProgress) { - if (linearLayoutManager.findFirstVisibleItemPosition() == 10 || !rvChatListView.canScrollVertically(-1)) { - isInProgress = true; - fetchMessage(); - } - } - if (messageAdapter!=null && ((messageAdapter.getItemCount() - 1) - linearLayoutManager.findLastVisibleItemPosition() < 5)) { - newMessageLayout.setVisibility(GONE); - newMessageCount = 0; + if (!isNoMoreMessages && !isInProgress) { + if (linearLayoutManager.findFirstVisibleItemPosition() == 10 || !rvChatListView.canScrollVertically(-1)) { + isInProgress = true; + fetchMessage(); } + } + if (messageAdapter != null && ((messageAdapter.getItemCount() - 1) - linearLayoutManager.findLastVisibleItemPosition() < 5)) { + newMessageLayout.setVisibility(GONE); + newMessageCount = 0; + } } }); @@ -594,15 +593,15 @@ public void OnItemClick(String var, int position) { checkOnGoingCall(); } - private void checkOnGoingCall(String callType) { - if(CometChat.getActiveCall()!=null && CometChat.getActiveCall().getCallStatus().equals(CometChatConstants.CALL_STATUS_ONGOING) && CometChat.getActiveCall().getSessionId()!=null) { + private void checkOnGoingCall(String callType) { + if (CometChat.getActiveCall() != null && CometChat.getActiveCall().getCallStatus().equals(CometChatConstants.CALL_STATUS_ONGOING) && CometChat.getActiveCall().getSessionId() != null) { AlertDialog.Builder alert = new AlertDialog.Builder(context); alert.setTitle(getResources().getString(R.string.ongoing_call)) .setMessage(getResources().getString(R.string.ongoing_call_message)) .setPositiveButton(getResources().getString(R.string.join), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - CallUtils.joinOnGoingCall(context,CometChat.getActiveCall()); + CallUtils.joinOnGoingCall(context, CometChat.getActiveCall()); } }).setNegativeButton(getResources().getString(R.string.cancel), new DialogInterface.OnClickListener() { @Override @@ -612,18 +611,17 @@ public void onClick(DialogInterface dialog, int which) { videoCallAction.setClickable(true); } }).create().show(); - } - else { + } else { Call call = null; if (type.equalsIgnoreCase(CometChatConstants.RECEIVER_TYPE_GROUP)) - call = new Call(Id, CometChatConstants.RECEIVER_TYPE_GROUP,callType); + call = new Call(Id, CometChatConstants.RECEIVER_TYPE_GROUP, callType); else - call = new Call(Id, CometChatConstants.RECEIVER_TYPE_USER,callType); + call = new Call(Id, CometChatConstants.RECEIVER_TYPE_USER, callType); CometChat.initiateCall(call, new CometChat.CallbackListener() { @Override public void onSuccess(Call call) { CallUtils.startCallIntent(context, - ((User)call.getCallReceiver()),call.getType(),true, + ((User) call.getCallReceiver()), call.getType(), true, call.getSessionId()); } @@ -631,57 +629,58 @@ public void onSuccess(Call call) { public void onError(CometChatException e) { audioCallAction.setClickable(true); videoCallAction.setClickable(true); - Log.e(TAG, "onError: "+e.getMessage()); + Log.e(TAG, "onError: " + e.getMessage()); CometChatSnackBar.show(context, rvChatListView, - CometChatError.localized(e),CometChatSnackBar.ERROR); + CometChatError.localized(e), CometChatSnackBar.ERROR); } }); } } + /** * This method is used to check if the app has ongoing call or not and based on it show the view * through which user can join ongoing call. * */ private void checkOnGoingCall() { - if(CometChat.getActiveCall()!=null - && (CometChat.getActiveCall().getReceiverUid().equalsIgnoreCase(Id) || - CometChat.getActiveCall().getReceiverUid() - .equalsIgnoreCase(loggedInUser.getUid())) - && CometChat.getActiveCall().getCallStatus(). - equals(CometChatConstants.CALL_STATUS_ONGOING) - && CometChat.getActiveCall().getSessionId()!=null) { - - if(onGoingCallView!=null) - onGoingCallView.setVisibility(View.VISIBLE); - if(onGoingCallTxt!=null) { - onGoingCallTxt.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { + if (CometChat.getActiveCall() != null + && (CometChat.getActiveCall().getReceiverUid().equalsIgnoreCase(Id) || + CometChat.getActiveCall().getReceiverUid() + .equalsIgnoreCase(loggedInUser.getUid())) + && CometChat.getActiveCall().getCallStatus(). + equals(CometChatConstants.CALL_STATUS_ONGOING) + && CometChat.getActiveCall().getSessionId() != null) { + + if (onGoingCallView != null) + onGoingCallView.setVisibility(View.VISIBLE); + if (onGoingCallTxt != null) { + onGoingCallTxt.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onGoingCallView.setVisibility(View.GONE); + if (CometChat.getActiveCall() != null) + CallUtils.joinOnGoingCall(context, CometChat.getActiveCall()); + else { + Toast.makeText(context, getString(R.string.call_ended), Toast.LENGTH_LONG).show(); onGoingCallView.setVisibility(View.GONE); - if (CometChat.getActiveCall()!=null) - CallUtils.joinOnGoingCall(context,CometChat.getActiveCall()); - else { - Toast.makeText(context,getString(R.string.call_ended),Toast.LENGTH_LONG).show(); - onGoingCallView.setVisibility(View.GONE); - } - } - }); - } - if(onGoingCallClose!=null) { - onGoingCallClose.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - onGoingCallView.setVisibility(GONE); } - }); - } - } else if (CometChat.getActiveCall()!=null){ - if (onGoingCallView!=null) - onGoingCallView.setVisibility(GONE); - Log.e(TAG, "checkOnGoingCall: "+CometChat.getActiveCall().toString()); + } + }); } + if (onGoingCallClose != null) { + onGoingCallClose.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onGoingCallView.setVisibility(GONE); + } + }); + } + } else if (CometChat.getActiveCall() != null) { + if (onGoingCallView != null) + onGoingCallView.setVisibility(GONE); + Log.e(TAG, "checkOnGoingCall: " + CometChat.getActiveCall().toString()); + } } private void setComposeBoxListener() { @@ -792,7 +791,7 @@ public void onSuccess(Boolean booleanVal) { Toast.makeText(getContext(), "Emoji Support is not enabled", Toast.LENGTH_LONG).show(); } - } else { + } else { if (isEdit) { editMessage(baseMessage, message); editMessageLayout.setVisibility(GONE); @@ -816,17 +815,21 @@ public void onVoiceNoteComplete(String string) { @Override public void onLocationActionClicked() { - if (Utils.hasPermissions(getContext(), Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION)) { + if (Utils.hasPermissions(getContext(), Manifest.permission.ACCESS_FINE_LOCATION, + Manifest.permission.ACCESS_COARSE_LOCATION)) { initLocation(); // locationManager = (LocationManager) Objects.requireNonNull(getContext()).getSystemService(Context.LOCATION_SERVICE); - boolean provider = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); - if (!provider) { + boolean gpsprovider = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); + if (!gpsprovider) { turnOnLocation(); } else { getLocation(); } } else { requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, UIKitConstants.RequestCode.LOCATION); + if (Build.VERSION.SDK_INT == Build.VERSION_CODES.R) { + checkBackgroundLocationPermissionAPI30(UIKitConstants.RequestCode.LOCATION); + } } } @@ -844,9 +847,10 @@ public void OnResponseSuccess(Object var) { JSONObject stickersJSON = (JSONObject) var; stickersView.setData(Id, type, Extensions.extractStickersFromJSON(stickersJSON)); } + @Override public void OnResponseFailed(CometChatException e) { - CometChatSnackBar.show(context,stickersView, CometChatError.localized(e), CometChatSnackBar.ERROR); + CometChatSnackBar.show(context, stickersView, CometChatError.localized(e), CometChatSnackBar.ERROR); } }); } @@ -856,12 +860,12 @@ public void onWhiteboardClicked() { Extensions.callWhiteBoardExtension(Id, type, new ExtensionResponseListener() { @Override public void OnResponseSuccess(Object var) { - JSONObject jsonObject = (JSONObject)var; + JSONObject jsonObject = (JSONObject) var; } @Override public void OnResponseFailed(CometChatException e) { - CometChatSnackBar.show(context,rvChatListView, CometChatError.localized(e), CometChatSnackBar.ERROR); + CometChatSnackBar.show(context, rvChatListView, CometChatError.localized(e), CometChatSnackBar.ERROR); } }); } @@ -871,22 +875,44 @@ public void onWriteboardClicked() { Extensions.callWriteBoardExtension(Id, type, new ExtensionResponseListener() { @Override public void OnResponseSuccess(Object var) { - JSONObject jsonObject = (JSONObject)var; + JSONObject jsonObject = (JSONObject) var; } @Override public void OnResponseFailed(CometChatException e) { - CometChatSnackBar.show(context,rvChatListView, CometChatError.localized(e), CometChatSnackBar.ERROR); + CometChatSnackBar.show(context, rvChatListView, CometChatError.localized(e), CometChatSnackBar.ERROR); } }); } }); } + @TargetApi(30) + private void checkBackgroundLocationPermissionAPI30(int backgroundLocationRequestCode) { + if (Utils.hasPermissions(context, Manifest.permission.ACCESS_BACKGROUND_LOCATION)) + return; + AlertDialog alertDialog = new AlertDialog.Builder(context) + .setTitle(R.string.background_location_permission_title) + .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + requestPermissions(new String[]{ + Manifest.permission.ACCESS_BACKGROUND_LOCATION} + , backgroundLocationRequestCode); + } + }) + .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + + } + }).create(); + alertDialog.show(); + } private void createPollDialog() { AlertDialog.Builder alertDialog = new AlertDialog.Builder(context, R.style.MyDialogTheme); - View view = LayoutInflater.from(context).inflate(R.layout.add_polls_layout,null); + View view = LayoutInflater.from(context).inflate(R.layout.add_polls_layout, null); alertDialog.setView(view); Dialog dialog = alertDialog.create(); optionsArrayList.clear(); @@ -898,12 +924,12 @@ private void createPollDialog() { MaterialCardView addOption = view.findViewById(R.id.add_options); LinearLayout optionLayout = view.findViewById(R.id.options_layout); MaterialButton addPoll = view.findViewById(R.id.add_poll); - addPoll.setBackgroundColor(Color.parseColor(FeatureRestriction.getColor())); + addPoll.setBackgroundColor(Color.parseColor(UIKitSettings.getColor())); ImageView cancelPoll = view.findViewById(R.id.close_poll); addOption.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - View optionView = LayoutInflater.from(context).inflate(R.layout.polls_option,null); + View optionView = LayoutInflater.from(context).inflate(R.layout.polls_option, null); optionsArrayList.add(optionView); optionLayout.addView(optionView); optionView.findViewById(R.id.delete_option).setOnClickListener(new View.OnClickListener() { @@ -936,7 +962,7 @@ else if (option2Text.getText().toString().trim().isEmpty()) JSONArray optionJson = new JSONArray(); optionJson.put(option1Text.getText().toString()); optionJson.put(option2Text.getText().toString()); - for(View views : optionsArrayList) { + for (View views : optionsArrayList) { EditText optionsText = views.findViewById(R.id.option_txt); if (!optionsText.getText().toString().trim().isEmpty()) optionJson.put(optionsText.getText().toString()); @@ -958,17 +984,17 @@ public void onSuccess(JSONObject jsonObject) { public void onError(CometChatException e) { progressDialog.dismiss(); addPoll.setEnabled(true); - Log.e(TAG, "onErrorCallExtension: "+e.getMessage()); - if (view!=null) - CometChatSnackBar.show(context,view, - CometChatError.Extension.localized(e,"polls") + Log.e(TAG, "onErrorCallExtension: " + e.getMessage()); + if (view != null) + CometChatSnackBar.show(context, view, + CometChatError.Extension.localized(e, "polls") , CometChatSnackBar.ERROR); } }); } catch (Exception e) { addPoll.setEnabled(true); - Log.e(TAG, "onErrorJSON: "+e.getMessage()); - Toast.makeText(context,e.getMessage(),Toast.LENGTH_LONG).show(); + Log.e(TAG, "onErrorJSON: " + e.getMessage()); + Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show(); } } } @@ -985,27 +1011,39 @@ public void onClick(View v) { private void getLocation() { fusedLocationProviderClient.getLastLocation().addOnSuccessListener(new OnSuccessListener() { - @Override - public void onSuccess(Location location) { - if (location != null) - { - double lon = location.getLongitude(); - double lat = location.getLatitude(); + @Override + public void onSuccess(Location location_) { + if (location_ != null) { + double lon = location_.getLongitude(); + double lat = location_.getLatitude(); + + JSONObject customData = new JSONObject(); + try { + customData.put("latitude", lat); + customData.put("longitude", lon); + } catch (JSONException e) { + e.printStackTrace(); + } - JSONObject customData = new JSONObject(); - try { - customData.put("latitude", lat); - customData.put("longitude", lon); - } catch (JSONException e) { - e.printStackTrace(); - } + initAlert(customData); + } else if(location!=null) { + double lon = location.getLongitude(); + double lat = location.getLatitude(); + + JSONObject customData = new JSONObject(); + try { + customData.put("latitude", lat); + customData.put("longitude", lon); + } catch (JSONException e) { + e.printStackTrace(); + } - initAlert(customData); - } else { - Toast.makeText(context,getString(R.string.unable_to_get_location),Toast.LENGTH_LONG).show(); + initAlert(customData); + } else { + Toast.makeText(context, getString(R.string.unable_to_get_location), Toast.LENGTH_LONG).show(); + } } - } - }); + }); } private void initAlert(JSONObject customData) { @@ -1025,6 +1063,7 @@ private void initAlert(JSONObject customData) { UIKitConstants.MapUrl.MAP_ACCESS_KEY; Glide.with(this) .load(mapUrl) + .placeholder(R.drawable.default_map) .into(mapView); builder.setPositiveButton(getString(R.string.share), new DialogInterface.OnClickListener() { @@ -1055,25 +1094,31 @@ private void sendCustomMessage(String customType, JSONObject customData) { else customMessage = new CustomMessage(Id, CometChatConstants.RECEIVER_TYPE_GROUP, customType, customData); - if (customType.equalsIgnoreCase(UIKitConstants.IntentStrings.LOCATION)) { - try { - JSONObject jsonObject = customMessage.getMetadata(); - if (jsonObject==null) { - jsonObject = new JSONObject(); - jsonObject.put("incrementUnreadCount", true); - } else { - jsonObject.accumulate("incrementUnreadCount", true); - } - customMessage.setMetadata(jsonObject); - } catch(Exception e) { - Toast.makeText(context,e.getMessage(),Toast.LENGTH_LONG).show(); + String pushNotificationMessage=""; + if (customType.equalsIgnoreCase(UIKitConstants.IntentStrings.LOCATION)) + pushNotificationMessage = getString(R.string.shared_location); + else if (customType.equalsIgnoreCase(UIKitConstants.IntentStrings.STICKERS)) + pushNotificationMessage = getString(R.string.shared_a_sticker); + try { + JSONObject jsonObject = customMessage.getMetadata(); + if (jsonObject==null) { + jsonObject = new JSONObject(); + jsonObject.put("incrementUnreadCount", true); + jsonObject.put("pushNotification",pushNotificationMessage); + } else { + jsonObject.accumulate("incrementUnreadCount", true); } + customMessage.setMetadata(jsonObject); + } catch(Exception e) { + Toast.makeText(context,e.getMessage(),Toast.LENGTH_LONG).show(); } + CometChat.sendCustomMessage(customMessage, new CometChat.CallbackListener() { @Override public void onSuccess(CustomMessage customMessage) { Log.e(TAG, "onSuccessCustomMesage: "+customMessage.toString()); if (customType.equalsIgnoreCase(UIKitConstants.IntentStrings.GROUP_CALL)) { + rvSmartReply.setVisibility(GONE); if (CometChat.getActiveCall() == null) CallUtils.startDirectCall(context, Utils.getDirectCallData(customMessage)); } @@ -1115,7 +1160,9 @@ private void initLocation() { fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(getActivity()); locationListener = new LocationListener() { @Override - public void onLocationChanged(Location location) {} + public void onLocationChanged(Location l) { + location = l; + } @Override public void onStatusChanged(String provider, int status, Bundle extras) {} @Override @@ -1128,8 +1175,7 @@ public void onProviderDisabled(String provider) {} locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME, MIN_DIST, locationListener); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, MIN_TIME, MIN_DIST, locationListener); } - catch (Exception e) - { + catch (Exception e) { e.printStackTrace(); } } @@ -1543,6 +1589,7 @@ public void onSuccess(MediaMessage mediaMessage) { Log.d(TAG, "sendMediaMessage onSuccess: " + mediaMessage.toString()); if (messageAdapter != null) { messageAdapter.updateChangedMessage(mediaMessage); + rvSmartReply.setVisibility(GONE); } } @@ -1800,58 +1847,44 @@ private void replyMessage(BaseMessage baseMessage, String message) { else textMessage = new TextMessage(Id, message, CometChatConstants.RECEIVER_TYPE_GROUP); JSONObject replyObject = new JSONObject(); - replyObject.put("type", "reply"); - if (baseMessage.getCategory().equals(CometChatConstants.CATEGORY_MESSAGE)) { - if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_TEXT)) { -// replyObject.put("type", CometChatConstants.MESSAGE_TYPE_TEXT); - replyObject.put("message", ((TextMessage) baseMessage).getText()); - } else if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_IMAGE)) { -// replyObject.put("type", CometChatConstants.MESSAGE_TYPE_IMAGE); - replyObject.put("message", getString(R.string.shared_a_image)); - } else if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_VIDEO)) { -// replyObject.put("type", CometChatConstants.MESSAGE_TYPE_VIDEO); - replyObject.put("message", getString(R.string.shared_a_video)); - } else if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_FILE)) { -// replyObject.put("type", CometChatConstants.MESSAGE_TYPE_FILE); - replyObject.put("message",getString(R.string.shared_a_file)); - } else if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_AUDIO)) { -// replyObject.put("type", CometChatConstants.MESSAGE_TYPE_AUDIO); - replyObject.put("message", getString(R.string.shared_a_audio)); - } - } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.LOCATION)) { -// replyObject.put("type", UIKitConstants.IntentStrings.LOCATION); - replyObject.put("message",getString(R.string.custom_message_location)); - } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.POLLS)) { -// replyObject.put("type", UIKitConstants.IntentStrings.POLLS); - replyObject.put("message",getString(R.string.custom_message_poll)); - } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.STICKERS)) { -// replyObject.put("type", UIKitConstants.IntentStrings.STICKERS); - replyObject.put("message",getString(R.string.custom_message_sticker)); - } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.WHITEBOARD)) { -// replyObject.put("type", UIKitConstants.IntentStrings.WHITEBOARD); - replyObject.put("message",getString(R.string.custom_message_whiteboard)); - } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.WRITEBOARD)) { -// replyObject.put("type", UIKitConstants.IntentStrings.WRITEBOARD); - replyObject.put("message",getString(R.string.custom_message_document)); - } - replyObject.put("name",baseMessage.getSender().getName()); - replyObject.put("avatar",baseMessage.getSender().getAvatar()); -// jsonObject.put("reply",replyObject); + replyObject.put("reply-message", baseMessage.getRawMessage()); textMessage.setMetadata(replyObject); sendTypingIndicator(true); + textMessage.setCategory(CometChatConstants.CATEGORY_MESSAGE); + textMessage.setSender(loggedInUser); + textMessage.setMuid(System.currentTimeMillis()+""); + if (messageAdapter != null) { + MediaUtils.playSendSound(context, R.raw.outgoing_message); + messageAdapter.addMessage(textMessage); + scrollToBottom(); + } + isSmartReplyClicked=false; + rvSmartReply.setVisibility(GONE); CometChat.sendMessage(textMessage, new CometChat.CallbackListener() { @Override public void onSuccess(TextMessage textMessage) { if (messageAdapter != null) { MediaUtils.playSendSound(context, R.raw.outgoing_message); - messageAdapter.addMessage(textMessage); + messageAdapter.updateChangedMessage(textMessage); scrollToBottom(); } } @Override public void onError(CometChatException e) { - Log.e(TAG, "onError: "+e.getMessage()); + if (e.getCode().equalsIgnoreCase("ERROR_INTERNET_UNAVAILABLE")) { + CometChatSnackBar.show(context, rvChatListView, + getString(R.string.no_internet_available), CometChatSnackBar.ERROR); + } else if (!e.getCode().equalsIgnoreCase("ERR_BLOCKED_BY_EXTENSION")) { + if (messageAdapter == null) { + Log.e(TAG, "onError: MessageAdapter is null"); + } else { + textMessage.setSentAt(-1); + messageAdapter.updateChangedMessage(textMessage); + } + } else if (messageAdapter != null) { + messageAdapter.remove(textMessage); + } } }); }catch (Exception e) { @@ -1952,7 +1985,7 @@ public void onUserOnline(User user) { Log.d(TAG, "onUserOnline: " + user.toString()); if (user.getUid().equals(Id)) { status = CometChatConstants.USER_STATUS_ONLINE; - tvStatus.setText(user.getStatus()); + tvStatus.setText(getString(R.string.online)); tvStatus.setTextColor(getResources().getColor(R.color.colorPrimary)); } } @@ -1965,7 +1998,7 @@ public void onUserOffline(User user) { tvStatus.setTextColor(getResources().getColor(R.color.textColorWhite)); else tvStatus.setTextColor(getResources().getColor(android.R.color.black)); - tvStatus.setText(user.getStatus()); + tvStatus.setText(getString(R.string.offline)); status = CometChatConstants.USER_STATUS_OFFLINE; } } @@ -1980,11 +2013,8 @@ public void onUserOffline(User user) { * @param baseMessage is object of BaseMessage.class. It is message which is been marked as read. */ private void markMessageAsRead(BaseMessage baseMessage) { - CometChat.markAsRead(baseMessage); //Used for v3 -// if (type.equals(CometChatConstants.RECEIVER_TYPE_USER)) -// CometChat.markAsRead(baseMessage.getId(), baseMessage.getSender().getUid(), baseMessage.getReceiverType()); -// else -// CometChat.markAsRead(baseMessage.getId(), baseMessage.getReceiverUid(), baseMessage.getReceiverType()); + CometChat.markAsDelivered(baseMessage); + CometChat.markAsRead(baseMessage); } @@ -2056,6 +2086,12 @@ public void onMessageDeleted(BaseMessage message) { updateMessage(message); } } + @Override + public void onTransientMessageReceived(TransientMessage transientMessage) { + if (transientMessage.getData()!=null) { + setLiveReaction(); + } + } }); } @@ -2135,6 +2171,10 @@ private void setMessage(BaseMessage message) { messageList.add(message); initMessageAdapter(messageList); } + } else { + if (messageAdapter!=null) { + messageAdapter.updateReplyCount(message.getParentMessageId()); + } } } @@ -2142,9 +2182,9 @@ private void showNewMessage(int messageCount) { rvSmartReply.setVisibility(GONE); newMessageLayout.setVisibility(View.VISIBLE); if (messageCount==1) - newMessageLayoutText.setText(messageCount+" New Message"); + newMessageLayoutText.setText(messageCount+getString(R.string.new_message)); else - newMessageLayoutText.setText(messageCount+" New Messages"); + newMessageLayoutText.setText(messageCount+getString(R.string.new_messages)); newMessageLayout.setOnClickListener(v-> { newMessageCount = 0; scrollToBottom(); @@ -2178,8 +2218,7 @@ public void onSuccess(Boolean booleanVal) { } }); } - else - setLiveReaction(); + } else { if (typingIndicator.getMetadata() == null) { FeatureRestriction.isTypingIndicatorsEnabled(new FeatureRestriction.OnSuccessListener() { @@ -2190,44 +2229,14 @@ public void onSuccess(Boolean booleanVal) { } }); } - else - setLiveReaction(); } } else { if (typingIndicator.getReceiverType().equals(CometChatConstants.RECEIVER_TYPE_USER)) { if (typingIndicator.getMetadata() == null) tvStatus.setText(status); - else { - ObjectAnimator animator = ObjectAnimator.ofFloat(container,"alpha",0.2f); - animator.setDuration(700); - animator.start(); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - if (imageView!=null) - imageView.clearAnimation(); - container.removeAllViews(); - } - }); - } } else{ if (typingIndicator.getMetadata() == null) tvStatus.setText(memberNames); - else { - ObjectAnimator animator = ObjectAnimator.ofFloat(container,"alpha",0.2f); - animator.setDuration(700); - animator.start(); - animator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - if (imageView!=null) - imageView.clearAnimation(); - container.removeAllViews(); - } - }); - } } } @@ -2908,7 +2917,7 @@ public void onSuccess(Boolean booleanVal) { copyVisible = false; editVisible = false; shareVisible = false; - replyVisible = false; + replyVisible = true; translateVisible = false; threadVisible = false; BaseMessage basemessage = meetingMessageList.get(0); @@ -2954,7 +2963,9 @@ public void onSuccess(Boolean booleanVal) { if (baseMessage.getReceiverType().equalsIgnoreCase(CometChatConstants.RECEIVER_TYPE_GROUP) && !baseMessage.getSender().getUid().equalsIgnoreCase(loggedInUser.getUid())) { bundle.putBoolean("privateReplyVisible", replyPrivately); + bundle.putBoolean("replyPrivatelyVisible",replyVisible); } + if(CometChat.isExtensionEnabled("reactions")) { bundle.putBoolean("isReactionVisible", true); } else { @@ -2980,6 +2991,24 @@ public void onSuccess(Boolean booleanVal) { } } messageActionFragment.setMessageActionListener(new CometChatMessageActions.MessageActionListener() { + @Override + public void onReplyMessagePrivately() { + if (baseMessage!=null) { + User user = baseMessage.getSender(); + Intent intent = new Intent(context, CometChatMessageListActivity.class); + intent.putExtra(UIKitConstants.IntentStrings.UID, user.getUid()); + intent.putExtra(UIKitConstants.IntentStrings.AVATAR, user.getAvatar()); + intent.putExtra(UIKitConstants.IntentStrings.STATUS, user.getStatus()); + intent.putExtra(UIKitConstants.IntentStrings.LINK,user.getLink()); + intent.putExtra(UIKitConstants.IntentStrings.NAME, user.getName()); + intent.putExtra(UIKitConstants.IntentStrings.TYPE, CometChatConstants.RECEIVER_TYPE_USER); + intent.putExtra(UIKitConstants.IntentStrings.MESSAGE,baseMessage.getRawMessage().toString()); + startActivity(intent); + if (getActivity()!=null) + getActivity().finish(); + } + } + @Override public void onPrivateReplyToUser() { if (baseMessage!=null) { @@ -3215,16 +3244,29 @@ private void replyMessage() { replyMessage.setCompoundDrawablesWithIntrinsicBounds(0,0,0,0); replyMedia.setVisibility(View.VISIBLE); if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_TEXT)) { - replyMessage.setText(((TextMessage) baseMessage).getText()); +// boolean isSentimentNegative = Extensions.checkSentiment(baseMessage); +// if (isSentimentNegative) { +// replyMessage.setBackgroundColor(getResources().getColor(R.color.red)); +// replyMessage.setText(getString(R.string.sentiment_content)); +// } +// else { +// replyMessage.setBackgroundColor(getResources().getColor(android.R.color.transparent)); + replyMessage.setText(((TextMessage) baseMessage).getText()); +// } replyMedia.setVisibility(GONE); } else if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_IMAGE)) { replyMessage.setText(getResources().getString(R.string.shared_a_image)); - Glide.with(context).load(((MediaMessage) baseMessage).getAttachment().getFileUrl()).into(replyMedia); +// boolean isImageSafe = Extensions.getImageModeration(context,baseMessage); +// if (isImageSafe) + Glide.with(context).load(((MediaMessage) baseMessage).getAttachment().getFileUrl()).into(replyMedia); +// else { +// replyMedia.setImageResource(R.drawable.ic_privacy); +// } } else if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_AUDIO)) { String messageStr = String.format(getResources().getString(R.string.shared_a_audio), Utils.getFileSize(((MediaMessage) baseMessage).getAttachment().getFileSize())); replyMessage.setText(messageStr); - replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_library_music_24dp, 0, 0, 0); + replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_audio, 0, 0, 0); } else if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_VIDEO)) { replyMessage.setText(getResources().getString(R.string.shared_a_video)); Glide.with(context).load(((MediaMessage) baseMessage).getAttachment().getFileUrl()).into(replyMedia); @@ -3232,7 +3274,7 @@ private void replyMessage() { String messageStr = String.format(getResources().getString(R.string.shared_a_file), Utils.getFileSize(((MediaMessage) baseMessage).getAttachment().getFileSize())); replyMessage.setText(messageStr); - replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_insert_drive_file_black_24dp, 0, 0, 0); + replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_file_upload, 0, 0, 0); } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.LOCATION)) { try { JSONObject jsonObject = ((CustomMessage) baseMessage).getCustomData(); @@ -3260,12 +3302,15 @@ private void replyMessage() { } } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.WHITEBOARD)) { replyMessage.setText(getString(R.string.shared_a_whiteboard)); - replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_whiteboard_24dp, 0, 0, 0); + replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_collaborative_whiteboard, 0, 0, 0); } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.WRITEBOARD)) { replyMessage.setText(getString(R.string.shared_a_writeboard)); - replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_writeboard_24dp, 0, 0, 0); + replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_collaborative_document, 0, 0, 0); + } else if (baseMessage.getType().equals(UIKitConstants.IntentStrings.GROUP_CALL)) { + replyMessage.setText(getString(R.string.has_shared_group_call)); + replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_video_call_selected,0,0,0); } composeBox.ivMic.setVisibility(GONE); composeBox.ivSend.setVisibility(View.VISIBLE); @@ -3282,20 +3327,43 @@ private void sendLiveReaction() { try { JSONObject metaData = new JSONObject(); metaData.put("reaction", "heart"); - TypingIndicator typingIndicator = new TypingIndicator(Id, type, metaData); - CometChat.startTyping(typingIndicator); + metaData.put("type","live_reaction"); + TransientMessage transientMessage = new TransientMessage(Id, type, metaData); + CometChat.sendTransientMessage(transientMessage); setLiveReaction(); } catch (Exception e) { Log.e(TAG, "sendLiveReaction: "+e.getMessage()); } } + private void stopLiveReaction() { + ObjectAnimator animator = ObjectAnimator.ofFloat(container,"alpha",0.2f); + animator.setDuration(700); + animator.start(); + animator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + super.onAnimationEnd(animation); + if (imageView!=null) + imageView.clearAnimation(); + container.removeAllViews(); + isLiveReactionEnded = true; + } + }); + } private void setLiveReaction() { container.setAlpha(1.0f); - flyEmoji(R.drawable.heart_reaction); + isLiveReactionEnded = false; + animateLiveReaction(R.drawable.heart_reaction); + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + stopLiveReaction(); + } + },1500); } - private void flyEmoji(final int resId) { + private void animateLiveReaction(final int resId) { imageView = new ImageView(getContext()); FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); @@ -3359,13 +3427,13 @@ public void onSuccess(Boolean booleanVal) { }); } - if (FeatureRestriction.getColor()!=null) { + if (UIKitSettings.getColor()!=null) { audioCallAction.setImageTintList(ColorStateList.valueOf( - Color.parseColor(FeatureRestriction.getColor()))); + Color.parseColor(UIKitSettings.getColor()))); videoCallAction.setImageTintList(ColorStateList.valueOf( - Color.parseColor(FeatureRestriction.getColor()))); + Color.parseColor(UIKitSettings.getColor()))); infoAction.setImageTintList(ColorStateList.valueOf( - Color.parseColor(FeatureRestriction.getColor()))); + Color.parseColor(UIKitSettings.getColor()))); } FeatureRestriction.isShareCopyForwardMessageEnabled(new FeatureRestriction.OnSuccessListener() { diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/CometChatMessageListActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/CometChatMessageListActivity.java index 1c776b3..9eabd90 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/CometChatMessageListActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/CometChatMessageListActivity.java @@ -88,6 +88,12 @@ protected void onCreate(Bundle savedInstanceState) { bundle.putString(UIKitConstants.IntentStrings.GROUP_DESC,getIntent().getStringExtra(UIKitConstants.IntentStrings.GROUP_DESC)); bundle.putString(UIKitConstants.IntentStrings.GROUP_PASSWORD,getIntent().getStringExtra(UIKitConstants.IntentStrings.GROUP_PASSWORD)); } + + if (getIntent().hasExtra(UIKitConstants.IntentStrings.MESSAGE)) { + bundle.putString(UIKitConstants.IntentStrings.MESSAGE, + getIntent().getStringExtra(UIKitConstants.IntentStrings.MESSAGE)); + } + fragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.chat_fragment, fragment).commit(); } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/MessageAdapter.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/MessageAdapter.java index 588bed6..5a2d89b 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/MessageAdapter.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/message_list/MessageAdapter.java @@ -29,6 +29,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.cardview.widget.CardView; +import androidx.constraintlayout.widget.ConstraintLayout; import androidx.emoji.text.EmojiCompat; import androidx.emoji.text.EmojiSpan; import androidx.recyclerview.widget.RecyclerView; @@ -41,9 +42,11 @@ import com.cometchat.pro.core.Call; import com.cometchat.pro.core.CometChat; import com.cometchat.pro.exceptions.CometChatException; +import com.cometchat.pro.helpers.CometChatHelper; import com.cometchat.pro.models.Action; import com.cometchat.pro.models.Attachment; import com.cometchat.pro.models.CustomMessage; +import com.cometchat.pro.models.Group; import com.cometchat.pro.uikit.R; import com.cometchat.pro.uikit.ui_components.messages.extensions.Extensions; @@ -56,7 +59,9 @@ import com.cometchat.pro.uikit.ui_resources.utils.pattern_utils.PatternUtils; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; import com.google.android.material.button.MaterialButton; +import com.google.android.material.card.MaterialCardView; import com.google.android.material.chip.Chip; import com.google.android.material.chip.ChipGroup; @@ -580,7 +585,7 @@ private void setPollsData(PollMessageViewHolder viewHolder, int i) { public void onSuccess(Boolean booleanVal) { if (baseMessage.getReplyCount()!=0 && booleanVal) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -622,7 +627,7 @@ public void onSuccess(Boolean booleanVal) { context.startActivity(intent); }); viewHolder.optionGroup.removeAllViews(); - viewHolder.totalCount.setText("0 Votes"); + viewHolder.totalCount.setText("0"+context.getString(R.string.votes)); ArrayList optionList = new ArrayList<>(); try { JSONObject jsonObject = ((CustomMessage) baseMessage).getCustomData(); @@ -630,13 +635,20 @@ public void onSuccess(Boolean booleanVal) { ArrayList voterInfo = Extensions.getVoterInfo(baseMessage,options.length()); viewHolder.tvQuestion.setText(jsonObject.getString("question")); for (int k = 0; k < options.length(); k++) { - viewHolder.totalCount.setText(Extensions.getVoteCount(baseMessage)+" Votes"); - LinearLayout linearLayout = new LinearLayout(context); + int voteCount = Extensions.getVoteCount(baseMessage); + if (voteCount==1) { + viewHolder.totalCount.setText(voteCount + + context.getString(R.string.vote)); + } else { + viewHolder.totalCount.setText(voteCount + + context.getString(R.string.votes)); + } + LinearLayout linearLayout = new LinearLayout(context); LinearLayout.LayoutParams layoutParams = new LinearLayout .LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); linearLayout.setPadding(8,8,8,8); - linearLayout.setBackgroundColor(Color.parseColor(FeatureRestriction.getColor())); + linearLayout.setBackgroundColor(Color.parseColor(UIKitSettings.getColor())); linearLayout.setBackgroundTintList(ColorStateList.valueOf(context.getResources() .getColor(R.color.textColorWhite))); layoutParams.bottomMargin = (int) Utils.dpToPx(context, 8); @@ -653,7 +665,6 @@ public void onSuccess(Boolean booleanVal) { textViewOption.setTextColor(context.getResources().getColor(R.color.primaryTextColor)); String optionStr = options.getString(String.valueOf(k + 1)); textViewOption.setText(optionStr); - int voteCount = Extensions.getVoteCount(baseMessage); if (voteCount>0) { int percentage = Math.round((Integer.parseInt(voterInfo.get(k)) * 100) / voteCount); @@ -689,7 +700,7 @@ public void onClick(View v) { public void onSuccess(JSONObject jsonObject) { // Voted successfully viewHolder.loadingProgress.setVisibility(View.VISIBLE); - viewHolder.totalCount.setText("0 Votes"); + viewHolder.totalCount.setText("0"+context.getString(R.string.votes)); Log.e(TAG, "onSuccess: " + jsonObject.toString()); Toast.makeText(context, context.getString(R.string.voted_success), Toast.LENGTH_LONG).show(); } @@ -794,7 +805,7 @@ public void onClick(DialogInterface dialog, int which) { if (baseMessage.getReplyCount()!=0) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -837,7 +848,7 @@ public void onClick(DialogInterface dialog, int which) { } else { setSelectedMessage(baseMessage.getId()); } - notifyDataSetChanged(); + notifyItemChanged(i); } }); @@ -850,7 +861,7 @@ public boolean onLongClick(View view) { isLongClickEnabled = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -896,7 +907,7 @@ public void onClick(View v) { if (baseMessage.getReplyCount()!=0) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -939,7 +950,7 @@ public void onClick(View v) { } else { setSelectedMessage(baseMessage.getId()); } - notifyDataSetChanged(); + notifyItemChanged(i); } }); @@ -952,7 +963,7 @@ public boolean onLongClick(View view) { isLongClickEnabled = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -1001,7 +1012,7 @@ public void onClick(View v) { if (baseMessage.getReplyCount()!=0) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -1044,7 +1055,7 @@ public void onClick(View v) { } else { setSelectedMessage(baseMessage.getId()); } - notifyDataSetChanged(); + notifyItemChanged(i); } }); @@ -1057,7 +1068,7 @@ public boolean onLongClick(View view) { isLongClickEnabled = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -1099,7 +1110,7 @@ private void setLocationData(LocationMessageViewHolder viewHolder, int i) { public void onSuccess(Boolean booleanVal) { if (baseMessage.getReplyCount()!=0 && booleanVal) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -1147,6 +1158,7 @@ public void onSuccess(Boolean booleanVal) { Glide.with(context) .load(mapUrl) .diskCacheStrategy(DiskCacheStrategy.ALL) + .placeholder(R.drawable.default_map) .into(viewHolder.ivMap); } catch (JSONException e) { e.printStackTrace(); @@ -1154,7 +1166,7 @@ public void onSuccess(Boolean booleanVal) { viewHolder.senderTxt.setText(String.format(context.getString(R.string.shared_location),baseMessage.getSender().getName())); - viewHolder.navigateBtn.setOnClickListener(new View.OnClickListener() { + viewHolder.ivMap.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { @@ -1193,7 +1205,7 @@ public void onClick(View v) { else { setSelectedMessage(baseMessage.getId()); } - notifyDataSetChanged(); + notifyItemChanged(i); }); viewHolder.rlMessageBubble.setOnLongClickListener(new View.OnLongClickListener() { @Override @@ -1203,7 +1215,7 @@ public boolean onLongClick(View view) { isLocationMessageClick = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -1242,7 +1254,7 @@ private void setAudioData(AudioMessageViewHolder viewHolder, int i) { viewHolder.tvUser.setText(baseMessage.getSender().getName()); } } else { - viewHolder.playBtn.setImageTintList(ColorStateList.valueOf(Color.parseColor(FeatureRestriction.getColor()))); + viewHolder.playBtn.setImageTintList(ColorStateList.valueOf(Color.parseColor(UIKitSettings.getColor()))); } FeatureRestriction.isThreadedMessagesEnabled(new FeatureRestriction.OnSuccessListener() { @@ -1250,7 +1262,7 @@ private void setAudioData(AudioMessageViewHolder viewHolder, int i) { public void onSuccess(Boolean booleanVal) { if (baseMessage.getReplyCount()!=0 && booleanVal) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -1321,7 +1333,7 @@ public boolean onLongClick(View v) { isImageMessageClick = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -1383,7 +1395,7 @@ private void setFileData(FileMessageViewHolder viewHolder, int i) { public void onSuccess(Boolean booleanVal) { if (baseMessage.getReplyCount()!=0 && booleanVal) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -1435,7 +1447,7 @@ public void onSuccess(Boolean booleanVal) { MediaUtils.openFile(((MediaMessage) baseMessage).getAttachment().getFileUrl(),context); setSelectedMessage(baseMessage.getId()); // } - notifyDataSetChanged(); + notifyItemChanged(i); }); viewHolder.rlMessageBubble.setOnLongClickListener(new View.OnLongClickListener() { @Override @@ -1444,7 +1456,7 @@ public boolean onLongClick(View v) { isImageMessageClick = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -1518,7 +1530,7 @@ private void setImageData(ImageMessageViewHolder viewHolder, int i) { public void onSuccess(Boolean booleanVal) { if (baseMessage.getReplyCount()!=0 && booleanVal) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -1603,7 +1615,7 @@ public boolean onLongClick(View v) { isImageMessageClick = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -1687,7 +1699,7 @@ private void setStickerData(StickerMessageViewHolder viewHolder, int i) { viewHolder.stickerView.setImageDrawable(context.getResources().getDrawable(R.drawable.ic_defaulf_image)); try { - Glide.with(context).load(((CustomMessage)baseMessage).getCustomData().getString("url")).into(viewHolder.stickerView); + Glide.with(context).load(((CustomMessage)baseMessage).getCustomData().getString("sticker_url")).into(viewHolder.stickerView); } catch (JSONException e) { e.printStackTrace(); } @@ -1697,7 +1709,7 @@ private void setStickerData(StickerMessageViewHolder viewHolder, int i) { public void onSuccess(Boolean booleanVal) { if (baseMessage.getReplyCount()!=0 && booleanVal) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -1751,7 +1763,7 @@ public boolean onLongClick(View v) { isImageMessageClick = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -1792,7 +1804,7 @@ private void setVideoData(VideoMessageViewHolder viewHolder, int i) { public void onSuccess(Boolean booleanVal) { if (baseMessage.getReplyCount()!=0 && booleanVal) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -1849,7 +1861,7 @@ public boolean onLongClick(View v) { isImageMessageClick = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -2068,15 +2080,15 @@ public void onSuccess(Boolean booleanVal) { progressBar.setVisibility(View.GONE); if (baseMessage.getReadAt() != 0) { txtTime.setText(Utils.getHeaderDate(baseMessage.getReadAt() * 1000)); - txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_double_tick, 0); + txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_message_read, 0); txtTime.setCompoundDrawablePadding(10); } else if (baseMessage.getDeliveredAt() != 0) { txtTime.setText(Utils.getHeaderDate(baseMessage.getDeliveredAt() * 1000)); - txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_done_all_black_24dp, 0); + txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_message_delivered, 0); txtTime.setCompoundDrawablePadding(10); } else if (baseMessage.getSentAt()>0){ txtTime.setText(Utils.getHeaderDate(baseMessage.getSentAt() * 1000)); - txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_check_black_24dp, 0); + txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_message_sent, 0); txtTime.setCompoundDrawablePadding(10); } else if (baseMessage.getSentAt()==-1) { txtTime.setText(""); @@ -2165,72 +2177,86 @@ public void onClick(DialogInterface dialog, int which) { if (baseMessage.getMetadata()!=null) { try { JSONObject metaData = baseMessage.getMetadata(); - String messageType = metaData.getString("type"); - String message = metaData.getString("message"); - viewHolder.replyLayout.setVisibility(View.VISIBLE); - viewHolder.replyMessage.setText(message); - if (metaData.has("name")) { + if (metaData.has("reply-message")) { + JSONObject replyMessageJSON = metaData.getJSONObject("reply-message"); + BaseMessage replyMessage = CometChatHelper.processMessage(replyMessageJSON); + String messageType = replyMessage.getType(); + viewHolder.replyLayout.setVisibility(View.VISIBLE); viewHolder.replyUser.setVisibility(View.VISIBLE); - viewHolder.replyUser.setText(metaData.getString("name")); + if (replyMessage.getReceiverType().equals(CometChatConstants.RECEIVER_TYPE_USER)) + viewHolder.replyUser.setText(replyMessage.getSender().getName()); + else + viewHolder.replyUser.setText(replyMessage.getSender().getName()+ + " ~ "+((Group)replyMessage.getReceiver()).getName()); + if (messageType.equals(CometChatConstants.MESSAGE_TYPE_TEXT)) { + String message = ((TextMessage)replyMessage).getText(); + if(CometChat.isExtensionEnabled("profanity-filter")) { + message = Extensions.checkProfanityMessage(context,replyMessage); + } + if(CometChat.isExtensionEnabled("data-masking")) { + message = Extensions.checkDataMasking(context,replyMessage); + } + viewHolder.replyMessageImage.setVisibility(View.GONE); + viewHolder.replyMessage.setText(message); + } else if (messageType.equals(CometChatConstants.MESSAGE_TYPE_IMAGE)) { + viewHolder.replyMessage.setText(context.getResources().getString(R.string.message_image)); + viewHolder.replyMessageImage.setVisibility(View.GONE); + } else if (messageType.equals(CometChatConstants.MESSAGE_TYPE_AUDIO)) { + viewHolder.replyMessageImage.setVisibility(View.GONE); + viewHolder.replyMessage.setText(context.getResources() + .getString(R.string.message_audio)); + } else if (messageType.equals(CometChatConstants.MESSAGE_TYPE_VIDEO)) { + viewHolder.replyMessageImage.setVisibility(View.GONE); + viewHolder.replyMessage.setText(context.getResources().getString(R.string.message_video)); + } else if (messageType.equals(CometChatConstants.MESSAGE_TYPE_FILE)) { + viewHolder.replyMessage.setText(context.getResources().getString(R.string.message_file)); + viewHolder.replyMessageImage.setVisibility(View.GONE); + } else if (messageType.equals(UIKitConstants.IntentStrings.LOCATION)) { + viewHolder.replyMessage.setText(R.string.custom_message_location); + viewHolder.replyMessageImage.setImageResource(R.drawable.default_map); + } else if (messageType.equals(UIKitConstants.IntentStrings.POLLS)) { + viewHolder.replyMessageImage.setVisibility(View.GONE); + viewHolder.replyMessage.setText(context.getString(R.string.custom_message_poll)); + } else if (messageType.equals(UIKitConstants.IntentStrings.STICKERS)) { + viewHolder.replyMessageImage.setVisibility(View.GONE); + viewHolder.replyMessage.setText(String.format(context.getString(R.string.custom_message_sticker))); + } else if (messageType.equals(UIKitConstants.IntentStrings.WHITEBOARD)) { + viewHolder.replyMessageImage.setVisibility(View.GONE); + viewHolder.replyMessage.setText(context.getString(R.string.custom_message_whiteboard)); + } else if (messageType.equals(UIKitConstants.IntentStrings.WRITEBOARD)) { + viewHolder.replyMessageImage.setVisibility(View.GONE); + viewHolder.replyMessage.setText(context.getString(R.string.custom_message_document)); + } else if (messageType.equals(UIKitConstants.IntentStrings.GROUP_CALL)) { + viewHolder.replyMessageImage.setVisibility(View.GONE); + viewHolder.replyMessage.setText(context.getString(R.string.custom_message_meeting)); + } + viewHolder.rlMessageBubble.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View view) { + if (!isImageMessageClick) { + isLongClickEnabled = true; + isTextMessageClick = true; + setLongClickSelectedItem(baseMessage); + messageLongClick.setLongMessageClick(longselectedItemList); + notifyItemChanged(i); + } + return true; + } + }); } else { - viewHolder.replyUser.setVisibility(View.GONE); + viewHolder.replyLayout.setVisibility(View.GONE); } - }catch (Exception e) { - Log.e(TAG, "setTextData: "+e.getMessage()); + } catch(Exception e){ + Log.e(TAG, "setTextData: " + e.getMessage()); } } -// if (messageType.equals(CometChatConstants.MESSAGE_TYPE_TEXT)) { -// } else if (messageType.equals(CometChatConstants.MESSAGE_TYPE_IMAGE)) { -// viewHolder.replyMessage.setText(context.getResources().getString(R.string.shared_a_image)); -// viewHolder.replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_photo,0,0,0); -// } else if (messageType.equals(CometChatConstants.MESSAGE_TYPE_AUDIO)) { -// viewHolder.replyMessage.setText(String.format(context.getResources().getString(R.string.shared_a_audio),"")); -// viewHolder.replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_library_music_24dp,0,0,0); -// } else if (messageType.equals(CometChatConstants.MESSAGE_TYPE_VIDEO)) { -// viewHolder.replyMessage.setText(context.getResources().getString(R.string.shared_a_video)); -// viewHolder.replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_videocam_24dp,0,0,0); -// } else if (messageType.equals(CometChatConstants.MESSAGE_TYPE_FILE)) { -// viewHolder.replyMessage.setText(String.format(context.getResources().getString(R.string.shared_a_file),"")); -// viewHolder.replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_insert_drive_file_black_24dp,0,0,0); -// } else if (messageType.equals(UIKitConstants.IntentStrings.LOCATION)) { -// viewHolder.replyMessage.setText(String.format(context -// .getString(R.string.shared_location),"").trim()); -// viewHolder.replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_near_me_24dp,0,0,0); -// } else if (messageType.equals(UIKitConstants.IntentStrings.POLLS)) { -// viewHolder.replyMessage.setText(String.format(context.getString(R.string.shared_a_polls),message)); -// viewHolder.replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_poll_24dp,0,0,0); -// } else if (messageType.equals(UIKitConstants.IntentStrings.STICKERS)) { -// viewHolder.replyMessage.setText(String.format(context.getString(R.string.shared_a_sticker))); -// viewHolder.replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.default_sticker,0,0,0); -// } else if (messageType.equals(UIKitConstants.IntentStrings.WHITEBOARD)) { -// viewHolder.replyMessage.setText(context.getString(R.string.shared_a_whiteboard)); -// viewHolder.replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_whiteboard_24dp,0,0,0); -// } else if (messageType.equals(UIKitConstants.IntentStrings.WRITEBOARD)) { -// viewHolder.replyMessage.setText(context.getString(R.string.shared_a_writeboard)); -// viewHolder.replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_writeboard_24dp,0,0,0); -// } - viewHolder.rlMessageBubble.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View view) { - if (!isImageMessageClick) { - isLongClickEnabled = true; - isTextMessageClick = true; - setLongClickSelectedItem(baseMessage); - messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); - } - return true; - } - }); - - FeatureRestriction.isThreadedMessagesEnabled(new FeatureRestriction.OnSuccessListener() { @Override public void onSuccess(Boolean booleanVal) { if (baseMessage.getReplyCount()!=0 && booleanVal) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -2323,7 +2349,7 @@ public boolean onLongClick(View view) { isTextMessageClick = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -2387,7 +2413,7 @@ private void setReactionSupport(BaseMessage baseMessage, ChipGroup reactionLayou Chip chip = new Chip(context); chip.setChipStrokeWidth(2f); chip.setChipBackgroundColor(ColorStateList.valueOf(context.getResources().getColor(android.R.color.transparent))); - chip.setChipStrokeColor(ColorStateList.valueOf(Color.parseColor(FeatureRestriction.getColor()))); + chip.setChipStrokeColor(ColorStateList.valueOf(Color.parseColor(UIKitSettings.getColor()))); chip.setText(str + " " + reactionOnMessage.get(str)); reactionLayout.addView(chip); chip.setOnLongClickListener(new View.OnLongClickListener() { @@ -2485,12 +2511,12 @@ private void setColorFilter(BaseMessage baseMessage,View view){ { if (baseMessage.getSender().equals(CometChat.getLoggedInUser())) { if (view instanceof CardView) { - ((CardView)view).setCardBackgroundColor(Color.parseColor(FeatureRestriction.getColor())); + ((CardView)view).setCardBackgroundColor(Color.parseColor(UIKitSettings.getColor())); } else { if (Build.VERSION.SDK_INT >= 29) { - view.getBackground().setColorFilter(new PorterDuffColorFilter(Color.parseColor(FeatureRestriction.getColor()), PorterDuff.Mode.SRC_ATOP)); + view.getBackground().setColorFilter(new PorterDuffColorFilter(Color.parseColor(UIKitSettings.getColor()), PorterDuff.Mode.SRC_ATOP)); } else { - view.getBackground().setColorFilter(Color.parseColor(FeatureRestriction.getColor()), PorterDuff.Mode.SRC_ATOP); + view.getBackground().setColorFilter(Color.parseColor(UIKitSettings.getColor()), PorterDuff.Mode.SRC_ATOP); } } } else { @@ -2580,7 +2606,7 @@ private void setLinkData(LinkMessageViewHolder viewHolder, int i) { public void onSuccess(Boolean booleanVal) { if (baseMessage.getReplyCount()!=0 && booleanVal) { viewHolder.tvThreadReplyCount.setVisibility(View.VISIBLE); - viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" Replies"); + viewHolder.tvThreadReplyCount.setText(baseMessage.getReplyCount()+" "+context.getResources().getString(R.string.replies)); } else { viewHolder.tvThreadReplyCount.setVisibility(View.GONE); } @@ -2654,7 +2680,7 @@ public void onClick(View v) { else { setSelectedMessage(baseMessage.getId()); } - notifyDataSetChanged(); + notifyItemChanged(i); }); viewHolder.rlMessageBubble.setOnLongClickListener(new View.OnLongClickListener() { @@ -2665,7 +2691,7 @@ public boolean onLongClick(View view) { isTextMessageClick = true; setLongClickSelectedItem(baseMessage); messageLongClick.setLongMessageClick(longselectedItemList); - notifyDataSetChanged(); + notifyItemChanged(i); } return true; } @@ -2706,7 +2732,7 @@ public void setLongClickSelectedItem(BaseMessage baseMessage) { private void setAvatar(CometChatAvatar avatar, String avatarUrl, String name) { if (avatarUrl != null && !avatarUrl.isEmpty()) - Glide.with(context).load(avatarUrl).into(avatar); + avatar.setAvatar(avatarUrl); else avatar.setInitials(name); @@ -2990,6 +3016,16 @@ public int getPosition(BaseMessage baseMessage){ return messageList.indexOf(baseMessage); } + public void updateReplyCount(int parentMessageId) { + for(BaseMessage baseMessage : messageList) { + if (baseMessage.getId()==parentMessageId) { + int replyCount = baseMessage.getReplyCount(); + baseMessage.setReplyCount(++replyCount); + notifyItemChanged(messageList.indexOf(baseMessage)); + } + } + } + class ImageMessageViewHolder extends RecyclerView.ViewHolder { private ImageView imageView; @@ -3140,9 +3176,10 @@ public class TextMessageViewHolder extends RecyclerView.ViewHolder { private RelativeLayout sentimentVw; //sentiment extension layout private TextView viewSentimentMessage; //sentiment extension text - private RelativeLayout replyLayout; //reply message layout + private MaterialCardView replyLayout; //reply message layout private TextView replyUser; //reply message sender name private TextView replyMessage; //reply message text + private ImageView replyMessageImage; private ChipGroup reactionLayout; @@ -3161,6 +3198,7 @@ public class TextMessageViewHolder extends RecyclerView.ViewHolder { rlMessageBubble = view.findViewById(R.id.rl_message); replyLayout = view.findViewById(R.id.replyLayout); replyUser = view.findViewById(R.id.reply_user); + replyMessageImage = view.findViewById(R.id.reply_image); replyMessage = view.findViewById(R.id.reply_message); tvThreadReplyCount = view.findViewById(R.id.thread_reply_count); sentimentVw = view.findViewById(R.id.sentiment_layout); @@ -3234,9 +3272,8 @@ public class LocationMessageViewHolder extends RecyclerView.ViewHolder { public ImageView ivMap; public TextView tvAddress; public TextView senderTxt; - public MaterialButton navigateBtn; - public CardView cvMessageView; + public MaterialCardView cvMessageView; public TextView tvThreadReplyCount; public TextView txtTime; @@ -3259,7 +3296,6 @@ public LocationMessageViewHolder(View itemView) { ivUser = itemView.findViewById(R.id.iv_user); tvThreadReplyCount = itemView.findViewById(R.id.thread_reply_count); senderTxt = itemView.findViewById(R.id.sender_location_txt); - navigateBtn = itemView.findViewById(R.id.navigate_btn); reactionLayout = itemView.findViewById(R.id.reactions_layout); this.view = itemView; } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/CometChatThreadMessageList.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/CometChatThreadMessageList.java index 09a5eba..7449a1b 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/CometChatThreadMessageList.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/CometChatThreadMessageList.java @@ -105,6 +105,7 @@ import com.cometchat.pro.uikit.ui_resources.utils.keyboard_utils.KeyBoardUtils; import com.cometchat.pro.uikit.ui_resources.utils.sticker_header.StickyHeaderDecoration; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; import com.facebook.shimmer.ShimmerFrameLayout; import com.google.android.gms.location.FusedLocationProviderClient; import com.google.android.gms.location.LocationServices; @@ -679,7 +680,7 @@ public void run() { ivMoreOption.setVisibility(GONE); } if (replyCount>0) { - tvReplyCount.setText(replyCount + " Replies"); + tvReplyCount.setText(replyCount +" "+ getString(R.string.replies)); noReplyMessages.setVisibility(GONE); } else { @@ -775,7 +776,7 @@ private void setReactionForParentMessage() { Chip chip = new Chip(context); chip.setChipStrokeWidth(2f); chip.setChipBackgroundColor(ColorStateList.valueOf(context.getResources().getColor(android.R.color.transparent))); - chip.setChipStrokeColor(ColorStateList.valueOf(Color.parseColor(FeatureRestriction.getColor()))); + chip.setChipStrokeColor(ColorStateList.valueOf(Color.parseColor(UIKitSettings.getColor()))); chip.setText(key + " " + reactionInfo.get(key)); reactionLayout.addView(chip); chip.setOnClickListener(new View.OnClickListener() { @@ -1714,11 +1715,11 @@ private void scrollToBottom() { * @param baseMessage is object of BaseMessage.class. It is message which is been marked as read. */ private void markMessageAsRead(BaseMessage baseMessage) { - CometChat.markAsRead(baseMessage); -// if (type.equals(CometChatConstants.RECEIVER_TYPE_USER)) -// CometChat.markAsRead(baseMessage.getId(), baseMessage.getSender().getUid(), baseMessage.getReceiverType()); -// else -// CometChat.markAsRead(baseMessage.getId(), baseMessage.getReceiverUid(), baseMessage.getReceiverType()); +// CometChat.markAsRead(baseMessage); + if (type.equals(CometChatConstants.RECEIVER_TYPE_USER)) + CometChat.markAsRead(baseMessage.getId(), baseMessage.getSender().getUid(), baseMessage.getReceiverType()); + else + CometChat.markAsRead(baseMessage.getId(), baseMessage.getReceiverUid(), baseMessage.getReceiverType()); } @@ -1881,9 +1882,9 @@ private void setMessage(BaseMessage message) { private void setReply() { replyCount = replyCount+1; if (replyCount==1) - tvReplyCount.setText(replyCount+" Reply"); + tvReplyCount.setText(replyCount+" "+getString(R.string.reply)); else - tvReplyCount.setText(replyCount+" Replies"); + tvReplyCount.setText(replyCount+" "+getString(R.string.replies)); } private void checkSmartReply(BaseMessage lastMessage) { @@ -2326,6 +2327,7 @@ public void onSuccess(Boolean booleanVal) { private void showBottomSheet(CometChatMessageActions messageActionFragment) { messageActionFragment.show(getFragmentManager(),messageActionFragment.getTag()); messageActionFragment.setMessageActionListener(new CometChatMessageActions.MessageActionListener() { + @Override public void onPrivateReplyToUser() { if (baseMessage!=null) { @@ -2357,9 +2359,10 @@ public void onEditMessageClick() { } @Override - public void onReplyMessageClick() { + public void onReplyMessageClick() {} - } + @Override + public void onReplyMessagePrivately() {} @Override public void onForwardMessageClick() { @@ -2694,7 +2697,7 @@ private void replyMessage() { String messageStr = String.format(getResources().getString(R.string.shared_a_audio), Utils.getFileSize(((MediaMessage) baseMessage).getAttachment().getFileSize())); replyMessage.setText(messageStr); - replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_library_music_24dp, 0, 0, 0); + replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_audio, 0, 0, 0); } else if (baseMessage.getType().equals(CometChatConstants.MESSAGE_TYPE_VIDEO)) { replyMessage.setText(getResources().getString(R.string.shared_a_video)); Glide.with(context).load(((MediaMessage) baseMessage).getAttachment().getFileUrl()).into(replyMedia); @@ -2702,7 +2705,7 @@ private void replyMessage() { String messageStr = String.format(getResources().getString(R.string.shared_a_file), Utils.getFileSize(((MediaMessage) baseMessage).getAttachment().getFileSize())); replyMessage.setText(messageStr); - replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_insert_drive_file_black_24dp, 0, 0, 0); + replyMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_file_upload, 0, 0, 0); } composeBox.ivSend.setVisibility(View.VISIBLE); replyMessageLayout.setVisibility(View.VISIBLE); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/CometChatThreadMessageListActivity.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/CometChatThreadMessageListActivity.java index 4867c44..05bf3b0 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/CometChatThreadMessageListActivity.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/CometChatThreadMessageListActivity.java @@ -28,6 +28,7 @@ import com.cometchat.pro.uikit.ui_components.messages.message_actions.listener.OnMessageLongClick; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; /** @@ -109,8 +110,8 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cometchat_message_list); - if (FeatureRestriction.getColor() !=null) { - getWindow().setStatusBarColor(Color.parseColor(FeatureRestriction.getColor())); + if (UIKitSettings.getColor() !=null) { + getWindow().setStatusBarColor(Color.parseColor(UIKitSettings.getColor())); } EmojiCompat.Config config = new BundledEmojiCompatConfig(this); EmojiCompat.init(config); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/ThreadAdapter.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/ThreadAdapter.java index 6a5dede..32578e9 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/ThreadAdapter.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/messages/thread_message_list/ThreadAdapter.java @@ -51,7 +51,9 @@ import com.cometchat.pro.uikit.ui_resources.utils.pattern_utils.PatternUtils; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; import com.google.android.material.button.MaterialButton; +import com.google.android.material.card.MaterialCardView; import com.google.android.material.chip.Chip; import com.google.android.material.chip.ChipGroup; @@ -789,15 +791,15 @@ private void setStatusIcon(ProgressBar progressBar,TextView txtTime, BaseMessage progressBar.setVisibility(View.GONE); if (baseMessage.getReadAt() != 0) { txtTime.setText(Utils.getHeaderDate(baseMessage.getReadAt() * 1000)); - txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_double_tick, 0); + txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_message_read, 0); txtTime.setCompoundDrawablePadding(10); } else if (baseMessage.getDeliveredAt() != 0) { txtTime.setText(Utils.getHeaderDate(baseMessage.getDeliveredAt() * 1000)); - txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_done_all_black_24dp, 0); + txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_message_delivered, 0); txtTime.setCompoundDrawablePadding(10); } else if (baseMessage.getSentAt()>0){ txtTime.setText(Utils.getHeaderDate(baseMessage.getSentAt() * 1000)); - txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_check_black_24dp, 0); + txtTime.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_message_sent, 0); txtTime.setCompoundDrawablePadding(10); } else if (baseMessage.getSentAt()==-1) { txtTime.setText(""); @@ -990,7 +992,7 @@ private void setReactionSupport(BaseMessage baseMessage, ChipGroup reactionLayou Chip chip = new Chip(context); chip.setChipStrokeWidth(2f); chip.setChipBackgroundColor(ColorStateList.valueOf(context.getResources().getColor(android.R.color.transparent))); - chip.setChipStrokeColor(ColorStateList.valueOf(Color.parseColor(FeatureRestriction.getColor()))); + chip.setChipStrokeColor(ColorStateList.valueOf(Color.parseColor(UIKitSettings.getColor()))); chip.setText(str + " " + reactionOnMessage.get(str)); reactionLayout.addView(chip); chip.setOnLongClickListener(new View.OnLongClickListener() { @@ -1169,7 +1171,7 @@ public void setLongClickSelectedItem(BaseMessage baseMessage) { private void setAvatar(CometChatAvatar avatar, String avatarUrl, String name) { if (avatarUrl != null && !avatarUrl.isEmpty()) - Glide.with(context).load(avatarUrl).into(avatar); + avatar.setAvatar(avatarUrl); else avatar.setInitials(name); @@ -1485,7 +1487,7 @@ public class TextMessageViewHolder extends RecyclerView.ViewHolder { private int type; private CometChatAvatar ivUser; private RelativeLayout rlMessageBubble; - private RelativeLayout replyLayout; + private MaterialCardView replyLayout; private TextView replyUser; private TextView replyMessage; private RelativeLayout sentimentVw; diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/CometChatSnackBar.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/CometChatSnackBar.java index e398c6c..62f01b3 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/CometChatSnackBar.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/CometChatSnackBar.java @@ -37,21 +37,21 @@ private static void customSnackBar(Context context,View parentLayout,String mess ImageView closeImage = dialogView.findViewById(R.id.iv_close); ImageView iconImage = dialogView.findViewById(R.id.iv_icon); if (type.equalsIgnoreCase(ERROR)) { - iconImage.setImageResource(R.drawable.ic_baseline_error_24); + iconImage.setImageResource(R.drawable.ic_error); iconImage.setImageTintList(ColorStateList.valueOf(context.getResources().getColor(R.color.textColorWhite))); closeImage.setImageTintList(ColorStateList.valueOf(context.getResources().getColor(R.color.textColorWhite))); messageTv.setTextColor(ColorStateList.valueOf(context.getResources().getColor(R.color.textColorWhite))); dialogView.setBackgroundColor(context.getResources().getColor(R.color.red)); } else if (type.equalsIgnoreCase(INFO)) { snackbar.setDuration(Snackbar.LENGTH_LONG); - iconImage.setImageResource(R.drawable.ic_info_image); + iconImage.setImageResource(R.drawable.ic_info); iconImage.setImageTintList(ColorStateList.valueOf(context.getResources().getColor(R.color.textColorWhite))); closeImage.setImageTintList(ColorStateList.valueOf(context.getResources().getColor(R.color.textColorWhite))); messageTv.setTextColor(ColorStateList.valueOf(context.getResources().getColor(R.color.textColorWhite))); dialogView.setBackgroundColor(context.getResources().getColor(R.color.colorPrimary)); } else if (type.equalsIgnoreCase(WARNING)) { snackbar.setDuration(Snackbar.LENGTH_LONG); - iconImage.setImageResource(R.drawable.ic_warning_image); + iconImage.setImageResource(R.drawable.ic_report); iconImage.setImageTintList(ColorStateList.valueOf(context.getResources().getColor(R.color.textColorWhite))); closeImage.setImageTintList(ColorStateList.valueOf(context.getResources().getColor(R.color.textColorWhite))); messageTv.setTextColor(ColorStateList.valueOf(context.getResources().getColor(R.color.textColorWhite))); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatAvatar/CometChatAvatar.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatAvatar/CometChatAvatar.java index c43af79..5801242 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatAvatar/CometChatAvatar.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatAvatar/CometChatAvatar.java @@ -3,37 +3,24 @@ import android.app.Activity; import android.content.Context; import android.content.res.TypedArray; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.ColorFilter; -import android.graphics.Outline; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.PixelFormat; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; -import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.Drawable; -import android.text.TextPaint; import android.util.AttributeSet; import android.view.View; -import android.view.ViewOutlineProvider; +import android.widget.ImageView; +import android.widget.TextView; import android.widget.Toast; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; -import androidx.appcompat.widget.AppCompatImageView; -import androidx.databinding.BindingMethod; -import androidx.databinding.BindingMethods; import com.bumptech.glide.Glide; +import com.cometchat.pro.models.AppEntity; import com.cometchat.pro.models.Group; import com.cometchat.pro.models.User; import com.cometchat.pro.uikit.R; -import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; -import com.cometchat.pro.uikit.ui_resources.utils.Utils; +import com.google.android.material.card.MaterialCardView; /** * Purpose - This class is a subclass of AppCompatImageView, It is a component which is been used by developer @@ -45,22 +32,11 @@ * * Modified on - 20th January 2020 * -*/ -@BindingMethods(value = {@BindingMethod(type = CometChatAvatar.class, attribute = "app:avatar", method = "setAvatar"), - @BindingMethod(type = CometChatAvatar.class, attribute = "app:avatar_name", method = "setInitials")}) -public class CometChatAvatar extends AppCompatImageView { + */ +public class CometChatAvatar extends MaterialCardView { private static final String TAG = CometChatAvatar.class.getSimpleName(); - private final Class avatar = CometChatAvatar.class; - - private static final ScaleType SCALE_TYPE = ScaleType.CENTER_CROP; - - /* - * Path of them image to be clipped (to be shown) - * */ - Path clipPath; - /* * Place holder drawable (with background color and initials) * */ @@ -71,48 +47,12 @@ public class CometChatAvatar extends AppCompatImageView { * */ String text; - /* - * Used to set size and color of the member initials - * */ - TextPaint textPaint; - - /* - * Used as background of the initials with user specific color - * */ - Paint paint; - - /* - * To draw border - */ - private Paint borderPaint; - - /* - * Shape to be drawn - * */ - int shape; - - /* - * Constants to define shape - * */ - protected static final int CIRCLE = 0; - protected static final int RECTANGLE = 1; - /* * User whose avatar should be displayed * */ //User user; String avatarUrl; - /* - * Image width and height (both are same and com.cometchat.pro.uikit.UI_Resources.constant, defined in dimens.xml - * We cache them in this field - * */ - private int imageSize; - - /* - * We will set it as 2dp - * */ - int cornerRadius; /* * Bounds of the canvas in float @@ -127,9 +67,15 @@ public class CometChatAvatar extends AppCompatImageView { private int borderColor; + private int backgroundColor; + private float borderWidth; - private float borderRadius; + private float radius; + + private MaterialCardView cardView; + private ImageView imageView; + private TextView textView; public CometChatAvatar(Context context) { super(context); @@ -140,177 +86,68 @@ public CometChatAvatar(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; getAttributes(attrs); - init(); } public CometChatAvatar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.context = context; getAttributes(attrs); - init(); } private void getAttributes(AttributeSet attrs) { + View view =View.inflate(context, R.layout.cometchat_avatar,null); TypedArray a = getContext().getTheme().obtainStyledAttributes( attrs, R.styleable.Avatar, 0, 0); + /* + * Get the shape and set shape field accordingly + * */ + drawable = a.getDrawable(R.styleable.Avatar_image); + radius = a.getDimension(R.styleable.Avatar_corner_radius,16); + backgroundColor = a.getColor(R.styleable.Avatar_background_color, + getResources().getColor(R.color.colorPrimary)); + avatarUrl = a.getString(R.styleable.Avatar_avatar); +// borderRadius = a.getInteger(R.styleable.Avatar_cornerRadius,8); + borderColor = a.getColor(R.styleable.Avatar_border_color,getResources().getColor(R.color.colorPrimary)); + // backgroundColor = a.getColor(R.styleable.Avatar_backgroundColor,getResources().getColor(R.color.colorPrimary)); + borderWidth = a.getDimension(R.styleable.Avatar_border_width,1f); + + + addView(view); + + + cardView = view.findViewById(R.id.cardView); + setRadius(radius); + cardView.setCardBackgroundColor(backgroundColor); + imageView = view.findViewById(R.id.image); + textView = view.findViewById(R.id.text); + if (drawable!=null) + imageView.setImageDrawable(drawable); + } - try { - - /* - * Get the shape and set shape field accordingly - * */ - String avatarShape = a.getString(R.styleable.Avatar_avatar_shape); - avatarUrl = a.getString(R.styleable.Avatar_avatar); - borderColor =a.getColor(R.styleable.Avatar_border_color,Color.WHITE); - borderWidth=a.getDimension(R.styleable.Avatar_border_width,1); - - + private void setAvatar(@NonNull User user) { - /* - * If the attribute is not specified, consider circle shape - * */ - if (avatarShape == null) { - shape = CIRCLE; + if (user!=null) { + if (user.getAvatar() != null) { + avatarUrl = user.getAvatar(); + if (isValidContextForGlide(context)) { + setValues(); + } } else { - if (new String("rectangle").equalsIgnoreCase(avatarShape)) { - shape = RECTANGLE; - } else { - shape = CIRCLE; + if (user.getName()!=null&&!user.getName().isEmpty()) { + if (user.getName().length() > 2) { + text = user.getName().substring(0, 2); + } else { + text = user.getName(); + } + }else { + text="??"; } + imageView.setVisibility(View.GONE); + textView.setText(text); } - } finally { - a.recycle(); } - } - - @Override - public ScaleType getScaleType() { - return SCALE_TYPE; - } - - @Override - public void setScaleType(ScaleType scaleType) { - if (scaleType != SCALE_TYPE) { - throw new IllegalArgumentException(String.format("ScaleType %1$s not supported.", scaleType)); - } - } - - public void setShape(String shapestr) - { - if (shapestr.equalsIgnoreCase("circle")) { - shape = CIRCLE; - } else { - shape = RECTANGLE; - } - } - @Override - protected void onSizeChanged(int w, int h, int oldw, int oldh) { - super.onSizeChanged(w, h, oldw, oldh); - init(); - } - - @Override - public void setAdjustViewBounds(boolean adjustViewBounds) { - if (adjustViewBounds) { - throw new IllegalArgumentException("adjustViewBounds not supported."); - } - } - - @Override - public void setPadding(int left, int top, int right, int bottom) { - super.setPadding(left, top, right, bottom); - init(); - } - - @Override - public void setPaddingRelative(int start, int top, int end, int bottom) { - super.setPaddingRelative(start, top, end, bottom); - init(); - } - /* - * Initialize fields - * */ - protected void init() { - rectF = new RectF(); - clipPath = new Path(); - rectF.set(calculateBounds()); - - //imageSize = getResources().getDimensionPixelSize(R.dimen.avatar_size); - imageSize = getHeight(); - cornerRadius = (int) Utils.dpToPixel(2, getResources()); - - paint = new Paint(Paint.ANTI_ALIAS_FLAG); - if (FeatureRestriction.getColor()!=null && !FeatureRestriction.getColor().isEmpty()) { - paint.setColor(Color.parseColor(FeatureRestriction.getColor())); - } - else - paint.setColor(getResources().getColor(R.color.colorPrimary)); - - textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); - textPaint.setTextSize(16f * getResources().getDisplayMetrics().scaledDensity); - textPaint.setColor(Color.WHITE); - - borderPaint = new Paint(); - borderPaint.setStyle(Paint.Style.STROKE); - borderPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); - - borderPaint.setColor(borderColor); - borderPaint.setAntiAlias(true); - borderPaint.setStrokeWidth(borderWidth); - - if (FeatureRestriction.getColor()!=null && FeatureRestriction.getColor().isEmpty()) - color = Color.parseColor(FeatureRestriction.getColor()); - else - color = getResources().getColor(R.color.colorPrimary); - - setOutlineProvider(new OutlineProvider()); - } - - private RectF calculateBounds() { - int availableWidth = getWidth() - getPaddingLeft() - getPaddingRight(); - int availableHeight = getHeight() - getPaddingTop() - getPaddingBottom(); - - int sideLength = Math.min(availableWidth, availableHeight); - - float left = getPaddingLeft() + (availableWidth - sideLength) / 2f; - float top = getPaddingTop() + (availableHeight - sideLength) / 2f; - - return new RectF(left, top, left + sideLength, top + sideLength); - } - - /** - * This method is used to check if the user parameter passed is null or not. If it is not null then - * it will show avatar of user, else it will show default drawable or first two letter of user name. - * - * @param user is an object of User.class. - * @see User - */ - public void setAvatar(@NonNull User user) { - - if (user!=null) { - if (user.getAvatar() != null) { - avatarUrl = user.getAvatar(); - if (isValidContextForGlide(context)) { - init(); - setValues(); - } - } else { - if (user.getName()!=null&&!user.getName().isEmpty()) { - if (user.getName().length() > 2) { - text = user.getName().substring(0, 2); - } else { - text = user.getName(); - } - }else { - text="??"; - } - init(); - setImageDrawable(drawable); - setDrawable(); - } - } } @@ -321,28 +158,34 @@ public void setAvatar(@NonNull User user) { * @param group is an object of Group.class. * @see Group */ - public void setAvatar(@NonNull Group group) { - - if (group!=null) { - - if (group.getIcon() != null) { - avatarUrl = group.getIcon(); - if (isValidContextForGlide(context)) - init(); - setValues(); - } else { - if (group.getName().length() > 2) - text = group.getName().substring(0, 2); - else { - text = group.getName(); - } - - init(); - setDrawable(); - setImageDrawable(drawable); - } - } + private void setAvatar(@NonNull Group group) { + + if (group!=null) { + + if (group.getIcon() != null) { + avatarUrl = group.getIcon(); + if (isValidContextForGlide(context)) + setValues(); + } else { + if (group.getName().length() > 2) + text = group.getName().substring(0, 2); + else { + text = group.getName(); + } + imageView.setVisibility(View.GONE); + textView.setText(text); + } + } + } + + public void setAvatar(AppEntity appEntity) { + if (appEntity instanceof User) { + setAvatar((User)appEntity); + } else if (appEntity instanceof Group) { + setAvatar((Group)appEntity); + } } + /** * This method is used to set image by using url passed in parameter.. * @@ -353,7 +196,6 @@ public void setAvatar(@NonNull String avatarUrl) { this.avatarUrl = avatarUrl; if (isValidContextForGlide(context)) - init(); setValues(); } @@ -366,7 +208,6 @@ public void setAvatar(Drawable drawable, @NonNull String avatarUrl) { this.drawable = drawable; this.avatarUrl = avatarUrl; if (isValidContextForGlide(context)) { - init(); setValues(); } } @@ -387,10 +228,16 @@ public void setInitials(@NonNull String name) { }else { text=name; } - setDrawable(); - setImageDrawable(drawable); + imageView.setVisibility(View.GONE); + textView.setText(text); + textView.setVisibility(View.VISIBLE); } + public void setAvatar(String url,String name) { + setAvatar(url); + if (url==null) + setInitials(name); + } public float getBorderWidth() { return borderWidth; } @@ -398,6 +245,12 @@ public Drawable getDrawable() { return drawable; } + + public void setDrawable(Drawable drawable) { + imageView.setImageDrawable(drawable); + imageView.setVisibility(View.VISIBLE); + textView.setVisibility(View.GONE); + } /* * Set user specific fields in here * */ @@ -408,12 +261,10 @@ private void setValues() { Glide.with(context) .load(avatarUrl) .placeholder(drawable) - .centerCrop() - .override(imageSize, imageSize) - .into(this); + .into(imageView); } - } else { - setImageDrawable(drawable); + imageView.setVisibility(View.VISIBLE); + textView.setVisibility(View.GONE); } } catch (Exception e) { Toast.makeText(context,e.getMessage(),Toast.LENGTH_LONG).show(); @@ -435,98 +286,13 @@ public static boolean isValidContextForGlide(final Context context) { } - /* - * Create placeholder drawable - * */ - private void setDrawable() { - drawable = new Drawable() { - @Override - public void draw(@NonNull Canvas canvas) { - - int centerX = Math.round(canvas.getWidth() * 0.5f); - int centerY = Math.round(canvas.getHeight() * 0.5f); - - /* - * To draw text - * */ - if (text != null) { - float textWidth = textPaint.measureText(text) * 0.5f; - float textBaseLineHeight = textPaint.getFontMetrics().ascent * -0.4f; - - /* - * Draw the background color before drawing initials text - * */ - if (shape == RECTANGLE) { - canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, paint); - } else { - canvas.drawCircle(centerX, - centerY, - Math.max(canvas.getHeight() / 2, textWidth / 2), - paint); - } - - /* - * Draw the text above the background color - * */ - canvas.drawText(text, centerX - textWidth, centerY + textBaseLineHeight, textPaint); - } - } - - @Override - public void setAlpha(int alpha) { - - } - - @Override - public void setColorFilter(ColorFilter colorFilter) { - - } - - @Override - public int getOpacity() { - return PixelFormat.UNKNOWN; - } - }; - } - - /* - * Set the canvas bounds here - * */ - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - int screenWidth = MeasureSpec.getSize(widthMeasureSpec); - int screenHeight = MeasureSpec.getSize(heightMeasureSpec); - rectF.set(0, 0, screenWidth, screenHeight); - } - - @Override - protected void onDraw(Canvas canvas) { - if (shape == RECTANGLE) { - canvas.drawRoundRect(rectF, cornerRadius, cornerRadius, borderPaint); - clipPath.addRoundRect(rectF, cornerRadius, cornerRadius, Path.Direction.CCW); - } else { - canvas.drawCircle(rectF.centerX(), rectF.centerY(), (rectF.height() / 2)-borderWidth, borderPaint); - - clipPath.addCircle(rectF.centerX(), rectF.centerY(), (rectF.height() / 2)-borderWidth, Path.Direction.CCW); - } - - canvas.clipPath(clipPath); - super.onDraw(canvas); - } - - @Override - public void setBackgroundColor(int color) { - this.paint.setColor(color); - } - /** * This method is used to set border color of avatar. * @param color */ public void setBorderColor(@ColorInt int color) { this.borderColor = color; - this.borderPaint.setColor(color); + cardView.setStrokeColor(color); } /** @@ -536,19 +302,17 @@ public void setBorderColor(@ColorInt int color) { public void setBorderWidth(int borderWidth) { this.borderWidth = borderWidth; - this.borderPaint.setStrokeWidth(borderWidth); - invalidate(); + cardView.setStrokeWidth(borderWidth); } - private class OutlineProvider extends ViewOutlineProvider { - - @Override - public void getOutline(View view, Outline outline) { - Rect bounds = new Rect(); - rectF.roundOut(bounds); - outline.setRoundRect(bounds, bounds.width() / 2.0f); - } - + public void setCornerRadius(int radius) { + this.radius = radius; + cardView.setRadius(radius); + setRadius(radius); } + public void setBackgroundColor(@ColorInt int color) { + this.backgroundColor = color; + imageView.setBackgroundColor(backgroundColor); + } } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatBadgeCount/CometChatBadgeCount.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatBadgeCount/CometChatBadgeCount.java index 149faf5..be0940d 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatBadgeCount/CometChatBadgeCount.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatBadgeCount/CometChatBadgeCount.java @@ -16,6 +16,7 @@ import com.cometchat.pro.uikit.ui_components.shared.cometchatAvatar.CometChatAvatar; import com.cometchat.pro.uikit.R; +import com.google.android.material.card.MaterialCardView; /** * Purpose - This class is a subclass of LinearLayout, It is a component which is been used by developer @@ -27,13 +28,15 @@ * * Modified on - 16th January 2020 * -*/ + */ -@BindingMethods(value = {@BindingMethod(type = CometChatAvatar.class, attribute = "app:count", method = "setCount")}) -public class CometChatBadgeCount extends LinearLayout { +@BindingMethods(value = {@BindingMethod(type = CometChatBadgeCount.class, attribute = "app:count", method = "setCount")}) +public class CometChatBadgeCount extends MaterialCardView { private TextView tvCount; //Used to display count + private MaterialCardView countView; + private int count; //Used to store value of count private float countSize; //Used to store size of count @@ -80,19 +83,18 @@ private void initViewComponent(Context context, AttributeSet attributeSet, int d addView(view); - if (count==0){ - setVisibility(INVISIBLE); - }else { - setVisibility(VISIBLE); - } + if (count==0){ + setVisibility(INVISIBLE); + }else { + setVisibility(VISIBLE); + } + countView = view.findViewById(R.id.count_parent); tvCount = view.findViewById(R.id.tvSetCount); - tvCount.setBackground(getResources().getDrawable(R.drawable.count_background)); tvCount.setTextSize(countSize); tvCount.setTextColor(countColor); tvCount.setText(String.valueOf(count)); setCountBackground(countBackgroundColor); - } /** @@ -100,11 +102,15 @@ private void initViewComponent(Context context, AttributeSet attributeSet, int d * @param color is an object of Color.class . It is used as color for background. */ public void setCountBackground(@ColorInt int color) { - Drawable unwrappedDrawable = tvCount.getBackground(); - Drawable wrappedDrawable = DrawableCompat.wrap(unwrappedDrawable); - DrawableCompat.setTint(wrappedDrawable,color); + countView.setCardBackgroundColor(color); + setCardBackgroundColor(color); } + + public void setCornerRadius(float radius) { + countView.setRadius(radius); + setRadius(radius); + } /** * This method is used to set color of count i.e integer. * @param color is an object of Color.class. It is used as color of text in tvCount (TextView) diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatCalls/CometChatCallsAdapter.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatCalls/CometChatCallsAdapter.java index ebedb86..af72a2f 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatCalls/CometChatCallsAdapter.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatCalls/CometChatCallsAdapter.java @@ -27,6 +27,7 @@ import com.cometchat.pro.uikit.ui_resources.utils.FontUtils; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; import com.cometchat.pro.uikit.ui_resources.utils.Utils; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; /** * Purpose - CallListAdapter is a subclass of RecyclerView Adapter which is used to display @@ -173,18 +174,22 @@ public void onBindViewHolder(@NonNull CallViewHolder callViewHolder, int positio } if (isVideo) { - callViewHolder.callListRowBinding.callMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_videocam_24dp,0,0,0); + if(isIncoming) { + callViewHolder.callListRowBinding.callMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_incoming_video_call,0,0,0); + } else { + callViewHolder.callListRowBinding.callMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_outgoing_video_call,0,0,0); + } } else { if (isIncoming && isMissed) { callViewHolder.callListRowBinding.callMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_call_missed_incoming_24dp,0,0,0); } else if(isIncoming && !isMissed) { - callViewHolder.callListRowBinding.callMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_call_incoming_24dp,0,0,0); + callViewHolder.callListRowBinding.callMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_incoming_call,0,0,0); } else if (!isIncoming && isMissed) { callViewHolder.callListRowBinding.callMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_call_missed_outgoing_24dp,0,0,0); } else { - callViewHolder.callListRowBinding.callMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_call_outgoing_24dp,0,0,0); + callViewHolder.callListRowBinding.callMessage.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_outgoing_call,0,0,0); } } callViewHolder.callListRowBinding.calltimeTv.setText(Utils.getLastMessageDate(context,call.getInitiatedAt())); @@ -199,7 +204,7 @@ public void onBindViewHolder(@NonNull CallViewHolder callViewHolder, int positio } callViewHolder.callListRowBinding.callIv.setImageTintList( - ColorStateList.valueOf(Color.parseColor(FeatureRestriction.getColor()))); + ColorStateList.valueOf(Color.parseColor(UIKitSettings.getColor()))); } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatComposeBox/CometChatComposeBox.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatComposeBox/CometChatComposeBox.java index a72c03c..eba8886 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatComposeBox/CometChatComposeBox.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatComposeBox/CometChatComposeBox.java @@ -43,6 +43,7 @@ import com.cometchat.pro.uikit.ui_resources.utils.audio_visualizer.AudioRecordView; import com.cometchat.pro.uikit.ui_settings.FeatureRestriction; import com.cometchat.pro.uikit.ui_resources.utils.Utils; +import com.cometchat.pro.uikit.ui_settings.UIKitSettings; public class CometChatComposeBox extends RelativeLayout implements View.OnClickListener { @@ -66,7 +67,7 @@ public class CometChatComposeBox extends RelativeLayout implements View.OnClickL private boolean isOpen,isRecording,isPlaying,voiceMessage; - public ImageView ivAudio,ivCamera,ivGallery, ivFile,ivSend,ivArrow,ivMic,ivDelete; + public ImageView ivSend,ivArrow,ivMic,ivDelete; private SeekBar voiceSeekbar; @@ -151,29 +152,17 @@ public void onAudioFocusChange(int focusChange) { voiceMessageLayout=this.findViewById(R.id.voiceMessageLayout); recordTime=this.findViewById(R.id.record_time); voiceSeekbar=this.findViewById(R.id.voice_message_seekbar); - ivCamera=this.findViewById(R.id.ivCamera); - ivGallery=this.findViewById(R.id.ivImage); - ivAudio = this.findViewById(R.id.ivAudio); - ivFile =this.findViewById(R.id.ivFile); - ivSend=this.findViewById(R.id.ivSend); ivArrow=this.findViewById(R.id.ivArrow); etComposeBox=this.findViewById(R.id.etComposeBox); - rlActionContainer=this.findViewById(R.id.rlActionContainers); + ivSend=this.findViewById(R.id.ivSend); ivArrow.setImageTintList(ColorStateList.valueOf(color)); - ivCamera.setImageTintList(ColorStateList.valueOf(color)); - ivGallery.setImageTintList(ColorStateList.valueOf(color)); - ivFile.setImageTintList(ColorStateList.valueOf(color)); ivSend.setImageTintList(ColorStateList.valueOf(color)); - ivAudio.setOnClickListener(this); ivArrow.setOnClickListener(this); ivSend.setOnClickListener(this); ivDelete.setOnClickListener(this); - ivFile.setOnClickListener(this); ivMic.setOnClickListener(this); - ivGallery.setOnClickListener(this); - ivCamera.setOnClickListener(this); composeBoxActionFragment = new CometChatComposeBoxActions(); @@ -257,28 +246,21 @@ public void OnMediaSelected(InputContentInfoCompat i) { if (Utils.isDarkMode(context)) { composeBox.setBackgroundColor(getResources().getColor(R.color.darkModeBackground)); - ivAudio.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.textColorWhite))); - ivMic.setImageDrawable(getResources().getDrawable(R.drawable.ic_mic_white_24dp)); + ivMic.setImageDrawable(getResources().getDrawable(R.drawable.ic_microphone_white_selected)); flBox.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.textColorWhite))); etComposeBox.setTextColor(getResources().getColor(R.color.textColorWhite)); ivArrow.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.textColorWhite))); ivSend.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.textColorWhite))); - ivCamera.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.textColorWhite))); - ivGallery.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.textColorWhite))); - ivFile.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.textColorWhite))); } else { composeBox.setBackgroundColor(getResources().getColor(R.color.textColorWhite)); - ivAudio.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.colorPrimary))); - ivMic.setImageDrawable(getResources().getDrawable(R.drawable.ic_mic_grey_24dp)); + ivMic.setImageDrawable(getResources().getDrawable(R.drawable.ic_microphone_grey_selected)); etComposeBox.setTextColor(getResources().getColor(R.color.primaryTextColor)); ivSend.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.colorPrimary))); flBox.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.grey))); ivArrow.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.grey))); - ivCamera.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.colorPrimary))); - ivFile.setImageTintList(ColorStateList.valueOf(getResources().getColor(R.color.colorPrimary))); } - if (FeatureRestriction.getColor()!=null) { - int settingsColor = Color.parseColor(FeatureRestriction.getColor()); + if (UIKitSettings.getColor()!=null) { + int settingsColor = Color.parseColor(UIKitSettings.getColor()); ivSend.setImageTintList(ColorStateList.valueOf(settingsColor)); } fetchSettings(); @@ -362,18 +344,10 @@ public void setColor(int color) { ivSend.setImageTintList(ColorStateList.valueOf(color)); - ivCamera.setImageTintList(ColorStateList.valueOf(color)); - ivGallery.setImageTintList(ColorStateList.valueOf(color)); - ivFile.setImageTintList(ColorStateList.valueOf(color)); - ivArrow.setImageTintList(ColorStateList.valueOf(color)); } public void setComposeBoxListener(ComposeActionListener composeActionListener){ this.composeActionListener=composeActionListener; - - this.composeActionListener.getCameraActionView(ivCamera); - this.composeActionListener.getGalleryActionView(ivGallery); - this.composeActionListener.getFileActionView(ivFile); } @Override @@ -385,19 +359,13 @@ public void onClick(View view) { etComposeBox.setVisibility(View.VISIBLE); ivArrow.setVisibility(View.VISIBLE); ivMic.setVisibility(View.VISIBLE); - ivMic.setImageDrawable(getResources().getDrawable(R.drawable.ic_mic_grey_24dp)); + ivMic.setImageDrawable(getResources().getDrawable(R.drawable.ic_microphone_grey_selected)); isPlaying = false; isRecording = false; voiceMessage = false; ivDelete.setVisibility(GONE); ivSend.setVisibility(View.GONE); } - if (view.getId()==R.id.ivCamera){ -// composeActionListener.onCameraActionClicked(ivCamera); - } - if (view.getId()==R.id.ivImage){ -// composeActionListener.onGalleryActionClicked(ivGallery); - } if (view.getId()==R.id.ivSend){ if (!voiceMessage) { composeActionListener.onSendActionClicked(etComposeBox); @@ -413,15 +381,9 @@ public void onClick(View view) { isRecording = false; isPlaying = false; voiceMessage = false; - ivMic.setImageResource(R.drawable.ic_mic_grey_24dp); + ivMic.setImageResource(R.drawable.ic_microphone_grey_selected); } - } - if(view.getId()==R.id.ivAudio) { -// composeActionListener.onAudioActionClicked(ivAudio); - } - if (view.getId()==R.id.ivFile){ -// composeActionListener.onFileActionClicked(ivFile); } if(view.getId()==R.id.ivArrow) { // if (isOpen) { diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatConversations/CometChatConversations.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatConversations/CometChatConversations.java index c5d4d21..92bac8a 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatConversations/CometChatConversations.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatConversations/CometChatConversations.java @@ -15,6 +15,7 @@ import com.cometchat.pro.models.BaseMessage; import com.cometchat.pro.models.Conversation; import com.cometchat.pro.models.MessageReceipt; +import com.cometchat.pro.models.TypingIndicator; import com.cometchat.pro.uikit.R; import java.util.List; @@ -188,4 +189,9 @@ public void clearList() { public int size() { return conversationViewModel.size(); } + + public void setTypingIndicator(TypingIndicator typingIndicator, boolean b) { + if (conversationViewModel!=null) + conversationViewModel.setTypingIndicator(typingIndicator,b); + } } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatConversations/CometChatConversationsAdapter.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatConversations/CometChatConversationsAdapter.java index f907f46..443849d 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatConversations/CometChatConversationsAdapter.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_components/shared/cometchatConversations/CometChatConversationsAdapter.java @@ -3,6 +3,7 @@ import android.content.Context; import android.graphics.Color; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -17,6 +18,7 @@ import com.cometchat.pro.constants.CometChatConstants; import com.cometchat.pro.core.CometChat; import com.cometchat.pro.models.MessageReceipt; +import com.cometchat.pro.models.TypingIndicator; import com.cometchat.pro.uikit.R; import com.cometchat.pro.models.BaseMessage; import com.cometchat.pro.models.Conversation; @@ -35,6 +37,8 @@ import com.cometchat.pro.uikit.ui_resources.utils.Utils; import com.cometchat.pro.uikit.ui_settings.UIKitSettings; +import org.json.JSONObject; + /** * Purpose - ConversationListAdapter is a subclass of RecyclerView Adapter which is used to display * the list of conversations. It helps to organize the list data in recyclerView. @@ -63,6 +67,9 @@ public class CometChatConversationsAdapter extends RecyclerView.Adapter userList = new ArrayList<>(); + private SwipeRefreshLayout swipeRefreshLayout; + public CometChatUserList() { // Required empty public constructor } @@ -123,6 +127,15 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, clearSearch = view.findViewById(R.id.clear_search); rlSearchBox=view.findViewById(R.id.rl_search_box); + swipeRefreshLayout = view.findViewById(R.id.swipe_refresh); + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + usersRequest= null; + rvUserList.clear(); + fetchUsers(); + } + }); CometChatError.init(getContext()); shimmerFrameLayout=view.findViewById(R.id.shimmer_layout); @@ -142,6 +155,7 @@ public void onSuccess(Boolean booleanVal) { } }); + isTitleVisible(); etSearch.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { } @@ -176,6 +190,8 @@ public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) { } }); + + clearSearch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -213,13 +229,27 @@ public void OnItemClick(User user, int position) { return view; } + private void isTitleVisible() { + if (getArguments()!=null) { + boolean isVisible = getArguments().getBoolean(UIKitConstants.IntentStrings.IS_TITLE_VISIBLE,true); + if (isVisible) + title.setVisibility(View.VISIBLE); + else + title.setVisibility(View.GONE); + } + } + private void stopHideShimmer() { shimmerFrameLayout.stopShimmer(); shimmerFrameLayout.setVisibility(View.GONE); - title.setVisibility(View.VISIBLE); rlSearchBox.setVisibility(View.VISIBLE); } + public void setTitleVisible(boolean isVisible) { + Bundle bundle = new Bundle(); + bundle.putBoolean(UIKitConstants.IntentStrings.IS_TITLE_VISIBLE,isVisible); + setArguments(bundle); + } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { @@ -250,6 +280,8 @@ public void onSuccess(List users) { userList.addAll(users); stopHideShimmer(); rvUserList.setUserList(users); // set the users to rvUserList i.e CometChatUserList Component. + if (swipeRefreshLayout.isRefreshing()) + swipeRefreshLayout.setRefreshing(false); if (userList.size()==0) { noUserLayout.setVisibility(View.VISIBLE); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/constants/UIKitConstants.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/constants/UIKitConstants.java index 002667e..b8a2b2f 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/constants/UIKitConstants.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/constants/UIKitConstants.java @@ -67,6 +67,8 @@ public static class IntentStrings { public static final String MESSAGE_TYPE_IMAGE_SIZE = "file_size"; + public static final String MESSAGE = "message"; + public static final String SHOW_MODERATORLIST = "is_moderator"; public static final String GROUP_DESC = "group_description"; @@ -109,7 +111,7 @@ public static class IntentStrings { public static final String TRANSFER_OWNERSHIP = "transfer_ownership"; - public static final String STICKERS = "Sticker"; + public static final String STICKERS = "extension_sticker"; public static final String REACTION_INFO = "reaction_info"; @@ -131,6 +133,9 @@ public static class IntentStrings { public static final String LINK = "link"; + public static final String IS_TITLE_VISIBLE = "IS_TITLE_VISIBLE"; + public static final String CREATE_GROUP_VISIBLE = "IS_CREATE_GROUP_VISIBLE"; + public static String POLL_QUESTION = "poll_question"; public static String POLL_OPTION = "poll_option"; diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/CometChatError.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/CometChatError.java index 7487941..cf15dea 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/CometChatError.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/CometChatError.java @@ -52,15 +52,9 @@ else if (e.getCode().equalsIgnoreCase(ERROR_INVALID_GUID_MESSAGE)) { } else if (e.getCode().equalsIgnoreCase(ERROR_UID_WITH_SPACE_MESSAGE)) { return new CometChatException(ERROR_UID_WITH_SPACE_MESSAGE, errorContext.getString(R.string.err_uid_with_space_message)).getMessage(); - } else if (e.getCode().equalsIgnoreCase(ERROR_UID_GUID_NOT_SPECIFIED_MESSAGE)) { - return new CometChatException(ERROR_UID_GUID_NOT_SPECIFIED_MESSAGE, - errorContext.getString(R.string.err_uid_guid_not_specified_message)).getMessage(); } else if (e.getCode().equalsIgnoreCase(ERROR_INTERNET_UNAVAILABLE_MESSAGE)) { return new CometChatException(ERROR_INTERNET_UNAVAILABLE_MESSAGE, errorContext.getString(R.string.err_internet_unavailable)).getMessage(); - } else if (e.getCode().equalsIgnoreCase(ERROR_REQUEST_IN_PROGRESS_MESSAGE)) { - return new CometChatException(ERROR_REQUEST_IN_PROGRESS_MESSAGE, - errorContext.getString(R.string.err_request_in_progress_message)).getMessage(); } else if (e.getCode().equalsIgnoreCase(ERROR_EMPTY_GROUP_NAME_MESSAGE)) { return new CometChatException(ERROR_EMPTY_GROUP_NAME_MESSAGE, errorContext.getString(R.string.err_empty_group_name_message)).getMessage(); diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/EncryptionUtils.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/EncryptionUtils.java new file mode 100644 index 0000000..5dd74c9 --- /dev/null +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/EncryptionUtils.java @@ -0,0 +1,97 @@ +package com.cometchat.pro.uikit.ui_resources.utils; + +import java.math.BigInteger; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.security.SecureRandom; + +import javax.crypto.Cipher; +import javax.crypto.SecretKey; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +public class EncryptionUtils { + + private static final String ENCRYPT_ALGO = "AES/CBC/PKCS5Padding"; + private static final int TAG_LENGTH_BIT = 128; + private static final int IV_LENGTH_BYTE = 16; + + private static final Charset UTF_8 = StandardCharsets.UTF_8; + + // hex representation + public static String hex(byte[] bytes) { + StringBuilder result = new StringBuilder(); + for (byte b : bytes) { + result.append(String.format("%02x", b)); + } + return result.toString(); + } + + public static byte[] toByteArray(String hexString) { + byte[] byteArray = new BigInteger(hexString, 16) + .toByteArray(); + if (byteArray[0] == 0) { + byte[] output = new byte[byteArray.length - 1]; + System.arraycopy( + byteArray, 1, output, + 0, output.length); + return output; + } + return byteArray; + } + // AES-GCM needs GCMParameterSpec + public static byte[] encrypt(byte[] pText, SecretKeySpec secret, byte[] iv) throws Exception { + + Cipher cipher = Cipher.getInstance(ENCRYPT_ALGO); + cipher.init(Cipher.ENCRYPT_MODE, secret, new IvParameterSpec(iv)); + byte[] encryptedText = cipher.doFinal(pText); + return encryptedText; + + } + + // prefix IV length + IV bytes to cipher text + public static byte[] encryptWithPrefixIV(byte[] pText, SecretKeySpec secret, byte[] iv) throws Exception { + + byte[] cipherText = encrypt(pText, secret, iv); + + byte[] cipherTextWithIv = ByteBuffer.allocate(iv.length + cipherText.length) + .put(iv) + .put(cipherText) + .array(); + return cipherTextWithIv; + + } + + public static String decrypt(byte[] cText, SecretKey secret, byte[] iv) throws Exception { + + Cipher cipher = Cipher.getInstance(ENCRYPT_ALGO); + cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(iv)); + byte[] plainText = cipher.doFinal(cText); + return new String(plainText, UTF_8); + + } + + public static byte[] getRandomNonce(int numBytes) { + byte[] nonce = new byte[numBytes]; + new SecureRandom().nextBytes(nonce); + return nonce; + } + + public static String decryptWithPrefixIV(byte[] cText, SecretKey secret) throws Exception { + + ByteBuffer bb = ByteBuffer.wrap(cText); + + byte[] iv = new byte[IV_LENGTH_BYTE]; + bb.get(iv); + //bb.get(iv, 0, iv.length); + + byte[] cipherText = new byte[bb.remaining()]; + bb.get(cipherText); + + String plainText = decrypt(cipherText, secret, iv); + return plainText; + + } +} diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/Utils.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/Utils.java index b04a785..f2f6d98 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/Utils.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_resources/utils/Utils.java @@ -11,7 +11,10 @@ import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; import android.location.Address; import android.location.Geocoder; import android.media.AudioManager; @@ -77,6 +80,8 @@ import kotlin.ranges.RangesKt; +import static android.os.Environment.DIRECTORY_DOCUMENTS; + public class Utils { private static final String TAG = "Utils"; @@ -657,10 +662,18 @@ public static String getOutputMediaFile(Context context) { if (!var0.exists() && !var0.mkdirs()) { return null; } else { - String var1 = Environment.getExternalStorageDirectory() + "/" + context.getResources().getString(R.string.app_name) + "/" - + "audio/"; - createDirectory(var1); - return var1 + (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date()) + ".mp3"; + String dir; + if (Build.VERSION_CODES.R > Build.VERSION.SDK_INT) { + dir = Environment.getExternalStorageDirectory()+"/"+context.getResources().getString(R.string.app_name) + "/" + + "audio/"; + } else { + dir = Environment.getExternalStoragePublicDirectory(DIRECTORY_DOCUMENTS).getPath()+"/"+context.getResources().getString(R.string.app_name) + "/" + + "audio/"; + } +// String var1 = Environment.getExternalStorageDirectory() + "/" + context.getResources().getString(R.string.app_name) + "/" +// + "audio/"; + createDirectory(dir); + return dir + (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date()) + ".mp3"; } } @@ -709,6 +722,19 @@ public static Bitmap getBitmapFromURL(String strURL) { } } + public static Bitmap drawableToBitmap (Drawable drawable) { + + if (drawable instanceof BitmapDrawable) { + return ((BitmapDrawable)drawable).getBitmap(); + } + + Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + + return bitmap; + } public static String getAddress(Context context, double latitude, double longitude) { Geocoder geocoder = new Geocoder(context, Locale.getDefault()); try { diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_settings/FeatureRestriction.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_settings/FeatureRestriction.java index dd40a44..75b5393 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_settings/FeatureRestriction.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_settings/FeatureRestriction.java @@ -2,7 +2,6 @@ import com.cometchat.pro.core.CometChat; import com.cometchat.pro.exceptions.CometChatException; -import com.cometchat.pro.uikit.R; public class FeatureRestriction { public static boolean isGroupActionMessagesEnabled() { @@ -13,11 +12,6 @@ public static boolean isCallActionMessageEnabled() { return UIKitSettings.isCallNotification(); } - public static String getColor() { - return UIKitSettings.color; - } - - public static void isUserListEnabled(OnSuccessListener onSuccessListener) { CometChat.isFeatureEnabled(Feature.chat_users_list_enabled, new CometChat.CallbackListener() { @Override @@ -54,35 +48,35 @@ public static void isUserSettingsEnabled(OnSuccessListener onSuccessListener) { public static void isOneOnOneChatEnabled(OnSuccessListener onSuccessListener) { CometChat.isFeatureEnabled(Feature.chat_one_on_one_enabled, new CometChat.CallbackListener() { - @Override - public void onSuccess(Boolean aBoolean) { - if (!aBoolean) - UIKitSettings.sendMessageInOneOneOne(false); - onSuccessListener.onSuccess(UIKitSettings.isSendMessageInOneOneOne()); - } + @Override + public void onSuccess(Boolean aBoolean) { + if (!aBoolean) + UIKitSettings.sendMessageInOneOneOne(false); + onSuccessListener.onSuccess(UIKitSettings.isSendMessageInOneOneOne()); + } - @Override - public void onError(CometChatException e) { - e.printStackTrace(); - } - }); + @Override + public void onError(CometChatException e) { + e.printStackTrace(); + } + }); } public static void isGroupChatEnabled(OnSuccessListener onSuccessListener) { CometChat.isFeatureEnabled(Feature.chat_groups_enabled, new CometChat.CallbackListener() { - @Override - public void onSuccess(Boolean aBoolean) { - if (!aBoolean) - UIKitSettings.sendMessageInGroup(false); - onSuccessListener.onSuccess(UIKitSettings.isSendMessageInGroup()); - } + @Override + public void onSuccess(Boolean aBoolean) { + if (!aBoolean) + UIKitSettings.sendMessageInGroup(false); + onSuccessListener.onSuccess(UIKitSettings.isSendMessageInGroup()); + } - @Override - public void onError(CometChatException e) { - e.printStackTrace(); - } - }); + @Override + public void onError(CometChatException e) { + e.printStackTrace(); + } + }); } public static void isDeliveryReceiptsEnabled(OnSuccessListener onSuccessListener) { @@ -163,7 +157,7 @@ public void onSuccess(Boolean aBoolean) { if (!aBoolean || !CometChat.isExtensionEnabled(Feature.Extension.polls)) UIKitSettings.sendPolls(false); else { - UIKitSettings.sendPolls(true); + UIKitSettings.sendPolls(true); } onSuccessListener.onSuccess(UIKitSettings.isSendPolls()); } @@ -408,18 +402,18 @@ public static void isGroupActionMessagesEnabled(OnSuccessListener onSuccessListe public static void isOneOnOneVideoCallEnabled(OnSuccessListener onSuccessListener) { CometChat.isFeatureEnabled(Feature.call_one_on_one_video_enabled, new CometChat.CallbackListener() { - @Override - public void onSuccess(Boolean aBoolean) { - if (!aBoolean) - UIKitSettings.userVideoCall(false); - onSuccessListener.onSuccess(UIKitSettings.isUserVideoCall()); - } + @Override + public void onSuccess(Boolean aBoolean) { + if (!aBoolean) + UIKitSettings.userVideoCall(false); + onSuccessListener.onSuccess(UIKitSettings.isUserVideoCall()); + } - @Override - public void onError(CometChatException e) { - e.printStackTrace(); - } - }); + @Override + public void onError(CometChatException e) { + e.printStackTrace(); + } + }); } public static void isOneOnOneAudioCallEnabled(OnSuccessListener onSuccessListener) { @@ -457,18 +451,18 @@ public void onError(CometChatException e) { public static void isGroupAudioCallEnabled(OnSuccessListener onSuccessListener) { CometChat.isFeatureEnabled(Feature.call_groups_audio_enabled, new CometChat.CallbackListener() { - @Override - public void onSuccess(Boolean aBoolean) { - if (!aBoolean) - UIKitSettings.groupAudioCall(false); - onSuccessListener.onSuccess(UIKitSettings.isGroupAudioCall()); - } + @Override + public void onSuccess(Boolean aBoolean) { + if (!aBoolean) + UIKitSettings.groupAudioCall(false); + onSuccessListener.onSuccess(UIKitSettings.isGroupAudioCall()); + } - @Override - public void onError(CometChatException e) { - e.printStackTrace(); - } - }); + @Override + public void onError(CometChatException e) { + e.printStackTrace(); + } + }); } public static void isMessagesSoundEnabled(OnSuccessListener onSuccessListener) { @@ -494,74 +488,74 @@ public static int getUrlColor() { public static void isLiveReactionEnabled(OnSuccessListener onSuccessListener) { CometChat.isFeatureEnabled(Feature.live_reactions_enabled, new CometChat.CallbackListener() { - @Override - public void onSuccess(Boolean aBoolean) { - if (!aBoolean) - UIKitSettings.sendLiveReaction(false); - onSuccessListener.onSuccess(UIKitSettings.isSendLiveReaction()); - } + @Override + public void onSuccess(Boolean aBoolean) { + if (!aBoolean) + UIKitSettings.sendLiveReaction(false); + onSuccessListener.onSuccess(UIKitSettings.isSendLiveReaction()); + } - @Override - public void onError(CometChatException e) { - e.printStackTrace(); - } - }); + @Override + public void onError(CometChatException e) { + e.printStackTrace(); + } + }); } public static void isReactionEnabled(OnSuccessListener onSuccessListener) { CometChat.isFeatureEnabled(Feature.reactions_enabled, new CometChat.CallbackListener() { - @Override - public void onSuccess(Boolean aBoolean) { - if (!aBoolean || !CometChat.isExtensionEnabled(Feature.Extension.reactions)) - UIKitSettings.sendMessageReaction(false); - else { - UIKitSettings.sendMessageReaction(true); - } - onSuccessListener.onSuccess(UIKitSettings.isSendMessageReaction()); - } - - @Override - public void onError(CometChatException e) { - e.printStackTrace(); - } - }); + @Override + public void onSuccess(Boolean aBoolean) { + if (!aBoolean || !CometChat.isExtensionEnabled(Feature.Extension.reactions)) + UIKitSettings.sendMessageReaction(false); + else { + UIKitSettings.sendMessageReaction(true); + } + onSuccessListener.onSuccess(UIKitSettings.isSendMessageReaction()); + } + + @Override + public void onError(CometChatException e) { + e.printStackTrace(); + } + }); } public static void isCollaborativeWhiteBoardEnabled(OnSuccessListener onSuccessListener) { CometChat.isFeatureEnabled(Feature.collaboration_whiteboard_enabled, new CometChat.CallbackListener() { - @Override - public void onSuccess(Boolean aBoolean) { - if (!aBoolean || !CometChat.isExtensionEnabled(Feature.Extension.whiteboard)) - UIKitSettings.collaborativeWhiteBoard(false); - onSuccessListener.onSuccess(UIKitSettings.isCollaborativeWhiteboard()); - } + @Override + public void onSuccess(Boolean aBoolean) { + if (!aBoolean || !CometChat.isExtensionEnabled(Feature.Extension.whiteboard)) + UIKitSettings.collaborativeWhiteBoard(false); + onSuccessListener.onSuccess(UIKitSettings.isCollaborativeWhiteboard()); + } - @Override - public void onError(CometChatException e) { - e.printStackTrace(); - } - }); + @Override + public void onError(CometChatException e) { + e.printStackTrace(); + } + }); } public static void isCollaborativeDocumentEnabled(OnSuccessListener onSuccessListener) { CometChat.isFeatureEnabled(Feature.collaboration_document_enabled, new CometChat.CallbackListener() { - @Override - public void onSuccess(Boolean aBoolean) { - if (!aBoolean || !CometChat.isExtensionEnabled(Feature.Extension.document)) - UIKitSettings.collaborativeDocument(false); - else - UIKitSettings.collaborativeDocument(true); - onSuccessListener.onSuccess(UIKitSettings.isCollaborativeDocument()); - } - - @Override - public void onError(CometChatException e) { - e.printStackTrace(); - } - }); + @Override + public void onSuccess(Boolean aBoolean) { + if (!aBoolean || !CometChat.isExtensionEnabled(Feature.Extension.document)) + UIKitSettings.collaborativeDocument(false); + else + UIKitSettings.collaborativeDocument(true); + onSuccessListener.onSuccess(UIKitSettings.isCollaborativeDocument()); + } + + @Override + public void onError(CometChatException e) { + e.printStackTrace(); + } + }); } public static void isMessageTranslationEnabled(OnSuccessListener onSuccessListener) { @@ -667,20 +661,20 @@ public void onError(CometChatException e) { } public static void isUserSearchEnabled(OnSuccessListener onSuccessListener) { - CometChat.isFeatureEnabled(Feature.chat_users_search_enabled, new CometChat.CallbackListener() { - @Override - public void onSuccess(Boolean aBoolean) { - if (!aBoolean) - UIKitSettings.searchUser(false); - onSuccessListener.onSuccess(UIKitSettings.isSearchUser()); + CometChat.isFeatureEnabled(Feature.chat_users_search_enabled, new CometChat.CallbackListener() { + @Override + public void onSuccess(Boolean aBoolean) { + if (!aBoolean) + UIKitSettings.searchUser(false); + onSuccessListener.onSuccess(UIKitSettings.isSearchUser()); - } + } - @Override - public void onError(CometChatException e) { - e.printStackTrace(); - } - }); + @Override + public void onError(CometChatException e) { + e.printStackTrace(); + } + }); } public static void isGroupSearchEnabled(OnSuccessListener onSuccessListener) { @@ -884,7 +878,7 @@ public void onSuccess(Boolean aBoolean) { @Override public void onError(CometChatException e) { - e.printStackTrace(); + e.printStackTrace(); } }); } @@ -996,6 +990,14 @@ public void onError(CometChatException e) { }); } + public static void isDeleteConversationEnabled(OnSuccessListener onSuccessListener) { + onSuccessListener.onSuccess(UIKitSettings.isDeleteConversation()); + } + + public static void isStartConversationEnabled(OnSuccessListener onSuccessListener) { + onSuccessListener.onSuccess(UIKitSettings.isStartConversation()); + } + public interface OnSuccessListener { void onSuccess(Boolean booleanVal); } diff --git a/uikit/src/main/java/com/cometchat/pro/uikit/ui_settings/UIKitSettings.java b/uikit/src/main/java/com/cometchat/pro/uikit/ui_settings/UIKitSettings.java index 6fa6d0e..7a0301a 100644 --- a/uikit/src/main/java/com/cometchat/pro/uikit/ui_settings/UIKitSettings.java +++ b/uikit/src/main/java/com/cometchat/pro/uikit/ui_settings/UIKitSettings.java @@ -25,7 +25,7 @@ public class UIKitSettings { //style - protected static String color = "#03A9F4"; + protected static String UIcolor = "#03A9F4"; //BottomBar private static boolean users = true; private static boolean groups = true; @@ -33,8 +33,8 @@ public class UIKitSettings { private static boolean calls = true; private static boolean userSettings = true; - //main - @Deprecated private static boolean enableSendingMessage = true; + private static boolean startConversation = true; + private static boolean deleteConversation = true; private static boolean sendMessageInOneOneOne = true; private static boolean sendMessageInGroup = true; @@ -181,6 +181,10 @@ public static void showReplyPrivately(boolean isEnable) { showReplyPrivately = isEnable; } + public static String getColor() { + return UIcolor; + } + public void addConnectionListener(String TAG) { CometChat.addConnectionListener(TAG, new CometChat.ConnectionListener() { @Override @@ -329,7 +333,16 @@ public void onError(CometChatException e) { } public static void setColor(String color) { - color = color; + UIcolor = color; + } + + + public static void deleteConversation(boolean isEnabled) { + deleteConversation = isEnabled; + } + + public static void startConversation(boolean isEanbled) { + startConversation = isEanbled; } public static void users(boolean showUsers) { @@ -448,7 +461,7 @@ public static void richMedia(boolean isEnable) { public static void sendStickers(boolean isEnable) { - sendStickers = isEnable; + sendStickers = isEnable; } public static void unreadCount(boolean isEnable) { unreadCount = isEnable; } @@ -907,4 +920,11 @@ public static boolean isHideDeleteMessage() { return hideDeleteMessage; } + public static boolean isDeleteConversation() { + return deleteConversation; + } + + public static boolean isStartConversation() { + return startConversation; + } } diff --git a/uikit/src/main/res-components/calls/layout/activity_cometchat_callmanager.xml b/uikit/src/main/res-components/calls/layout/activity_cometchat_callmanager.xml index c99f594..4bcf6e4 100644 --- a/uikit/src/main/res-components/calls/layout/activity_cometchat_callmanager.xml +++ b/uikit/src/main/res-components/calls/layout/activity_cometchat_callmanager.xml @@ -39,6 +39,7 @@ + tools:src="@tools:sample/avatars"/> diff --git a/uikit/src/main/res-components/calls/layout/fragment_cometchat_calls.xml b/uikit/src/main/res-components/calls/layout/fragment_cometchat_calls.xml index c3d33b9..b47ba98 100644 --- a/uikit/src/main/res-components/calls/layout/fragment_cometchat_calls.xml +++ b/uikit/src/main/res-components/calls/layout/fragment_cometchat_calls.xml @@ -21,9 +21,10 @@ android:layout_height="wrap_content"/> diff --git a/uikit/src/main/res-components/chats/layout/cometchat_conversation_list_row.xml b/uikit/src/main/res-components/chats/layout/cometchat_conversation_list_row.xml index f3c5456..5eb7fa6 100644 --- a/uikit/src/main/res-components/chats/layout/cometchat_conversation_list_row.xml +++ b/uikit/src/main/res-components/chats/layout/cometchat_conversation_list_row.xml @@ -17,25 +17,10 @@ android:layout_height="wrap_content" android:orientation="vertical"> - - - + tools:src="@tools:sample/avatars"/> + - + + + + + @@ -293,7 +304,6 @@ + android:layout_height="36dp" /> - + + diff --git a/uikit/src/main/res-components/messagebubbles/layout/message_left_link_item.xml b/uikit/src/main/res-components/messagebubbles/layout/message_left_link_item.xml index ace0ad5..657ee1e 100644 --- a/uikit/src/main/res-components/messagebubbles/layout/message_left_link_item.xml +++ b/uikit/src/main/res-components/messagebubbles/layout/message_left_link_item.xml @@ -15,6 +15,7 @@ @@ -27,7 +28,7 @@ android:layout_toEndOf="@+id/iv_user" android:layout_width="wrap_content" android:layout_height="wrap_content"/> - @@ -73,17 +76,9 @@ android:paddingLeft="4dp" android:textStyle="italic" android:paddingBottom="4dp"/> - - + - - + app:cardCornerRadius="8dp" + android:orientation="vertical" + app:cardElevation="0dp" + android:maxWidth="200dp" + app:cardBackgroundColor="@android:color/transparent" + android:visibility="gone" + tools:visibility="visible"> + + + + + + android:layout_height="wrap_content" + app:cardCornerRadius="8dp"> - - - \ No newline at end of file + android:id="@+id/reply_image" + android:layout_width="48dp" + android:background="@drawable/cc_message_bubble_right" + android:layout_height="48dp" + android:scaleType="centerCrop" + tools:src="@tools:sample/avatars" /> + + + + + \ No newline at end of file diff --git a/uikit/src/main/res-components/messagebubbles/layout/message_left_sticker_item.xml b/uikit/src/main/res-components/messagebubbles/layout/message_left_sticker_item.xml index 4c2643d..5fcdfac 100644 --- a/uikit/src/main/res-components/messagebubbles/layout/message_left_sticker_item.xml +++ b/uikit/src/main/res-components/messagebubbles/layout/message_left_sticker_item.xml @@ -15,6 +15,7 @@ - - - + - - + android:layout_alignParentEnd="true" + app:cardCornerRadius="8dp" + app:cardElevation="0dp" + app:cardBackgroundColor="@android:color/transparent" + android:orientation="vertical" + android:maxWidth="200dp" + android:visibility="gone" + tools:visibility="visible"> + + + + + + + + - - - - \ No newline at end of file + android:layout_height="wrap_content" + android:ellipsize="end" + android:maxWidth="150dp" + android:maxLines="3" + android:textColor="@color/textColorWhite" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/reply_user" + tools:text="@string/replyTxt" /> + + \ No newline at end of file diff --git a/uikit/src/main/res-components/messagebubbles/layout/message_right_sticker_item.xml b/uikit/src/main/res-components/messagebubbles/layout/message_right_sticker_item.xml index 715dfb6..e2ee546 100644 --- a/uikit/src/main/res-components/messagebubbles/layout/message_right_sticker_item.xml +++ b/uikit/src/main/res-components/messagebubbles/layout/message_right_sticker_item.xml @@ -32,7 +32,7 @@ android:textSize="12sp" android:textStyle="bold" android:visibility="gone" - tools:drawableEnd="@drawable/ic_double_tick" + tools:drawableEnd="@drawable/ic_message_read" tools:text="11:00 PM" tools:visibility="visible" /> diff --git a/uikit/src/main/res-components/messagebubbles/layout/message_right_writeboard_item.xml b/uikit/src/main/res-components/messagebubbles/layout/message_right_writeboard_item.xml index 6f07229..f5584f7 100644 --- a/uikit/src/main/res-components/messagebubbles/layout/message_right_writeboard_item.xml +++ b/uikit/src/main/res-components/messagebubbles/layout/message_right_writeboard_item.xml @@ -28,7 +28,7 @@ android:layout_centerVertical="true" android:padding="8dp" android:id="@+id/icon" - android:src="@drawable/ic_writeboard_24dp" + android:src="@drawable/ic_collaborative_document" android:tint="@color/textColorWhite" android:layout_width="36dp" android:layout_height="36dp"/> diff --git a/uikit/src/main/res-components/messagebubbles/layout/thread_message_file_item.xml b/uikit/src/main/res-components/messagebubbles/layout/thread_message_file_item.xml index 92bb6fe..a69fea1 100644 --- a/uikit/src/main/res-components/messagebubbles/layout/thread_message_file_item.xml +++ b/uikit/src/main/res-components/messagebubbles/layout/thread_message_file_item.xml @@ -79,8 +79,7 @@ android:layout_height="wrap_content"> - + android:layout_height="32dp"/> diff --git a/uikit/src/main/res-components/messages/layout/cometchat_composebox_actions.xml b/uikit/src/main/res-components/messages/layout/cometchat_composebox_actions.xml index 474c4de..3627260 100644 --- a/uikit/src/main/res-components/messages/layout/cometchat_composebox_actions.xml +++ b/uikit/src/main/res-components/messages/layout/cometchat_composebox_actions.xml @@ -1,6 +1,5 @@ - @@ -12,21 +13,21 @@ android:focusable="true" android:layout_margin="8dp" android:layout_centerVertical="true" - android:src="@drawable/ic_arrow_back_24dp" - android:tint="@color/primaryTextColor" + android:src="@drawable/ic_back_arrow_selected" android:id="@+id/back_action" android:layout_width="wrap_content" android:layout_height="wrap_content"/> + android:layout_height="36dp"/> diff --git a/uikit/src/main/res-components/messages/layout/fragment_cometchat_message_actions.xml b/uikit/src/main/res-components/messages/layout/fragment_cometchat_message_actions.xml index b3211b1..c10b845 100644 --- a/uikit/src/main/res-components/messages/layout/fragment_cometchat_message_actions.xml +++ b/uikit/src/main/res-components/messages/layout/fragment_cometchat_message_actions.xml @@ -1,13 +1,10 @@ - + xmlns:android="http://schemas.android.com/apk/res/android"> - + + + + @@ -321,7 +319,7 @@ android:layout_height="wrap_content"> diff --git a/uikit/src/main/res-components/messages/layout/message_placeholder.xml b/uikit/src/main/res-components/messages/layout/message_placeholder.xml index dc72e75..936c209 100644 --- a/uikit/src/main/res-components/messages/layout/message_placeholder.xml +++ b/uikit/src/main/res-components/messages/layout/message_placeholder.xml @@ -66,7 +66,6 @@ diff --git a/uikit/src/main/res-components/others/layout/cometchat_dialog_layout.xml b/uikit/src/main/res-components/others/layout/cometchat_dialog_layout.xml index 20fd695..c262793 100644 --- a/uikit/src/main/res-components/others/layout/cometchat_dialog_layout.xml +++ b/uikit/src/main/res-components/others/layout/cometchat_dialog_layout.xml @@ -4,7 +4,6 @@ android:layout_width="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" app:cardElevation="8dp" - android:id="@+id/card_layout" android:layout_height="wrap_content"> - - - - - \ No newline at end of file diff --git a/uikit/src/main/res-components/others/layout/footer_decor.xml b/uikit/src/main/res-components/others/layout/footer_decor.xml deleted file mode 100644 index ce1aede..0000000 --- a/uikit/src/main/res-components/others/layout/footer_decor.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/uikit/src/main/res-components/others/layout/group_list_row.xml b/uikit/src/main/res-components/others/layout/group_list_row.xml index 8fd064d..27ded3b 100644 --- a/uikit/src/main/res-components/others/layout/group_list_row.xml +++ b/uikit/src/main/res-components/others/layout/group_list_row.xml @@ -18,14 +18,15 @@ + android:layout_width="36dp" + app:corner_radius="18dp" + android:layout_height="36dp"/> \ No newline at end of file diff --git a/uikit/src/main/res-components/others/layout/view_message_box.xml b/uikit/src/main/res-components/others/layout/view_message_box.xml deleted file mode 100644 index 9717930..0000000 --- a/uikit/src/main/res-components/others/layout/view_message_box.xml +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/uikit/src/main/res-components/shared/layout/cometchat_avatar.xml b/uikit/src/main/res-components/shared/layout/cometchat_avatar.xml new file mode 100644 index 0000000..4f0d12a --- /dev/null +++ b/uikit/src/main/res-components/shared/layout/cometchat_avatar.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/uikit/src/main/res-components/shared/layout/cometchat_badge_count.xml b/uikit/src/main/res-components/shared/layout/cometchat_badge_count.xml index ed9ffeb..71bb556 100644 --- a/uikit/src/main/res-components/shared/layout/cometchat_badge_count.xml +++ b/uikit/src/main/res-components/shared/layout/cometchat_badge_count.xml @@ -1,6 +1,7 @@ - @@ -8,13 +9,12 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/uikit/src/main/res-components/shared/layout/cometchat_compose_box.xml b/uikit/src/main/res-components/shared/layout/cometchat_compose_box.xml index b2060bb..575c8e1 100644 --- a/uikit/src/main/res-components/shared/layout/cometchat_compose_box.xml +++ b/uikit/src/main/res-components/shared/layout/cometchat_compose_box.xml @@ -7,56 +7,12 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> - - - - - - - - - - diff --git a/uikit/src/main/res-components/shared/layout/cometchat_shared_media_video_row.xml b/uikit/src/main/res-components/shared/layout/cometchat_shared_media_video_row.xml index b4b0188..766ac1f 100644 --- a/uikit/src/main/res-components/shared/layout/cometchat_shared_media_video_row.xml +++ b/uikit/src/main/res-components/shared/layout/cometchat_shared_media_video_row.xml @@ -13,7 +13,6 @@ android:scaleType="centerCrop" android:adjustViewBounds="true" /> - - - - - - \ No newline at end of file diff --git a/uikit/src/main/res-components/userprofile/layout/activity_cometchat_more_privacy.xml b/uikit/src/main/res-components/userprofile/layout/activity_cometchat_more_privacy.xml index d27d4b8..aa0f59d 100644 --- a/uikit/src/main/res-components/userprofile/layout/activity_cometchat_more_privacy.xml +++ b/uikit/src/main/res-components/userprofile/layout/activity_cometchat_more_privacy.xml @@ -36,7 +36,7 @@ android:id="@+id/tv_blocked_user_count" android:gravity="center" android:drawablePadding="8dp" - android:drawableEnd="@drawable/ic_arrow_right_24dp" + android:drawableEnd="@drawable/ic_arrow_right" android:layout_centerVertical="true" android:layout_alignParentRight="true" android:layout_width="wrap_content" diff --git a/uikit/src/main/res-components/userprofile/layout/fragment_cometchat_user_profile.xml b/uikit/src/main/res-components/userprofile/layout/fragment_cometchat_user_profile.xml index d9ffdb5..9a4d804 100644 --- a/uikit/src/main/res-components/userprofile/layout/fragment_cometchat_user_profile.xml +++ b/uikit/src/main/res-components/userprofile/layout/fragment_cometchat_user_profile.xml @@ -28,13 +28,14 @@ android:layout_width="match_parent" android:layout_height="72dp"> + android:id="@+id/iv_user"/> + @@ -87,7 +96,7 @@ @@ -114,31 +123,24 @@ android:foreground="?attr/selectableItemBackground" android:layout_width="match_parent" android:layout_height="wrap_content"> + + android:layout_height="wrap_content" + android:layout_alignParentLeft="true" + android:layout_gravity="center" + android:src="@drawable/ic_privacy" /> - diff --git a/uikit/src/main/res-components/users/drawable/add_circle.xml b/uikit/src/main/res-components/users/drawable/add_circle.xml new file mode 100644 index 0000000..e2e554e --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/add_circle.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/add_circle_filled.xml b/uikit/src/main/res-components/users/drawable/add_circle_filled.xml new file mode 100644 index 0000000..75b792c --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/add_circle_filled.xml @@ -0,0 +1,10 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_add_users_to_group.xml b/uikit/src/main/res-components/users/drawable/ic_add_users_to_group.xml new file mode 100644 index 0000000..ad052a9 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_add_users_to_group.xml @@ -0,0 +1,55 @@ + + + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_arrow_right_selected.xml b/uikit/src/main/res-components/users/drawable/ic_arrow_right_selected.xml new file mode 100644 index 0000000..b7c2197 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_arrow_right_selected.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_arrow_right_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_arrow_right_unselected.xml new file mode 100644 index 0000000..36902d0 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_arrow_right_unselected.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_audio.xml b/uikit/src/main/res-components/users/drawable/ic_audio.xml new file mode 100644 index 0000000..71e38f4 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_audio.xml @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_audiocall.xml b/uikit/src/main/res-components/users/drawable/ic_audiocall.xml index e516b4c..a2706af 100644 --- a/uikit/src/main/res-components/users/drawable/ic_audiocall.xml +++ b/uikit/src/main/res-components/users/drawable/ic_audiocall.xml @@ -1,6 +1,11 @@ - - - + + + + + + + + + + + \ No newline at end of file diff --git a/uikit/src/main/res-components/users/drawable/ic_back_arrow_selected.xml b/uikit/src/main/res-components/users/drawable/ic_back_arrow_selected.xml new file mode 100644 index 0000000..bbae1b0 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_back_arrow_selected.xml @@ -0,0 +1,14 @@ + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_back_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_back_unselected.xml new file mode 100644 index 0000000..80be180 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_back_unselected.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_calls.xml b/uikit/src/main/res-components/users/drawable/ic_calls.xml new file mode 100644 index 0000000..bc17238 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_calls.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_calls_selected.xml b/uikit/src/main/res-components/users/drawable/ic_calls_selected.xml new file mode 100644 index 0000000..36561ae --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_calls_selected.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_camera.xml b/uikit/src/main/res-components/users/drawable/ic_camera.xml new file mode 100644 index 0000000..4f1e816 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_camera.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_chats.xml b/uikit/src/main/res-components/users/drawable/ic_chats.xml new file mode 100644 index 0000000..51b8c97 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_chats.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/uikit/src/main/res-components/users/drawable/ic_chats_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_chats_unselected.xml new file mode 100644 index 0000000..24c272a --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_chats_unselected.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_close_circle_selected.xml b/uikit/src/main/res-components/users/drawable/ic_close_circle_selected.xml new file mode 100644 index 0000000..3608cf1 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_close_circle_selected.xml @@ -0,0 +1,10 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_close_circle_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_close_circle_unselected.xml new file mode 100644 index 0000000..8057ca9 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_close_circle_unselected.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_collaborative_document.xml b/uikit/src/main/res-components/users/drawable/ic_collaborative_document.xml new file mode 100644 index 0000000..b4c1257 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_collaborative_document.xml @@ -0,0 +1,48 @@ + + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_collaborative_whiteboard.xml b/uikit/src/main/res-components/users/drawable/ic_collaborative_whiteboard.xml new file mode 100644 index 0000000..703f92a --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_collaborative_whiteboard.xml @@ -0,0 +1,20 @@ + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_copy.xml b/uikit/src/main/res-components/users/drawable/ic_copy.xml new file mode 100644 index 0000000..810c2d3 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_copy.xml @@ -0,0 +1,4 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_copy_paste.xml b/uikit/src/main/res-components/users/drawable/ic_copy_paste.xml new file mode 100644 index 0000000..b68f659 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_copy_paste.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_create.xml b/uikit/src/main/res-components/users/drawable/ic_create.xml new file mode 100644 index 0000000..958d8af --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_create.xml @@ -0,0 +1,20 @@ + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_delete.xml b/uikit/src/main/res-components/users/drawable/ic_delete.xml new file mode 100644 index 0000000..1cc805b --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_delete.xml @@ -0,0 +1,41 @@ + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_edit.xml b/uikit/src/main/res-components/users/drawable/ic_edit.xml new file mode 100644 index 0000000..d277097 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_edit.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_error.xml b/uikit/src/main/res-components/users/drawable/ic_error.xml new file mode 100644 index 0000000..114d975 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_error.xml @@ -0,0 +1,24 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_file.xml b/uikit/src/main/res-components/users/drawable/ic_file.xml new file mode 100644 index 0000000..d24a822 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_file.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_file_upload.xml b/uikit/src/main/res-components/users/drawable/ic_file_upload.xml new file mode 100644 index 0000000..61c9d0f --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_file_upload.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_forward.xml b/uikit/src/main/res-components/users/drawable/ic_forward.xml new file mode 100644 index 0000000..cf76ec1 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_forward.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_groups.xml b/uikit/src/main/res-components/users/drawable/ic_groups.xml new file mode 100644 index 0000000..9b75fc7 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_groups.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_groups_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_groups_unselected.xml new file mode 100644 index 0000000..50526cd --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_groups_unselected.xml @@ -0,0 +1,20 @@ + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_hand.xml b/uikit/src/main/res-components/users/drawable/ic_hand.xml new file mode 100644 index 0000000..c17d998 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_hand.xml @@ -0,0 +1,20 @@ + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_image_library.xml b/uikit/src/main/res-components/users/drawable/ic_image_library.xml new file mode 100644 index 0000000..bd4d712 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_image_library.xml @@ -0,0 +1,38 @@ + + + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_incoming_call.xml b/uikit/src/main/res-components/users/drawable/ic_incoming_call.xml new file mode 100644 index 0000000..bf926ad --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_incoming_call.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_incoming_video_call.xml b/uikit/src/main/res-components/users/drawable/ic_incoming_video_call.xml new file mode 100644 index 0000000..cfc8d10 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_incoming_video_call.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_info.xml b/uikit/src/main/res-components/users/drawable/ic_info.xml index b1dae71..66b6e09 100644 --- a/uikit/src/main/res-components/users/drawable/ic_info.xml +++ b/uikit/src/main/res-components/users/drawable/ic_info.xml @@ -1,12 +1,27 @@ + android:pathData="M12.8,14.6H12.2C11.8818,14.6 11.5766,14.4736 11.3515,14.2485C11.1265,14.0235 11,13.7182 11,13.4V10.4C11,10.2409 10.9368,10.0882 10.8243,9.9757C10.7118,9.8632 10.5592,9.8 10.4,9.8H9.8" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#808080" + android:strokeLineCap="round"/> + + diff --git a/uikit/src/main/res-components/users/drawable/ic_info_selected.xml b/uikit/src/main/res-components/users/drawable/ic_info_selected.xml new file mode 100644 index 0000000..5e3dead --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_info_selected.xml @@ -0,0 +1,10 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_info_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_info_unselected.xml new file mode 100644 index 0000000..371e6b3 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_info_unselected.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_location.xml b/uikit/src/main/res-components/users/drawable/ic_location.xml new file mode 100644 index 0000000..6e2b936 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_location.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_message_delivered.xml b/uikit/src/main/res-components/users/drawable/ic_message_delivered.xml new file mode 100644 index 0000000..b1e6daf --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_message_delivered.xml @@ -0,0 +1,18 @@ + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_message_read.xml b/uikit/src/main/res-components/users/drawable/ic_message_read.xml new file mode 100644 index 0000000..7220ff8 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_message_read.xml @@ -0,0 +1,18 @@ + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_message_sent.xml b/uikit/src/main/res-components/users/drawable/ic_message_sent.xml new file mode 100644 index 0000000..9a8dbb5 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_message_sent.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_microphone_grey_selected.xml b/uikit/src/main/res-components/users/drawable/ic_microphone_grey_selected.xml new file mode 100644 index 0000000..a1cc1c8 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_microphone_grey_selected.xml @@ -0,0 +1,10 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_microphone_grey_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_microphone_grey_unselected.xml new file mode 100644 index 0000000..9d628d3 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_microphone_grey_unselected.xml @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_microphone_white_selected.xml b/uikit/src/main/res-components/users/drawable/ic_microphone_white_selected.xml new file mode 100644 index 0000000..a7bf108 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_microphone_white_selected.xml @@ -0,0 +1,10 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_microphone_white_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_microphone_white_unselected.xml new file mode 100644 index 0000000..ee1438c --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_microphone_white_unselected.xml @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_more.xml b/uikit/src/main/res-components/users/drawable/ic_more.xml new file mode 100644 index 0000000..8c707b0 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_more.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_more_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_more_unselected.xml new file mode 100644 index 0000000..789a3ff --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_more_unselected.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_notifications.xml b/uikit/src/main/res-components/users/drawable/ic_notifications.xml new file mode 100644 index 0000000..cb9d133 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_notifications.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_outgoing_call.xml b/uikit/src/main/res-components/users/drawable/ic_outgoing_call.xml new file mode 100644 index 0000000..b91c24a --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_outgoing_call.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_outgoing_video_call.xml b/uikit/src/main/res-components/users/drawable/ic_outgoing_video_call.xml new file mode 100644 index 0000000..67ad331 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_outgoing_video_call.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_polls.xml b/uikit/src/main/res-components/users/drawable/ic_polls.xml new file mode 100644 index 0000000..931aaa2 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_polls.xml @@ -0,0 +1,41 @@ + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_privacy.xml b/uikit/src/main/res-components/users/drawable/ic_privacy.xml new file mode 100644 index 0000000..32d890b --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_privacy.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_reactions.xml b/uikit/src/main/res-components/users/drawable/ic_reactions.xml new file mode 100644 index 0000000..e9e47be --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_reactions.xml @@ -0,0 +1,31 @@ + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_reply_message.xml b/uikit/src/main/res-components/users/drawable/ic_reply_message.xml new file mode 100644 index 0000000..fce27d1 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_reply_message.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_reply_message_in_private.xml b/uikit/src/main/res-components/users/drawable/ic_reply_message_in_private.xml new file mode 100644 index 0000000..78bc61d --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_reply_message_in_private.xml @@ -0,0 +1,48 @@ + + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_report.xml b/uikit/src/main/res-components/users/drawable/ic_report.xml new file mode 100644 index 0000000..c3ef177 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_report.xml @@ -0,0 +1,10 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_search.xml b/uikit/src/main/res-components/users/drawable/ic_search.xml new file mode 100644 index 0000000..16aca4b --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_search.xml @@ -0,0 +1,20 @@ + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_send_message.xml b/uikit/src/main/res-components/users/drawable/ic_send_message.xml new file mode 100644 index 0000000..39a1ec0 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_send_message.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_send_message_in_private.xml b/uikit/src/main/res-components/users/drawable/ic_send_message_in_private.xml new file mode 100644 index 0000000..b420364 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_send_message_in_private.xml @@ -0,0 +1,38 @@ + + + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_send_message_selected.xml b/uikit/src/main/res-components/users/drawable/ic_send_message_selected.xml new file mode 100644 index 0000000..dfdebad --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_send_message_selected.xml @@ -0,0 +1,10 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_share.xml b/uikit/src/main/res-components/users/drawable/ic_share.xml new file mode 100644 index 0000000..222aea2 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_share.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_sticker.xml b/uikit/src/main/res-components/users/drawable/ic_sticker.xml new file mode 100644 index 0000000..fcf3cb4 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_sticker.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_threaded_message.xml b/uikit/src/main/res-components/users/drawable/ic_threaded_message.xml new file mode 100644 index 0000000..456376c --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_threaded_message.xml @@ -0,0 +1,34 @@ + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_translate.xml b/uikit/src/main/res-components/users/drawable/ic_translate.xml new file mode 100644 index 0000000..d30071a --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_translate.xml @@ -0,0 +1,35 @@ + + + + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_users.xml b/uikit/src/main/res-components/users/drawable/ic_users.xml new file mode 100644 index 0000000..7828b63 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_users.xml @@ -0,0 +1,20 @@ + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_users_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_users_unselected.xml new file mode 100644 index 0000000..9d4dda0 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_users_unselected.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_video_call.xml b/uikit/src/main/res-components/users/drawable/ic_video_call.xml new file mode 100644 index 0000000..e28855b --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_video_call.xml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_video_call_selected.xml b/uikit/src/main/res-components/users/drawable/ic_video_call_selected.xml new file mode 100644 index 0000000..21cd9a0 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_video_call_selected.xml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_video_group_call_selected.xml b/uikit/src/main/res-components/users/drawable/ic_video_group_call_selected.xml new file mode 100644 index 0000000..53c38d8 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_video_group_call_selected.xml @@ -0,0 +1,17 @@ + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_video_group_call_unselected.xml b/uikit/src/main/res-components/users/drawable/ic_video_group_call_unselected.xml new file mode 100644 index 0000000..8c27ca5 --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_video_group_call_unselected.xml @@ -0,0 +1,27 @@ + + + + + diff --git a/uikit/src/main/res-components/users/drawable/ic_videocall.xml b/uikit/src/main/res-components/users/drawable/ic_videocall.xml index 9dc81c0..de629eb 100644 --- a/uikit/src/main/res-components/users/drawable/ic_videocall.xml +++ b/uikit/src/main/res-components/users/drawable/ic_videocall.xml @@ -1,6 +1,7 @@ - - - + + + + + \ No newline at end of file diff --git a/uikit/src/main/res-components/users/drawable/ic_warning.xml b/uikit/src/main/res-components/users/drawable/ic_warning.xml new file mode 100644 index 0000000..4fe28aa --- /dev/null +++ b/uikit/src/main/res-components/users/drawable/ic_warning.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/uikit/src/main/res-components/users/layout/activity_cometchat_user_detail.xml b/uikit/src/main/res-components/users/layout/activity_cometchat_user_detail.xml index cd1400c..812447e 100644 --- a/uikit/src/main/res-components/users/layout/activity_cometchat_user_detail.xml +++ b/uikit/src/main/res-components/users/layout/activity_cometchat_user_detail.xml @@ -9,6 +9,7 @@ android:layout_width="match_parent" android:id="@+id/user_detail_toolbar" app:title="@string/user_title" + app:navigationIcon="@drawable/ic_back_arrow_selected" android:layout_height="wrap_content"/> + android:layout_height="36dp"/> + tools:src="@tools:sample/avatars"/> diff --git a/uikit/src/main/res/anim/animate_left_slide.xml b/uikit/src/main/res/anim/animate_left_slide.xml deleted file mode 100644 index aa5d6f7..0000000 --- a/uikit/src/main/res/anim/animate_left_slide.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - \ No newline at end of file diff --git a/uikit/src/main/res/anim/animate_right_slide.xml b/uikit/src/main/res/anim/animate_right_slide.xml deleted file mode 100644 index d2387af..0000000 --- a/uikit/src/main/res/anim/animate_right_slide.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - \ No newline at end of file diff --git a/uikit/src/main/res/anim/animate_up_slide.xml b/uikit/src/main/res/anim/animate_up_slide.xml deleted file mode 100644 index 4f32193..0000000 --- a/uikit/src/main/res/anim/animate_up_slide.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable-hdpi/ic_edit.png b/uikit/src/main/res/drawable-hdpi/ic_edit.png deleted file mode 100644 index 781504f..0000000 Binary files a/uikit/src/main/res/drawable-hdpi/ic_edit.png and /dev/null differ diff --git a/uikit/src/main/res/drawable-hdpi/ic_warning_image.png b/uikit/src/main/res/drawable-hdpi/ic_warning_image.png deleted file mode 100644 index 11188ec..0000000 Binary files a/uikit/src/main/res/drawable-hdpi/ic_warning_image.png and /dev/null differ diff --git a/uikit/src/main/res/drawable-mdpi/ic_warning_image.png b/uikit/src/main/res/drawable-mdpi/ic_warning_image.png deleted file mode 100644 index e43955e..0000000 Binary files a/uikit/src/main/res/drawable-mdpi/ic_warning_image.png and /dev/null differ diff --git a/uikit/src/main/res/drawable-xhdpi/ic_warning_image.png b/uikit/src/main/res/drawable-xhdpi/ic_warning_image.png deleted file mode 100644 index 69dcef4..0000000 Binary files a/uikit/src/main/res/drawable-xhdpi/ic_warning_image.png and /dev/null differ diff --git a/uikit/src/main/res/drawable-xxhdpi/ic_warning_image.png b/uikit/src/main/res/drawable-xxhdpi/ic_warning_image.png deleted file mode 100644 index 436ae9f..0000000 Binary files a/uikit/src/main/res/drawable-xxhdpi/ic_warning_image.png and /dev/null differ diff --git a/uikit/src/main/res/drawable-xxxhdpi/ic_warning_image.png b/uikit/src/main/res/drawable-xxxhdpi/ic_warning_image.png deleted file mode 100644 index 4810121..0000000 Binary files a/uikit/src/main/res/drawable-xxxhdpi/ic_warning_image.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/cc_message_bubble_left.xml b/uikit/src/main/res/drawable/cc_message_bubble_left.xml index 6fc49fb..569f1e6 100755 --- a/uikit/src/main/res/drawable/cc_message_bubble_left.xml +++ b/uikit/src/main/res/drawable/cc_message_bubble_left.xml @@ -6,7 +6,8 @@ android:bottom="2px"> - + diff --git a/uikit/src/main/res/drawable/cc_message_bubble_right.xml b/uikit/src/main/res/drawable/cc_message_bubble_right.xml index 7e2b606..6752f13 100755 --- a/uikit/src/main/res/drawable/cc_message_bubble_right.xml +++ b/uikit/src/main/res/drawable/cc_message_bubble_right.xml @@ -6,7 +6,8 @@ android:bottom="2px"> - + diff --git a/uikit/src/main/res/drawable/copy.png b/uikit/src/main/res/drawable/copy.png deleted file mode 100644 index de1e672..0000000 Binary files a/uikit/src/main/res/drawable/copy.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/default_map.png b/uikit/src/main/res/drawable/default_map.png new file mode 100644 index 0000000..9e0fc14 Binary files /dev/null and b/uikit/src/main/res/drawable/default_map.png differ diff --git a/uikit/src/main/res/drawable/default_sticker.png b/uikit/src/main/res/drawable/default_sticker.png deleted file mode 100644 index c8f15b4..0000000 Binary files a/uikit/src/main/res/drawable/default_sticker.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/forward.png b/uikit/src/main/res/drawable/forward.png deleted file mode 100644 index a4701de..0000000 Binary files a/uikit/src/main/res/drawable/forward.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/ic_add.xml b/uikit/src/main/res/drawable/ic_add.xml index f2a5c23..e77eead 100755 --- a/uikit/src/main/res/drawable/ic_add.xml +++ b/uikit/src/main/res/drawable/ic_add.xml @@ -1,5 +1,6 @@ - - - - \ No newline at end of file + + + + + diff --git a/uikit/src/main/res/drawable/ic_add_24dp.xml b/uikit/src/main/res/drawable/ic_add_24dp.xml deleted file mode 100644 index b5c6c73..0000000 --- a/uikit/src/main/res/drawable/ic_add_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_add_circle_grey.xml b/uikit/src/main/res/drawable/ic_add_circle_grey.xml new file mode 100644 index 0000000..e05e8a2 --- /dev/null +++ b/uikit/src/main/res/drawable/ic_add_circle_grey.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_add_circle_grey_32dp.xml b/uikit/src/main/res/drawable/ic_add_circle_grey_32dp.xml deleted file mode 100644 index ee81581..0000000 --- a/uikit/src/main/res/drawable/ic_add_circle_grey_32dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_arrow_back_24dp.xml b/uikit/src/main/res/drawable/ic_arrow_back_24dp.xml deleted file mode 100644 index f632160..0000000 --- a/uikit/src/main/res/drawable/ic_arrow_back_24dp.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_arrow_right.xml b/uikit/src/main/res/drawable/ic_arrow_right.xml new file mode 100644 index 0000000..4746484 --- /dev/null +++ b/uikit/src/main/res/drawable/ic_arrow_right.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_arrow_right_24dp.xml b/uikit/src/main/res/drawable/ic_arrow_right_24dp.xml deleted file mode 100644 index 5bc098b..0000000 --- a/uikit/src/main/res/drawable/ic_arrow_right_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_back.xml b/uikit/src/main/res/drawable/ic_back.xml new file mode 100644 index 0000000..663bab2 --- /dev/null +++ b/uikit/src/main/res/drawable/ic_back.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_baseline_error_24.xml b/uikit/src/main/res/drawable/ic_baseline_error_24.xml deleted file mode 100644 index 1fa8716..0000000 --- a/uikit/src/main/res/drawable/ic_baseline_error_24.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_baseline_more_vert_24.xml b/uikit/src/main/res/drawable/ic_baseline_more_vert_24.xml index 48272f6..fde5725 100644 --- a/uikit/src/main/res/drawable/ic_baseline_more_vert_24.xml +++ b/uikit/src/main/res/drawable/ic_baseline_more_vert_24.xml @@ -5,6 +5,6 @@ android:viewportHeight="24" android:tint="?attr/colorControlNormal"> diff --git a/uikit/src/main/res/drawable/ic_call_24dp.xml b/uikit/src/main/res/drawable/ic_call_24dp.xml deleted file mode 100644 index ebf9de6..0000000 --- a/uikit/src/main/res/drawable/ic_call_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_call_green24dp.xml b/uikit/src/main/res/drawable/ic_call_green24dp.xml deleted file mode 100644 index f19c931..0000000 --- a/uikit/src/main/res/drawable/ic_call_green24dp.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_call_missed_incoming_24dp.xml b/uikit/src/main/res/drawable/ic_call_missed_incoming_24dp.xml index 57d1cd7..c41e014 100644 --- a/uikit/src/main/res/drawable/ic_call_missed_incoming_24dp.xml +++ b/uikit/src/main/res/drawable/ic_call_missed_incoming_24dp.xml @@ -1,4 +1,4 @@ - diff --git a/uikit/src/main/res/drawable/ic_call_missed_outgoing_24dp.xml b/uikit/src/main/res/drawable/ic_call_missed_outgoing_24dp.xml index 057efff..1214277 100644 --- a/uikit/src/main/res/drawable/ic_call_missed_outgoing_24dp.xml +++ b/uikit/src/main/res/drawable/ic_call_missed_outgoing_24dp.xml @@ -1,4 +1,4 @@ - diff --git a/uikit/src/main/res/drawable/ic_camera.xml b/uikit/src/main/res/drawable/ic_camera.xml deleted file mode 100644 index 83ad59e..0000000 --- a/uikit/src/main/res/drawable/ic_camera.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/uikit/src/main/res/drawable/ic_chat.xml b/uikit/src/main/res/drawable/ic_chat.xml deleted file mode 100755 index 80caabf..0000000 --- a/uikit/src/main/res/drawable/ic_chat.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_chat_pin_white_24dp.xml b/uikit/src/main/res/drawable/ic_chat_pin_white_24dp.xml deleted file mode 100644 index c76ecac..0000000 --- a/uikit/src/main/res/drawable/ic_chat_pin_white_24dp.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_chats.png b/uikit/src/main/res/drawable/ic_chats.png deleted file mode 100644 index 6324266..0000000 Binary files a/uikit/src/main/res/drawable/ic_chats.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/ic_chats_selected.xml b/uikit/src/main/res/drawable/ic_chats_selected.xml new file mode 100644 index 0000000..b18fa53 --- /dev/null +++ b/uikit/src/main/res/drawable/ic_chats_selected.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res/drawable/ic_check_black_24dp.xml b/uikit/src/main/res/drawable/ic_check_black_24dp.xml deleted file mode 100644 index 9019a15..0000000 --- a/uikit/src/main/res/drawable/ic_check_black_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_circle_outline_12dp.xml b/uikit/src/main/res/drawable/ic_circle_outline_12dp.xml deleted file mode 100644 index d105190..0000000 --- a/uikit/src/main/res/drawable/ic_circle_outline_12dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_close_24dp.xml b/uikit/src/main/res/drawable/ic_close_24dp.xml index 5bd1ee8..56150dc 100644 --- a/uikit/src/main/res/drawable/ic_close_24dp.xml +++ b/uikit/src/main/res/drawable/ic_close_24dp.xml @@ -1,5 +1,20 @@ - - + + + diff --git a/uikit/src/main/res/drawable/ic_close_circle.xml b/uikit/src/main/res/drawable/ic_close_circle.xml index c35a0af..34972f6 100644 --- a/uikit/src/main/res/drawable/ic_close_circle.xml +++ b/uikit/src/main/res/drawable/ic_close_circle.xml @@ -1,5 +1,5 @@ - - - - \ No newline at end of file + + + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_contacts_24dp.xml b/uikit/src/main/res/drawable/ic_contacts_24dp.xml deleted file mode 100644 index af96087..0000000 --- a/uikit/src/main/res/drawable/ic_contacts_24dp.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_content_copy_black_24dp.xml b/uikit/src/main/res/drawable/ic_content_copy_black_24dp.xml deleted file mode 100644 index 8a894a3..0000000 --- a/uikit/src/main/res/drawable/ic_content_copy_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_delete.png b/uikit/src/main/res/drawable/ic_delete.png deleted file mode 100644 index 31bae4b..0000000 Binary files a/uikit/src/main/res/drawable/ic_delete.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/ic_delete_24dp.xml b/uikit/src/main/res/drawable/ic_delete_24dp.xml deleted file mode 100644 index f696718..0000000 --- a/uikit/src/main/res/drawable/ic_delete_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_delete_conversation.xml b/uikit/src/main/res/drawable/ic_delete_conversation.xml new file mode 100644 index 0000000..1a9194b --- /dev/null +++ b/uikit/src/main/res/drawable/ic_delete_conversation.xml @@ -0,0 +1,41 @@ + + + + + + + diff --git a/uikit/src/main/res/drawable/ic_done_all_black_24dp.xml b/uikit/src/main/res/drawable/ic_done_all_black_24dp.xml deleted file mode 100644 index 39990bb..0000000 --- a/uikit/src/main/res/drawable/ic_done_all_black_24dp.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/uikit/src/main/res/drawable/ic_double_tick.xml b/uikit/src/main/res/drawable/ic_double_tick.xml deleted file mode 100755 index 099dda1..0000000 --- a/uikit/src/main/res/drawable/ic_double_tick.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_file_download.xml b/uikit/src/main/res/drawable/ic_file_download.xml deleted file mode 100644 index 84db281..0000000 --- a/uikit/src/main/res/drawable/ic_file_download.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_forward.xml b/uikit/src/main/res/drawable/ic_forward.xml deleted file mode 100644 index a121e65..0000000 --- a/uikit/src/main/res/drawable/ic_forward.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_group.xml b/uikit/src/main/res/drawable/ic_group.xml deleted file mode 100644 index 5c90d29..0000000 --- a/uikit/src/main/res/drawable/ic_group.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_group_add_black_24dp.xml b/uikit/src/main/res/drawable/ic_group_add_black_24dp.xml deleted file mode 100644 index 8220314..0000000 --- a/uikit/src/main/res/drawable/ic_group_add_black_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_groups_selected.xml b/uikit/src/main/res/drawable/ic_groups_selected.xml new file mode 100644 index 0000000..c32aeef --- /dev/null +++ b/uikit/src/main/res/drawable/ic_groups_selected.xml @@ -0,0 +1,20 @@ + + + + diff --git a/uikit/src/main/res/drawable/ic_hand.xml b/uikit/src/main/res/drawable/ic_hand.xml deleted file mode 100644 index c3b2281..0000000 --- a/uikit/src/main/res/drawable/ic_hand.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_happy.xml b/uikit/src/main/res/drawable/ic_happy.xml deleted file mode 100644 index 8e9c44e..0000000 --- a/uikit/src/main/res/drawable/ic_happy.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - - - - - - diff --git a/uikit/src/main/res/drawable/ic_help.xml b/uikit/src/main/res/drawable/ic_help.xml deleted file mode 100755 index 7c280d3..0000000 --- a/uikit/src/main/res/drawable/ic_help.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_help_24dp.xml b/uikit/src/main/res/drawable/ic_help_24dp.xml deleted file mode 100644 index f6a5215..0000000 --- a/uikit/src/main/res/drawable/ic_help_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_info_image.png b/uikit/src/main/res/drawable/ic_info_image.png deleted file mode 100644 index 055c2fc..0000000 Binary files a/uikit/src/main/res/drawable/ic_info_image.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/ic_insert_drive_file_black_24dp.xml b/uikit/src/main/res/drawable/ic_insert_drive_file_black_24dp.xml deleted file mode 100644 index bb78063..0000000 --- a/uikit/src/main/res/drawable/ic_insert_drive_file_black_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_keyboard_arrow_down_red_24dp.xml b/uikit/src/main/res/drawable/ic_keyboard_arrow_down_red_24dp.xml deleted file mode 100644 index 1d309e9..0000000 --- a/uikit/src/main/res/drawable/ic_keyboard_arrow_down_red_24dp.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.xml b/uikit/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.xml deleted file mode 100644 index 4a3f179..0000000 --- a/uikit/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_keyboard_arrow_up_green_24dp.xml b/uikit/src/main/res/drawable/ic_keyboard_arrow_up_green_24dp.xml deleted file mode 100644 index 7276ae8..0000000 --- a/uikit/src/main/res/drawable/ic_keyboard_arrow_up_green_24dp.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_keyboard_black_24dp.xml b/uikit/src/main/res/drawable/ic_keyboard_black_24dp.xml deleted file mode 100644 index 4f594a1..0000000 --- a/uikit/src/main/res/drawable/ic_keyboard_black_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_library_music_24dp.xml b/uikit/src/main/res/drawable/ic_library_music_24dp.xml deleted file mode 100644 index 3e60c09..0000000 --- a/uikit/src/main/res/drawable/ic_library_music_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_mic_grey.xml b/uikit/src/main/res/drawable/ic_mic_grey.xml new file mode 100644 index 0000000..f80e4c8 --- /dev/null +++ b/uikit/src/main/res/drawable/ic_mic_grey.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_mic_grey_24dp.xml b/uikit/src/main/res/drawable/ic_mic_grey_24dp.xml deleted file mode 100644 index a734aad..0000000 --- a/uikit/src/main/res/drawable/ic_mic_grey_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_mic_white.xml b/uikit/src/main/res/drawable/ic_mic_white.xml new file mode 100644 index 0000000..240127a --- /dev/null +++ b/uikit/src/main/res/drawable/ic_mic_white.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_mic_white_24dp.xml b/uikit/src/main/res/drawable/ic_mic_white_24dp.xml deleted file mode 100644 index 877b8c1..0000000 --- a/uikit/src/main/res/drawable/ic_mic_white_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_missed_video_call_24dp.xml b/uikit/src/main/res/drawable/ic_missed_video_call_24dp.xml deleted file mode 100644 index c5a49d1..0000000 --- a/uikit/src/main/res/drawable/ic_missed_video_call_24dp.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_more.xml b/uikit/src/main/res/drawable/ic_more.xml deleted file mode 100644 index 8a5434e..0000000 --- a/uikit/src/main/res/drawable/ic_more.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_more_selected.xml b/uikit/src/main/res/drawable/ic_more_selected.xml new file mode 100644 index 0000000..3e82351 --- /dev/null +++ b/uikit/src/main/res/drawable/ic_more_selected.xml @@ -0,0 +1,10 @@ + + + diff --git a/uikit/src/main/res/drawable/ic_near_me_24dp.xml b/uikit/src/main/res/drawable/ic_near_me_24dp.xml deleted file mode 100644 index 7a97d60..0000000 --- a/uikit/src/main/res/drawable/ic_near_me_24dp.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_notification.xml b/uikit/src/main/res/drawable/ic_notification.xml deleted file mode 100755 index 0b77b8e..0000000 --- a/uikit/src/main/res/drawable/ic_notification.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_notifications_black_24dp.xml b/uikit/src/main/res/drawable/ic_notifications_black_24dp.xml deleted file mode 100644 index 17141e5..0000000 --- a/uikit/src/main/res/drawable/ic_notifications_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_photo.xml b/uikit/src/main/res/drawable/ic_photo.xml deleted file mode 100644 index f695bd6..0000000 --- a/uikit/src/main/res/drawable/ic_photo.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_pin_circle_24dp.xml b/uikit/src/main/res/drawable/ic_pin_circle_24dp.xml deleted file mode 100644 index 0522016..0000000 --- a/uikit/src/main/res/drawable/ic_pin_circle_24dp.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_poll_24dp.xml b/uikit/src/main/res/drawable/ic_poll_24dp.xml deleted file mode 100644 index 2059e8b..0000000 --- a/uikit/src/main/res/drawable/ic_poll_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_reply.xml b/uikit/src/main/res/drawable/ic_reply.xml deleted file mode 100644 index 82c6dc3..0000000 --- a/uikit/src/main/res/drawable/ic_reply.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_reply_24dp.xml b/uikit/src/main/res/drawable/ic_reply_24dp.xml deleted file mode 100644 index 72a87676..0000000 --- a/uikit/src/main/res/drawable/ic_reply_24dp.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_report_problem.xml b/uikit/src/main/res/drawable/ic_report_problem.xml deleted file mode 100755 index dfcee6a..0000000 --- a/uikit/src/main/res/drawable/ic_report_problem.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_report_problem_24dp.xml b/uikit/src/main/res/drawable/ic_report_problem_24dp.xml deleted file mode 100644 index e2920f7..0000000 --- a/uikit/src/main/res/drawable/ic_report_problem_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_search_24dp.xml b/uikit/src/main/res/drawable/ic_search_24dp.xml deleted file mode 100644 index b2d0147..0000000 --- a/uikit/src/main/res/drawable/ic_search_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_security.xml b/uikit/src/main/res/drawable/ic_security.xml deleted file mode 100755 index b046468..0000000 --- a/uikit/src/main/res/drawable/ic_security.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_send.xml b/uikit/src/main/res/drawable/ic_send.xml index 3f8d347..3c80770 100644 --- a/uikit/src/main/res/drawable/ic_send.xml +++ b/uikit/src/main/res/drawable/ic_send.xml @@ -1,9 +1,7 @@ - - - - - - + + + + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_share_24dp.xml b/uikit/src/main/res/drawable/ic_share_24dp.xml deleted file mode 100644 index f3a3196..0000000 --- a/uikit/src/main/res/drawable/ic_share_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_thread_24dp.xml b/uikit/src/main/res/drawable/ic_thread_24dp.xml deleted file mode 100644 index 4ee41d9..0000000 --- a/uikit/src/main/res/drawable/ic_thread_24dp.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/uikit/src/main/res/drawable/ic_translate.xml b/uikit/src/main/res/drawable/ic_translate.xml deleted file mode 100644 index 20ddcb0..0000000 --- a/uikit/src/main/res/drawable/ic_translate.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_unreadchat_bubble_white_24dp.xml b/uikit/src/main/res/drawable/ic_unreadchat_bubble_white_24dp.xml deleted file mode 100644 index 370183d..0000000 --- a/uikit/src/main/res/drawable/ic_unreadchat_bubble_white_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_users_selected.xml b/uikit/src/main/res/drawable/ic_users_selected.xml new file mode 100644 index 0000000..d2e193f --- /dev/null +++ b/uikit/src/main/res/drawable/ic_users_selected.xml @@ -0,0 +1,13 @@ + + + diff --git a/uikit/src/main/res/drawable/ic_video_call_black_24dp.xml b/uikit/src/main/res/drawable/ic_video_call_black_24dp.xml deleted file mode 100644 index d242ad8..0000000 --- a/uikit/src/main/res/drawable/ic_video_call_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_video_group_call.xml b/uikit/src/main/res/drawable/ic_video_group_call.xml new file mode 100644 index 0000000..80cbd5a --- /dev/null +++ b/uikit/src/main/res/drawable/ic_video_group_call.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_videocam_24dp.xml b/uikit/src/main/res/drawable/ic_videocam_24dp.xml deleted file mode 100644 index 5498ba1..0000000 --- a/uikit/src/main/res/drawable/ic_videocam_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/uikit/src/main/res/drawable/ic_videocam_green_24dp.xml b/uikit/src/main/res/drawable/ic_videocam_green_24dp.xml deleted file mode 100644 index 246475d..0000000 --- a/uikit/src/main/res/drawable/ic_videocam_green_24dp.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/ic_whiteboard_24dp.png b/uikit/src/main/res/drawable/ic_whiteboard_24dp.png deleted file mode 100644 index 3203dbf..0000000 Binary files a/uikit/src/main/res/drawable/ic_whiteboard_24dp.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/ic_writeboard_24dp.png b/uikit/src/main/res/drawable/ic_writeboard_24dp.png deleted file mode 100644 index 1c10e29..0000000 Binary files a/uikit/src/main/res/drawable/ic_writeboard_24dp.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/info.png b/uikit/src/main/res/drawable/info.png deleted file mode 100644 index 055c2fc..0000000 Binary files a/uikit/src/main/res/drawable/info.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/left_border_lmessage.xml b/uikit/src/main/res/drawable/left_border_lmessage.xml index 8a5ec9a..0fecb59 100644 --- a/uikit/src/main/res/drawable/left_border_lmessage.xml +++ b/uikit/src/main/res/drawable/left_border_lmessage.xml @@ -3,8 +3,8 @@ - - + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/left_border_rmessage.xml b/uikit/src/main/res/drawable/left_border_rmessage.xml index 47a5e4b..6502a0b 100644 --- a/uikit/src/main/res/drawable/left_border_rmessage.xml +++ b/uikit/src/main/res/drawable/left_border_rmessage.xml @@ -3,7 +3,7 @@ - + diff --git a/uikit/src/main/res/drawable/reply.png b/uikit/src/main/res/drawable/reply.png deleted file mode 100644 index 6134649..0000000 Binary files a/uikit/src/main/res/drawable/reply.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/reply_privately.png b/uikit/src/main/res/drawable/reply_privately.png deleted file mode 100644 index 3d758fc..0000000 Binary files a/uikit/src/main/res/drawable/reply_privately.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/share.png b/uikit/src/main/res/drawable/share.png deleted file mode 100644 index 4db3d51..0000000 Binary files a/uikit/src/main/res/drawable/share.png and /dev/null differ diff --git a/uikit/src/main/res/drawable/smart_reply.xml b/uikit/src/main/res/drawable/smart_reply.xml deleted file mode 100644 index c9e18d0..0000000 --- a/uikit/src/main/res/drawable/smart_reply.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/start_converastion_tab_state.xml b/uikit/src/main/res/drawable/start_converastion_tab_state.xml new file mode 100644 index 0000000..e0b9b22 --- /dev/null +++ b/uikit/src/main/res/drawable/start_converastion_tab_state.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/start_conversation_tab_active.xml b/uikit/src/main/res/drawable/start_conversation_tab_active.xml new file mode 100644 index 0000000..0f9a2b3 --- /dev/null +++ b/uikit/src/main/res/drawable/start_conversation_tab_active.xml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/uikit/src/main/res/drawable/thin_rounded_border.xml b/uikit/src/main/res/drawable/thin_rounded_border.xml deleted file mode 100644 index cff1883..0000000 --- a/uikit/src/main/res/drawable/thin_rounded_border.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/uikit/src/main/res/drawable/thread.png b/uikit/src/main/res/drawable/thread.png deleted file mode 100644 index 7b9ad8b..0000000 Binary files a/uikit/src/main/res/drawable/thread.png and /dev/null differ diff --git a/uikit/src/main/res/layout/activity_comet_chat_start_conversation.xml b/uikit/src/main/res/layout/activity_comet_chat_start_conversation.xml new file mode 100644 index 0000000..a6d50ff --- /dev/null +++ b/uikit/src/main/res/layout/activity_comet_chat_start_conversation.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/uikit/src/main/res/menu/cometchat_navigation_bottom.xml b/uikit/src/main/res/menu/cometchat_navigation_bottom.xml index 43f5f00..ebe3179 100644 --- a/uikit/src/main/res/menu/cometchat_navigation_bottom.xml +++ b/uikit/src/main/res/menu/cometchat_navigation_bottom.xml @@ -9,15 +9,15 @@ + android:icon="@drawable/ic_audiocall" /> + android:icon="@drawable/ic_users"/> \ No newline at end of file diff --git a/uikit/src/main/res/raw/incoming_call.wav b/uikit/src/main/res/raw/incoming_call.wav index 83b86ab..742a253 100644 Binary files a/uikit/src/main/res/raw/incoming_call.wav and b/uikit/src/main/res/raw/incoming_call.wav differ diff --git a/uikit/src/main/res/raw/incoming_message.wav b/uikit/src/main/res/raw/incoming_message.wav index 042b935..3b1d636 100644 Binary files a/uikit/src/main/res/raw/incoming_message.wav and b/uikit/src/main/res/raw/incoming_message.wav differ diff --git a/uikit/src/main/res/raw/outgoing_call.wav b/uikit/src/main/res/raw/outgoing_call.wav index 7fa2615..aff9792 100644 Binary files a/uikit/src/main/res/raw/outgoing_call.wav and b/uikit/src/main/res/raw/outgoing_call.wav differ diff --git a/uikit/src/main/res/raw/outgoing_message.wav b/uikit/src/main/res/raw/outgoing_message.wav index d7c4282..667431f 100644 Binary files a/uikit/src/main/res/raw/outgoing_message.wav and b/uikit/src/main/res/raw/outgoing_message.wav differ diff --git a/uikit/src/main/res/raw/record_error.wav b/uikit/src/main/res/raw/record_error.wav deleted file mode 100644 index 9749c15..0000000 Binary files a/uikit/src/main/res/raw/record_error.wav and /dev/null differ diff --git a/uikit/src/main/res/raw/record_finished.wav b/uikit/src/main/res/raw/record_finished.wav deleted file mode 100644 index 3844708..0000000 Binary files a/uikit/src/main/res/raw/record_finished.wav and /dev/null differ diff --git a/uikit/src/main/res/raw/record_start.wav b/uikit/src/main/res/raw/record_start.wav deleted file mode 100644 index cc4a1f3..0000000 Binary files a/uikit/src/main/res/raw/record_start.wav and /dev/null differ diff --git a/uikit/src/main/res/values-ar/strings.xml b/uikit/src/main/res/values-ar/strings.xml index 2ba63b8..25a695b 100644 --- a/uikit/src/main/res/values-ar/strings.xml +++ b/uikit/src/main/res/values-ar/strings.xml @@ -4,9 +4,7 @@ المكالمات المجموعات المزيد - إرسال... ⚠️ تم حذف هذه الرسالة - ⚠️ قمت بحذف هذه الرسالة عرض على يوتيوب 📷 صور 📹 فيديو @@ -21,91 +19,54 @@ 📝 السبورة 📃 وثيقة عبر الإنترنت - غير متصل أنت مشرف مدير الجلسة مشارك الخصوصية والأمان - الخصوصية المستخدمون المحظورون - الجميع التفضيلات لقد حظرت الأعضاء - إلى الخلف إلغاء نص تم نسخه إلى الحافظة اليوم البارحة - كتابة... هو كتابة... - إغلاق يرجى إدخال اسم المجموعة - منعش... إلغاء الحظر جعل مشرف المجموعة جعل مشرف المجموعة الإداريون - إضافة مشرف - إضافة مشرف مالك تعيين كمشرف المجموعة إزالة كمشرف المجموعة تعيين كمنسق للمجموعة إزالة كمجموعة مشرف - تتم إزالة كمشرف المجموعة تتم إزالة كمشرف مجموعة هو الآن المشرف هو الآن مشرف ⚠️ إزالة - كمشرف من - كمشرف من مجموعة؟ ✅ إضافة - كمشرف في - كمشرف في طيب - كمشرف - كمشرف إضافة أعضاء قضايا - الخصوصية والدعم - ارسل رسالة إضافة في إلغاء حظر المستخدم كتلة المستخدم - تمت إضافتها بنجاح تم إلغاء حظره بنجاح - تم حظره بنجاح - حذف وخروج ترك المجموعة - من عند - تمت إزالتها بنجاح حظرت بنجاح غير محظورة بنجاح - تم حذفها بنجاح - لقد غادرت من - إزالة العضو حظر عضو - عضوًا إنشاء مجموعة - إنضممت - إلى الأمام وسائل الإعلام المشتركة - غير قادر على إعادة توجيه الرسالة إلى يمكنك إعادة توجيه الرسالة فقط إلى 5 مشاركين في كل مرة - لا توجد صور - لا توجد فيديوهات - لا توجد وثائق التاريخ مكالمة فيديو مكالمة صوتية - السبورة - التحميل... - 1 الرد - الردود إطلاق انضم وقد شارك خنزير أبيض تعاوني @@ -124,66 +85,24 @@ نسخ الرسالة إنشاء استطلاع للرأي إرسال ملصق - إرسال الموقع... - تم إرسال الموقع بنجاح البحث - لم يتم العثور على المستخدمين خطأ - لم يتم العثور على مجموعات - لم يتم العثور على دردشات - رسالة إعلامية مكالمة صوتية واردة مكالمة فيديو واردة - انخفاض - قبول - بدأ الاتصال - مكالمة صوتية صادرة - مكالمة فيديو صادرة - تم رفض المكالمة مكالمة مرفوضة - تم قبول المكالمة انضم - ترك المكالمة - مكالمة صوتية لم تتم الإجابة عليها - مكالمة فيديو لم تتم الإجابة عليها انتهت المكالمة - تم إلغاء المكالمة - استدعاء مشغول الدعوة... - لم يتم العثور على أعضاء محظورين الأعضاء المحظورين - اسم - النطاق نبان - تحديد نوع المجموعة أدخل كلمة مرور المجموعة - إنشاء إنشاء استطلاع للرأي سؤال أدخل سؤالك - خيارات أدخل الخيار الخاص بك - إضافة خيار جديد - عرض الأعضاء تفاصيل - الإشعارات - أخرى - مساعدة - الإبلاغ عن مشكلة - أعضاء المجموعة بان - ركلة - اختيار الرموز التعبيرية الخاصة بك - المجموعة المحمية زيارة - رمز تعبيري - لم يتم العثور على رسائل - الموضوع - وثيقة تعاونية - السبورة التعاونية - إضافة رد فعل - لم يتم العثور على ملصقات - الرد في موضوع اكتب رسالة فشل استرجاع المستخدم المحظور @@ -192,22 +111,17 @@ هل ترغب في إلغاء حظر %1$s غير قادر على حظر %1$s يرجى إدخال تفاصيل المجموعة للمتابعة - غير قادر على الانضمام إلى المجموعة هل ترغب في جعل %1$s كمسؤول ⚠️ إزالة من %1$s إضافة %1$s إلى\» %2$s\» تمت إضافة %1$s إلى\» %2$s\» تتم إزالة %1$s من\ "%2$s\» - فشل عضو المجموعة هل ترغب في الرحيل من المجموعة؟ حذف المجموعة حذف المجموعة - فشل حذف المجموعة لا يمكن إزالة %1$s - غير قادر على ترك المجموعة تحميل المزيد تحميل المزيد من الأعضاء %1$s - غير قادر على جلب قائمة المجموعات كلمة المرور الانضمام غير صحيح @@ -219,13 +133,11 @@ أدخل كلمة المرور للانضمام إلى %1$s لا يوجد أعضاء محظورين المشرفين - غير قادر على استرداد قائمة المنسق. هل ترغب في جعل %1$s كمشرف المشرف فقط يمكن إزالة مشرف تحديث المجموعة أدخل رابط أيقونة المجموعة تم تحديث المجموعة بنجاح - لم يتم تحديث المجموعة أدخل كلمة المرور القديمة أدخل كلمة مرور جديدة تنبيه المجموعة @@ -234,8 +146,6 @@ هل ترغب في جعل %1$s كمالك %1$s هو الآن المالك أنت لست عضوًا في هذه المجموعة (%1$s) - تنبيه المالك - يرجى نقل ملكية المجموعة إلى عضو آخر قبل مغادرة المجموعة عامة خاص @@ -248,15 +158,10 @@ يمكن لمالك المجموعة فقط إزالة المشرف. تتم إزالة %1$s من امتياز المشرف غير قادر على تحديث عضو المجموعة - >فشل استرداد قائمة المشرف - غير قادر على إنشاء مجموعة فشلت العملية على %1$s - خطأ: غير قادر على تحميل قائمة أعضاء المجموعة - غير قادر على جلب قائمة الأعضاء المحظورين يرجى منح إذن الكاميرا من إعداد التطبيق يرجى منح إذن تخزين من إعداد التطبيق الملف غير موجود - غير قادر على جلب قائمة المكالمات أنت لم تقم بأي مكالمات غير قادر على بدء المكالمة @@ -283,7 +188,6 @@ إرسال الخصوصية والدعم المستخدم - رسالة مخصصة غير معتمدة أدخل عنوان ورل للصورة الرمزية أدخل اسم المستخدم تحديث المستخدم @@ -302,8 +206,6 @@ مؤشر الترابط في %1$s تم إرساله في: %1$s الاتصال بالمكالمة - القراءة في: %1$s - تم تسليمها عند: %1$s التنقل يرجى السماح بإذن الموقع. إرسال ملفات صوتية @@ -315,7 +217,6 @@ تمكين نظام تحديد المواقع نظام تحديد المواقع تعطيل خيارات - إرسال رسالة الوسائط إضافة خيار جديد غير قادر على الحصول على موقعك انتهى @@ -324,11 +225,10 @@ مشاركة لوح معلومات مشاركة لوح الكتابة مشاركة لوحة الكتابة - لقد أرسلت %1$s تلقيت %1$s بدء مكالمة انقر لبدء المحادثة - تم حظر٪ 1 $ s بنجاح + تم حظر ٪1$s بنجاح شارك مستندًا تعاونيًا. لا رسائل الموضوع مضاف @@ -338,7 +238,6 @@ لا يوجد ترجمة متوفرة شارك في مكالمة جماعية. مكالمة جماعية 📹 - ابدأ مكالمة جماعية لقد قمت بإنشاء مكالمة جماعية. تم التصويت على النجاح تحميل @@ -348,9 +247,6 @@ تم تحديث المستخدم بنجاح "مستخدم اليسار" انضمام المستخدم - تم الاتصال بنجاح - الاتصال قيد التقدم - أنت غير متصل. لا يتوفر إنترنت تم حظرك بواسطة @@ -364,29 +260,43 @@ الاستطلاع \ "id \" مفقود أنت لست منشئ الاستطلاع - يرجى الاتصال بطريقة CometChat.init () ويفضل أن تكون في طريقة onCreate () لفئة التطبيق قبل استدعاء أي طرق أخرى متعلقة بـ CometChat كلمة المرور إلزامية لمجموعة محمية - تجاوز الحد الحد الأقصى لـ ٪s - يرجى تسجيل الدخول إلى CometChat قبل استدعاء هذه الطريقة الرجاء تقديم GUID صالح الرجاء تقديم UID صالح لا يمكن أن يكون المعرف الفريد فارغًا. يرجى تقديم UID صالح لا يمكن أن يحتوي المعرف الفريد على مسافات. يرجى تقديم UID صالح هناك خطأ ما التمديد معطل. يرجى تمكين الامتداد من CometChat Dashboard - لا يمكن أن يكون نص الرسالة فارغًا لا يمكن أن يكون اسم المجموعة فارغًا أو فارغًا - لا يمكن أن تكون الرسالة فارغة. الرجاء تمرير كائن "BaseMessage" صالح - تم توفير اسم غير صالح للمستخدم. الرجاء إدخال اسم صالح - لا يمكن أن يكون اسم المجموعة فارغًا. يرجى تقديم اسم مجموعة صالح تعذر العثور على الامتداد المقدم. ركل غادر جارى التحميل إنشاء المجموعة - إرسال الرسالة بشكل خاص + إرسال الرسالة بشكل خاص عرض الصفحة الشخصية - مسح المحادثة هل ترغب في حذف هذه المحادثة؟ حذف المحادثة + لا يوجد إنترنت متاح + غير متصل على الانترنت + رسائل جديدة + رسالة جديدة + تم التوصيل + يقرأ + تصويت + الأصوات + يتناقص + إجابه + رد + الردود + الرد بشكل خاص + اختر المستخدم + اختر مجموعة + بحث في المستخدمين + مجموعات البحث + مكالمة صوتية مرفوضة + مكالمة فيديو مرفوضة + مكالمة صوتية صادرة + مكالمة فيديو صادرة + لم يتم العثور على أعضاء محظورين \ No newline at end of file diff --git a/uikit/src/main/res/values-de/strings.xml b/uikit/src/main/res/values-de/strings.xml index 43aca14..5e851e3 100644 --- a/uikit/src/main/res/values-de/strings.xml +++ b/uikit/src/main/res/values-de/strings.xml @@ -4,10 +4,8 @@ Anrufe Gruppen mehr - Senden... ⚠️ Diese Nachricht wurde gelöscht - ⚠️ Du hast diese Nachricht gelöscht - 📷 Foto + 📷 Bild 📹 Video 🎵 Audio 📁 Datei @@ -20,9 +18,8 @@ 📝 Whiteboard 📃 Dokument Online - Offline Du - Admin + Verwalter Moderator Teilnehmerin @@ -31,89 +28,55 @@ Passwort-geschützt Datenschutz und Sicherheit - Datenschutz - Gesperrte - Jeder + Gesperrte Benutzer Präferenzen Du hast geblockt Mitglieder - zurück Abbrechen Text in Zwischenablage kopiert - heute + Heute Gestern - tippen... - tippt... - schliessen - Bitte geben Sie den Gruppennamen ein - Erfrischend + schreibt... + Gruppennamen eingeben Entsperren Gruppenadministrator machen Machen Sie Gruppenmoderator Administratoren - Admin hinzufügen - Moderator hinzufügen Inhaber Als Gruppenadministrator zuweisen Als Gruppenadministrator entfernen Als Gruppenmoderator zuweisen Als Gruppen-Moderator entfernen - wird als Gruppenadministrator entfernt wird als Gruppenmoderator entfernt ist jetzt Admin ist jetzt Moderator ⚠️ Entfernen - als Admin von - als Moderator von Gruppe? ✅ Addieren - als Admin in - als Moderator in OKAY - als Moderator - als Admin Mitglieder hinzufügen - AKTIONEN - DATENSCHUTZ & UNTERSTÜTZUNG - Nachricht senden + Aktionen Fügen Sie hinzu Benutzer entsperren Benutzer blockieren - erfolgreich hinzugefügt wurde erfolgreich freigegeben - erfolgreich geblockt - Löschen & Beenden Verlasse die Gruppe - von - erfolgreich entfernt erfolgreich gebannt unbanned erfolgreich - erfolgreich gelöscht - Du bist weggegangen - Mitglied entfernen Ban Mitglied - Unban-Mitglied Gruppe erstellen - Du bist beigetreten - Vorwärts Geteilte Medien - Nachricht kann nicht weiterleiten an Sie können Nachrichten nur an 5 Teilnehmer gleichzeitig weiterleiten - Keine Fotos - Keine Videos - Keine Dokumente Geschichte Videoanruf Audio-Anruf - Whiteboard - Wird geladen... - 1 antwort - Antworten Starten Beitreten - hat einen kollaborativen Whiteboar geteilt - Du hast einen neuen kollaborativen Whiteboar erstellt + hat ein kollaboratives Whiteboard geteilt + Du hast ein neues kollaboratives Whiteboard erstellt Du hast ein neues kollaboratives Dokument erstellt + hat ein gemeinschaftliches Dokument geteilt. + Foto- und Videothek Mach ein Foto Standort teilen @@ -121,79 +84,30 @@ Nachricht löschen Antwort-Meldung Nachricht weiterleiten - Faden starten + Antwort im Thread Nachricht teilen Informationen zur Meldung Mitteilung kopieren Eine Umfrage erstellen Sticker versenden - Standort wird gesendet... - Standort wurde erfolgreich gesendet Suche - Keine Benutzer gefunden Fehler - Keine Gruppen gefunden - Keine Chats gefunden - Mediale Botschaft Eingehender Audioanruf Eingehender Videoanruf - Rückgang - Akzeptieren - Anruf initiiert - Ausgehender Audioanruf - Ausgehender Videoanruf - Anruf abgelehnt Anruf abgelehnt - Anruf akzeptiert verbunden - hat den Anruf verlassen - Unbeantworteter Audioan - Unbeantworteter Videoan Anruf endete - Anruf wurde abgebrochen - Anruf beschäftigt Rufen... - Keine verbotenen Mitglieder gefunden Verbotene Mitglieder - Nennen - Scope - Aufheben - Gruppentyp wählen - erstellen + Entsperren Umfrage erstellen Frage Gib deine Frage ein - Optionen Geben Sie Ihre Option - Neue Option hinzufügen - Mitglieder ansehen Einzelheiten - Benachrichtigungen - andere - Hilfe - Melden Sie ein Problem - Mitglieder der Gruppe - Ban - Tritt - Wähle dein Emoji - Geschützte Gruppe + Sperren Auf Youtube ansehen Besuch - Emoji - Keine Nachrichten gefunden - Gewinde - Gemeinschaftliches Dokument - Kollaboratives Whiteboard - Reaktion hinzufügen - Keine Aufkleber gefunden - Antwort im Thread - SONNTAG - MONTAG - DIENSTAG - MITTWOCH - DONNERSTAG - FREITAG - SAMSTAG Schreiben Sie eine Nachricht Abrufen des blockierten Benutzers fehlgeschlagen Sie können keine Nachrichten senden oder empfangen @@ -201,22 +115,17 @@ Würdest du möchte %1$s entsperren %1$s kann nicht blockiert werden Bitte geben Sie Gruppendetails ein, um fortzufahren - Gruppe kann nicht beitreten Möchtest Sie %1$s als Admin machen ⚠️ Entfernen von %1$s %1$s zu\“ %2$s\“ %1$s wurde zu\“ %2$s\“ hinzugefügt %1$s wird von\“ %2$s\“ entfernt - Gruppenmitglied gekickt - Möchten Sie von der Gruppe abreisen? - Gruppe löschen - Löschen Sie die Gruppe - Löschen der Gruppe ist fehlgeschlagen + Bist du sicher, dass du die Gruppe verlassen willst? + Löschen und beenden + Bist du sicher, dass du löschen möchtest? %1$s kann nicht entfernt werden - Die Gruppe kann nicht verlassen werden Lade mehr Laden Sie mehr %1$s Mitglieder - Die Gruppenliste kann nicht abgerufen werden Passwort Beitritt Falsch @@ -229,23 +138,19 @@ Geben Sie das Passwort ein, um %1$s Keine verbotenen Mitglieder Moderatoren - Die Moderatorenliste kann nicht abgerufen werden. Möchtest Sie %1$s als Moderator machen Nur Admin kann Moderator entfernen Update-Gruppe Gruppen-Icon-URL eingeben Gruppe wurde erfolgreich aktualisiert - Gruppe wurde nicht aktualisiert Geben Sie ein altes Passwort Geben Sie ein neues Passwort Gruppen-Alarm - Sie sind Gruppeninhaber, übertragen Sie den Gruppeneigentum an jemand anderen, bevor Sie die Gruppe verlassen. + Du bist der Gruppeninhaber, bitte übertrage die Gruppe an ein Mitglied, bevor Du die Gruppe verlässt. Inhaber machen Möchtest Sie %1$s als Eigentümer machen %1$s ist jetzt Eigentümer Sie sind kein Mitglied dieser Gruppe (%1$s) - Besitzer-Alarm - Bitte übertragen Sie den Gruppenbesitz auf ein anderes Mitglied, bevor Sie die Gruppe verlassen Öffentliche Gruppe Private Gruppe Passwort geschützte Gruppe @@ -253,15 +158,10 @@ Nur Gruppenbesitzer kann Admin entfernen. %1$s wurde von Admin-Berechtigungen entfernt Gruppenmitglied kann nicht aktualisiert werden - >Abruf der Admin-Liste ist fehl - Eine Gruppe kann nicht erstellt werden Vorgang ist bei %1$s fehlgeschlagen - Fehler: Die Liste der Gruppenmitglieder kann nicht geladen werden - Liste der gesperrten Mitglieder konnte nicht abgerufen werden Bitte erteilen Sie die Kamera-Berechtigung aus der Bitte erteilen Sie Speicherberechtigung aus App-Einstellung Die Datei existiert nicht - Anrufliste kann nicht abgerufen werden Sie haben keine Anrufe getätigt Anruf kann nicht eingeleitet werden @@ -278,9 +178,9 @@ Bilder VIDEOS -Dateien - Du hast keine Gespräche. - Keine Benutzer verfügbar - Keine Gruppen verfügbar + Keine Chats gefunden + Keine Benutzer gefunden + Keine Gruppen gefunden Keine Blockbenutzer Sie haben keine verpassten Anrufe ja @@ -288,7 +188,6 @@ Sende Datenschutz & Unterstützung benutzer - Benutzerdefinierte Nachricht wird nicht unterstützt Geben Sie die URL für Avatar ein Geben Sie den Benutzernamen Update-Benutzer @@ -307,8 +206,6 @@ Faden in %1$s Gesendet am: %1$s Verbindung mit Anruf - Lesen bei: %1$s - Geliefert am: %1$s Navigieren Bitte erlauben Sie Standortgenehmigung. Senden von Audiodateien @@ -320,8 +217,7 @@ GPS aktiviert GPS deaktiviert Optionen - Senden von Medienbotschaft - Eine neue Option hinzufügen + Neue Option hinzufügen Ihr Standort konnte nicht abgerufen werden Beendet Laufende @@ -329,12 +225,10 @@ Ein WhiteBoard geteilt WriteBoard teilen Ein WriteBoard geteilt - Sie haben einen %1$s gesendet Sie haben einen %1$s erhalten Einen Anruf einleiten Tippen Sie hier, um das Gespräch zu starten %1$s erfolgreich blockiert - hat ein kollaboratives Dokument freigegeben. Keine Thread-Nachrichten hinzugefügt initiiert @@ -344,7 +238,6 @@ Keine Übersetzung verfügbar hat einen Gruppenanruf geteilt. 📹 Gruppenanruf - Starten Sie einen Gruppenanruf Sie haben einen Gruppenanruf erstellt. Gewählter Erfolg Hochladen @@ -354,9 +247,6 @@ Benutzer erfolgreich aktualisiert "User Left" Benutzer beigetreten - Erfolgreich verbunden - Verbindung in Bearbeitung - Sie sind nicht verbunden. Kein Internet verfügbar Sie wurden von blockiert @@ -370,86 +260,43 @@ Die Umfrage "id" fehlt Sie sind nicht der Ersteller der Umfrage - Rufen Sie die CometChat.init () -Methode vorzugsweise in der onCreate () -Methode der Anwendungsklasse auf, bevor Sie andere mit CometChat zusammenhängende Methoden aufrufen Das Passwort ist für eine geschützte Gruppe obligatorisch - Die Grenze hat die maximale Grenze von %s überschritten - Bitte melden Sie sich bei CometChat an, bevor Sie diese Methode aufrufen Bitte geben Sie eine gültige GUID an Bitte geben Sie eine gültige UID an Die UID darf nicht leer sein. Bitte geben Sie eine gültige UID an Die UID darf keine Leerzeichen enthalten. Bitte geben Sie eine gültige UID an - etwas ist schief gelaufen - Der Anruf kann nicht abgebrochen werden, ohne einen Anruf einzuleiten - Beim Verbinden ist ein Fehler aufgetreten - Sitzungsfehlanpassung aufrufen. Bitte überprüfen Sie die Sitzungs-ID - Sowohl UID als auch GUID wurden nicht angegeben Bitte geben Sie die UID oder die GUID an für die die Nachricht abgerufen werden muss + Etwas ist schief gelaufen, bitte versuche es noch einmal Keine Internetverbindung. Bitte versuchen Sie es später erneut - Anfrage bereits in Bearbeitung - Für die Verwendung der Methode "fetchNext()" ist Timestamp oder MessageId oder updatedAfter erforderlich - Auth token kann nicht leer sein. Bitte geben Sie eine gültige auth token Die Erweiterung ist deaktiviert. Bitte aktivieren Sie die Erweiterung über das CometChat-Dashboard - Die angegebene Nachrichten-ID ist ungültig Bitte geben Sie eine gültige Nachrichten-ID an - Es kann nur TextMessage oder CustomMessage bearbeitet werden. Bitte geben Sie eine gültige Nachricht an - Die Liste ist leer. Bitte geben Sie eine gültige Liste an - Die Methode "updatesOnly()" kann nicht ohne die Methode "setUpdatedAfter()" verwendet werden - Fehler beim Parsen von JSON - Fehler beim Abmelden - AppID darf nicht leer sein. Bitte geben Sie eine gültige AppID an - Der angegebene Grenzwert muss eine positive Zahl sein - Region nicht angegeben. Bitte geben Sie die Region in der AppSettingsBuilder-Klasse mit der Methode `setRegion()` an - Die AppSettings dürfen nicht null sein - ApiKey kann nicht null oder leer sein. Bitte geben Sie einen gültigen API-Schlüssel an - Der von Ihnen eingegebene Nachrichtentyp ist für die folgende Aktion ungültig - Der Nachrichtentext darf nicht leer sein - Das Dateiobjekt darf nicht null sein oder der Dateipfad ist nicht vorhanden - Die URL der Mediennachricht ist auf null oder leer gesetzt - Benutzerdefiniertes Datenfeld darf nicht null oder leer sein Der Gruppenname darf nicht null oder leer sein - Der Gruppentyp darf nicht null oder leer sein - Login in Bearbeitung. Bitte warten Sie, bis die Anmeldeanforderung abgeschlossen ist - Nachricht kann nicht null sein. Bitte übergeben Sie ein gültiges BaseMessage-Objekt - Gruppe kann nicht null sein. Bitte übergeben Sie ein gültiges Gruppenobjekt - Anruf kann nicht null sein. Bitte übergeben Sie ein gültiges "Call" -Objekt - Ungültiger Anruftyp. Bitte geben Sie einen gültigen Anruftyp an - Ungültiger Empfängertyp. Bitte geben Sie einen gültigen Empfängertyp an - Ungültiger Sitzungs-ID-Typ. Bitte geben Sie eine gültige Sitzungs-ID an - Die bereitgestellte Aktivität darf nicht null sein. - Vorausgesetzt, RelativeLayout darf nicht null sein - Das bereitgestellte FCM-Token darf nicht null oder leer sein. Bitte geben Sie einen gültigen FCM-Token an - Der angegebene Gruppentyp darf nicht null oder leer sein - Anruf ist in Bearbeitung. Bitte beenden Sie den vorherigen Anruf, um diesen Vorgang auszuführen - Anruf, der von einer anderen Person initiiert wurde, kann nicht abgebrochen werden. Bitte verwenden Sie stattdessen den Status "Abgelehnt" - Ungültiger Name für den Benutzer angegeben. Bitte geben Sie einen gültigen Namen an - Benutzerobjekt darf nicht null sein. Bitte geben Sie ein gültiges Benutzerobjekt an - Der Gruppenname darf nicht leer sein. Bitte geben Sie einen gültigen Gruppennamen an - Der Zeitstempel muss positiv sein. Bitte geben Sie einen gültigen Zeitstempel an - Ungültige Kategorie. Bitte geben Sie eine gültige Kategorie an - Leeres Symbol. Bitte geben Sie ein gültiges Symbol an - Leere Beschreibung. Bitte geben Sie eine gültige Beschreibung an - Leere Metataten. Bitte geben Sie gültige Metadaten an - Ungültiger Geltungsbereich. Bitte geben Sie einen gültigen Umfang an - Ungültiger Geltungsbereich. Bitte geben Sie einen gültigen Umfang an - Ungültiges Gespräch mit. Bitte geben Sie einen gültigen Wert für die Konversation mit an - Ungültiger Konversationstyp. Bitte geben Sie einen gültigen Wert für die Konversation mit an - Ungültige Mediennachricht. Bitte geben Sie ein gültiges Dateiobjekt oder Anhangsdetails an. - Anhang darf nicht null sein. Bitte geben Sie gültige Anhangsdaten an - Ungültiger Dateiname. Bitte geben Sie einen gültigen Dateinamen an - Ungültige Dateiendung. Bitte geben Sie eine gültige Dateierweiterung an - Ungültiger MIME-Dateityp. Bitte geben Sie einen gültigen MIME-Dateityp an - Ungültige Datei-URL. Bitte geben Sie eine gültige Datei-URL an - Gespräch nicht gefunden - Einstellungen nicht gefunden. - Die bereitgestellte Funktion darf nicht null oder leer sein. Bitte geben Sie eine gültige Funktion an - Die angegebene Erweiterung darf nicht null oder leer sein. - Bereitgestellte Funktion nicht gefunden. Die bereitgestellte Erweiterung konnte nicht gefunden werden. verließ die wird heruntergeladen Gruppe erstellen - Nachricht privat senden - Profil anzeigen - Konversation löschen + Nachricht privat senden + Profil ansehen Möchten Sie diese Konversation löschen? Gespräch löschen + offline + Neue Nachrichten + Neue Nachricht + Ausgeliefert + Gesehen + Abstimmung + Wahlen + Rückgang + Akzeptieren + Antwort + Antworten + Privat antworten + Ausgehender Audioanruf + Ausgehender Videoanruf + Anruf abgelehnt + Anruf abgelehnt + Keine verbotenen Mitglieder gefunden + Wähle den Benutzer + Wähle die Gruppe + Benutzer suchen + Gruppen suchen \ No newline at end of file diff --git a/uikit/src/main/res/values-es/strings.xml b/uikit/src/main/res/values-es/strings.xml index 82e6247..8da7d95 100644 --- a/uikit/src/main/res/values-es/strings.xml +++ b/uikit/src/main/res/values-es/strings.xml @@ -4,15 +4,13 @@ Llamadas Grupos Más - Enviando... ⚠️ Este mensaje fue eliminado - ⚠️ Has eliminado este mensaje - 📷 Foto + 📷 Imagen 📹 Vídeo 🎵 Audio 📁 Archivo Tienes un mensaje - Llamada de voz perdida» + Llamada de voz perdida Videollamada perdida 📍 Ubicación 📊 Encuesta @@ -20,9 +18,8 @@ 📝 Pizarra blanca 📃 Documento En línea - Offline Usted - Admin + Administrador Moderador Participante @@ -31,94 +28,59 @@ Protegido con contraseña Privacidad y Seguridad - Privacidad Usuarios bloqueados - Todos Preferencias Has bloqueado Miembros - Espalda Cancelar Texto copiado al Portapapeles Hoy Ayer Fototeca y Videoteca - escribiendo... está escribiendo... - Cerrar - Por favor, introduzca el nombre del grupo - Refrescante... + Introducir nombre de grupo Desbloquear Hacer administrador del grupo Hacer moderador de grupo Administradores - Agregar administrador - Añadir moderador Propietario Asignar como administrador de grupo Quitar como administrador de grupo Asignar como moderador de grupo Eliminar como grupo Moderador - se elimina como administrador del grupo se elimina como moderador de grupo ahora es Admin ahora es Moderador ⚠️ Quitar - como administrador de - como moderador de ¿Grupo? ✅ Añadir - como administrador en - como moderador en DE ACUERDO - como moderador - como administrador Agregar miembros - ACCIONES - PRIVACIDAD Y SOPORTE - Enviar mensaje + Acciones Añadir en Desbloquear usuario Bloquear usuario - agregado correctamente desbloqueado correctamente - bloqueado correctamente - Eliminar y salir Salir del grupo - desde - eliminado correctamente prohibido correctamente no prohibido correctamente - eliminado correctamente - Te fuiste de - Quitar miembro Miembro de prohibición - Miembro de Unban Crear grupo - Te uniste - Adelante Medios compartidos - No se puede reenviar el mensaje a Puede reenviar mensajes sólo a 5 participantes a la vez - No hay fotos - No hay vídeos - Sin documentos Historia Videollamada Llamada de audio - Pizarra blanca - Cargando... - 1 respuesta - respuestas Lanzamiento Unirse - ha compartido un jabalí blanco colaborativo - Has creado un nuevo jabalí blanco colaborativo - Has creado una nueva documen colaborativa + ha compartido una pizarra colaborativ + Has creado una nueva pizarra colaborativa + Ha creado un nuevo documento colaborativo + ha compartido un documento colaborativo Tomar una foto Compartir ubicación @@ -126,73 +88,24 @@ Eliminar mensaje Mensaje de respuesta Reenviar mensaje - Iniciar subproceso + Responder en hilo Compartir mensaje Información del mensaje Copiar mensaje Crear una encuesta Enviar pegatina - Enviando ubicación... - Ubicación enviada correctamente - No se han encontrado usuarios Error - No se han encontrado grupos - No se encontraron chats - Mensaje multimedia - Declive - Aceptar - Llamada iniciada - Llamada de audio saliente - Videollamada saliente - Llamada rechazada - Llamada aceptada se unieron - dejó la llamada - Llamada de audio sin respuesta - Videollamada sin respuesta Llamada finalizada - Llamada cancelada - Llamada ocupada Llamando... - No se encontraron miembros prohibidos - Nombre - Ámbito - Desbancar - Seleccionar tipo de grupo - Crear + Levantar la prohibición Crear encuesta - Opciones - Agregar nueva opción - Ver miembros - Notificaciones - Otro - Ayudar - Informar de un problema - Miembros del grupo Prohibición - Patada - Elige tu emoji - Grupo protegido Ver en Youtube Visitar - Emoji - No se han encontrado mensajes - Rosca - Documento colaborativo - Pizarra colaborativa - Añadir reacción - No se encontraron pegatinas - Responder en hilo - DOMINGO - LUNES - MARTES - MIÉRCOLES - JUEVES - VIERNES - SÁBADO Escribir un mensaje Error en la recuperación del usuario bloqueado No podrás enviar ni recibir mensajes @@ -200,26 +113,22 @@ ¿Desea desbloquear %1$s No se puede bloquear %1$S Por favor, introduzca los detalles del grupo para continuar - No se puede unir al grupo ¿Te gusta hacer% 1$s como administrador ⚠️ Quitar de %1$s Añadir %1$s a\» %2$s\» %1$s se agrega a\» %2$s\» %1$s se ha eliminado de\» %2$s\» - Error al miembro del grupo - ¿Te gustaría salir del grupo? - Eliminar grupo - Eliminar el grupo - Error al eliminar el grupo + ¿Estás seguro de que quieres dejar el grupo? + Eliminar y salir + ¿Está seguro de que desea eliminar? No se puede eliminar %1$s - No se puede abandonar el grupo Cargar más Cargar más %1$s miembros - No se puede obtener la lista de grupos Contraseña Unirse Incorrecto Miembros prohibidos + No se encontraron miembros prohibidos Miembros prohibidos de %1$s No se puede anular la bana %1$s Introducir descripción del grupo @@ -229,23 +138,19 @@ Introduzca la contraseña para unir %1$s No hay miembros prohibidos Moderadores - No se puede recuperar la lista de moderadores. ¿Te gusta hacer %1$s como moderador Sólo Admin puede eliminar moderador Actualizar grupo Introducir URL del icono de grupo Grupo actualizado correctamente - Grupo no actualizado Introducir contraseña antigua Introduce la nueva contraseña Alerta de grupo - Usted es propietario del grupo, Transfiera la propiedad del grupo a otra persona antes de abandonar el grupo. + Usted es el propietario del grupo, por favor transfiera la propiedad a un miembro antes de abandonar el grupo. Hacer propietario ¿Te gusta hacer %1$s como propietario %1$s ahora es Propietario No es miembro de este grupo (%1$s) - Alerta de propietario - Transfiera la propiedad del grupo a otro miembro antes de abandonar el grupo Grupo Público Grupo Privado Grupo protegido por contraseña @@ -253,15 +158,10 @@ Sólo el propietario del grupo puede eliminar administrador. %1$s se ha quitado del privilegio de administrador No se puede actualizar el miembro del grupo - >Error en la recuperación de la lista de administradores - No se puede crear un grupo Error en la operación en %1$s - Error: no se puede cargar la lista de miembros del grupo - No se puede obtener la lista de miembros prohibidos Concede permiso de cámara desde la configuración de la aplicación Concede permiso de almacenamiento desde la configuración de la aplicación El archivo no existe - No se puede obtener la lista de llamadas No has hecho ninguna llamada No se puede iniciar la llamada @@ -281,9 +181,9 @@ Imágenes Vídeos Archivos - No tienes conversaciones. - No hay usuarios disponibles - No hay grupos disponibles + No se encontraron chats. + No se han encontrado usuarios + No se han encontrado grupos Sin bloqueo de usuarios No tienes llamadas perdidas @@ -293,7 +193,6 @@ Privacidad y asistencia Usuario Buscar - Mensaje personalizado no compatible Introducir URL para el avatar Introducir nombre de usuario Actualizar usuario @@ -312,8 +211,6 @@ Subproceso en %1$s Enviado a: %1$s Conectarse a la llamada - Leer en: %1$s - Entregado en: %1$s Navegar Permita permiso de ubicación. Enviar archivos de audio @@ -325,11 +222,10 @@ GPS habilitado GPS deshabilitado Opciones - Envío de mensajes multimedia Introduce tu opción Introduce tu pregunta Pregunta - Agregar una nueva opción + Agregar nueva opción No se puede obtener su ubicación Terminado Continuo @@ -337,12 +233,10 @@ Compartir una pizarra Compartir WriteBoard Compartir un WriteBoard - Enviaste un %1$s Recibiste una %1$s Iniciar una llamada Toca para iniciar una conversación %1$s bloqueado correctamente - ha compartido una documen colaborativa No hay mensajes de hilo adicional iniciado @@ -352,7 +246,6 @@ No hay traducción disponible ha compartido una llamada grupal. 📹 Llamada grupal - Iniciar una llamada grupal Ha creado una llamada grupal. Votado con éxito subiendo @@ -362,9 +255,6 @@ Usuario actualizado correctamente "Usuario izquierdo" Usuario unido - Se conectó correctamente - Conexión en curso - Estás desconectado. No hay Internet disponible Has sido bloqueado por @@ -378,86 +268,42 @@ Falta la encuesta \ "id \" No eres el creador de la encuesta - Llame al método CometChat.init () preferiblemente en el método onCreate () de la clase de aplicación antes de llamar a cualquier otro método relacionado con CometChat La contraseña es obligatoria para un grupo protegido - El límite superó el límite máximo de %s - Inicie sesión en CometChat antes de llamar a este método Proporcione un GUID válido Proporcione un UID válido UID no puede estar en blanco. Proporcione un UID válido UID no puede contener espacios. Proporcione un UID válido - algo salió mal - La llamada no se puede cancelar sin iniciar una llamada - Algo salió mal al conectarse - Discrepancia en la sesión de llamadas. Verifique el ID de la sesión - Ambos UID y GUID no especificados Especifique el UID o el GUID para el que es necesario recuperar el mensaje + Algo salió mal, inténtalo de nuevo No hay conexión a Internet. Vuelve a intentarlo más tarde. - Solicitud ya en curso - Se requiere Timestamp o MessageId o updatedAfter para usar el método fetchNext() - Auth token No puede estar vacía. Por favor proporcione una válida auth token La extensión está deshabilitada. Habilite la extensión desde CometChat Dashboard - El ID de mensaje proporcionado no es válido Proporcione un ID de mensaje válido - Solo se puede editar TextMessage o CustomMessage. Proporcione un mensaje válido - La lista proporcionada está vacía. Proporcione una lista válida - El método "updatesOnly()" no se puede utilizar sin el método "setUpdatedAfter()" - Error al analizar JSON - Error al cerrar la sesión - AppID no puede estar vacío. Especifique un ID de aplicación válido - El límite especificado debe ser un número positivo - Región no especificada. Especifique la región en la clase AppSettingsBuilder usando el método `setRegion()` - AppSettings no puede ser nulo - ApiKey no puede ser nulo ni estar vacío. Proporcione una clave de API válida - El tipo de mensaje que ingresó no es válido para la siguiente acción - El texto del mensaje no puede estar vacío - El objeto de archivo no puede ser nulo o la ruta de archivo no existe - La URL del mensaje multimedia está configurada como nula o en blanco - El campo de datos personalizado no puede ser nulo ni estar vacío - El nombre del grupo no puede ser nulo ni estar vacío - El tipo de grupo no puede ser nulo ni estar vacío - Inicio de sesión en curso. Espere a que finalice la solicitud de inicio de sesión - El mensaje no puede ser nulo. Pase un objeto `BaseMessage` válido - El grupo no puede ser nulo. Por favor pase un objeto "Grupo" válido - La llamada no puede ser nula. Pase un objeto "Call" válido - Tipo de llamada no válido. Proporcione un tipo de llamada válido - Tipo de receptor no válido. Proporcione un tipo de receptor válido - Tipo de ID de sesión no válido. Proporcione una identificación de sesión válida - La actividad proporcionada no puede ser nula. - Proporcionado RelativeLayout no puede ser nula - El token de FCM proporcionado no puede ser nulo ni estar vacío. Proporcione un token FCM válido - El tipo de grupo proporcionado no puede ser nulo ni estar vacío - La llamada está en curso. Finalice la llamada anterior para realizar esta operación - No se puede cancelar la llamada iniciada por otra persona. Utilice el estado "rechazado" en su lugar - Se proporcionó un nombre no válido para el usuario. Proporcione un nombre válido - El objeto de usuario no puede ser nulo. Proporcione un objeto de usuario válido - El nombre del grupo no puede estar vacío. Proporcione un nombre de grupo válido - La marca de tiempo debe ser positiva. Proporcione una marca de tiempo válida - Categoría no válida. Proporcione una categoría válida - Icono vacío. Proporcione un icono válido - Descripción vacía. Proporcione una descripción válida - Metadatos vacíos. Proporciona metadatos válidos. - Alcance no válido. Proporcione un alcance válido - Alcance no válido. Proporcione un alcance válido - Conversación no válida con. Proporcione un valor válido para la conversación con - Tipo de conversación no válido. Proporcione un valor válido para la conversación con - Mensaje de medios no válido. Proporcione un objeto de archivo válido o detalles del archivo adjunto. - El adjunto no puede ser nulo. Proporcione detalles válidos del archivo adjunto. - Nombre de archivo inválido. Proporcione un nombre de archivo válido - Extensión de archivo inválida. Proporcione una extensión de archivo válida - Tipo de Mime de archivo no válido. Proporcione un tipo de archivo mime válido - URL de archivo no válida. Proporcione una URL de archivo válida - No se encontró la conversación para - Configuración no encontrada. - La característica proporcionada no puede ser nula ni estar vacía. Proporcione una función válida - La extensión proporcionada no puede ser nula ni estar vacía. - Característica proporcionada no encontrada. + El nombre del grupo no puede estar en blanco No se pudo encontrar la extensión proporcionada. dejó el grupo descargando creando grupo - Enviar mensaje de forma privada + Enviar mensaje en privado Ver perfil - eliminar la conversación ¿Quieres eliminar esta conversación? Eliminar conversación + Offline + mensajes nuevos + mensaje nuevo + Entregado + Visto + Votar + Votos + Rechazar + aceptar + respuesta + respuestas + Responder en privado + Llamada de audio saliente + Videollamada saliente + Seleccionar usuario + Selecciona grupo + Buscar usuarios + Grupos de búsqueda + Llamada de voz rechazada + Videollamada rechazada \ No newline at end of file diff --git a/uikit/src/main/res/values-fr/strings.xml b/uikit/src/main/res/values-fr/strings.xml index 92cde4f..aaa6737 100644 --- a/uikit/src/main/res/values-fr/strings.xml +++ b/uikit/src/main/res/values-fr/strings.xml @@ -4,9 +4,7 @@ Appels Groupes Plus - Envoi... ⚠️ Ce message a été supprimé - ⚠️ Vous avez supprimé ce message Voir sur Youtube 📷 Photo 📹 Vidéo @@ -21,7 +19,6 @@ 📝 Tableau blanc 📃 Document En ligne - Hors ligne Vous Admin Modérateur @@ -32,88 +29,52 @@ Mot de passe Confidentialité et sécurité - Vie privée Utilisateurs bloqués - Tout le monde Préférences Vous avez bloqué Membres - Retour Annuler Texte copié dans le Presse-papiers Aujourd\'hui Hier - dactylographie... est en train de taper... - Fermer Veuillez saisir le nom du groupe - Rafraîchissant... Débloquer Rendre administrateur de groupe Faire modérateur de groupe Administrateurs - Ajouter admin - Ajouter un modérateur Affecter comme administrateur de groupe Supprimer en tant qu\'administrateur de groupe Affecter comme modérateur de groupe Supprimer en tant que groupe Modérateur - est supprimé en tant qu\'administrateur de groupe est supprimé en tant que modérateur de groupe est maintenant Admin est maintenant modérateur ⚠️ Supprimer - en tant qu\'administrateur de - en tant que modérateur de Groupe ? ✅ Ajouter - en tant qu\'administrateur dans - en tant que modérateur dans OK. - en tant que modérateur - en tant qu\'administrateur Ajouter des membres ACTIONS - CONFIDENTIALITÉ ET SOUTIEN - Envoyer un message Ajouter dans Débloquer l\'utilisateur Bloquer l\'utilisateur - ajouté avec succès débloqué avec succès - bloqué avec succès - Supprimer et quitter Groupe de congé - à partir de - supprimé avec succès banni avec succès non banni avec succès - supprimé avec succès - Vous êtes parti de - Supprimer un membre Ban Membre - Membre Unban Créer un groupe - Vous avez rejoint - Avancer Médias partagés - Impossible de transférer le message à Vous ne pouvez transmettre le message qu\'à 5 participants à la fois - Pas de photos - Pas de vidéos - Aucun document Histoire Appel vidéo Appel audio - Tableau blanc - Chargement... - 1 réponse - réponses Lancement Joindre a partagé un sanglier @@ -130,77 +91,28 @@ Copier le message Créer un sondage Envoyer Autocollant - Emplacement d\'envoi... - Emplacement envoyé avec succès Rechercher - Aucun utilisateur trouvé Erreur - Aucun groupe trouvé - Aucun chat trouvé - Message pour les médias Appel audio entrant Appel vidéo entrant - Refuser - Accepter - Appel lancé - Appel audio sortant - Appel vidéo sortant - Appel rejeté appel rejeté - Appel accepté joint - a quitté l\'appel - Appel audio sans réponse - Appel vidéo sans réponse Appel terminé - Appel annulé - Appeler occupé Appeler... - Aucun membre interdit n\'a été trouvé Membres interdits - Nom - Portée Unban - Sélectionner le type de groupe Saisir le mot de passe - Créer Créer un sondage Question Saisissez votre question - Options Saisissez votre option - Ajouter une nouvelle option - Afficher les membres Détails - Notifications - Autres - Aide - Signaler un problème - Membres du groupe Interdiction - Coup de pied - Choisissez vos emoji Groupe privé - Groupe protégé Visitez - Emoji - Aucun message trouvé - Fil - Document collaboratif - Tableau blanc collaboratif - Ajouter une réaction - Aucun autocollant trouvé - Répondre dans le thread Supprimer un message Modifier le message - DIMANCHE - LUNDI - MARDI - MERCREDI - JEUDI - VENDREDI - SAMEDI Propriétaire Écrire un message Échec de la récupération de l\'utilisateur bloqué @@ -209,22 +121,17 @@ Souhaitez-vous débloquer %1$s Impossible de bloquer %1$s Veuillez saisir les détails du groupe pour continuer - Impossible de rejoindre le groupe Aimez-vous faire de %1$s en tant qu\'administrateur ⚠️ Supprimer de %1$s Ajouter %1$s à \ » %2$s \ » %1$s est ajouté à \ » %2$s \ » %1$s est supprimé de \ » %2$s \ » - Échec du membre du groupe Kicked Souhaitez-vous quitter le groupe ? Supprimer un groupe Supprimer le groupe - Échec de la suppression du groupe Impossible de supprimer %1$s - Impossible de quitter le groupe Charger plus Charger plus %1$s membres - Impossible d\'extraire la liste des groupes mot de passe Rejoindre Incorrect @@ -236,13 +143,11 @@ Saisissez le mot de passe pour joigne %1$s Aucun membre interdit Modérateurs - Impossible de récupérer la liste des modérateurs. Aimez-vous faire de %1$s en tant que modérateur Seul l\'administrateur peut supprimer le modérateur Mettre à jour groupe Entrez l\'URL de l\'icône du groupe Mise à jour du groupe - Groupe non mis à jour Entrez l\'ancien mot de passe Entrez un nouveau mot de passe Alerte groupe @@ -251,23 +156,16 @@ Aimez-vous faire de %1$s en tant que Propriétaire %1$s est maintenant propriétaire Vous n\'êtes pas membre de ce groupe (%1$s) - Alerte propriétaire - Veuillez transférer la propriété du groupe à un autre membre avant de quitter le groupe. Groupe public Groupe protégé par mot de passe Vous ne pouvez pas effectuer d\'action sur vous-même Seul le propriétaire du groupe peut supprimer admin. %1$s est supprimé du privilège admin Impossible de mettre à jour le membre du groupe - >Échec de la récupération de la liste d\'administration - Impossible de créer un groupe Échec de l\'opération sur %1$s - Erreur : impossible de charger la liste des membres du groupe - Impossible d\'extraire la liste des membres interdits Veuillez accorder l\'autorisation de caméra à partir des paramètres de l\'application Veuillez accorder l\'autorisation de stockage à partir du paramètre de l\'application Le fichier n\'existe pas - Impossible d\'extraire la liste d\'appels Vous n\'avez pas fait d\'appels Impossible de lancer l\'appel @@ -294,7 +192,6 @@ Envoyer Confidentialité et support Utilisateur - Message personnalisé non pris en charge Entrez l\'URL de l\'avatar Saisir le nom d\'utilisateur Mettre à jour utilisateur @@ -313,8 +210,6 @@ Thread dans %1$s Envoyé à :%1$s Connexion à l\'appel - Lire à :%1$s - Livré à :%1$s Naviguer Veuillez autoriser l\'autorisation de localisation. Envoyer des fichiers audio @@ -326,7 +221,6 @@ GPS activé GPS désactivé Options - Envoi d\'un message multimédia Ajouter une nouvelle option Impossible d\'obtenir votre position Terminé @@ -335,7 +229,6 @@ Partagé un tableau blanc Partager WriteBoard Partagé un WriteBoard - Vous avez envoyé un %1$s Vous avez reçu un %1$s Lancer un appel Appuyez pour démarrer la conversation @@ -349,7 +242,6 @@ Pas de traduction disponible a partagé un appel de groupe. 📹 Appel de groupe - Lancer un appel de groupe Vous avez créé un appel de groupe. Succès voté Téléchargement @@ -359,9 +251,6 @@ Utilisateur mis à jour avec succès "User Left" Utilisateur joint - Connexion réussie - Connexion en cours - Vous êtes déconnecté. Aucune connexion Internet disponible Vous avez été bloqué par @@ -376,89 +265,46 @@ Le sondage \" id \" est manquant Vous n\'êtes pas le créateur du sondage - Veuillez appeler la méthode CometChat.init () de préférence dans la méthode onCreate () de la classe d\'application avant d\'appeler toute autre méthode liée à CometChat Le mot de passe est obligatoire pour un groupe protégé - La limite a dépassé la limite maximale de %s - Veuillez vous connecter à CometChat avant d\'appeler cette méthode Veuillez fournir un GUID valide Veuillez fournir un UID valide L\'UID ne peut pas être vide. Veuillez fournir un UID valide L\'UID ne peut pas contenir d\'espaces. Veuillez fournir un UID valide quelque chose s\'est mal passé - L\'appel ne peut pas être annulé sans lancer un appel - Une erreur s\'est produite lors de la connexion - Incompatibilité de session d\'appel. Veuillez vérifier l\'ID de session - UID et GUID non spécifiés Veuillez spécifier UID ou le GUID pour lequel le message doit être récupéré Pas de connexion Internet. Veuillez réessayer plus tard - Demande déjà en cours - L\'horodatage \'ou\' MessageId \'ou\' updatedAfter \'est requis pour utiliser la méthode\' fetchNext () \' - Auth token ne peux pas être vide. Veuillez fournir un auth token L\'extension est désactivée. Veuillez activer l\'extension depuis CometChat Dashboard - L\'ID de message fourni n\'est pas valide Veuillez fournir un identifiant de message valide - Seuls TextMessage ou CustomMessage peuvent être modifiés. Veuillez fournir un message valide - La liste fournie est vide. Veuillez fournir une liste valide - La méthode `updatesOnly()` ne peut pas être utilisée sans la méthode `setUpdatedAfter()` - Erreur lors de l\'analyse de JSON - Erreur lors de la déconnexion - AppID ne peut pas être vide. Veuillez spécifier un appID valide - La limite spécifiée doit être un nombre positif - Région non spécifiée. Veuillez spécifier la région dans la classe AppSettingsBuilder en utilisant la méthode `setRegion()` - Les AppSettings ne peuvent pas être null - ApiKey ne peut pas être nul ou vide. Veuillez fournir une clé API valide - Le type de message que vous avez entré n\'est pas valide pour l\'action suivante - Le texte du message ne peut pas être vide - L\'objet fichier ne peut pas être nul ou le chemin d\'accès au fichier n\'existe pas - L\'URL du message multimédia est définie comme nulle ou vide - Le champ de données personnalisé ne peut pas être nul ou vide Le nom du groupe ne peut pas être nul ou vide - Le type de groupe ne peut pas être nul ou vide - Connexion en cours. Veuillez attendre la fin de la demande de connexion - Le message ne peut pas être nul. Veuillez passer un objet `BaseMessage` valide - Le groupe ne peut pas être nul. Veuillez passer un objet `Groupe` valide - L\'appel ne peut pas être nul. Veuillez passer un objet `Call` valide - Type d\'appel non valide. Veuillez fournir un type d\'appel valide - Type de récepteur non valide. Veuillez fournir un type de récepteur valide - Type sessionId non valide. Veuillez fournir un identifiant de session valide - L\'activité fournie ne peut pas être nulle. - Fourni RelativeLayout ne peut pas être nul - Le jeton FCM fourni ne peut être nul ou vide. Veuillez fournir un jeton FCM valide - Le type de groupe fourni ne peut pas être nul ou vide - L\'appel est en cours. Veuillez mettre fin à l\'appel précédent pour effectuer cette opération - Impossible d\'annuler l\'appel lancé par quelqu\'un d\'autre. Veuillez utiliser le statut «rejeté» à la place - Nom non valide fourni pour l\'utilisateur. Veuillez fournir un nom valide - L\'objet utilisateur ne peut pas être nul. Veuillez fournir un objet utilisateur valide - Le nom du groupe ne peut pas être vide. Veuillez fournir un nom de groupe valide - L\'horodatage doit être positif. Veuillez fournir un horodatage valide - Catégorie non valide. Veuillez fournir une catégorie valide - Icône vide. Veuillez fournir une icône valide - Description vide. Veuillez fournir une description valide - Métadonnées vides. Veuillez fournir des métadonnées valides - Portée non valide. Veuillez fournir une portée valide - Portée non valide. Veuillez fournir une portée valide - Conversation invalide avec. Veuillez fournir une valeur valide pour conversationWith - Type de conversationType valide. Veuillez fournir une valeur valide pour conversationWith - Message multimédia non valide. Veuillez fournir un objet Fichier ou des détails de pièce jointe valides - La pièce jointe ne peut pas être nulle. Veuillez fournir des détails de pièce jointe valides - Nom de fichier non valide. Veuillez fournir un nom de fichier valide - Extension de fichier non valide. Veuillez fournir une extension de fichier valide - Type de fichier Mime non valide. Veuillez fournir un type de fichier mime valide - URL de fichier non valide. Veuillez fournir une URL de fichier valide - Conversation introuvable pour conversationWith %s et conversationType %s - Paramètres introuvables. - La fonctionnalité fournie ne peut pas être nulle ou vide. Veuillez fournir une fonctionnalité valide - L\'extension fournie ne peut pas être nulle ou vide. - Fonction fournie introuvable. L\'extension fournie est introuvable. frappé la gauche Téléchargement création d\'un groupe - Envoyer un message en privé + Envoyer un message en privé Voir le profil - supprimer la conversation Souhaitez-vous supprimer cette conversation? Suppression de la conversation + hors ligne + Nouveaux messages + Nouveau message + Livré + Lis + Vote + Votes + déclin + Répondre + Réponse + réponses + Répondre en privé + Sélectionnez l\'utilisateur + Sélectionner un groupe + Rechercher des utilisateurs + Groupes de recherche + Appel vocal rejeté + Appel vidéo rejeté + Appel vocal sortant + Appel vidéo sortant + Aucun membre banni trouvé \ No newline at end of file diff --git a/uikit/src/main/res/values-hi/strings.xml b/uikit/src/main/res/values-hi/strings.xml index 05f10e2..036ec51 100644 --- a/uikit/src/main/res/values-hi/strings.xml +++ b/uikit/src/main/res/values-hi/strings.xml @@ -4,9 +4,7 @@ कॉल समूह अधिक - भेजा जा रहा है... ⚠️ यह संदेश मिटाया गया था - ⚠️ आपने यह संदेश हटा दिया है 📷 फोटो 📹 वीडियो 🎵 ऑडियो @@ -20,7 +18,6 @@ 📝 व्हाइटबोर्ड 📃 दस्तावेज़ ऑनलाइन - ऑफ़लाइन आप एडमिन मॉडरेटर @@ -31,83 +28,47 @@ कूटशब्द सुरक्षित गोपनीयता और सुरक्षा - निजता अवरोधित उपयोगकर्ता - सबको प्राथमिकताएं आपने अवरोधित किया है सदस्य - वापस रद्द करें क्लिपबोर्ड में पाठ की नक़ल आज कल - टाइपिंग... टाइप कर रहा है... - बंद करें कृपया, समूह का नाम दर्ज करें - ताज़ा किया जा रहा है... अनब्लॉक ग्रुप एडमिन बनाएं समूह मॉडरेटर बनाएं व्यवस्थापकों - एडमिन जोड़ें - मॉडरेटर जोड़ें समूह व्यवस्थापक के रूप में असाइन करें समूह व्यवस्थापक के रूप में हटाएँ समूह मॉडरेटर के रूप में असाइन करें समूह मॉडरेटर के रूप में हटाएँ - को समूह व्यवस्थापक के रूप में हटा दिया जाता है को समूह मॉडरेटर के रूप में हटा दिया जाता है अब एडमिन है अब मॉडरेटर है ⚠️ निकालें - से एक व्यवस्थापक के रूप में - से एक मॉडरेटर के रूप में समूह? ✅ जोड़ें - में एक व्यवस्थापक के रूप में - में एक मॉडरेटर के रूप में ठीक - एक मॉडरेटर के रूप में - एक व्यवस्थापक के रूप में सदस्य जोड़ें कार्रवाई - गोपनीयता और समर्थन - संदेश भेजें में जोड़ें उपयोगकर्ता अनवरोधित करें अवरोधित उपयोक्ता - सफलतापूर्वक जोड़ा गया सफलतापूर्वक अनब्लॉक किया गया - सफलतापूर्वक अवरोधित - मिटाएँ (E) समूह छोड़ें - से - सफलतापूर्वक हटा दिया सफलतापूर्वक प्रतिबंधित अप्रतिबंधित सफलतापूर्वक - सफलतापूर्वक मिटाया गया - आप से छोड़ दिया - सदस्य मिटाएँ बान सदस्य - अनबान सदस्य समूह बनाएँ - आप शामिल हो गए - अग्रेषित साझा मीडिया - संदेश को अग्रेषित करने में अक्षम आप एक समय में केवल 5 प्रतिभागियों को संदेश अग्रेषित कर सकते हैं - कोई तस्वीरें नहीं - कोई वीडियो नहीं - कोई दस्तावेज़ नहीं वीडियो कॉल ऑडियो कॉल - व्हाइटबोर्ड - लोड हो रहा है... - 1 प्रत्युत्तर - उत्तर लांच शामिल होना ने एक सहयोगी व्हाइटबोअर साझा किया है @@ -124,72 +85,23 @@ संदेश नक़ल करें एक सर्वेक्षण बनाएँ स्टिकर भेजें - स्थान भेजा जा रहा है... - स्थान सफलतापूर्वक भेजा गया - कोई उपयोक्ता नहीं मिला त्रुटि - कोई समूह नहीं मिला - कोई चैट नहीं मिला - मीडिया संदेश - अस्वीकार - स्वीकार करें - कॉल आरंभिक - जावक ऑडियो कॉल - जावक वीडियो कॉल - कॉल अस्वीकृत - कॉल स्वीकृत शामिल हो गए - कॉल छोड़ दिया - अनुत्तरित ऑडियो कॉल - अनुत्तरित वीडियो कॉल कॉल समाप्त - कॉल रद्द - व्यस्त कॉल करें कॉल कर रहा है... - कोई प्रतिबंधित सदस्य नहीं मिला प्रतिबंधित सदस्य - नाम - स्कोप अप्रतिबंधित करें - समूह क़िस्म चुनें समूह कूटशब्द भरें - बनाएँ सर्वेक्षण बनाएँ प्रश्न अपना प्रश्न दर्ज करें - विकल्प अपना विकल्प दर्ज करें - नया विकल्प जोड़ें - सदस्य देखें - सूचनाएँ - अन्य - मदद - किसी समस्या की रिपोर्ट करें - समूह के सदस्य बान - लात - अपने इमोजी उठाओ - सुरक्षित समूह यूट्यूब पर देखें विज़िट करें - इमोजी - कोई संदेश नहीं मिला - धागा - सहयोगी दस्तावेज़ - सहयोगी व्हाइटबोर्ड - प्रतिक्रिया जोड़ें - कोई स्टिकर नहीं मिला - थ्रेड में जवाब दें संदेश मिटाएँ संदेश संपादित करें - रविवार - सोमवार - मंगलवार - बुधवार - गुरुवार - शुक्रवार - शनिवार - मालिक + मालिक एक संदेश लिखें अवरोधित उपयोक्ता पुनर्प्राप्ति असफल आप संदेश भेजने या प्राप्त करने में सक्षम नहीं होंगे @@ -197,22 +109,17 @@ क्या आप%1$s को अनब्लॉक करना चाहेंगे %1$S को ब्लॉक करने में असमर्थ कृपया, आगे बढ़ने के लिए समूह विवरण दर्ज करें - समूह में शामिल होने में अक्षम क्या आप%1$s को व्यवस्थापक के रूप में बनाना पसंद करते हैं ⚠️ %1$s से हटाएँ \"%2$s\" में %1$s जोड़ें %1$s\” %2$s\” में जोड़ा गया है %1$s\” %2$s\” से हटा दिया गया है - समूह सदस्य लात मारी असफल क्या आप समूह से छोड़ना चाहेंगे? समूह मिटाएँ समूह मिटाएँ - समूह मिटाना असफल %1$s को नहीं हटाया जा सकता - समूह छोड़ने में अक्षम अधिक लोड करें %1$s सदस्यों को लोड करें - समूह सूची लाने में अक्षम कूटशब्द जुड़ना गलत @@ -224,13 +131,11 @@ %1$s में शामिल होने के लिए कूटशब्द भरें कोई प्रतिबंधित सदस्य नहीं मध्यस्थों - मॉडरेटर सूची प्राप्त करने में असमर्थ। क्या आप%1$s को मॉडरेटर के रूप में बनाना पसंद करते हैं केवल व्यवस्थापक मॉडरेटर निकाल सकते हैं समूह अद्यतन करें समूह चिह्न यूआरएल भरें समूह सफलतापूर्वक अद्यतन - समूह अद्यतन नहीं पुराना पासवर्ड दर्ज करें नया पासवर्ड दर्ज करें समूह अलर्ट @@ -239,8 +144,6 @@ क्या आप%1$s को मालिक के रूप में बनाना पसंद है %1$s अब मालिक है आप इस समूह के सदस्य नहीं हैं (%1$s) - मालिक अलर्ट - समूह छोड़ने से पहले कृपया समूह के स्वामित्व को दूसरे सदस्य को स्थानांतरित करें सार्वजनिक समूह निजी समूह कूटशब्द सुरक्षित समूह @@ -248,15 +151,10 @@ केवल समूह स्वामी व्यवस्थापक को हटा सकता है। %1$s व्यवस्थापक विशेषाधिकार से हटा दिया गया है समूह सदस्य अद्यतन करने में असमर्थ - > व्यवस्थापक सूची पुनर्प्राप्ति विफल - समूह बनाने में असमर्थ ऑपरेशन असफल को%1$s पर - त्रुटि: समूह सदस्य सूची लोड करने में सक्षम नहीं - प्रतिबंधित सदस्य सूची लाने में असमर्थ कृपया ऐप सेटिंग से कैमरा अनुमति दें कृपया ऐप सेटिंग से स्टोरेज अनुमति दें फ़ाइल मौजूद नहीं है - कॉल सूची लाने में अक्षम आपने कोई कॉल नहीं किया है कॉल आरंभ करने में अक्षम आउटगोइंग @@ -288,7 +186,6 @@ गोपनीयता और समर्थन उपयोक्ता खोज - मनपसंद संदेश समर्थित नहीं अवतार के लिए यूआरएल भरें उपयोक्ता नाम भरें उपयोक्ता अद्यतन करें @@ -307,8 +204,6 @@ %1$s में धागा पर भेजा गया: %1$s कॉल से कनेक्ट हो रहा है - पर पढ़ें: %1$s - पर डिलीवर किया गया: %1$s नेविगेट कृपया स्थान की अनुमति दें। ऑडियो फ़ाइलें भेजें @@ -320,7 +215,6 @@ जीपीएस सक्षम जीपीएस अक्षम विकल्प - मीडिया संदेश भेज रहा है नया विकल्प जोड़ें अपना स्थान प्राप्त करने में असमर्थ समाप्त @@ -329,7 +223,6 @@ एक व्हाइटबोर्ड साझा लेखनबोर्ड साझा करें एक लेखबोर्ड साझा किया - आपने एक %1$s भेजा आपने एक %1$s प्राप्त किया कॉल आरंभ करें बातचीत शुरू करने के लिए टैप करें @@ -345,7 +238,6 @@ कोई अनुवाद उपलब्ध नहीं ने एक समूह कॉल साझा किया है। 📹 ग्रुप कॉल - एक समूह कॉल प्रारंभ करें आपने एक समूह कॉल बनाया है। सफलतापूर्वक मतदान किया गया अपलोडिंग @@ -354,10 +246,8 @@ बात चिट अपडेट किया गया उपयोगकर्ता सफलतापूर्वक "User Left" - उपयोगकर्ता में शामिल हो गया - कनेक्टेड सक्सेसफुल - प्रगति में कनेक्शन - आप डिस्कनेक्ट हो गए हैं। + उपयोगकर्ता + में शामिल हो गया कोई इंटरनेट उपलब्ध नहीं है आपको द्वारा अवरोधित कर दिया गया है @@ -371,84 +261,41 @@ पोल \ "आईडी \" गायब है आप चुनाव के निर्माता नहीं हैं - CometChat से संबंधित किसी भी अन्य तरीके को कॉल करने से पहले कृपया आवेदन श्रेणी के CometChat.init () विधि को ऑनक्रीट () विधि में अधिमानतः कॉल करें। संरक्षित समूह के लिए पासवर्ड अनिवार्य है - सीमा %s की अधिकतम सीमा से अधिक है - कृपया इस Method को कॉल करने से पहले CometChat में लॉग इन करें कृपया एक मान्य GUID प्रदान करें कृपया एक मान्य UID प्रदान करें UID खाली नहीं हो सकता। कृपया एक वैध UID प्रदान करें UID में रिक्त स्थान नहीं हो सकते. कृपया एक मान्य UID प्रदान करें कुछ गलत हो गया - कॉल शुरू किए बिना कॉल को रद्द नहीं किया जा सकता है - कनेक्ट करते समय कुछ गलत हो गया - कॉल सेशन मिसमैच। कृपया सत्र आईडी की जाँच करें - UID और GUID दोनों निर्दिष्ट नहीं हैं, कृपया UID या GUID निर्दिष्ट करें जिसके लिए संदेश को लाने की जरूरत है कोई इंटरनेट कनेक्शन नहीं। कृपया बाद में पुनः प्रयास करें - पहले से ही अनुरोध है - Timestamp या MessageId या updatedAfter आदि fetchNext() method का उपयोग करने के लिए आवश्यक है - Auth token खाली नहीं किया जा सकता. कृपया एक मान्य auth token प्रदान करें एक्सटेंशन अक्षम है। कृपया CometChat डैशबोर्ड से एक्सटेंशन सक्षम करें - प्रदान की गई संदेश आईडी अमान्य है. कृपया एक मान्य संदेश आईडी प्रदान करें - केवल TextMessage या CustomMessage को संपादित किया जा सकता है। कृपया एक वैध संदेश प्रदान करें - प्रदान की गई सूची रिक्त है। कृपया एक मान्य सूची प्रदान करें - `updatesOnly()` विधि का उपयोग `setUpdatedAfter() किए गए विधि के बिना नहीं किया जा सकता है - JSON को पार्स करते समय त्रुटि - लॉग आउट करते समय त्रुटि - AppID खाली नहीं हो सकता। कृपया एक मान्य AppID निर्दिष्ट करें - निर्दिष्ट सीमा एक सकारात्मक संख्या होनी चाहिए - क्षेत्र निर्दिष्ट नहीं है। कृपया setRegion() पद्धति का उपयोग करके AppSettingsBuilder वर्ग में क्षेत्र को निर्दिष्ट करें - AppSettings शून्य नहीं हो सकता - ApiKey शून्य या रिक्त नहीं हो सकती। कृपया एक मान्य Api Key प्रदान करें - आपके द्वारा दर्ज किया गया संदेश प्रकार निम्नलिखित क्रिया के लिए अमान्य है - संदेश पाठ खाली नहीं हो सकता - फ़ाइल ऑब्जेक्ट शून्य या फ़ाइल पथ मौजूद नहीं हो सकता है - मीडिया संदेश URL को शून्य या रिक्त के रूप में सेट किया गया है - कस्टम डेटा फ़ील्ड शून्य या रिक्त नहीं हो सकती समूह नाम शून्य या रिक्त नहीं हो सकता - समूह प्रकार शून्य या रिक्त नहीं हो सकता - लॉग इन करें। कृपया लॉगिन अनुरोध समाप्त होने की प्रतीक्षा करें - संदेश शून्य नहीं हो सकता। कृपया एक मान्य `BaseMessage` ऑब्जेक्ट पास करें - समूह शून्य नहीं हो सकता। कृपया एक वैध `Group` ऑब्जेक्ट पास करें - कॉल शून्य नहीं हो सकती। कृपया एक वैध `कॉल` ऑब्जेक्ट पास करें - अमान्य कॉल प्रकार। कृपया एक मान्य कॉल प्रकार प्रदान करें - अमान्य प्राप्तकर्ता प्रकार। कृपया एक मान्य रिसीवर प्रकार प्रदान करें - अमान्य सत्रId प्रकार। कृपया एक मान्य सत्र आईडी प्रदान करें - बशर्ते गतिविधि शून्य न हो। - बशर्ते RelativeLayout अशक्त न हो - उपलब्ध कराया गया FCM टोकन शून्य या खाली नहीं हो सकता। कृपया एक मान्य FCM टोकन प्रदान करें - प्रदान किया गया समूह प्रकार रिक्त या रिक्त नहीं हो सकता है - कॉल जारी है। कृपया इस ऑपरेशन को करने के लिए पिछली कॉल को समाप्त करें - किसी अन्य व्यक्ति द्वारा शुरू किए गए कॉल को रद्द नहीं कर सकता। कृपया इसके बजाय स्थिति \'अस्वीकृत\' का उपयोग करें - उपयोगकर्ता के लिए अमान्य नाम प्रदान किया गया। कृपया एक वैध नाम प्रदान करें - उपयोगकर्ता ऑब्जेक्ट शून्य नहीं हो सकता। कृपया एक मान्य उपयोगकर्ता ऑब्जेक्ट प्रदान करें - समूह नाम रिक्त नहीं हो सकता। कृपया एक मान्य समूह नाम प्रदान करें - टाइमस्टैम्प को सकारात्मक होना चाहिए। कृपया एक वैध टाइमस्टैम्प प्रदान करें - अमान्य श्रेणी। कृपया एक मान्य श्रेणी प्रदान करें - खाली चिह्न। कृपया एक वैध आइकन प्रदान करें - खाली विवरण। कृपया एक वैध विवरण प्रदान करें - खाली मेटाडेटा। कृपया एक मान्य मेटाडेटा प्रदान करें - अमान्य स्कोप। कृपया एक मान्य गुंजाइश प्रदान करें - अमान्य स्कोप। कृपया एक मान्य गुंजाइश प्रदान करें - अमान्य वार्तालाप कृपया वार्तालाप के लिए एक मान्य मान प्रदान करें - अमान्य वार्तालाप। कृपया वार्तालाप के लिए एक मान्य मान प्रदान करें - अमान्य मीडिया संदेश। कृपया एक मान्य फ़ाइल ऑब्जेक्ट या अनुलग्नक विवरण प्रदान करें। - अनुलग्नक शून्य नहीं हो सकती। कृपया मान्य अनुलग्नक विवरण प्रदान करें - अमान्य फ़ाइल नाम। कृपया एक मान्य फ़ाइल नाम प्रदान करें - अमान्य फ़ाइल एक्सटेंशन। कृपया एक मान्य फ़ाइल एक्सटेंशन प्रदान करें - अमान्य फ़ाइल माइम प्रकार। कृपया एक मान्य फ़ाइल माइम प्रकार प्रदान करें - अमान्य फ़ाइल URL। कृपया एक मान्य फ़ाइल URL प्रदान करें - वार्तालाप के लिए conversationWith %s और conversationType %s नहीं मिला - सेटिंग्स नहीं मिलीं। - बशर्ते सुविधा शून्य या रिक्त न हो। कृपया एक मान्य सुविधा प्रदान करें - बशर्ते विस्तार शून्य या रिक्त न हो। - बशर्ते सुविधा नहीं मिली। प्रदान किया गया एक्सटेंशन नहीं मिला। डाउनलोड समूह बनाना - निजी तौर पर संदेश भेजें + निजी तौर पर संदेश भेजें प्रोफ़ाइल देखें - बातचीत मिटा दो क्या आप इस वार्तालाप को हटाना चाहेंगे? वार्तालाप हटाना + ऑफ़लाइन + नए संदेश + नया संदेश + पहुंचा दिया + पढ़ें + वोट + वोट + पतन + उत्तर + जवाब + जवाब + निजी तौर पर उत्तर दें + उपयोगकर्ता का चयन करें + समूह का चयन करें + उपयोगकर्ता खोजें + समूह खोजें + अस्वीकृत वॉयस कॉल + अस्वीकृत वीडियो कॉल + आउटगोइंग वॉयस कॉल + आउटगोइंग वीडियो कॉल + कोई प्रतिबंधित सदस्य नहीं मिला \ No newline at end of file diff --git a/uikit/src/main/res/values-lt/strings.xml b/uikit/src/main/res/values-lt/strings.xml index d348c2e..8aa6a51 100644 --- a/uikit/src/main/res/values-lt/strings.xml +++ b/uikit/src/main/res/values-lt/strings.xml @@ -49,22 +49,17 @@ Prašome įvesti išsamią grupės informaciją, kad galėtumėte tęsti - Nepavyko prisijungti prie grupės Ar norite %1$s sukurti kaip administratorių ⚠️ Pašalinti iš %1$s Pridėkite %1$s prie \" %2$s \" %1$s pridėta prie \" %2$s \" %1$s pašalinta iš \" %2$s \" - Nepavyko spustelėti grupės nario Ar norite išeiti iš grupės? Ištrinti grupę Ištrinti grupę - Nepavyko ištrinti grupės Negalima pašalinti %1$s - Nepavyko išeiti iš grupės Įkelti daugiau Įkelkite daugiau %1$s narių - Nepavyko gauti grupių sąrašo Slaptažodis Prisijungimas Neteisinga @@ -78,13 +73,11 @@ Įveskite slaptažodį, kad prisijungtumėte prie %1$s Nėra draudžiamų narių Moderatoriai - Nepavyko gauti moderatorių sąrašo. Ar norite %1$s sukurti kaip moderatorių Tik administratorius gali pašalinti moderatorių Atnaujinti grupę Įveskite grupės piktogramos URL Grupė sėkmingai atnaujinta - Grupė neatnaujinta Įveskite seną slaptažodį Įveskite naują slaptažodį Grupės įspėjimas @@ -93,8 +86,6 @@ Ar norite %1$s tapti savininku %1$s dabar yra savininkas Jūs nesate šios grupės narys (%1$s) - Įspėjimas apie savininką - Prieš palikdami grupę, perduokite grupės nuosavybės teises kitam nariui viešoji grupė privati ​​grupė @@ -106,11 +97,7 @@ Tik grupės savininkas gali pašalinti administratorių. pašalinta iš administratoriaus privilegijos Nepavyko atnaujinti grupės nario - Administratoriaus sąrašo paieška nepavyko - Nepavyko sukurti grupės Nepavyko operuoti %1$s - klaida: nepavyko įkelti grupės narių sąrašo - Nepavyko gauti draudžiamų narių sąrašo Prašome suteikti kameros leidimą iš programos nustatymo @@ -124,7 +111,6 @@ Praleistas vaizdo skambutis - Nepavyko gauti skambučių sąrašo Jūs neatlikote jokių skambučių Skambinimas Nepavyko inicijuoti skambučio @@ -169,14 +155,12 @@ Atšaukti Tekstas nukopijuotas į mainų sritį Ištrinti pranešimą - Siųsti pranešimą Privatumas ir amp; Saugumas ✅ Pridėti Persiųsti pranešimą Veiksmai Nuostatos Prisijungęs - Neprisijungus Atsakyti pranešimą Bendrinti pranešimą Kopijuoti pranešimą @@ -221,8 +205,6 @@ Sriegis %1$s Išsiųsta:%1$s Prisijungiama prie skambučio - Skaityti: %1$s - Pristatyta: %1$s Naršyti Prašome leisti buvimo vietos leidimą. Siųsti garso failus @@ -234,7 +216,6 @@ GPS įjungtas GPS išjungtas Parinktis - Medijos pranešimo siuntimas Įveskite savo parinktį Įveskite savo klausimą Klausimas @@ -246,60 +227,28 @@ Bendrino lentą Bendrinti rašymo lentą Bendrino rašymo lentą - Išsiuntėte %1$s Gavote %1$s Pradėkite skambutį - Priimti - Pridėti administratorių - Pridėti moderatorių - Pridėti naują parinktį - Pridėti reakciją - sėkmingai pridėta - ⚠️ Ištrynėte šį pranešimą Vakar - atgal Uždrausti Sėkmingai uždrausta - Sėkmingai užblokuota - Sukurti - %1$s pašalinta iš administratoriaus privilegijos - Peržiūrėti narius - Atmesti - Sėkmingai ištrinta sėkmingai atblokuotas Negalite persiųsti pranešimo daugiau nei 5 nariams - Siunčiama .. 🎵 Garsas 📷 Vaizdas 📹 Vaizdo įrašas 📁 Failas - Skambutis priimtas - Skambučio užimta - Skambutis atšauktas Skambutis baigtas - Skambučio pradžia - Skambutis atmestas 📃 Dokumentas 📍 Vieta - Tinkintas pranešimas nepalaikomas "📊 Apklausos" "💟 Lipdukas" 📝 Lenta - Ištrinti & Išėjimas Slaptažodžiu apsaugota grupė Privati ​​grupė Viešoji grupė - Atsakyti gijoje - ​​Nerasta jokių lipdukų - Bendradarbiavimo dokumentas - Bendra lenta - Sriegis - ​​Nerasta pranešimų - jaustukas - uždaryti klaida - grupės nariai Nėra gijų pranešimų inicijuotas pridėta @@ -314,7 +263,6 @@ bendrino grupės skambutį. Jūs sukūrėte grupės skambutį. "📹 Grupės skambutis" - Pradėti grupės skambutį Bandyti dar kartą Įkėlimas Balsuota sėkmė @@ -323,9 +271,6 @@ Sėkmingai atnaujintas vartotojas "Vartotojo kairė" Vartotojas prisijungė - Prisijungta sėkmingai - Vykdomas ryšys - Jūs esate atjungtas. Nėra interneto Jus užblokavo "Užblokavote" @@ -342,87 +287,46 @@ ​​Apklausa neegzistuoja Trūksta apklausos \" id \" Jūs nesate apklausos kūrėjas - Prieš iškviesdami bet kokius kitus metodus, susijusius su CometChat, prašome iškviesti metodą CometChat.init () pageidautina taikant programos onCreate () metodą Slaptažodis yra privalomas saugomai grupei - Riba viršijo maksimalią ribą - Prieš iškviesdami šį metodą, prisijunkite prie „CometChat“ Pateikite galiojantį GUID Pateikite galiojantį UID UID negali būti tuščias. Pateikite galiojantį UID UID negali būti tarpų. Pateikite galiojantį UID Kažkas ne taip - Skambučio negalima atšaukti nepradėjus skambučio - Prisijungiant kažkas nepavyko - Skambučio sesijos neatitikimas. Patikrinkite seanso ID - Nenurodytas ir UID, ir GUID. Nurodykite UID arba GUID, kuriam reikia gauti pranešimus Nėra interneto ryšio. Vėliau bandykite dar kartą - Užklausa jau vykdoma - Laiko žymė \' arba \' MessageId \' arba updatedAfter reikalinga norint naudoti metodą \' fetchNext() \' - Autentinis prieigos raktas negali būti tuščias. Pateikite galiojantį prieigos raktą - Pateiktas pranešimo ID yra neteisingas. Pateikite galiojantį pranešimo ID - Redaguoti galima tik „TextMessage“ arba „CustomMessage“. Pateikite galiojantį pranešimą - Pateiktas sąrašas tuščias. Pateikite galiojantį sąrašą - Metodo „updatesOnly()“ negalima naudoti be metodo „setUpdatedAfter()“ - Klaida analizuojant JSON - Atsijungiant įvyko klaida - „AppID“ negali būti tuščias. Nurodykite galiojantį programos ID - Nurodyta riba turi būti teigiamas skaičius - Regionas nenurodytas. Nurodykite regioną „AppSettingsBuilder“ klasėje naudodami metodą „setRegion ()“ - „AppSettings“ negali būti niekinis - ApiKey negali būti tuščias arba tuščias. Pateikite galiojantį „API“ raktą - Vyksta prisijungimas. Palaukite, kol baigsis prisijungimo užklausa - Įvestas pranešimo tipas netinkamas atliekant šį veiksmą - Pranešimo tekstas negali būti tuščias - Failo objektas negali būti nulinis arba failo kelias neegzistuoja - Medijos pranešimo URL nustatytas kaip tuščias arba tuščias - Tinkintų duomenų laukas negali būti tuščias arba tuščias Grupės pavadinimas negali būti tuščias arba tuščias - Grupės tipas negali būti tuščias arba tuščias - Pranešimas negali būti niekinis. Prašau perduoti galiojantį „BaseMessage“ objektą - Grupė negali būti nulinė. Prašau perduoti galiojantį objektą „Grupė“ - Skambutis negali būti nulinis. Prašau perduoti galiojantį objektą „Skambutis“ - Netinkamas skambučio tipas. Pateikite galiojantį skambučio tipą - Neteisingas imtuvo tipas. Pateikite galiojantį imtuvo tipą - Netinkamas sessionId tipas. Pateikite galiojantį seanso ID - Pateikta veikla negali būti nulinė. - Pateiktas „RelativeLayout“ negali būti nulinis - Pateiktas FCM prieigos raktas negali būti tuščias arba tuščias. Pateikite galiojantį FCM prieigos raktą - Pateiktas grupės tipas negali būti tuščias arba tuščias - Vyksta skambutis. Norėdami atlikti šią operaciją, užbaikite ankstesnį skambutį - Negalima atšaukti kito asmens inicijuoto skambučio. Vietoj to naudokite būseną „atmesta“ - Vartotojui pateiktas neteisingas vardas. Pateikite galiojantį pavadinimą - Vartotojo objektas negali būti nulinis. Pateikite galiojantį vartotojo objektą - Grupės pavadinimas negali būti tuščias. Pateikite galiojantį grupės pavadinimą - Laiko žymė turi būti teigiama. Pateikite tinkamą laiko žymą - Netinkama kategorija. Pateikite galiojančią kategoriją - Tuščia piktograma. Pateikite galiojančią piktogramą - Tuščias aprašas. Pateikite galiojantį aprašymą - Tušti metaduomenys. Pateikite galiojančius metaduomenis - Netinkama sritis. Pateikite galiojančią taikymo sritį - Netinkama sritis. Pateikite galiojančią taikymo sritį - Neteisingas pokalbis su. Nurodykite tinkamą pokalbio su vertę - Netinkamas pokalbio tipas. Nurodykite tinkamą pokalbio su vertę - Neteisingas daugialypės terpės pranešimas. Pateikite galiojančią išsamią failo objekto arba priedo informaciją. - Priedas negali būti niekinis. Pateikite galiojančią išsamią priedo informaciją - Netinkamas failo pavadinimas. Pateikite galiojantį failo pavadinimą - Netinkamas failo plėtinys. Pateikite galiojantį failo plėtinį - Netinkamas failo MIME tipas. Pateikite galiojantį failo „mime“ tipą - Netinkamas failo URL. Pateikite galiojantį failo URL - Pokalbis nerastas - Nustatymai nerasti. - Funkcija netinkama. - Šis plėtinys neteisingas. Patikrinkite informacijos suvestinėje. - ​​Funkcija nerasta. + vertę + vertę grupp užblokuotas vartotojas atsisiųsti kurianti grupė - Siųsti pranešimą privačiai + Siųsti pranešimą privačiai Peržiūrėti vartotojo profilį - Ištrinti pokalbį šiandien Ar norėtumėte ištrinti šį pokalbį? Ištrinamas pokalbis rašo .. + neprisijungęs + Nauji pranešimai + Nauja žinutė + Pristatyta + Perskaityk + Balsas + Balsai + nuosmukis + Atsakymas + Atsakyti + Atsakymai + Atsakykite privačiai + Pasirinkite Vartotojas + Pasirinkite Grupė + Ieškoti naudotojų + Ieškoti grupėse + Atmestas balso skambutis + Atmestas vaizdo skambutis + Išeinantis balso skambutis + Išeinantis vaizdo skambutis + Nerasta uždraustų narių \ No newline at end of file diff --git a/uikit/src/main/res/values-ms/strings.xml b/uikit/src/main/res/values-ms/strings.xml index 6311554..0f36663 100644 --- a/uikit/src/main/res/values-ms/strings.xml +++ b/uikit/src/main/res/values-ms/strings.xml @@ -4,9 +4,7 @@ Panggilan Kumpulan Lagi - Menghantar... ⚠️ Mesej ini telah dipadamkan - ⚠️ Anda memadam mesej ini 📷 Foto 📹 Video 🎵 Audio @@ -20,7 +18,6 @@ 📝 Papan Putih 📃 Dokumen Dalam Talian - Luar Talian Anda Admin Moderator @@ -31,83 +28,47 @@ Dilindungi Privasi dan Keselamatan - Privasi Pengguna Dihalang - Semua orang Keutamaan Anda telah menyekat Ahli-ahli - Belakang Batal Teks disalin ke Klipbod Hari ini Semalam - menaip... sedang menaip... - Tutup Sila masukkan nama kumpulan - Menyegarkan... Buka sekat Jadikan pentadbir kumpulan Jadikan moderator kumpulan Pentadbir - Tambah pentadbir - Tambah moderator Peruntukkan sebagai pentadbir kumpulan Buang sebagai pentadbir grup Umpuk sebagai moderator grup Buang sebagai Moderator grup - dialih keluar sebagai pentadbir grup dihapus sebagai moderator grup sekarang Admin kini Moderator ⚠️ Keluarkan - sebagai pentadbir dari - sebagai moderator dari kumpulan? ✅ Tambah - sebagai pentadbir dalam - sebagai moderator di OK - sebagai moderator - sebagai pentadbir Tambah ahli TINDAKAN - PRIVASI & SOKONGAN - Hantar Mesej Tambah dalam Nyahsekat Pengguna Sekat Pengguna - berjaya ditambah berjaya menyahsekat - berjaya disekat - Padam & Keluar Tinggalkan Kumpulan - daripada - berjaya dibuang diharamkan berjaya tidak diharamkan berjaya - berjaya dipadam - Anda meninggalkan dari - Buang Ahli Ban Ahli - Ahli Unban Cipta Kumpulan - Anda menyertai - Maju Media Kongsi - Tidak boleh majukan mesej ke Anda boleh memajukan mesej hanya kepada 5 peserta pada satu masa - Tiada Foto - Tiada Video - Tiada Dokumen Sejarah Panggilan Video Panggilan Audio - Papan Putih - Memuatkan... - 1 balasan - balasannya Lancarkan Sertailah telah berkongsi whiteboar kolaboratif @@ -124,71 +85,22 @@ Salin Mesej Buat Undian Hantar Pelekat - Menghantar Lokasi... - Lokasi berjaya dihantar Cari - Tiada pengguna ditemui Ralat - Tiada kumpulan ditemui - Tiada sembang ditemui - Mesej media - Tolak - Terima - Panggilan dimulakan - Panggilan audio keluar - Panggilan video keluar - Panggilan ditolak - Panggilan diterima menyertai - meninggalkan panggilan - Panggilan audio tidak dijawab - Panggilan video tidak dijawab Panggilan berakhir - Panggilan dibatalkan - Panggilan sibuk Memanggil... - Tiada ahli yang diharamkan ditemui - Nama - Skop Unban - Pilih jenis kumpulan - Cipta Buat Undian Soalan Masukkan soalan anda - Pilihan Masukkan pilihan anda - Tambah opsyen baru - Lihat Ahli Perincian - Pemberitahuan - Lain-lain - Bantuan - Laporkan Masalah - Ahli Kumpulan Ban - Kick - Pilih emoji anda - Kumpulan Terlindung Lihat di Youtube Lawati - Emotikon - Tiada mesej ditemui - Thread - Dokumen Kerjasama - Papan Putih Kolaboratif - Tambah reaksi - Tiada pelekat ditemui - Balas dalam bebenang Padam mesej Sunting mesej - AHAD - ISNIN - SELASA - RABU - KHAMIS - JUMAAT - SABTU Pemilik Tulis mesej Pengambilan pengguna yang disekat gagal @@ -197,22 +109,17 @@ Adakah anda ingin menyahblok %1$s Tidak boleh sekat %1$s Sila masukkan butiran kumpulan untuk teruskan - Tidak boleh sertai kumpulan Adakah anda ingin membuat %1$s sebagai Pentadbir ⚠️ Buang dari %1$s Tambah %1$s ke\” %2$s\” %1$s ditambah ke\” %2$s\” %1$s dibuang dari\” %2$s\” - Ahli Kumpulan ditendang Gagal Apakah Anda ingin meninggalkan grup? Hapuskan Kumpulan Hapuskan kumpulan - Pemadaman Kumpulan Gagal Tidak dapat buang %1$s - Tidak boleh tinggalkan kumpulan Muatkan Lagi Muatkan lebih lagi %1$s ahli - Tidak boleh dapatkan Senarai Kumpulan Kata Laluan Sertai Tidak betul @@ -226,13 +133,11 @@ Masukkan Kata Laluan untuk menyertai %1$s Tiada Ahli Diharamkan Moderator - Tidak boleh dapatkan senarai moderator. Adakah anda ingin membuat %1$s sebagai Moderator Hanya Admin boleh membuang moderator Kemaskini Kumpulan Masukkan URL Ikon Kumpulan Kumpulan berjaya Dikemaskini - Kumpulan tidak dikemaskini Masukkan Kata Laluan Lama Masukkan kata laluan baru Amaran Kumpulan @@ -241,8 +146,6 @@ Adakah anda ingin membuat %1$s sebagai Pemilik %1$s kini Pemilik Anda bukan ahli kumpulan ini (%1$s) - Amaran Pemilik - Sila pindahkan pemilikan kumpulan kepada ahli lain sebelum meninggalkan kumpulan Kumpulan Awam Kumpulan Persendirian Kumpulan Perlindungan Kata Laluan @@ -250,15 +153,10 @@ Hanya pemilik kumpulan boleh membuang pentadbir. %1$s dibuang dari keistimewaan pentadbir Tidak dapat mengemas kini Ahli Kumpulan - >Pengambilan daftar admin gagal - Tidak boleh cipta kumpulan Operasi gagal pada %1$s - Ralat: Tidak dapat memuatkan senarai ahli kumpulan - Tidak dapat mengambil Senarai Ahli Terlarang Sila berikan kebenaran kamera daripada tetapan aplikasi Sila berikan kebenaran storan daripada tetapan aplikasi Fail tidak wujud - Tidak boleh dapatkan Senarai Panggilan Anda tidak membuat sebarang panggilan Tidak boleh awalkan panggilan @@ -288,7 +186,6 @@ Hantar Privasi & Sokongan Pengguna - Mesej Suai tidak disokong Masukkan Url untuk avatar Masukkan nama pengguna Kemaskini Pengguna @@ -307,8 +204,6 @@ Bebenang dalam %1$s Dihantar pada: %1$s Menyambung ke panggilan - Baca Pada: %1$s - Dihantar Pada: %1$s Navigasi Sila benarkan kebenaran lokasi. Hantar Fail Audio @@ -320,7 +215,6 @@ GPS dibenarkan GPS dilumpuhkan Pilihan - Menghantar Mesej Media Tambah Opsyen Baru Tidak boleh dapatkan lokasi anda Berakhir @@ -329,7 +223,6 @@ Dikongsi Papan Putih Kongsi WriteBoard Kongsi WriteBoard - Anda menghantar %1$s Anda menerima %1$s Awalkan panggilan Ketik untuk memulakan perbualan @@ -344,7 +237,6 @@ Terjemahan Tidak Ada telah berkongsi panggilan kumpulan. 📹 Panggilan Berkumpulan - Manomboha antso anaty vondrona Anda telah membuat panggilan kumpulan. Berjaya Mengundi memuat naik @@ -354,9 +246,6 @@ Pengguna yang Dikemas kini Berjaya "Kiri Pengguna" Pengguna Bergabung - Berhasil Berhubung - Sambungan Sedang Berlangsung - Anda terputus. Tidak Terdapat Internet Anda telah disekat oleh @@ -370,86 +259,43 @@ Jajak pendapat \"id \" tidak ada Anda bukan pencipta tinjauan pendapat - Sila hubungi kaedah CometChat.init () lebih baik dalam kaedah onCreate () kelas aplikasi sebelum memanggil kaedah lain yang berkaitan dengan CometChat Kata laluan adalah wajib bagi kumpulan yang dilindungi - Had melebihi had maksimum %s - Sila log masuk ke CometChat sebelum memanggil kaedah ini Sila berikan GUID yang sah Sila berikan UID yang sah UID tidak boleh kosong. Sila berikan UID yang sah UID tidak boleh mengandungi ruang Sila berikan UID yang sah ada yang tidak kena - Panggilan tidak dapat dibatalkan tanpa memulakan panggilan - Kesalahan berlaku semasa menyambung - Kesalahan sesi panggilan. Sila periksa ID sesi - UID dan GUID tidak dinyatakan Sila nyatakan UID atau GUID yang mana mesejnya perlu diambil Tiada sambungan internet. Sila cuba sebentar lagi - Permintaan sudah dijalankan - Cap waktu atau MessageId atau updatedAfter diperlukan untuk menggunakan kaedah fetchNext() - Auth token tidak boleh kosong. Sila berikan yang sah auth token Sambungan dilumpuhkan. Sila aktifkan sambungan dari CometChat Dashboard - ID mesej yang diberikan tidak sah Sila berikan ID Mesej yang sah - Hanya TextMessage atau CustomMessage yang dapat diedit. Sila berikan mesej yang sah - Senarai yang disediakan kosong. Sila berikan senarai yang sah - Kaedah updateOnly() tidak boleh digunakan tanpa kaedah setUpdatedAfter() - Ralat semasa menghuraikan JSON - Ralat semasa log keluar - AppID no puede estar vacío. Especifique un ID de aplicación válido - Had yang dinyatakan mestilah nombor positif - Wilayah tidak ditentukan. Sila nyatakan wilayah di kelas AppSettingsBuilder menggunakan kaedah `setRegion ()` - AppSettings tidak boleh kosong - ApiKey tidak boleh kosong atau kosong. Sila berikan Kunci Api yang sah - Jenis Mesej yang anda masukkan tidak sah untuk tindakan berikut - Teks mesej tidak boleh kosong - Objek fail tidak boleh kosong atau Laluan fail tidak wujud - URL Mesej Media ditetapkan sebagai kosong atau kosong - Medan data khusus tidak boleh kosong atau kosong Nama Kumpulan tidak boleh kosong atau kosong - Jenis Kumpulan tidak boleh kosong atau kosong - Log masuk sedang dijalankan. Tunggu permintaan log masuk selesai - Mesej tidak boleh dibatalkan. Sila lulus objek `BaseMessage` yang sah - Kumpulan tidak boleh kosong. Sila lulus objek `Group` yang sah - Panggilan tidak boleh dibatalkan. Sila lulus objek `Call` yang sah - Jenis Panggilan Tidak Sah. Sila berikan jenis Panggilan yang sah - Jenis Penerima Tidak Sah. Sila berikan jenis Penerima yang sah - Jenis sesiId tidak sah. Sila berikan id sesi yang sah - Aktiviti yang disediakan tidak boleh sia-sia. - Dengan syarat RelativeLayout tidak boleh dibatalkan - Token FCM yang diberikan tidak boleh kosong atau kosong. Sila berikan token FCM yang sah - Jenis kumpulan yang disediakan tidak boleh kosong atau kosong - Panggilan sedang dijalankan. Tamatkan panggilan sebelumnya untuk melakukan operasi ini - Tidak dapat membatalkan panggilan yang dimulakan oleh orang lain. Sebagai gantinya, sila gunakan status `ditolak \' - Nama tidak sah diberikan untuk pengguna. Sila berikan nama yang sah - Objek pengguna tidak boleh kosong. Sila berikan objek pengguna yang sah - Nama kumpulan tidak boleh kosong. Sila berikan nama kumpulan yang sah - Cap waktu mesti positif. Sila berikan cap waktu yang sah - Kategori Tidak Sah. Sila berikan kategori yang sah - Ikon Kosong. Sila berikan ikon yang sah - Huraian Kosong. Sila berikan keterangan yang sah - Metatdata kosong. Sila berikan metadata yang sah - Skop Tidak Sah. Sila berikan skop yang sah - Skop Tidak Sah. Sila berikan skop yang sah - Perbualan tidak sah dengan. Sila berikan nilai yang sah untuk perbualanDengan - Jenis perbualan tidak sah. Sila berikan nilai yang sah untuk perbualanDengan - Mesej Media Tidak Sah. Sila berikan objek Fail atau butiran Lampiran yang sah. - Lampiran tidak boleh dibatalkan. Sila berikan butiran lampiran yang sah - Nombre de archivo inválido. Proporcione un nombre de archivo válido - Sambungan Fail Tidak Sah. Sila berikan peluasan fail yang sah - Jenis Mime Fail Tidak Sah. Sila berikan jenis mime fail yang sah - URL Fail Tidak Sah. Sila berikan URL fail yang sah - Perbualan tidak dijumpai - Tetapan tidak dijumpai. - Ciri yang disediakan tidak boleh kosong atau kosong. Sila berikan ciri yang sah - Sambungan yang disediakan tidak boleh kosong atau kosong. - Ciri yang disediakan tidak dijumpai. Sambungan yang disediakan tidak dapat dijumpai. meninggalkan kumpulan memuat turun mewujudkan kumpulan - Hantar Mesej secara tertutup + Hantar Mesej secara tertutup Lihat profil - padamkan perbualan Adakah anda mahu memadamkan perbualan ini? Memadamkan Perbualan + di luar talian + Mesej Baru + Mesej baru + Dihantar + Baca + Undi + Undi + merosot + Jawapan + Balas + Balasan + Balas secara tertutup + Pilih Pengguna + Pilih Kumpulan + Cari Pengguna + Cari Kumpulan + Panggilan suara ditolak + Panggilan video ditolak + Panggilan suara keluar + Panggilan video keluar + Tiada Ahli Larangan Ditemui \ No newline at end of file diff --git a/uikit/src/main/res/values-pt/strings.xml b/uikit/src/main/res/values-pt/strings.xml index a0fd27b..132974b 100644 --- a/uikit/src/main/res/values-pt/strings.xml +++ b/uikit/src/main/res/values-pt/strings.xml @@ -4,9 +4,7 @@ Chamadas Grupos Mais - Enviando... ⚠️ Esta mensagem foi excluída - ⚠️ Você excluiu esta mensagem 📷 Foto 📹 Vídeo 🎵 Áudio @@ -20,7 +18,6 @@ 📝 quadro branco 📃 Documento On-line - Offline Você Administrador Moderador @@ -31,83 +28,47 @@ Protegido por senha Privacidade e Segurança - Privacidade Usuários bloqueados - Todo mundo Preferências Você bloqueou Membros - Voltar Cancelar Texto copiado para a área de transferência Hoje Ontem - digitando... está digitando... - Fechar Por favor, digite o nome do grupo - Refrescante... Desbloquear Tornar administrador do grupo Tornar moderador de grupo Administradores - Adicionar administrador - Adicionar moderador Atribuir como administrador do grupo Remover como administrador do grupo Atribuir como moderador de grupo Remover como grupo Moderador - é removido como administrador do grupo é removido como moderador de grupo agora é Admin agora é Moderador ⚠️ Remover - como um administrador de - como moderador de grupo? ✅ Adicionar - como administrador em - como moderador em OK - como moderador - como administrador Adicionar membros AÇÕES - PRIVACIDADE E SUPORTE - Enviar Mensagem Adicionar em Desbloquear Usuário Bloquear usuário - adicionado com sucesso desbloqueado com sucesso - bloqueado com sucesso - Excluir & Sair Sair do grupo - desde - removido com sucesso banido com sucesso não banido com sucesso - excluído com sucesso - Você saiu de - Remover Membro Membro da proibição - Membro Unban Criar grupo - Você se juntou - Avançar Mídia compartilhada - Não é possível encaminhar a mensagem para Você pode encaminhar mensagem apenas para 5 participantes de cada vez - Sem Fotos - Sem vídeos - Sem Documentos História Chamada de vídeo Chamada de áudio - Quadro branco - Carregando... - 1 resposta - respostas Lançamento Junte-se compartilhou um whiteboar colaborativo @@ -124,76 +85,27 @@ Copiar Mensagem Criar uma Enquete Enviar Adesivo - Enviando Localização... - Localização enviada com sucesso Pesquisar - Nenhum usuário encontrado Erro - Nenhum grupo encontrado - Não foram encontrados chats - Mensagem de mídia Chamada de áudio recebida Chamada de vídeo recebida - Declínio - Aceitar - Chamada iniciada - Chamada de áudio de saída - Chamada de vídeo de saída - Chamada rejeitada chamada rejeitada - Chamada aceita ingressou - deixou a chamada - Chamada de áudio sem resposta - Chamada de vídeo sem resposta Chamada encerrada - Chamada cancelada - Ligue ocupado Chamando... - Não foram encontrados membros proibidos Membros Banidos - Nome - Âmbito Unban - Selecionar tipo de grupo Digite a senha do grupo - Criar Criar enquete Pergunta Insira sua pergunta - Opções Introduza a sua opção - Adicionar nova opção - Ver Membros Detalhes - Notificações - Outros - Ajuda - Denunciar um problema - Membros do Grupo Proibição - Chute - Escolha o seu emoji - Grupo protegido Ver no Youtube Visitar - Emoji - Nenhuma mensagem encontrada - Rosca - Documento Colaborativo - Quadro Colaborativo - Adicionar reação - Não foram encontrados adesivos - Responder no tópico Excluir mensagem Editar mensagem - DOMINGO - SEGUNDA-FEIRA - TERÇA-FEIRA - QUARTA-FEIRA - QUINTA-FEIRA - SEXTA-FEIRA - SÁBADO Proprietário Escrever uma mensagem Falha na recuperação do usuário bloqueada @@ -202,22 +114,17 @@ Gostaria de desbloquear %1$s Não foi possível bloquear %1$s Por favor, insira os detalhes do grupo para prosseguir - Não é possível ingressar no grupo Você gosta de fazer %1$s como administrador ⚠️ Remover de %1$s Adicionar %1$s a\” %2$s\” %1$s é adicionado a\” %2$s\” %1$s é removido de\” %2$s\” - Falha no membro do grupo com chute Gostaria de sair do grupo? Excluir grupo Excluir o grupo - Falha na exclusão do grupo Não é possível remover %1$s - Não é possível sair do grupo Carregar mais Carregar mais membros %1$s - Não é possível buscar a lista de grupos Senha Juntando-se Incorreto @@ -229,13 +136,11 @@ Digite a senha para juntar-se a %1$s Não há membros proibidos Moderators - Não é possível recuperar a lista de moderadores. Você gosta de fazer %1$s como moderador Somente o administrador pode remover o moderador Atualizar Grupo Inserir URL do ícone do grupo Grupo atualizado com sucesso - Grupo não atualizado Digite senha antiga Digite nova senha Alerta de grupo @@ -244,8 +149,6 @@ Você gosta de fazer %1$s como proprietário %1$s agora é Proprietário Você não é um membro deste grupo (%1$s) - Alerta do proprietário - Transfira a propriedade do grupo para outro membro antes de sair do grupo Grupo Público Grupo Privado Grupo protegido por senha @@ -253,15 +156,10 @@ Somente o proprietário do grupo pode remover admin. %1$s é removido do privilégio de administrador Não é possível atualizar o membro do grupo - >Recuperação da lista de administrador falhou - Não é possível criar um grupo Falha na operação em %1$s - Erro: Não é possível carregar a lista de membros do grupo - Não é possível buscar Lista de Membros Banidos Conceda permissão da câmera a partir da configuração do aplicativo Conceda permissão de armazenamento a partir da configuração do aplicativo O arquivo não existe - Não é possível buscar a lista de chamadas Você não fez nenhuma chamada Não é possível iniciar a chamada @@ -288,7 +186,6 @@ Enviar Privacidade e Suporte Usuário - Mensagem personalizada não suportada Inserir URL para avatar Digite o nome de usuário Atualizar usuário @@ -307,8 +204,6 @@ Tópico em %1$s Enviado em: %1$s Conectando à chamada - Leitura em: %1$s - Entregue em: %1$s Navegar Por favor, permita permissão de localização. Enviar arquivos de áudio @@ -320,7 +215,6 @@ GPS habilitado GPS desativado Opções - Enviando Mensagem de Mídia Adicionar uma nova opção Não é possível obter sua localização @@ -330,7 +224,6 @@ Compartilhado um quadro branco Compartilhar WriteBoard Compartilhado um WriteBoard - Você enviou um %1$s Você recebeu um %1$s Iniciar uma chamada Toque para iniciar a conversa @@ -345,7 +238,6 @@ Nenhuma tradução disponível compartilhou uma chamada em grupo. 📹 Chamada em Grupo - Iniciar uma chamada em grupo Você criou uma chamada em grupo. Votado com Sucesso Enviando @@ -355,9 +247,6 @@ Usuário atualizado com sucesso "Usuário deixou" Usuário ingressado - Conectado com sucesso - Conexão em andamento - Você está desconectado. Sem Internet disponível Você foi bloqueado por @@ -371,86 +260,43 @@ A enquete \"id \" está faltando Você não é o criador da enquete - Chame o método CometChat.init () de preferência no método onCreate () da classe do aplicativo antes de chamar qualquer outro método relacionado a CometChat A senha é obrigatória para um grupo protegido - Limite excedido limite máximo de %s - Faça login no CometChat antes de chamar este método Forneça um GUID válido Forneça um UID válido UID não pode ficar em branco. Forneça um UID válido UID não pode conter espaços Forneça um UID válido algo deu errado - A chamada não pode ser cancelada sem iniciar uma chamada - Algo deu errado ao conectar - Sessão de chamada incompatível. Por favor, verifique o ID da sessão - UID e GUID não especificados Especifique o UID ou o GUID para o qual a mensagem precisa ser buscada Sem ligação à Internet. Tente novamente mais tarde - Solicitação já em andamento - Timestamp ou MessageId ou updatedAfter é necessário para usar o método fetchNext() - Auth token não pode estar vazio. Por favor, forneça um válido auth token A extensão está desativada. Habilite a extensão do Painel CometChat - O ID da mensagem fornecido é inválido Forneça um ID de mensagem válido - Apenas TextMessage ou CustomMessage podem ser editados. Forneça uma mensagem válida - A lista fornecida está vazia. Forneça uma lista válida - O método `updatesOnly()` não pode ser usado sem o método `setUpdatedAfter()` - Erro ao analisar JSON - Erro ao sair - AppID não pode estar vazio. Especifique um appID válido - O limite especificado deve ser um número positivo - Região não especificada. Especifique a região na classe AppSettingsBuilder usando o método `setRegion()` - O AppSettings não pode ser nulo - ApiKey não pode ser nula ou vazia. Forneça uma chave de API válida - O tipo de mensagem que você inseriu é inválido para a ação a seguir - O texto da mensagem não pode estar vazio - O objeto do arquivo não pode ser nulo ou o caminho do arquivo não existe - URL da mensagem de mídia está definido como nulo ou em branco - O campo de dados personalizados não pode ser nulo ou vazio O nome do grupo não pode ser nulo ou vazio - O tipo de grupo não pode ser nulo ou vazio - Login em andamento. Por favor, aguarde a conclusão da solicitação de login - A mensagem não pode ser nula. Passe um objeto `BaseMessage` válido - O grupo não pode ser nulo. Por favor, passe um objeto `Grupo` válido - A chamada não pode ser nula. Passe um objeto `Call` válido - Tipo de chamada inválido. Forneça um tipo de chamada válido - Tipo de receptor inválido. Forneça um tipo de receptor válido - Tipo de sessionId inválido. Por favor, forneça um id de sessão válido - A atividade fornecida não pode ser nula. - O RelativeLayout fornecido não pode ser nulo - O token FCM fornecido não pode ser nulo ou vazio. Forneça um token válido do FCM - O tipo de grupo fornecido não pode ser nulo ou vazio - Chamada em andamento. Encerre a chamada anterior para realizar esta operação - Não é possível cancelar a chamada iniciada por outra pessoa. Em vez disso, use o status `rejeitado` - Nome inválido fornecido para o usuário. Forneça um nome válido - O objeto do usuário não pode ser nulo. Forneça um objeto de usuário válido - O nome do grupo não pode estar vazio. Forneça um nome de grupo válido - O carimbo de data / hora deve ser positivo. Forneça um carimbo de data / hora válido - Categoria inválida. Forneça uma categoria válida - Ícone vazio. Forneça um ícone válido - Descrição vazia. Forneça uma descrição válida - Metatdados vazios. Forneça metadados válidos - Escopo inválido. Forneça um escopo válido - Escopo inválido. Forneça um escopo válido - Conversação inválida com. Forneça um valor válido para chatWith - ConversationType inválido. Forneça um valor válido para chatWith - Mensagem de mídia inválida. Forneça um objeto de arquivo válido ou detalhes de anexo. - O anexo não pode ser nulo. Forneça detalhes de anexo válidos - Nome de arquivo inválido. Forneça um nome de arquivo válido - Extensão de arquivo inválida. Forneça uma extensão de arquivo válida - Tipo de arquivo Mime inválido. Forneça um tipo MIME de arquivo válido - URL de arquivo inválido. Forneça um URL de arquivo válido - conversa não encontrada - Configurações não encontradas. - O recurso fornecido não pode ser nulo ou vazio. Forneça um recurso válido - A extensão fornecida não pode ser nula ou vazia. - Recurso fornecido não encontrado. A extensão fornecida não foi encontrada. deixou o grupo baixando criando grupo - Enviar mensagem em particular + Enviar mensagem em particular Ver perfil - apagar conversa Você gostaria de excluir esta conversa? Excluindo a conversa + desligado + Novas mensagens + Nova mensagem + Entregue + Leitura + Voto + Votos + declínio + Responder + Responder + Respostas + Responder em particular + Selecione o usuário + Selecione o Grupo + Usuários de busca + Grupos de Pesquisa + Chamada de voz rejeitada + Vídeo chamada rejeitada + Chamada de voz de saída + Chamada de vídeo realizada + Nenhum membro banido encontrado \ No newline at end of file diff --git a/uikit/src/main/res/values-ru/strings.xml b/uikit/src/main/res/values-ru/strings.xml index d49a30f..72a5c25 100644 --- a/uikit/src/main/res/values-ru/strings.xml +++ b/uikit/src/main/res/values-ru/strings.xml @@ -3,25 +3,22 @@ Пользователи Звонки Группы - Больше - Отправка... - ⚠️ Это сообщение было удалено - ⚠️ Вы удалили это сообщение - 📷 Фото + Еще + ⚠️ Это сообщение удалено + 📷 Изображение 📹 Видео 🎵 Аудио 📁 Файл У вас есть сообщение - Пропущенный голосовой вызов» - Пропущенный видеозвонок - 📍 Расположение + Пропущенный голосовой вызов + Пропущенный видеовызов + 📍 Местоположение 📊 Опрос - 💟 наклейка - 📝 Белая доска - 📃 Документ - Онлайн - Оффлайн - Ты + 💟 Стикер + 📝 Документ + 📃 Доска + В сети + Вы Администратор Модератор Участник @@ -31,192 +28,103 @@ Защищен паролем Конфиденциальность и безопасность - Privacy Заблокированные пользователи - Всем Предпочтения Вы заблокировали - Члены - Назад + Участники Отменить Текст скопирован в буфер обмена Сегодня Вчера - набрав... набирает... - Закрыть - Пожалуйста, введите название группы - Освежающий... + введите название группы Разблокировать успешно разблокирован Сделать администратором группы Сделать модератором группы Администраторы - Добавить администратора - Добавить модератора Назначить администратором группы Удалить как администратор группы Назначить модератором группы Удалить как модератор группы - удаляется как администратор группы удаляется как модератор группы теперь является администратором теперь модератор ⚠️ Удалить - в качестве администратора из - в качестве модератора из группа? ✅ Добавить - в качестве администратора в - в качестве модератора в ОК - в качестве модератора - в качестве администратора Добавить участников ПОСТУПКИ - КОНФИДЕНЦИАЛЬНОСТЬ И ПОДДЕРЖКА - Отправить сообщение Добавить в Разблокировать пользователя - Блокировать пользователя - успешно добавлен - успешно заблокирован - Удалить & Выход - Выйти из группы - из - успешно удалено + Заблокировать пользователя + Покинуть группу успешно заблокирован успешно разблокирован - успешно удалено - Вы ушли от - Удалить участника Запретить член - Unban Член Создать группу - Вы присоединились - Вперед - Общий носитель - Не удается переслать сообщение на + Общие медиафайлы Вы можете пересылать сообщение только 5 участникам одновременно - Нет фотографий - Нет видео - Нет документов История Видеозвонок - Аудио вызов - Доска - Загрузка... - 1 ответ - ответы + Аудиовызов Запуск Присоединиться - поделился совместным whiteboar - Вы создали новый совместный whiteboar - Вы создали новый документ для совместной работы + предоставил доступ к совместной доске + Вы создали новую интерактивную доску + Вы создали новый совместный документ + предоставил совместный доступ к документу Фото и видео тека Сфотографировать Местоположение общего доступа Ответить сообщение Переслать сообщение - Начать поток + Начать Ветка Поделиться сообщением Сведения о сообщении Копировать сообщение Создание опроса Отправить наклейку - Отправка местоположения... - Местоположение успешно отправлено Поиск - Пользователи не найдены Ошибка - Группы не найдены - Чаты не найдены - Сообщение мультимедиа Входящий аудиовызов Входящий видеозвонок - Отклонить - Принять - Вызов инициирован - Исходящий аудиовызов - Исходящий видеозвонок - Вызов отклонен отклоненный вызов - Звонок принят - совместный - оставил вызов - Звуковой звонок без ответа - Видеозвонок без ответа + присоединился Вызов завершен - Звонок отменен - Звонок занят - Звоню... - Запрещенные участники не найдены - Запрещенные участники - Имя - Область применения - Unban - Выберите тип группы - Создать + Звонок... + Заблокированные участники + Разблокировать Создать опрос Вопрос Введите свой вопрос - Опции Введите свой вариант - Добавить новую опцию - Просмотр участников Подробности - Уведомления - Прочее - Помощь - Сообщить о проблеме - Члены группы Запрет - Удар - Выберите свой эмодзи - Защищенная группа Посмотреть на Youtube - Посетить - смайлик - Сообщения не найдены - Нить - Совместный документ - Совместная доска - Добавить реакцию - Стикеры не найдены - Ответ в потоке + Посещение Удалить сообщение Редактировать сообщение - ВОСКРЕСЕНЬЕ - ПОНЕДЕЛЬНИК - ВТОРНИК - СРЕДА - ЧЕТВЕРГ - ПЯТНИЦА - СУББОТА Владелец - Написать сообщение + Напиши сообщение Не удалось получить заблокированный пользователь Вы не сможете отправлять или получать сообщения Не удалось разблокировать пользователя Вы хотите разблокируть %1$s Не удалось заблокироть %1$s Пожалуйста, введите данные группы, чтобы продолжить - Не удается присоединиться к группе Вы хотите сделать %1$s в качестве администратора ⚠️ Удалить из %1$s Добавить %1$s в\» %2$s\» %1$s добавлено в\» %2$s\» %1$s удален из\» %2$s\» - Не удалось запустить участника группы Хотите уехать из группы? Удалить группу Удалить группу - Не удалось удалить группу Не удается удалить %1$s - Не удается покинуть группу Загрузить больше Загрузить больше %1$s членов - Не удается получить список групп Пароль Присоединение Неверный @@ -227,15 +135,13 @@ Подтвердить пароль Пароль не совпадает Введите пароль для соединения %1$s - Нет запрещенных участников + Заблокированных участников не найдено Модераторы - Не удается получить список модераторов. Вы хотите сделать %1$s в качестве модератора Только администратор может удалить модератора Обновить группу Введите URL-адрес значка группы Группа успешно обновлена - Группа не обновлена Введите старый пароль Введите новый пароль Групповое оповещение @@ -244,8 +150,6 @@ Вы хотите сделать %1$s в качестве владельца %1$s теперь является владельцем Вы не являетесь членом этой группы (%1$s) - Оповещение владельца - Пожалуйста, передайте право собственности на группу другому участнику перед выходом из группы Публичная группа Частная группа Группа, защищенная паролем @@ -253,19 +157,14 @@ Только владелец группы может удалить администратора. %1$s удален из прав администратора Не удается обновить члена группы - >Не удалось получить список администраторов - Не удается создать группу Не удалось выполнить операцию на %1$s - Ошибка: не удается загрузить список участников группы - Не удается получить список заблокированных участников Пожалуйста, предоставьте разрешение камеры из настройки приложения Предоставьте разрешение на хранение из настроек приложения Файл не существует - Не удается получить список вызовов Вы не совершали никаких звонков Не удается инициировать вызов - Исходящие + Исходящий Входящие Все Пропустил @@ -279,9 +178,9 @@ Изображения Видео Файлы - У тебя нет разговоров. - Нет доступных пользователей - Нет доступных групп + Чатов не найдено + Пользователи не найдены + Группы не найдены Нет блокирующих пользователей У вас нет пропущенных звонков Да @@ -291,15 +190,14 @@ Конфиденциальность и поддержка Пользователь - Настраиваемое сообщение не поддерживается Введите URL-адрес для аватара Введите имя пользователя Обновить пользователя - Общий доступ к изображению - Общий доступ к аудиофайлу %1$s - Общий доступ к видео - Общий доступ к файлу %1$s - Общий доступ к стикеру + Поделился изображением + Отправил аудио %1$s + Поделился видео + Поделился файлом %1$s + Поделился стикером Общий доступ к опросу: \n %1$s Поделиться Небезопасное содержимое. @@ -307,11 +205,9 @@ Посмотреть Оповещение о настроениях Вы хотите просмотреть это сообщение, оно может содержать конфиденциальное содержимое. - Поток в %1$s - Отправлено по адресу: %1$s + Ветка в %1$s + Отправлено: %1$s Подключение к вызову - Чтение: %1$s - Доставлено в: %1$s Навигация Пожалуйста, разрешите разрешение на местоположение. Отправка аудиофайлов @@ -323,7 +219,6 @@ GPS включен GPS отключен Опции - Отправка сообщения мультимедиа Добавить новый параметр Не удается получить ваше местоположение Закончил @@ -332,22 +227,19 @@ Общий доступ к доске Поделиться WriteBoard Общий доступ к WriteBoard - Вы отправили %1$s Вы получили %1$s Инициировать вызов Нажмите, чтобы начать разговор %1$s успешно заблокирован - поделился совместными документами Нет сообщения темы добавлено - инициированный + инициирован пнул сделанный Перевести сообщение Перевод недоступен поделился групповым вызовом. 📹 Групповой вызов - Начать групповой вызов Вы создали групповой вызов. Проголосовали успешно загрузка @@ -355,11 +247,8 @@ обновление Разговоры Пользователь успешно обновлен - "Пользователь слева" + Пользователь покинул вызов Пользователь присоединился - Подключено успешно - Соединение в процессе - Вы отключены. Интернет недоступен Вы были заблокированы @@ -373,86 +262,42 @@ Опрос \"id \" отсутствует Вы не являетесь создателем опроса - Пожалуйста, вызовите метод CometChat.init () предпочтительно в методе onCreate () класса приложения перед вызовом любых других методов, связанных с CometChat. Пароль обязателен для защищенной группы - Предел превышен макс. Предел %s - Пожалуйста, войдите в CometChat перед вызовом этого метода Пожалуйста, предоставьте действительный GUID Пожалуйста, предоставьте действительный UID UID не может быть пустым. Пожалуйста, предоставьте действительный UID UID не может содержать пробелов Пожалуйста, предоставьте действительный UID что-то пошло не так - Вызов нельзя отменить, не начав звонок - Что-то пошло не так при подключении - Несоответствие сеанса вызова. Пожалуйста, проверьте идентификатор сеанса - И UID, и GUID не указаны Укажите UID или GUID для которого нужно получить сообщение Нет подключения к Интернету. Повторите попытку позже. - Запрос уже выполняется - Timestamp, MessageId или updatedAfter требуется для использования метода fetchNext (). - Auth token не может быть пустым. Пожалуйста, предоставьте действительный auth token Расширение отключено. Пожалуйста, включите расширение из CometChat Dashboard - Указанный идентификатор сообщения недействителен. Укажите действительный идентификатор сообщения - Редактировать можно только TextMessage или CustomMessage. Укажите действительное сообщение. - Представленный список пуст. Пожалуйста, предоставьте действительный список - Метод updateOnly() нельзя использовать без метода setUpdatedAfter() - Ошибка при разборе JSON - Ошибка при выходе - AppID не может быть пустым. Укажите действительный идентификатор приложения - Указанный предел должен быть положительным числом. - Регион не указан. Укажите регион в классе AppSettingsBuilder с помощью метода setRegion (). - AppSettings не может быть нулевым - ApiKey не может быть нулевым или пустым. Пожалуйста, предоставьте действующий ключ API - Введенный вами тип сообщения недействителен для следующего действия - Текст сообщения не может быть пустым - Файловый объект не может быть пустым или путь к файлу не существует - URL-адрес мультимедийного сообщения задан как пустой или пустой - Поле настраиваемых данных не может быть пустым или пустым. Имя группы не может быть пустым или пустым. - Тип группы не может быть нулевым или пустым. - Идет вход в систему. Подождите, пока завершится запрос на вход - Сообщение не может быть нулевым. Пожалуйста, передайте действительный объект BaseMessage - Группа не может быть нулевой. Пожалуйста, передайте действительный объект `Group` - Вызов не может быть нулевым. Пожалуйста, передайте действительный объект Call - Неверный тип звонка. Укажите действительный тип звонка - Неверный тип получателя. Укажите действительный тип получателя - Недопустимый тип sessionId. Укажите действительный идентификатор сеанса - Предоставленное действие не может быть нулевым. - При условии, что RelativeLayout не может быть нулевым - Предоставленный токен FCM не может быть нулевым или пустым. Пожалуйста, предоставьте действующий токен FCM - Указанный тип группы не может быть пустым или пустым. - Звонок идет. Завершите предыдущий вызов, чтобы выполнить эту операцию - Невозможно отменить вызов, инициированный кем-то другим. Вместо этого используйте статус "отклонено" - Для пользователя указано недопустимое имя. Пожалуйста, укажите действительное имя - Пользовательский объект не может быть нулевым. Укажите действительный объект пользователя - Имя группы не может быть пустым. Укажите действительное название группы - Отметка времени должна быть положительной. Пожалуйста, укажите действительную метку времени - Недействительная категория. Укажите действительную категорию - Пустой значок. Укажите действующий значок - Пустое описание. Пожалуйста, предоставьте действительное описание - Пустые метатданные. Пожалуйста, предоставьте действительные метаданные - Неверный объем. Укажите действительный объем - Неверный объем. Укажите действительный объем - Неверный диалог с. Укажите допустимое значение для разговора с - Недействительный тип разговора. Укажите допустимое значение для разговора с - Недействительное мультимедийное сообщение. Укажите действительный объект File или вложение. - Вложение не может быть нулевым. Пожалуйста, предоставьте действительные данные вложения - Неверное имя файла. Укажите действительное имя файла - Неверное расширение файла. Укажите допустимое расширение файла - Неверный тип Mime файла. Укажите действительный MIME-тип файла - Неверный URL-адрес файла. Укажите действительный URL-адрес файла - Цепочка не найдена для% s и типа беседы% s - Настройки не найдены. - Предоставленная функция не может быть нулевой или пустой. Укажите действительную функцию - Предоставленное расширение не может быть пустым или пустым. - Предоставленная функция не найдена. Предоставленное расширение не может быть найдено. покинул группу скачивание - создание группы - Отправить сообщение в частном порядке + Создание группы + Отправить сообщение в частном порядке Просмотреть профиль - удалить беседу Вы хотите удалить этот разговор? Удаление разговора - + ответить + ответы + Отклонить + Принять + голоса + проголосовать + Доставлено + Просмотрено + Новые сообщения + Новое сообщение + Не в сети + Ответить лично + Выбрать пользователя + Выбрать группу + Поиск пользователей + Поисковые группы + Отклоненный голосовой вызов + Отклоненный видеовызов + Исходящий голосовой вызов + Исходящий видеозвонок + Забаненные участники не найдены \ No newline at end of file diff --git a/uikit/src/main/res/values-sv/strings.xml b/uikit/src/main/res/values-sv/strings.xml index 40c6882..81cc9c9 100644 --- a/uikit/src/main/res/values-sv/strings.xml +++ b/uikit/src/main/res/values-sv/strings.xml @@ -16,13 +16,13 @@ Avblockera användare Blockera användare Blockerade användare - % 1 $ s har blockerats framgångsrikt + %1$s har blockerats framgångsrikt Avblockera Blockerad användarhämtning misslyckades Du kan inte skicka eller ta emot meddelanden Avblockera användare misslyckades - Vill du avblockera% 1 $ s - Det gick inte att blockera% 1 $ s + Vill du avblockera %1$s + Det gick inte att blockera %1$s Skapa grupp @@ -51,22 +51,17 @@ Vänligen ange gruppinformation för att fortsätta - Det gick inte att gå med i gruppen Vill du göra %1$s som administratör ⚠️ Ta bort från %1$s - Lägg till% 1 $ s till \" %2$s \" + Lägg till %1$s till \" %2$s \" %1$s läggs till i \" %2$s \" %1$s tas bort från \" %2$s \" - Gruppmedlem sparkad misslyckades Vill du lämna gruppen? Radera grupp Ta bort gruppen - Radering av grupp misslyckades Kan inte ta bort %1$s - Det gick inte att lämna gruppen Ladda mer Ladda mer %1$s medlemmar - Det gick inte att hämta grupplistan Lösenord Anslutning Felaktigt @@ -80,13 +75,11 @@ Ange lösenord för att gå med i %1$s Inga förbjudna medlemmar Moderatorer - Det gick inte att hämta moderatorlistan. Vill du göra %1$s som moderator Endast Admin kan ta bort moderator Uppdatera grupp Ange webbikon för gruppikon Grupp har uppdaterats - Gruppen har inte uppdaterats Ange gammalt lösenord Ange nytt lösenord Gruppvarning @@ -95,8 +88,6 @@ Vill du göra %1$s som ägare %1$s är nu ägare Du är inte medlem i den här gruppen (%1$s) - Ägarvarning - Överför gruppägarskapet till en annan medlem innan du lämnar gruppen Offentlig grupp Privat grupp @@ -109,11 +100,7 @@ Endast gruppägare kan ta bort admin. har tagits bort från administratörsbehörighet Det går inte att uppdatera gruppmedlem - Hämtningen av administratörslistan misslyckades - Det gick inte att skapa en grupp - Åtgärden misslyckades på% 1 $ s - Fel: Det går inte att ladda gruppmedlemslistan - Det går inte att hämta förbjudna medlemslistor + Åtgärden misslyckades på %1$s Ge kamera tillåtelse från appinställning @@ -127,7 +114,6 @@ Missat videosamtal - Det går inte att hämta samtalslistan Du har inte ringt något Ringer Det går inte att starta samtalet @@ -172,14 +158,12 @@ Avbryt Text kopieras till urklipp Radera meddelande - Skicka meddelande Sekretess & Säkerhet Lägg till Vidarebefordra meddelande Åtgärder Inställningar Online - Offline Svarsmeddelande Dela meddelande Kopiera meddelande @@ -224,8 +208,6 @@ Tråd i %1$s Skickat vid: %1$s Ansluter till samtal - Läs vid: %1$s - Levereras vid: %1$s Navigera Tillåt platsbehörighet. Skicka ljudfiler @@ -237,7 +219,6 @@ GPS aktiverad GPS inaktiverad Alternativ - Skickar mediemeddelande Ange ditt alternativ Ange din fråga Fråga @@ -249,59 +230,27 @@ Delade ett WhiteBoard Dela WriteBoard Delade ett WriteBoard - Du skickade en %1$s Du fick %1$s Inled ett samtal - Acceptera - Lägg till administratör - Lägg till moderator - Lägg till nytt alternativ - Lägg till reaktion - har lagts till - ⚠ Du har tagit bort detta meddelande Igår - tillbaka Förbud Bannat framgångsrikt - Blockerad framgångsrikt - Skapa - %1$s har tagits bort från administratörsbehörighet - Visa medlemmar - Avvisa - Borttaget lyckades avblockerat framgångsrikt Du kan inte vidarebefordra meddelande till fler än fem medlemmar - Skickar .. Ljud Bild Video Fil - Samtal accepterat - Samtal upptaget - Samtal avbröts Samtal avslutat - Samtal initierat - Samtal avvisat 📃 Dokument 📍 Plats - Anpassat meddelande stöds inte "📊 Polls" "💟 Sticker" 📝 Whiteboard - Radera & Avsluta Lösenordsskyddad grupp Privat grupp Offentlig grupp - Svara i tråd - ​​Inga klistermärken hittades - Samarbetsdokument - Whiteboard för samarbete - Tråd - ​​Inga meddelanden hittades - emoji - stäng Fel - Gruppmedlemmar Inga trådmeddelanden initierad lagt till @@ -316,7 +265,6 @@ har delat ett gruppsamtal. Du har skapat ett gruppsamtal. "📹 Gruppsamtal" - Starta ett gruppsamtal Försök igen Uppladdning Röstade framgång @@ -325,9 +273,6 @@ Uppdaterad användare lyckades "User Left" Användare ansluten - Ansluten lyckades - Anslutning pågår - Du är bortkopplad. Inget internet tillgängligt "Du har blockerat" Du har blockerats av @@ -343,86 +288,43 @@ ​​Omröstning finns inte Undersökningen \" id \" saknas Du är inte skaparen av omröstningen - Vänligen ring metoden CometChat.init () helst i metoden onCreate () i applikationsklassen innan du ringer till andra metoder relaterade till CometChat Lösenord är obligatoriskt för en skyddad grupp - Gräns ​​överskridit maxgräns - Logga in på CometChat innan du ringer till den här metoden Ange en giltig GUID Ange ett giltigt UID UID kan inte vara tomt. Ange ett giltigt UID UID kan inte innehålla mellanslag. Ange ett giltigt UID Något gick fel - Samtal kan inte avbrytas utan att ett samtal initieras - Något gick fel när du anslöt - Samstämningssessionens obalans. Kontrollera sessions-ID - Både UID och GUID har inte specificerats. Ange UID eller GUID som meddelandena måste hämtas till Ingen internetanslutning. Försök igen senare - Begäran pågår redan - Tidsstämpel \'eller \' MessageId \'eller `updatedAfter` krävs för att använda metoden \' fetchNext() \' - Auth-token kan inte vara tom. Ange en giltig autent-token - Meddelande-ID som anges är ogiltigt. Ange ett giltigt meddelande-ID - Endast TextMessage eller CustomMessage kan redigeras. Ange ett giltigt meddelande - Listan som tillhandahålls är tom. Ange en giltig lista - Metoden `updatesOnly ()` kan inte användas utan metoden `setUpdatedAfter ()` - Fel vid analys av JSON - Fel vid utloggning - AppID kan inte vara tomt. Ange ett giltigt appID - Den angivna gränsen måste vara ett positivt tal - Region har inte specificerats. Vänligen ange regionen i AppSettingsBuilder-klassen med metoden `setRegion ()` - AppSettings kan inte vara noll - ApiKey får inte vara noll eller tom. Ange en giltig Api-nyckel - Inloggning pågår. Vänta tills inloggningsförfrågan är klar - Meddelandetypen du har angett är ogiltig för följande åtgärd - Meddelandetexten får inte vara tom - Filobjektet kan inte vara null eller filsökvägen existerar inte - Mediemeddelandets URL är inställd som noll eller tom - Anpassat datafält får inte vara null eller tomt Gruppnamn får inte vara null eller tomt - Grupptyp kan inte vara noll eller tom - Meddelandet kan inte vara null. Vänligen skicka ett giltigt "BaseMessage" -objekt - Gruppen kan inte vara noll. Vänligen skicka ett giltigt "grupp" -objekt - Samtalet kan inte vara noll. Vänligen skicka ett giltigt `Call`-objekt - Ogiltig samtalstyp. Ange en giltig samtalstyp - Ogiltig mottagartyp. Ange en giltig mottagartyp - Ogiltig sessionId-typ. Ange ett giltigt session-ID - Tillhandahållen aktivitet kan inte vara noll. - Tillhandahållet RelativeLayout kan inte vara noll - Den angivna FCM-token får inte vara noll eller tom. Ange en giltig FCM-token - Den angivna grupptypen får inte vara noll eller tom - Samtal pågår. Avsluta föregående samtal för att utföra den här åtgärden - Det går inte att avbryta samtal som initierats av någon annan. Använd status "avvisad" istället - Ogiltigt namn för användaren. Ange ett giltigt namn - Användarobjekt kan inte vara null. Ange ett giltigt användarobjekt - Gruppnamn får inte vara tomt. Ange ett giltigt gruppnamn - Tidsstämpel måste vara positiv. Ange en giltig tidsstämpel - Ogiltig kategori. Ange en giltig kategori - Tom ikon. Ange en giltig ikon - Tom beskrivning. Vänligen ange en giltig beskrivning - Tom metatdata. Ange en giltig metadata - Ogiltigt omfång. Ange ett giltigt omfång - Ogiltigt omfång. Ange ett giltigt omfång - Ogiltig konversation med. Ange ett giltigt värde för konversationMed - Ogiltig konversationstyp. Ange ett giltigt värde för konversationMed - Ogiltigt mediemeddelande. Ange ett giltigt filobjekt eller bifogad information. - Bilaga kan inte vara noll. Vänligen ange giltiga bifogningsuppgifter - Ogiltigt filnamn. Ange ett giltigt filnamn - Ogiltigt filtillägg. Ange ett giltigt filtillägg - Ogiltig fil-mime-typ. Ange en giltig fil-mime-typ - Ogiltig fil-URL. Ange en giltig fil-URL - Konversation hittades inte - Inställningar hittades inte. - Funktionen är inte giltig. - Detta tillägg är ogiltigt. Kontrollera från instrumentpanelen. - ​​Funktionen hittades inte. grupp laddar ner skapa grupp - Skicka meddelande privat + Skicka meddelande privat Visa profil - radera konversation i dag Vill du radera den här konversationen? Tar bort konversation skriver.. + off-line + Nya meddelanden + Nytt meddelande + Levereras + Läsa + Rösta + Röster + nedgång + acceptera + Svar + Svar + Svara privat + Välj Användare + Välj Grupp + Sök användare + Sök grupper + Avvisat röstsamtal + Avvisat videosamtal + Utgående röstsamtal + Utgående videosamtal + Inga förbjudna medlemmar hittades \ No newline at end of file diff --git a/uikit/src/main/res/values-zh-rTW/strings.xml b/uikit/src/main/res/values-zh-rTW/strings.xml index a0fcfa6..21e3f68 100644 --- a/uikit/src/main/res/values-zh-rTW/strings.xml +++ b/uikit/src/main/res/values-zh-rTW/strings.xml @@ -4,9 +4,7 @@ 呼叫 群組 更多 - 正在傳送中... ⚠️ 此訊息已被刪除 - ⚠️ 您刪除了此訊息 📷 照片 📹 影片 🎵 音訊 @@ -20,7 +18,6 @@ 📝 白板 📃 文件 線上 - 離線 管理員 主持人 @@ -31,84 +28,48 @@ 密碼保護 隱私權與安全性 - 隱私 封鎖的使用者 - 每個人 偏好設定 您已封鎖 成員 - 返回 取消 文字複製到剪貼簿 今天 昨天 - 輸入... 正在輸入... - 關閉 請輸入群組名稱 - 正在刷新... 解除封鎖 讓群組管理員 成為群組仲裁者 管理員 - 新增管理員 - 新增仲裁者 擁有者 指派為群組管理員 以群組管理員身分移除 指派為群組仲裁者 移除為群組仲裁者 - 會以群組管理員身分移除 會以群組仲裁者身分移除 現在是管理員 現在是版主 ⚠️ 移除 - 以管理員身分 - 作為版主 團體? ✅ 新增 - 以管理員身分 - 作為主持人 確定 - 作為主持人 - 以管理員身分 新增成員 動作 - 隱私權與支援 - 傳送訊息 加入 解除封鎖使用者 封鎖使用者 - 已成功加入 已成功解除封鎖 - 已成功封鎖 - 刪除 (退出) 離開群組 - - 已成功移除 已成功禁止 成功取消禁用 - 已成功刪除 - 你離開了 - 移除成員 禁止成員 - 取消禁止成員 建立群組 - 你加入了 - 向前 共用媒體 - 無法將訊息轉寄至 您一次只能將訊息轉寄給 5 位參與者 - 沒有相片 - 沒有視訊 - 沒有文件 歷史 視訊通話 音訊通話 - 白板 - 正在載入中... - 1 個回覆 - 回覆 啟動 喬伊 共享了一個合作的白豬 @@ -125,77 +86,28 @@ 複製訊息 建立投票 傳送貼紙 - 正在傳送位置... - 已成功傳送位置 搜尋 - 找不到使用者 錯誤 - 找不到群組 - 找不到對話 - 媒體訊息 來電音訊通話 來電視訊通話 - 拒絕 - 接受 - 呼叫已啟動 - 撥出音訊通話 - 撥出視訊通話 - 電話拒絕 拒絕的呼叫 - 已接聽電話 加入 - 留下電話 - 未接聽的音訊通話 - 未接聽視訊通話 呼叫結束 - 來電已取消 - 呼叫忙碌 呼叫... - 找不到被禁用的會員 禁止的會員 - 名稱 - 範圍 取消禁止 - 選取群組類型 輸入群組密碼 - 建立 建立投票 問題 輸入您的問題 - 選項 輸入您的選項 - 新增選項 - 檢視成員 詳細資料 - 通知 - 其他 - 說明 - 報告問題 - 群組成員 禁令 - - 挑選您的表情符號 私人群組 - 受保護群組 在 YouTube 上觀看 造訪 - 表情符號 - 找不到訊息 - 螺紋 - 協同合作文件 - 協同合作白板 - 加入反應 - 找不到貼圖 - 在執行緒中回覆 刪除訊息 編輯訊息 - 星期日 - 星期一 - 星期二 - 星期三 - 星期四 - 星期五 - 星期六 撰寫訊息 封鎖的使用者擷取失敗 @@ -204,22 +116,17 @@ 您是否要解除封鎖 %1$s 無法封鎖 %1$S 請輸入團體詳細資料以繼續 - 無法加入群組 您是否喜歡將 %1$s 作為管理員 ⚠️ 從 %1$s 移除 將 %1$s 新增至\」%2$s\」 %1$s 已新增至\」%2$s\」 %1$s 已從\」%2$s\」中移除 - 群組成員已啟動失敗 你想離開團體嗎? 刪除群組 刪除群組 - 群組刪除失敗 無法移除 %1$s - 無法離開群組 載入更多 載入更多 %1$s 成員 - 無法擷取群組清單 密碼 加入 不正確 @@ -232,13 +139,11 @@ 輸入密碼以加入 %1$s 沒有被禁止的會員 仲裁者 - 無法擷取仲裁者清單。 您是否喜歡將 %1$s 設為主持人 只有管理員可以移除仲裁者 更新群組 輸入群組圖示網址 群組更新成功 - 群組未更新 輸入舊密碼 輸入新密碼 群組警示 @@ -247,23 +152,16 @@ 您是否喜歡將 %1$s 成為擁有者 %1$s 現在是擁有者 您不是此群組的成員 (%1$s) - 擁有者警示 - 請在離開群組前將群組所有權轉移給其他會員 公用群組 密碼保護群組 您無法對自己執行動作 只有群組擁有者可以移除管理員。 %1$s 已從管理員權限中移除 無法更新群組成員 - > 管理員清單擷取失敗 - 無法建立群組 在 %1$s 上作業失敗 - 錯誤:無法載入群組成員清單 - 無法取得禁用的成員清單 請從應用程式設定授與相機權限 請從應用程序設置授予存儲權限 檔案不存在 - 無法擷取通話清單 您尚未撥打任何電話 無法啟動呼叫 @@ -292,7 +190,6 @@ 隱私權與支援 使用者 - 不支援自訂訊息 輸入虛擬人偶的網址 輸入使用者名稱 更新使用者 @@ -311,8 +208,6 @@ %1$s 中的執行緒 傳送位置:%1$s 連線至呼叫 - 讀取位置:%1$s - 遞送地點:%1$s 導覽 請允許位置權限。 傳送音訊檔案 @@ -324,7 +219,6 @@ GPS 已啟用 GPS 已停用 選項 - 傳送媒體訊息 新增選項 無法取得您的位置 已結束 @@ -333,7 +227,6 @@ 共用白板 分享寫板 共用寫板 - 您已傳送 %1$s 您收到 %1$s 啟動呼叫 點按即可開始對話 @@ -347,16 +240,12 @@ 沒有可用的翻譯 分享了一个群组通话。 "📹 群组通话 " - 发起群组通话 您已建立群组通话。 投票成功 上載 重試 更新中 對話內容 - 成功連接 - 進行中的連接 - 您已斷開連接。 沒有可用的互聯網 你被封鎖 @@ -370,86 +259,43 @@ 民意測驗 “ id” 丟失 您不是民意測驗的創建者 - 請在調用與CometChat相關的任何其他方法之前,最好在應用程序類的onCreate()方法中調用CometChat.init()方法。 密碼是受保護組的必填項 - 上限超過 %s 的上限 - 調用此方法之前,請先登錄CometChat 請提供有效的GUID 請提供有效的 UID UID不能為空。請提供有效的UID UID不能包含空格。請提供有效的UID 出了些問題 - 不發起呼叫就無法取消呼叫 - 連接時出了點問題 - 呼叫會話不匹配。請檢查會話ID - UID和GUID均未指定。請指定需要為其獲取消息的UID或GUID 沒有互聯網連接。請稍後重試 - 請求已在進行中 - 要使用“ fetchNext()”方法,需要使用“時間戳”或“ MessageId”或“ updatedAfter” - 身份驗證令牌不能為空。請提供有效的身份驗證令牌 該擴展名被禁用。請從CometChat儀表板啟用擴展 - 提供的消息ID無效 請提供有效的消息ID - 只能編輯TextMessage或CustomMessage。請提供有效的消息 - 提供的列表為空。請提供有效清單 - 沒有`setUpdatedAfter()`方法,不能使用`updatesOnly()`方法。 - 解析JSON時出錯 - 註銷時出錯 - AppID不能為空。請指定一個有效的appID - 指定的限制必須為正數 - 未指定地區。請使用setRegion()方法在AppSettingsBuilder類中指定區域。 - AppSettings不能為null - ApiKey不能為null或為空。請提供有效的Api密鑰 - 您輸入的消息類型對於以下操作無效 - 訊息文字不能為空 - 文件對像不能為null或文件路徑不存在 - 媒體消息URL設置為null或空白 - 自定義數據字段不能為null或為空 組名不能為null或為空 - 群組類型不能為null或為空 - 正在登錄。請等待登錄請求完成 - 消息不能為空。請傳遞有效的`BaseMessage`對象 - 組不能為空。請傳遞一個有效的`Group`對象 - 通話不能為空。請傳遞有效的`Call`對象 - 無效的通話類型。請提供有效的通話類型 - 無效的接收者類型。請提供有效的接收者類型 - 無效的sessionId類型。請提供有效的會話ID - 提供的活動不能為空。 - 提供的RelativeLayout不能為null - 提供的FCM令牌不能為null或為空。請提供有效的FCM令牌 - 提供的組類型不能為null或為空 - 通話正在進行中。請結束上一個通話以執行此操作 - 無法取消其他人發起的呼叫。請改為使用狀態“已拒絕” - 為用戶提供的名稱無效。請提供一個有效的名字 - 用戶對像不能為空。請提供有效的用戶對象 - 組名不能為空。請提供有效的群組名稱 - 時間戳記必須為正數。請提供有效的時間戳記 - 無效的類別。請提供有效的類別 - 空的圖標。請提供有效的圖標 - 空說明。請提供有效的說明 - 空元數據。請提供有效的元數據 - 無效的範圍。請提供有效範圍 - 無效的範圍。請提供有效範圍 - 無效的對話方式。請提供一個有效的對話值 - 無效的conversationType。請提供一個有效的對話值 - 無效的媒體消息。請提供有效的文件對像或附件詳細信息。 - 附件不能為空。請提供有效的附件詳細信息 - 無效的文件名。請提供有效的文件名 - 無效的文件擴展名。請提供有效的文件擴展名 - 無效的文件Mime類型。請提供有效的文件啞劇類型 - 無效的文件URL。請提供有效的文件網址 - 找不到與%s和對話類型%s的對話 - 找不到設置。 - 提供的功能不能為null或為空。請提供有效的功能 - 提供的擴展名不能為null或為空。 - 找不到提供的功能。 找不到提供的擴展名。 剩下 正在下載 建立小组 - 私下发送消息 + 私下发送消息 查看資料 - 刪除對話 您要删除此对话吗? 删除对话 + 離線 + 新消息 + 新消息 + 發表 + + 投票 + 投票 + 衰退 + 回答 + 回复 + 回复 + 私下回复 + 選擇用戶 + 選擇組 + 搜索用戶 + 搜索組 + 被拒絕的語音電話 + 拒絕視頻通話 + 撥出語音電話 + 傳出視頻通話 + 沒有發現被禁止的成員 \ No newline at end of file diff --git a/uikit/src/main/res/values-zh/strings.xml b/uikit/src/main/res/values-zh/strings.xml index 660b7ca..1f70bc7 100644 --- a/uikit/src/main/res/values-zh/strings.xml +++ b/uikit/src/main/res/values-zh/strings.xml @@ -4,9 +4,7 @@ 来电 团体 更多 - 正在发送... ⚠️ 此消息已删除 - ⚠️ 你删除了此消息 📷 照片 📹 视频 🎵 音频 @@ -20,7 +18,6 @@ 📝 白板 📃 文档 在线 - 离线 管理员 主持人 @@ -31,82 +28,46 @@ 密码保护 隐私和安全 - 隐私 封锁的用户 - 每个人 偏好 你已经封锁了 会员 - 返回 取消 复制到剪贴板的文本 今天 昨天 - 打字... 正在打字... - 关闭 请输入组名 - 清爽... 解锁 成为群组管理员 让小组主持人 管理员 - 添加管理员 - 添加版主 分配为群组管理员 作为群组管理员删除 分配为小组主持人 作为群组主持人删除 - 作为群组管理员被删除 作为小组主持人被删除 现在是管理员 现在是主持人 ⚠️ 删除 - 作为管理员来自 - 作为主持人 组? ✅ 添加 - 作为管理员 - 作为主持人 好吧 - 作为主持人 - 作为管理员 添加成员 行动 - 隐私和支持 - 发送消息 添加 解锁用户 阻止用户 - 已成功添加 成功解锁 - 成功阻止 - 删除并退出 离开小组 - - 已成功删除 成功禁止 成功解禁 - 已成功删除 - 你离开 - 删除成员 Ban 会员 - Unban 会员 创建群组 - 你加入了 - 向前 共享媒体 - 无法将消息转发给 一次只能将消息转发给 5 位参与者 - 没有照片 - 没有视频 - 没有文档 视频通话 音频通话 - 白板 - 正在加载... - 1 个回复 - 回复 发射 加入 已经分享了一个合作的白猪 @@ -123,73 +84,24 @@ 复制消息 创建民意调查 发送贴纸 - 发送位置... - 位置已成功发送 搜索 - 找不到用户 错误 - 没有找到团体 - 没有找到聊天 - 媒体消息 - 拒绝 - 接受 - 呼叫已启动 - 传出音频通话 - 外出的视频通话 - 来电已拒绝 - 电话已接受 已加入 - 离开了电话 - 未应答的音频通话 - 未应答的视频通话 呼叫已结束 - 电话已取消 - 呼叫忙 打电话... - 没有找到被禁的成员 被禁的会员 - 姓名 - 范围 Unban - 选择群组类型 输入群组密码 - 创建 创建投票 问题 输入你的问题 - 选项 输入你的选项 - 添加新选项 - 查看会员 详情 - 通知 - 其他 - 帮助 - 报告问题 - 集团成员 - - 选择你的表情符号 - 受保护的组 在 Youtube 上查看 访问 - 表情符号 - 没有找到消息 - 线程 - 协作文档 - 协作白板 - 添加反应 - 找不到贴纸 - 在线程中回复 删除留言 编辑消息 - 周日 - 周一 - 周二 - 周三 - 周四 - 周五 - 周六 所有者 写信息 阻止的用户检索失败 @@ -198,22 +110,17 @@ 你想解除封锁 %1$s 吗 无法阻止 %1$s 请输入群组详细信息以继续 - 无法加入群组 你想把 %1$s 作为管理员吗 ⚠️ 从 %1$s 中删除 将 %1$s 添加到\” %2$s\” %1$s 已添加到\” %2$s\” %1$s 已从\” %2$s 中删除\” - 组成员被踢失败 你想从团体中离开吗? 删除群组 删除群组 - 组删除失败 无法删除 %1$s - 无法离开群组 加载更多 加载更多 %1$s 成员 - 无法获取组列表 密码 加入 不正确 @@ -225,13 +132,11 @@ 输入密码以加入 %1$s 没有被禁的会员 版主 - 无法检索版主列表。 你喜欢使 %1$s 成为主持人吗 只有管理员才能删除版主 更新组 输入群组图标 URL 组成功更新 - 组未更新 输入旧密码 输入新密码 群组警报 @@ -240,8 +145,6 @@ 你想把 %1$s 作为所有者吗 %1$s 现在是所有者 你不是该组的成员 (%1$s) - 所有者警报 - 在离开群组之前,请将团体所有权转移给其他成员 公共组 私人团体 密码保护组 @@ -249,15 +152,10 @@ 只有组所有者才能删除管理员。 %1$s 已从管理员权限中删除 无法更新群组成员 - > 管理员列表检索失败 - 无法创建群组 %1$s 上的操作失败 - 错误:无法加载组成员列表 - 无法获取禁止的会员名单 请从应用程序设置授予相机权限 请从应用程序设置授予存储权限 文件不存在 - 无法获取通话清单 你没打过任何电话 无法发起电话 @@ -288,7 +186,6 @@ 发送 隐私与支持 用户 - 不支持自定义消息 输入头像的 Url 输入用户名 更新用户 @@ -307,8 +204,6 @@ 在 %1$s 中线程 发送地点:%1$s 正在连接来电 - 阅读地点:%1$s - 交货地点:%1$s 导航 请允许位置权限。 发送音频文件 @@ -320,7 +215,6 @@ 已启用 GPS GPS 已禁用 选项 - 发送媒体消息 添加新选项 无法获得你的位置 已结束 @@ -329,7 +223,6 @@ 共享白板 分享 WriteBoard 共享了 WriteBoard - 你发送了 %1$s 你收到了 %1$s 发起电话 点按即可开始对话 @@ -343,7 +236,6 @@ 没有可用的翻译 分享了一个群组通话。 "📹 群组通话 " - 发起群组通话 您已建立群组通话。 投票成功 上载 @@ -353,9 +245,6 @@ 成功更新用户 “剩余的用户” 已加入用户 - 成功连接 - 进行中的连接 - 您已断开连接。 没有可用的互联网 您已被封锁 @@ -369,86 +258,43 @@ 民意测验“ id”缺失 您不是民意测验的创建者 - 请在调用与CometChat相关的任何其他方法之前,最好在应用程序类的onCreate()方法中调用CometChat.init()方法。 密码是受保护组的必填项 - 上限超过 %s 的上限 - 调用此方法之前,请先登录CometChat 请提供有效的GUID 请提供有效的 UID UID不能为空。请提供有效的UID UID 不能包含空格 请提供有效的 UID 出了些问题 - 不发起呼叫就无法取消呼叫 - 连接时出了点问题 - 呼叫会话不匹配。请检查会话ID - UID和GUID均未指定 请指定UID或GUID 需要为其获取消息的 没有互联网连接。请稍后重试 - 请求已在进行中 - 要使用“ fetchNext()”方法,需要使用“时间戳”或“ MessageId”或“ updatedAfter” - 身份验证令牌不能为空。请提供有效的身份验证令牌 该扩展名被禁用。请从CometChat仪表板启用扩展 - 提供的消息ID无效 请提供有效的消息ID - 只能编辑TextMessage或CustomMessage。请提供有效的消息 - 提供的列表为空。请提供有效清单 - 没有`setUpdatedAfter()`方法,不能使用`updatesOnly()`方法。 - 解析JSON时出错 - 注销时出错 - AppID不能为空。请指定一个有效的appID - 指定的限制必须为正数 - 未指定地区。请使用setRegion()方法在AppSettingsBuilder类中指定区域。 - AppSettings不能为null - ApiKey不能为null或为空。请提供有效的Api密钥 - 您输入的消息类型对于以下操作无效 - 讯息文字不能为空 - 文件对象不能为null或文件路径不存在 - 媒体消息URL设置为null或空白 - 自定义数据字段不能为null或为空 组名不能为null或为空 - 群组类型不能为null或为空 - 正在登录。请等待登录请求完成 - 消息不能为空。请传递有效的`BaseMessage`对象 - 组不能为空。请传递一个有效的`Group`对象 - 通话不能为空。请传递有效的`Call`对象 - 无效的通话类型。请提供有效的通话类型 - 无效的接收者类型。请提供有效的接收者类型 - 无效的sessionId类型。请提供有效的会话ID - 提供的活动不能为空。 - 提供的RelativeLayout不能为null - 提供的FCM令牌不能为null或为空。请提供有效的FCM令牌 - 提供的组类型不能为null或为空 - 通话正在进行中。请结束上一个通话以执行此操作 - 无法取消其他人发起的呼叫。请改为使用状态“已拒绝” - 为用户提供的名称无效。请提供一个有效的名字 - 用户对象不能为null。请提供有效的用户对象 - 组名不能为空。请提供有效的群组名称 - 时间戳记必须为正数。请提供有效的时间戳记 - 无效的类别。请提供有效的类别 - 空的图标。请提供有效的图标 - 空说明。请提供有效的说明 - 空元数据。请提供有效的元数据 - 无效的范围。请提供有效范围 - 无效的范围。请提供有效范围 - 无效的对话方式。请提供一个有效的对话值 - 无效的 conversationType。请提供一个有效的对话值 - 无效的媒体消息。请提供有效的文件对象或附件详细信息。 - 附件不能为空。请提供有效的附件详细信息 - 无效的文件名。请提供有效的文件名 - 无效的文件扩展名。请提供有效的文件扩展名 - 无效的文件Mime类型。请提供有效的文件哑剧类型 - 无效的文件URL。请提供有效的文件网址 - 找不到%s和对话类型%s的对话 - 找不到设置。 - 提供的功能不能为null或为空。请提供有效的功能 - 提供的扩展名不能为null或为空。 - 找不到提供的功能。 找不到提供的扩展名。 剩下 正在下载 建立小组 - 私下发送消息 + 私下发送消息 查看资料 - 删除对话 您要删除此对话吗? 删除对话 + 离线 + 新消息 + 新消息 + 发表 + + 投票 + 投票 + 衰退 + 回答 + 回复 + 回复 + 私下回复 + 选择用户 + 选择组 + 搜索用户 + 搜索组 + 被拒绝的语音电话 + 拒绝视频通话 + 拨出语音电话 + 传出视频通话 + 没有发现被禁止的成员 \ No newline at end of file diff --git a/uikit/src/main/res/values/attr.xml b/uikit/src/main/res/values/attr.xml index 7e46333..6cc34e7 100644 --- a/uikit/src/main/res/values/attr.xml +++ b/uikit/src/main/res/values/attr.xml @@ -7,10 +7,12 @@ - - + + + + diff --git a/uikit/src/main/res/values/color.xml b/uikit/src/main/res/values/color.xml index bb40063..32b3005 100644 --- a/uikit/src/main/res/values/color.xml +++ b/uikit/src/main/res/values/color.xml @@ -1,7 +1,7 @@ - #03A9F4 - #169CD8 + #3399FF + #808080 #2196F3 #000000 @@ -13,17 +13,12 @@ #40bdbdbd #E64CAF50 #eecc0000 - #B1AEAE - #979797 #ECECEC - #00BCD4 #FF9800 #8867C5 #0020F5 #43A047 - #C8E6C9 - #FFCDD2 #E53935 #B96B6B6B #C4C4C4 diff --git a/uikit/src/main/res/values/colors.xml b/uikit/src/main/res/values/colors.xml new file mode 100644 index 0000000..df40388 --- /dev/null +++ b/uikit/src/main/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #C4C4C4 + \ No newline at end of file diff --git a/uikit/src/main/res/values/dimen.xml b/uikit/src/main/res/values/dimen.xml index a2041c3..71c0d47 100644 --- a/uikit/src/main/res/values/dimen.xml +++ b/uikit/src/main/res/values/dimen.xml @@ -1,6 +1,6 @@ - 24dp + 12dp 16sp 14sp 12sp diff --git a/uikit/src/main/res/values/dimens.xml b/uikit/src/main/res/values/dimens.xml index acc236f..a6b3dae 100644 --- a/uikit/src/main/res/values/dimens.xml +++ b/uikit/src/main/res/values/dimens.xml @@ -1,5 +1,2 @@ - - 12 - 250dp - \ No newline at end of file + \ No newline at end of file diff --git a/uikit/src/main/res/values/strings.xml b/uikit/src/main/res/values/strings.xml index b6aad7c..5924819 100644 --- a/uikit/src/main/res/values/strings.xml +++ b/uikit/src/main/res/values/strings.xml @@ -64,22 +64,17 @@ Kindly, enter group details to proceed - Unable to join group Do you like to make %1$s as a Admin ⚠️ Remove from %1$s Add %1$s to \" %2$s \" %1$s is added to \" %2$s \" %1$s is removed from \" %2$s \" - Group Member Kicked Failed Would you like to leave from group ? Delete Group Delete the group - Group Deletion Failed Can\'t remove %1$s - Unable to leave group Load More Load more %1$s members - Unable to fetch Group List Password Joining Incorrect @@ -93,13 +88,11 @@ Enter Password to join %1$s No Banned Members Moderators - Unable to retrieve moderator list. Do you like to make %1$s as a Moderator Only Admin can remove moderator Update Group Enter Group Icon Url Group Successfully Updated - Group not updated Enter Old Password Enter new password Group Alert @@ -108,8 +101,6 @@ Do you like to make %1$s as a Owner %1$s is now Owner You are not a member of this group (%1$s) - Owner Alert - Please transfer group ownership to another member before leaving the group Public Group Private Group @@ -123,11 +114,7 @@ Only group owner can remove admin. is removed from admin privilege Unable to update Group Member - Admin list retrieval failed - Unable to create a group Operation failed on %1$s - Error : Not able to load group member list - Unable to fetch Banned Members List Please grant camera permission from app setting @@ -139,9 +126,14 @@ Audio Call Missed voice call Missed video call + Rejected voice call + Rejected video call + Outgoing voice call + Outgoing video call + Incoming Audio Call + Incoming Video Call - Unable to fetch Call List You have not made any calls Calling Unable to initiate call @@ -151,8 +143,6 @@ All Missed New Call - Incoming Audio Call - Incoming Video Call Missed Rejected Call is Ongoing @@ -186,14 +176,12 @@ Cancel Text Copied to clipboard Delete Message - Send Message Privacy & Security Add Forward Message Actions Preferences Online - Offline Reply Message Share message Copy Message @@ -238,8 +226,6 @@ Thread in %1$s Sent at : %1$s Connecting to call - Read At : %1$s - Delivered At : %1$s Navigate Please allow location permission. Send Audio Files @@ -251,7 +237,6 @@ GPS enabled GPS disabled Option - Sending Media Message Enter your option Enter your Question Question @@ -263,59 +248,28 @@ Shared a Whiteboard Share Document Shared a Document - You sent a %1$s You received a %1$s Initiate a call - Accept - Add Admin - Add Moderator - Add new option - Add Reaction - added successfully - ⚠️ You deleted this message Yesterday - back Ban Banned Successfully - Blocked Successfully - Create - %1$s is removed from admin privilege - View Members - Decline - Deleted Successfully + No Banned Members Found unblocked successfully You cannot forward message to more than 5 members - Sending.. - Audio - Image - Video - File - Call Accepted - Call Busy - Call Cancelled + 🎵 Audio + 📷 Photo + 📹 Video + 📁 File Call Ended - Call Initiated - Call Rejected 📃 Document 📍 Location - Custom Message not supported "📊 Polls " "💟 Sticker " 📝 Whiteboard - Delete & Exit Password Protected Group Private Group Public Group - Reply in Thread - No stickers found - Collaborative Document - Collaborative Whiteboard - Thread - No messages found - emoji - close Error - Group Members No Thread Messages initiated added @@ -324,13 +278,12 @@ joined Unban made - participant + Participant Translate Message No translation available - has shared a group call. - You\'ve created a group call. + has initiated a group call. + You\'ve initiated a group call. "📹 Group Call " - Start a Group Call Retry Uploading Voted Success @@ -339,9 +292,6 @@ Updated User Successfully "User Left " User Joined - Connected Successfully - Connection in Progress - You are disconnected. No Internet Available You have been blocked by "You've blocked " @@ -357,31 +307,39 @@ Poll does not exist The poll \"id\" is missing You are not the creator of poll - Please call the CometChat.init() method preferably in the onCreate() method of the application class before calling any other methods related to CometChat Password is mandatory for a protected group - Limit exceeded max limit - Please log in to CometChat before calling this method Please provide a valid GUID Please provide a valid UID UID cannot be blank. Please provide a valid UID UID cannot contain spaces. Please provide a valid UID Something went wrong, please try again - Message text cannot be empty Group Name cannot be null or empty - Message cannot be null. Please pass a valid `BaseMessage` object - Invalid name provided for the user. Please provide a valid name - Group name cannot be empty. Please provide a valid group name Downloading Creating Group - Send Message Privately + Send Message Privately View Profile - Delete this conversation Today In a thread Would you like to delete this conversation? Deleting Conversation is typing.. - - + Reply Privately + Replies + Reply + Answer + Decline + Votes + Vote + Read + Delivered + New Message + " New Messages" + offline + No Internet Available + Select User + Select Group + Search Users + Search Groups + Allow Background Location Permisssion diff --git a/uikit/src/main/res/values/styles.xml b/uikit/src/main/res/values/styles.xml index 201eb9f..f0566e6 100644 --- a/uikit/src/main/res/values/styles.xml +++ b/uikit/src/main/res/values/styles.xml @@ -12,11 +12,6 @@ @style/AppBottomSheetDialogTheme - -