Skip to content

Commit b63d61b

Browse files
authored
Merge pull request #78 from vernu/hotfix-m28
Hotfix m28
2 parents e13f8fa + 3aa6740 commit b63d61b

4 files changed

Lines changed: 70 additions & 4 deletions

File tree

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ android {
1010
applicationId "com.vernu.sms"
1111
minSdk 24
1212
targetSdk 32
13-
versionCode 11
14-
versionName "2.3.1"
13+
versionCode 12
14+
versionName "2.5.0"
1515

1616
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1717

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

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,14 @@ public void onFailure(Call<RegisterDeviceResponseDTO> call, Throwable t) {
151151
});
152152

153153
// TODO: check gateway status/api key/device validity and update UI accordingly
154-
registerDeviceBtn.setOnClickListener(view -> handleRegisterDevice());
154+
registerDeviceBtn.setOnClickListener(view -> {
155+
String _deviceId = SharedPreferenceHelper.getSharedPreferenceString(mContext, AppConstants.SHARED_PREFS_DEVICE_ID_KEY, "");
156+
if (_deviceId == null || _deviceId.isEmpty()) {
157+
handleRegisterDevice();
158+
} else {
159+
handleUpdateDevice();
160+
}
161+
});
155162
scanQRBtn.setOnClickListener(view -> {
156163
IntentIntegrator intentIntegrator = new IntentIntegrator(MainActivity.this);
157164
intentIntegrator.setPrompt("Go to textbee.dev/dashboard and click Register Device to generate QR Code");
@@ -278,6 +285,63 @@ public void onFailure(Call<RegisterDeviceResponseDTO> call, Throwable t) {
278285
});
279286
}
280287

288+
private void handleUpdateDevice() {
289+
String apiKey = apiKeyEditText.getText().toString();
290+
registerDeviceBtn.setEnabled(false);
291+
registerDeviceBtn.setText("Loading...");
292+
View view = findViewById(R.id.registerDeviceBtn);
293+
294+
FirebaseMessaging.getInstance().getToken()
295+
.addOnCompleteListener(task -> {
296+
if (!task.isSuccessful()) {
297+
Snackbar.make(view, "Failed to obtain FCM Token :(", Snackbar.LENGTH_LONG).show();
298+
registerDeviceBtn.setEnabled(true);
299+
registerDeviceBtn.setText("Update");
300+
return;
301+
}
302+
String token = task.getResult();
303+
fcmTokenEditText.setText(token);
304+
305+
RegisterDeviceInputDTO updateDeviceInput = new RegisterDeviceInputDTO();
306+
updateDeviceInput.setEnabled(true);
307+
updateDeviceInput.setFcmToken(token);
308+
updateDeviceInput.setBrand(Build.BRAND);
309+
updateDeviceInput.setManufacturer(Build.MANUFACTURER);
310+
updateDeviceInput.setModel(Build.MODEL);
311+
updateDeviceInput.setBuildId(Build.ID);
312+
updateDeviceInput.setOs(Build.VERSION.BASE_OS);
313+
updateDeviceInput.setAppVersionCode(BuildConfig.VERSION_CODE);
314+
updateDeviceInput.setAppVersionName(BuildConfig.VERSION_NAME);
315+
316+
Call<RegisterDeviceResponseDTO> apiCall = ApiManager.getApiService().updateDevice(deviceId, apiKey, updateDeviceInput);
317+
apiCall.enqueue(new Callback<RegisterDeviceResponseDTO>() {
318+
@Override
319+
public void onResponse(Call<RegisterDeviceResponseDTO> call, Response<RegisterDeviceResponseDTO> response) {
320+
Log.d(TAG, response.toString());
321+
if (!response.isSuccessful()) {
322+
Snackbar.make(view, response.message(), Snackbar.LENGTH_LONG).show();
323+
registerDeviceBtn.setEnabled(true);
324+
registerDeviceBtn.setText("Update");
325+
return;
326+
}
327+
SharedPreferenceHelper.setSharedPreferenceString(mContext, AppConstants.SHARED_PREFS_API_KEY_KEY, apiKey);
328+
Snackbar.make(view, "Device Updated Successfully :)", Snackbar.LENGTH_LONG).show();
329+
registerDeviceBtn.setEnabled(true);
330+
registerDeviceBtn.setText("Update");
331+
}
332+
333+
@Override
334+
public void onFailure(Call<RegisterDeviceResponseDTO> call, Throwable t) {
335+
Snackbar.make(view, "An error occurred :(", Snackbar.LENGTH_LONG).show();
336+
Log.e(TAG, "API_ERROR "+ t.getMessage());
337+
Log.e(TAG, "API_ERROR "+ t.getLocalizedMessage());
338+
registerDeviceBtn.setEnabled(true);
339+
registerDeviceBtn.setText("Update");
340+
}
341+
});
342+
});
343+
}
344+
281345
private void handleRequestPermissions(View view) {
282346
boolean allPermissionsGranted = Arrays.stream(AppConstants.requiredPermissions).allMatch(permission -> TextBeeUtils.isPermissionGranted(mContext, permission));
283347
if (allPermissionsGranted) {

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ describe('GatewayService', () => {
150150
_id: 'device123',
151151
...mockDeviceInput,
152152
user: mockUser._id,
153+
// TODO: add more tests for different app version codes
154+
appVersionCode: 11,
153155
}
154156

155157
it('should update device if it already exists', async () => {

api/src/gateway/gateway.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export class GatewayService {
4343
buildId: input.buildId,
4444
})
4545

46-
if (device) {
46+
if (device && device.appVersionCode <= 11) {
4747
return await this.updateDevice(device._id.toString(), {
4848
...input,
4949
enabled: true,

0 commit comments

Comments
 (0)