From f9230ac34146a2681cc28775b46026e203fe8dc9 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 26 Apr 2023 12:47:14 +0200 Subject: [PATCH 1/2] Implementata gestione device id --- .../MainApplicationModule.java | 4 +- .../core/context/MainContext.java | 37 ++++++++++++++++--- .../core/rest/HttpInterceptor.java | 2 + .../rest/consumers/SystemRESTConsumer.java | 22 +++++++++++ .../consumers/SystemRESTConsumerService.java | 4 ++ .../system/RegisterDeviceRequestDTO.java | 15 ++++++++ .../core/settings/SettingsModel.java | 9 +++++ .../core/utility/PermissionsHelper.java | 1 - .../gest/login/LoginActivity.java | 14 ++++++- build.gradle | 2 +- 10 files changed, 99 insertions(+), 11 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index dc1b35e6..51cf6110 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -89,8 +89,8 @@ public class MainApplicationModule { @Provides @Singleton - MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase) { - return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase); + MainContext providesMainContextNew(MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) { + return new MainContext(mApplication.getApplicationContext(), menuService, appDatabase, systemRESTConsumer); } @Provides 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 index af1314a3..5319ee25 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/context/MainContext.java @@ -6,6 +6,8 @@ import android.text.SpannableString; import android.text.Spanned; import android.text.SpannedString; +import com.google.firebase.installations.FirebaseInstallations; + import java.net.ConnectException; import javax.inject.Singleton; @@ -13,6 +15,7 @@ import javax.inject.Singleton; import it.integry.integrywmsnative.core.barcode_reader.BarcodeManager; import it.integry.integrywmsnative.core.data_store.db.AppDatabase; import it.integry.integrywmsnative.core.menu.MenuService; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.rest.watcher.ServerStatusChecker; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityThread; @@ -23,13 +26,15 @@ public class MainContext { private final Context applicationContext; private final MenuService menuService; private final AppDatabase appDatabase; + private final SystemRESTConsumer systemRESTConsumer; private Listener mListener; - public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase) { + public MainContext(Context applicationContext, MenuService menuService, AppDatabase appDatabase, SystemRESTConsumer systemRESTConsumer) { this.applicationContext = applicationContext; this.menuService = menuService; this.appDatabase = appDatabase; + this.systemRESTConsumer = systemRESTConsumer; } public void init() { @@ -40,10 +45,13 @@ public class MainContext { exception.printStackTrace(); } - this.initDBData(() -> { - this.initMenu(() -> { - - if (mListener != null) mListener.onContextInitialized(); + + this.initDeviceId(() -> { + this.initDBData(() -> { + this.initMenu(() -> { + + if (mListener != null) mListener.onContextInitialized(); + }); }); }); @@ -52,6 +60,25 @@ public class MainContext { } + + private void initDeviceId(Runnable onComplete) { + if (SettingsManager.i().getUserSession().getDeviceId() != null) { + onComplete.run(); + return; + } + + + FirebaseInstallations.getInstance().getId().addOnCompleteListener(fid -> { + SettingsManager.i().getUserSession().setDeviceId(fid.getResult()); + SettingsManager.update(); + + systemRESTConsumer.registerDevice(onComplete, ex -> { + if (mListener != null) mListener.onError(new SpannedString(ex.getMessage())); + }); + }); + } + + public void logout(Runnable onLoggedOut) { menuService.invalidateCache(); UtilityThread.executeParallel(() -> { diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java index bf145ddd..17f82459 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/HttpInterceptor.java @@ -22,6 +22,7 @@ public class HttpInterceptor implements Interceptor { final String PROFILE_DB = SettingsManager.i().getUserSession() == null ? null : SettingsManager.i().getUserSession().getProfileDB(); final String USERNAME = SettingsManager.i().getUser().getUsername(); final String PASSWORD = SettingsManager.i().getUser().getPassword(); + final String DEVICE_ID = SettingsManager.i().getUserSession().getDeviceId(); final Request request = chain.request(); final HttpUrl url = request.url().newBuilder() @@ -36,6 +37,7 @@ public class HttpInterceptor implements Interceptor { .addHeader("Accept", "*/*") .addHeader("username", USERNAME != null ? USERNAME : "") .addHeader("password", PASSWORD != null ? PASSWORD : "") + .addHeader("device_id", DEVICE_ID != null ? DEVICE_ID : "") .url(url).build(); return chain.proceed(newRequest); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java index b1c0045d..a9deddfc 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumer.java @@ -29,6 +29,7 @@ import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; @@ -39,6 +40,27 @@ import retrofit2.Response; @Singleton public class SystemRESTConsumer extends _BaseRESTConsumer { + + public void registerDevice(final Runnable onSuccess, final RunnableArgs onFailed) { + RegisterDeviceRequestDTO registerDeviceRequestDTO = new RegisterDeviceRequestDTO() + .setApp("WMS"); + + SystemRESTConsumerService systemRESTConsumerService = RESTBuilder.getService(SystemRESTConsumerService.class); + systemRESTConsumerService.registerDevice(registerDeviceRequestDTO) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call> call, Response> response) { + analyzeAnswer(response, "device/register", Void -> onSuccess.run(), onFailed); + } + + @Override + public void onFailure(Call> call, Throwable t) { + onFailed.run(new Exception(t)); + } + }); + + } + public void processSql(String nativeSql, final Type clazz, final RunnableArgs onComplete, final RunnableArgs onFailed) { NativeSqlRequestDTO nativeSqlDTO = new NativeSqlRequestDTO(); nativeSqlDTO.nativeSql = nativeSql; diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java index 5330f0d7..2ed64fbe 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/consumers/SystemRESTConsumerService.java @@ -6,6 +6,7 @@ import it.integry.integrywmsnative.core.rest.model.AvailableCodMdepsDTO; import it.integry.integrywmsnative.core.rest.model.MailRequestDTO; import it.integry.integrywmsnative.core.rest.model.NativeSqlRequestDTO; import it.integry.integrywmsnative.core.rest.model.ServiceRESTResponse; +import it.integry.integrywmsnative.core.rest.model.system.RegisterDeviceRequestDTO; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; @@ -14,6 +15,9 @@ import retrofit2.http.Query; public interface SystemRESTConsumerService { + @POST("device/register") + Call> registerDevice(@Body RegisterDeviceRequestDTO registerDeviceRequestDTO); + @POST("processSql") Call> processSql(@Body NativeSqlRequestDTO nativeSqlDTO); diff --git a/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java new file mode 100644 index 00000000..c7b75a62 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/rest/model/system/RegisterDeviceRequestDTO.java @@ -0,0 +1,15 @@ +package it.integry.integrywmsnative.core.rest.model.system; + +public class RegisterDeviceRequestDTO { + + private String app; + + public String getApp() { + return app; + } + + public RegisterDeviceRequestDTO setApp(String app) { + this.app = app; + return this; + } +} 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 12e499a2..40bfc937 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 @@ -95,10 +95,19 @@ public class SettingsModel { } public static class UserSession { + private String deviceId; private String profileDB; private AvailableCodMdepsDTO depo; private Integer defaultOrdinamentoPickingAccettazione = 0; + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + public String getProfileDB() { return profileDB; } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java index 3044f791..6ffca0e4 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/PermissionsHelper.java @@ -40,7 +40,6 @@ public class PermissionsHelper { } - String[] permissionArray = new String[permissionsToAsk.size()]; permissionsToAsk.toArray(permissionArray); 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 6f54e867..18e36266 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 @@ -6,6 +6,8 @@ import android.text.Html; import androidx.appcompat.app.AlertDialog; import androidx.databinding.DataBindingUtil; +import com.google.firebase.installations.FirebaseInstallations; + import java.util.List; import javax.inject.Inject; @@ -16,6 +18,7 @@ import it.integry.integrywmsnative.SplashActivity; import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.BaseActivity; +import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.settings.SettingsManager; import it.integry.integrywmsnative.core.utility.UtilityWindow; import it.integry.integrywmsnative.databinding.ActivityLoginBinding; @@ -29,6 +32,9 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen @Inject LoginViewModel mViewmodel; + @Inject + SystemRESTConsumer systemRESTConsumer; + public BindableString username = new BindableString(); public BindableString password = new BindableString(); @@ -119,9 +125,13 @@ public class LoginActivity extends BaseActivity implements LoginViewModel.Listen private void showProfileDBSelectionDialog(final String protocol, final String host, final int port, final List availableProfiles) { Runnable onComplete = () -> { - SettingsManager.update(); - startSplashActivity(); + FirebaseInstallations.getInstance().getId().addOnCompleteListener(fid -> { + SettingsManager.i().getUserSession().setDeviceId(fid.getResult()); + SettingsManager.update(); + + systemRESTConsumer.registerDevice(this::startSplashActivity, this::onError); + }); }; loginButtonEnabled.set(true); diff --git a/build.gradle b/build.gradle index f95f6121..18f81ef8 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { ext { kotlin_version = '1.8.0' - agp_version = '8.1.0-alpha11' + agp_version = '8.0.0' } repositories { From 920c22083bf0ae3678ece584acb480b844bad495 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Wed, 26 Apr 2023 12:47:54 +0200 Subject: [PATCH 2/2] -> v1.33.00 (371) --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c6a60b45..e5eaeba7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ apply plugin: 'com.google.gms.google-services' android { - def appVersionCode = 370 - def appVersionName = '1.32.30' + def appVersionCode = 371 + def appVersionName = '1.33.00' signingConfigs { release {