Ver código fonte

评论链接代码提交

DESKTOP-JJ6HLMB 1 ano atrás
pai
commit
abd7fc05f4

+ 78 - 34
TMessagesProj/src/main/java/org/telegram/cricdit/view/ExpandTextView.java

@@ -12,6 +12,7 @@ import android.text.SpannableString;
 import android.text.SpannableStringBuilder;
 import android.text.Spanned;
 import android.text.StaticLayout;
+import android.text.TextUtils;
 import android.text.method.LinkMovementMethod;
 import android.text.style.ClickableSpan;
 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.utils.ToastUtil;
 import org.telegram.messenger.AndroidUtilities;
+import org.telegram.messenger.ChatObject;
+import org.telegram.messenger.LocaleController;
 import org.telegram.messenger.MessagesController;
 import org.telegram.messenger.MessagesStorage;
 import org.telegram.messenger.R;
@@ -36,9 +39,13 @@ import org.telegram.messenger.UserConfig;
 import org.telegram.tgnet.ConnectionsManager;
 import org.telegram.tgnet.TLObject;
 import org.telegram.tgnet.TLRPC;
+import org.telegram.ui.ActionBar.AlertDialog;
 import org.telegram.ui.ActionBar.BaseFragment;
 import org.telegram.ui.ChatActivity;
+import org.telegram.ui.LaunchActivity;
 import org.telegram.ui.ProfileActivity;
+
+import java.util.ArrayList;
 //import com.cricdit.libbase.constants.Constants;
 //import com.cricdit.module.main.R;
 //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 end = finalWorkingText.indexOf(" ", index);
                         String gName;
+                        String group = "";
                         if (end != -1) {
                             gName = finalWorkingText.substring(index + "https://t.me/".length(), end);
                         } else {
                             gName = finalWorkingText.substring(index + "https://t.me/".length());
                         }
                         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[] 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 {
+                                    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.chats.isEmpty()) {
 //                                            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) 跳转到聊天界面
 //                        String user_id = "0";
 //                        Bundle args = new Bundle();
@@ -437,6 +480,7 @@ public class ExpandTextView extends androidx.appcompat.widget.AppCompatTextView
             // 必须使用append,不能在上面使用+连接,否则spannable会无效
             append(SPAN_TO_EXPAND);
         }
+
         setMovementMethod(LinkMovementMethod.getInstance());
     }
 

+ 0 - 1
TMessagesProj/src/main/java/org/telegram/ui/ChatActivity.java

@@ -24825,7 +24825,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
     }
 
     private void didPressMessageUrl(CharacterStyle url, boolean longPress, MessageObject messageObject, ChatMessageCell cell) {
-        Log.e("didPressMessageUrl>>>>>>>>>>>>:::", "链接点击响应了");
         if (url == null || getParentActivity() == null) {
             return;
         }