|
|
@ -1,33 +1,56 @@ |
|
|
|
package com.gmeremit.online.gmeremittance_native.splash_screen.presenter; |
|
|
|
|
|
|
|
import android.os.Handler; |
|
|
|
|
|
|
|
import com.gmeremit.online.gmeremittance_native.base.BasePresenter; |
|
|
|
import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog; |
|
|
|
import com.gmeremit.online.gmeremittance_native.splash_screen.gateway.SplashScreenGateway; |
|
|
|
import com.gmeremit.online.gmeremittance_native.splash_screen.model.LanguageModel; |
|
|
|
import com.gmeremit.online.gmeremittance_native.utils.security.SignatureCheck; |
|
|
|
import com.scottyab.rootbeer.RootBeer; |
|
|
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
public class SplashScreenPresenter extends BasePresenter implements SplashScreenPresenterInterface, SplashScreenInteractorInterface { |
|
|
|
|
|
|
|
private final SplashScreenInteractorInterface.SplashScreenGatewayInterface gateway; |
|
|
|
private RootBeer rootBeer; |
|
|
|
private SplashScreenContractInterfacee view; |
|
|
|
private List<LanguageModel> languageModels; |
|
|
|
|
|
|
|
public SplashScreenPresenter(SplashScreenContractInterfacee view) { |
|
|
|
this.view = view; |
|
|
|
this.gateway = new SplashScreenGateway(this); |
|
|
|
rootBeer = new RootBeer(view.getContext()); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void checkIfUserHasSession() { |
|
|
|
String result = this.gateway.checkSession(); |
|
|
|
if (result != null && result.equalsIgnoreCase("HOME")) { |
|
|
|
this.view.proceedToDashboardScreen(); |
|
|
|
} else |
|
|
|
{ |
|
|
|
if (this.languageModels == null || this.languageModels.size() <1) |
|
|
|
this.languageModels=this.gateway.getRelatedLanguageData(); |
|
|
|
if (checkSafety()) { |
|
|
|
String result = this.gateway.checkSession(); |
|
|
|
if (result != null && result.equalsIgnoreCase("HOME")) { |
|
|
|
this.view.proceedToDashboardScreen(); |
|
|
|
} else { |
|
|
|
if (this.languageModels == null || this.languageModels.size() < 1) |
|
|
|
this.languageModels = this.gateway.getRelatedLanguageData(); |
|
|
|
this.view.updateLanguageData(languageModels); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private boolean checkIfAppSafe() { |
|
|
|
boolean isSafe = false; |
|
|
|
try { |
|
|
|
isSafe = new SignatureCheck().validateAppSignature(view.getContext()); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
isSafe = false; |
|
|
|
} |
|
|
|
return isSafe; |
|
|
|
} |
|
|
|
|
|
|
|
private boolean hasRootAccess() { |
|
|
|
return rootBeer.isRootedWithoutBusyBoxCheck(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -36,4 +59,20 @@ public class SplashScreenPresenter extends BasePresenter implements SplashScreen |
|
|
|
this.gateway.updatePreferredLanguageToStorage(selectedLanguage.getCountryName()); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public boolean checkSafety() { |
|
|
|
if (hasRootAccess() || checkIfAppSafe()) { |
|
|
|
view.showPopUpMessage("Access Denied", CustomAlertDialog.AlertType.ALERT, null); |
|
|
|
new Handler().postDelayed(() -> view.exitView(), 1500); |
|
|
|
return false; |
|
|
|
} |
|
|
|
else |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void onViewDestroyed() { |
|
|
|
super.onViewDestroyed(); |
|
|
|
rootBeer = null; |
|
|
|
} |
|
|
|
} |