主页底部Tab加载逻辑优化
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
});
|
||||
|
Reference in New Issue
Block a user