|
@@ -12,6 +12,7 @@ import android.text.SpannableString;
|
|
import android.text.SpannableStringBuilder;
|
|
import android.text.SpannableStringBuilder;
|
|
import android.text.Spanned;
|
|
import android.text.Spanned;
|
|
import android.text.StaticLayout;
|
|
import android.text.StaticLayout;
|
|
|
|
+import android.text.TextUtils;
|
|
import android.text.method.LinkMovementMethod;
|
|
import android.text.method.LinkMovementMethod;
|
|
import android.text.style.ClickableSpan;
|
|
import android.text.style.ClickableSpan;
|
|
import android.text.style.ForegroundColorSpan;
|
|
import android.text.style.ForegroundColorSpan;
|
|
@@ -25,6 +26,8 @@ import org.telegram.cricdit.config.Constants;
|
|
import org.telegram.cricdit.mvp.CommentPresenter;
|
|
import org.telegram.cricdit.mvp.CommentPresenter;
|
|
import org.telegram.cricdit.utils.ToastUtil;
|
|
import org.telegram.cricdit.utils.ToastUtil;
|
|
import org.telegram.messenger.AndroidUtilities;
|
|
import org.telegram.messenger.AndroidUtilities;
|
|
|
|
+import org.telegram.messenger.ChatObject;
|
|
|
|
+import org.telegram.messenger.LocaleController;
|
|
import org.telegram.messenger.MessagesController;
|
|
import org.telegram.messenger.MessagesController;
|
|
import org.telegram.messenger.MessagesStorage;
|
|
import org.telegram.messenger.MessagesStorage;
|
|
import org.telegram.messenger.R;
|
|
import org.telegram.messenger.R;
|
|
@@ -36,9 +39,13 @@ import org.telegram.messenger.UserConfig;
|
|
import org.telegram.tgnet.ConnectionsManager;
|
|
import org.telegram.tgnet.ConnectionsManager;
|
|
import org.telegram.tgnet.TLObject;
|
|
import org.telegram.tgnet.TLObject;
|
|
import org.telegram.tgnet.TLRPC;
|
|
import org.telegram.tgnet.TLRPC;
|
|
|
|
+import org.telegram.ui.ActionBar.AlertDialog;
|
|
import org.telegram.ui.ActionBar.BaseFragment;
|
|
import org.telegram.ui.ActionBar.BaseFragment;
|
|
import org.telegram.ui.ChatActivity;
|
|
import org.telegram.ui.ChatActivity;
|
|
|
|
+import org.telegram.ui.LaunchActivity;
|
|
import org.telegram.ui.ProfileActivity;
|
|
import org.telegram.ui.ProfileActivity;
|
|
|
|
+
|
|
|
|
+import java.util.ArrayList;
|
|
//import com.cricdit.libbase.constants.Constants;
|
|
//import com.cricdit.libbase.constants.Constants;
|
|
//import com.cricdit.module.main.R;
|
|
//import com.cricdit.module.main.R;
|
|
//import com.cricdit.module.main.bean.GroupInfoBean;
|
|
//import com.cricdit.module.main.bean.GroupInfoBean;
|
|
@@ -287,60 +294,96 @@ public class ExpandTextView extends androidx.appcompat.widget.AppCompatTextView
|
|
int index = finalWorkingText.indexOf("https://t.me/");
|
|
int index = finalWorkingText.indexOf("https://t.me/");
|
|
int end = finalWorkingText.indexOf(" ", index);
|
|
int end = finalWorkingText.indexOf(" ", index);
|
|
String gName;
|
|
String gName;
|
|
|
|
+ String group = "";
|
|
if (end != -1) {
|
|
if (end != -1) {
|
|
gName = finalWorkingText.substring(index + "https://t.me/".length(), end);
|
|
gName = finalWorkingText.substring(index + "https://t.me/".length(), end);
|
|
} else {
|
|
} else {
|
|
gName = finalWorkingText.substring(index + "https://t.me/".length());
|
|
gName = finalWorkingText.substring(index + "https://t.me/".length());
|
|
}
|
|
}
|
|
if (gName.startsWith("+")) {
|
|
if (gName.startsWith("+")) {
|
|
- String tempName = gName.replace("+", "");
|
|
|
|
- if (AndroidUtilities.isNumeric(tempName)) {
|
|
|
|
- gName = tempName;
|
|
|
|
|
|
+ group = gName.replace("+", "");
|
|
|
|
+ if (AndroidUtilities.isNumeric(group)) {
|
|
|
|
+ gName = group;
|
|
|
|
+ group = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
final int[] requestId = new int[]{0};
|
|
final int[] requestId = new int[]{0};
|
|
final int[] intentAccount = new int[]{UserConfig.selectedAccount};
|
|
final int[] intentAccount = new int[]{UserConfig.selectedAccount};
|
|
- if (gName != null) {
|
|
|
|
- TLObject req;
|
|
|
|
- if (AndroidUtilities.isNumeric(gName)) {
|
|
|
|
- TLRPC.TL_contacts_resolvePhone resolvePhone = new TLRPC.TL_contacts_resolvePhone();
|
|
|
|
- resolvePhone.phone = gName;
|
|
|
|
- req = resolvePhone;
|
|
|
|
- } else {
|
|
|
|
- TLRPC.TL_contacts_resolveUsername resolveUsername = new TLRPC.TL_contacts_resolveUsername();
|
|
|
|
- resolveUsername.username = gName;
|
|
|
|
- req = resolveUsername;
|
|
|
|
- }
|
|
|
|
- // TODO: 2022/11/16 群组跳转带+号的现在仍然跳转失败
|
|
|
|
- requestId[0] = ConnectionsManager.getInstance(intentAccount[0]).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
|
|
|
|
- TLRPC.TL_contacts_resolvedPeer res = (TLRPC.TL_contacts_resolvedPeer) response;
|
|
|
|
- if (error == null && res != null && res.users != null) {
|
|
|
|
- MessagesController.getInstance(intentAccount[0]).putUsers(res.users, false);
|
|
|
|
- MessagesController.getInstance(intentAccount[0]).putChats(res.chats, false);
|
|
|
|
- MessagesStorage.getInstance(intentAccount[0]).putUsersAndChats(res.users, res.chats, false, true);
|
|
|
|
- long dialog_id;
|
|
|
|
- boolean isBot = false;
|
|
|
|
- Bundle args = new Bundle();
|
|
|
|
- if (!res.chats.isEmpty()) {
|
|
|
|
- args.putLong("chat_id", res.chats.get(0).id);
|
|
|
|
- dialog_id = -res.chats.get(0).id;
|
|
|
|
- } else {
|
|
|
|
- args.putLong("user_id", res.users.get(0).id);
|
|
|
|
- dialog_id = res.users.get(0).id;
|
|
|
|
- }
|
|
|
|
- ChatActivity fragment = new ChatActivity(args);
|
|
|
|
- baseFragment.presentFragment(fragment);
|
|
|
|
|
|
+ if (TextUtils.isEmpty(group)) {
|
|
|
|
+ if (gName != null) {
|
|
|
|
+ TLObject req;
|
|
|
|
+ if (AndroidUtilities.isNumeric(gName)) {
|
|
|
|
+ TLRPC.TL_contacts_resolvePhone resolvePhone = new TLRPC.TL_contacts_resolvePhone();
|
|
|
|
+ resolvePhone.phone = gName;
|
|
|
|
+ req = resolvePhone;
|
|
} else {
|
|
} else {
|
|
|
|
+ TLRPC.TL_contacts_resolveUsername resolveUsername = new TLRPC.TL_contacts_resolveUsername();
|
|
|
|
+ resolveUsername.username = gName;
|
|
|
|
+ req = resolveUsername;
|
|
|
|
+ }
|
|
|
|
+ // TODO: 2022/11/16 群组跳转带+号的现在仍然跳转失败
|
|
|
|
+ requestId[0] = ConnectionsManager.getInstance(intentAccount[0]).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
|
|
|
|
+ TLRPC.TL_contacts_resolvedPeer res = (TLRPC.TL_contacts_resolvedPeer) response;
|
|
|
|
+ if (error == null && res != null && res.users != null) {
|
|
|
|
+ MessagesController.getInstance(intentAccount[0]).putUsers(res.users, false);
|
|
|
|
+ MessagesController.getInstance(intentAccount[0]).putChats(res.chats, false);
|
|
|
|
+ MessagesStorage.getInstance(intentAccount[0]).putUsersAndChats(res.users, res.chats, false, true);
|
|
|
|
+ long dialog_id;
|
|
|
|
+ boolean isBot = false;
|
|
|
|
+ Bundle args = new Bundle();
|
|
|
|
+ if (!res.chats.isEmpty()) {
|
|
|
|
+ args.putLong("chat_id", res.chats.get(0).id);
|
|
|
|
+ dialog_id = -res.chats.get(0).id;
|
|
|
|
+ } else {
|
|
|
|
+ args.putLong("user_id", res.users.get(0).id);
|
|
|
|
+ dialog_id = res.users.get(0).id;
|
|
|
|
+ }
|
|
|
|
+ ChatActivity fragment = new ChatActivity(args);
|
|
|
|
+ baseFragment.presentFragment(fragment);
|
|
|
|
+ } else {
|
|
|
|
+ ToastUtil.show(baseFragment.getParentActivity(), "Username not found");
|
|
// if (res != null && res.chats != null) {
|
|
// if (res != null && res.chats != null) {
|
|
// if (res.chats.isEmpty()) {
|
|
// if (res.chats.isEmpty()) {
|
|
// ToastUtil.show(baseFragment.getParentActivity(), "Username not found");
|
|
// ToastUtil.show(baseFragment.getParentActivity(), "Username not found");
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
+ }
|
|
|
|
+ }));
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ final TLRPC.TL_messages_checkChatInvite req = new TLRPC.TL_messages_checkChatInvite();
|
|
|
|
+ req.hash = group;
|
|
|
|
+ requestId[0] = ConnectionsManager.getInstance(intentAccount[0]).sendRequest(req, (response, error) -> AndroidUtilities.runOnUIThread(() -> {
|
|
|
|
+ if (error == null) {
|
|
|
|
+ TLRPC.ChatInvite invite = (TLRPC.ChatInvite) response;
|
|
|
|
+ if (invite.chat != null && (!ChatObject.isLeftFromChat(invite.chat) || !invite.chat.kicked && (!TextUtils.isEmpty(invite.chat.username) || invite instanceof TLRPC.TL_chatInvitePeek || invite.chat.has_geo))) {
|
|
|
|
+ MessagesController.getInstance(intentAccount[0]).putChat(invite.chat, false);
|
|
|
|
+ ArrayList<TLRPC.Chat> chats = new ArrayList<>();
|
|
|
|
+ chats.add(invite.chat);
|
|
|
|
+ MessagesStorage.getInstance(intentAccount[0]).putUsersAndChats(null, chats, false, true);
|
|
|
|
+ Bundle args = new Bundle();
|
|
|
|
+ args.putLong("chat_id", invite.chat.id);
|
|
|
|
+ ChatActivity fragment = new ChatActivity(args);
|
|
|
|
+ baseFragment.presentFragment(fragment);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+// AlertDialog.Builder builder = new AlertDialog.Builder(baseFragment.getParentActivity());
|
|
|
|
+// builder.setTitle(LocaleController.getString("AppName", R.string.AppName));
|
|
|
|
+// if (error.text.startsWith("FLOOD_WAIT")) {
|
|
|
|
+// builder.setMessage(LocaleController.getString("FloodWait", R.string.FloodWait));
|
|
|
|
+// } else if (error.text.startsWith("INVITE_HASH_EXPIRED")) {
|
|
|
|
+// builder.setTitle(LocaleController.getString("ExpiredLink", R.string.ExpiredLink));
|
|
|
|
+// builder.setMessage(LocaleController.getString("InviteExpired", R.string.InviteExpired));
|
|
|
|
+// } else {
|
|
|
|
+// builder.setMessage(LocaleController.getString("JoinToGroupErrorNotExist", R.string.JoinToGroupErrorNotExist));
|
|
|
|
+// }
|
|
|
|
+// builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
|
|
|
|
+// showAlertDialog(builder);
|
|
}
|
|
}
|
|
}));
|
|
}));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
//跳转到群组聊天界面 todo 这里需要样子跳转到聊天界面是否正确 这里需要看电报的源码 根据gName信息获取个人信息(user_id) 跳转到聊天界面
|
|
//跳转到群组聊天界面 todo 这里需要样子跳转到聊天界面是否正确 这里需要看电报的源码 根据gName信息获取个人信息(user_id) 跳转到聊天界面
|
|
// String user_id = "0";
|
|
// String user_id = "0";
|
|
// Bundle args = new Bundle();
|
|
// Bundle args = new Bundle();
|
|
@@ -437,6 +480,7 @@ public class ExpandTextView extends androidx.appcompat.widget.AppCompatTextView
|
|
// 必须使用append,不能在上面使用+连接,否则spannable会无效
|
|
// 必须使用append,不能在上面使用+连接,否则spannable会无效
|
|
append(SPAN_TO_EXPAND);
|
|
append(SPAN_TO_EXPAND);
|
|
}
|
|
}
|
|
|
|
+
|
|
setMovementMethod(LinkMovementMethod.getInstance());
|
|
setMovementMethod(LinkMovementMethod.getInstance());
|
|
}
|
|
}
|
|
|
|
|