Files
assistant-android/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java

791 lines
37 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.gh.gamecenter.personal;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.database.sqlite.SQLiteException;
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.facebook.drawee.view.SimpleDraweeView;
import com.gh.base.fragment.BaseLazyFragment;
import com.gh.common.databind.BindingAdapters;
import com.gh.common.notifier.Notifier;
import com.gh.common.util.CheckLoginUtils;
import com.gh.common.util.DataUtils;
import com.gh.common.util.DialogUtils;
import com.gh.common.util.DirectUtils;
import com.gh.common.util.DisplayUtils;
import com.gh.common.util.EntranceUtils;
import com.gh.common.util.ImageUtils;
import com.gh.common.util.LogUtils;
import com.gh.common.util.LoginHelper;
import com.gh.common.util.MtaHelper;
import com.gh.common.util.NetworkUtils;
import com.gh.common.util.PackageUtils;
import com.gh.common.util.SPUtils;
import com.gh.common.util.StringUtils;
import com.gh.common.util.TimeUtils;
import com.gh.common.util.ToastUtils;
import com.gh.common.view.AvatarBorderView;
import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.GameDetailActivity;
import com.gh.gamecenter.MainActivity;
import com.gh.gamecenter.MessageActivity;
import com.gh.gamecenter.NewsDetailActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.entity.AppEntity;
import com.gh.gamecenter.entity.Badge;
import com.gh.gamecenter.entity.BadgeEntity;
import com.gh.gamecenter.entity.FunctionalGroupEntity;
import com.gh.gamecenter.entity.FunctionalLinkEntity;
import com.gh.gamecenter.entity.FunctionalMessageType;
import com.gh.gamecenter.entity.LinkEntity;
import com.gh.gamecenter.entity.LoginTokenEntity;
import com.gh.gamecenter.entity.MessageUnreadEntity;
import com.gh.gamecenter.entity.SignEntity;
import com.gh.gamecenter.entity.UserInfoEntity;
import com.gh.gamecenter.eventbus.EBConcernChanged;
import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBReuse;
import com.gh.gamecenter.eventbus.EBSkip;
import com.gh.gamecenter.fragment.MainWrapperFragment;
import com.gh.gamecenter.manager.UserManager;
import com.gh.gamecenter.message.MessageUnreadRepository;
import com.gh.gamecenter.message.MessageUnreadViewModel;
import com.gh.gamecenter.personalhome.UserHomeViewModel;
import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity;
import com.gh.gamecenter.retrofit.BiResponse;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
import com.gh.gamecenter.room.AppDatabase;
import com.gh.gamecenter.subject.SubjectActivity;
import com.gh.gamecenter.user.UserViewModel;
import com.google.android.material.appbar.AppBarLayout;
import com.halo.assistant.HaloApp;
import com.jakewharton.rxbinding2.view.RxView;
import com.lightgame.utils.Utils;
import com.tencent.connect.common.Constants;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import org.jetbrains.annotations.NotNull;
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.HttpException;
import static com.gh.gamecenter.fragment.MainWrapperFragment.INDEX_PERSONAL;
public class PersonalFragment extends BaseLazyFragment {
@BindView(R.id.list_refresh)
SwipeRefreshLayout mListRefresh;
@BindView(R.id.appbar)
AppBarLayout appbar;
@BindView(R.id.toolbar)
Toolbar toolbar;
@BindView(R.id.personal_sign)
ImageView mPersonalSign;
@BindView(R.id.personal_msg)
ImageView mPersonalMsg;
@BindView(R.id.login_message_hint)
TextView mLoginMessageHint;
@BindView(R.id.personal_user_icon)
AvatarBorderView mUserIcon;
@BindView(R.id.personal_user_small_icon)
SimpleDraweeView mUserIconSmall;
// @BindView(R.id.personal_user_badge)
// SimpleDraweeView mUserBadge;
@BindView(R.id.personal_login)
View mPersonalLogin;
@BindView(R.id.personal_home)
TextView mPersonalHome;
@BindView(R.id.personal_user_name)
TextView mPersonalUserName;
@BindView(R.id.personal_user_name_small)
TextView mPersonalUserNameSmall;
@BindView(R.id.personal_badge)
RelativeLayout mPersonalBadge;
@BindView(R.id.personal_badge_tv)
TextView mPersonalBadgeTv;
@BindView(R.id.personal_badge_icon)
SimpleDraweeView mPersonalBadgeIcon;
@BindView(R.id.personal_badge_tips)
View mPersonalBadgeTips;
@BindView(R.id.personal_func)
RecyclerView mFuncRecyclerView;
@BindView(R.id.personal_new_fans_tips)
View personalNewFansTips;
@BindView(R.id.personal_background)
SimpleDraweeView mPersonalBackground;
@BindView(R.id.personal_background_shadow)
View mPersonalBackgroundShadow;
public final static String LOGIN_TAG = "login_tag"; //登入标识
public final static String LOGOUT_TAG = "logout_tag"; // 登出标识
private final static String MESSAGE_READ_OVER = "MESSAGE_READ_OVER";
private final static String SP_BADGE_RECORD_SEVEN_DAY = "badgeRecordSevenDay";
private final static int REQUEST_MESSAGE = 199;
private UserInfoEntity mUserInfoEntity;
private AppDatabase mDatabase;
private UserViewModel mUserViewModel;
private MessageUnreadViewModel mUnreadViewModel;
private UserHomeViewModel mUserHomeViewModel;
private PersonalViewModel mPersonalViewModel;
private PersonalFunctionGroupAdapter mPersonalFuncGroupAdapter;
private boolean mIsLogging = false;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Constants.REQUEST_LOGIN) { // QQ Login callback
LoginHelper.onQQLoginCallback(requestCode, resultCode, data);
} else if (requestCode == 32973) {// 32973 WeiBo requestCode
LoginHelper.onWeiboLoginCallback(requestCode, resultCode, data);
} else if (requestCode == REQUEST_MESSAGE) {
if (mUnreadViewModel != null) mUnreadViewModel.retry();
}
}
@Override
protected int getLayoutId() {
return R.layout.fragment_personal_stub;
}
@Override
protected boolean useButterKnife() {
return false;
}
@SuppressLint("CheckResult")
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDatabase = AppDatabase.getInstance(getContext());
final UserViewModel.Factory factory = new UserViewModel.Factory(getActivity().getApplication());
mUserViewModel = ViewModelProviders.of(this, factory).get(UserViewModel.class);
mUserHomeViewModel = ViewModelProviders.of(this, new UserHomeViewModel.Factory(HaloApp.getInstance().getApplication(),
UserManager.getInstance().getUserId())).get(UserHomeViewModel.class);
mUnreadViewModel = ViewModelProviders.of(this,
new MessageUnreadViewModel.Factory(HaloApp.getInstance().getApplication())).get(MessageUnreadViewModel.class);
mPersonalViewModel = ViewModelProviders.of(this).get(PersonalViewModel.class);
observeNoneUIRelatedChanges();
}
@Override
public void onFragmentFirstVisible() {
super.onFragmentFirstVisible();
inflateRealView();
observeUIRelatedChanges();
}
private void inflateRealView() {
try {
mCachedView = ((ViewStub) (mCachedView.findViewById(R.id.stub))).inflate();
} catch (Exception e) {
e.printStackTrace();
}
ButterKnife.bind(this, mCachedView);
mPersonalFuncGroupAdapter = new PersonalFunctionGroupAdapter(requireContext());
mFuncRecyclerView.setLayoutManager(new LinearLayoutManager(requireContext()));
mFuncRecyclerView.setAdapter(mPersonalFuncGroupAdapter);
mFuncRecyclerView.addItemDecoration(new VerticalItemDecoration(requireContext(), 8f, false));
int statusBarHeight = Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT ? 0 : DisplayUtils.getStatusBarHeight(getResources());
ViewGroup.LayoutParams params = toolbar.getLayoutParams();
params.height = DisplayUtils.dip2px(50) + statusBarHeight;
toolbar.setLayoutParams(params);
appbar.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
int absOffset = Math.abs(verticalOffset);
int invisibleOffset = DisplayUtils.dip2px(40F);
if (absOffset <= invisibleOffset) {
mUserIconSmall.setVisibility(View.GONE);
mPersonalUserNameSmall.setVisibility(View.GONE);
} else {
mUserIconSmall.setVisibility(View.VISIBLE);
mPersonalUserNameSmall.setVisibility(View.VISIBLE);
}
mListRefresh.setEnabled(absOffset <= 2);
});
mListRefresh.setColorSchemeColors(ContextCompat.getColor(requireContext(), R.color.theme));
mListRefresh.setProgressViewOffset(false, 0, DisplayUtils.dip2px(80) + DisplayUtils.getStatusBarHeight(requireContext().getResources()));
mListRefresh.setOnRefreshListener(() -> {
mPersonalViewModel.getHaloAddons();
if (CheckLoginUtils.isLogin()) {
mUnreadViewModel.retry();
MessageUnreadRepository.INSTANCE.loadMessageUnreadTotal(false);
mUserHomeViewModel.getBadgeList();
mUserHomeViewModel.availableBadges();
}
mBaseHandler.postDelayed(() -> {
mListRefresh.setRefreshing(false);
}, 2000);
MtaHelper.onEvent("我的光环_新", "下拉刷新", "下拉刷新");
});
MessageUnreadRepository.INSTANCE.loadMessageUnreadTotal(true);
}
private void observeNoneUIRelatedChanges() {
mPersonalViewModel.getHaloAddons();
mUserViewModel.getLoginObsUserinfo().observe(this, userInfoEntity -> {
UserInfoEntity notifyUserInfo;
if (userInfoEntity != null) {
notifyUserInfo = userInfoEntity.getData();
} else {
notifyUserInfo = null;
}
if (notifyUserInfo != null && mUserInfoEntity == null) { // 单个用户,首次触发
EventBus.getDefault().post(new EBConcernChanged());
LoginTokenEntity loginTokenEntity = UserManager.getInstance().getLoginTokenEntity();
if (mIsLogging && loginTokenEntity != null) {
String loginType = loginTokenEntity.getLoginType();
LogUtils.login("success", loginType, getLoginEntranceByType(loginType));
mIsLogging = false;
}
}
mUserInfoEntity = notifyUserInfo;
if (notifyUserInfo == null) {
mUnreadViewModel.clean();
EventBus.getDefault().post(new EBConcernChanged());
}
});
mPersonalViewModel.getHaloAddData().observe(this, datas -> {
if (!datas.isEmpty()) {
MessageUnreadRepository.INSTANCE.loadMessageUnreadTotal(false);
}
});
mUnreadViewModel.getLiveData().observe(this
, messageUnread -> {
if (messageUnread != null && messageUnread.getTotal() > 0) {
// 第一次开启应用时检查消息中心看有没有未读消息确定需不需要弹 Notifier 通知
showNotifier(messageUnread);
}
});
}
@SuppressLint("CheckResult")
private void observeUIRelatedChanges() {
mUserViewModel.getLoginObsUserinfo().observe(this, userInfoEntity -> {
if (userInfoEntity != null && userInfoEntity.getData() != null) {
changeLoginState(true);
} else {
changeLoginState(false);
}
});
mUserHomeViewModel.getBadges().observe(this, badgeEntities -> {
mPersonalBadgeIcon.setImageURI("");
if (badgeEntities.isEmpty()) {
mPersonalBadgeTv.setText("领取徽章");
} else {
mPersonalBadgeTv.setText(String.format(Locale.CHINA, "%d枚徽章", badgeEntities.size()));
for (BadgeEntity badgeEntity : badgeEntities) {
if (badgeEntity.getWear()) {
ImageUtils.display(mPersonalBadgeIcon, badgeEntity.getIcon());
mPersonalBadgeIcon.setOnClickListener(v -> DialogUtils.showViewBadgeDialog(requireContext(), new Badge(badgeEntity.getName(), badgeEntity.getIcon(), badgeEntity.getActions()),
() -> DirectUtils.directToBadgeWall(requireContext(), mUserInfoEntity.getUserId(), mUserInfoEntity.getName(), mUserInfoEntity.getIcon())));
break;
}
}
}
});
mUserHomeViewModel.getAvailableBadgeCount().observe(this, count -> mPersonalBadgeTips.setVisibility(count > 0 ? View.VISIBLE : View.GONE));
mUserHomeViewModel.getAvailableBadge().observe(this, badge -> {
// 徽章领取弹窗每隔7天弹出一次所以要判断现在是否是上一次弹出的第7天或者之后
if (badge != null && System.currentTimeMillis() >= SPUtils.getLong(SP_BADGE_RECORD_SEVEN_DAY)) {
// 徽章领取弹窗每隔7天弹出一次所以本次弹出后就记录7天后的时间戳
SPUtils.setLong(SP_BADGE_RECORD_SEVEN_DAY, TimeUtils.getStartTimeOfDay(System.currentTimeMillis() + 86400000 * 6));
DialogUtils.showReceiveBadgeDialog(requireContext(), badge,
() -> RetrofitManager.getInstance(requireContext()).getApi()
.applyOrReceiveBadge(badge.getId())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BiResponse<ResponseBody>() {
@Override
public void onSuccess(ResponseBody data) {
if ("self".equals(badge.getReceive().getType())) {
ToastUtils.INSTANCE.showToast("领取成功");
} else {
ToastUtils.INSTANCE.showToast("申请成功");
}
// 跳转到徽章详情
DirectUtils.directToBadgeDetail(requireContext(), mUserInfoEntity.getUserId(), badge.getId());
}
@Override
public void onFailure(@NotNull Exception exception) {
super.onFailure(exception);
if ("self".equals(badge.getReceive().getType())) {
ToastUtils.INSTANCE.showToast("领取失败");
} else {
ToastUtils.INSTANCE.showToast("申请失败");
}
}
}));
}
});
mPersonalViewModel.getHaloAddData().observe(this, datas -> {
if (!datas.isEmpty()) {
mPersonalFuncGroupAdapter.setListData(datas);
checkUpdate();
}
});
mUnreadViewModel.getLiveData().observe(this
, messageUnread -> {
if (messageUnread != null && messageUnread.getTotal() > 0) {
personalNewFansTips.setVisibility(messageUnread.getFans() > 0 ? View.VISIBLE : View.GONE);
mPersonalHome.setText(messageUnread.getFans() > 0 ? ((messageUnread.getFans() < 100 ? messageUnread.getFans() : "99+") + "位新粉丝") : "个人主页");
int count = messageUnread.getTotal() - messageUnread.getFans();
mLoginMessageHint.setVisibility(count > 0 ? View.VISIBLE : View.GONE);
BindingAdapters.setMessageUnread(mLoginMessageHint, count);
} else {
mLoginMessageHint.setVisibility(View.GONE);
mPersonalHome.setText("个人主页");
personalNewFansTips.setVisibility(View.GONE);
EventBus.getDefault().post(new EBReuse(MESSAGE_READ_OVER));
}
});
mUnreadViewModel.getZixunConcernLiveData().observe(this, hasConcern -> {
notifyItemChange("游戏动态", hasConcern ? FunctionalMessageType.NEW_MESSAGE : null);
});
mUnreadViewModel.getAddonsUnreadLiveData().observe(this, entity -> {
notifyItemChange("我的收藏", entity.getFavorite() > 0 ? FunctionalMessageType.NEW_MESSAGE : null);
});
// 微信/签到
RxView.clicks(mPersonalSign)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(aVoid -> {
if (CheckLoginUtils.isLogin()) {
MtaHelper.onEvent("我的光环", "签到");
MtaHelper.onEvent("我的光环_新", "签到", "点击签到");
sign();
} else {
MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "签到");
CheckLoginUtils.checkLogin(getContext(), "我的光环-签到", () -> {
});
}
});
}
@Override
public void onFragmentResume() {
super.onFragmentResume();
if (NetworkUtils.isNetworkConnected(requireContext())) {
mUnreadViewModel.retry();
mUserHomeViewModel.getBadgeList();
mUserHomeViewModel.availableBadges();
}
int currentItem = ((MainWrapperFragment) getParentFragment()).getCurrentItem();
if (currentItem == INDEX_PERSONAL) {
DisplayUtils.setLightStatusBar(requireActivity(), false);
}
}
private void showNotifier(MessageUnreadEntity messageUnread) {
if (mUnreadViewModel.isFirstTimeInit()) {
mUnreadViewModel.flagFirstTimeInit(false);
if (messageUnread.getMeta() != null && messageUnread.getMeta().getUser() != null) {
if (messageUnread.getMeta() != null) {
String displayText = StringUtils.shrinkStringWithDot(messageUnread.getMeta().getUser().getName(), 8);
String suffixText;
if ("follow_question".equals(messageUnread.getMeta().getType())) {
suffixText = "回答了你关注的问题";
} else {
suffixText = "回答了你的问题";
}
displayText += suffixText;
String content = messageUnread.getMeta().getAnswerId() + displayText;
if (Notifier.shouldShowNotifier(content)) {
Notifier.create(getActivity())
.setText(displayText)
.setDuration(5000)
.setIcon(messageUnread.getMeta().getUser().getIcon())
.setOnClickListener(view -> {
Bundle bundle = new Bundle();
bundle.putString(EntranceUtils.KEY_ANSWER_ID, messageUnread.getMeta().getAnswerId());
bundle.putString(EntranceUtils.KEY_ENTRANCE, EntranceUtils.ENTRANCE_UMENG);
bundle.putString(EntranceUtils.KEY_TO, AnswerDetailActivity.class.getName());
EntranceUtils.jumpActivity(getActivity(), bundle);
MtaHelper.onEvent("消息弹窗", suffixText, "Does not contains any parameter.");
// 标记已读
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("type", messageUnread.getMeta().getType());
RequestBody body = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString());
RetrofitManager.getInstance(requireContext()).getApi()
.postMessageRead(UserManager.getInstance().getUserId(), messageUnread.getMeta().getMessageId(), body)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<ResponseBody>() {
@Override
public void onResponse(@Nullable ResponseBody response) {
super.onResponse(response);
MessageUnreadRepository.INSTANCE.loadMessageUnreadData();
}
});
} catch (Exception e) {
e.printStackTrace();
}
Notifier.hide();
})
.show(true, 500L);
Notifier.tagNotifierAsShowed(content);
}
}
}
}
}
@OnClick({R.id.toolbar, R.id.collapsingToolbar, R.id.iv_arrow, R.id.personal_info, R.id.personal_login, R.id.personal_user_small_icon, R.id.personal_user_icon, R.id.personal_msg,
R.id.personal_user_name_small, R.id.personal_user_name, R.id.personal_badge, R.id.personal_home})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.collapsingToolbar:
case R.id.toolbar:
case R.id.personal_info:
if (mUserInfoEntity == null) {
CheckLoginUtils.checkLogin(getContext(), "我的光环-手机登录", null);
}
break;
case R.id.personal_login:
MtaHelper.onEvent("我的光环_新", "立即登录", "点击登录");
CheckLoginUtils.checkLogin(getContext(), "我的光环-立即登录", null);
break;
case R.id.personal_msg:
if (CheckLoginUtils.isLogin()) {
MtaHelper.onEvent("我的光环", "消息");
MtaHelper.onEvent("我的光环_新", "消息中心", "点击消息中心");
startActivityForResult(MessageActivity.getIntent(getContext(), "(我的光环)+(消息中心)"), REQUEST_MESSAGE);
} else {
MtaHelper.onEvent("我的光环_新", "功能入口-跳转登录", "消息中心");
CheckLoginUtils.checkLogin(getContext(), "我的光环-消息", () -> {
});
}
break;
case R.id.personal_user_small_icon:
case R.id.personal_user_icon:
if (mUserInfoEntity != null) {
MtaHelper.onEvent("我的光环", "个人中心");
MtaHelper.onEvent("我的光环_新", "头像", "点击头像");
DirectUtils.directToHomeActivity(requireContext(), UserManager.getInstance().getUserId(), "", "我的光环");
} else {
MtaHelper.onEvent("我的光环", "手机登录");
CheckLoginUtils.checkLogin(getContext(), "我的光环-手机登录", null);
}
break;
case R.id.personal_user_name_small:
case R.id.personal_user_name:
if (mUserInfoEntity != null) {
MtaHelper.onEvent("我的光环", "个人中心");
MtaHelper.onEvent("我的光环_新", "昵称", "点击昵称");
DirectUtils.directToHomeActivity(requireContext(), UserManager.getInstance().getUserId(), "", "我的光环");
} else {
MtaHelper.onEvent("我的光环", "手机登录");
CheckLoginUtils.checkLogin(getContext(), "我的光环-手机登录", null);
}
break;
case R.id.iv_arrow:
case R.id.personal_home:
if (mUserInfoEntity != null) {
MtaHelper.onEvent("我的光环", "个人主页");
MtaHelper.onEvent("我的光环_新", "个人主页", "进入个人主页");
DirectUtils.directToHomeActivity(requireContext(), UserManager.getInstance().getUserId(), "", "我的光环");
} else {
CheckLoginUtils.checkLogin(getContext(), "我的光环-个人主页", null);
}
break;
case R.id.personal_badge:
MtaHelper.onEvent("我的光环_新", "徽章中心", "进入徽章中心");
DirectUtils.directToBadgeWall(requireContext(), mUserInfoEntity.getUserId(), mUserInfoEntity.getName(), mUserInfoEntity.getIcon());
break;
default:
break;
}
}
// 连接上网络事件
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBNetworkState busNetworkState) {
if (busNetworkState.isNetworkConnected()
&& UserManager.getInstance().isLoggedIn()
&& (mUserInfoEntity == null || TextUtils.isEmpty(UserManager.getInstance().getToken()))) {
mUserViewModel.retryCheckLogin();
}
if (busNetworkState.isNetworkConnected()) {
mPersonalViewModel.getHaloAddons();
}
}
// @Subscribe(threadMode = ThreadMode.MAIN)
// public void onEventMainThread(EBUISwitch busNine) {
// if (MainWrapperFragment.EB_MAIN_SCROLL_TOP.equals(busNine.getFrom())
// && INDEX_PERSONAL == busNine.getPosition()) {
// //mScrollView.fullScroll(ScrollView.FOCUS_UP);
// }
// }
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBReuse reuse) {
if (MESSAGE_READ_OVER.equals(reuse.getType())) { // 消息阅读完成
if (mLoginMessageHint != null) {
mLoginMessageHint.setVisibility(View.GONE);
}
}
}
private void sign() {
RetrofitManager.getInstance(getContext()).getApi()
.postSign(UserManager.getInstance().getUserId())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<SignEntity>() {
@Override
public void onResponse(SignEntity signEntity) {
mPersonalSign.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.personal_sign_icon_yellow));
if (isCanSign(signEntity.getLastTime())) {
DialogUtils.showSignDialog(getContext(), "签到成功获得经验1"
, getString(R.string.sign_dialog_content, signEntity.getSerialSign())
, getString(R.string.sign_dialog_content2, signEntity.getExperience())
, getSignSkipText(signEntity.getTitle()), () -> {
signSkip(signEntity);
}
);
signEntity.setLastTime(System.currentTimeMillis() / 1000);
} else {
DialogUtils.showSignDialog(getContext(), "今天已签到,明天再来吧~"
, getString(R.string.sign_dialog_content, signEntity.getSerialSign())
, getString(R.string.sign_dialog_content2, signEntity.getExperience())
, getSignSkipText(signEntity.getTitle()), () -> {
signSkip(signEntity);
}
);
}
signEntity.setId(UserManager.getInstance().getUserId());
if (mDatabase.signDao().updateSignEntity(signEntity) <= 0) {
try {
mDatabase.signDao().addSignEntity(signEntity);
} catch (SQLiteException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(HttpException e) {
if (e == null || e.code() != 401) {
toast(R.string.loading_network_error);
}
}
});
}
private boolean isCanSign(long time) {
SimpleDateFormat formatDay = new SimpleDateFormat("dd", Locale.CHINA);
long lastSignTime = time * 1000;
long curTime = Utils.getTime(getContext()) * 1000;
int lastSignDay = Integer.parseInt(formatDay.format(lastSignTime));
int curDay = Integer.parseInt(formatDay.format(curTime));
return lastSignDay != curDay || curTime - lastSignTime > 24 * 60 * 60 * 1000;
}
private String getSignSkipText(String text) {
return TextUtils.isEmpty(text) ? "去首页看看" : text;
}
private void signSkip(SignEntity signEntity) {
SignEntity.Data data = signEntity.getData();
String entrance = "(我的光环)+(签到)";
if (data == null || TextUtils.isEmpty(data.getType())) {
EventBus.getDefault().post(new EBSkip(MainActivity.EB_SKIP_MAIN, MainWrapperFragment.INDEX_HOME));
return;
}
switch (data.getType()) {
case "game":
DataUtils.onMtaEvent(getActivity(), "我的光环_签到跳转", "游戏", signEntity.getTitle());
GameDetailActivity.startGameDetailActivity(getContext(), data.getLink(), entrance);
break;
case "news":
DataUtils.onMtaEvent(getActivity(), "我的光环_签到跳转", "文章", signEntity.getTitle());
startActivity(NewsDetailActivity.getIntentById(getContext(), data.getLink(), entrance));
break;
case "column":
DataUtils.onMtaEvent(getActivity(), "我的光环_签到跳转", "专题", signEntity.getTitle());
SubjectActivity.startSubjectActivity(getContext(), data.getLink(), null, false, entrance);
break;
default:
LinkEntity linkEntity = new LinkEntity();
linkEntity.setType(data.getType());
linkEntity.setLink(data.getLink());
linkEntity.setText(data.getText());
linkEntity.setCommunity(data.getCommunity());
linkEntity.setDisplay(data.getDisplay());
DirectUtils.directToLinkPage(requireContext(), linkEntity, entrance, "");
break;
}
}
private static String getLoginEntranceByType(String loginTag) {
String entrance = "";
switch (loginTag) {
case "qq":
entrance = "我的光环-QQ";
break;
case "wechat":
entrance = "我的光环-微信";
break;
case "weibo":
entrance = "我的光环-新浪微博";
break;
}
return entrance;
}
private void changeLoginState(boolean isLogin) {
if (isLogin) {
// 设置背景
if (mUserInfoEntity.getBackground() != null) {
ImageUtils.display(mPersonalBackground, mUserInfoEntity.getBackground().getUrl());
// 自定义背景才需要加阴影
if (TextUtils.isEmpty(mUserInfoEntity.getBackground().getId())) {
mPersonalBackgroundShadow.setVisibility(View.VISIBLE);
}
}
SignEntity signEntity = mDatabase.signDao().getSignEntityById(UserManager.getInstance().getUserId());
if (signEntity != null && !isCanSign(signEntity.getLastTime())) {
mPersonalSign.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.personal_sign_icon_yellow));
} else {
mPersonalSign.setImageDrawable(ContextCompat.getDrawable(requireContext(), R.drawable.personal_sign_icon_white));
}
if (mUserInfoEntity != null) {
mUserIcon.display(mUserInfoEntity.getIconBorder() == null ? "" : mUserInfoEntity.getIconBorder().getUrl(),
mUserInfoEntity.getIcon(), mUserInfoEntity.getAuth() == null ? "" : mUserInfoEntity.getAuth().getIcon());
ImageUtils.displayIcon(mUserIconSmall, mUserInfoEntity.getIcon());
mPersonalUserName.setVisibility(View.VISIBLE);
mPersonalBadge.setVisibility(View.VISIBLE);
mPersonalHome.setVisibility(View.VISIBLE);
mPersonalLogin.setVisibility(View.GONE);
mPersonalUserName.setText(mUserInfoEntity.getName());
mPersonalUserNameSmall.setText(mUserInfoEntity.getName());
}
mUserHomeViewModel.setUserId(UserManager.getInstance().getUserId());
mUserHomeViewModel.getBadgeList();
mUserHomeViewModel.availableBadges();
MessageUnreadRepository.INSTANCE.loadMessageUnreadTotal(true);
} else {
ImageUtils.display(mPersonalBackground, R.drawable.personal_top_bg);
mPersonalBackgroundShadow.setVisibility(View.GONE);
mUserIcon.display("", "", "");
mUserIconSmall.setImageURI("");
mPersonalBadgeTv.setText("领取徽章");
mPersonalUserNameSmall.setText("立即登录");
mPersonalUserName.setVisibility(View.GONE);
mPersonalHome.setVisibility(View.GONE);
mPersonalBadge.setVisibility(View.GONE);
mPersonalLogin.setVisibility(View.VISIBLE);
if (mLoginMessageHint.getVisibility() == View.VISIBLE) {
mLoginMessageHint.setVisibility(View.GONE);
EventBus.getDefault().post(new EBReuse(MESSAGE_READ_OVER));
}
}
}
private void checkUpdate() {
String channel = HaloApp.getInstance().getChannel();
RetrofitManager.getInstance(getContext())
.getApi()
.getUpdate(PackageUtils.getVersionName(), PackageUtils.getVersionCode(), channel)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<AppEntity>() {
@Override
public void onResponse(AppEntity response) {
super.onResponse(response);
if (response.getVersionCode() > PackageUtils.getVersionCode()) {
notifyItemChange("设置", FunctionalMessageType.NEW_VERSION);
} else {
notifyItemChange("设置", null);
}
}
});
}
private void notifyItemChange(String funcName, FunctionalMessageType msg) {
ArrayList<FunctionalGroupEntity> mEntityList = mPersonalFuncGroupAdapter.getMEntityList();
for (FunctionalGroupEntity mEntity : mEntityList) {
for (FunctionalLinkEntity linkEntity : mEntity.getAddons()) {
if (TextUtils.equals(linkEntity.getType(), funcName)) {
linkEntity.setMessage(msg);
break;
}
}
}
mPersonalFuncGroupAdapter.notifyDataSetChanged();
}
}