mirror of
https://github.com/vernu/textbee.git
synced 2026-04-17 13:28:36 -04:00
@@ -10,8 +10,8 @@ android {
|
||||
applicationId "com.vernu.sms"
|
||||
minSdk 24
|
||||
targetSdk 32
|
||||
versionCode 11
|
||||
versionName "2.3.1"
|
||||
versionCode 12
|
||||
versionName "2.5.0"
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
|
||||
@@ -151,7 +151,14 @@ public class MainActivity extends AppCompatActivity {
|
||||
});
|
||||
|
||||
// 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 -> {
|
||||
IntentIntegrator intentIntegrator = new IntentIntegrator(MainActivity.this);
|
||||
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) {
|
||||
boolean allPermissionsGranted = Arrays.stream(AppConstants.requiredPermissions).allMatch(permission -> TextBeeUtils.isPermissionGranted(mContext, permission));
|
||||
if (allPermissionsGranted) {
|
||||
|
||||
@@ -150,6 +150,8 @@ describe('GatewayService', () => {
|
||||
_id: 'device123',
|
||||
...mockDeviceInput,
|
||||
user: mockUser._id,
|
||||
// TODO: add more tests for different app version codes
|
||||
appVersionCode: 11,
|
||||
}
|
||||
|
||||
it('should update device if it already exists', async () => {
|
||||
|
||||
@@ -43,7 +43,7 @@ export class GatewayService {
|
||||
buildId: input.buildId,
|
||||
})
|
||||
|
||||
if (device) {
|
||||
if (device && device.appVersionCode <= 11) {
|
||||
return await this.updateDevice(device._id.toString(), {
|
||||
...input,
|
||||
enabled: true,
|
||||
|
||||
Reference in New Issue
Block a user