use of org.telegram.ui.PaymentFormActivity in project Telegram-FOSS by Telegram-FOSS-Team.
the class SendMessagesHelper method sendCallback.
public void sendCallback(final boolean cache, final MessageObject messageObject, final TLRPC.KeyboardButton button, TLRPC.InputCheckPasswordSRP srp, TwoStepVerificationActivity passwordFragment, final ChatActivity parentFragment) {
if (messageObject == null || button == null || parentFragment == null) {
return;
}
final boolean cacheFinal;
int type;
if (button instanceof TLRPC.TL_keyboardButtonUrlAuth) {
cacheFinal = false;
type = 3;
} else if (button instanceof TLRPC.TL_keyboardButtonGame) {
cacheFinal = false;
type = 1;
} else {
cacheFinal = cache;
if (button instanceof TLRPC.TL_keyboardButtonBuy) {
type = 2;
} else {
type = 0;
}
}
final String key = messageObject.getDialogId() + "_" + messageObject.getId() + "_" + Utilities.bytesToHex(button.data) + "_" + type;
waitingForCallback.put(key, true);
TLObject[] request = new TLObject[1];
RequestDelegate requestDelegate = (response, error) -> AndroidUtilities.runOnUIThread(() -> {
waitingForCallback.remove(key);
if (cacheFinal && response == null) {
sendCallback(false, messageObject, button, parentFragment);
} else if (response != null) {
if (passwordFragment != null) {
passwordFragment.needHideProgress();
passwordFragment.finishFragment();
}
if (button instanceof TLRPC.TL_keyboardButtonUrlAuth) {
if (response instanceof TLRPC.TL_urlAuthResultRequest) {
TLRPC.TL_urlAuthResultRequest res = (TLRPC.TL_urlAuthResultRequest) response;
parentFragment.showRequestUrlAlert(res, (TLRPC.TL_messages_requestUrlAuth) request[0], button.url, false);
} else if (response instanceof TLRPC.TL_urlAuthResultAccepted) {
TLRPC.TL_urlAuthResultAccepted res = (TLRPC.TL_urlAuthResultAccepted) response;
AlertsCreator.showOpenUrlAlert(parentFragment, res.url, false, false);
} else if (response instanceof TLRPC.TL_urlAuthResultDefault) {
TLRPC.TL_urlAuthResultDefault res = (TLRPC.TL_urlAuthResultDefault) response;
AlertsCreator.showOpenUrlAlert(parentFragment, button.url, false, true);
}
} else if (button instanceof TLRPC.TL_keyboardButtonBuy) {
if (response instanceof TLRPC.TL_payments_paymentForm) {
final TLRPC.TL_payments_paymentForm form = (TLRPC.TL_payments_paymentForm) response;
getMessagesController().putUsers(form.users, false);
parentFragment.presentFragment(new PaymentFormActivity(form, messageObject, parentFragment));
} else if (response instanceof TLRPC.TL_payments_paymentReceipt) {
parentFragment.presentFragment(new PaymentFormActivity((TLRPC.TL_payments_paymentReceipt) response));
}
} else {
TLRPC.TL_messages_botCallbackAnswer res = (TLRPC.TL_messages_botCallbackAnswer) response;
if (!cacheFinal && res.cache_time != 0 && !button.requires_password) {
getMessagesStorage().saveBotCache(key, res);
}
if (res.message != null) {
long uid = messageObject.getFromChatId();
if (messageObject.messageOwner.via_bot_id != 0) {
uid = messageObject.messageOwner.via_bot_id;
}
String name = null;
if (uid > 0) {
TLRPC.User user = getMessagesController().getUser(uid);
if (user != null) {
name = ContactsController.formatName(user.first_name, user.last_name);
}
} else {
TLRPC.Chat chat = getMessagesController().getChat(-uid);
if (chat != null) {
name = chat.title;
}
}
if (name == null) {
name = "bot";
}
if (res.alert) {
if (parentFragment.getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(parentFragment.getParentActivity());
builder.setTitle(name);
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
builder.setMessage(res.message);
parentFragment.showDialog(builder.create());
} else {
parentFragment.showAlert(name, res.message);
}
} else if (res.url != null) {
if (parentFragment.getParentActivity() == null) {
return;
}
long uid = messageObject.getFromChatId();
if (messageObject.messageOwner.via_bot_id != 0) {
uid = messageObject.messageOwner.via_bot_id;
}
TLRPC.User user = getMessagesController().getUser(uid);
boolean verified = user != null && user.verified;
if (button instanceof TLRPC.TL_keyboardButtonGame) {
TLRPC.TL_game game = messageObject.messageOwner.media instanceof TLRPC.TL_messageMediaGame ? messageObject.messageOwner.media.game : null;
if (game == null) {
return;
}
parentFragment.showOpenGameAlert(game, messageObject, res.url, !verified && MessagesController.getNotificationsSettings(currentAccount).getBoolean("askgame_" + uid, true), uid);
} else {
AlertsCreator.showOpenUrlAlert(parentFragment, res.url, false, false);
}
}
}
} else if (error != null) {
if (parentFragment.getParentActivity() == null) {
return;
}
if ("PASSWORD_HASH_INVALID".equals(error.text)) {
if (srp == null) {
AlertDialog.Builder builder = new AlertDialog.Builder(parentFragment.getParentActivity());
builder.setTitle(LocaleController.getString("BotOwnershipTransfer", R.string.BotOwnershipTransfer));
builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("BotOwnershipTransferReadyAlertText", R.string.BotOwnershipTransferReadyAlertText)));
builder.setPositiveButton(LocaleController.getString("BotOwnershipTransferChangeOwner", R.string.BotOwnershipTransferChangeOwner), (dialogInterface, i) -> {
TwoStepVerificationActivity fragment = new TwoStepVerificationActivity();
fragment.setDelegate(password -> sendCallback(cache, messageObject, button, password, fragment, parentFragment));
parentFragment.presentFragment(fragment);
});
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
parentFragment.showDialog(builder.create());
}
} else if ("PASSWORD_MISSING".equals(error.text) || error.text.startsWith("PASSWORD_TOO_FRESH_") || error.text.startsWith("SESSION_TOO_FRESH_")) {
if (passwordFragment != null) {
passwordFragment.needHideProgress();
}
AlertDialog.Builder builder = new AlertDialog.Builder(parentFragment.getParentActivity());
builder.setTitle(LocaleController.getString("EditAdminTransferAlertTitle", R.string.EditAdminTransferAlertTitle));
LinearLayout linearLayout = new LinearLayout(parentFragment.getParentActivity());
linearLayout.setPadding(AndroidUtilities.dp(24), AndroidUtilities.dp(2), AndroidUtilities.dp(24), 0);
linearLayout.setOrientation(LinearLayout.VERTICAL);
builder.setView(linearLayout);
TextView messageTextView = new TextView(parentFragment.getParentActivity());
messageTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlack));
messageTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
messageTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP);
messageTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("BotOwnershipTransferAlertText", R.string.BotOwnershipTransferAlertText)));
linearLayout.addView(messageTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
LinearLayout linearLayout2 = new LinearLayout(parentFragment.getParentActivity());
linearLayout2.setOrientation(LinearLayout.HORIZONTAL);
linearLayout.addView(linearLayout2, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 11, 0, 0));
ImageView dotImageView = new ImageView(parentFragment.getParentActivity());
dotImageView.setImageResource(R.drawable.list_circle);
dotImageView.setPadding(LocaleController.isRTL ? AndroidUtilities.dp(11) : 0, AndroidUtilities.dp(9), LocaleController.isRTL ? 0 : AndroidUtilities.dp(11), 0);
dotImageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_dialogTextBlack), PorterDuff.Mode.MULTIPLY));
messageTextView = new TextView(parentFragment.getParentActivity());
messageTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlack));
messageTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
messageTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP);
messageTextView.setText(AndroidUtilities.replaceTags(LocaleController.getString("EditAdminTransferAlertText1", R.string.EditAdminTransferAlertText1)));
if (LocaleController.isRTL) {
linearLayout2.addView(messageTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
linearLayout2.addView(dotImageView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.RIGHT));
} else {
linearLayout2.addView(dotImageView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT));
linearLayout2.addView(messageTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
}
linearLayout2 = new LinearLayout(parentFragment.getParentActivity());
linearLayout2.setOrientation(LinearLayout.HORIZONTAL);
linearLayout.addView(linearLayout2, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 11, 0, 0));
dotImageView = new ImageView(parentFragment.getParentActivity());
dotImageView.setImageResource(R.drawable.list_circle);
dotImageView.setPadding(LocaleController.isRTL ? AndroidUtilities.dp(11) : 0, AndroidUtilities.dp(9), LocaleController.isRTL ? 0 : AndroidUtilities.dp(11), 0);
dotImageView.setColorFilter(new PorterDuffColorFilter(Theme.getColor(Theme.key_dialogTextBlack), PorterDuff.Mode.MULTIPLY));
messageTextView = new TextView(parentFragment.getParentActivity());
messageTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlack));
messageTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
messageTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP);
messageTextView.setText(AndroidUtilities.replaceTags(LocaleController.getString("EditAdminTransferAlertText2", R.string.EditAdminTransferAlertText2)));
if (LocaleController.isRTL) {
linearLayout2.addView(messageTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
linearLayout2.addView(dotImageView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.RIGHT));
} else {
linearLayout2.addView(dotImageView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT));
linearLayout2.addView(messageTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
}
if ("PASSWORD_MISSING".equals(error.text)) {
builder.setPositiveButton(LocaleController.getString("EditAdminTransferSetPassword", R.string.EditAdminTransferSetPassword), (dialogInterface, i) -> parentFragment.presentFragment(new TwoStepVerificationSetupActivity(TwoStepVerificationSetupActivity.TYPE_INTRO, null)));
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
} else {
messageTextView = new TextView(parentFragment.getParentActivity());
messageTextView.setTextColor(Theme.getColor(Theme.key_dialogTextBlack));
messageTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
messageTextView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP);
messageTextView.setText(LocaleController.getString("EditAdminTransferAlertText3", R.string.EditAdminTransferAlertText3));
linearLayout.addView(messageTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, 0, 11, 0, 0));
builder.setNegativeButton(LocaleController.getString("OK", R.string.OK), null);
}
parentFragment.showDialog(builder.create());
} else if ("SRP_ID_INVALID".equals(error.text)) {
TLRPC.TL_account_getPassword getPasswordReq = new TLRPC.TL_account_getPassword();
ConnectionsManager.getInstance(currentAccount).sendRequest(getPasswordReq, (response2, error2) -> AndroidUtilities.runOnUIThread(() -> {
if (error2 == null) {
TLRPC.TL_account_password currentPassword = (TLRPC.TL_account_password) response2;
passwordFragment.setCurrentPasswordInfo(null, currentPassword);
TwoStepVerificationActivity.initPasswordNewAlgo(currentPassword);
sendCallback(cache, messageObject, button, passwordFragment.getNewSrpPassword(), passwordFragment, parentFragment);
}
}), ConnectionsManager.RequestFlagWithoutLogin);
} else {
if (passwordFragment != null) {
passwordFragment.needHideProgress();
passwordFragment.finishFragment();
}
}
}
});
if (cacheFinal) {
getMessagesStorage().getBotCache(key, requestDelegate);
} else {
if (button instanceof TLRPC.TL_keyboardButtonUrlAuth) {
TLRPC.TL_messages_requestUrlAuth req = new TLRPC.TL_messages_requestUrlAuth();
req.peer = getMessagesController().getInputPeer(messageObject.getDialogId());
req.msg_id = messageObject.getId();
req.button_id = button.button_id;
req.flags |= 2;
request[0] = req;
getConnectionsManager().sendRequest(req, requestDelegate, ConnectionsManager.RequestFlagFailOnServerErrors);
} else if (button instanceof TLRPC.TL_keyboardButtonBuy) {
if ((messageObject.messageOwner.media.flags & 4) == 0) {
TLRPC.TL_payments_getPaymentForm req = new TLRPC.TL_payments_getPaymentForm();
req.msg_id = messageObject.getId();
req.peer = getMessagesController().getInputPeer(messageObject.messageOwner.peer_id);
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("bg_color", Theme.getColor(Theme.key_windowBackgroundWhite));
jsonObject.put("text_color", Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
jsonObject.put("hint_color", Theme.getColor(Theme.key_windowBackgroundWhiteHintText));
jsonObject.put("link_color", Theme.getColor(Theme.key_windowBackgroundWhiteLinkText));
jsonObject.put("button_color", Theme.getColor(Theme.key_featuredStickers_addButton));
jsonObject.put("button_text_color", Theme.getColor(Theme.key_featuredStickers_buttonText));
req.theme_params = new TLRPC.TL_dataJSON();
req.theme_params.data = jsonObject.toString();
req.flags |= 1;
} catch (Exception e) {
FileLog.e(e);
}
getConnectionsManager().sendRequest(req, requestDelegate, ConnectionsManager.RequestFlagFailOnServerErrors);
} else {
TLRPC.TL_payments_getPaymentReceipt req = new TLRPC.TL_payments_getPaymentReceipt();
req.msg_id = messageObject.messageOwner.media.receipt_msg_id;
req.peer = getMessagesController().getInputPeer(messageObject.messageOwner.peer_id);
getConnectionsManager().sendRequest(req, requestDelegate, ConnectionsManager.RequestFlagFailOnServerErrors);
}
} else {
TLRPC.TL_messages_getBotCallbackAnswer req = new TLRPC.TL_messages_getBotCallbackAnswer();
req.peer = getMessagesController().getInputPeer(messageObject.getDialogId());
req.msg_id = messageObject.getId();
req.game = button instanceof TLRPC.TL_keyboardButtonGame;
if (button.requires_password) {
req.password = req.password = srp != null ? srp : new TLRPC.TL_inputCheckPasswordEmpty();
;
req.flags |= 4;
}
if (button.data != null) {
req.flags |= 1;
req.data = button.data;
}
getConnectionsManager().sendRequest(req, requestDelegate, ConnectionsManager.RequestFlagFailOnServerErrors);
}
}
}
use of org.telegram.ui.PaymentFormActivity in project Telegram-FOSS by Telegram-FOSS-Team.
the class UndoView method showWithAction.
public void showWithAction(ArrayList<Long> dialogIds, int action, Object infoObject, Object infoObject2, Runnable actionRunnable, Runnable cancelRunnable) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && currentAction == ACTION_MESSAGE_COPIED || currentAction == ACTION_USERNAME_COPIED || currentAction == ACTION_HASHTAG_COPIED || currentAction == ACTION_TEXT_COPIED || currentAction == ACTION_LINK_COPIED || currentAction == ACTION_PHONE_COPIED || currentAction == ACTION_EMAIL_COPIED || currentAction == ACTION_VOIP_LINK_COPIED) {
return;
}
if (currentActionRunnable != null) {
currentActionRunnable.run();
}
isShown = true;
currentActionRunnable = actionRunnable;
currentCancelRunnable = cancelRunnable;
currentDialogIds = dialogIds;
long did = dialogIds.get(0);
currentAction = action;
timeLeft = 5000;
currentInfoObject = infoObject;
lastUpdateTime = SystemClock.elapsedRealtime();
undoTextView.setText(LocaleController.getString("Undo", R.string.Undo).toUpperCase());
undoImageView.setVisibility(VISIBLE);
leftImageView.setPadding(0, 0, 0, 0);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
avatarImageView.setVisibility(GONE);
infoTextView.setGravity(Gravity.LEFT | Gravity.TOP);
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) infoTextView.getLayoutParams();
layoutParams.height = LayoutHelper.WRAP_CONTENT;
layoutParams.topMargin = AndroidUtilities.dp(13);
layoutParams.bottomMargin = 0;
leftImageView.setScaleType(ImageView.ScaleType.CENTER);
FrameLayout.LayoutParams layoutParams2 = (FrameLayout.LayoutParams) leftImageView.getLayoutParams();
layoutParams2.gravity = Gravity.CENTER_VERTICAL | Gravity.LEFT;
layoutParams2.topMargin = layoutParams2.bottomMargin = 0;
layoutParams2.leftMargin = AndroidUtilities.dp(3);
layoutParams2.width = AndroidUtilities.dp(54);
layoutParams2.height = LayoutHelper.WRAP_CONTENT;
infoTextView.setMinHeight(0);
boolean infoOnly = false;
boolean reversedPlay = false;
int reversedPlayEndFrame = 0;
if (actionRunnable == null && cancelRunnable == null) {
setOnClickListener(view -> hide(false, 1));
setOnTouchListener(null);
} else {
setOnClickListener(null);
setOnTouchListener((v, event) -> true);
}
infoTextView.setMovementMethod(null);
if (isTooltipAction()) {
CharSequence infoText;
String subInfoText;
int icon;
int size = 36;
boolean iconIsDrawable = false;
if (action == ACTION_REPORT_SENT) {
subinfoTextView.setSingleLine(false);
infoText = LocaleController.getString("ReportChatSent", R.string.ReportChatSent);
subInfoText = LocaleController.formatString("ReportSentInfo", R.string.ReportSentInfo);
icon = R.raw.ic_admin;
timeLeft = 4000;
} else if (action == ACTION_VOIP_INVITED) {
TLRPC.User user = (TLRPC.User) infoObject;
TLRPC.Chat chat = (TLRPC.Chat) infoObject2;
if (ChatObject.isChannelOrGiga(chat)) {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipChannelInvitedUser", R.string.VoipChannelInvitedUser, UserObject.getFirstName(user)));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipGroupInvitedUser", R.string.VoipGroupInvitedUser, UserObject.getFirstName(user)));
}
subInfoText = null;
icon = 0;
AvatarDrawable avatarDrawable = new AvatarDrawable();
avatarDrawable.setTextSize(AndroidUtilities.dp(12));
avatarDrawable.setInfo(user);
avatarImageView.setForUserOrChat(user, avatarDrawable);
avatarImageView.setVisibility(VISIBLE);
timeLeft = 3000;
} else if (action == ACTION_VOIP_USER_JOINED) {
TLRPC.Chat currentChat = (TLRPC.Chat) infoObject2;
if (infoObject instanceof TLRPC.User) {
TLRPC.User user = (TLRPC.User) infoObject;
if (ChatObject.isChannelOrGiga(currentChat)) {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipChannelUserJoined", R.string.VoipChannelUserJoined, UserObject.getFirstName(user)));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipChatUserJoined", R.string.VoipChatUserJoined, UserObject.getFirstName(user)));
}
} else {
TLRPC.Chat chat = (TLRPC.Chat) infoObject;
if (ChatObject.isChannelOrGiga(currentChat)) {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipChannelChatJoined", R.string.VoipChannelChatJoined, chat.title));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipChatChatJoined", R.string.VoipChatChatJoined, chat.title));
}
}
subInfoText = null;
icon = 0;
AvatarDrawable avatarDrawable = new AvatarDrawable();
avatarDrawable.setTextSize(AndroidUtilities.dp(12));
avatarDrawable.setInfo((TLObject) infoObject);
avatarImageView.setForUserOrChat((TLObject) infoObject, avatarDrawable);
avatarImageView.setVisibility(VISIBLE);
timeLeft = 3000;
} else if (action == ACTION_VOIP_USER_CHANGED) {
AvatarDrawable avatarDrawable = new AvatarDrawable();
avatarDrawable.setTextSize(AndroidUtilities.dp(12));
String name;
if (infoObject instanceof TLRPC.User) {
TLRPC.User user = (TLRPC.User) infoObject;
avatarDrawable.setInfo(user);
avatarImageView.setForUserOrChat(user, avatarDrawable);
name = ContactsController.formatName(user.first_name, user.last_name);
} else {
TLRPC.Chat chat = (TLRPC.Chat) infoObject;
avatarDrawable.setInfo(chat);
avatarImageView.setForUserOrChat(chat, avatarDrawable);
name = chat.title;
}
TLRPC.Chat currentChat = (TLRPC.Chat) infoObject2;
if (ChatObject.isChannelOrGiga(currentChat)) {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipChannelUserChanged", R.string.VoipChannelUserChanged, name));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipGroupUserChanged", R.string.VoipGroupUserChanged, name));
}
subInfoText = null;
icon = 0;
avatarImageView.setVisibility(VISIBLE);
timeLeft = 3000;
} else if (action == ACTION_VOIP_LINK_COPIED) {
infoText = LocaleController.getString("VoipGroupCopyInviteLinkCopied", R.string.VoipGroupCopyInviteLinkCopied);
subInfoText = null;
icon = R.raw.voip_invite;
timeLeft = 3000;
} else if (action == ACTION_PAYMENT_SUCCESS) {
infoText = (CharSequence) infoObject;
subInfoText = null;
icon = R.raw.payment_success;
timeLeft = 5000;
if (parentFragment != null && infoObject2 instanceof TLRPC.Message) {
TLRPC.Message message = (TLRPC.Message) infoObject2;
setOnTouchListener(null);
infoTextView.setMovementMethod(null);
setOnClickListener(v -> {
hide(true, 1);
TLRPC.TL_payments_getPaymentReceipt req = new TLRPC.TL_payments_getPaymentReceipt();
req.msg_id = message.id;
req.peer = parentFragment.getMessagesController().getInputPeer(message.peer_id);
parentFragment.getConnectionsManager().sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
if (response instanceof TLRPC.TL_payments_paymentReceipt) {
parentFragment.presentFragment(new PaymentFormActivity((TLRPC.TL_payments_paymentReceipt) response));
}
}), ConnectionsManager.RequestFlagFailOnServerErrors);
});
}
} else if (action == ACTION_VOIP_MUTED) {
String name;
if (infoObject instanceof TLRPC.User) {
TLRPC.User user = (TLRPC.User) infoObject;
name = UserObject.getFirstName(user);
} else {
TLRPC.Chat chat = (TLRPC.Chat) infoObject;
name = chat.title;
}
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipGroupUserCantNowSpeak", R.string.VoipGroupUserCantNowSpeak, name));
subInfoText = null;
icon = R.raw.voip_muted;
timeLeft = 3000;
} else if (action == ACTION_VOIP_MUTED_FOR_YOU) {
String name;
if (infoObject instanceof TLRPC.User) {
TLRPC.User user = (TLRPC.User) infoObject;
name = UserObject.getFirstName(user);
} else if (infoObject instanceof TLRPC.Chat) {
TLRPC.Chat chat = (TLRPC.Chat) infoObject;
name = chat.title;
} else {
name = "";
}
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipGroupUserCantNowSpeakForYou", R.string.VoipGroupUserCantNowSpeakForYou, name));
subInfoText = null;
icon = R.raw.voip_muted;
timeLeft = 3000;
} else if (action == ACTION_VOIP_UNMUTED) {
String name;
if (infoObject instanceof TLRPC.User) {
TLRPC.User user = (TLRPC.User) infoObject;
name = UserObject.getFirstName(user);
} else {
TLRPC.Chat chat = (TLRPC.Chat) infoObject;
name = chat.title;
}
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipGroupUserCanNowSpeak", R.string.VoipGroupUserCanNowSpeak, name));
subInfoText = null;
icon = R.raw.voip_unmuted;
timeLeft = 3000;
} else if (action == ACTION_VOIP_CAN_NOW_SPEAK) {
if (infoObject instanceof TLRPC.Chat) {
TLRPC.Chat chat = (TLRPC.Chat) infoObject;
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipGroupYouCanNowSpeakIn", R.string.VoipGroupYouCanNowSpeakIn, chat.title));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.getString("VoipGroupYouCanNowSpeak", R.string.VoipGroupYouCanNowSpeak));
}
subInfoText = null;
icon = R.raw.voip_allow_talk;
timeLeft = 3000;
} else if (action == ACTION_VOIP_SOUND_MUTED) {
TLRPC.Chat chat = (TLRPC.Chat) infoObject;
if (ChatObject.isChannelOrGiga(chat)) {
infoText = AndroidUtilities.replaceTags(LocaleController.getString("VoipChannelSoundMuted", R.string.VoipChannelSoundMuted));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.getString("VoipGroupSoundMuted", R.string.VoipGroupSoundMuted));
}
subInfoText = null;
icon = R.raw.ic_mute;
timeLeft = 3000;
} else if (action == ACTION_VOIP_SOUND_UNMUTED) {
TLRPC.Chat chat = (TLRPC.Chat) infoObject;
if (ChatObject.isChannelOrGiga(chat)) {
infoText = AndroidUtilities.replaceTags(LocaleController.getString("VoipChannelSoundUnmuted", R.string.VoipChannelSoundUnmuted));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.getString("VoipGroupSoundUnmuted", R.string.VoipGroupSoundUnmuted));
}
subInfoText = null;
icon = R.raw.ic_unmute;
timeLeft = 3000;
} else if (currentAction == ACTION_VOIP_RECORDING_STARTED || currentAction == ACTION_VOIP_VIDEO_RECORDING_STARTED) {
infoText = AndroidUtilities.replaceTags(currentAction == ACTION_VOIP_RECORDING_STARTED ? LocaleController.getString("VoipGroupAudioRecordStarted", R.string.VoipGroupAudioRecordStarted) : LocaleController.getString("VoipGroupVideoRecordStarted", R.string.VoipGroupVideoRecordStarted));
subInfoText = null;
icon = R.raw.voip_record_start;
timeLeft = 3000;
} else if (currentAction == ACTION_VOIP_RECORDING_FINISHED || currentAction == ACTION_VOIP_VIDEO_RECORDING_FINISHED) {
String text = currentAction == ACTION_VOIP_RECORDING_FINISHED ? LocaleController.getString("VoipGroupAudioRecordSaved", R.string.VoipGroupAudioRecordSaved) : LocaleController.getString("VoipGroupVideoRecordSaved", R.string.VoipGroupVideoRecordSaved);
subInfoText = null;
icon = R.raw.voip_record_saved;
timeLeft = 4000;
infoTextView.setMovementMethod(new AndroidUtilities.LinkMovementMethodMy());
SpannableStringBuilder builder = new SpannableStringBuilder(text);
int index1 = text.indexOf("**");
int index2 = text.lastIndexOf("**");
if (index1 >= 0 && index2 >= 0 && index1 != index2) {
builder.replace(index2, index2 + 2, "");
builder.replace(index1, index1 + 2, "");
try {
builder.setSpan(new URLSpanNoUnderline("tg://openmessage?user_id=" + UserConfig.getInstance(currentAccount).getClientUserId()), index1, index2 - 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
} catch (Exception e) {
FileLog.e(e);
}
}
infoText = builder;
} else if (action == ACTION_VOIP_UNMUTED_FOR_YOU) {
String name;
if (infoObject instanceof TLRPC.User) {
TLRPC.User user = (TLRPC.User) infoObject;
name = UserObject.getFirstName(user);
} else {
TLRPC.Chat chat = (TLRPC.Chat) infoObject;
name = chat.title;
}
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipGroupUserCanNowSpeakForYou", R.string.VoipGroupUserCanNowSpeakForYou, name));
subInfoText = null;
icon = R.raw.voip_unmuted;
timeLeft = 3000;
} else if (action == ACTION_VOIP_REMOVED) {
String name;
if (infoObject instanceof TLRPC.User) {
TLRPC.User user = (TLRPC.User) infoObject;
name = UserObject.getFirstName(user);
} else {
TLRPC.Chat chat = (TLRPC.Chat) infoObject;
name = chat.title;
}
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("VoipGroupRemovedFromGroup", R.string.VoipGroupRemovedFromGroup, name));
subInfoText = null;
icon = R.raw.voip_group_removed;
timeLeft = 3000;
} else if (action == ACTION_OWNER_TRANSFERED_CHANNEL || action == ACTION_OWNER_TRANSFERED_GROUP) {
TLRPC.User user = (TLRPC.User) infoObject;
if (action == ACTION_OWNER_TRANSFERED_CHANNEL) {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("EditAdminTransferChannelToast", R.string.EditAdminTransferChannelToast, UserObject.getFirstName(user)));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("EditAdminTransferGroupToast", R.string.EditAdminTransferGroupToast, UserObject.getFirstName(user)));
}
subInfoText = null;
icon = R.raw.contact_check;
} else if (action == ACTION_CONTACT_ADDED) {
TLRPC.User user = (TLRPC.User) infoObject;
infoText = LocaleController.formatString("NowInContacts", R.string.NowInContacts, UserObject.getFirstName(user));
subInfoText = null;
icon = R.raw.contact_check;
} else if (action == ACTION_PROFILE_PHOTO_CHANGED) {
if (DialogObject.isUserDialog(did)) {
if (infoObject == null) {
infoText = LocaleController.getString("MainProfilePhotoSetHint", R.string.MainProfilePhotoSetHint);
} else {
infoText = LocaleController.getString("MainProfileVideoSetHint", R.string.MainProfileVideoSetHint);
}
} else {
TLRPC.Chat chat = MessagesController.getInstance(UserConfig.selectedAccount).getChat(-did);
if (ChatObject.isChannel(chat) && !chat.megagroup) {
if (infoObject == null) {
infoText = LocaleController.getString("MainChannelProfilePhotoSetHint", R.string.MainChannelProfilePhotoSetHint);
} else {
infoText = LocaleController.getString("MainChannelProfileVideoSetHint", R.string.MainChannelProfileVideoSetHint);
}
} else {
if (infoObject == null) {
infoText = LocaleController.getString("MainGroupProfilePhotoSetHint", R.string.MainGroupProfilePhotoSetHint);
} else {
infoText = LocaleController.getString("MainGroupProfileVideoSetHint", R.string.MainGroupProfileVideoSetHint);
}
}
}
subInfoText = null;
icon = R.raw.contact_check;
} else if (action == ACTION_CHAT_UNARCHIVED) {
infoText = LocaleController.getString("ChatWasMovedToMainList", R.string.ChatWasMovedToMainList);
subInfoText = null;
icon = R.raw.contact_check;
} else if (action == ACTION_ARCHIVE_HIDDEN) {
infoText = LocaleController.getString("ArchiveHidden", R.string.ArchiveHidden);
subInfoText = LocaleController.getString("ArchiveHiddenInfo", R.string.ArchiveHiddenInfo);
icon = R.raw.chats_swipearchive;
size = 48;
} else if (currentAction == ACTION_QUIZ_CORRECT) {
infoText = LocaleController.getString("QuizWellDone", R.string.QuizWellDone);
subInfoText = LocaleController.getString("QuizWellDoneInfo", R.string.QuizWellDoneInfo);
icon = R.raw.wallet_congrats;
size = 44;
} else if (currentAction == ACTION_QUIZ_INCORRECT) {
infoText = LocaleController.getString("QuizWrongAnswer", R.string.QuizWrongAnswer);
subInfoText = LocaleController.getString("QuizWrongAnswerInfo", R.string.QuizWrongAnswerInfo);
icon = R.raw.wallet_science;
size = 44;
} else if (action == ACTION_ARCHIVE_PINNED) {
infoText = LocaleController.getString("ArchivePinned", R.string.ArchivePinned);
if (MessagesController.getInstance(currentAccount).dialogFilters.isEmpty()) {
subInfoText = LocaleController.getString("ArchivePinnedInfo", R.string.ArchivePinnedInfo);
} else {
subInfoText = null;
}
icon = R.raw.chats_infotip;
} else if (action == ACTION_ADDED_TO_FOLDER || action == ACTION_REMOVED_FROM_FOLDER) {
MessagesController.DialogFilter filter = (MessagesController.DialogFilter) infoObject2;
if (did != 0) {
long dialogId = did;
if (DialogObject.isEncryptedDialog(did)) {
TLRPC.EncryptedChat encryptedChat = MessagesController.getInstance(currentAccount).getEncryptedChat(DialogObject.getEncryptedChatId(dialogId));
dialogId = encryptedChat.user_id;
}
if (DialogObject.isUserDialog(dialogId)) {
TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(dialogId);
if (action == ACTION_ADDED_TO_FOLDER) {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("FilterUserAddedToExisting", R.string.FilterUserAddedToExisting, UserObject.getFirstName(user), filter.name));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("FilterUserRemovedFrom", R.string.FilterUserRemovedFrom, UserObject.getFirstName(user), filter.name));
}
} else {
TLRPC.Chat chat = MessagesController.getInstance(currentAccount).getChat(-dialogId);
if (action == ACTION_ADDED_TO_FOLDER) {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("FilterChatAddedToExisting", R.string.FilterChatAddedToExisting, chat.title, filter.name));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("FilterChatRemovedFrom", R.string.FilterChatRemovedFrom, chat.title, filter.name));
}
}
} else {
if (action == ACTION_ADDED_TO_FOLDER) {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("FilterChatsAddedToExisting", R.string.FilterChatsAddedToExisting, LocaleController.formatPluralString("ChatsSelected", (Integer) infoObject), filter.name));
} else {
infoText = AndroidUtilities.replaceTags(LocaleController.formatString("FilterChatsRemovedFrom", R.string.FilterChatsRemovedFrom, LocaleController.formatPluralString("ChatsSelected", (Integer) infoObject), filter.name));
}
}
subInfoText = null;
icon = action == ACTION_ADDED_TO_FOLDER ? R.raw.folder_in : R.raw.folder_out;
} else if (action == ACTION_CACHE_WAS_CLEARED) {
infoText = this.infoText;
subInfoText = null;
icon = R.raw.chats_infotip;
} else if (action == ACTION_PIN_DIALOGS || action == ACTION_UNPIN_DIALOGS) {
int count = (Integer) infoObject;
if (action == ACTION_PIN_DIALOGS) {
infoText = LocaleController.formatPluralString("PinnedDialogsCount", count);
} else {
infoText = LocaleController.formatPluralString("UnpinnedDialogsCount", count);
}
subInfoText = null;
icon = currentAction == ACTION_PIN_DIALOGS ? R.raw.ic_pin : R.raw.ic_unpin;
} else {
if (action == ACTION_ARCHIVE_HINT) {
infoText = LocaleController.getString("ChatArchived", R.string.ChatArchived);
} else {
infoText = LocaleController.getString("ChatsArchived", R.string.ChatsArchived);
}
if (MessagesController.getInstance(currentAccount).dialogFilters.isEmpty()) {
subInfoText = LocaleController.getString("ChatArchivedInfo", R.string.ChatArchivedInfo);
} else {
subInfoText = null;
}
icon = R.raw.chats_infotip;
}
infoTextView.setText(infoText);
if (icon != 0) {
if (iconIsDrawable) {
leftImageView.setImageResource(icon);
} else {
leftImageView.setAnimation(icon, size, size);
RLottieDrawable drawable = leftImageView.getAnimatedDrawable();
drawable.setPlayInDirectionOfCustomEndFrame(reversedPlay);
drawable.setCustomEndFrame(reversedPlay ? reversedPlayEndFrame : drawable.getFramesCount());
}
leftImageView.setVisibility(VISIBLE);
if (!iconIsDrawable) {
leftImageView.setProgress(reversedPlay ? 1 : 0);
leftImageView.playAnimation();
}
} else {
leftImageView.setVisibility(GONE);
}
if (subInfoText != null) {
layoutParams.leftMargin = AndroidUtilities.dp(58);
layoutParams.topMargin = AndroidUtilities.dp(6);
layoutParams.rightMargin = AndroidUtilities.dp(8);
layoutParams = (FrameLayout.LayoutParams) subinfoTextView.getLayoutParams();
layoutParams.rightMargin = AndroidUtilities.dp(8);
subinfoTextView.setText(subInfoText);
subinfoTextView.setVisibility(VISIBLE);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
infoTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
} else {
layoutParams.leftMargin = AndroidUtilities.dp(58);
layoutParams.topMargin = AndroidUtilities.dp(13);
layoutParams.rightMargin = AndroidUtilities.dp(8);
subinfoTextView.setVisibility(GONE);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
infoTextView.setTypeface(Typeface.DEFAULT);
}
undoButton.setVisibility(GONE);
} else if (currentAction == ACTION_IMPORT_NOT_MUTUAL || currentAction == ACTION_IMPORT_GROUP_NOT_ADMIN || currentAction == ACTION_IMPORT_INFO || currentAction == ACTION_PLAYBACK_SPEED_DISABLED || currentAction == ACTION_PLAYBACK_SPEED_ENABLED || currentAction == ACTION_MESSAGE_COPIED || currentAction == ACTION_FWD_MESSAGES || currentAction == ACTION_NOTIFY_ON || currentAction == ACTION_NOTIFY_OFF || currentAction == ACTION_USERNAME_COPIED || currentAction == ACTION_HASHTAG_COPIED || currentAction == ACTION_TEXT_COPIED || currentAction == ACTION_LINK_COPIED || currentAction == ACTION_PHONE_COPIED || currentAction == ACTION_AUTO_DELETE_OFF || currentAction == ACTION_AUTO_DELETE_ON || currentAction == ACTION_GIGAGROUP_CANCEL || currentAction == ACTION_GIGAGROUP_SUCCESS || currentAction == ACTION_VOIP_INVITE_LINK_SENT || currentAction == ACTION_PIN_DIALOGS || currentAction == ACTION_UNPIN_DIALOGS || currentAction == ACTION_SHARE_BACKGROUND || currentAction == ACTION_EMAIL_COPIED) {
undoImageView.setVisibility(GONE);
leftImageView.setVisibility(VISIBLE);
infoTextView.setTypeface(Typeface.DEFAULT);
long hapticDelay = -1;
if (currentAction == ACTION_GIGAGROUP_SUCCESS) {
infoTextView.setText(LocaleController.getString("BroadcastGroupConvertSuccess", R.string.BroadcastGroupConvertSuccess));
leftImageView.setAnimation(R.raw.gigagroup_convert, 36, 36);
infoOnly = true;
layoutParams.topMargin = AndroidUtilities.dp(9);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
} else if (currentAction == ACTION_GIGAGROUP_CANCEL) {
infoTextView.setText(LocaleController.getString("GigagroupConvertCancelHint", R.string.GigagroupConvertCancelHint));
leftImageView.setAnimation(R.raw.chats_infotip, 36, 36);
infoOnly = true;
layoutParams.topMargin = AndroidUtilities.dp(9);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
} else if (action == ACTION_AUTO_DELETE_ON) {
TLRPC.User user = (TLRPC.User) infoObject;
int ttl = (Integer) infoObject2;
String time;
subinfoTextView.setSingleLine(false);
if (ttl >= 30 * 24 * 60 * 60) {
time = LocaleController.formatPluralString("Months", ttl / (30 * 24 * 60 * 60));
} else if (ttl > 24 * 60 * 60) {
time = LocaleController.formatPluralString("Days", ttl / (24 * 60 * 60));
} else if (ttl >= 60 * 60) {
time = LocaleController.formatPluralString("Hours", ttl / (60 * 60));
} else if (ttl >= 60) {
time = LocaleController.formatPluralString("Minutes", ttl / 60);
} else {
time = LocaleController.formatPluralString("Seconds", ttl);
}
infoTextView.setText(LocaleController.formatString("AutoDeleteHintOnText", R.string.AutoDeleteHintOnText, time));
leftImageView.setAnimation(R.raw.fire_on, 36, 36);
layoutParams.topMargin = AndroidUtilities.dp(9);
timeLeft = 4000;
infoOnly = true;
leftImageView.setPadding(0, 0, 0, AndroidUtilities.dp(3));
} else if (currentAction == ACTION_AUTO_DELETE_OFF) {
infoTextView.setText(LocaleController.getString("AutoDeleteHintOffText", R.string.AutoDeleteHintOffText));
leftImageView.setAnimation(R.raw.fire_off, 36, 36);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
timeLeft = 3000;
leftImageView.setPadding(0, 0, 0, AndroidUtilities.dp(4));
} else if (currentAction == ACTION_IMPORT_NOT_MUTUAL) {
infoTextView.setText(LocaleController.getString("ImportMutualError", R.string.ImportMutualError));
leftImageView.setAnimation(R.raw.error, 36, 36);
infoOnly = true;
layoutParams.topMargin = AndroidUtilities.dp(9);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
} else if (currentAction == ACTION_IMPORT_GROUP_NOT_ADMIN) {
infoTextView.setText(LocaleController.getString("ImportNotAdmin", R.string.ImportNotAdmin));
leftImageView.setAnimation(R.raw.error, 36, 36);
infoOnly = true;
layoutParams.topMargin = AndroidUtilities.dp(9);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
} else if (currentAction == ACTION_IMPORT_INFO) {
infoTextView.setText(LocaleController.getString("ImportedInfo", R.string.ImportedInfo));
leftImageView.setAnimation(R.raw.imported, 36, 36);
leftImageView.setPadding(0, 0, 0, AndroidUtilities.dp(5));
infoOnly = true;
layoutParams.topMargin = AndroidUtilities.dp(9);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
} else if (currentAction == ACTION_PLAYBACK_SPEED_DISABLED) {
infoTextView.setText(LocaleController.getString("AudioSpeedNormal", R.string.AudioSpeedNormal));
leftImageView.setAnimation(R.raw.audio_stop_speed, 36, 36);
timeLeft = 3000;
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
} else if (currentAction == ACTION_PLAYBACK_SPEED_ENABLED) {
infoTextView.setText(LocaleController.getString("AudioSpeedFast", R.string.AudioSpeedFast));
leftImageView.setAnimation(R.raw.audio_speed, 36, 36);
timeLeft = 3000;
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
} else if (currentAction == ACTION_MESSAGE_COPIED || currentAction == ACTION_USERNAME_COPIED || currentAction == ACTION_HASHTAG_COPIED || currentAction == ACTION_TEXT_COPIED || currentAction == ACTION_LINK_COPIED || currentAction == ACTION_PHONE_COPIED || currentAction == ACTION_EMAIL_COPIED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
return;
}
int iconRawId = R.raw.copy;
if (currentAction == ACTION_EMAIL_COPIED) {
infoTextView.setText(LocaleController.getString("EmailCopied", R.string.EmailCopied));
} else if (currentAction == ACTION_PHONE_COPIED) {
infoTextView.setText(LocaleController.getString("PhoneCopied", R.string.PhoneCopied));
} else if (currentAction == ACTION_USERNAME_COPIED) {
infoTextView.setText(LocaleController.getString("UsernameCopied", R.string.UsernameCopied));
} else if (currentAction == ACTION_HASHTAG_COPIED) {
infoTextView.setText(LocaleController.getString("HashtagCopied", R.string.HashtagCopied));
} else if (currentAction == ACTION_MESSAGE_COPIED) {
infoTextView.setText(LocaleController.getString("MessageCopied", R.string.MessageCopied));
} else if (currentAction == ACTION_LINK_COPIED) {
iconRawId = R.raw.voip_invite;
infoTextView.setText(LocaleController.getString("LinkCopied", R.string.LinkCopied));
} else {
infoTextView.setText(LocaleController.getString("TextCopied", R.string.TextCopied));
}
leftImageView.setAnimation(iconRawId, 30, 30);
timeLeft = 3000;
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
} else if (currentAction == ACTION_NOTIFY_ON) {
infoTextView.setText(LocaleController.getString("ChannelNotifyMembersInfoOn", R.string.ChannelNotifyMembersInfoOn));
leftImageView.setAnimation(R.raw.silent_unmute, 30, 30);
timeLeft = 3000;
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
} else if (currentAction == ACTION_NOTIFY_OFF) {
infoTextView.setText(LocaleController.getString("ChannelNotifyMembersInfoOff", R.string.ChannelNotifyMembersInfoOff));
leftImageView.setAnimation(R.raw.silent_mute, 30, 30);
timeLeft = 3000;
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
} else if (currentAction == ACTION_VOIP_INVITE_LINK_SENT) {
if (infoObject2 == null) {
if (did == UserConfig.getInstance(currentAccount).clientUserId) {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.getString("InvLinkToSavedMessages", R.string.InvLinkToSavedMessages)));
} else {
if (DialogObject.isChatDialog(did)) {
TLRPC.Chat chat = MessagesController.getInstance(currentAccount).getChat(-did);
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("InvLinkToGroup", R.string.InvLinkToGroup, chat.title)));
} else {
TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(did);
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("InvLinkToUser", R.string.InvLinkToUser, UserObject.getFirstName(user))));
}
}
} else {
int amount = (Integer) infoObject2;
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("InvLinkToChats", R.string.InvLinkToChats, LocaleController.formatPluralString("Chats", amount))));
}
leftImageView.setAnimation(R.raw.contact_check, 36, 36);
timeLeft = 3000;
} else if (currentAction == ACTION_FWD_MESSAGES) {
Integer count = (Integer) infoObject;
if (infoObject2 == null) {
if (did == UserConfig.getInstance(currentAccount).clientUserId) {
if (count == 1) {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.getString("FwdMessageToSavedMessages", R.string.FwdMessageToSavedMessages)));
} else {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.getString("FwdMessagesToSavedMessages", R.string.FwdMessagesToSavedMessages)));
}
leftImageView.setAnimation(R.raw.saved_messages, 30, 30);
} else {
if (DialogObject.isChatDialog(did)) {
TLRPC.Chat chat = MessagesController.getInstance(currentAccount).getChat(-did);
if (count == 1) {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessageToGroup", R.string.FwdMessageToGroup, chat.title)));
} else {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessagesToGroup", R.string.FwdMessagesToGroup, chat.title)));
}
} else {
TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(did);
if (count == 1) {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessageToUser", R.string.FwdMessageToUser, UserObject.getFirstName(user))));
} else {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessagesToUser", R.string.FwdMessagesToUser, UserObject.getFirstName(user))));
}
}
leftImageView.setAnimation(R.raw.forward, 30, 30);
hapticDelay = 300;
}
} else {
int amount = (Integer) infoObject2;
if (count == 1) {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessageToChats", R.string.FwdMessageToChats, LocaleController.formatPluralString("Chats", amount))));
} else {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("FwdMessagesToChats", R.string.FwdMessagesToChats, LocaleController.formatPluralString("Chats", amount))));
}
leftImageView.setAnimation(R.raw.forward, 30, 30);
hapticDelay = 300;
}
timeLeft = 3000;
} else if (currentAction == ACTION_SHARE_BACKGROUND) {
Integer count = (Integer) infoObject;
if (infoObject2 == null) {
if (did == UserConfig.getInstance(currentAccount).clientUserId) {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.getString("BackgroundToSavedMessages", R.string.BackgroundToSavedMessages)));
leftImageView.setAnimation(R.raw.saved_messages, 30, 30);
} else {
if (DialogObject.isChatDialog(did)) {
TLRPC.Chat chat = MessagesController.getInstance(currentAccount).getChat(-did);
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("BackgroundToGroup", R.string.BackgroundToGroup, chat.title)));
} else {
TLRPC.User user = MessagesController.getInstance(currentAccount).getUser(did);
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("BackgroundToUser", R.string.BackgroundToUser, UserObject.getFirstName(user))));
}
leftImageView.setAnimation(R.raw.forward, 30, 30);
}
} else {
int amount = (Integer) infoObject2;
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.formatString("BackgroundToChats", R.string.BackgroundToChats, LocaleController.formatPluralString("Chats", amount))));
leftImageView.setAnimation(R.raw.forward, 30, 30);
}
timeLeft = 3000;
}
subinfoTextView.setVisibility(GONE);
undoTextView.setTextColor(getThemedColor(Theme.key_undo_cancelColor));
undoButton.setVisibility(GONE);
layoutParams.leftMargin = AndroidUtilities.dp(58);
layoutParams.rightMargin = AndroidUtilities.dp(8);
leftImageView.setProgress(0);
leftImageView.playAnimation();
if (hapticDelay > 0) {
leftImageView.postDelayed(() -> {
leftImageView.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
}, hapticDelay);
}
} else if (currentAction == ACTION_PROXIMITY_SET || currentAction == ACTION_PROXIMITY_REMOVED) {
int radius = (Integer) infoObject;
TLRPC.User user = (TLRPC.User) infoObject2;
undoImageView.setVisibility(GONE);
leftImageView.setVisibility(VISIBLE);
if (radius != 0) {
infoTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
leftImageView.clearLayerColors();
leftImageView.setLayerColor("BODY.**", getThemedColor(Theme.key_undo_infoColor));
leftImageView.setLayerColor("Wibe Big.**", getThemedColor(Theme.key_undo_infoColor));
leftImageView.setLayerColor("Wibe Big 3.**", getThemedColor(Theme.key_undo_infoColor));
leftImageView.setLayerColor("Wibe Small.**", getThemedColor(Theme.key_undo_infoColor));
infoTextView.setText(LocaleController.getString("ProximityAlertSet", R.string.ProximityAlertSet));
leftImageView.setAnimation(R.raw.ic_unmute, 28, 28);
subinfoTextView.setVisibility(VISIBLE);
subinfoTextView.setSingleLine(false);
subinfoTextView.setMaxLines(3);
if (user != null) {
subinfoTextView.setText(LocaleController.formatString("ProximityAlertSetInfoUser", R.string.ProximityAlertSetInfoUser, UserObject.getFirstName(user), LocaleController.formatDistance(radius, 2)));
} else {
subinfoTextView.setText(LocaleController.formatString("ProximityAlertSetInfoGroup2", R.string.ProximityAlertSetInfoGroup2, LocaleController.formatDistance(radius, 2)));
}
undoButton.setVisibility(GONE);
layoutParams.topMargin = AndroidUtilities.dp(6);
} else {
infoTextView.setTypeface(Typeface.DEFAULT);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
leftImageView.clearLayerColors();
leftImageView.setLayerColor("Body Main.**", getThemedColor(Theme.key_undo_infoColor));
leftImageView.setLayerColor("Body Top.**", getThemedColor(Theme.key_undo_infoColor));
leftImageView.setLayerColor("Line.**", getThemedColor(Theme.key_undo_infoColor));
leftImageView.setLayerColor("Curve Big.**", getThemedColor(Theme.key_undo_infoColor));
leftImageView.setLayerColor("Curve Small.**", getThemedColor(Theme.key_undo_infoColor));
layoutParams.topMargin = AndroidUtilities.dp(14);
infoTextView.setText(LocaleController.getString("ProximityAlertCancelled", R.string.ProximityAlertCancelled));
leftImageView.setAnimation(R.raw.ic_mute, 28, 28);
subinfoTextView.setVisibility(GONE);
undoTextView.setTextColor(getThemedColor(Theme.key_undo_cancelColor));
undoButton.setVisibility(VISIBLE);
}
layoutParams.leftMargin = AndroidUtilities.dp(58);
leftImageView.setProgress(0);
leftImageView.playAnimation();
} else if (currentAction == ACTION_QR_SESSION_ACCEPTED) {
TLRPC.TL_authorization authorization = (TLRPC.TL_authorization) infoObject;
infoTextView.setText(LocaleController.getString("AuthAnotherClientOk", R.string.AuthAnotherClientOk));
leftImageView.setAnimation(R.raw.contact_check, 36, 36);
layoutParams.leftMargin = AndroidUtilities.dp(58);
layoutParams.topMargin = AndroidUtilities.dp(6);
subinfoTextView.setText(authorization.app_name);
subinfoTextView.setVisibility(VISIBLE);
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
infoTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
undoTextView.setTextColor(getThemedColor(Theme.key_windowBackgroundWhiteRedText2));
undoImageView.setVisibility(GONE);
undoButton.setVisibility(VISIBLE);
leftImageView.setVisibility(VISIBLE);
leftImageView.setProgress(0);
leftImageView.playAnimation();
} else if (currentAction == ACTION_FILTERS_AVAILABLE) {
timeLeft = 10000;
undoTextView.setText(LocaleController.getString("Open", R.string.Open).toUpperCase());
infoTextView.setText(LocaleController.getString("FilterAvailableTitle", R.string.FilterAvailableTitle));
leftImageView.setAnimation(R.raw.filter_new, 36, 36);
int margin = (int) Math.ceil(undoTextView.getPaint().measureText(undoTextView.getText().toString())) + AndroidUtilities.dp(26);
layoutParams.leftMargin = AndroidUtilities.dp(58);
layoutParams.rightMargin = margin;
layoutParams.topMargin = AndroidUtilities.dp(6);
layoutParams = (FrameLayout.LayoutParams) subinfoTextView.getLayoutParams();
layoutParams.rightMargin = margin;
String text = LocaleController.getString("FilterAvailableText", R.string.FilterAvailableText);
SpannableStringBuilder builder = new SpannableStringBuilder(text);
int index1 = text.indexOf('*');
int index2 = text.lastIndexOf('*');
if (index1 >= 0 && index2 >= 0 && index1 != index2) {
builder.replace(index2, index2 + 1, "");
builder.replace(index1, index1 + 1, "");
builder.setSpan(new URLSpanNoUnderline("tg://settings/folders"), index1, index2 - 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
subinfoTextView.setText(builder);
subinfoTextView.setVisibility(VISIBLE);
subinfoTextView.setSingleLine(false);
subinfoTextView.setMaxLines(2);
undoButton.setVisibility(VISIBLE);
undoImageView.setVisibility(GONE);
leftImageView.setVisibility(VISIBLE);
leftImageView.setProgress(0);
leftImageView.playAnimation();
} else if (currentAction == ACTION_DICE_INFO || currentAction == ACTION_DICE_NO_SEND_INFO) {
timeLeft = 4000;
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
infoTextView.setGravity(Gravity.CENTER_VERTICAL);
infoTextView.setMinHeight(AndroidUtilities.dp(30));
String emoji = (String) infoObject;
if ("\uD83C\uDFB2".equals(emoji)) {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.getString("DiceInfo2", R.string.DiceInfo2)));
leftImageView.setImageResource(R.drawable.dice);
} else {
if ("\uD83C\uDFAF".equals(emoji)) {
infoTextView.setText(AndroidUtilities.replaceTags(LocaleController.getString("DartInfo", R.string.DartInfo)));
} else {
String info = LocaleController.getServerString("DiceEmojiInfo_" + emoji);
if (!TextUtils.isEmpty(info)) {
infoTextView.setText(Emoji.replaceEmoji(info, infoTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(14), false));
} else {
infoTextView.setText(Emoji.replaceEmoji(LocaleController.formatString("DiceEmojiInfo", R.string.DiceEmojiInfo, emoji), infoTextView.getPaint().getFontMetricsInt(), AndroidUtilities.dp(14), false));
}
}
leftImageView.setImageDrawable(Emoji.getEmojiDrawable(emoji));
leftImageView.setScaleType(ImageView.ScaleType.FIT_XY);
layoutParams.topMargin = AndroidUtilities.dp(14);
layoutParams.bottomMargin = AndroidUtilities.dp(14);
layoutParams2.leftMargin = AndroidUtilities.dp(14);
layoutParams2.width = AndroidUtilities.dp(26);
layoutParams2.height = AndroidUtilities.dp(26);
}
undoTextView.setText(LocaleController.getString("SendDice", R.string.SendDice));
int margin;
if (currentAction == ACTION_DICE_INFO) {
margin = (int) Math.ceil(undoTextView.getPaint().measureText(undoTextView.getText().toString())) + AndroidUtilities.dp(26);
undoTextView.setVisibility(VISIBLE);
undoTextView.setTextColor(getThemedColor(Theme.key_undo_cancelColor));
undoImageView.setVisibility(GONE);
undoButton.setVisibility(VISIBLE);
} else {
margin = AndroidUtilities.dp(8);
undoTextView.setVisibility(GONE);
undoButton.setVisibility(GONE);
}
layoutParams.leftMargin = AndroidUtilities.dp(58);
layoutParams.rightMargin = margin;
layoutParams.topMargin = AndroidUtilities.dp(6);
layoutParams.bottomMargin = AndroidUtilities.dp(7);
layoutParams.height = TableLayout.LayoutParams.MATCH_PARENT;
subinfoTextView.setVisibility(GONE);
leftImageView.setVisibility(VISIBLE);
} else if (currentAction == ACTION_TEXT_INFO) {
CharSequence info = (CharSequence) infoObject;
timeLeft = Math.max(4000, Math.min(info.length() / 50 * 1600, 10000));
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
infoTextView.setGravity(Gravity.CENTER_VERTICAL);
infoTextView.setText(info);
undoTextView.setVisibility(GONE);
undoButton.setVisibility(GONE);
layoutParams.leftMargin = AndroidUtilities.dp(58);
layoutParams.rightMargin = AndroidUtilities.dp(8);
layoutParams.topMargin = AndroidUtilities.dp(6);
layoutParams.bottomMargin = AndroidUtilities.dp(7);
layoutParams.height = TableLayout.LayoutParams.MATCH_PARENT;
layoutParams2.gravity = Gravity.TOP | Gravity.LEFT;
layoutParams2.topMargin = layoutParams2.bottomMargin = AndroidUtilities.dp(8);
leftImageView.setVisibility(VISIBLE);
leftImageView.setAnimation(R.raw.chats_infotip, 36, 36);
leftImageView.setProgress(0);
leftImageView.playAnimation();
infoTextView.setMovementMethod(new AndroidUtilities.LinkMovementMethodMy());
} else if (currentAction == ACTION_THEME_CHANGED) {
infoTextView.setText(LocaleController.getString("ColorThemeChanged", R.string.ColorThemeChanged));
leftImageView.setImageResource(R.drawable.toast_pallete);
layoutParams.leftMargin = AndroidUtilities.dp(58);
layoutParams.rightMargin = AndroidUtilities.dp(48);
layoutParams.topMargin = AndroidUtilities.dp(6);
layoutParams = (FrameLayout.LayoutParams) subinfoTextView.getLayoutParams();
layoutParams.rightMargin = AndroidUtilities.dp(48);
String text = LocaleController.getString("ColorThemeChangedInfo", R.string.ColorThemeChangedInfo);
SpannableStringBuilder builder = new SpannableStringBuilder(text);
int index1 = text.indexOf('*');
int index2 = text.lastIndexOf('*');
if (index1 >= 0 && index2 >= 0 && index1 != index2) {
builder.replace(index2, index2 + 1, "");
builder.replace(index1, index1 + 1, "");
builder.setSpan(new URLSpanNoUnderline("tg://settings/themes"), index1, index2 - 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
subinfoTextView.setText(builder);
subinfoTextView.setVisibility(VISIBLE);
subinfoTextView.setSingleLine(false);
subinfoTextView.setMaxLines(2);
undoTextView.setVisibility(GONE);
undoButton.setVisibility(VISIBLE);
leftImageView.setVisibility(VISIBLE);
} else if (currentAction == ACTION_ARCHIVE || currentAction == ACTION_ARCHIVE_FEW) {
if (action == ACTION_ARCHIVE) {
infoTextView.setText(LocaleController.getString("ChatArchived", R.string.ChatArchived));
} else {
infoTextView.setText(LocaleController.getString("ChatsArchived", R.string.ChatsArchived));
}
layoutParams.leftMargin = AndroidUtilities.dp(58);
layoutParams.topMargin = AndroidUtilities.dp(13);
layoutParams.rightMargin = 0;
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
undoButton.setVisibility(VISIBLE);
infoTextView.setTypeface(Typeface.DEFAULT);
subinfoTextView.setVisibility(GONE);
leftImageView.setVisibility(VISIBLE);
leftImageView.setAnimation(R.raw.chats_archived, 36, 36);
leftImageView.setProgress(0);
leftImageView.playAnimation();
} else {
layoutParams.leftMargin = AndroidUtilities.dp(45);
layoutParams.topMargin = AndroidUtilities.dp(13);
layoutParams.rightMargin = 0;
infoTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
undoButton.setVisibility(VISIBLE);
infoTextView.setTypeface(Typeface.DEFAULT);
subinfoTextView.setVisibility(GONE);
leftImageView.setVisibility(GONE);
if (currentAction == ACTION_CLEAR_DATES || currentAction == ACTION_CLEAR || currentAction == ACTION_CLEAR_FEW) {
infoTextView.setText(LocaleController.getString("HistoryClearedUndo", R.string.HistoryClearedUndo));
} else if (currentAction == ACTION_DELETE_FEW) {
infoTextView.setText(LocaleController.getString("ChatsDeletedUndo", R.string.ChatsDeletedUndo));
} else {
if (DialogObject.isChatDialog(did)) {
TLRPC.Chat chat = MessagesController.getInstance(currentAccount).getChat(-did);
if (ChatObject.isChannel(chat) && !chat.megagroup) {
infoTextView.setText(LocaleController.getString("ChannelDeletedUndo", R.string.ChannelDeletedUndo));
} else {
infoTextView.setText(LocaleController.getString("GroupDeletedUndo", R.string.GroupDeletedUndo));
}
} else {
infoTextView.setText(LocaleController.getString("ChatDeletedUndo", R.string.ChatDeletedUndo));
}
}
if (currentAction != ACTION_CLEAR_DATES) {
for (int a = 0; a < dialogIds.size(); a++) {
MessagesController.getInstance(currentAccount).addDialogAction(dialogIds.get(a), currentAction == ACTION_CLEAR || currentAction == ACTION_CLEAR_FEW);
}
}
}
AndroidUtilities.makeAccessibilityAnnouncement(infoTextView.getText() + (subinfoTextView.getVisibility() == VISIBLE ? ". " + subinfoTextView.getText() : ""));
if (isMultilineSubInfo()) {
ViewGroup parent = (ViewGroup) getParent();
int width = parent.getMeasuredWidth();
if (width == 0) {
width = AndroidUtilities.displaySize.x;
}
width -= AndroidUtilities.dp(16);
measureChildWithMargins(subinfoTextView, MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), 0, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 0);
undoViewHeight = subinfoTextView.getMeasuredHeight() + AndroidUtilities.dp(27 + 10);
} else if (hasSubInfo()) {
undoViewHeight = AndroidUtilities.dp(52);
} else if (getParent() instanceof ViewGroup) {
ViewGroup parent = (ViewGroup) getParent();
int width = parent.getMeasuredWidth() - parent.getPaddingLeft() - parent.getPaddingRight();
if (width <= 0) {
width = AndroidUtilities.displaySize.x;
}
width -= AndroidUtilities.dp(16);
measureChildWithMargins(infoTextView, MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), 0, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 0);
undoViewHeight = infoTextView.getMeasuredHeight() + AndroidUtilities.dp(currentAction == ACTION_DICE_INFO || currentAction == ACTION_DICE_NO_SEND_INFO || currentAction == ACTION_TEXT_INFO ? 14 : 28);
if (currentAction == ACTION_TEXT_INFO) {
undoViewHeight = Math.max(undoViewHeight, AndroidUtilities.dp(52));
} else if (currentAction == ACTION_PROXIMITY_REMOVED) {
undoViewHeight = Math.max(undoViewHeight, AndroidUtilities.dp(50));
} else if (infoOnly) {
undoViewHeight -= AndroidUtilities.dp(8);
}
}
if (getVisibility() != VISIBLE) {
setVisibility(VISIBLE);
setEnterOffset((fromTop ? -1.0f : 1.0f) * (AndroidUtilities.dp(8) + undoViewHeight));
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.playTogether(ObjectAnimator.ofFloat(this, "enterOffset", (fromTop ? -1.0f : 1.0f) * (AndroidUtilities.dp(8) + undoViewHeight), (fromTop ? 1.0f : -1.0f)));
animatorSet.setInterpolator(new DecelerateInterpolator());
animatorSet.setDuration(180);
animatorSet.start();
}
}
Aggregations