Aggiunta impostazione che permette di abilitare la ricezione degli aggiornamenti beta
This commit is contained in:
parent
93b18531ab
commit
d3b7cd8cd6
@ -238,8 +238,8 @@ public class MainApplicationModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
SystemRESTConsumer provideSystemRESTConsumer(RESTBuilder restBuilder) {
|
||||
return new SystemRESTConsumer(restBuilder);
|
||||
SystemRESTConsumer provideSystemRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
|
||||
return new SystemRESTConsumer(executorService, restBuilder);
|
||||
}
|
||||
|
||||
@Provides
|
||||
|
||||
@ -13,6 +13,7 @@ import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@ -36,9 +37,11 @@ import retrofit2.Response;
|
||||
@Singleton
|
||||
public class SystemRESTConsumer extends _BaseRESTConsumer {
|
||||
|
||||
private final ExecutorService executorService;
|
||||
private final RESTBuilder restBuilder;
|
||||
|
||||
public SystemRESTConsumer(RESTBuilder restBuilder) {
|
||||
public SystemRESTConsumer(ExecutorService executorService, RESTBuilder restBuilder) {
|
||||
this.executorService = executorService;
|
||||
this.restBuilder = restBuilder;
|
||||
}
|
||||
|
||||
@ -161,20 +164,19 @@ public class SystemRESTConsumer extends _BaseRESTConsumer {
|
||||
}
|
||||
|
||||
|
||||
public void sendMail(MailRequestDTO mailDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
|
||||
public void sendMailSynchronized(MailRequestDTO mailDTO) throws Exception {
|
||||
SystemRESTConsumerService service = restBuilder.getService(SystemRESTConsumerService.class);
|
||||
service.sendMail(mailDTO).enqueue(new ManagedErrorCallback<>() {
|
||||
@Override
|
||||
public void onResponse(Call<ServiceRESTResponse<String>> call, Response<ServiceRESTResponse<String>> response) {
|
||||
if (onComplete != null) onComplete.run();
|
||||
}
|
||||
var response = service.sendMail(mailDTO).execute();
|
||||
analyzeAnswer(response, "sendMail");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Call<ServiceRESTResponse<String>> call, @NonNull final Exception e) {
|
||||
if (onFailed != null) {
|
||||
onFailed.run(e);
|
||||
}
|
||||
public void sendMail(MailRequestDTO mailDTO, Runnable onComplete, RunnableArgs<Exception> onFailed) {
|
||||
executorService.execute(() -> {
|
||||
try {
|
||||
sendMailSynchronized(mailDTO);
|
||||
if (onComplete != null) onComplete.run();
|
||||
} catch (Exception ex) {
|
||||
if (onFailed != null) onFailed.run(ex);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -32,6 +32,6 @@ public interface SystemRESTConsumerService {
|
||||
Call<ServiceRESTResponse<List<AvailableCodMdepsDTO>>> getAvailableCodMdeps();
|
||||
|
||||
@POST("sendEmail")
|
||||
Call<ServiceRESTResponse<String>> sendMail(@Body MailRequestDTO mailDto);
|
||||
Call<ServiceRESTResponse<Void>> sendMail(@Body MailRequestDTO mailDto);
|
||||
|
||||
}
|
||||
|
||||
@ -3,8 +3,8 @@ package it.integry.integrywmsnative.gest.settings;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.text.Html;
|
||||
import android.text.SpannableString;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Base64;
|
||||
import android.widget.Toast;
|
||||
|
||||
@ -31,6 +31,7 @@ import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@ -46,8 +47,8 @@ import it.integry.integrywmsnative.core.rest.model.MailAttachmentDTO;
|
||||
import it.integry.integrywmsnative.core.rest.model.MailRequestDTO;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityExceptions;
|
||||
import it.integry.integrywmsnative.core.utility.UtilityResources;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogProgressView;
|
||||
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
|
||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
|
||||
|
||||
public class MainSettingsFragment extends PreferenceFragmentCompat implements ITitledFragment, Preference.OnPreferenceChangeListener {
|
||||
@ -126,8 +127,12 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
var triggerScanModeListPref = (ListPreference) findPreference(KEY_TRIGGER_SCAN_MODE);
|
||||
if (triggerScanModeListPref != null) {
|
||||
var scanModes = BarcodeSetting.getTriggerScanModes();
|
||||
triggerScanModeListPref.setEntries(scanModes);
|
||||
triggerScanModeListPref.setEntryValues(scanModes);
|
||||
|
||||
var values = scanModes.keySet().toArray(new String[0]);
|
||||
var descriptions = scanModes.values().toArray(new CharSequence[0]);
|
||||
|
||||
triggerScanModeListPref.setEntries(descriptions);
|
||||
triggerScanModeListPref.setEntryValues(values);
|
||||
triggerScanModeListPref.setOnPreferenceChangeListener(this);
|
||||
}
|
||||
}
|
||||
@ -150,15 +155,15 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
|
||||
if (!btPairedDevices.isEmpty()) {
|
||||
CharSequence[] entries = new CharSequence[btPairedDevices.size()];
|
||||
Stream.of(btPairedDevices)
|
||||
btPairedDevices.stream()
|
||||
.map(BluetoothDevice::getName)
|
||||
.toList()
|
||||
.collect(Collectors.toList())
|
||||
.toArray(entries);
|
||||
|
||||
CharSequence[] entryValues = new CharSequence[btPairedDevices.size()];
|
||||
Stream.of(btPairedDevices)
|
||||
btPairedDevices.stream()
|
||||
.map(BluetoothDevice::getAddress)
|
||||
.toList()
|
||||
.collect(Collectors.toList())
|
||||
.toArray(entryValues);
|
||||
|
||||
lp.setEntries(entries);
|
||||
@ -230,7 +235,12 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
|
||||
|
||||
private void exportLog() {
|
||||
var handler = new Handler(Looper.getMainLooper());
|
||||
|
||||
DialogYesNoView.newInstance("Esportazione log", "Vuoi inviare il log degli eventi al supporto?", result -> {
|
||||
if (result == DialogConsts.Results.NO || result == DialogConsts.Results.ABORT)
|
||||
return;
|
||||
|
||||
this.openProgress();
|
||||
|
||||
executorService.execute(() -> {
|
||||
@ -246,7 +256,7 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
try {
|
||||
List<MailAttachmentDTO> attachmentDTOList = new ArrayList<>();
|
||||
|
||||
if(fileToShare != null) {
|
||||
if (fileToShare != null) {
|
||||
var htmlContent = createAppLogAttachment(fileToShare);
|
||||
|
||||
byte[] buffer = htmlContent.getBytes();//specify the size to allow.
|
||||
@ -265,7 +275,7 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
dbFiles[1] = requireContext().getDatabasePath("integry_wms-shm");
|
||||
dbFiles[2] = requireContext().getDatabasePath("integry_wms-wal");
|
||||
|
||||
for(int i = 0; i < dbFiles.length; i++){
|
||||
for (int i = 0; i < dbFiles.length; i++) {
|
||||
byte[] dbFileBytes = new byte[(int) dbFiles[i].length()];
|
||||
FileInputStream inputStream = new FileInputStream(dbFiles[i]);
|
||||
final int read = inputStream.read(dbFileBytes);
|
||||
@ -284,25 +294,14 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
.setAttachments(attachmentDTOList);
|
||||
|
||||
|
||||
systemRESTConsumer.sendMail(mailRequest, this::closeProgress, ex -> {
|
||||
this.closeProgress();
|
||||
requireActivity().runOnUiThread(() -> {
|
||||
DialogSimpleMessageView
|
||||
.makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null)
|
||||
.show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
});
|
||||
});
|
||||
} catch (Exception ex) {
|
||||
UtilityExceptions.defaultException(requireContext(), ex);
|
||||
this.closeProgress();
|
||||
systemRESTConsumer.sendMailSynchronized(mailRequest);
|
||||
|
||||
// requireActivity().runOnUiThread(() -> {
|
||||
// DialogSimpleMessageView
|
||||
// .makeErrorDialog(new SpannableString(Html.fromHtml(ex.getMessage())), null, null)
|
||||
// .show(requireActivity().getSupportFragmentManager(), "tag");
|
||||
// });
|
||||
//
|
||||
// FirebaseCrashlytics.getInstance().recordException(ex);
|
||||
this.closeProgress();
|
||||
} catch (Exception ex) {
|
||||
handler.post(() -> {
|
||||
this.closeProgress();
|
||||
UtilityExceptions.defaultException(requireContext(), ex);
|
||||
});
|
||||
}
|
||||
});
|
||||
})
|
||||
@ -310,16 +309,15 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void openProgress() {
|
||||
// executorService.execute(() -> {
|
||||
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager());
|
||||
this.mCurrentProgress.show(requireActivity().getSupportFragmentManager());
|
||||
// });
|
||||
}
|
||||
|
||||
private void closeProgress() {
|
||||
// executorService.execute(() -> {
|
||||
mCurrentProgress.dismiss();
|
||||
mCurrentProgress.dismiss();
|
||||
// });
|
||||
}
|
||||
|
||||
@ -334,7 +332,7 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
|
||||
while ((line = br.readLine()) != null) {
|
||||
|
||||
if(!line.matches("\\d{13}.*")) {
|
||||
if (!line.matches("\\d{13}.*")) {
|
||||
int lastNewLineChar = text.lastIndexOf("\n");
|
||||
text.deleteCharAt(text.length() - 1);
|
||||
}
|
||||
@ -411,7 +409,7 @@ public class MainSettingsFragment extends PreferenceFragmentCompat implements IT
|
||||
}
|
||||
|
||||
htmlContent.append("""
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
document.querySelectorAll(".message").forEach(el => el.innerHTML = el.innerHTML.replaceAll(/at it\\.integry.*?(?:<br>)/g, '<b>$&</b>'));
|
||||
</script>
|
||||
|
||||
@ -0,0 +1,55 @@
|
||||
package it.integry.integrywmsnative.view.components;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import androidx.fragment.app.FragmentActivity;
|
||||
import androidx.preference.SwitchPreferenceCompat;
|
||||
|
||||
import it.integry.integrywmsnative.R;
|
||||
import it.integry.integrywmsnative.view.dialogs.DialogConsts;
|
||||
import it.integry.integrywmsnative.view.dialogs.yes_no.DialogYesNoView;
|
||||
|
||||
public class ConfirmSwitchPreferenceCompat extends SwitchPreferenceCompat {
|
||||
|
||||
private final String confirmTitle;
|
||||
private final String confirmMessage;
|
||||
|
||||
public ConfirmSwitchPreferenceCompat(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
|
||||
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ConfirmSwitchPreferenceCompat);
|
||||
|
||||
String confirmTitle = a.getString(R.styleable.ConfirmSwitchPreferenceCompat_confirmTitle);
|
||||
String confirmMessage = a.getString(R.styleable.ConfirmSwitchPreferenceCompat_confirmMessage);
|
||||
|
||||
a.recycle();
|
||||
|
||||
if(confirmTitle == null) confirmTitle = "Confirm";
|
||||
if(confirmMessage == null) confirmMessage = "Are you sure you want to change this setting?";
|
||||
|
||||
this.confirmMessage = confirmMessage;
|
||||
this.confirmTitle = confirmTitle;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onClick() {
|
||||
if (isChecked()) {
|
||||
// showConfirmationDialog(false);
|
||||
setChecked(false);
|
||||
} else {
|
||||
showConfirmationDialog(true);
|
||||
}
|
||||
}
|
||||
|
||||
private void showConfirmationDialog(final boolean newValue) {
|
||||
|
||||
DialogYesNoView.newInstance(confirmTitle, confirmMessage, result -> {
|
||||
if(result == DialogConsts.Results.YES) {
|
||||
setChecked(newValue);
|
||||
}
|
||||
}).show(((FragmentActivity) getContext()).getSupportFragmentManager(), "dialog-enable-beta");
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,6 @@ package it.integry.integrywmsnative.view.dialogs.yes_no;
|
||||
|
||||
import android.app.Dialog;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@ -39,7 +38,7 @@ public class DialogYesNoView extends DialogFragment {
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
|
||||
var binding = DialogYesNoBinding.inflate(LayoutInflater.from(requireContext()));
|
||||
var binding = DialogYesNoBinding.inflate(getLayoutInflater());
|
||||
binding.executePendingBindings();
|
||||
|
||||
if (UtilityString.isNullOrEmpty(title)) {
|
||||
|
||||
@ -458,8 +458,10 @@
|
||||
<string name="action_print_production_SSCC">Stampa etichetta lavorazione</string>
|
||||
<string name="scanner_settings">Impostazioni scanner</string>
|
||||
<string name="developer_settings">Svilupppo</string>
|
||||
<string name="developer_settings_title">Esporta log</string>
|
||||
<string name="developer_settings_summary">Esporta il log degli eventi</string>
|
||||
<string name="developer_settings_export_log_title">Esporta log</string>
|
||||
<string name="developer_settings_export_log_summary">Esporta il log degli eventi</string>
|
||||
<string name="developer_settings_enable_beta_version_title">Aggiornamenti beta</string>
|
||||
<string name="developer_settings_enable_beta_version_summary">Abilita aggiornamenti beta (fortemente sconsigliato)</string>
|
||||
<string name="scanner_settings_scanner_delay_title">Ritardo scansione</string>
|
||||
<string name="scanner_settings_scanner_delay_summary">Imposta un ritardo di lettura per la scansione</string>
|
||||
<string name="scanner_settings_trigger_scan_mode_title">Modalità scansione</string>
|
||||
|
||||
@ -20,4 +20,10 @@
|
||||
<attr name="backgroundView" />
|
||||
<attr name="parentView" />
|
||||
</declare-styleable>
|
||||
|
||||
|
||||
<declare-styleable name="ConfirmSwitchPreferenceCompat">
|
||||
<attr name="confirmTitle" format="string" />
|
||||
<attr name="confirmMessage" format="string" />
|
||||
</declare-styleable>
|
||||
</resources>
|
||||
|
||||
@ -463,8 +463,10 @@
|
||||
<string name="action_print_production_SSCC">Print production label</string>
|
||||
<string name="scanner_settings">Scanner settings</string>
|
||||
<string name="developer_settings">Developer settings</string>
|
||||
<string name="developer_settings_title">Esporta log</string>
|
||||
<string name="developer_settings_summary">Esporta il log degli eventi</string>
|
||||
<string name="developer_settings_export_log_title">Export log</string>
|
||||
<string name="developer_settings_export_log_summary">Export event log</string>
|
||||
<string name="developer_settings_enable_beta_version_title">Beta updates</string>
|
||||
<string name="developer_settings_enable_beta_version_summary">Enable beta updates (strongly discouraged)</string>
|
||||
<string name="scanner_settings_scanner_delay_title">Scan delay</string>
|
||||
<string name="scanner_settings_scanner_delay_summary">Set reading scanner delay</string>
|
||||
<string name="scanner_settings_trigger_scan_mode_title">Modalità scansione</string>
|
||||
|
||||
@ -67,10 +67,20 @@
|
||||
app:title="@string/developer_settings"
|
||||
app:iconSpaceReserved="false">
|
||||
|
||||
<it.integry.integrywmsnative.view.components.ConfirmSwitchPreferenceCompat
|
||||
android:title="@string/developer_settings_enable_beta_version_title"
|
||||
android:key="ENABLE_BETA"
|
||||
android:summary="@string/developer_settings_enable_beta_version_summary"
|
||||
app:iconSpaceReserved="false"
|
||||
android:defaultValue="false"
|
||||
app:confirmTitle="@string/developer_settings_enable_beta_version_title"
|
||||
app:confirmMessage="Sei sicuro di voler abilitare gli aggiornamenti beta? Se accetti dovrai chiudere e riaprire l'app per scaricare l'aggiornamento."
|
||||
/>
|
||||
|
||||
<Preference
|
||||
android:title="@string/developer_settings_title"
|
||||
android:title="@string/developer_settings_export_log_title"
|
||||
android:key="EXPORT_LOG"
|
||||
android:summary="@string/developer_settings_summary"
|
||||
android:summary="@string/developer_settings_export_log_summary"
|
||||
app:iconSpaceReserved="false"
|
||||
/>
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package it.integry.barcode_base_android_library.model;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class BarcodeSetting {
|
||||
|
||||
@ -13,14 +12,13 @@ public class BarcodeSetting {
|
||||
public static final String P_TRIGGER_SCAN_DELAY = "TRIG_SCAN_DELAY";
|
||||
|
||||
|
||||
public static CharSequence[] getTriggerScanModes() {
|
||||
List<String> keys = new ArrayList<>();
|
||||
keys.add(V_TRIGGER_SCAN_MODE_READ_ON_RELEASE);
|
||||
keys.add(V_TRIGGER_SCAN_MODE_ONE_SHOT);
|
||||
// keys.add(V_TRIGGER_SCAN_MODE_CONTINUOS);
|
||||
// keys.add(V_TRIGGER_SCAN_MODE_READ_ON_SECOND_TRIGGER_PRESS);
|
||||
|
||||
return keys.toArray(new String[0]);
|
||||
public static HashMap<String, CharSequence> getTriggerScanModes() {
|
||||
return new HashMap<>() {{
|
||||
put(V_TRIGGER_SCAN_MODE_READ_ON_RELEASE, "Read on release");
|
||||
put(V_TRIGGER_SCAN_MODE_ONE_SHOT, "One shot");
|
||||
// put(V_TRIGGER_SCAN_MODE_CONTINUOS, "Continuous");
|
||||
// put(V_TRIGGER_SCAN_MODE_READ_ON_SECOND_TRIGGER_PRESS, "Read on second trigger press");
|
||||
}};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user