diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java index e23493ee..662989fb 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java @@ -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; diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java index df67d6b7..9b14b7f8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java @@ -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. diff --git a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java index 8077d93b..bd71320c 100644 --- a/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/SplashActivity.java @@ -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> 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(); - } - ); - } - diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java index 8343e531..03496fa8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/AppContext.java @@ -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()); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java new file mode 100644 index 00000000..5d159429 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java @@ -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(); + } + ); + } + +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java index 685178d9..e7b01525 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsManager.java @@ -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 onFailed){ + public static void loadDBVariables(Runnable onComplete, RunnableArgs onFailed){ dbSettingsModelIstance = new DBSettingsModel(); - Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_reload_vars"); + Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_vars"); perfTrace.start(); Runnable tmpOnComplete = () -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java index aeda9a75..3fdd5a8a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/settings/SettingsModel.java @@ -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; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java index 1eabf0df..7c41cb75 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilitySettings.java @@ -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(); } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityToast.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityToast.java index 1987e54a..785dbebd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityToast.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityToast.java @@ -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(); } } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java index 9ceffa58..4ee41cf6 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/LoginActivity.java @@ -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); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java index 1e04530a..9c63348a 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/login/viewmodel/LoginViewModel.java @@ -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(); + mActivity.finish(); - Intent myIntent = new Intent(mActivity, MainActivity.class); - mActivity.startActivity(myIntent); + Intent myIntent = new Intent(mActivity, MainActivity.class); + mActivity.startActivity(myIntent); + }); - },ex -> { - loadingProgress.dismiss(); - DialogSimpleMessageHelper.makeErrorDialog(mActivity, - new SpannableString(ex.getMessage()), null, null).show(); - } - ); } diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java index 06d1b561..c8d65cee 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java @@ -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) {