[Modify]优化登录和主页逻辑

This commit is contained in:
wushaocheng
2023-02-02 20:49:06 +08:00
parent afa0f65960
commit 7fa3e781d1
11 changed files with 121 additions and 168 deletions

View File

@@ -250,9 +250,9 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
.doOnError(throwable -> onNeedLogin())
.subscribe();
initView();
InitialModel.get().getMainTabInfosLiveData().observeForever(mainTabInfos -> {
if (mainTabInfos != null) {
mMainTabLayout.setMainTabInfoList(mainTabInfos);
InitialModel.get().getMainTabInfosLiveData().observeForever(mainTabInfo -> {
if (mainTabInfo != null) {
mMainTabLayout.setMainTabInfoList(mainTabInfo);
}
});
//检测更新
@@ -530,6 +530,7 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
getMvpPresenter().exitRoom();
LoginActivity.start(MainActivity.this);
PmDialogShowMrg.get().onLogout();
finish();
}
public void onNeedLogin() {

View File

@@ -22,6 +22,9 @@ import com.yizhuan.erban.application.XChatApplication;
import com.yizhuan.erban.databinding.ActivitySplashBinding;
import com.yizhuan.erban.other.SplashBitmapTransformation;
import com.yizhuan.erban.other.dialog.PrivacyAgreementDialog;
import com.yizhuan.erban.ui.login.LoginActivity;
import com.yizhuan.xchat_android_core.DemoCache;
import com.yizhuan.xchat_android_core.auth.entity.AccountInfo;
import com.yizhuan.xchat_android_core.channel_page.model.ChannelPageModel;
import com.yizhuan.xchat_android_core.initial.InitialModel;
import com.yizhuan.xchat_android_core.initial.SplashComponent;
@@ -53,7 +56,12 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis
//修复 https://blog.csdn.net/u011153817/article/details/77335255
// https://blog.csdn.net/zhangcanyan/article/details/52777265 这样的启动异常问题.
if (!isTaskRoot()) {
MainActivity.start(SplashActivity.this);
AccountInfo currentAccountInfo = DemoCache.readCurrentAccountInfo();
if (currentAccountInfo == null || TextUtils.isEmpty(currentAccountInfo.getAccess_token())) {
LoginActivity.start(this);
} else {
MainActivity.start(SplashActivity.this);
}
return;
}
@@ -115,9 +123,7 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis
mBinding.tvJump.setVisibility(View.VISIBLE);
}
} else {
NimMiddleActivity.delayOpenCommunity = false;
MainActivity.start(SplashActivity.this);
finish();
jumpActivity(null);
}
}
@@ -129,12 +135,28 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis
if (needJump) {
return;
}
NimMiddleActivity.delayOpenCommunity = false;
MainActivity.start(SplashActivity.this);
finish();
jumpActivity(null);
}, COUNT_DOWN_TIME * 1000);
}
public void jumpActivity(Intent intent) {
AccountInfo currentAccountInfo = DemoCache.readCurrentAccountInfo();
if (currentAccountInfo == null || TextUtils.isEmpty(currentAccountInfo.getAccess_token())) {
NimMiddleActivity.openCommunity = false;
LoginActivity.start(this);
finish();
} else {
if (intent != null) {
NimMiddleActivity.delayOpenCommunity = false;
MainActivity.start(this, intent);
finish();
} else {
NimMiddleActivity.delayOpenCommunity = false;
MainActivity.start(SplashActivity.this);
finish();
}
}
}
@Override
public void onClick(View v) {
@@ -148,18 +170,14 @@ public class SplashActivity extends AppCompatActivity implements View.OnClickLis
Intent intent = new Intent();
intent.putExtra("url", link);
intent.putExtra("type", type);
NimMiddleActivity.delayOpenCommunity = false;
MainActivity.start(this, intent);
finish();
jumpActivity(intent);
break;
case R.id.tv_skip:
if (mLocalSplashVo == null) {
return;
}
needJump = true;
NimMiddleActivity.delayOpenCommunity = false;
MainActivity.start(this);
finish();
jumpActivity(null);
break;
default:
break;

View File

@@ -20,6 +20,8 @@ import com.google.firebase.analytics.FirebaseAnalytics;
import com.netease.nim.uikit.StatusBarUtil;
import com.tongdaxing.erban.upgrade.AppUpgradeHelper;
import com.trello.rxlifecycle3.android.ActivityEvent;
import com.yizhuan.erban.MainActivity;
import com.yizhuan.erban.NimMiddleActivity;
import com.yizhuan.erban.R;
import com.yizhuan.erban.application.IReportConstants;
import com.yizhuan.erban.application.ReportManager;
@@ -183,7 +185,6 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
ReportManager.get().reportEvent(FirebaseAnalytics.Event.LOGIN, map);
ReportManager.get().reportAdjustEvent(IReportConstants.ADJUST_LOGIN);
getDialogManager().dismissDialog();
finish();
}
@Override
@@ -213,7 +214,6 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
ReportManager.get().reportEvent(FirebaseAnalytics.Event.LOGIN, map);
ReportManager.get().reportAdjustEvent(IReportConstants.ADJUST_LOGIN);
getDialogManager().dismissDialog();
finish();
}
@Override
@@ -244,7 +244,6 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
ReportManager.get().reportEvent(FirebaseAnalytics.Event.LOGIN, map);
ReportManager.get().reportAdjustEvent(IReportConstants.ADJUST_LOGIN);
getDialogManager().dismissDialog();
finish();
}
@Override
@@ -336,7 +335,8 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoginEvent(LoginEvent event) {
getDialogManager().dismissDialog();
setResult(RESULT_OK);
NimMiddleActivity.delayOpenCommunity = false;
MainActivity.start(this);
finish();
}

View File

@@ -14,6 +14,8 @@ import com.coorchice.library.utils.LogUtils
import com.google.firebase.analytics.FirebaseAnalytics
import com.netease.nim.uikit.StatusBarUtil
import com.trello.rxlifecycle3.android.ActivityEvent
import com.yizhuan.erban.MainActivity
import com.yizhuan.erban.NimMiddleActivity
import com.yizhuan.erban.R
import com.yizhuan.erban.application.IReportConstants
import com.yizhuan.erban.application.ReportManager
@@ -209,8 +211,6 @@ class LoginCodeActivity : BaseViewBindingActivity<ActivityLoginCodeBinding>() {
ReportManager.get().reportEvent(FirebaseAnalytics.Event.LOGIN, map)
ReportManager.get().reportAdjustEvent(IReportConstants.ADJUST_LOGIN)
stopCounter()
setResult(RESULT_OK)
finish()
}
override fun onError(e: Throwable) {
@@ -256,7 +256,8 @@ class LoginCodeActivity : BaseViewBindingActivity<ActivityLoginCodeBinding>() {
@Subscribe(threadMode = ThreadMode.MAIN)
fun onLoginEvent(event: LoginEvent?) {
dialogManager.dismissDialog()
setResult(RESULT_OK)
NimMiddleActivity.delayOpenCommunity = false
MainActivity.start(this)
finish()
}

View File

@@ -8,10 +8,11 @@ import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.netease.nim.uikit.StatusBarUtil;
import com.yizhuan.erban.MainActivity;
import com.yizhuan.erban.NimMiddleActivity;
import com.yizhuan.erban.R;
import com.yizhuan.erban.application.IReportConstants;
import com.yizhuan.erban.application.ReportManager;
@@ -72,10 +73,7 @@ public class LoginPasswordActivity extends BaseActivity {
findViewById(R.id.iv_back).setOnClickListener(v -> finish());
btnNext.setOnClickListener(v -> login());
findViewById(R.id.tv_forget_password).setOnClickListener(v ->
ResetPasswordActivity.start(context, ResetPasswordActivity.FROM_NOT_LOGIN)
// getDialogManager().showOkCancelWithTitleDialog(getString(R.string.login_contact_service), "LINEpekoyuyin", getString(R.string.button_ok), "", true, () -> {
//
// })
ResetPasswordActivity.start(context, ResetPasswordActivity.FROM_NOT_LOGIN)
);
}
@@ -126,8 +124,6 @@ public class LoginPasswordActivity extends BaseActivity {
ReportManager.get().reportEvent(FirebaseAnalytics.Event.LOGIN, map);
ReportManager.get().reportAdjustEvent(IReportConstants.ADJUST_LOGIN);
getDialogManager().dismissDialog();
setResult(RESULT_OK);
finish();
}
@Override
@@ -141,6 +137,7 @@ public class LoginPasswordActivity extends BaseActivity {
/**
* 上报登录结果
*
* @param result
* @param failDetail
*/
@@ -149,7 +146,7 @@ public class LoginPasswordActivity extends BaseActivity {
map.put(IReportConstants.LOGIN_TYPE, IReportConstants.FIVE);
map.put(IReportConstants.MODULE, IReportConstants.PEKO_LOGIN);
map.put(IReportConstants.RESULT, result);
if(result == IReportConstants.ZERO){
if (result == IReportConstants.ZERO) {
map.put(IReportConstants.FAIL_DETAIL, failDetail);
}
ReportManager.get().reportEvent(IReportConstants.LOGIN_RESULT, map);
@@ -165,7 +162,8 @@ public class LoginPasswordActivity extends BaseActivity {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoginEvent(LoginEvent event) {
getDialogManager().dismissDialog();
setResult(RESULT_OK);
NimMiddleActivity.delayOpenCommunity = false;
MainActivity.start(LoginPasswordActivity.this);
finish();
}
}

View File

@@ -9,6 +9,8 @@ import android.widget.EditText
import com.coorchice.library.utils.LogUtils
import com.netease.nim.uikit.StatusBarUtil
import com.trello.rxlifecycle3.android.ActivityEvent
import com.yizhuan.erban.MainActivity
import com.yizhuan.erban.NimMiddleActivity
import com.yizhuan.erban.R
import com.yizhuan.erban.base.BaseViewBindingActivity
import com.yizhuan.erban.databinding.ActivityLoginPhoneBinding
@@ -143,7 +145,8 @@ class LoginPhoneActivity : BaseViewBindingActivity<ActivityLoginPhoneBinding>(),
*/
@Subscribe(threadMode = ThreadMode.MAIN)
fun onLoginEvent(event: LoginEvent?) {
setResult(RESULT_OK)
NimMiddleActivity.delayOpenCommunity = false
MainActivity.start(this)
finish()
}

View File

@@ -19,7 +19,7 @@ import java.lang.reflect.Field;
public class CleanLeakUtils {
public static void fixInputMethodManagerLeak(Context destContext) {
//在15<=API<=23中都存在
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT || Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
return;
}

View File

@@ -399,14 +399,6 @@ object HomeModel : BaseModel() {
@GET("/single/broadcast/morePopularityAnchorList")
suspend fun getMoreSingleAnchorList(@Query("singleRoomSortId") id: Long?): ServiceResult<List<HomeRoomInfo>>
/**
* 获取首页Tab配置
*
* @return
*/
@GET("/app/bottomBar/getCurrentAppBottomBar")
suspend fun getMainTabList(): ServiceResult<List<MainTabInfo>>
/**
* @return
*/

View File

@@ -52,25 +52,6 @@ public class MarketVerifyModel extends BaseModel implements IMarketVerifyModel{
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLogin(LoginEvent event){
// loadVersionConfigFromServer(
// String.valueOf(AuthModel.get().getCurrentUid())
// )
// .subscribe(new SingleObserver<Boolean>() {
// @Override
// public void onSubscribe(Disposable d) {
//
// }
//
// @Override
// public void onSuccess(Boolean aBoolean) {
// EventBus.getDefault().post(new MarketVerifyUpdateEvent());
// }
//
// @Override
// public void onError(Throwable e) {
//
// }
// });
}
@Override

View File

@@ -219,25 +219,19 @@ public class AuthModel extends BaseModel implements IAuthModel {
if (currentAccountInfo == null || TextUtils.isEmpty(currentAccountInfo.getAccess_token())) {
return Single.error(new Throwable(""));//没有账号信息
}
return requestTicket().flatMap(new Function<TicketResult, SingleSource<? extends String>>() {
@Override
public SingleSource<? extends String> apply(TicketResult ticketResult) throws Exception {
if (!ticketResult.isSuccess()) {
return Single.error(new Throwable(ticketResult.getMessage()));
}
ticketInfo = ticketResult.getData();
DemoCache.saveTicketInfo(ticketInfo);
return Single.just(ResUtil.getString(R.string.xchat_android_core_auth_authmodel_01));
}
})
return requestTicket().flatMap(ticketResult -> {
if (!ticketResult.isSuccess()) {
return Single.error(new Throwable(ticketResult.getMessage()));
}
ticketInfo = ticketResult.getData();
DemoCache.saveTicketInfo(ticketInfo);
return Single.just(ResUtil.getString(R.string.xchat_android_core_auth_authmodel_01));
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Function<String, SingleSource<String>>() {
@Override
public SingleSource<String> apply(String s) throws Exception {
Log.i("IMLogin", "apply");
return imLogin(currentAccountInfo);
}
.flatMap((Function<String, SingleSource<String>>) s -> {
Log.i("IMLogin", "apply");
return imLogin(currentAccountInfo);
})
.doOnSuccess(s -> {
EventBus.getDefault().post(new LoginEvent());
@@ -258,66 +252,63 @@ public class AuthModel extends BaseModel implements IAuthModel {
@Override
public Single<String> login(String phoneAreaCode, String account, String password, String code, String yiDunToken, String shuMeiDeviceId) {
return Single.create(new SingleOnSubscribe<String>() {
@Override
public void subscribe(SingleEmitter<String> emitter) throws Exception {
//获取登录信息
try {
LoginResult loginResult = api.login(
phoneAreaCode,
DESUtils.DESAndBase64(account),
VersionUtil.getLocalName(BasicConfig.INSTANCE.getAppContext()),
"erban-client",
DESUtils.DESAndBase64(account),
DESAndBase64(password),
"password",
"uyzjdhds",
code,
yiDunToken,
shuMeiDeviceId
).blockingGet();
if (!loginResult.isSuccess()) {
if (loginResult.getCode() == CODE_BAN_ACCOUNT || loginResult.getCode() == CODE_BAN_DEVICE) {
emitter.onError(new BanAccountException(loginResult.getReason(), loginResult.getDate()));
} else if (loginResult.getCode() == CODE_ACCOUNT_CANCEL) {
emitter.onError(new AccountCancelException(loginResult.getMessage(), loginResult.getErbanNo(), loginResult.getCancelDate()));
} else if (loginResult.getCode() == SUPER_CODE_SHOW_CODE) {
//是否是超管
if (loginResult.getSuperCodeVerify() == 1) {
emitter.onError(new IsSuperAdminException(loginResult.getMessage()));
} else {
emitter.onError(new Throwable(loginResult.getMessage()));
}
} else {
emitter.onError(new Throwable(loginResult.getMessage()));
}
return;
}
currentAccountInfo = loginResult.getData();
DemoCache.saveCurrentAccountInfo(currentAccountInfo);
//成功获取到uid后就通知首页刷新审核中状态的数据
EventBus.getDefault().post(new GetCurrentUidEvent(true));
} catch (Exception e) {
emitter.onError(new Throwable(OldHttpErrorHandleUtil.handle(e)));
return;
return Single.create((SingleOnSubscribe<String>) emitter -> {
//获取登录信息
try {
LoginResult loginResult = api.login(
phoneAreaCode,
DESUtils.DESAndBase64(account),
VersionUtil.getLocalName(BasicConfig.INSTANCE.getAppContext()),
"erban-client",
DESUtils.DESAndBase64(account),
DESAndBase64(password),
"password",
"uyzjdhds",
code,
yiDunToken,
shuMeiDeviceId
).blockingGet();
if (!loginResult.isSuccess()) {
if (loginResult.getCode() == CODE_BAN_ACCOUNT || loginResult.getCode() == CODE_BAN_DEVICE) {
emitter.onError(new BanAccountException(loginResult.getReason(), loginResult.getDate()));
} else if (loginResult.getCode() == CODE_ACCOUNT_CANCEL) {
emitter.onError(new AccountCancelException(loginResult.getMessage(), loginResult.getErbanNo(), loginResult.getCancelDate()));
} else if (loginResult.getCode() == SUPER_CODE_SHOW_CODE) {
//是否是超管
if (loginResult.getSuperCodeVerify() == 1) {
emitter.onError(new IsSuperAdminException(loginResult.getMessage()));
} else {
emitter.onError(new Throwable(loginResult.getMessage()));
}
//获取tick
try {
TicketResult ticketResult = requestTicket().blockingGet();
if (!ticketResult.isSuccess()) {
emitter.onError(new Throwable(ticketResult.getMessage()));
return;
}
ticketInfo = ticketResult.getData();
DemoCache.saveTicketInfo(ticketInfo);
} catch (Exception e) {
emitter.onError(new Throwable(OldHttpErrorHandleUtil.handle(e)));
return;
}
emitter.onSuccess(ResUtil.getString(R.string.xchat_android_core_auth_authmodel_02));
} else {
emitter.onError(new Throwable(loginResult.getMessage()));
}
})
return;
}
currentAccountInfo = loginResult.getData();
DemoCache.saveCurrentAccountInfo(currentAccountInfo);
//成功获取到uid后就通知首页刷新审核中状态的数据
EventBus.getDefault().post(new GetCurrentUidEvent(true));
} catch (Exception e) {
emitter.onError(new Throwable(OldHttpErrorHandleUtil.handle(e)));
return;
}
//获取tick
try {
TicketResult ticketResult = requestTicket().blockingGet();
if (!ticketResult.isSuccess()) {
emitter.onError(new Throwable(ticketResult.getMessage()));
return;
}
ticketInfo = ticketResult.getData();
DemoCache.saveTicketInfo(ticketInfo);
} catch (Exception e) {
emitter.onError(new Throwable(OldHttpErrorHandleUtil.handle(e)));
return;
}
emitter.onSuccess(ResUtil.getString(R.string.xchat_android_core_auth_authmodel_02));
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Function<String, SingleSource<String>>() {
@@ -1150,31 +1141,6 @@ public class AuthModel extends BaseModel implements IAuthModel {
@Field("shuMeiDeviceId") String shuMeiDeviceId
);
/**
* 登录接口
*
* @param phone
* @param version
* @param client_id
* @param username
* @param password
* @param grant_type
* @param client_secret
* @return
*/
@FormUrlEncoded
@POST("/oauth/token")
Single<LoginResult> loginForOldMember(@Field("phone") String phone,
@Field("version") String version,
@Field("client_id") String client_id,
@Field("username") String username,
@Field("password") String password,
@Field("grant_type") String grant_type,
@Field("client_secret") String client_secret,
@Field("operateType") int type,
@Field("qqOpenid") String openid);
/**
* 登出接口
*

View File

@@ -120,19 +120,12 @@ public class FamilyModel extends BaseModel implements IFamilyModel {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLoginEvent(LoginEvent event) {
Logger.i("FamilyModel", ResUtil.getString(R.string.family_model_familymodel_01));
// syncMyFamilyFromServer().subscribe();
if (null == getCustomServiceInfo()){
// loadFamilyCustomServiceInfo().subscribe();
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onLogoutEvent(LogoutEvent event) {
Logger.i("FamilyModel", ResUtil.getString(R.string.family_model_familymodel_02));
setMyFamily(null);
}