Browse Source

Merge pull request #78 from vernu/hotfix-m28

Hotfix m28
pull/85/head v2.5.0
Israel Abebe 9 months ago
committed by GitHub
parent
commit
b63d61baa5
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      android/app/build.gradle
  2. 66
      android/app/src/main/java/com/vernu/sms/activities/MainActivity.java
  3. 2
      api/src/gateway/gateway.service.spec.ts
  4. 2
      api/src/gateway/gateway.service.ts

4
android/app/build.gradle

@ -10,8 +10,8 @@ android {
applicationId "com.vernu.sms" applicationId "com.vernu.sms"
minSdk 24 minSdk 24
targetSdk 32 targetSdk 32
versionCode 11
versionName "2.3.1"
versionCode 12
versionName "2.5.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

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) {

2
api/src/gateway/gateway.service.spec.ts

@ -150,6 +150,8 @@ describe('GatewayService', () => {
_id: 'device123', _id: 'device123',
...mockDeviceInput, ...mockDeviceInput,
user: mockUser._id, user: mockUser._id,
// TODO: add more tests for different app version codes
appVersionCode: 11,
} }
it('should update device if it already exists', async () => { it('should update device if it already exists', async () => {

2
api/src/gateway/gateway.service.ts

@ -43,7 +43,7 @@ export class GatewayService {
buildId: input.buildId, buildId: input.buildId,
}) })
if (device) {
if (device && device.appVersionCode <= 11) {
return await this.updateDevice(device._id.toString(), { return await this.updateDevice(device._id.toString(), {
...input, ...input,
enabled: true, enabled: true,

Loading…
Cancel
Save