diff --git a/app/build.gradle b/app/build.gradle index 21a2b2fbb..f007e17f1 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -282,8 +282,6 @@ dependencies { implementation 'com.github.mmin18:realtimeblurview:1.2.1' - implementation 'com.qiyukf.unicorn:unicorn:8.2.0' - implementation 'com.github.yalantis:ucrop:2.2.7' } diff --git a/app/src/main/java/com/nnbc123/app/MainActivity.java b/app/src/main/java/com/nnbc123/app/MainActivity.java index aaaf52b67..a34a0f6f1 100644 --- a/app/src/main/java/com/nnbc123/app/MainActivity.java +++ b/app/src/main/java/com/nnbc123/app/MainActivity.java @@ -59,7 +59,6 @@ import com.nnbc123.app.main.helper.NoticationsUiHelper; import com.nnbc123.app.miniworld.activity.MiniWorldGuestPageActivity; import com.nnbc123.app.module.Extras; import com.nnbc123.app.module_hall.secretcode.PwdCodeMgr; -import com.nnbc123.app.qiyukefu.CustomerServerHelper; import com.nnbc123.app.quick_pass.QuickPassLoginAct; import com.nnbc123.app.service.DaemonService; import com.nnbc123.app.ui.im.ImInitHelper; @@ -499,7 +498,6 @@ public class MainActivity extends BaseMvpActivity getMvpPresenter().exitRoom(); QuickPassLoginAct.start(MainActivity.this); PmDialogShowMrg.get().onLogout(); - CustomerServerHelper.logout(); } public void onNeedLogin() { @@ -654,8 +652,6 @@ public class MainActivity extends BaseMvpActivity checkShowAnchorCardView(); onTabClick(mCurrentTabType); - - CustomerServerHelper.onLoginInfoUpdate(UserUtils.getUserInfo()); } diff --git a/app/src/main/java/com/nnbc123/app/application/XChatApplication.java b/app/src/main/java/com/nnbc123/app/application/XChatApplication.java index 783ed5d83..929ad6ec7 100644 --- a/app/src/main/java/com/nnbc123/app/application/XChatApplication.java +++ b/app/src/main/java/com/nnbc123/app/application/XChatApplication.java @@ -52,7 +52,6 @@ import com.netease.nimlib.sdk.msg.constant.MsgTypeEnum; import com.netease.nimlib.sdk.msg.model.IMMessage; import com.netease.nimlib.sdk.util.NIMUtil; import com.nnbc123.app.AgentActivity; -import com.nnbc123.app.qiyukefu.CustomerServerHelper; import com.nnbc123.library.common.application.BaseApp; import com.nnbc123.library.common.file.FileHelper; import com.nnbc123.library.utils.ResUtil; @@ -284,8 +283,6 @@ public class XChatApplication extends BaseApp { initLinkedMe(); MobSDK.init(context); MobSDK.submitPolicyGrantResult(true); - } else { - CustomerServerHelper.init(instance, null); } LogUtils.d("init time = " + (System.currentTimeMillis() - startTime) + "ms"); diff --git a/app/src/main/java/com/nnbc123/app/home/fragment/MeFragment.kt b/app/src/main/java/com/nnbc123/app/home/fragment/MeFragment.kt index 9b2e857e5..1a1fc6d1e 100644 --- a/app/src/main/java/com/nnbc123/app/home/fragment/MeFragment.kt +++ b/app/src/main/java/com/nnbc123/app/home/fragment/MeFragment.kt @@ -30,11 +30,9 @@ import com.nnbc123.app.home.activity.VisitorListActivity import com.nnbc123.app.home.adapter.MeCenterAdapter import com.nnbc123.app.home.helper.BannerHelper import com.nnbc123.app.home.helper.OpenRoomHelper -import com.nnbc123.app.qiyukefu.CustomerServerHelper import com.nnbc123.app.skill.activity.SkillHomeActivity import com.nnbc123.app.skill.activity.SkillHomeActivity.Companion.start import com.nnbc123.app.support.LevelIconHelper -import com.nnbc123.app.ui.patriarch.PatriarchModeActivity import com.nnbc123.app.ui.pay.ChargeActivity import com.nnbc123.app.ui.relation.AttentionListActivity import com.nnbc123.app.ui.relation.FansListActivity diff --git a/app/src/main/java/com/nnbc123/app/qiyukefu/CustomerItemInfo.java b/app/src/main/java/com/nnbc123/app/qiyukefu/CustomerItemInfo.java deleted file mode 100644 index f5f73ff64..000000000 --- a/app/src/main/java/com/nnbc123/app/qiyukefu/CustomerItemInfo.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.nnbc123.app.qiyukefu; - -import androidx.annotation.Keep; - -/** - * @author jack - * @Description @link YSFUserInfo - * @Date 2019/3/18 - */ -@Keep -public class CustomerItemInfo { - private String key;//数据项的名称,用于区别不同的数据。 - private int index;//用于排序,显示数据时数据项按index值升序排列;不设定index的数据项将排在后面;index相同或未设定的数据项将按照其在 JSON 中出现的顺序排列。 - private String label;//该项数据显示的名称。 - private String value;//该数据显示的值,类型不做限定,根据实际需要进行设定。 - private String href;//超链接地址。若指定该值,则该项数据将显示为超链接样式,点击后跳转到其值所指定的 URL 地址。 - private boolean hidden;//是否隐藏该item。目前仅对mobile和email有效。 - - - public CustomerItemInfo(String key) { - this.key = key; - } - - public CustomerItemInfo setIndex(int index) { - this.index = index; - return this; - } - - public CustomerItemInfo setLabel(String label) { - this.label = label; - return this; - } - - public CustomerItemInfo setValue(String value) { - this.value = value; - return this; - } - - public CustomerItemInfo setHref(String href) { - this.href = href; - return this; - } - - public CustomerItemInfo setHidden(boolean hidden) { - this.hidden = hidden; - return this; - } -} diff --git a/app/src/main/java/com/nnbc123/app/qiyukefu/CustomerServerHelper.java b/app/src/main/java/com/nnbc123/app/qiyukefu/CustomerServerHelper.java deleted file mode 100644 index 340a0ad9a..000000000 --- a/app/src/main/java/com/nnbc123/app/qiyukefu/CustomerServerHelper.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.nnbc123.app.qiyukefu; - -import android.content.ContentResolver; -import android.content.Context; -import android.net.Uri; - -import androidx.annotation.Nullable; - -import com.google.gson.Gson; -import com.netease.nim.highavailable.lava.base.http.URIUtils; -import com.nnbc123.app.R; -import com.nnbc123.app.application.XChatApplication; -import com.nnbc123.core.auth.AuthModel; -import com.nnbc123.core.user.bean.UserInfo; -import com.nnbc123.library.utils.SingleToastUtil; -import com.nnbc123.xchat_android_constants.XChatConstants; -import com.qiyukf.unicorn.api.ConsultSource; -import com.qiyukf.unicorn.api.UICustomization; -import com.qiyukf.unicorn.api.Unicorn; -import com.qiyukf.unicorn.api.YSFOptions; -import com.qiyukf.unicorn.api.YSFUserInfo; -import com.qiyukf.unicorn.api.customization.input.ActionPanelOptions; -import com.qiyukf.unicorn.api.customization.input.InputPanelOptions; -import com.qiyukf.unicorn.api.event.EventCallback; -import com.qiyukf.unicorn.api.event.EventProcessFactory; -import com.qiyukf.unicorn.api.event.SDKEvents; -import com.qiyukf.unicorn.api.event.UnicornEventBase; -import com.qiyukf.unicorn.api.event.entry.RequestPermissionEventEntry; -import com.soundcloud.android.crop.UriUtil; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author jack - * @Description - * @Date 2019/3/18 - */ -public class CustomerServerHelper { - - public final static String AVATAR_URL = "https://image.zhongjialx.com/new_kficon.png"; - private final static String TITLE = "官方客服"; - private static boolean isInit = false; - - private CustomerServerHelper() { - - } - - public static void onLoginInfoUpdate(@Nullable UserInfo userInfo) { - if (!isInit) - init(XChatApplication.instance(), userInfo); - - if (userInfo != null) { - YSFUserInfo ysfUserInfo = new YSFUserInfo(); - ysfUserInfo.userId = AuthModel.get().getCurrentUid() + ""; - ysfUserInfo.authToken = null; - List userData = new ArrayList<>(); - userData.add(new CustomerItemInfo("real_name").setValue(userInfo.getNick())); - userData.add(new CustomerItemInfo("mobile_phone").setValue(userInfo.getPhone())); - userData.add(new CustomerItemInfo("email").setValue("")); - userData.add(new CustomerItemInfo("avatar").setValue(userInfo.getAvatar())); - userData.add(new CustomerItemInfo("nick") - .setLabel("用户昵称:") - .setValue(userInfo.getNick()) - .setIndex(0)); - - userData.add(new CustomerItemInfo("gender") - .setLabel("性别:") - .setValue(userInfo.getGender() == 1 ? "男" : "女") - .setIndex(1)); - - userData.add(new CustomerItemInfo("erbanNo") - .setLabel("音萌号:") - .setValue(userInfo.getErbanNo() + "") - .setIndex(2)); - - userData.add(new CustomerItemInfo("phone") - .setLabel("手机号:") - .setValue(userInfo.getPhone()) - .setIndex(3)); - - userData.add(new CustomerItemInfo("newUser") - .setLabel("是否新用户:") - .setValue(userInfo.isNewUser() ? "是" : "否") - .setIndex(4)); - - userData.add(new CustomerItemInfo("uid") - .setLabel("uid:") - .setValue("uid:" + userInfo.getUid()) - .setIndex(4)); - - ysfUserInfo.data = new Gson().toJson(userData); - - Unicorn.setUserInfo(ysfUserInfo); - } - } - - public static void init(Context context, @Nullable UserInfo userInfo) { - if (isInit) { - return; - } - isInit = true; - YSFOptions options = new YSFOptions(); - options.uiCustomization = new UICustomization(); - options.uiCustomization.priorityWebAvatar = true; - options.uiCustomization.hideKeyboardOnEnterConsult = true; - if (userInfo != null) { - options.uiCustomization.rightAvatar = userInfo.getAvatar(); - } - Uri uri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" - + context.getResources().getResourcePackageName(R.mipmap.app_logo) + "/" - + context.getResources().getResourceTypeName(R.mipmap.app_logo) + "/" - + context.getResources().getResourceEntryName(R.mipmap.app_logo)); - options.uiCustomization.leftAvatar = uri.toString(); - - options.uiCustomization.titleCenter = true; - options.sdkEvents = new SDKEvents(); - options.sdkEvents.eventProcessFactory = new EventProcessFactory() { - @Override - public UnicornEventBase eventOf(int i) { - if (i == 5) { - return new RequestPermissionEvent(); - } else { - return null; - } - } - }; - // appKey 可以在七鱼管理系统->设置->App 接入 页面找到 - Unicorn.init(context, XChatConstants.QI_YU_KF_KEY, options, new GlideImageLoader(context)); - Unicorn.initSdk(); - } - - public static void contactCustomerServer(Context context) { - if (!isInit) { - return; - } - - if (!AuthModel.get().isImLogin()) { - SingleToastUtil.showToast("数据加载中,请稍后!"); - return; - } - - ConsultSource source = new ConsultSource(null, TITLE, null); - Unicorn.openServiceActivity(context, TITLE, source); - } - - public static void logout() { - Unicorn.logout(); - isInit = false; - } -} diff --git a/app/src/main/java/com/nnbc123/app/qiyukefu/GlideImageLoader.java b/app/src/main/java/com/nnbc123/app/qiyukefu/GlideImageLoader.java deleted file mode 100644 index dd104c50e..000000000 --- a/app/src/main/java/com/nnbc123/app/qiyukefu/GlideImageLoader.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.nnbc123.app.qiyukefu; - -import android.content.Context; -import android.graphics.Bitmap; -import android.graphics.drawable.Drawable; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.target.CustomTarget; -import com.bumptech.glide.request.transition.Transition; -import com.qiyukf.unicorn.api.ImageLoaderListener; -import com.qiyukf.unicorn.api.UnicornImageLoader; - -public class GlideImageLoader implements UnicornImageLoader { - private final Context context; - - public GlideImageLoader(Context context) { - this.context = context.getApplicationContext(); - } - - @Override - public Bitmap loadImageSync(String uri, int width, int height) { - return null; - } - - @Override - public void loadImage(String uri, int width, int height, final ImageLoaderListener listener) { - if (width <= 0 || height <= 0) { - width = height = Integer.MIN_VALUE; - } - - Glide.with(context).asBitmap().load(uri).into(new CustomTarget(width, height) { - - @Override - public void onLoadStarted(@Nullable Drawable placeholder) { - - } - - @Override - public void onLoadFailed(@Nullable Drawable errorDrawable) { - - } - - @Override - public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { - if (listener != null) { - listener.onLoadComplete(resource); - } - } - - @Override - public void onLoadCleared(@Nullable Drawable placeholder) { - - } - }); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/qiyukefu/RequestPermissionEvent.kt b/app/src/main/java/com/nnbc123/app/qiyukefu/RequestPermissionEvent.kt deleted file mode 100644 index fb268c0ec..000000000 --- a/app/src/main/java/com/nnbc123/app/qiyukefu/RequestPermissionEvent.kt +++ /dev/null @@ -1,133 +0,0 @@ -package com.nnbc123.app.qiyukefu - -import android.app.Activity -import android.content.Context -import android.content.Intent -import android.net.Uri -import android.provider.Settings -import androidx.fragment.app.FragmentActivity -import com.chuhai.utils.ktx.asActivity -import com.nnbc123.app.R -import com.nnbc123.app.common.permission.PermissionHelper -import com.nnbc123.app.ui.widget.dialog.CommonTipDialog -import com.nnbc123.app.ui.widget.dialog.RequestPermissionPromptDialog -import com.nnbc123.library.utils.ResUtil -import com.qiyukf.unicorn.api.event.EventCallback -import com.qiyukf.unicorn.api.event.UnicornEventBase -import com.qiyukf.unicorn.api.event.entry.RequestPermissionEventEntry -import com.tbruyelle.rxpermissions2.RxPermissions - -/** - * Created by Max on 2024/1/4 11:10 - * Desc: - **/ -class RequestPermissionEvent : UnicornEventBase { - override fun onEvent( - p0: RequestPermissionEventEntry?, - p1: Context?, - p2: EventCallback? - ) { - val tips = getPermissionTips(p0?.scenesType) - val activity = (p1?.asActivity() as? FragmentActivity) - val perms = p0?.permissionList?.toTypedArray() - if (RequestPermissionPromptDialog.isNeedPrompt() - && tips != null - && activity != null - && perms != null - ) { - val rxPermissions = RxPermissions(activity) - if (PermissionHelper.isAllGranted(rxPermissions, * perms)) { - p2?.onNotPorcessEvent() - } else { - RequestPermissionPromptDialog(p1, tips).show() - val d = rxPermissions.request(*perms).subscribe({ aBoolean: Boolean? -> - RequestPermissionPromptDialog.dismissCurrentDialog() - if (aBoolean == true) { - p2?.onProcessEventSuccess(p0) - } else { - showDeniedTips(p1, tips) - p2?.onInterceptEvent() - } - }) { obj: Throwable -> - RequestPermissionPromptDialog.dismissCurrentDialog() - obj.printStackTrace() - p2?.onNotPorcessEvent() - } - } - } else { - p2?.onNotPorcessEvent() - } - } - - override fun onDenyEvent(p0: Context?, p1: RequestPermissionEventEntry?): Boolean { - if (p0 == null) { - return super.onDenyEvent(p0, p1) - } - val tips = getPermissionTips(p1?.scenesType) - return if (tips != null) { - showDeniedTips(p0, tips) - true - } else { - super.onDenyEvent(p0, p1) - } - } - - /** - * 获取场景对应的权限提示信息(不需要提示的权限返回null) - */ - private fun getPermissionTips(scenesType: Int?): String? { - when (scenesType) { - RequestPermissionEventEntry.SCENES_TAKE_AUDIO -> { - return ResUtil.getString(R.string.permission_denied_tips_mic) - } - - RequestPermissionEventEntry.SCENES_TAKE_VIDEO -> { - return StringBuffer().append("1.") - .append(ResUtil.getString(R.string.permission_denied_tips_camera)) - .append("\n2.").append(ResUtil.getString(R.string.permission_denied_tips_mic)) - .toString() - } - - RequestPermissionEventEntry.SCENES_TAKE_PHOTO -> { - return ResUtil.getString(R.string.permission_denied_tips_camera) - } - - RequestPermissionEventEntry.SCENES_SELECT_MEDIA, - RequestPermissionEventEntry.SCENES_SAVE_IMAGE, - RequestPermissionEventEntry.SCENES_SAVE_VIDEO, - RequestPermissionEventEntry.SCENES_SELECT_VIDEO, - RequestPermissionEventEntry.SCENES_SELECT_FILE, - RequestPermissionEventEntry.SCENES_SELECT_IMAGE, - RequestPermissionEventEntry.SCENES_VIDEO_CHAT -> { - return ResUtil.getString(R.string.permission_denied_tips_image) - } - - else -> { - return null - } - } - } - - private fun showDeniedTips(context: Context, message: String) { - CommonTipDialog(context).apply { - setTipMsg(message) - setOkText("去设置") - setOnActionListener( - object : CommonTipDialog.OnActionListener { - override fun onOk() { - //同意跳到应用详情页面 - val packageUri = - Uri.parse("package:${context.packageName}") - val intent = Intent( - Settings.ACTION_APPLICATION_DETAILS_SETTINGS, - packageUri - ) - (context as? Activity)?.startActivityForResult( - intent, 0 - ) - } - } - ) - }.show() - } -} \ No newline at end of file