diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index a2b7a318..8fcff774 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/app/build.gradle b/app/build.gradle index 10910853..fedab293 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,18 @@ +buildscript { + repositories { + maven { url 'https://maven.fabric.io/public' } + } + + dependencies { + classpath 'io.fabric.tools:gradle:1.+' + } +} apply plugin: 'com.android.application' +apply plugin: 'com.google.firebase.firebase-perf' +apply plugin: 'io.fabric' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'com.google.gms.google-services' android { compileSdkVersion 28 @@ -37,6 +49,9 @@ dependencies { }) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.orhanobut:logger:2.2.0' + implementation 'com.google.firebase:firebase-crash:16.2.1' + implementation 'com.google.firebase:firebase-perf:16.2.2' + implementation 'com.crashlytics.sdk.android:crashlytics:2.9.7' implementation 'androidx.appcompat:appcompat:1.1.0-alpha01' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.google.android.material:material:1.1.0-alpha01' @@ -86,11 +101,11 @@ dependencies { //AppUpdate implementation 'com.github.javiersantos:AppUpdater:2.7' - //Barcode implementation project(':pointmobilescannerlibrary') implementation project(path: ':barcode_base_library') } repositories { mavenCentral() + maven { url 'https://maven.fabric.io/public' } } diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 00000000..c55e9450 --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,55 @@ +{ + "project_info": { + "project_number": "963231271247", + "firebase_url": "https://wmsfirebaseproject-64854.firebaseio.com", + "project_id": "wmsfirebaseproject-64854", + "storage_bucket": "wmsfirebaseproject-64854.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:963231271247:android:6d73ab369f33c450", + "android_client_info": { + "package_name": "it.integry.integrywmsnative" + } + }, + "oauth_client": [ + { + "client_id": "963231271247-b50hgcd89u9ksfc7189mri044kq8aq1p.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "it.integry.integrywmsnative", + "certificate_hash": "864b69dcc40196befa65638a868cec1c61245fa6" + } + }, + { + "client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAV0HnnjE-ZVKhkCQOAyNRzlByk1wng9_4" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 2, + "other_platform_oauth_client": [ + { + "client_id": "963231271247-6jof105pci1g0g7m2e7kjbtrtk2443g4.apps.googleusercontent.com", + "client_type": 3 + } + ] + }, + "ads_service": { + "status": 2 + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 25f07acc..b4ff3c85 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -52,6 +52,9 @@ android:label="@string/activity_contenuto_bancale_title" android:screenOrientation="portrait" android:theme="@style/Light" /> + \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java index bc9e94c4..20622086 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainActivity.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainActivity.java @@ -53,7 +53,7 @@ public class MainActivity extends AppCompatActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ExceptionsHandler.init(this); + //ExceptionsHandler.init(this); PermissionsHelper.askPermissions(this); diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java index 19e69a6d..d7237c3e 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplication.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplication.java @@ -6,9 +6,11 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.text.SpannableString; +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.core.REST.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.exception.ExceptionsHandler; @@ -31,6 +33,9 @@ public class MainApplication extends Application { @Override public void onCreate() { super.onCreate(); + if(!BuildConfig.DEBUG) { + Fabric.with(this, new Crashlytics()); + } Stash.init(this); SettingsManager.init(this); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java index 68fdd481..e43d30c1 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/RESTBuilder.java @@ -43,7 +43,8 @@ public class RESTBuilder { .addConverterFactory(GsonConverterFactory.create()) .build(); + + return retrofit.create(service); } - } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/REST/model/SlackMessageDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/REST/model/SlackMessageDTO.java new file mode 100644 index 00000000..a0e838b0 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/REST/model/SlackMessageDTO.java @@ -0,0 +1,4 @@ +package it.integry.integrywmsnative.core.REST.model; + +public class SlackMessageDTO { +} diff --git a/app/src/main/java/it/integry/integrywmsnative/core/exception/ExceptionsHandler.java b/app/src/main/java/it/integry/integrywmsnative/core/exception/ExceptionsHandler.java index 92fb70bc..f249c0f2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/exception/ExceptionsHandler.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/exception/ExceptionsHandler.java @@ -19,7 +19,6 @@ public class ExceptionsHandler implements Thread.UncaughtExceptionHandler { private final static String TAG = ExceptionsHandler.class.getSimpleName(); private final Activity context; - //private final Thread.UncaughtExceptionHandler rootHandler; public static void init(Activity context) { new ExceptionsHandler(context); @@ -28,10 +27,11 @@ public class ExceptionsHandler implements Thread.UncaughtExceptionHandler { private ExceptionsHandler(Activity context) { this.context = context; - if (!BuildConfig.DEBUG) { - //rootHandler = Thread.getDefaultUncaughtExceptionHandler(); + //if (!BuildConfig.DEBUG) { Thread.setDefaultUncaughtExceptionHandler(this); - } + + + //} } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java index e19f4a59..f0fe6bae 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityLogger.java @@ -1,10 +1,7 @@ package it.integry.integrywmsnative.core.utility; -import android.util.Log; - import com.orhanobut.logger.Logger; -import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; import java.text.SimpleDateFormat; @@ -14,7 +11,6 @@ import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.REST.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.settings.SettingsManager; -import okhttp3.internal.Util; public class UtilityLogger { diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java index ac2dcaea..fa015eac 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/versamento_merce/viewmodel/VersamentoMerceViewModel.java @@ -210,16 +210,12 @@ public class VersamentoMerceViewModel { private void updatePosizione(MtbDepoPosizione mtbDepoPosizione, boolean shouldAskLivello, ProgressDialog progressDialog) { if(shouldAskLivello) { - DialogAskLivelloPosizione.make(mContext, livello -> { + DialogAskLivelloPosizione.make(mContext, mtbDepoPosizione, newPosizione -> { - if(livello == null) { + if(newPosizione == null) { updatePosizione(mtbDepoPosizione, shouldAskLivello, progressDialog); } else { - String newPosizione = mtbDepoPosizione.getPosizione().substring(0, mtbDepoPosizione.getPosizione().length()-1); - newPosizione += livello; - mtbDepoPosizione.setPosizione(newPosizione); - - updatePosizione(mtbDepoPosizione, false, progressDialog); + updatePosizione(newPosizione, false, progressDialog); } }, ex -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogAskLivelloPosizione.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogAskLivelloPosizione.java index 2e0797f3..764d53ea 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogAskLivelloPosizione.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/DialogAskLivelloPosizione.java @@ -1,45 +1,133 @@ package it.integry.integrywmsnative.view.dialogs; +import android.app.Dialog; import android.content.Context; -import androidx.appcompat.app.AlertDialog; -import android.text.InputType; -import android.widget.EditText; +import android.text.Editable; +import android.text.TextWatcher; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; +import com.google.android.material.textfield.TextInputLayout; + +import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityString; -import it.integry.integrywmsnative.core.utility.UtilityToast; +import it.integry.integrywmsnative.core.model.MtbDepoPosizione; +import it.integry.integrywmsnative.core.utility.UtilityPosizione; public class DialogAskLivelloPosizione { - public static void make(Context context, RunnableArgs onComplete, RunnableArgs onFailed) { - final EditText livelloEditText = new EditText(context); - livelloEditText.setInputType(InputType.TYPE_CLASS_NUMBER); + private Context mContext; + private MtbDepoPosizione mtbDepoPosizione; - AlertDialog dialog = new AlertDialog.Builder(context) - .setTitle("Livello") - .setMessage("In che livello vuoi posizionare?") - .setView(livelloEditText) - .setPositiveButton("OK", (dialog1, which) -> { - String livello = String.valueOf(livelloEditText.getText()); - if(UtilityString.isNullOrEmpty(livello)) { - UtilityToast.showToast("Inserisci un LIVELLO valido"); - onComplete.run(null); - } else { - try{ - Integer livelloInt = Integer.parseInt(livello); - onComplete.run(livelloInt); - } catch (NumberFormatException nfe) { - UtilityToast.showToast("Inserisci un LIVELLO valido"); - onComplete.run(null); - } - } - - }) - .setNegativeButton("Annulla", null) - .create(); - dialog.show(); + private Dialog mAlert; + + private RunnableArgs onComplete; + private RunnableArgs onFailed; + + private TextInputLayout livelloTextInputLayout; + + public static void make(Context context, MtbDepoPosizione mtbDepoPosizione, RunnableArgs onComplete, RunnableArgs onFailed) { + new DialogAskLivelloPosizione(context, mtbDepoPosizione, onComplete, onFailed).mAlert.show(); + } + + + + public DialogAskLivelloPosizione(Context context, MtbDepoPosizione mtbDepoPosizione, RunnableArgs onComplete, RunnableArgs onFailed) { + mContext = context; + this.mtbDepoPosizione = mtbDepoPosizione; + this.onComplete = onComplete; + this.onFailed = onFailed; + + LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + View currentView = inflater.inflate(R.layout.dialog_ask_position_of_lu__page2, null, false); + + mAlert = new Dialog(mContext); + mAlert.setContentView(currentView); + mAlert.setCanceledOnTouchOutside(false); + + mAlert.setOnShowListener(dialog -> { + + currentView.findViewById(R.id.button_confirm).setOnClickListener(v -> { + String levelNumber = ((TextView)currentView.findViewById(R.id.level_number)).getText().toString(); + onLevelConfirm(levelNumber); + }); + + currentView.findViewById(R.id.button_abort).setOnClickListener(v -> { + onLevelAbort(); + }); + + livelloTextInputLayout = currentView.findViewById(R.id.level_number_layout); + + livelloTextInputLayout.getEditText().addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + if(livelloTextInputLayout.getEditText().getText() != null) { + validateLevel(livelloTextInputLayout.getEditText().getText().toString()); + } else resetLevelError(); + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + + }); + + + } + + + private void onLevelConfirm(String levelString) { + + String newPosizione = mtbDepoPosizione.getPosizione().substring(0, mtbDepoPosizione.getPosizione().length()-1); + newPosizione += levelString; + + MtbDepoPosizione foundPosizione = UtilityPosizione.getFromCache(newPosizione); + + if(foundPosizione != null) { + resetLevelError(); + + onComplete.run(foundPosizione); + mAlert.dismiss(); + + + } else { + setLevelError(mContext.getResources().getString(R.string.not_valid)); + } + } + + + private void validateLevel(String levelString) { + String newPosizione = mtbDepoPosizione.getPosizione().substring(0, mtbDepoPosizione.getPosizione().length()-1); + newPosizione += levelString; + + if(UtilityPosizione.getFromCache(newPosizione) != null) { + resetLevelError(); + } else setLevelError(mContext.getResources().getString(R.string.not_valid)); + } + + private void setLevelError(String message){ + livelloTextInputLayout.setErrorEnabled(true); + livelloTextInputLayout.setError(message); + } + + private void resetLevelError() { + livelloTextInputLayout.setError(null); + } + + + private void onLevelAbort() { + onComplete.run(null); + mAlert.dismiss(); } diff --git a/build.gradle b/build.gradle index 53464802..36d077cd 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ buildscript { ext{ - kotlin_version = '1.3.10' + kotlin_version = '1.3.11' gradle_version = '3.2.1' } @@ -15,8 +15,10 @@ buildscript { google() } dependencies { - classpath "com.android.tools.build:gradle:3.2.1" + classpath "com.android.tools.build:gradle:$gradle_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath 'com.google.gms:google-services:4.2.0' + classpath 'com.google.firebase:firebase-plugins:1.1.5' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files