diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsViewModel.kt index 45bb12c96..bd5ba4b54 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/privacy/expire/ExpireTimerSettingsViewModel.kt @@ -19,7 +19,7 @@ class ExpireTimerSettingsViewModel(val config: Config, private val repository: E init { if (recipientId != null) { - store.update(Recipient.live(recipientId).liveData) { r, s -> s.copy(initialTimer = r.expireMessages, isForRecipient = true) } + store.update(Recipient.live(recipientId).liveData) { r, s -> s.copy(initialTimer = r.expiresInSeconds, isForRecipient = true) } } else { store.update { it.copy(initialTimer = config.initialValue ?: SignalStore.settings().universalExpireTimer) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt index d8da1c42f..85cf224da 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/ConversationSettingsViewModel.kt @@ -144,7 +144,7 @@ sealed class ConversationSettingsViewModel( isMuteAvailable = !recipient.isSelf, isSearchAvailable = true ), - disappearingMessagesLifespan = recipient.expireMessages, + disappearingMessagesLifespan = recipient.expiresInSeconds, canModifyBlockedState = !recipient.isSelf, specificSettingsState = state.requireRecipientSettingsState().copy( contactLinkState = when { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index 8f07884b3..4683b727d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -755,7 +755,7 @@ public class ConversationActivity extends PassphraseRequiredActivity return; } - long expiresIn = recipient.get().getExpireMessages() * 1000L; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds()); int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); boolean initiating = threadId == -1; QuoteModel quote = result.isViewOnce() ? null : inputPanel.getQuote().orNull(); @@ -890,7 +890,7 @@ public class ConversationActivity extends PassphraseRequiredActivity } if (isSecureText) { - if (recipient.get().getExpireMessages() > 0) { + if (recipient.get().getExpiresInSeconds() > 0) { if (!isInActiveGroup) { inflater.inflate(R.menu.conversation_expiring_on, menu); } @@ -2584,7 +2584,7 @@ public class ConversationActivity extends PassphraseRequiredActivity private void sendSharedContact(List contacts) { int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); - long expiresIn = recipient.get().getExpireMessages() * 1000L; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds()); boolean initiating = threadId == -1; sendMediaMessage(recipient.getId(), isSmsForced(), "", attachmentManager.buildSlideDeck(), null, contacts, Collections.emptyList(), Collections.emptyList(), expiresIn, false, subscriptionId, initiating, false); @@ -2875,7 +2875,7 @@ public class ConversationActivity extends PassphraseRequiredActivity TransportOption transport = sendButton.getSelectedTransport(); boolean forceSms = (recipient.isForceSmsSelection() || sendButton.isManualSelection()) && transport.isSms(); int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); - long expiresIn = recipient.getExpireMessages() * 1000L; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds()); boolean initiating = threadId == -1; boolean needsSplit = !transport.isSms() && message.length() > transport.calculateCharacters(message).maxPrimaryMessageSize; boolean isMediaMessage = attachmentManager.isAttachmentPresent() || @@ -2911,7 +2911,7 @@ public class ConversationActivity extends PassphraseRequiredActivity private void sendMediaMessage(@NonNull MediaSendActivityResult result) { long thread = this.threadId; - long expiresIn = recipient.get().getExpireMessages() * 1000L; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds()); QuoteModel quote = result.isViewOnce() ? null : inputPanel.getQuote().orNull(); List mentions = new ArrayList<>(result.getMentions()); OutgoingMediaMessage message = new OutgoingMediaMessage(recipient.get(), new SlideDeck(), result.getBody(), System.currentTimeMillis(), -1, expiresIn, result.isViewOnce(), distributionType, quote, Collections.emptyList(), Collections.emptyList(), mentions); @@ -3266,7 +3266,7 @@ public class ConversationActivity extends PassphraseRequiredActivity boolean forceSms = sendButton.isManualSelection() && sendButton.getSelectedTransport().isSms(); boolean initiating = threadId == -1; int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); - long expiresIn = recipient.get().getExpireMessages() * 1000L; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds()); AudioSlide audioSlide = new AudioSlide(ConversationActivity.this, uri, size, MediaUtil.AUDIO_AAC, true); SlideDeck slideDeck = new SlideDeck(); slideDeck.addSlide(audioSlide); @@ -3310,7 +3310,7 @@ public class ConversationActivity extends PassphraseRequiredActivity return; } - long expiresIn = recipient.get().getExpireMessages() * 1000L; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds()); int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); boolean initiating = threadId == -1; TransportOption transport = sendButton.getSelectedTransport(); @@ -3915,7 +3915,7 @@ public class ConversationActivity extends PassphraseRequiredActivity return; } - long expiresIn = recipient.get().getExpireMessages() * 1000L; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds()); int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); boolean initiating = threadId == -1; SlideDeck slideDeck = new SlideDeck(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationRepository.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationRepository.java index 18f33969a..819ac353e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationRepository.java @@ -100,7 +100,7 @@ class ConversationRepository { } if (SignalStore.settings().getUniversalExpireTimer() != 0 && - conversationRecipient.getExpireMessages() == 0 && + conversationRecipient.getExpiresInSeconds() == 0 && !conversationRecipient.isGroup() && conversationRecipient.isRegistered() && (threadId == -1 || !DatabaseFactory.getMmsSmsDatabase(context).hasMeaningfulMessage(threadId))) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationTitleView.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationTitleView.java index da723a694..76d1e170c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationTitleView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationTitleView.java @@ -2,9 +2,6 @@ package org.thoughtcrime.securesms.conversation; import android.content.Context; import android.content.res.ColorStateList; -import android.graphics.Color; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffColorFilter; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.AttributeSet; @@ -68,7 +65,7 @@ public class ConversationTitleView extends RelativeLayout { } public void showExpiring(@NonNull LiveRecipient recipient) { - expirationBadgeTime.setText(ExpirationUtil.getExpirationAbbreviatedDisplayValue(getContext(), recipient.get().getExpireMessages())); + expirationBadgeTime.setText(ExpirationUtil.getExpirationAbbreviatedDisplayValue(getContext(), recipient.get().getExpiresInSeconds())); expirationBadgeContainer.setVisibility(View.VISIBLE); updateSubtitleVisibility(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java index 38fc3afe6..780bd4ef5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/GroupManagerV2.java @@ -220,7 +220,7 @@ final class GroupManagerV2 { GroupDatabase.GroupRecord groupRecord = groupDatabase.requireGroup(groupIdV1); String name = Util.emptyIfNull(groupRecord.getTitle()); byte[] avatar = groupRecord.hasAvatar() ? AvatarHelper.getAvatarBytes(context, groupRecord.getRecipientId()) : null; - int messageTimer = Recipient.resolved(groupRecord.getRecipientId()).getExpireMessages(); + int messageTimer = Recipient.resolved(groupRecord.getRecipientId()).getExpiresInSeconds(); Set memberIds = Stream.of(members) .map(Recipient::getId) .filterNot(m -> m.equals(Recipient.self().getId())) diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/LiveGroup.java b/app/src/main/java/org/thoughtcrime/securesms/groups/LiveGroup.java index b78177f81..5fe1498ab 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/LiveGroup.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/LiveGroup.java @@ -188,7 +188,7 @@ public final class LiveGroup { } public LiveData getExpireMessages() { - return Transformations.map(recipient, Recipient::getExpireMessages); + return Transformations.map(recipient, Recipient::getExpiresInSeconds); } public LiveData selfCanEditGroupAttributes() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsDownloadJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsDownloadJob.java index 618324ee5..6518d21f9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsDownloadJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MmsDownloadJob.java @@ -47,6 +47,7 @@ import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; public class MmsDownloadJob extends BaseJob { @@ -248,7 +249,7 @@ public class MmsDownloadJob extends BaseJob { group = Optional.of(DatabaseFactory.getGroupDatabase(context).getOrCreateMmsGroupForMembers(recipients)); } - IncomingMediaMessage message = new IncomingMediaMessage(from, group, body, retrieved.getDate() * 1000L, -1, System.currentTimeMillis(), attachments, subscriptionId, 0, false, false, false, Optional.of(sharedContacts)); + IncomingMediaMessage message = new IncomingMediaMessage(from, group, body, TimeUnit.SECONDS.toMillis(retrieved.getDate()), -1, System.currentTimeMillis(), attachments, subscriptionId, 0, false, false, false, Optional.of(sharedContacts)); Optional insertResult = database.insertMessageInbox(message, contentLocation, threadId); if (insertResult.isPresent()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java index cd31b257c..41791ad57 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java @@ -149,8 +149,8 @@ public class MultiDeviceContactUpdateJob extends BaseJob { verifiedMessage, ProfileKeyUtil.profileKeyOptional(recipient.getProfileKey()), recipient.isBlocked(), - recipient.getExpireMessages() > 0 ? Optional.of(recipient.getExpireMessages()) - : Optional.absent(), + recipient.getExpiresInSeconds() > 0 ? Optional.of(recipient.getExpiresInSeconds()) + : Optional.absent(), Optional.fromNullable(inboxPositions.get(recipientId)), archived.contains(recipientId))); @@ -201,7 +201,7 @@ public class MultiDeviceContactUpdateJob extends BaseJob { Optional name = Optional.fromNullable(recipient.isSystemContact() ? recipient.getDisplayName(context) : recipient.getGroupName(context)); Optional profileKey = ProfileKeyUtil.profileKeyOptional(recipient.getProfileKey()); boolean blocked = recipient.isBlocked(); - Optional expireTimer = recipient.getExpireMessages() > 0 ? Optional.of(recipient.getExpireMessages()) : Optional.absent(); + Optional expireTimer = recipient.getExpiresInSeconds() > 0 ? Optional.of(recipient.getExpiresInSeconds()) : Optional.absent(); Optional inboxPosition = Optional.fromNullable(inboxPositions.get(recipient.getId())); out.write(new DeviceContact(RecipientUtil.toSignalServiceAddress(context, recipient), @@ -228,7 +228,7 @@ public class MultiDeviceContactUpdateJob extends BaseJob { Optional.absent(), ProfileKeyUtil.profileKeyOptionalOrThrow(self.getProfileKey()), false, - self.getExpireMessages() > 0 ? Optional.of(self.getExpireMessages()) : Optional.absent(), + self.getExpiresInSeconds() > 0 ? Optional.of(self.getExpiresInSeconds()) : Optional.absent(), Optional.fromNullable(inboxPositions.get(self.getId())), archived.contains(self.getId()))); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceGroupUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceGroupUpdateJob.java index bbae7085a..6c211809d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceGroupUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceGroupUpdateJob.java @@ -107,7 +107,7 @@ public class MultiDeviceGroupUpdateJob extends BaseJob { RecipientId recipientId = DatabaseFactory.getRecipientDatabase(context).getOrInsertFromPossiblyMigratedGroupId(record.getId()); Recipient recipient = Recipient.resolved(recipientId); - Optional expirationTimer = recipient.getExpireMessages() > 0 ? Optional.of(recipient.getExpireMessages()) : Optional.absent(); + Optional expirationTimer = recipient.getExpiresInSeconds() > 0 ? Optional.of(recipient.getExpiresInSeconds()) : Optional.absent(); Map inboxPositions = DatabaseFactory.getThreadDatabase(context).getInboxPositions(); Set archived = DatabaseFactory.getThreadDatabase(context).getArchivedRecipients(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java index 4382cbbff..c571a313a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupSendJob.java @@ -12,7 +12,6 @@ import com.google.protobuf.ByteString; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.attachments.Attachment; -import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.GroupDatabase; import org.thoughtcrime.securesms.database.GroupReceiptDatabase; @@ -44,31 +43,23 @@ import org.thoughtcrime.securesms.util.GroupUtil; import org.thoughtcrime.securesms.util.RecipientAccessList; import org.whispersystems.libsignal.util.Pair; import org.whispersystems.libsignal.util.guava.Optional; -import org.whispersystems.signalservice.api.SignalServiceMessageSender; import org.whispersystems.signalservice.api.crypto.ContentHint; -import org.whispersystems.signalservice.api.crypto.UnidentifiedAccessPair; import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException; import org.whispersystems.signalservice.api.messages.SendMessageResult; import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage.Preview; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage.Quote; -import org.whispersystems.signalservice.api.messages.SignalServiceGroup; import org.whispersystems.signalservice.api.messages.SignalServiceGroupV2; import org.whispersystems.signalservice.api.messages.shared.SharedContact; -import org.whispersystems.signalservice.api.push.SignalServiceAddress; import org.whispersystems.signalservice.api.push.exceptions.ProofRequiredException; import org.whispersystems.signalservice.api.push.exceptions.ServerRejectedException; -import org.whispersystems.signalservice.internal.push.SignalServiceProtos.GroupContext; import org.whispersystems.signalservice.internal.push.SignalServiceProtos.GroupContextV2; import java.io.IOException; import java.util.Collections; import java.util.List; -import java.util.Map; -import java.util.Objects; import java.util.Set; -import java.util.UUID; import java.util.concurrent.TimeUnit; public final class PushGroupSendJob extends PushSendJob { @@ -309,7 +300,7 @@ public final class PushGroupSendJob extends PushSendJob { SignalServiceGroupV2 group = builder.build(); SignalServiceDataMessage groupDataMessage = SignalServiceDataMessage.newBuilder() .withTimestamp(message.getSentTimeMillis()) - .withExpiration(groupRecipient.getExpireMessages()) + .withExpiration(groupRecipient.getExpiresInSeconds()) .asGroupMessage(group) .build(); return GroupSendUtil.sendResendableDataMessage(context, groupRecipient.requireGroupId().requireV2(), destinations, isRecipientUpdate, ContentHint.IMPLICIT, new MessageId(messageId, true), groupDataMessage); diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java index f8c5e7c94..3ae92bbaf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/PushGroupUpdateJob.java @@ -119,7 +119,7 @@ public class PushGroupUpdateJob extends BaseJob { SignalServiceDataMessage message = SignalServiceDataMessage.newBuilder() .asGroupMessage(groupContext) .withTimestamp(System.currentTimeMillis()) - .withExpiration(groupRecipient.getExpireMessages()) + .withExpiration(groupRecipient.getExpiresInSeconds()) .build(); SignalServiceMessageSender messageSender = ApplicationDependencies.getSignalServiceMessageSender(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java index 6ab817160..a192c694d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaSendViewModel.java @@ -47,6 +47,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.concurrent.TimeUnit; /** * Manages the observable datasets available in {@link MediaSendActivity}. @@ -673,7 +674,7 @@ class MediaSendViewModel extends ViewModel { Collections.emptyList(), System.currentTimeMillis(), -1, - recipient.getExpireMessages() * 1000, + TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds()), isViewOnce(), ThreadDatabase.DistributionTypes.DEFAULT, null, diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java index 9b0d6a99b..05eb2dc76 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.java @@ -167,6 +167,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.UUID; +import java.util.concurrent.TimeUnit; /** * Takes data about a decrypted message, transforms it into user-presentable data, and writes that @@ -740,7 +741,7 @@ public final class MessageContentProcessor { { GroupV1MessageProcessor.process(context, content, message, false); - if (message.getExpiresInSeconds() != 0 && message.getExpiresInSeconds() != threadRecipient.getExpireMessages()) { + if (message.getExpiresInSeconds() != 0 && message.getExpiresInSeconds() != threadRecipient.getExpiresInSeconds()) { handleExpirationUpdate(content, message, Optional.absent(), Optional.of(groupId), senderRecipient, threadRecipient, receivedTime); } @@ -786,7 +787,7 @@ public final class MessageContentProcessor { int expiresInSeconds = message.getExpiresInSeconds(); Optional groupContext = message.getGroupContext(); - if (threadRecipient.getExpireMessages() == expiresInSeconds) { + if (threadRecipient.getExpiresInSeconds() == expiresInSeconds) { log(String.valueOf(content.getTimestamp()), "No change in message expiry for group. Ignoring."); return null; } @@ -1256,7 +1257,7 @@ public final class MessageContentProcessor { content.getServerReceivedTimestamp(), receivedTime, -1, - message.getExpiresInSeconds() * 1000L, + TimeUnit.SECONDS.toMillis(message.getExpiresInSeconds()), false, message.isViewOnce(), content.isNeedsReceipt(), @@ -1317,7 +1318,7 @@ public final class MessageContentProcessor { OutgoingExpirationUpdateMessage expirationUpdateMessage = new OutgoingExpirationUpdateMessage(recipient, message.getTimestamp(), - message.getMessage().getExpiresInSeconds() * 1000L); + TimeUnit.SECONDS.toMillis(message.getMessage().getExpiresInSeconds())); long threadId = DatabaseFactory.getThreadDatabase(context).getOrCreateThreadIdFor(recipient); long messageId = database.insertMessageOutbox(expirationUpdateMessage, threadId, false, null); @@ -1350,7 +1351,7 @@ public final class MessageContentProcessor { OutgoingMediaMessage mediaMessage = new OutgoingMediaMessage(recipients, message.getMessage().getBody().orNull(), syncAttachments, message.getTimestamp(), -1, - message.getMessage().getExpiresInSeconds() * 1000, + TimeUnit.SECONDS.toMillis(message.getMessage().getExpiresInSeconds()), viewOnce, ThreadDatabase.DistributionTypes.DEFAULT, quote.orNull(), sharedContacts.or(Collections.emptyList()), @@ -1360,7 +1361,7 @@ public final class MessageContentProcessor { mediaMessage = new OutgoingSecureMediaMessage(mediaMessage); - if (recipients.getExpireMessages() != message.getMessage().getExpiresInSeconds()) { + if (recipients.getExpiresInSeconds() != message.getMessage().getExpiresInSeconds()) { handleSynchronizeSentExpirationUpdate(message); } @@ -1395,7 +1396,7 @@ public final class MessageContentProcessor { .scheduleDeletion(messageId, true, message.getExpirationStartTimestamp(), - message.getMessage().getExpiresInSeconds() * 1000L); + TimeUnit.SECONDS.toMillis(message.getMessage().getExpiresInSeconds())); } if (recipients.isSelf()) { @@ -1471,7 +1472,7 @@ public final class MessageContentProcessor { MessageDatabase database = DatabaseFactory.getSmsDatabase(context); String body = message.getBody().isPresent() ? message.getBody().get() : ""; - if (message.getExpiresInSeconds() != threadRecipient.getExpireMessages()) { + if (message.getExpiresInSeconds() != threadRecipient.getExpiresInSeconds()) { handleExpirationUpdate(content, message, Optional.absent(), groupId, senderRecipient, threadRecipient, receivedTime); } @@ -1489,7 +1490,7 @@ public final class MessageContentProcessor { receivedTime, body, groupId, - message.getExpiresInSeconds() * 1000L, + TimeUnit.SECONDS.toMillis(message.getExpiresInSeconds()), content.isNeedsReceipt(), content.getServerUuid()); @@ -1512,9 +1513,9 @@ public final class MessageContentProcessor { { Recipient recipient = getSyncMessageDestination(message); String body = message.getMessage().getBody().or(""); - long expiresInMillis = message.getMessage().getExpiresInSeconds() * 1000L; + long expiresInMillis = TimeUnit.SECONDS.toMillis(message.getMessage().getExpiresInSeconds()); - if (recipient.getExpireMessages() != message.getMessage().getExpiresInSeconds()) { + if (recipient.getExpiresInSeconds() != message.getMessage().getExpiresInSeconds()) { handleSynchronizeSentExpirationUpdate(message); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java index 92237250d..0ad483c17 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/RemoteReplyReceiver.java @@ -40,6 +40,7 @@ import org.thoughtcrime.securesms.sms.OutgoingTextMessage; import java.util.Collections; import java.util.LinkedList; import java.util.List; +import java.util.concurrent.TimeUnit; /** * Get the response text from the Wearable Device and sends an message as a reply @@ -73,7 +74,7 @@ public class RemoteReplyReceiver extends BroadcastReceiver { Recipient recipient = Recipient.resolved(recipientId); int subscriptionId = recipient.getDefaultSubscriptionId().or(-1); - long expiresIn = recipient.getExpireMessages() * 1000L; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds()); switch (replyMethod) { case GroupMessage: { diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java index ee8b82bb2..abd77785a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/Recipient.java @@ -863,7 +863,7 @@ public class Recipient { return callVibrate; } - public int getExpireMessages() { + public int getExpiresInSeconds() { return expireMessages; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java index 237186fca..71567dd56 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/RecipientUtil.java @@ -294,7 +294,7 @@ public class RecipientUtil { @WorkerThread public static boolean setAndSendUniversalExpireTimerIfNecessary(@NonNull Context context, @NonNull Recipient recipient, long threadId) { int defaultTimer = SignalStore.settings().getUniversalExpireTimer(); - if (defaultTimer == 0 || recipient.isGroup() || recipient.getExpireMessages() != 0 || !recipient.isRegistered()) { + if (defaultTimer == 0 || recipient.isGroup() || recipient.getExpiresInSeconds() != 0 || !recipient.isRegistered()) { return false; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/QuickResponseService.java b/app/src/main/java/org/thoughtcrime/securesms/service/QuickResponseService.java index a4d5e2228..2da38bf5b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/QuickResponseService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/QuickResponseService.java @@ -15,6 +15,7 @@ import org.thoughtcrime.securesms.util.Rfc5724Uri; import java.net.URISyntaxException; import java.net.URLDecoder; +import java.util.concurrent.TimeUnit; public class QuickResponseService extends IntentService { @@ -48,7 +49,7 @@ public class QuickResponseService extends IntentService { Recipient recipient = Recipient.external(this, number); int subscriptionId = recipient.getDefaultSubscriptionId().or(-1); - long expiresIn = recipient.getExpireMessages() * 1000L; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds()); if (!TextUtils.isEmpty(content)) { MessageSender.send(this, new OutgoingTextMessage(recipient, content, expiresIn, subscriptionId), -1, false, null); diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java index fc5bc1081..8cf6c6d43 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/MultiShareSender.java @@ -14,10 +14,7 @@ import org.signal.core.util.ThreadUtil; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.TransportOption; import org.thoughtcrime.securesms.TransportOptions; -import org.thoughtcrime.securesms.database.DatabaseFactory; -import org.thoughtcrime.securesms.database.StickerDatabase; import org.thoughtcrime.securesms.database.ThreadDatabase; -import org.thoughtcrime.securesms.database.model.StickerRecord; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.mediasend.Media; import org.thoughtcrime.securesms.mms.OutgoingMediaMessage; @@ -25,10 +22,8 @@ import org.thoughtcrime.securesms.mms.SlideDeck; import org.thoughtcrime.securesms.mms.SlideFactory; import org.thoughtcrime.securesms.mms.StickerSlide; import org.thoughtcrime.securesms.recipients.Recipient; -import org.thoughtcrime.securesms.recipients.RecipientFormattingException; import org.thoughtcrime.securesms.sms.MessageSender; import org.thoughtcrime.securesms.sms.OutgoingTextMessage; -import org.thoughtcrime.securesms.stickers.StickerLocator; import org.thoughtcrime.securesms.util.MessageUtil; import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.concurrent.SimpleTask; @@ -37,6 +32,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; +import java.util.concurrent.TimeUnit; /** * MultiShareSender encapsulates send logic (stolen from {@link org.thoughtcrime.securesms.conversation.ConversationActivity} @@ -72,7 +68,7 @@ public final class MultiShareSender { TransportOption transport = resolveTransportOption(context, recipient); boolean forceSms = recipient.isForceSmsSelection() && transport.isSms(); int subscriptionId = transport.getSimSubscriptionId().or(-1); - long expiresIn = recipient.getExpireMessages() * 1000L; + long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds()); boolean needsSplit = !transport.isSms() && message != null && message.length() > transport.calculateCharacters(message).maxPrimaryMessageSize; diff --git a/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java b/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java index 3babab855..30ed09476 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java +++ b/app/src/main/java/org/thoughtcrime/securesms/sms/MessageSender.java @@ -82,6 +82,7 @@ import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; +import java.util.concurrent.TimeUnit; public class MessageSender { @@ -371,14 +372,14 @@ public class MessageSender { private static @NonNull OutgoingTextMessage applyUniversalExpireTimerIfNecessary(@NonNull Context context, @NonNull Recipient recipient, @NonNull OutgoingTextMessage outgoingTextMessage, long threadId) { if (outgoingTextMessage.getExpiresIn() == 0 && RecipientUtil.setAndSendUniversalExpireTimerIfNecessary(context, recipient, threadId)) { - return new OutgoingTextMessage(outgoingTextMessage, SignalStore.settings().getUniversalExpireTimer() * 1000L); + return new OutgoingTextMessage(outgoingTextMessage, TimeUnit.SECONDS.toMillis(SignalStore.settings().getUniversalExpireTimer())); } return outgoingTextMessage; } private static @NonNull OutgoingMediaMessage applyUniversalExpireTimerIfNecessary(@NonNull Context context, @NonNull Recipient recipient, @NonNull OutgoingMediaMessage outgoingMediaMessage, long threadId) { if (!outgoingMediaMessage.isExpirationUpdate() && outgoingMediaMessage.getExpiresIn() == 0 && RecipientUtil.setAndSendUniversalExpireTimerIfNecessary(context, recipient, threadId)) { - return new OutgoingMediaMessage(outgoingMediaMessage, SignalStore.settings().getUniversalExpireTimer() * 1000L); + return new OutgoingMediaMessage(outgoingMediaMessage, TimeUnit.SECONDS.toMillis(SignalStore.settings().getUniversalExpireTimer())); } return outgoingMediaMessage; }