Browse Source

chore(android): temporarily disable room db usage

pull/8/head
isra el 2 years ago
parent
commit
238d1830cc
  1. 16
      android/app/build.gradle
  2. 2
      android/app/src/main/AndroidManifest.xml
  3. 2
      android/app/src/main/java/com/vernu/sms/AppConstants.java
  4. 50
      android/app/src/main/java/com/vernu/sms/database/local/AppDatabase.java
  5. 34
      android/app/src/main/java/com/vernu/sms/database/local/DateConverter.java
  6. 386
      android/app/src/main/java/com/vernu/sms/database/local/SMS.java
  7. 54
      android/app/src/main/java/com/vernu/sms/database/local/SMSDao.java
  8. 2
      android/app/src/main/java/com/vernu/sms/dtos/SMSDTO.java
  9. 64
      android/app/src/main/java/com/vernu/sms/receivers/SMSBroadcastReceiver.java

16
android/app/build.gradle

@ -15,11 +15,11 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
arguments["room.schemaLocation"] = "$projectDir/schemas"
}
}
// javaCompileOptions {
// annotationProcessorOptions {
// arguments["room.schemaLocation"] = "$projectDir/schemas"
// }
// }
} }
buildTypes { buildTypes {
@ -53,8 +53,8 @@ dependencies {
implementation 'com.squareup.retrofit2:converter-gson:2.9.0' implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.journeyapps:zxing-android-embedded:4.1.0' implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
def room_version = "2.4.2"
implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
// def room_version = "2.4.2"
// implementation "androidx.room:room-runtime:$room_version"
// annotationProcessor "androidx.room:room-compiler:$room_version"
} }

2
android/app/src/main/AndroidManifest.xml

@ -45,7 +45,7 @@
</receiver> </receiver>
<receiver android:enabled="true" <receiver android:enabled="true"
android:name=".receivers.BootReceiver"
android:name=".receivers.BootCompletedReceiver"
android:exported="true" android:exported="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter> <intent-filter>

2
android/app/src/main/java/com/vernu/sms/AppConstants.java

@ -14,6 +14,6 @@ public class AppConstants {
public static final String SHARED_PREFS_API_KEY_KEY = "API_KEY"; public static final String SHARED_PREFS_API_KEY_KEY = "API_KEY";
public static final String SHARED_PREFS_GATEWAY_ENABLED_KEY = "GATEWAY_ENABLED"; public static final String SHARED_PREFS_GATEWAY_ENABLED_KEY = "GATEWAY_ENABLED";
public static final String SHARED_PREFS_PREFERRED_SIM_KEY = "PREFERRED_SIM"; public static final String SHARED_PREFS_PREFERRED_SIM_KEY = "PREFERRED_SIM";
public static final String SHARED_PREFS_RECEIVE_SMS_ENABLED_KEY = "RECEIVE_SMS_ENABLED"; public static final String SHARED_PREFS_RECEIVE_SMS_ENABLED_KEY = "RECEIVE_SMS_ENABLED";
public static final String SHARED_PREFS_TRACK_SENT_SMS_STATUS_KEY = "TRACK_SENT_SMS_STATUS";
} }

50
android/app/src/main/java/com/vernu/sms/database/local/AppDatabase.java

@ -1,25 +1,25 @@
package com.vernu.sms.database.local;
import android.content.Context;
import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;
@Database(entities = {SMS.class}, version = 2)
public abstract class AppDatabase extends RoomDatabase {
private static volatile AppDatabase INSTANCE;
public static AppDatabase getInstance(Context context) {
if (INSTANCE == null) {
synchronized (AppDatabase.class) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "db1")
.build();
}
}
}
return INSTANCE;
}
public abstract SMSDao localReceivedSMSDao();
}
//package com.vernu.sms.database.local;
//
//import android.content.Context;
//import androidx.room.Database;
//import androidx.room.Room;
//import androidx.room.RoomDatabase;
//
//@Database(entities = {SMS.class}, version = 2)
//public abstract class AppDatabase extends RoomDatabase {
// private static volatile AppDatabase INSTANCE;
//
// public static AppDatabase getInstance(Context context) {
// if (INSTANCE == null) {
// synchronized (AppDatabase.class) {
// if (INSTANCE == null) {
// INSTANCE = Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "db1")
// .build();
// }
// }
// }
// return INSTANCE;
// }
//
// public abstract SMSDao localReceivedSMSDao();
//}

34
android/app/src/main/java/com/vernu/sms/database/local/DateConverter.java

@ -1,17 +1,17 @@
package com.vernu.sms.database.local;
import androidx.room.TypeConverter;
import java.util.Date;
public class DateConverter {
@TypeConverter
public static Date toDate(Long dateLong) {
return dateLong == null ? null : new Date(dateLong);
}
@TypeConverter
public static Long fromDate(Date date) {
return date == null ? null : date.getTime();
}
}
//package com.vernu.sms.database.local;
//
//import androidx.room.TypeConverter;
//
//import java.util.Date;
//
//public class DateConverter {
// @TypeConverter
// public static Date toDate(Long dateLong) {
// return dateLong == null ? null : new Date(dateLong);
// }
//
// @TypeConverter
// public static Long fromDate(Date date) {
// return date == null ? null : date.getTime();
// }
//}

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

@ -1,193 +1,193 @@
package com.vernu.sms.database.local;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import androidx.room.TypeConverters;
import java.util.Date;
@Entity(tableName = "sms")
@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;
@NonNull
@ColumnInfo(name = "type")
private String type;
@ColumnInfo(name = "server_acknowledged_at")
private Date serverAcknowledgedAt;
public boolean hasServerAcknowledged() {
return serverAcknowledgedAt != null;
}
@ColumnInfo(name = "last_acknowledged_request_at")
private Date lastAcknowledgedRequestAt;
@ColumnInfo(name = "retry_count", defaultValue = "0")
private int retryCount = 0;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
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;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getRecipient() {
return recipient;
}
public void setRecipient(String recipient) {
this.recipient = recipient;
}
public Date getServerAcknowledgedAt() {
return serverAcknowledgedAt;
}
public void setServerAcknowledgedAt(Date serverAcknowledgedAt) {
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;
}
public void setReceivedAt(Date receivedAt) {
this.receivedAt = receivedAt;
}
@NonNull
public String getType() {
return type;
}
public void setType(@NonNull String type) {
this.type = type;
}
public Date getLastAcknowledgedRequestAt() {
return lastAcknowledgedRequestAt;
}
public void setLastAcknowledgedRequestAt(Date lastAcknowledgedRequestAt) {
this.lastAcknowledgedRequestAt = lastAcknowledgedRequestAt;
}
public int getRetryCount() {
return retryCount;
}
public void setRetryCount(int retryCount) {
this.retryCount = retryCount;
}
}
//package com.vernu.sms.database.local;
//
//import androidx.annotation.NonNull;
//import androidx.room.ColumnInfo;
//import androidx.room.Entity;
//import androidx.room.PrimaryKey;
//import androidx.room.TypeConverters;
//
//import java.util.Date;
//
//@Entity(tableName = "sms")
//@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;
//
// @NonNull
// @ColumnInfo(name = "type")
// private String type;
//
// @ColumnInfo(name = "server_acknowledged_at")
// private Date serverAcknowledgedAt;
//
// public boolean hasServerAcknowledged() {
// return serverAcknowledgedAt != null;
// }
//
// @ColumnInfo(name = "last_acknowledged_request_at")
// private Date lastAcknowledgedRequestAt;
//
// @ColumnInfo(name = "retry_count", defaultValue = "0")
// private int retryCount = 0;
//
// public int getId() {
// return id;
// }
//
// public void setId(int id) {
// this.id = id;
// }
//
// public String get_id() {
// return _id;
// }
//
// public void set_id(String _id) {
// this._id = _id;
// }
//
// public String getMessage() {
// return message;
// }
//
// public void setMessage(String message) {
// 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;
// }
//
// public void setSender(String sender) {
// this.sender = sender;
// }
//
// public String getRecipient() {
// return recipient;
// }
//
// public void setRecipient(String recipient) {
// this.recipient = recipient;
// }
//
// public Date getServerAcknowledgedAt() {
// return serverAcknowledgedAt;
// }
//
// public void setServerAcknowledgedAt(Date serverAcknowledgedAt) {
// 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;
// }
//
// public void setReceivedAt(Date receivedAt) {
// this.receivedAt = receivedAt;
// }
//
// @NonNull
// public String getType() {
// return type;
// }
//
// public void setType(@NonNull String type) {
// this.type = type;
// }
//
//
// public Date getLastAcknowledgedRequestAt() {
// return lastAcknowledgedRequestAt;
// }
//
// public void setLastAcknowledgedRequestAt(Date lastAcknowledgedRequestAt) {
// this.lastAcknowledgedRequestAt = lastAcknowledgedRequestAt;
// }
//
// public int getRetryCount() {
// return retryCount;
// }
//
// public void setRetryCount(int retryCount) {
// this.retryCount = retryCount;
// }
//}

54
android/app/src/main/java/com/vernu/sms/database/local/SMSDao.java

@ -1,27 +1,27 @@
package com.vernu.sms.database.local;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.OnConflictStrategy;
import androidx.room.Query;
import java.util.List;
@Dao
public interface SMSDao {
@Query("SELECT * FROM sms")
List<SMS> getAll();
@Query("SELECT * FROM sms WHERE id IN (:smsIds)")
List<SMS> loadAllByIds(int[] smsIds);
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(SMS... sms);
@Delete
void delete(SMS sms);
}
//package com.vernu.sms.database.local;
//
//import androidx.room.Dao;
//import androidx.room.Delete;
//import androidx.room.Insert;
//import androidx.room.OnConflictStrategy;
//import androidx.room.Query;
//
//import java.util.List;
//
//@Dao
//public interface SMSDao {
//
// @Query("SELECT * FROM sms")
// List<SMS> getAll();
//
// @Query("SELECT * FROM sms WHERE id IN (:smsIds)")
// List<SMS> loadAllByIds(int[] smsIds);
//
// @Insert(onConflict = OnConflictStrategy.REPLACE)
// void insertAll(SMS... sms);
//
//
// @Delete
// void delete(SMS sms);
//
//}

2
android/app/src/main/java/com/vernu/sms/dtos/SMSDTO.java

@ -4,7 +4,7 @@ import java.util.Date;
public class SMSDTO { public class SMSDTO {
private String sender; private String sender;
private String message;
private String message = "";
private Date receivedAt; private Date receivedAt;
public SMSDTO() { public SMSDTO() {

64
android/app/src/main/java/com/vernu/sms/receivers/SMSBroadcastReceiver.java

@ -8,15 +8,12 @@ import android.telephony.SmsMessage;
import android.util.Log; import android.util.Log;
import com.vernu.sms.ApiManager; import com.vernu.sms.ApiManager;
import com.vernu.sms.AppConstants; import com.vernu.sms.AppConstants;
import com.vernu.sms.database.local.AppDatabase;
import com.vernu.sms.database.local.SMS;
import com.vernu.sms.dtos.SMSDTO; import com.vernu.sms.dtos.SMSDTO;
import com.vernu.sms.dtos.SMSForwardResponseDTO; import com.vernu.sms.dtos.SMSForwardResponseDTO;
import com.vernu.sms.helpers.SharedPreferenceHelper; import com.vernu.sms.helpers.SharedPreferenceHelper;
import java.util.Date; import java.util.Date;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.Executors;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Response; import retrofit2.Response;
@ -48,52 +45,57 @@ public class SMSBroadcastReceiver extends BroadcastReceiver {
return; return;
} }
SMS localReceivedSMS = new SMS();
localReceivedSMS.setType("RECEIVED");
for (SmsMessage message : messages) {
localReceivedSMS.setMessage(localReceivedSMS.getMessage() + message.getMessageBody());
localReceivedSMS.setSender(message.getOriginatingAddress());
localReceivedSMS.setReceivedAt(new Date(message.getTimestampMillis()));
}
// SMS receivedSMS = new SMS();
// receivedSMS.setType("RECEIVED");
// for (SmsMessage message : messages) {
// receivedSMS.setMessage(receivedSMS.getMessage() + message.getMessageBody());
// receivedSMS.setSender(message.getOriginatingAddress());
// receivedSMS.setReceivedAt(new Date(message.getTimestampMillis()));
// }
SMSDTO receivedSMSDTO = new SMSDTO(); SMSDTO receivedSMSDTO = new SMSDTO();
receivedSMSDTO.setSender(localReceivedSMS.getSender());
receivedSMSDTO.setMessage(localReceivedSMS.getMessage());
receivedSMSDTO.setReceivedAt(localReceivedSMS.getReceivedAt());
for (SmsMessage message : messages) {
receivedSMSDTO.setMessage(receivedSMSDTO.getMessage() + message.getMessageBody());
receivedSMSDTO.setSender(message.getOriginatingAddress());
receivedSMSDTO.setReceivedAt(new Date(message.getTimestampMillis()));
}
// receivedSMSDTO.setSender(receivedSMS.getSender());
// receivedSMSDTO.setMessage(receivedSMS.getMessage());
// receivedSMSDTO.setReceivedAt(receivedSMS.getReceivedAt());
Call<SMSForwardResponseDTO> apiCall = ApiManager.getApiService().sendReceivedSMS(deviceId, apiKey, receivedSMSDTO); Call<SMSForwardResponseDTO> apiCall = ApiManager.getApiService().sendReceivedSMS(deviceId, apiKey, receivedSMSDTO);
apiCall.enqueue(new retrofit2.Callback<SMSForwardResponseDTO>() { apiCall.enqueue(new retrofit2.Callback<SMSForwardResponseDTO>() {
@Override @Override
public void onResponse(Call<SMSForwardResponseDTO> call, Response<SMSForwardResponseDTO> response) { public void onResponse(Call<SMSForwardResponseDTO> call, Response<SMSForwardResponseDTO> response) {
Date now = new Date();
// Date now = new Date();
if (response.isSuccessful()) { if (response.isSuccessful()) {
Log.d(TAG, "SMS sent to server successfully"); Log.d(TAG, "SMS sent to server successfully");
localReceivedSMS.setLastAcknowledgedRequestAt(now);
localReceivedSMS.setServerAcknowledgedAt(now);
updateLocalReceivedSMS(localReceivedSMS, context);
// receivedSMS.setLastAcknowledgedRequestAt(now);
// receivedSMS.setServerAcknowledgedAt(now);
// updateLocalReceivedSMS(receivedSMS, context);
} else { } else {
Log.e(TAG, "Failed to send SMS to server"); Log.e(TAG, "Failed to send SMS to server");
localReceivedSMS.setServerAcknowledgedAt(null);
localReceivedSMS.setLastAcknowledgedRequestAt(now);
// localReceivedSMS.setRetryCount(localReceivedSMS.getRetryCount() + 1);
updateLocalReceivedSMS(localReceivedSMS, context);
// receivedSMS.setServerAcknowledgedAt(null);
// receivedSMS.setLastAcknowledgedRequestAt(now);
// receivedSMS.setRetryCount(localReceivedSMS.getRetryCount() + 1);
// updateLocalReceivedSMS(receivedSMS, context);
} }
} }
@Override @Override
public void onFailure(Call<SMSForwardResponseDTO> call, Throwable t) { public void onFailure(Call<SMSForwardResponseDTO> call, Throwable t) {
Log.e(TAG, "Failed to send SMS to server", t); Log.e(TAG, "Failed to send SMS to server", t);
localReceivedSMS.setServerAcknowledgedAt(null);
localReceivedSMS.setLastAcknowledgedRequestAt(new Date());
updateLocalReceivedSMS(localReceivedSMS, context);
// receivedSMS.setServerAcknowledgedAt(null);
// receivedSMS.setLastAcknowledgedRequestAt(new Date());
// updateLocalReceivedSMS(receivedSMS, context);
} }
}); });
} }
private void updateLocalReceivedSMS(SMS localReceivedSMS, Context context) {
Executors.newSingleThreadExecutor().execute(() -> {
AppDatabase appDatabase = AppDatabase.getInstance(context);
appDatabase.localReceivedSMSDao().insertAll(localReceivedSMS);
});
}
// private void updateLocalReceivedSMS(SMS localReceivedSMS, Context context) {
// Executors.newSingleThreadExecutor().execute(() -> {
// AppDatabase appDatabase = AppDatabase.getInstance(context);
// appDatabase.localReceivedSMSDao().insertAll(localReceivedSMS);
// });
// }
} }
Loading…
Cancel
Save