Quellcode durchsuchen

同步群消息加传参、优化排行版详情

ltt vor 1 Jahr
Ursprung
Commit
6721425b45

+ 29 - 10
TMessagesProj/src/main/java/org/telegram/cricdit/adapter/NewsGroupAdapter.java

@@ -19,6 +19,7 @@ import com.bumptech.glide.load.resource.bitmap.CircleCrop;
 import com.bumptech.glide.request.RequestOptions;
 
 import org.telegram.cricdit.bean.NewsGroupBean;
+import org.telegram.cricdit.bean.RankDetailBean;
 import org.telegram.cricdit.config.Constants;
 import org.telegram.cricdit.net.ApiService;
 import org.telegram.cricdit.net.Parameter;
@@ -252,19 +253,19 @@ public class NewsGroupAdapter extends RecyclerView.Adapter {
                     Bundle bundle = new Bundle();
                     bundle.putLong("chat_id", chatID);
                     fragment.presentFragment(new ChatActivity(bundle));
-                    syncGroupDataToCricdit(chat);
+                    syncGroupDataToCricdit(chat,groupData.private_link,groupData.public_link);
                 } else {
                     if (alertDialog != null) {
                         alertDialog.show();
                     }
                     if (!TextUtils.isEmpty(groupData.private_link)) {
-                        newSkipUrl(groupData.private_link);
+                        newSkipUrl(groupData.private_link,false);
                     } else {
                         if (!TextUtils.isEmpty(groupData.public_link)) {
                             if (groupData.public_link.startsWith("https://t.me/")) {
-                                newSkipUrl(groupData.public_link);
+                                newSkipUrl(groupData.public_link,true);
                             } else {
-                                newSkipUrl("https://t.me/" + groupData.public_link);
+                                newSkipUrl("https://t.me/" + groupData.public_link,true);
                             }
                         } else {
                             if (alertDialog != null) {
@@ -327,7 +328,7 @@ public class NewsGroupAdapter extends RecyclerView.Adapter {
         this.mOnItemClickListener = mOnItemClickListener;
     }
 
-    public void newSkipUrl(String finalWorkingText) {
+    public void newSkipUrl(String finalWorkingText,boolean isPublic) {
         if (finalWorkingText.contains("https://t.me/")) {
             int index = finalWorkingText.indexOf("https://t.me/");
             int end = finalWorkingText.indexOf(" ", index);
@@ -374,8 +375,11 @@ public class NewsGroupAdapter extends RecyclerView.Adapter {
                                 args.putLong("user_id", res.users.get(0).id);
                             }
                             fragment.presentFragment(new ChatActivity(args));
-                            syncGroupDataToCricdit(res.chats.get(0));
-
+                            if(isPublic){
+                                syncGroupDataToCricdit(res.chats.get(0),null,finalWorkingText);
+                            }else{
+                                syncGroupDataToCricdit(res.chats.get(0),finalWorkingText,null);
+                            }
                         } else {
                             ToastUtil.show(fragment.getParentActivity(), LocaleController.getString("ExpiredLink", R.string.ExpiredLink));
                         }
@@ -399,7 +403,11 @@ public class NewsGroupAdapter extends RecyclerView.Adapter {
                             Bundle args = new Bundle();
                             args.putLong("chat_id", invite.chat.id);
                             fragment.presentFragment(new ChatActivity(args));
-                            syncGroupDataToCricdit(invite.chat);
+                            if(isPublic){
+                                syncGroupDataToCricdit(invite.chat,null,finalWorkingText);
+                            }else{
+                                syncGroupDataToCricdit(invite.chat,finalWorkingText,null);
+                            }
                         } else {
                             if (fragment != null) {
                                 fragment.showDialog(new JoinGroupAlert(fragment.getParentActivity(), invite, finalGroup, fragment, (fragment instanceof ChatActivity ? ((ChatActivity) fragment).themeDelegate : null)));
@@ -416,8 +424,11 @@ public class NewsGroupAdapter extends RecyclerView.Adapter {
     }
 
     //TODO 同步群组资料至Cricdit数据库
-    public void syncGroupDataToCricdit(TLRPC.Chat chat) {
-
+    public void syncGroupDataToCricdit(TLRPC.Chat chat, String private_link,String public_link) {
+        TLRPC.ChatFull chatFull = fragment.getMessagesController().getChatFull(chat.id);
+        if(chatFull == null){
+            return;
+        }
         AndroidUtilities.runOnUIThread(() -> {
             if (chat == null) {
                 return;
@@ -427,6 +438,14 @@ public class NewsGroupAdapter extends RecyclerView.Adapter {
             parameter.add("group_id", chat.id + "");
             parameter.add("name", chat.title + "");
             parameter.add("creator_user_id", currentUser.id + "");
+            //新添传参
+            if (!TextUtils.isEmpty(private_link)) {
+                parameter.add("private_link", private_link + "");
+            } else if (!TextUtils.isEmpty(public_link)) {
+                parameter.add("public_link", public_link.startsWith("https://t.me/") ? public_link : "https://t.me/" + public_link);
+            }
+            parameter.add("group_member", chatFull.participants_count == 0 ? chat.participants_count : chatFull.participants_count + "");
+            parameter.add("type", (ChatObject.isChannel(chat) && !chat.megagroup) ? 1 : 0);
 
             if (chat.photo != null && chat.photo.stripped_thumb != null) {
                 BackupImageView backupImageView = new BackupImageView(ApplicationLoader.applicationContext);

+ 29 - 10
TMessagesProj/src/main/java/org/telegram/cricdit/adapter/RecommendGroupAdapter.java

@@ -88,19 +88,19 @@ public class RecommendGroupAdapter extends BaseQuickAdapter<MoreGroupBean.MoreGr
                     Bundle bundle = new Bundle();
                     bundle.putLong("chat_id", chatID);
                     fragment.presentFragment(new ChatActivity(bundle));
-                    syncitemToCricdit(chat);
+                    syncGroupDataToCricdit(chat,item.private_link,item.public_link);
                 } else {
                     if (alertDialog != null) {
                         alertDialog.show();
                     }
                     if (!TextUtils.isEmpty(item.private_link)) {
-                        newSkipUrl(item.private_link);
+                        newSkipUrl(item.private_link,false);
                     } else {
                         if (!TextUtils.isEmpty(item.public_link)) {
                             if (item.public_link.startsWith("https://t.me/")) {
-                                newSkipUrl(item.public_link);
+                                newSkipUrl(item.public_link,true);
                             } else {
-                                newSkipUrl("https://t.me/" + item.public_link);
+                                newSkipUrl("https://t.me/" + item.public_link,true);
                             }
                         } else {
                             if (alertDialog != null) {
@@ -117,7 +117,7 @@ public class RecommendGroupAdapter extends BaseQuickAdapter<MoreGroupBean.MoreGr
         
     }
 
-    public void newSkipUrl(String finalWorkingText) {
+    public void newSkipUrl(String finalWorkingText,boolean isPublic) {
         if (finalWorkingText.contains("https://t.me/")) {
             int index = finalWorkingText.indexOf("https://t.me/");
             int end = finalWorkingText.indexOf(" ", index);
@@ -164,8 +164,11 @@ public class RecommendGroupAdapter extends BaseQuickAdapter<MoreGroupBean.MoreGr
                                 args.putLong("user_id", res.users.get(0).id);
                             }
                             fragment.presentFragment(new ChatActivity(args));
-                            syncitemToCricdit(res.chats.get(0));
-
+                            if(isPublic){
+                                syncGroupDataToCricdit(res.chats.get(0),null,finalWorkingText);
+                            }else{
+                                syncGroupDataToCricdit(res.chats.get(0),finalWorkingText,null);
+                            }
                         } else {
                             ToastUtil.show(fragment.getParentActivity(), LocaleController.getString("ExpiredLink", R.string.ExpiredLink));
                         }
@@ -189,7 +192,11 @@ public class RecommendGroupAdapter extends BaseQuickAdapter<MoreGroupBean.MoreGr
                             Bundle args = new Bundle();
                             args.putLong("chat_id", invite.chat.id);
                             fragment.presentFragment(new ChatActivity(args));
-                            syncitemToCricdit(invite.chat);
+                            if(isPublic){
+                                syncGroupDataToCricdit(invite.chat,null,finalWorkingText);
+                            }else{
+                                syncGroupDataToCricdit(invite.chat,finalWorkingText,null);
+                            }
                         } else {
                             if (fragment != null) {
                                 fragment.showDialog(new JoinGroupAlert(fragment.getParentActivity(), invite, finalGroup, fragment, (fragment instanceof ChatActivity ? ((ChatActivity) fragment).themeDelegate : null)));
@@ -206,8 +213,11 @@ public class RecommendGroupAdapter extends BaseQuickAdapter<MoreGroupBean.MoreGr
     }
 
     //TODO 同步群组资料至Cricdit数据库
-    public void syncitemToCricdit(TLRPC.Chat chat) {
-
+    public void syncGroupDataToCricdit(TLRPC.Chat chat,String private_link,String public_link) {
+        TLRPC.ChatFull chatFull = fragment.getMessagesController().getChatFull(chat.id);
+        if(chatFull == null){
+            return;
+        }
         AndroidUtilities.runOnUIThread(() -> {
             if (chat == null) {
                 return;
@@ -218,6 +228,15 @@ public class RecommendGroupAdapter extends BaseQuickAdapter<MoreGroupBean.MoreGr
             parameter.add("name", chat.title + "");
             parameter.add("creator_user_id", currentUser.id + "");
 
+            //新添传参
+            if (!TextUtils.isEmpty(private_link)) {
+                parameter.add("private_link", private_link + "");
+            } else if (!TextUtils.isEmpty(public_link)) {
+                parameter.add("public_link", public_link.startsWith("https://t.me/") ? public_link : "https://t.me/" + public_link);
+            }
+            parameter.add("group_member", chatFull.participants_count == 0 ? chat.participants_count : chatFull.participants_count + "");
+            parameter.add("type", (ChatObject.isChannel(chat) && !chat.megagroup) ? 1 : 0);
+            
             if (chat.photo != null && chat.photo.stripped_thumb != null) {
                 BackupImageView backupImageView = new BackupImageView(ApplicationLoader.applicationContext);
                 backupImageView.setForUserOrChat(chat, new AvatarDrawable(chat));

+ 82 - 5
TMessagesProj/src/main/java/org/telegram/cricdit/ui/MoreGroupFragment.java

@@ -1,6 +1,7 @@
 package org.telegram.cricdit.ui;
 
 import android.content.Context;
+import android.graphics.Bitmap;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
@@ -17,8 +18,13 @@ import org.telegram.cricdit.bean.MoreGroupBean;
 import org.telegram.cricdit.config.Constants;
 import org.telegram.cricdit.mvp.MoreGroupPresenter;
 import org.telegram.cricdit.mvp.MoreGroupView;
+import org.telegram.cricdit.net.ApiService;
+import org.telegram.cricdit.net.Parameter;
+import org.telegram.cricdit.net.RetrofitClient;
+import org.telegram.cricdit.utils.Base64Utils;
 import org.telegram.cricdit.utils.ToastUtil;
 import org.telegram.messenger.AndroidUtilities;
+import org.telegram.messenger.ApplicationLoader;
 import org.telegram.messenger.ChatObject;
 import org.telegram.messenger.LocaleController;
 import org.telegram.messenger.MessagesController;
@@ -31,12 +37,20 @@ 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.Components.AvatarDrawable;
+import org.telegram.ui.Components.BackupImageView;
 import org.telegram.ui.Components.JoinGroupAlert;
 import org.telegram.ui.LoginActivity;
 
+import java.io.ByteArrayOutputStream;
 import java.util.ArrayList;
 import java.util.List;
 
+import okhttp3.ResponseBody;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
 public class MoreGroupFragment implements BaseViewFragment, MoreGroupView {
     private BaseFragment mFragment;
     private Context mContext;
@@ -79,13 +93,13 @@ public class MoreGroupFragment implements BaseViewFragment, MoreGroupView {
                 MoreGroupBean.MoreGroupItem groupData = mAdapter.getData().get(position);
                 alertDialog.show();
                 if (!TextUtils.isEmpty(groupData.private_link)) {
-                    newSkipUrl(groupData.private_link);
+                    newSkipUrl(groupData.private_link,false);
                 } else {
                     if (!TextUtils.isEmpty(groupData.public_link)) {
                         if (groupData.public_link.startsWith("https://t.me/")) {
-                            newSkipUrl(groupData.public_link);
+                            newSkipUrl(groupData.public_link,true);
                         } else {
-                            newSkipUrl("https://t.me/" + groupData.public_link);
+                            newSkipUrl("https://t.me/" + groupData.public_link,true);
                         }
                     } else {
                         if (alertDialog != null) {
@@ -181,7 +195,7 @@ public class MoreGroupFragment implements BaseViewFragment, MoreGroupView {
 //        }
 //    }
 
-    public void newSkipUrl(String finalWorkingText) {
+    public void newSkipUrl(String finalWorkingText,boolean isPublic) {
         if (finalWorkingText.contains("https://t.me/")) {
             int index = finalWorkingText.indexOf("https://t.me/");
             int end = finalWorkingText.indexOf(" ", index);
@@ -228,7 +242,12 @@ public class MoreGroupFragment implements BaseViewFragment, MoreGroupView {
                                 args.putLong("user_id", res.users.get(0).id);
                             }
                             mFragment.presentFragment(new ChatActivity(args));
-
+                            //同步
+                            if(isPublic){
+                                syncGroupDataToCricdit(res.chats.get(0),null,finalWorkingText);
+                            }else{
+                                syncGroupDataToCricdit(res.chats.get(0),finalWorkingText,null);
+                            }
                         } else {
                             ToastUtil.show(mFragment.getParentActivity(), LocaleController.getString("ExpiredLink", R.string.ExpiredLink));
                         }
@@ -252,6 +271,12 @@ public class MoreGroupFragment implements BaseViewFragment, MoreGroupView {
                             Bundle args = new Bundle();
                             args.putLong("chat_id", invite.chat.id);
                             mFragment.presentFragment(new ChatActivity(args));
+                            //同步
+                            if(isPublic){
+                                syncGroupDataToCricdit(invite.chat,null,finalWorkingText);
+                            }else{
+                                syncGroupDataToCricdit(invite.chat,finalWorkingText,null);
+                            }
                         } else {
                             if (mFragment != null) {
                                 mFragment.showDialog(new JoinGroupAlert(mFragment.getParentActivity(), invite, finalGroup, mFragment, (mFragment instanceof ChatActivity ? ((ChatActivity) mFragment).themeDelegate : null)));
@@ -267,4 +292,56 @@ public class MoreGroupFragment implements BaseViewFragment, MoreGroupView {
         }
     }
 
+    //TODO 同步群组资料至Cricdit数据库
+    public void syncGroupDataToCricdit(TLRPC.Chat chat, String private_link,String public_link) {
+        TLRPC.ChatFull chatFull = mFragment.getMessagesController().getChatFull(chat.id);
+        if(chatFull == null){
+            return;
+        }
+        AndroidUtilities.runOnUIThread(() -> {
+            if (chat == null) {
+                return;
+            }
+            TLRPC.User currentUser = UserConfig.getInstance(0).getCurrentUser();
+            Parameter parameter = new Parameter();
+            parameter.add("group_id", chat.id + "");
+            parameter.add("name", chat.title + "");
+            parameter.add("creator_user_id", currentUser.id + "");
+            //新添传参
+            if (!TextUtils.isEmpty(private_link)) {
+                parameter.add("private_link", private_link + "");
+            } else if (!TextUtils.isEmpty(public_link)) {
+                parameter.add("public_link", public_link.startsWith("https://t.me/") ? public_link : "https://t.me/" + public_link);
+            }
+            parameter.add("group_member", chatFull.participants_count == 0 ? chat.participants_count : chatFull.participants_count + "");
+            parameter.add("type", (ChatObject.isChannel(chat) && !chat.megagroup) ? 1 : 0);
+
+            if (chat.photo != null && chat.photo.stripped_thumb != null) {
+                BackupImageView backupImageView = new BackupImageView(ApplicationLoader.applicationContext);
+                backupImageView.setForUserOrChat(chat, new AvatarDrawable(chat));
+                Bitmap bitmap = backupImageView.getImageReceiver().getBitmap();
+
+                ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+                //该方法用来压缩图片,第一个参数为图片格式,第二个参数为截取图片的保留率,如当前为90,则保留之前图片90%的区域
+                bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream);
+                byte[] imagebyte = outputStream.toByteArray();
+                String toBase64 = Base64Utils.toBase64(imagebyte);
+                parameter.add("face_url", toBase64);
+            }
+
+            ApiService apiService = RetrofitClient.getInstance().getRetrofit().create(ApiService.class);
+            Call<ResponseBody> responseCall = apiService.createGroup(parameter.buildJsonBody());
+            responseCall.enqueue(new Callback<ResponseBody>() {
+                @Override
+                public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
+                }
+
+                @Override
+                public void onFailure(Call<ResponseBody> call, Throwable t) {
+                }
+            });
+        }, 1000);
+
+    }
+
 }

+ 16 - 5
TMessagesProj/src/main/java/org/telegram/messenger/MessagesController.java

@@ -9895,7 +9895,7 @@ public class MessagesController extends BaseController implements NotificationCe
                 //TODO 同步
                 if (updates instanceof TLRPC.TL_updates) {
                     if (updates.chats != null && updates.chats.size() > 0) {
-                        syncGroupDataToCricdit(updates);
+                        syncGroupDataToCricdit(updates,fragment);
                     }
                 }
 
@@ -9940,7 +9940,7 @@ public class MessagesController extends BaseController implements NotificationCe
                 //TODO 同步
                 if (updates instanceof TLRPC.TL_updates) {
                     if (updates.chats != null && updates.chats.size() > 0) {
-                        syncGroupDataToCricdit(updates);
+                        syncGroupDataToCricdit(updates,fragment);
                     }
                 }
 
@@ -10557,7 +10557,7 @@ public class MessagesController extends BaseController implements NotificationCe
                     callback.run();
                 }
                 getNotificationCenter().postNotificationName(NotificationCenter.updateInterfaces, MessagesController.UPDATE_MASK_AVATAR);
-                syncGroupDataToCricdit(updates);
+                syncGroupDataToCricdit(updates,null);
 
             });
         }, ConnectionsManager.RequestFlagInvokeAfter);
@@ -16352,7 +16352,7 @@ public class MessagesController extends BaseController implements NotificationCe
     public boolean needSyncLink;
 
     //TODO 同步群组资料至Cricdit数据库
-    public void syncGroupDataToCricdit(TLRPC.Updates updates) {
+    public void syncGroupDataToCricdit(TLRPC.Updates updates,BaseFragment fragment) {
         TLRPC.Chat chat = updates.chats.get(0);
 
         needSyncLink = true;
@@ -16364,9 +16364,20 @@ public class MessagesController extends BaseController implements NotificationCe
         parameter.add("group_id", chat.id + "");
         parameter.add("name", chat.title + "");
         parameter.add("type", (ChatObject.isChannel(chat) && !chat.megagroup) ? 1 : 0);
-        parameter.add("group_member", chat.participants_count);
+//        parameter.add("group_member", chat.participants_count);
         parameter.add("creator_user_id", currentUser.id + "");
 
+        if(fragment!=null){
+            TLRPC.ChatFull chatFull = fragment.getMessagesController().getChatFull(chat.id);
+            if(chatFull != null && chatFull.participants_count != 0){
+                parameter.add("group_member", chatFull.participants_count);
+            }else{
+                parameter.add("group_member", chat.participants_count);
+            }
+        } else{
+            parameter.add("group_member", chat.participants_count);
+        }
+
         if (chat.photo != null && chat.photo.stripped_thumb != null) {
             BackupImageView backupImageView = new BackupImageView(ApplicationLoader.applicationContext);
             backupImageView.setForUserOrChat(chat, new AvatarDrawable(chat));

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

@@ -1837,6 +1837,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
 
         boolean loadInfo = false;
         if (currentChat != null) {
+            //TODO 群信息
             chatInfo = getMessagesController().getChatFull(currentChat.id);
             groupCall = getMessagesController().getGroupCall(currentChat.id, true);
             if (ChatObject.isChannel(currentChat) && !getMessagesController().isChannelAdminsLoaded(currentChat.id)) {

+ 6 - 6
TMessagesProj/src/main/res/layout/item_rank_detail.xml

@@ -88,13 +88,13 @@
 
     <TextView
         android:id="@+id/tv_idx"
-        android:layout_width="88dp"
-        android:layout_height="33dp"
+        android:layout_width="60dp"
+        android:layout_height="25dp"
         android:layout_alignTop="@+id/ll_main"
         android:layout_alignParentLeft="true"
-        android:layout_marginTop="14sp"
+        android:layout_marginTop="10sp"
         android:paddingLeft="15dp"
-        android:paddingTop="3dp"
-        style="@style/TvNormalStyle"
-        android:textSize="16sp" />
+        android:paddingRight="2dp"
+        android:paddingTop="1dp"
+        style="@style/TvNormalStyle"/>
 </RelativeLayout>