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 -> { ServerStatusChecker.getIstance().addCallback(value -> {
if(value && (!mIsOnline || firstCheckExecution)){ if(value && (!mIsOnline || firstCheckExecution)){
SettingsManager.reloadDBVariables(() -> { SettingsManager.loadDBVariables(() -> {
mIsOnline = true; mIsOnline = true;
firstCheckExecution = false; firstCheckExecution = false;

View File

@ -15,6 +15,7 @@ import com.orhanobut.logger.Logger;
import io.fabric.sdk.android.Fabric; import io.fabric.sdk.android.Fabric;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker;
import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; 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.exception.ExceptionsHandler;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.core.settings.Stash; 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 class MainApplication extends Application {
public static Resources res; 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. // 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() { public void onCreate() {
super.onCreate(); super.onCreate();
if(!BuildConfig.DEBUG) { appContext.init();
Fabric.with(this, new Crashlytics());
if(SettingsManager.i() != null && //Stash.init(this);
(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());
res = getResources(); res = getResources();
Context = this;
} }
// Called by the system when the device configuration changes while your component is running. // 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.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import it.integry.integrywmsnative.core.REST.watcher.ServerStatusChecker; 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.RunnableArgss;
import it.integry.integrywmsnative.core.expansion.RunnableArgsss; import it.integry.integrywmsnative.core.expansion.RunnableArgsss;
import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.settings.SettingsManager;
@ -26,6 +27,8 @@ public class SplashActivity extends AppCompatActivity {
@BindView(R.id.app_version_textview) @BindView(R.id.app_version_textview)
TextView appVersionTextView; TextView appVersionTextView;
private MainContext mainContext = new MainContext(this);
private RunnableArgsss<Integer, String[], List<Integer>> onRequestPermissionResult; private RunnableArgsss<Integer, String[], List<Integer>> onRequestPermissionResult;
@Override @Override
@ -38,8 +41,6 @@ public class SplashActivity extends AppCompatActivity {
initAppVersion(); initAppVersion();
initPermissions(this::init); initPermissions(this::init);
} }
private void initPermissions(Runnable onComplete) { private void initPermissions(Runnable onComplete) {
@ -69,22 +70,13 @@ public class SplashActivity extends AppCompatActivity {
} }
private void init() { private void init() {
if(SettingsManager.i().user.username == null && SettingsManager.i().user.password == null){ if(!SettingsManager.i().isUserLoggedIn()){
startLoginActivity(); startLoginActivity();
} else { } 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; 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 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(){ public static boolean isFirstStart(){
return firstStart; return firstStart;
} }
public static boolean isInstanceAvailable(){
return i() != null;
}
public static void update(){ public static void update(){
Stash.put(TAG, settingsModelIstance); 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(); dbSettingsModelIstance = new DBSettingsModel();
Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_reload_vars"); Trace perfTrace = UtilityFirebase.getNewPerformanceTrace("db_load_vars");
perfTrace.start(); perfTrace.start();
Runnable tmpOnComplete = () -> { Runnable tmpOnComplete = () -> {

View File

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

View File

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

View File

@ -1,13 +1,20 @@
package it.integry.integrywmsnative.core.utility; package it.integry.integrywmsnative.core.utility;
import android.content.Context;
import android.widget.Toast; import android.widget.Toast;
import it.integry.integrywmsnative.MainApplication; import it.integry.integrywmsnative.MainApplication;
public class UtilityToast { public class UtilityToast {
private static Context context;
public static void init(Context context) {
UtilityToast.context = context;
}
public static void showToast(String message) { 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 android.os.Bundle;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.context.MainContext;
import it.integry.integrywmsnative.core.utility.UtilityWindow; import it.integry.integrywmsnative.core.utility.UtilityWindow;
import it.integry.integrywmsnative.databinding.ActivityLoginBinding; import it.integry.integrywmsnative.databinding.ActivityLoginBinding;
import it.integry.integrywmsnative.gest.login.viewmodel.LoginViewModel; import it.integry.integrywmsnative.gest.login.viewmodel.LoginViewModel;
public class LoginActivity extends AppCompatActivity { public class LoginActivity extends AppCompatActivity {
private MainContext mainContext = new MainContext(this);
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -18,7 +20,7 @@ public class LoginActivity extends AppCompatActivity {
UtilityWindow.maximizeToFullScreen(this); UtilityWindow.maximizeToFullScreen(this);
ActivityLoginBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login); ActivityLoginBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login);
LoginViewModel loginViewModel = new LoginViewModel(this); LoginViewModel loginViewModel = new LoginViewModel(this, mainContext);
binding.setLoginViewModel(loginViewModel); 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.ISimpleOperationCallback;
import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer;
import it.integry.integrywmsnative.core.REST.model.AvailableCodMdepsDTO; 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.BindableBoolean;
import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.di.BindableString;
import it.integry.integrywmsnative.core.settings.SettingsManager; 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; import it.integry.integrywmsnative.view.dialogs.DialogSimpleMessageHelper;
public class LoginViewModel { public class LoginViewModel {
private static final String TAG = LoginViewModel.class.getSimpleName();
public BindableString username = new BindableString(); public BindableString username = new BindableString();
public BindableString password = new BindableString(); public BindableString password = new BindableString();
@ -47,11 +47,13 @@ public class LoginViewModel {
private LoginActivity mActivity; private LoginActivity mActivity;
private MainContext mMainContext;
private ProgressDialog mProgress; private ProgressDialog mProgress;
public LoginViewModel(LoginActivity activity) { public LoginViewModel(LoginActivity activity, MainContext mainContext) {
this.mActivity = activity; this.mActivity = activity;
this.mMainContext = mainContext;
loginButtonEnabled.set(true); loginButtonEnabled.set(true);
@ -237,19 +239,14 @@ public class LoginViewModel {
SettingsManager.update(); SettingsManager.update();
ProgressDialog loadingProgress = UtilityProgress.createDefaultProgressDialog(mActivity); ProgressDialog loadingProgress = UtilityProgress.createDefaultProgressDialog(mActivity);
SettingsManager.reloadDBVariables(() -> { mMainContext.init(() -> {
loadingProgress.dismiss(); loadingProgress.dismiss();
mActivity.finish(); mActivity.finish();
Intent myIntent = new Intent(mActivity, MainActivity.class); Intent myIntent = new Intent(mActivity, MainActivity.class);
mActivity.startActivity(myIntent); 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){ if(isError){
textInputLayout.setErrorEnabled(true); textInputLayout.setErrorEnabled(true);
textInputLayout.setError(" "); 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); textInputLayout.setHintTextAppearance(R.style.ErrorFloatingLabel);
if (textInputLayout.getChildCount() == 2) { if (textInputLayout.getChildCount() == 2) {