主页底部Tab加载逻辑优化

This commit is contained in:
huangjian
2022-01-17 18:25:49 +08:00
parent 80826bb71b
commit c8b3da12bb
4 changed files with 57 additions and 33 deletions

View File

@@ -1,7 +1,9 @@
package com.yizhuan.xchat_android_core;
import android.content.Context;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import com.google.gson.Gson;
@@ -12,11 +14,13 @@ import com.yizhuan.xchat_android_core.auth.entity.AccountInfo;
import com.yizhuan.xchat_android_core.auth.entity.ThirdUserInfo;
import com.yizhuan.xchat_android_core.auth.entity.TicketInfo;
import com.yizhuan.xchat_android_core.gift.bean.GiftListInfo;
import com.yizhuan.xchat_android_core.home.bean.MainTabInfo;
import com.yizhuan.xchat_android_core.initial.SplashComponent;
import com.yizhuan.xchat_android_core.initial.bean.InitInfo;
import com.yizhuan.xchat_android_core.noble.NobleConfig;
import com.yizhuan.xchat_android_core.noble.NobleRight;
import com.yizhuan.xchat_android_core.utils.CurrentTimeUtils;
import com.yizhuan.xchat_android_core.utils.SharedPreferenceUtils;
import com.yizhuan.xchat_android_library.utils.config.BasicConfig;
import com.yizhuan.xchat_android_library.utils.pref.ObjectPref;
import com.yizhuan.xchat_android_library.utils.pref.SettingsPref;
@@ -27,13 +31,12 @@ import java.util.List;
import java.util.Map;
/**
* Created by zhouxiangfeng on 2017/5/6.
*/
public class DemoCache {
private static StatusBarNotificationConfig notificationConfig;
public static final String KEY_IS_FIRST_HOME_HIGH_PARTY_DIALOG = "IsFirstHomeHighPartyDialog";
private static final String KEY_TICKET_INFO = "TicketInfo";
private static final String KEY_ACCOUNT_INFO = "AccountInfo";
private static final String KEY_THIRD_USER_INFO = "ThirdUserInfo";
@@ -53,17 +56,18 @@ public class DemoCache {
private static final String KEY_IS_FIRST_MATCH_DIALOG = "IsFirstMatchDialog";
private static final String KEY_IS_FIRST_HIGH_PARTY_DIALOG = "IsFirstHighPartyDialog";
private static final String KEY_FILTRATE_TYPE = "FilTrateType";
public static final String KEY_IS_FIRST_HOME_HIGH_PARTY_DIALOG = "IsFirstHomeHighPartyDialog";
private static final String KEY_RED_PACKAGE = "RedPackage";
/**保存网页域名*/
/**
* 保存网页域名
*/
private static final String KEY_INIT_DATA_WEBHOSTNAME = "InitDataWebHostName";
private static final String KEY_MAIN_TAB_DATA = "key_main_tab_data";
/**
* 从 cilent/init 里拿到的候选域名
*/
private static final String KEY_INIT_DATA_API_HOST = "InitDataApiHost";
private static final String KEY_SPEEDY_MESSAGE_GONE_TIME = "SpeedyMessageGoneTime";
private static StatusBarNotificationConfig notificationConfig;
public static Long readSpeedyMessageGoneTime() {
return (Long) ObjectPref.instance(BasicConfig.INSTANCE.getAppContext()).get(KEY_SPEEDY_MESSAGE_GONE_TIME, 0L);
@@ -199,6 +203,16 @@ public class DemoCache {
ObjectPref.instance(BasicConfig.INSTANCE.getAppContext()).saveObject(KEY_INIT_DATA, initInfo);
}
public static List<MainTabInfo> readMainTabInfoList() {
return new Gson().fromJson(String.valueOf(SharedPreferenceUtils.get(KEY_MAIN_TAB_DATA, "")),
new TypeToken<List<MainTabInfo>>() {
}.getType());
}
public static void saveMainTabInfoList(List<MainTabInfo> tabInfoList) {
SharedPreferenceUtils.put(KEY_MAIN_TAB_DATA, new Gson().toJson(tabInfoList));
}
@Nullable
public static String readFaceList() {
return (String) ObjectPref.instance(BasicConfig.INSTANCE.getAppContext()).get(KEY_FACE_LIST_INFO, null);
@@ -256,14 +270,14 @@ public class DemoCache {
SettingsPref.instance(BasicConfig.INSTANCE.getAppContext()).putBoolean(KEY_NOTI_TOGGLE, isOpen);
}
public static void setNotificationConfig(StatusBarNotificationConfig notificationConfig) {
DemoCache.notificationConfig = notificationConfig;
}
public static StatusBarNotificationConfig getNotificationConfig() {
return notificationConfig;
}
public static void setNotificationConfig(StatusBarNotificationConfig notificationConfig) {
DemoCache.notificationConfig = notificationConfig;
}
public static void saveStatusBarNotificationConfig(StatusBarNotificationConfig notificationConfig) {
ObjectPref.instance(BasicConfig.INSTANCE.getAppContext()).put(KEY_NOTI_CONFIG, notificationConfig);
}
@@ -272,21 +286,6 @@ public class DemoCache {
return (StatusBarNotificationConfig) ObjectPref.instance(BasicConfig.INSTANCE.getAppContext()).readObject(KEY_NOTI_CONFIG);
}
private LoginInfo loginInfo() {
// 从本地读取上次登录成功时保存的用户登录信息
LoginInfo loginInfo = DemoCache.readLoginInfo(BasicConfig.INSTANCE.getAppContext());
// 如果已经存在用户登录信息返回LoginInfo否则返回null即可
if (null != loginInfo) {
if (!TextUtils.isEmpty(loginInfo.getAccount()) && !TextUtils.isEmpty(loginInfo.getToken())) {
return loginInfo;
} else {
return null;
}
} else {
return null;
}
}
public static String readWebHostName() {
return (String) ObjectPref.instance(BasicConfig.INSTANCE.getAppContext()).readObject(KEY_INIT_DATA_WEBHOSTNAME);
}
@@ -302,4 +301,19 @@ public class DemoCache {
public static void saveInitDataApiHost(List<String> initDataApiHost) {
ObjectPref.instance(BasicConfig.INSTANCE.getAppContext()).saveObject(KEY_INIT_DATA_API_HOST, initDataApiHost);
}
private LoginInfo loginInfo() {
// 从本地读取上次登录成功时保存的用户登录信息
LoginInfo loginInfo = DemoCache.readLoginInfo(BasicConfig.INSTANCE.getAppContext());
// 如果已经存在用户登录信息返回LoginInfo否则返回null即可
if (null != loginInfo) {
if (!TextUtils.isEmpty(loginInfo.getAccount()) && !TextUtils.isEmpty(loginInfo.getToken())) {
return loginInfo;
} else {
return null;
}
} else {
return null;
}
}
}

View File

@@ -118,6 +118,12 @@ public class InitialModel extends BaseModel implements IInitialModel {
private InitialModel() {
api = RxNet.create(Api.class);
loadMainTabInfoList();
List<MainTabInfo> tabInfoList = DemoCache.readMainTabInfoList();
if (ListUtils.isListEmpty(tabInfoList)) {
tabInfoList = getDefaultMainTab();
DemoCache.saveMainTabInfoList(tabInfoList);
}
mainTabInfosLiveData.setValue(tabInfoList);
IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
receiver = new BroadcastReceiver() {
@Override
@@ -414,12 +420,11 @@ public class InitialModel extends BaseModel implements IInitialModel {
@Override
public void loadMainTabInfoList() {
api.getMainTabList()
.compose(RxHelper.handleSchedulers())
.compose(RxHelper.handleBeanData())
.doOnError(throwable -> mainTabInfosLiveData.setValue(getDefaultMainTab()))
.subscribe(mainTabInfos -> {
if (mainTabInfos.size() != 5) {
mainTabInfosLiveData.setValue(getDefaultMainTab());
} else {
if (mainTabInfos.size() == 5) {
DemoCache.saveMainTabInfoList(mainTabInfos);
mainTabInfosLiveData.setValue(mainTabInfos);
}
});