Skip to content

Commit 8aa6e62

Browse files
Android UI Kit v2.1.7
1 parent 4481d95 commit 8aa6e62

File tree

21 files changed

+311
-30
lines changed

21 files changed

+311
-30
lines changed

uikit/src/main/java/adapter/MessageAdapter.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2046,6 +2046,17 @@ public boolean onLongClick(View view) {
20462046
if (CometChat.isExtensionEnabled("data-masking"))
20472047
message = Extensions.checkDataMasking(baseMessage);
20482048

2049+
if (baseMessage.getMetadata()!=null && baseMessage.getMetadata().has("values")) {
2050+
try {
2051+
if (Extensions.isMessageTranslated(baseMessage.getMetadata().getJSONObject("values"), ((TextMessage) baseMessage).getText())) {
2052+
String translatedMessage = Extensions.getTranslatedMessage(baseMessage);
2053+
message = message + "\n(" + translatedMessage + ")";
2054+
}
2055+
} catch (JSONException e) {
2056+
Toast.makeText(context, context.getString(R.string.no_translation_available), Toast.LENGTH_SHORT).show();
2057+
}
2058+
}
2059+
20492060
viewHolder.txtMessage.setText(message);
20502061
viewHolder.txtMessage.setTypeface(fontUtils.getTypeFace(FontUtils.robotoRegular));
20512062

uikit/src/main/java/adapter/ThreadAdapter.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import android.widget.ProgressBar;
2525
import android.widget.RelativeLayout;
2626
import android.widget.TextView;
27+
import android.widget.Toast;
2728

2829
import androidx.annotation.NonNull;
2930
import androidx.annotation.Nullable;
@@ -859,6 +860,17 @@ public void onClick(DialogInterface dialog, int which) {
859860
else if (CometChat.isExtensionEnabled("data-masking"))
860861
message = Extensions.checkDataMasking(baseMessage);
861862

863+
if (baseMessage.getMetadata()!=null && baseMessage.getMetadata().has("values")) {
864+
try {
865+
if (Extensions.isMessageTranslated(baseMessage.getMetadata().getJSONObject("values"), ((TextMessage) baseMessage).getText())) {
866+
String translatedMessage = Extensions.getTranslatedMessage(baseMessage);
867+
message = message + "\n(" + translatedMessage + ")";
868+
}
869+
} catch (JSONException e) {
870+
Toast.makeText(context, context.getString(R.string.no_translation_available), Toast.LENGTH_SHORT).show();
871+
}
872+
}
873+
862874
viewHolder.txtMessage.setText(message);
863875
viewHolder.txtMessage.setTypeface(fontUtils.getTypeFace(FontUtils.robotoRegular));
864876

uikit/src/main/java/com/cometchat/pro/uikit/Settings/UIKitSettings.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,4 +339,8 @@ public static void enableCollaborativeWhiteBoard(boolean enableWhiteBoardSharing
339339
public static void enableCollaborativeWriteBoard(boolean enableWriteBoardSharing) {
340340
UISettings.sendWriteBoard = enableWriteBoardSharing;
341341
}
342+
343+
public static void enableMessageTranslation(boolean enableMessageTranslation) {
344+
UISettings.allowMessageTranslation = enableMessageTranslation;
345+
}
342346
}

uikit/src/main/java/com/cometchat/pro/uikit/Settings/UISettings.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public UISettings() {}
5757
protected static boolean hideCallNotification = false;
5858
protected static boolean liveReaction = true;
5959
protected static boolean allowReactionOnMessage = true;
60+
protected static boolean allowMessageTranslation = true;
6061
protected static int emailColor = R.color.primaryTextColor;
6162
protected static int phoneColor = R.color.purple;
6263
protected static int urlColor = R.color.dark_blue;
@@ -256,4 +257,6 @@ public static boolean isWhiteBoardVisible() {
256257
public static boolean isWriteBoardVisible() {
257258
return sendWriteBoard;
258259
}
260+
261+
public static boolean isTranslationAllowed() { return allowMessageTranslation; }
259262
}

uikit/src/main/java/screen/messagelist/CometChatMessageScreen.java

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
import java.util.ArrayList;
100100
import java.util.HashMap;
101101
import java.util.List;
102+
import java.util.Locale;
102103
import java.util.Timer;
103104
import java.util.TimerTask;
104105

@@ -2303,6 +2304,7 @@ public void setLongMessageClick(List<BaseMessage> baseMessagesList) {
23032304
boolean deleteVisible = UISettings.isEnableDeleteMessage();
23042305
boolean forwardVisible = UISettings.isEnableShareCopyForward();
23052306
boolean reactionVisible = UISettings.isReactionVisible();
2307+
boolean translateVisible = UISettings.isTranslationAllowed();
23062308
List<BaseMessage> textMessageList = new ArrayList<>();
23072309
List<BaseMessage> mediaMessageList = new ArrayList<>();
23082310
List<BaseMessage> locationMessageList = new ArrayList<>();
@@ -2332,6 +2334,7 @@ public void setLongMessageClick(List<BaseMessage> baseMessagesList) {
23322334
}
23332335
}
23342336
if (textMessageList.size() == 1) {
2337+
translateVisible = UISettings.isTranslationAllowed();
23352338
BaseMessage basemessage = textMessageList.get(0);
23362339
if (basemessage != null && basemessage.getSender() != null) {
23372340
if (!(basemessage instanceof Action) && basemessage.getDeletedAt() == 0) {
@@ -2356,6 +2359,7 @@ public void setLongMessageClick(List<BaseMessage> baseMessagesList) {
23562359
}
23572360

23582361
if (mediaMessageList.size() == 1) {
2362+
translateVisible = false;
23592363
BaseMessage basemessage = mediaMessageList.get(0);
23602364
if (basemessage != null && basemessage.getSender() != null) {
23612365
if (!(basemessage instanceof Action) && basemessage.getDeletedAt() == 0) {
@@ -2380,6 +2384,7 @@ public void setLongMessageClick(List<BaseMessage> baseMessagesList) {
23802384
}
23812385
}
23822386
if (locationMessageList.size() == 1){
2387+
translateVisible = false;
23832388
BaseMessage basemessage = locationMessageList.get(0);
23842389
if (basemessage != null && basemessage.getSender() != null) {
23852390
if (!(basemessage instanceof Action) && basemessage.getDeletedAt() == 0) {
@@ -2408,6 +2413,7 @@ public void setLongMessageClick(List<BaseMessage> baseMessagesList) {
24082413
}
24092414
if (pollsMessageList.size() == 1){
24102415
forwardVisible = false;
2416+
translateVisible = false;
24112417
copyVisible = false;
24122418
editVisible = false;
24132419
shareVisible = false;
@@ -2436,8 +2442,9 @@ public void setLongMessageClick(List<BaseMessage> baseMessagesList) {
24362442
forwardVisible = false;
24372443
copyVisible = false;
24382444
editVisible = false;
2445+
translateVisible = false;
24392446
shareVisible = false;
2440-
replyVisible = UISettings.isStickerVisible();
2447+
replyVisible = UISettings.isEnableReplyToMessage();
24412448
BaseMessage basemessage = stickerMessageList.get(0);
24422449
if (basemessage!=null && basemessage.getSender()!=null) {
24432450
if (basemessage.getDeletedAt() == 0) {
@@ -2461,9 +2468,10 @@ public void setLongMessageClick(List<BaseMessage> baseMessagesList) {
24612468
if (whiteBoardMessageList.size()==1) {
24622469
forwardVisible = false;
24632470
copyVisible = false;
2471+
translateVisible = false;
24642472
editVisible = false;
24652473
shareVisible = false;
2466-
replyVisible = UISettings.isStickerVisible();
2474+
replyVisible = UISettings.isEnableReplyToMessage();
24672475
BaseMessage basemessage = whiteBoardMessageList.get(0);
24682476
if (basemessage!=null && basemessage.getSender()!=null) {
24692477
if (basemessage.getDeletedAt() == 0) {
@@ -2489,8 +2497,9 @@ public void setLongMessageClick(List<BaseMessage> baseMessagesList) {
24892497
forwardVisible = false;
24902498
copyVisible = false;
24912499
editVisible = false;
2500+
translateVisible = false;
24922501
shareVisible = false;
2493-
replyVisible = UISettings.isStickerVisible();
2502+
replyVisible = UISettings.isEnableReplyToMessage();
24942503
BaseMessage basemessage = writeBoardMessageList.get(0);
24952504
if (basemessage!=null && basemessage.getSender()!=null) {
24962505
if (basemessage.getDeletedAt() == 0) {
@@ -2522,6 +2531,7 @@ public void setLongMessageClick(List<BaseMessage> baseMessagesList) {
25222531
bundle.putBoolean("deleteVisible",deleteVisible);
25232532
bundle.putBoolean("replyVisible",replyVisible);
25242533
bundle.putBoolean("forwardVisible",forwardVisible);
2534+
bundle.putBoolean("translateVisible",translateVisible);
25252535
if (CometChat.isExtensionEnabled("reactions"))
25262536
bundle.putBoolean("isReactionVisible",reactionVisible);
25272537
if (baseMessage.getReceiverType().equals(CometChatConstants.RECEIVER_TYPE_GROUP) &&
@@ -2658,6 +2668,50 @@ public void onEmojiClicked(Reaction emojicon) {
26582668
sendReaction(reaction);
26592669
}
26602670
}
2671+
2672+
@Override
2673+
public void onTranslateMessageClick() {
2674+
try {
2675+
String localeLanguage = Locale.getDefault().getLanguage();
2676+
JSONObject body = new JSONObject();
2677+
JSONArray languages = new JSONArray();
2678+
languages.put(localeLanguage);
2679+
body.put("msgId", baseMessage.getId());
2680+
body.put("languages", languages);
2681+
body.put("text", ((TextMessage)baseMessage).getText());
2682+
2683+
CometChat.callExtension("message-translation", "POST", "/v2/translate", body,
2684+
new CometChat.CallbackListener<JSONObject>() {
2685+
@Override
2686+
public void onSuccess(JSONObject jsonObject) {
2687+
if (Extensions.isMessageTranslated(jsonObject,((TextMessage)baseMessage).getText())) {
2688+
if (baseMessage.getMetadata()!=null) {
2689+
JSONObject meta = baseMessage.getMetadata();
2690+
try {
2691+
meta.accumulate("values",jsonObject);
2692+
baseMessage.setMetadata(meta);
2693+
updateMessage(baseMessage);
2694+
} catch (JSONException e) {
2695+
e.printStackTrace();
2696+
}
2697+
} else {
2698+
baseMessage.setMetadata(jsonObject);
2699+
updateMessage(baseMessage);
2700+
}
2701+
} else {
2702+
Snackbar.make(rvChatListView,context.getString(R.string.no_translation_available),Snackbar.LENGTH_LONG).show();
2703+
}
2704+
}
2705+
2706+
@Override
2707+
public void onError(CometChatException e) {
2708+
Toast.makeText(context,e.getCode(),Toast.LENGTH_LONG).show();
2709+
}
2710+
});
2711+
} catch (Exception e) {
2712+
Toast.makeText(context,e.getMessage(),Toast.LENGTH_LONG).show();
2713+
}
2714+
}
26612715
});
26622716
}
26632717

uikit/src/main/java/screen/messagelist/MessageActionFragment.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public class MessageActionFragment extends BottomSheetDialogFragment {
3636
private TextView copyMessage;
3737
private TextView messageInfo;
3838
private TextView shareMessage;
39+
private TextView translateMessage;
3940

4041

4142
private LinearLayout reactionsList;
@@ -50,6 +51,7 @@ public class MessageActionFragment extends BottomSheetDialogFragment {
5051
private boolean isReplyVisible;
5152
private boolean isMessageInfoVisible;
5253
private boolean isReactionsVisible;
54+
private boolean isTranslateVisible;
5355

5456
private MessageActionListener messageActionListener;
5557

@@ -74,6 +76,7 @@ private void fetchArguments() {
7476
isShareVisible = getArguments().getBoolean("shareVisible");
7577
isMessageInfoVisible = getArguments().getBoolean("messageInfoVisible");
7678
isReactionsVisible = getArguments().getBoolean("isReactionVisible");
79+
isTranslateVisible = getArguments().getBoolean("translateVisible");
7780
type = getArguments().getString("type");
7881
}
7982
}
@@ -135,25 +138,7 @@ public void onClick(View view) {
135138
}
136139
});
137140

138-
// reactionsList.addOnItemTouchListener(new RecyclerTouchListener(getContext(), reactionsList, new ClickListener() {
139-
// @Override
140-
// public void onClick(View var1, int var2) {
141-
// Reaction reaction = (Reaction)var1.getTag(R.string.reaction);
142-
// if (messageActionListener != null)
143-
// messageActionListener.onReactionClick(reaction);
144-
// dismiss();
145-
// }
146-
// }));
147-
// showReactionDialog = view.findViewById(R.id.show_reaction_dialog);
148-
// showReactionDialog.setVisibility(View.GONE);
149-
// showReactionDialog.setOnClickListener(new View.OnClickListener() {
150-
// @Override
151-
// public void onClick(View view) {
152-
// if (messageActionListener!=null)
153-
// messageActionListener.onReactionClick(new Reaction("add_emoji",0));
154-
// dismiss();
155-
// }
156-
// });
141+
translateMessage = view.findViewById(R.id.translate_message);
157142
threadMessage = view.findViewById(R.id.start_thread);
158143
editMessage = view.findViewById(R.id.edit_message);
159144
replyMessage = view.findViewById(R.id.reply_message);
@@ -163,6 +148,11 @@ public void onClick(View view) {
163148
shareMessage = view.findViewById(R.id.share_message);
164149
messageInfo = view.findViewById(R.id.message_info);
165150

151+
if (isTranslateVisible)
152+
translateMessage.setVisibility(View.VISIBLE);
153+
else
154+
translateMessage.setVisibility(View.GONE);
155+
166156
if (isReactionsVisible)
167157
reactionsList.setVisibility(View.VISIBLE);
168158
else
@@ -204,6 +194,14 @@ public void onClick(View view) {
204194
threadMessage.setVisibility(View.GONE);
205195
}
206196

197+
translateMessage.setOnClickListener(new View.OnClickListener() {
198+
@Override
199+
public void onClick(View view) {
200+
if (messageActionListener!=null)
201+
messageActionListener.onTranslateMessageClick();
202+
dismiss();
203+
}
204+
});
207205
threadMessage.setOnClickListener(new View.OnClickListener() {
208206
@Override
209207
public void onClick(View v) {
@@ -289,6 +287,8 @@ public interface MessageActionListener {
289287
void onMessageInfoClick();
290288

291289
void onReactionClick(Reaction reaction);
290+
291+
void onTranslateMessageClick();
292292
}
293293

294294
@Override

0 commit comments

Comments
 (0)