Implementati context di App e Main

This commit is contained in:
Giuseppe Scorrano 2019-01-10 09:37:18 +01:00
parent 6fbc8009ce
commit ab7db0fe05
12 changed files with 149 additions and 65 deletions

View File

@ -238,7 +238,7 @@ public class MainActivity extends AppCompatActivity
ServerStatusChecker.getIstance().addCallback(value -> {
if(value && (!mIsOnline || firstCheckExecution)){
SettingsManager.reloadDBVariables(() -> {
SettingsManager.loadDBVariables(() -> {
mIsOnline = true;
firstCheckExecution = false;

View File

@ -15,6 +15,7 @@ import com.orhanobut.logger.Logger;
import io.fabric.sdk.android.Fabric;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.context.AppContext;
import it.integry.integrywmsnative.core.exception.ExceptionsHandler;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.settings.Stash;
@ -28,7 +29,8 @@ import it.integry.integrywmsnative.view.dialogs.exception.DialogException;
public class MainApplication extends Application {
public static Resources res;
public static Context Context;
private AppContext appContext = new AppContext(this);
// Called when the application is starting, before any other application objects have been created.
@ -37,39 +39,11 @@ public class MainApplication extends Application {
public void onCreate() {
super.onCreate();
if(!BuildConfig.DEBUG) {
Fabric.with(this, new Crashlytics());
appContext.init();
if(SettingsManager.i() != null &&
(SettingsManager.i().userSession != null && !UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB)) &&
(SettingsManager.i().user != null && !UtilityString.isNullOrEmpty(SettingsManager.i().user.fullname))) {
Crashlytics.setString("user_fullname", SettingsManager.i().user.fullname);
Crashlytics.setString("profile_db", SettingsManager.i().userSession.profileDB);
}
} else {
if(SettingsManager.i() != null &&
(SettingsManager.i().userSession != null && !UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB)) &&
(SettingsManager.i().user != null && !UtilityString.isNullOrEmpty(SettingsManager.i().user.fullname))) {
Crashlytics.setString("user_fullname", SettingsManager.i().user.fullname);
Crashlytics.setString("profile_db", "[DEBUG] " + SettingsManager.i().userSession.profileDB);
}
}
Stash.init(this);
SettingsManager.init(this);
ServerStatusChecker.init();
BarcodeManager.init(this);
// UtilityExceptions.init(this);
UtilityResources.init(this);
Logger.addLogAdapter(new AndroidLogAdapter());
//Stash.init(this);
res = getResources();
Context = this;
}
// Called by the system when the device configuration changes while your component is running.

View File

@ -14,6 +14,7 @@ import androidx.appcompat.app.AppCompatActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.expansion.RunnableArgss;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.settings.SettingsManager;
@ -26,6 +27,8 @@ public class SplashActivity extends AppCompatActivity {
@BindView(R.id.app_version_textview)
TextView appVersionTextView;
private MainContext mainContext = new MainContext(this);
private RunnableArgsss<Integer, String[], List<Integer>> onRequestPermissionResult;
@Override
@ -38,8 +41,6 @@ public class SplashActivity extends AppCompatActivity {
initAppVersion();
initPermissions(this::init);
}
private void initPermissions(Runnable onComplete) {
@ -69,22 +70,13 @@ public class SplashActivity extends AppCompatActivity {
}
private void init() {
if(SettingsManager.i().user.username == null && SettingsManager.i().user.password == null){
if(!SettingsManager.i().isUserLoggedIn()){
startLoginActivity();
} else {
initFirstData(this::startMainActivity);
mainContext.init(this::startMainActivity);
}
}
private void initFirstData(Runnable onComplete) {
SettingsManager.reloadDBVariables(onComplete, ex -> {
DialogSimpleMessageHelper.makeErrorDialog(this,
new SpannableString(ex.getMessage()), null, this::finish).show();
}
);
}

View File

@ -1,9 +1,81 @@
package it.integry.integrywmsnative.core.context;
import android.content.Context;
import com.crashlytics.android.Crashlytics;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.Logger;
import io.fabric.sdk.android.Fabric;
import it.integry.integrywmsnative.BuildConfig;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.settings.Stash;
import it.integry.integrywmsnative.core.utility.UtilityResources;
import it.integry.integrywmsnative.core.utility.UtilityString;
import it.integry.integrywmsnative.core.utility.UtilityToast;
public class AppContext {
public AppContext() {
//Note: this is the Application Context NOT the Activity Context
private final Context mContext;
public AppContext(Context context) {
this.mContext = context;
}
public void init() {
this.initSettings();
this.initCrashlytics();
this.initServerStatusChecker();
this.initBarcode();
this.initUtilities();
this.initLogger();
}
private void initSettings() {
Stash.init(mContext);
SettingsManager.init(mContext);
}
private void initCrashlytics() {
if(!BuildConfig.DEBUG) {
Fabric.with(mContext, new Crashlytics());
if( SettingsManager.isInstanceAvailable() &&
(SettingsManager.i().userSession != null && !UtilityString.isNullOrEmpty(SettingsManager.i().userSession.profileDB)) &&
(SettingsManager.i().user != null && !UtilityString.isNullOrEmpty(SettingsManager.i().user.fullname))) {
Crashlytics.setString("user_fullname", SettingsManager.i().user.fullname);
Crashlytics.setString("profile_db", SettingsManager.i().userSession.profileDB);
}
}
}
private void initServerStatusChecker() {
ServerStatusChecker.init();
}
private void initBarcode() {
BarcodeManager.init(mContext);
}
private void initUtilities() {
UtilityResources.init(mContext);
UtilityToast.init(mContext);
}
private void initLogger() {
Logger.addLogAdapter(new AndroidLogAdapter());
}

View File

@ -0,0 +1,33 @@
package it.integry.integrywmsnative.core.context;
import android.text.SpannableString;
import androidx.appcompat.app.AppCompatActivity;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
public class MainContext {
private final AppCompatActivity mContext;
public MainContext(AppCompatActivity context) {
this.mContext = context;
}
public void init(Runnable onContextInitialized) {
this.initDBData(() -> {
onContextInitialized.run();
});
}
private void initDBData(Runnable onComplete) {
SettingsManager.loadDBVariables(onComplete, ex -> {
DialogSimpleMessageHelper.makeErrorDialog(mContext,
new SpannableString(ex.getMessage()), null, mContext::finish).show();
}
);
}
}

View File

@ -57,6 +57,9 @@ public class SettingsManager {
public static boolean isFirstStart(){
return firstStart;
}
public static boolean isInstanceAvailable(){
return i() != null;
}
public static void update(){
Stash.put(TAG, settingsModelIstance);
@ -68,10 +71,10 @@ public class SettingsManager {
public static void reloadDBVariables(Runnable onComplete, RunnableArgs<Exception> onFailed){
public static void loadDBVariables(Runnable onComplete, RunnableArgs<Exception> onFailed){
dbSettingsModelIstance = new DBSettingsModel();
Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_reload_vars");
Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_vars");
perfTrace.start();
Runnable tmpOnComplete = () -> {

View File

@ -8,6 +8,10 @@ public class SettingsModel {
public User user;
public UserSession userSession;
public boolean isUserLoggedIn() {
return user != null;
}
public static class Server {
public String codAzienda;

View File

@ -7,8 +7,8 @@ public class UtilitySettings {
public static void logout(){
SettingsManager.i().user = new SettingsModel.User();
SettingsManager.i().userSession = new SettingsModel.UserSession();
SettingsManager.i().user = null;
SettingsManager.i().userSession = null;
SettingsManager.update();
}

View File

@ -1,13 +1,20 @@
package it.integry.integrywmsnative.core.utility;
import android.content.Context;
import android.widget.Toast;
import it.integry.integrywmsnative.MainApplication;
public class UtilityToast {
private static Context context;
public static void init(Context context) {
UtilityToast.context = context;
}
public static void showToast(String message) {
Toast.makeText(MainApplication.Context, message, Toast.LENGTH_LONG).show();
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
}

View File

@ -5,12 +5,14 @@ import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.utility.UtilityWindow;
import it.integry.integrywmsnative.databinding.ActivityLoginBinding;
import it.integry.integrywmsnative.gest.login.viewmodel.LoginViewModel;
public class LoginActivity extends AppCompatActivity {
private MainContext mainContext = new MainContext(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -18,7 +20,7 @@ public class LoginActivity extends AppCompatActivity {
UtilityWindow.maximizeToFullScreen(this);
ActivityLoginBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login);
LoginViewModel loginViewModel = new LoginViewModel(this);
LoginViewModel loginViewModel = new LoginViewModel(this, mainContext);
binding.setLoginViewModel(loginViewModel);
}

View File

@ -16,6 +16,7 @@ import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.REST.consumers.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.di.BindableBoolean;
import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.settings.SettingsManager;
@ -28,7 +29,6 @@ import it.integry.integrywmsnative.gest.login.dto.LoginDTO;
import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
public class LoginViewModel {
private static final String TAG = LoginViewModel.class.getSimpleName();
public BindableString username = new BindableString();
public BindableString password = new BindableString();
@ -47,11 +47,13 @@ public class LoginViewModel {
private LoginActivity mActivity;
private MainContext mMainContext;
private ProgressDialog mProgress;
public LoginViewModel(LoginActivity activity) {
public LoginViewModel(LoginActivity activity, MainContext mainContext) {
this.mActivity = activity;
this.mMainContext = mainContext;
loginButtonEnabled.set(true);
@ -237,19 +239,14 @@ public class LoginViewModel {
SettingsManager.update();
ProgressDialog loadingProgress = UtilityProgress.createDefaultProgressDialog(mActivity);
SettingsManager.reloadDBVariables(() -> {
mMainContext.init(() -> {
loadingProgress.dismiss();
mActivity.finish();
Intent myIntent = new Intent(mActivity, MainActivity.class);
mActivity.startActivity(myIntent);
});
},ex -> {
loadingProgress.dismiss();
DialogSimpleMessageHelper.makeErrorDialog(mActivity,
new SpannableString(ex.getMessage()), null, null).show();
}
);
}

View File

@ -553,7 +553,7 @@ public class DialogInputQuantity {
if(isError){
textInputLayout.setErrorEnabled(true);
textInputLayout.setError(" ");
textInputLayout.getEditText().setTextColor(ContextCompat.getColor(MainApplication.Context, R.color.red_600));
textInputLayout.getEditText().setTextColor(ContextCompat.getColor(currentContext, R.color.red_600));
textInputLayout.setHintTextAppearance(R.style.ErrorFloatingLabel);
if (textInputLayout.getChildCount() == 2) {