Browse Source

fix(android): improve device registration and update logic

pull/78/head
isra el 9 months ago
parent
commit
56fb4b2945
  1. 66
      android/app/src/main/java/com/vernu/sms/activities/MainActivity.java

66
android/app/src/main/java/com/vernu/sms/activities/MainActivity.java

@ -151,7 +151,14 @@ public class MainActivity extends AppCompatActivity {
}); });
// TODO: check gateway status/api key/device validity and update UI accordingly // TODO: check gateway status/api key/device validity and update UI accordingly
registerDeviceBtn.setOnClickListener(view -> handleRegisterDevice());
registerDeviceBtn.setOnClickListener(view -> {
String _deviceId = SharedPreferenceHelper.getSharedPreferenceString(mContext, AppConstants.SHARED_PREFS_DEVICE_ID_KEY, "");
if (_deviceId == null || _deviceId.isEmpty()) {
handleRegisterDevice();
} else {
handleUpdateDevice();
}
});
scanQRBtn.setOnClickListener(view -> { scanQRBtn.setOnClickListener(view -> {
IntentIntegrator intentIntegrator = new IntentIntegrator(MainActivity.this); IntentIntegrator intentIntegrator = new IntentIntegrator(MainActivity.this);
intentIntegrator.setPrompt("Go to textbee.dev/dashboard and click Register Device to generate QR Code"); intentIntegrator.setPrompt("Go to textbee.dev/dashboard and click Register Device to generate QR Code");
@ -278,6 +285,63 @@ public class MainActivity extends AppCompatActivity {
}); });
} }
private void handleUpdateDevice() {
String apiKey = apiKeyEditText.getText().toString();
registerDeviceBtn.setEnabled(false);
registerDeviceBtn.setText("Loading...");
View view = findViewById(R.id.registerDeviceBtn);
FirebaseMessaging.getInstance().getToken()
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
Snackbar.make(view, "Failed to obtain FCM Token :(", Snackbar.LENGTH_LONG).show();
registerDeviceBtn.setEnabled(true);
registerDeviceBtn.setText("Update");
return;
}
String token = task.getResult();
fcmTokenEditText.setText(token);
RegisterDeviceInputDTO updateDeviceInput = new RegisterDeviceInputDTO();
updateDeviceInput.setEnabled(true);
updateDeviceInput.setFcmToken(token);
updateDeviceInput.setBrand(Build.BRAND);
updateDeviceInput.setManufacturer(Build.MANUFACTURER);
updateDeviceInput.setModel(Build.MODEL);
updateDeviceInput.setBuildId(Build.ID);
updateDeviceInput.setOs(Build.VERSION.BASE_OS);
updateDeviceInput.setAppVersionCode(BuildConfig.VERSION_CODE);
updateDeviceInput.setAppVersionName(BuildConfig.VERSION_NAME);
Call<RegisterDeviceResponseDTO> apiCall = ApiManager.getApiService().updateDevice(deviceId, apiKey, updateDeviceInput);
apiCall.enqueue(new Callback<RegisterDeviceResponseDTO>() {
@Override
public void onResponse(Call<RegisterDeviceResponseDTO> call, Response<RegisterDeviceResponseDTO> response) {
Log.d(TAG, response.toString());
if (!response.isSuccessful()) {
Snackbar.make(view, response.message(), Snackbar.LENGTH_LONG).show();
registerDeviceBtn.setEnabled(true);
registerDeviceBtn.setText("Update");
return;
}
SharedPreferenceHelper.setSharedPreferenceString(mContext, AppConstants.SHARED_PREFS_API_KEY_KEY, apiKey);
Snackbar.make(view, "Device Updated Successfully :)", Snackbar.LENGTH_LONG).show();
registerDeviceBtn.setEnabled(true);
registerDeviceBtn.setText("Update");
}
@Override
public void onFailure(Call<RegisterDeviceResponseDTO> call, Throwable t) {
Snackbar.make(view, "An error occurred :(", Snackbar.LENGTH_LONG).show();
Log.e(TAG, "API_ERROR "+ t.getMessage());
Log.e(TAG, "API_ERROR "+ t.getLocalizedMessage());
registerDeviceBtn.setEnabled(true);
registerDeviceBtn.setText("Update");
}
});
});
}
private void handleRequestPermissions(View view) { private void handleRequestPermissions(View view) {
boolean allPermissionsGranted = Arrays.stream(AppConstants.requiredPermissions).allMatch(permission -> TextBeeUtils.isPermissionGranted(mContext, permission)); boolean allPermissionsGranted = Arrays.stream(AppConstants.requiredPermissions).allMatch(permission -> TextBeeUtils.isPermissionGranted(mContext, permission));
if (allPermissionsGranted) { if (allPermissionsGranted) {

Loading…
Cancel
Save