Ver Fonte

1.优化代码

王鹏鹏 há 2 anos atrás
pai
commit
05c051b75e

+ 90 - 466
tuichat/src/main/java/com/tencent/qcloud/tuikit/tuichat/classicui/widget/input/InputView.java

@@ -3,8 +3,6 @@ package com.tencent.qcloud.tuikit.tuichat.classicui.widget.input;
 import android.annotation.SuppressLint;
 import android.app.Activity;
 import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
 import android.graphics.Rect;
 import android.net.Uri;
 import android.os.Build;
@@ -20,28 +18,23 @@ import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
 import android.view.inputmethod.InputMethodManager;
-import android.webkit.MimeTypeMap;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
+
 import androidx.annotation.Nullable;
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.fragment.app.FragmentManager;
+
 import com.google.gson.Gson;
 import com.google.gson.JsonSyntaxException;
 import com.tencent.imsdk.v2.V2TIMManager;
-import com.tencent.qcloud.tuicore.TUIConstants;
 import com.tencent.qcloud.tuicore.TUICore;
-import com.tencent.qcloud.tuicore.interfaces.TUIExtensionEventListener;
-import com.tencent.qcloud.tuicore.interfaces.TUIExtensionInfo;
 import com.tencent.qcloud.tuicore.interfaces.TUIValueCallback;
 import com.tencent.qcloud.tuicore.util.TUIBuild;
-import com.tencent.qcloud.tuicore.util.ToastUtil;
 import com.tencent.qcloud.tuikit.timcommon.bean.TUIMessageBean;
-import com.tencent.qcloud.tuikit.timcommon.component.face.CustomFace;
-import com.tencent.qcloud.tuikit.timcommon.component.face.Emoji;
 import com.tencent.qcloud.tuikit.timcommon.component.face.FaceManager;
 import com.tencent.qcloud.tuikit.timcommon.interfaces.ChatInputMoreListener;
 import com.tencent.qcloud.tuikit.timcommon.util.ActivityResultResolver;
@@ -67,6 +60,7 @@ import com.tencent.qcloud.tuikit.tuichat.util.ChatMessageParser;
 import com.tencent.qcloud.tuikit.tuichat.util.PermissionHelper;
 import com.tencent.qcloud.tuikit.tuichat.util.TUIChatLog;
 import com.tencent.qcloud.tuikit.tuichat.util.TUIChatUtils;
+
 import java.io.File;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -222,135 +216,105 @@ public class InputView extends LinearLayout implements View.OnClickListener, Tex
         mMoreInputButton.setOnClickListener(this);
         mSendTextButton.setOnClickListener(this);
         mTextInput.addTextChangedListener(this);
-        mTextInput.setOnTouchListener(new OnTouchListener() {
-            @Override
-            public boolean onTouch(View view, MotionEvent motionEvent) {
-                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
-                    if (presenter != null) {
-                        presenter.scrollToNewestMessage();
-                    }
-                    showSoftInput();
+        mTextInput.setOnTouchListener((view, motionEvent) -> {
+            if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
+                if (presenter != null) {
+                    presenter.scrollToNewestMessage();
                 }
-                return false;
+                showSoftInput();
             }
+            return false;
         });
 
-        mTextInput.setOnKeyListener(new OnKeyListener() {
-            @Override
-            public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
-                if (keyCode == KeyEvent.KEYCODE_DEL && keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
-                    if ((isQuoteModel || isReplyModel) && TextUtils.isEmpty(mTextInput.getText().toString())) {
-                        exitReply();
-                    }
+        mTextInput.setOnKeyListener((view, keyCode, keyEvent) -> {
+            if (keyCode == KeyEvent.KEYCODE_DEL && keyEvent.getAction() == KeyEvent.ACTION_DOWN) {
+                if ((isQuoteModel || isReplyModel) && TextUtils.isEmpty(mTextInput.getText().toString())) {
+                    exitReply();
                 }
-                return false;
             }
+            return false;
         });
 
-        mTextInput.setOnEditorActionListener(new TextView.OnEditorActionListener() {
-            @Override
-            public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
-                return false;
-            }
-        });
+        mTextInput.setOnEditorActionListener((textView, i, keyEvent) -> false);
 
-        mTextInput.setOnFocusChangeListener(new OnFocusChangeListener() {
-            @Override
-            public void onFocusChange(View view, boolean focus) {
-                if (!focus && mChatInputHandler != null) {
-                    mChatInputHandler.onUserTyping(false, V2TIMManager.getInstance().getServerTime());
-                }
+        mTextInput.setOnFocusChangeListener((view, focus) -> {
+            if (!focus && mChatInputHandler != null) {
+                mChatInputHandler.onUserTyping(false, V2TIMManager.getInstance().getServerTime());
             }
         });
 
-        mSendAudioButton.setOnTouchListener(new OnTouchListener() {
-            @Override
-            public boolean onTouch(View view, MotionEvent motionEvent) {
-                PermissionHelper.requestPermission(PermissionHelper.PERMISSION_MICROPHONE, new PermissionHelper.PermissionCallback() {
-                    @Override
-                    public void onGranted() {
-                        switch (motionEvent.getAction()) {
-                            case MotionEvent.ACTION_DOWN:
+        mSendAudioButton.setOnTouchListener((view, motionEvent) -> {
+            PermissionHelper.requestPermission(PermissionHelper.PERMISSION_MICROPHONE, new PermissionHelper.PermissionCallback() {
+                @Override
+                public void onGranted() {
+                    switch (motionEvent.getAction()) {
+                        case MotionEvent.ACTION_DOWN:
+                            mAudioCancel = true;
+                            mStartRecordY = motionEvent.getY();
+                            if (mChatInputHandler != null) {
+                                mChatInputHandler.onRecordStatusChanged(ChatInputHandler.RECORD_START);
+                            }
+                            mSendAudioButton.setText(TUIChatService.getAppContext().getString(R.string.release_end));
+                            AudioRecorder.getInstance().startRecord(new AudioRecorder.Callback() {
+                                @Override
+                                public void onCompletion(Boolean success) {
+                                    recordComplete(success);
+                                }
+
+                                @Override
+                                public void onVoiceDb(double db) {}
+                            });
+                            break;
+                        case MotionEvent.ACTION_MOVE:
+                            if (motionEvent.getY() - mStartRecordY < -100) {
                                 mAudioCancel = true;
-                                mStartRecordY = motionEvent.getY();
                                 if (mChatInputHandler != null) {
-                                    mChatInputHandler.onRecordStatusChanged(ChatInputHandler.RECORD_START);
+                                    mChatInputHandler.onRecordStatusChanged(ChatInputHandler.RECORD_CANCEL);
                                 }
-                                mSendAudioButton.setText(TUIChatService.getAppContext().getString(R.string.release_end));
-                                AudioRecorder.getInstance().startRecord(new AudioRecorder.Callback() {
-                                    @Override
-                                    public void onCompletion(Boolean success) {
-                                        recordComplete(success);
-                                    }
-
-                                    @Override
-                                    public void onVoiceDb(double db) {}
-                                });
-                                break;
-                            case MotionEvent.ACTION_MOVE:
-                                if (motionEvent.getY() - mStartRecordY < -100) {
-                                    mAudioCancel = true;
+                            } else {
+                                if (mAudioCancel) {
                                     if (mChatInputHandler != null) {
-                                        mChatInputHandler.onRecordStatusChanged(ChatInputHandler.RECORD_CANCEL);
+                                        mChatInputHandler.onRecordStatusChanged(ChatInputHandler.RECORD_START);
                                     }
-                                } else {
-                                    if (mAudioCancel) {
-                                        if (mChatInputHandler != null) {
-                                            mChatInputHandler.onRecordStatusChanged(ChatInputHandler.RECORD_START);
-                                        }
-                                    }
-                                    mAudioCancel = false;
-                                }
-                                mSendAudioButton.setText(TUIChatService.getAppContext().getString(R.string.release_end));
-                                break;
-                            case MotionEvent.ACTION_CANCEL:
-                            case MotionEvent.ACTION_UP:
-                                mAudioCancel = motionEvent.getY() - mStartRecordY < -100;
-                                if (mChatInputHandler != null) {
-                                    mChatInputHandler.onRecordStatusChanged(ChatInputHandler.RECORD_STOP);
                                 }
-                                AudioRecorder.getInstance().stopRecord();
-                                mSendAudioButton.setText(TUIChatService.getAppContext().getString(R.string.hold_say));
-                                break;
-                            default:
-                                break;
-                        }
+                                mAudioCancel = false;
+                            }
+                            mSendAudioButton.setText(TUIChatService.getAppContext().getString(R.string.release_end));
+                            break;
+                        case MotionEvent.ACTION_CANCEL:
+                        case MotionEvent.ACTION_UP:
+                            mAudioCancel = motionEvent.getY() - mStartRecordY < -100;
+                            if (mChatInputHandler != null) {
+                                mChatInputHandler.onRecordStatusChanged(ChatInputHandler.RECORD_STOP);
+                            }
+                            AudioRecorder.getInstance().stopRecord();
+                            mSendAudioButton.setText(TUIChatService.getAppContext().getString(R.string.hold_say));
+                            break;
+                        default:
+                            break;
                     }
+                }
 
-                    @Override
-                    public void onDenied() {
-                        TUIChatLog.i(TAG, "audio record checkPermission failed");
-                    }
-                });
-                return false;
-            }
+                @Override
+                public void onDenied() {
+                    TUIChatLog.i(TAG, "audio record checkPermission failed");
+                }
+            });
+            return false;
         });
 
-        mTextInput.setOnMentionInputListener(new TIMMentionEditText.OnMentionInputListener() {
-            @Override
-            public void onMentionCharacterInput(String tag) {
-                if ((tag.equals(TIMMentionEditText.TIM_MENTION_TAG) || tag.equals(TIMMentionEditText.TIM_MENTION_TAG_FULL))
-                    && TUIChatUtils.isGroupChat(mChatLayout.getChatInfo().getType())) {
-                    if (mOnInputViewListener != null) {
-                        mOnInputViewListener.onStartGroupMemberSelectActivity();
-                    }
+        mTextInput.setOnMentionInputListener(tag -> {
+            if ((tag.equals(TIMMentionEditText.TIM_MENTION_TAG) || tag.equals(TIMMentionEditText.TIM_MENTION_TAG_FULL))
+                && TUIChatUtils.isGroupChat(mChatLayout.getChatInfo().getType())) {
+                if (mOnInputViewListener != null) {
+                    mOnInputViewListener.onStartGroupMemberSelectActivity();
                 }
             }
         });
 
-        replyCloseBtn.setOnClickListener(new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                exitReply();
-            }
-        });
+        replyCloseBtn.setOnClickListener(v -> exitReply());
 
-        quoteCloseBtn.setOnClickListener(new OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                exitReply();
-            }
-        });
+        quoteCloseBtn.setOnClickListener(v -> exitReply());
     }
 
     public void addInputText(String name, String id) {
@@ -399,12 +363,7 @@ public class InputView extends LinearLayout implements View.OnClickListener, Tex
             }
             // @ 之后要显示软键盘。Activity 没有 onResume 导致无法显示软键盘
             // Afterwards @, the soft keyboard is to be displayed. Activity does not have onResume, so the soft keyboard cannot be displayed
-            ThreadUtils.postOnUiThreadDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    showSoftInput();
-                }
-            }, 200);
+            ThreadUtils.postOnUiThreadDelayed(this::showSoftInput, 200);
         }
     }
 
@@ -471,109 +430,13 @@ public class InputView extends LinearLayout implements View.OnClickListener, Tex
         super.onDetachedFromWindow();
         mTextInput.removeTextChangedListener(this);
         atUserInfoMap.clear();
-
         if (mChatInputHandler != null) {
             mChatInputHandler.onUserTyping(false, V2TIMManager.getInstance().getServerTime());
         }
     }
 
-    protected void startSendPhoto() {
-        TUIChatLog.i(TAG, "startSendPhoto");
-        ActivityResultResolver.getMultipleContent(mInputMoreFragment.getActivity(),
-            new String[] {ActivityResultResolver.CONTENT_TYPE_IMAGE, ActivityResultResolver.CONTENT_TYPE_VIDEO}, new TUIValueCallback<List<Uri>>() {
-                @Override
-                public void onSuccess(List<Uri> uris) {
-                    ThreadUtils.runOnUiThread(() -> sendPhotoVideoMessage(uris));
-                }
-
-                @Override
-                public void onError(int errorCode, String errorMessage) {}
-            });
-    }
-
-    private void sendPhotoVideoMessage(List<Uri> uris) {
-        List<TUIMessageBean> messageBeans = new ArrayList<>();
-        for (Uri data : uris) {
-            TUIChatLog.i(TAG, "onSuccess: " + data);
-            if (data == null) {
-                TUIChatLog.e(TAG, "data is null");
-                continue;
-            }
-
-            String uri = data.toString();
-            if (TextUtils.isEmpty(uri)) {
-                TUIChatLog.e(TAG, "uri is empty");
-                continue;
-            }
-            String filePath = FileUtil.getPathFromUri(data);
-            String fileName = FileUtil.getName(filePath);
-            String fileExtension = FileUtil.getFileExtensionFromUrl(fileName);
-            String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);
-            if (TextUtils.isEmpty(mimeType)) {
-                TUIChatLog.e(TAG, "mimeType is empty.");
-                continue;
-            }
-            if (mimeType.contains("video")) {
-                TUIMessageBean msg = buildVideoMessage(filePath);
-                if (msg == null) {
-                    ToastUtil.toastShortMessage(getResources().getString(R.string.send_failed_file_not_exists));
-                    TUIChatLog.e(TAG, "start send video error data: " + data);
-                } else {
-                    messageBeans.add(msg);
-                }
-            } else if (mimeType.contains("image")) {
-                TUIMessageBean msg = ChatMessageBuilder.buildImageMessage(filePath);
-                if (msg == null) {
-                    TUIChatLog.e(TAG, "start send image error data: " + data);
-                    ToastUtil.toastShortMessage(getResources().getString(R.string.send_failed_file_not_exists));
-                } else {
-                    messageBeans.add(msg);
-                }
-            } else {
-                TUIChatLog.e(TAG, "Send photo or video failed , invalid mimeType : " + mimeType);
-            }
-        }
-        if (mMessageHandler != null) {
-            mMessageHandler.sendMessages(messageBeans);
-            hideSoftInput();
-        }
-    }
-
-    private TUIMessageBean buildVideoMessage(String videoPath) {
-        android.media.MediaMetadataRetriever mmr = new android.media.MediaMetadataRetriever();
-        try {
-            mmr.setDataSource(videoPath);
-            String sDuration = mmr.extractMetadata(android.media.MediaMetadataRetriever.METADATA_KEY_DURATION);
-            Bitmap bitmap = mmr.getFrameAtTime(0, android.media.MediaMetadataRetriever.OPTION_NEXT_SYNC);
-
-            if (bitmap == null) {
-                TUIChatLog.e(TAG, "buildVideoMessage() bitmap is null");
-                return null;
-            }
-
-            String bitmapPath = FileUtil.generateImageFilePath();
-            boolean result = FileUtil.saveBitmap(bitmapPath, bitmap);
-            if (!result) {
-                TUIChatLog.e(TAG, "build video message, save bitmap failed.");
-                return null;
-            }
-            int imgWidth = bitmap.getWidth();
-            int imgHeight = bitmap.getHeight();
-            long duration = Long.parseLong(sDuration);
-
-            return ChatMessageBuilder.buildVideoMessage(bitmapPath, videoPath, imgWidth, imgHeight, duration);
-        } catch (Exception ex) {
-            TUIChatLog.e(TAG, "MediaMetadataRetriever exception " + ex);
-        } finally {
-            mmr.release();
-        }
-
-        return null;
-    }
-
     protected void startCaptureCheckPermission() {
         TUIChatLog.i(TAG, "startCaptureCheckPermission");
-
         PermissionHelper.requestPermission(PermissionHelper.PERMISSION_CAMERA, new PermissionHelper.PermissionCallback() {
             @Override
             public void onGranted() {
@@ -651,123 +514,6 @@ public class InputView extends LinearLayout implements View.OnClickListener, Tex
         });
     }
 
-    protected void startVideoRecordCheckPermission() {
-        TUIChatLog.i(TAG, "startVideoRecordCheckPermission");
-
-        PermissionHelper.requestPermission(PermissionHelper.PERMISSION_CAMERA, new PermissionHelper.PermissionCallback() {
-            @Override
-            public void onGranted() {
-                PermissionHelper.requestPermission(PermissionHelper.PERMISSION_MICROPHONE, new PermissionHelper.PermissionCallback() {
-                    @Override
-                    public void onGranted() {
-                        startVideoRecord();
-                    }
-
-                    @Override
-                    public void onDenied() {
-                        TUIChatLog.i(TAG, "startVideoRecord checkPermission failed");
-                    }
-                });
-            }
-
-            @Override
-            public void onDenied() {
-                TUIChatLog.i(TAG, "startVideoRecord checkPermission failed");
-            }
-        });
-    }
-
-    private void startVideoRecord() {
-        if (TUIChatConfigs.getConfigs().getGeneralConfig().isUseSystemCamera()) {
-            if (TUIBuild.getVersionInt() < Build.VERSION_CODES.N) {
-                PermissionHelper.requestPermission(PermissionHelper.PERMISSION_STORAGE, new PermissionHelper.PermissionCallback() {
-                    @Override
-                    public void onGranted() {
-                        String path = FileUtil.generateExternalStorageVideoFilePath();
-                        systemRecordAndSend(path);
-                    }
-
-                    @Override
-                    public void onDenied() {
-                        TUIChatLog.i(TAG, "startVideoRecord checkPermission failed");
-                    }
-                });
-            } else {
-                String path = FileUtil.generateVideoFilePath();
-                systemRecordAndSend(path);
-            }
-        } else {
-            chatRecordAndSend();
-        }
-    }
-
-    private void systemRecordAndSend(String path) {
-        Uri uri = FileUtil.getUriFromPath(path);
-        if (uri == null) {
-            return;
-        }
-        ActivityResultResolver.takeVideo(mInputMoreFragment, uri, new TUIValueCallback<Boolean>() {
-            @Override
-            public void onSuccess(Boolean object) {
-                File videoFile = new File(path);
-                if (videoFile.exists()) {
-                    TUIMessageBean messageBean = buildVideoMessage(path);
-                    if (mMessageHandler != null) {
-                        mMessageHandler.sendMessage(messageBean);
-                        hideSoftInput();
-                    }
-                }
-            }
-
-            @Override
-            public void onError(int errorCode, String errorMessage) {}
-        });
-    }
-
-    private void chatRecordAndSend() {
-        Bundle bundle = new Bundle();
-        bundle.putInt(TUIChatConstants.CAMERA_TYPE, CameraActivity.BUTTON_STATE_ONLY_RECORDER);
-
-        TUICore.startActivityForResult(mInputMoreFragment, CameraActivity.class, bundle, result -> {
-            Intent videoData = result.getData();
-            if (videoData == null) {
-                return;
-            }
-            Uri videoUri = videoData.getData();
-            if (videoUri != null) {
-                TUIMessageBean messageBean = buildVideoMessage(FileUtil.getPathFromUri(videoUri));
-                if (mMessageHandler != null) {
-                    mMessageHandler.sendMessage(messageBean);
-                    hideSoftInput();
-                }
-            }
-        });
-    }
-
-    protected void startSendFile() {
-        TUIChatLog.i(TAG, "startSendFile");
-        ActivityResultResolver.getSingleContent(mInputMoreFragment.getActivity(), ActivityResultResolver.CONTENT_TYPE_ALL, new TUIValueCallback<Uri>() {
-            @Override
-            public void onSuccess(Uri data) {
-                if (data == null) {
-                    return;
-                }
-                TUIMessageBean info = ChatMessageBuilder.buildFileMessage(data);
-                if (info == null) {
-                    ToastUtil.toastShortMessage(getResources().getString(R.string.send_failed_file_not_exists));
-                    return;
-                }
-                if (mMessageHandler != null) {
-                    mMessageHandler.sendMessage(info);
-                    hideSoftInput();
-                }
-            }
-
-            @Override
-            public void onError(int errorCode, String errorMessage) {}
-        });
-    }
-
     public void setChatInputHandler(ChatInputHandler handler) {
         this.mChatInputHandler = handler;
     }
@@ -872,31 +618,23 @@ public class InputView extends LinearLayout implements View.OnClickListener, Tex
         if (!isSoftInputShown()) {
             imm.toggleSoftInput(0, 0);
         }
-        ThreadUtils.postOnUiThreadDelayed(new Runnable() {
-            @Override
-            public void run() {
-                hideInputMoreLayout();
-                mAudioInputSwitchButton.setImageResource(R.drawable.action_audio_selector);
-                mSendAudioButton.setVisibility(GONE);
-                mTextInput.setVisibility(VISIBLE);
-                mTextInput.requestFocus();
-                Context context = getContext();
-                if (context instanceof Activity) {
-                    Window window = ((Activity) context).getWindow();
-                    if (window != null) {
-                        window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
-                    }
+        ThreadUtils.postOnUiThreadDelayed(() -> {
+            hideInputMoreLayout();
+            mAudioInputSwitchButton.setImageResource(R.drawable.action_audio_selector);
+            mSendAudioButton.setVisibility(GONE);
+            mTextInput.setVisibility(VISIBLE);
+            mTextInput.requestFocus();
+            Context context = getContext();
+            if (context instanceof Activity) {
+                Window window = ((Activity) context).getWindow();
+                if (window != null) {
+                    window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
                 }
             }
         }, 200);
 
         if (mChatInputHandler != null) {
-            postDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    mChatInputHandler.onInputAreaClick();
-                }
-            }, 200);
+            postDelayed(() -> mChatInputHandler.onInputAreaClick(), 200);
         }
     }
 
@@ -949,68 +687,6 @@ public class InputView extends LinearLayout implements View.OnClickListener, Tex
         isShowCustomFace = !disable;
     }
 
-    private void showFaceViewGroup() {
-        TUIChatLog.i(TAG, "showFaceViewGroup");
-        if (mFragmentManager == null) {
-            mFragmentManager = mActivity.getSupportFragmentManager();
-        }
-        if (mFaceFragment == null) {
-            mFaceFragment = new FaceFragment();
-        }
-        hideSoftInput();
-        mInputMoreView.setVisibility(View.VISIBLE);
-        mTextInput.requestFocus();
-        mFaceFragment.setShowCustomFace(isShowCustomFace);
-        mFaceFragment.setListener(new FaceFragment.OnEmojiClickListener() {
-            @Override
-            public void onEmojiDelete() {
-                int index = mTextInput.getSelectionStart();
-                Editable editable = mTextInput.getText();
-                boolean isFace = false;
-                if (index <= 0) {
-                    return;
-                }
-                if (editable.charAt(index - 1) == ']') {
-                    for (int i = index - 2; i >= 0; i--) {
-                        if (editable.charAt(i) == '[') {
-                            String faceChar = editable.subSequence(i, index).toString();
-                            if (FaceManager.isFaceChar(faceChar)) {
-                                editable.delete(i, index);
-                                isFace = true;
-                            }
-                            break;
-                        }
-                    }
-                }
-                if (!isFace) {
-                    editable.delete(index - 1, index);
-                }
-            }
-
-            @Override
-            public void onEmojiClick(Emoji emoji) {
-                int index = mTextInput.getSelectionStart();
-                Editable editable = mTextInput.getText();
-                editable.insert(index, emoji.getFaceKey());
-                FaceManager.handlerEmojiText(mTextInput, editable, true);
-            }
-
-            @Override
-            public void onCustomFaceClick(int groupIndex, CustomFace customFace) {
-                mMessageHandler.sendMessage(ChatMessageBuilder.buildFaceMessage(groupIndex, customFace.getFaceKey()));
-            }
-        });
-        mFragmentManager.beginTransaction().replace(R.id.more_groups, mFaceFragment).commitAllowingStateLoss();
-        if (mChatInputHandler != null) {
-            postDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    mChatInputHandler.onInputAreaClick();
-                }
-            }, 100);
-        }
-    }
-
     private void showCustomInputMoreFragment() {
         TUIChatLog.i(TAG, "showCustomInputMoreFragment");
         if (mFragmentManager == null) {
@@ -1021,12 +697,7 @@ public class InputView extends LinearLayout implements View.OnClickListener, Tex
         mInputMoreView.setVisibility(View.VISIBLE);
         mFragmentManager.beginTransaction().replace(R.id.more_groups, fragment).commitAllowingStateLoss();
         if (mChatInputHandler != null) {
-            postDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    mChatInputHandler.onInputAreaClick();
-                }
-            }, 100);
+            postDelayed(() -> mChatInputHandler.onInputAreaClick(), 100);
         }
     }
 
@@ -1045,12 +716,7 @@ public class InputView extends LinearLayout implements View.OnClickListener, Tex
         mInputMoreView.setVisibility(View.VISIBLE);
         mFragmentManager.beginTransaction().replace(R.id.more_groups, mInputMoreFragment).commitAllowingStateLoss();
         if (mChatInputHandler != null) {
-            postDelayed(new Runnable() {
-                @Override
-                public void run() {
-                    mChatInputHandler.onInputAreaClick();
-                }
-            }, 100);
+            postDelayed(() -> mChatInputHandler.onInputAreaClick(), 100);
         }
     }
 
@@ -1265,48 +931,6 @@ public class InputView extends LinearLayout implements View.OnClickListener, Tex
         return getResources().getString(stringID);
     }
 
-    private List<InputMoreActionUnit> getExtensionInputMoreList() {
-        List<InputMoreActionUnit> list = new ArrayList<>();
-
-        Map<String, Object> param = new HashMap<>();
-        param.put(TUIConstants.TUIChat.Extension.InputMore.CONTEXT, getContext());
-        if (ChatInfo.TYPE_C2C == mChatInfo.getType()) {
-            param.put(TUIConstants.TUIChat.Extension.InputMore.USER_ID, mChatInfo.getId());
-        } else {
-            param.put(TUIConstants.TUIChat.Extension.InputMore.GROUP_ID, mChatInfo.getId());
-        }
-        if (mChatInfo.getType() == ChatInfo.TYPE_GROUP && TUIChatUtils.isTopicGroup(mChatInfo.getId())) {
-            param.put(TUIConstants.TUIChat.Extension.InputMore.FILTER_VIDEO_CALL, true);
-            param.put(TUIConstants.TUIChat.Extension.InputMore.FILTER_VOICE_CALL, true);
-        } else {
-            param.put(TUIConstants.TUIChat.Extension.InputMore.FILTER_VIDEO_CALL, !TUIChatConfigs.getConfigs().getGeneralConfig().isEnableVideoCall());
-            param.put(TUIConstants.TUIChat.Extension.InputMore.FILTER_VOICE_CALL, !TUIChatConfigs.getConfigs().getGeneralConfig().isEnableVoiceCall());
-        }
-        param.put(TUIConstants.TUIChat.Extension.InputMore.INPUT_MORE_LISTENER, chatInputMoreListener);
-        List<TUIExtensionInfo> extensionList = TUICore.getExtensionList(TUIConstants.TUIChat.Extension.InputMore.CLASSIC_EXTENSION_ID, param);
-        for (TUIExtensionInfo extensionInfo : extensionList) {
-            if (extensionInfo != null) {
-                String name = extensionInfo.getText();
-                int icon = (int) extensionInfo.getIcon();
-                int priority = extensionInfo.getWeight();
-                InputMoreActionUnit unit = new InputMoreActionUnit() {
-                    @Override
-                    public void onAction(String chatInfoId, int chatType) {
-                        TUIExtensionEventListener extensionListener = extensionInfo.getExtensionListener();
-                        if (extensionListener != null) {
-                            extensionListener.onClicked(null);
-                        }
-                    }
-                };
-                unit.setName(name);
-                unit.setIconResId(icon);
-                unit.setPriority(priority);
-                list.add(unit);
-            }
-        }
-        return list;
-    }
-
     public void disableAudioInput(boolean disable) {
         mAudioInputDisable = disable;
         if (disable) {