Browse Source

chore(android): receive sms feature improvements

pull/8/head
isra el 2 years ago
parent
commit
aad73880f3
  1. 18
      android/app/src/main/java/com/vernu/sms/activities/MainActivity.java
  2. 89
      android/app/src/main/java/com/vernu/sms/database/local/SMS.java
  3. 2
      android/app/src/main/java/com/vernu/sms/services/GatewayApiService.java

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

@ -27,16 +27,12 @@ import com.vernu.sms.ApiManager;
import com.vernu.sms.AppConstants;
import com.vernu.sms.BuildConfig;
import com.vernu.sms.TextBeeUtils;
import com.vernu.sms.database.local.AppDatabase;
import com.vernu.sms.database.local.SMS;
import com.vernu.sms.R;
import com.vernu.sms.dtos.RegisterDeviceInputDTO;
import com.vernu.sms.dtos.RegisterDeviceResponseDTO;
import com.vernu.sms.helpers.SharedPreferenceHelper;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.Executors;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
@ -44,7 +40,7 @@ import retrofit2.Response;
public class MainActivity extends AppCompatActivity {
private Context mContext;
private Switch gatewaySwitch;
private Switch gatewaySwitch, receiveSMSSwitch;
private EditText apiKeyEditText, fcmTokenEditText;
private Button registerDeviceBtn, grantSMSPermissionBtn, scanQRBtn;
private ImageButton copyDeviceIdImgBtn;
@ -63,6 +59,7 @@ public class MainActivity extends AppCompatActivity {
deviceId = SharedPreferenceHelper.getSharedPreferenceString(mContext, AppConstants.SHARED_PREFS_DEVICE_ID_KEY, "");
setContentView(R.layout.activity_main);
gatewaySwitch = findViewById(R.id.gatewaySwitch);
receiveSMSSwitch = findViewById(R.id.receiveSMSSwitch);
apiKeyEditText = findViewById(R.id.apiKeyEditText);
fcmTokenEditText = findViewById(R.id.fcmTokenEditText);
registerDeviceBtn = findViewById(R.id.registerDeviceBtn);
@ -85,7 +82,7 @@ public class MainActivity extends AppCompatActivity {
String[] missingPermissions = Arrays.stream(AppConstants.requiredPermissions).filter(permission -> !TextBeeUtils.isPermissionGranted(mContext, permission)).toArray(String[]::new);
if (missingPermissions.length == 0) {
grantSMSPermissionBtn.setEnabled(false);
grantSMSPermissionBtn.setText("SMS Permission Granted");
grantSMSPermissionBtn.setText("Permission Granted");
renderAvailableSimOptions();
} else {
Snackbar.make(grantSMSPermissionBtn, "Please Grant Required Permissions to continue: " + Arrays.toString(missingPermissions), Snackbar.LENGTH_SHORT).show();
@ -142,6 +139,15 @@ public class MainActivity extends AppCompatActivity {
}
});
});
receiveSMSSwitch.setChecked(SharedPreferenceHelper.getSharedPreferenceBoolean(mContext, AppConstants.SHARED_PREFS_RECEIVE_SMS_ENABLED_KEY, false));
receiveSMSSwitch.setOnCheckedChangeListener((compoundButton, isCheked) -> {
View view = compoundButton.getRootView();
SharedPreferenceHelper.setSharedPreferenceBoolean(mContext, AppConstants.SHARED_PREFS_RECEIVE_SMS_ENABLED_KEY, isCheked);
compoundButton.setChecked(isCheked);
Snackbar.make(view, "Receive SMS " + (isCheked ? "enabled" : "disabled"), Snackbar.LENGTH_LONG).show();
});
// TODO: check gateway status/api key/device validity and update UI accordingly
registerDeviceBtn.setOnClickListener(view -> handleRegisterDevice());
scanQRBtn.setOnClickListener(view -> {

89
android/app/src/main/java/com/vernu/sms/database/local/SMS.java

@ -12,15 +12,41 @@ import java.util.Date;
@TypeConverters(DateConverter.class)
public class SMS {
public SMS() {
type = null;
}
@PrimaryKey(autoGenerate = true)
private int id;
// This is the ID of the SMS in the server
@ColumnInfo(name = "_id")
private String _id;
@ColumnInfo(name = "message")
private String message = "";
@ColumnInfo(name = "encrypted_message")
private String encryptedMessage = "";
@ColumnInfo(name = "is_encrypted", defaultValue = "0")
private boolean isEncrypted = false;
@ColumnInfo(name = "sender")
private String sender;
@ColumnInfo(name = "recipient")
private String recipient;
@ColumnInfo(name = "requested_at")
private Date requestedAt;
@ColumnInfo(name = "sent_at")
private Date sentAt;
@ColumnInfo(name = "delivered_at")
private Date deliveredAt;
@ColumnInfo(name = "received_at")
private Date receivedAt;
@ -28,14 +54,9 @@ public class SMS {
@ColumnInfo(name = "type")
private String type;
@ColumnInfo(name = "server_acknowledged_at")
private Date serverAcknowledgedAt;
public SMS() {
type = null;
}
public boolean hasServerAcknowledged() {
return serverAcknowledgedAt != null;
}
@ -54,6 +75,14 @@ public class SMS {
this.id = id;
}
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String getMessage() {
return message;
}
@ -62,6 +91,22 @@ public class SMS {
this.message = message;
}
public String getEncryptedMessage() {
return encryptedMessage;
}
public void setEncryptedMessage(String encryptedMessage) {
this.encryptedMessage = encryptedMessage;
}
public boolean getIsEncrypted() {
return isEncrypted;
}
public void setIsEncrypted(boolean isEncrypted) {
this.isEncrypted = isEncrypted;
}
public String getSender() {
return sender;
}
@ -70,6 +115,14 @@ public class SMS {
this.sender = sender;
}
public String getRecipient() {
return recipient;
}
public void setRecipient(String recipient) {
this.recipient = recipient;
}
public Date getServerAcknowledgedAt() {
return serverAcknowledgedAt;
}
@ -78,6 +131,32 @@ public class SMS {
this.serverAcknowledgedAt = serverAcknowledgedAt;
}
public Date getRequestedAt() {
return requestedAt;
}
public void setRequestedAt(Date requestedAt) {
this.requestedAt = requestedAt;
}
public Date getSentAt() {
return sentAt;
}
public void setSentAt(Date sentAt) {
this.sentAt = sentAt;
}
public Date getDeliveredAt() {
return deliveredAt;
}
public void setDeliveredAt(Date deliveredAt) {
this.deliveredAt = deliveredAt;
}
public Date getReceivedAt() {
return receivedAt;
}

2
android/app/src/main/java/com/vernu/sms/services/GatewayApiService.java

@ -19,6 +19,6 @@ public interface GatewayApiService {
@PATCH("gateway/devices/{deviceId}")
Call<RegisterDeviceResponseDTO> updateDevice(@Path("deviceId") String deviceId, @Header("x-api-key") String apiKey, @Body() RegisterDeviceInputDTO body);
@POST("gateway/devices/{deviceId}/receivedSMS")
@POST("gateway/devices/{deviceId}/receiveSMS")
Call<SMSForwardResponseDTO> sendReceivedSMS(@Path("deviceId") String deviceId, @Header("x-api-key") String apiKey, @Body() SMSDTO body);
}
Loading…
Cancel
Save