Browse Source

fix: resolve timezone issues for received messages

pull/19/head
isra el 2 years ago
parent
commit
c2e7711167
  1. 15
      android/app/src/main/java/com/vernu/sms/dtos/SMSDTO.java
  2. 2
      android/app/src/main/java/com/vernu/sms/receivers/SMSBroadcastReceiver.java
  3. 9
      api/src/gateway/gateway.dto.ts
  4. 12
      api/src/gateway/gateway.service.ts

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

@ -5,16 +5,11 @@ 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 long receivedAtInMillis;
public SMSDTO() { public SMSDTO() {
} }
public SMSDTO(String sender, String message, Date receivedAt) {
this.sender = sender;
this.message = message;
this.receivedAt = receivedAt;
}
public String getSender() { public String getSender() {
return sender; return sender;
@ -32,11 +27,11 @@ public class SMSDTO {
this.message = message; this.message = message;
} }
public Date getReceivedAt() {
return receivedAt;
public long getReceivedAtInMillis() {
return receivedAtInMillis;
} }
public void setReceivedAt(Date receivedAt) {
this.receivedAt = receivedAt;
public void setReceivedAtInMillis(long receivedAtInMillis) {
this.receivedAtInMillis = receivedAtInMillis;
} }
} }

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

@ -58,7 +58,7 @@ public class SMSBroadcastReceiver extends BroadcastReceiver {
for (SmsMessage message : messages) { for (SmsMessage message : messages) {
receivedSMSDTO.setMessage(receivedSMSDTO.getMessage() + message.getMessageBody()); receivedSMSDTO.setMessage(receivedSMSDTO.getMessage() + message.getMessageBody());
receivedSMSDTO.setSender(message.getOriginatingAddress()); receivedSMSDTO.setSender(message.getOriginatingAddress());
receivedSMSDTO.setReceivedAt(new Date(message.getTimestampMillis()));
receivedSMSDTO.setReceivedAtInMillis(message.getTimestampMillis());
} }
// receivedSMSDTO.setSender(receivedSMS.getSender()); // receivedSMSDTO.setSender(receivedSMS.getSender());
// receivedSMSDTO.setMessage(receivedSMS.getMessage()); // receivedSMSDTO.setMessage(receivedSMS.getMessage());

9
api/src/gateway/gateway.dto.ts

@ -98,7 +98,14 @@ export class ReceivedSMSDTO {
required: true, required: true,
description: 'The time the message was received', description: 'The time the message was received',
}) })
receivedAt: Date
receivedAt?: Date
@ApiProperty({
type: Number,
required: true,
description: 'The time the message was created',
})
receivedAtInMillis?: number
} }
export class DeviceDTO { export class DeviceDTO {

12
api/src/gateway/gateway.service.ts

@ -200,7 +200,11 @@ export class GatewayService {
) )
} }
if (!dto.receivedAt || !dto.sender || !dto.message) {
if (
(!dto.receivedAt && !dto.receivedAtInMillis) ||
!dto.sender ||
!dto.message
) {
console.log('Invalid received SMS data') console.log('Invalid received SMS data')
throw new HttpException( throw new HttpException(
{ {
@ -211,12 +215,16 @@ export class GatewayService {
) )
} }
const receivedAt = dto.receivedAtInMillis
? new Date(dto.receivedAtInMillis)
: dto.receivedAt
const sms = await this.smsModel.create({ const sms = await this.smsModel.create({
device: device._id, device: device._id,
message: dto.message, message: dto.message,
type: SMSType.RECEIVED, type: SMSType.RECEIVED,
sender: dto.sender, sender: dto.sender,
receivedAt: dto.receivedAt,
receivedAt,
}) })
this.deviceModel this.deviceModel

Loading…
Cancel
Save