Improve clarity around time conversions.

fork-5.53.8
Greyson Parrelli 2021-07-29 16:24:20 -04:00 zatwierdzone przez GitHub
rodzic 9af966b030
commit d7011e3353
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
20 zmienionych plików z 48 dodań i 58 usunięć

Wyświetl plik

@ -19,7 +19,7 @@ class ExpireTimerSettingsViewModel(val config: Config, private val repository: E
init { init {
if (recipientId != null) { 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 { } else {
store.update { it.copy(initialTimer = config.initialValue ?: SignalStore.settings().universalExpireTimer) } store.update { it.copy(initialTimer = config.initialValue ?: SignalStore.settings().universalExpireTimer) }
} }

Wyświetl plik

@ -144,7 +144,7 @@ sealed class ConversationSettingsViewModel(
isMuteAvailable = !recipient.isSelf, isMuteAvailable = !recipient.isSelf,
isSearchAvailable = true isSearchAvailable = true
), ),
disappearingMessagesLifespan = recipient.expireMessages, disappearingMessagesLifespan = recipient.expiresInSeconds,
canModifyBlockedState = !recipient.isSelf, canModifyBlockedState = !recipient.isSelf,
specificSettingsState = state.requireRecipientSettingsState().copy( specificSettingsState = state.requireRecipientSettingsState().copy(
contactLinkState = when { contactLinkState = when {

Wyświetl plik

@ -755,7 +755,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
return; return;
} }
long expiresIn = recipient.get().getExpireMessages() * 1000L; long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds());
int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1);
boolean initiating = threadId == -1; boolean initiating = threadId == -1;
QuoteModel quote = result.isViewOnce() ? null : inputPanel.getQuote().orNull(); QuoteModel quote = result.isViewOnce() ? null : inputPanel.getQuote().orNull();
@ -890,7 +890,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
} }
if (isSecureText) { if (isSecureText) {
if (recipient.get().getExpireMessages() > 0) { if (recipient.get().getExpiresInSeconds() > 0) {
if (!isInActiveGroup) { if (!isInActiveGroup) {
inflater.inflate(R.menu.conversation_expiring_on, menu); inflater.inflate(R.menu.conversation_expiring_on, menu);
} }
@ -2584,7 +2584,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
private void sendSharedContact(List<Contact> contacts) { private void sendSharedContact(List<Contact> contacts) {
int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); 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; boolean initiating = threadId == -1;
sendMediaMessage(recipient.getId(), isSmsForced(), "", attachmentManager.buildSlideDeck(), null, contacts, Collections.emptyList(), Collections.emptyList(), expiresIn, false, subscriptionId, initiating, false); 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(); TransportOption transport = sendButton.getSelectedTransport();
boolean forceSms = (recipient.isForceSmsSelection() || sendButton.isManualSelection()) && transport.isSms(); boolean forceSms = (recipient.isForceSmsSelection() || sendButton.isManualSelection()) && transport.isSms();
int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1);
long expiresIn = recipient.getExpireMessages() * 1000L; long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds());
boolean initiating = threadId == -1; boolean initiating = threadId == -1;
boolean needsSplit = !transport.isSms() && message.length() > transport.calculateCharacters(message).maxPrimaryMessageSize; boolean needsSplit = !transport.isSms() && message.length() > transport.calculateCharacters(message).maxPrimaryMessageSize;
boolean isMediaMessage = attachmentManager.isAttachmentPresent() || boolean isMediaMessage = attachmentManager.isAttachmentPresent() ||
@ -2911,7 +2911,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
private void sendMediaMessage(@NonNull MediaSendActivityResult result) { private void sendMediaMessage(@NonNull MediaSendActivityResult result) {
long thread = this.threadId; 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(); QuoteModel quote = result.isViewOnce() ? null : inputPanel.getQuote().orNull();
List<Mention> mentions = new ArrayList<>(result.getMentions()); List<Mention> 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); 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 forceSms = sendButton.isManualSelection() && sendButton.getSelectedTransport().isSms();
boolean initiating = threadId == -1; boolean initiating = threadId == -1;
int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-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); AudioSlide audioSlide = new AudioSlide(ConversationActivity.this, uri, size, MediaUtil.AUDIO_AAC, true);
SlideDeck slideDeck = new SlideDeck(); SlideDeck slideDeck = new SlideDeck();
slideDeck.addSlide(audioSlide); slideDeck.addSlide(audioSlide);
@ -3310,7 +3310,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
return; return;
} }
long expiresIn = recipient.get().getExpireMessages() * 1000L; long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds());
int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1);
boolean initiating = threadId == -1; boolean initiating = threadId == -1;
TransportOption transport = sendButton.getSelectedTransport(); TransportOption transport = sendButton.getSelectedTransport();
@ -3915,7 +3915,7 @@ public class ConversationActivity extends PassphraseRequiredActivity
return; return;
} }
long expiresIn = recipient.get().getExpireMessages() * 1000L; long expiresIn = TimeUnit.SECONDS.toMillis(recipient.get().getExpiresInSeconds());
int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1); int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1);
boolean initiating = threadId == -1; boolean initiating = threadId == -1;
SlideDeck slideDeck = new SlideDeck(); SlideDeck slideDeck = new SlideDeck();

Wyświetl plik

@ -100,7 +100,7 @@ class ConversationRepository {
} }
if (SignalStore.settings().getUniversalExpireTimer() != 0 && if (SignalStore.settings().getUniversalExpireTimer() != 0 &&
conversationRecipient.getExpireMessages() == 0 && conversationRecipient.getExpiresInSeconds() == 0 &&
!conversationRecipient.isGroup() && !conversationRecipient.isGroup() &&
conversationRecipient.isRegistered() && conversationRecipient.isRegistered() &&
(threadId == -1 || !DatabaseFactory.getMmsSmsDatabase(context).hasMeaningfulMessage(threadId))) (threadId == -1 || !DatabaseFactory.getMmsSmsDatabase(context).hasMeaningfulMessage(threadId)))

Wyświetl plik

@ -2,9 +2,6 @@ package org.thoughtcrime.securesms.conversation;
import android.content.Context; import android.content.Context;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.AttributeSet; import android.util.AttributeSet;
@ -68,7 +65,7 @@ public class ConversationTitleView extends RelativeLayout {
} }
public void showExpiring(@NonNull LiveRecipient recipient) { 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); expirationBadgeContainer.setVisibility(View.VISIBLE);
updateSubtitleVisibility(); updateSubtitleVisibility();
} }

Wyświetl plik

@ -220,7 +220,7 @@ final class GroupManagerV2 {
GroupDatabase.GroupRecord groupRecord = groupDatabase.requireGroup(groupIdV1); GroupDatabase.GroupRecord groupRecord = groupDatabase.requireGroup(groupIdV1);
String name = Util.emptyIfNull(groupRecord.getTitle()); String name = Util.emptyIfNull(groupRecord.getTitle());
byte[] avatar = groupRecord.hasAvatar() ? AvatarHelper.getAvatarBytes(context, groupRecord.getRecipientId()) : null; 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<RecipientId> memberIds = Stream.of(members) Set<RecipientId> memberIds = Stream.of(members)
.map(Recipient::getId) .map(Recipient::getId)
.filterNot(m -> m.equals(Recipient.self().getId())) .filterNot(m -> m.equals(Recipient.self().getId()))

Wyświetl plik

@ -188,7 +188,7 @@ public final class LiveGroup {
} }
public LiveData<Integer> getExpireMessages() { public LiveData<Integer> getExpireMessages() {
return Transformations.map(recipient, Recipient::getExpireMessages); return Transformations.map(recipient, Recipient::getExpiresInSeconds);
} }
public LiveData<Boolean> selfCanEditGroupAttributes() { public LiveData<Boolean> selfCanEditGroupAttributes() {

Wyświetl plik

@ -47,6 +47,7 @@ import java.util.HashSet;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit;
public class MmsDownloadJob extends BaseJob { public class MmsDownloadJob extends BaseJob {
@ -248,7 +249,7 @@ public class MmsDownloadJob extends BaseJob {
group = Optional.of(DatabaseFactory.getGroupDatabase(context).getOrCreateMmsGroupForMembers(recipients)); 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> insertResult = database.insertMessageInbox(message, contentLocation, threadId); Optional<InsertResult> insertResult = database.insertMessageInbox(message, contentLocation, threadId);
if (insertResult.isPresent()) { if (insertResult.isPresent()) {

Wyświetl plik

@ -149,8 +149,8 @@ public class MultiDeviceContactUpdateJob extends BaseJob {
verifiedMessage, verifiedMessage,
ProfileKeyUtil.profileKeyOptional(recipient.getProfileKey()), ProfileKeyUtil.profileKeyOptional(recipient.getProfileKey()),
recipient.isBlocked(), recipient.isBlocked(),
recipient.getExpireMessages() > 0 ? Optional.of(recipient.getExpireMessages()) recipient.getExpiresInSeconds() > 0 ? Optional.of(recipient.getExpiresInSeconds())
: Optional.absent(), : Optional.absent(),
Optional.fromNullable(inboxPositions.get(recipientId)), Optional.fromNullable(inboxPositions.get(recipientId)),
archived.contains(recipientId))); archived.contains(recipientId)));
@ -201,7 +201,7 @@ public class MultiDeviceContactUpdateJob extends BaseJob {
Optional<String> name = Optional.fromNullable(recipient.isSystemContact() ? recipient.getDisplayName(context) : recipient.getGroupName(context)); Optional<String> name = Optional.fromNullable(recipient.isSystemContact() ? recipient.getDisplayName(context) : recipient.getGroupName(context));
Optional<ProfileKey> profileKey = ProfileKeyUtil.profileKeyOptional(recipient.getProfileKey()); Optional<ProfileKey> profileKey = ProfileKeyUtil.profileKeyOptional(recipient.getProfileKey());
boolean blocked = recipient.isBlocked(); boolean blocked = recipient.isBlocked();
Optional<Integer> expireTimer = recipient.getExpireMessages() > 0 ? Optional.of(recipient.getExpireMessages()) : Optional.absent(); Optional<Integer> expireTimer = recipient.getExpiresInSeconds() > 0 ? Optional.of(recipient.getExpiresInSeconds()) : Optional.absent();
Optional<Integer> inboxPosition = Optional.fromNullable(inboxPositions.get(recipient.getId())); Optional<Integer> inboxPosition = Optional.fromNullable(inboxPositions.get(recipient.getId()));
out.write(new DeviceContact(RecipientUtil.toSignalServiceAddress(context, recipient), out.write(new DeviceContact(RecipientUtil.toSignalServiceAddress(context, recipient),
@ -228,7 +228,7 @@ public class MultiDeviceContactUpdateJob extends BaseJob {
Optional.absent(), Optional.absent(),
ProfileKeyUtil.profileKeyOptionalOrThrow(self.getProfileKey()), ProfileKeyUtil.profileKeyOptionalOrThrow(self.getProfileKey()),
false, 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())), Optional.fromNullable(inboxPositions.get(self.getId())),
archived.contains(self.getId()))); archived.contains(self.getId())));
} }

Wyświetl plik

@ -107,7 +107,7 @@ public class MultiDeviceGroupUpdateJob extends BaseJob {
RecipientId recipientId = DatabaseFactory.getRecipientDatabase(context).getOrInsertFromPossiblyMigratedGroupId(record.getId()); RecipientId recipientId = DatabaseFactory.getRecipientDatabase(context).getOrInsertFromPossiblyMigratedGroupId(record.getId());
Recipient recipient = Recipient.resolved(recipientId); Recipient recipient = Recipient.resolved(recipientId);
Optional<Integer> expirationTimer = recipient.getExpireMessages() > 0 ? Optional.of(recipient.getExpireMessages()) : Optional.absent(); Optional<Integer> expirationTimer = recipient.getExpiresInSeconds() > 0 ? Optional.of(recipient.getExpiresInSeconds()) : Optional.absent();
Map<RecipientId, Integer> inboxPositions = DatabaseFactory.getThreadDatabase(context).getInboxPositions(); Map<RecipientId, Integer> inboxPositions = DatabaseFactory.getThreadDatabase(context).getInboxPositions();
Set<RecipientId> archived = DatabaseFactory.getThreadDatabase(context).getArchivedRecipients(); Set<RecipientId> archived = DatabaseFactory.getThreadDatabase(context).getArchivedRecipients();

Wyświetl plik

@ -12,7 +12,6 @@ import com.google.protobuf.ByteString;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.attachments.Attachment; import org.thoughtcrime.securesms.attachments.Attachment;
import org.thoughtcrime.securesms.crypto.UnidentifiedAccessUtil;
import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.GroupDatabase; import org.thoughtcrime.securesms.database.GroupDatabase;
import org.thoughtcrime.securesms.database.GroupReceiptDatabase; import org.thoughtcrime.securesms.database.GroupReceiptDatabase;
@ -44,31 +43,23 @@ import org.thoughtcrime.securesms.util.GroupUtil;
import org.thoughtcrime.securesms.util.RecipientAccessList; import org.thoughtcrime.securesms.util.RecipientAccessList;
import org.whispersystems.libsignal.util.Pair; import org.whispersystems.libsignal.util.Pair;
import org.whispersystems.libsignal.util.guava.Optional; 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.ContentHint;
import org.whispersystems.signalservice.api.crypto.UnidentifiedAccessPair;
import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException; import org.whispersystems.signalservice.api.crypto.UntrustedIdentityException;
import org.whispersystems.signalservice.api.messages.SendMessageResult; import org.whispersystems.signalservice.api.messages.SendMessageResult;
import org.whispersystems.signalservice.api.messages.SignalServiceAttachment; import org.whispersystems.signalservice.api.messages.SignalServiceAttachment;
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage.Preview; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage.Preview;
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage.Quote; 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.SignalServiceGroupV2;
import org.whispersystems.signalservice.api.messages.shared.SharedContact; 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.ProofRequiredException;
import org.whispersystems.signalservice.api.push.exceptions.ServerRejectedException; 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 org.whispersystems.signalservice.internal.push.SignalServiceProtos.GroupContextV2;
import java.io.IOException; import java.io.IOException;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
public final class PushGroupSendJob extends PushSendJob { public final class PushGroupSendJob extends PushSendJob {
@ -309,7 +300,7 @@ public final class PushGroupSendJob extends PushSendJob {
SignalServiceGroupV2 group = builder.build(); SignalServiceGroupV2 group = builder.build();
SignalServiceDataMessage groupDataMessage = SignalServiceDataMessage.newBuilder() SignalServiceDataMessage groupDataMessage = SignalServiceDataMessage.newBuilder()
.withTimestamp(message.getSentTimeMillis()) .withTimestamp(message.getSentTimeMillis())
.withExpiration(groupRecipient.getExpireMessages()) .withExpiration(groupRecipient.getExpiresInSeconds())
.asGroupMessage(group) .asGroupMessage(group)
.build(); .build();
return GroupSendUtil.sendResendableDataMessage(context, groupRecipient.requireGroupId().requireV2(), destinations, isRecipientUpdate, ContentHint.IMPLICIT, new MessageId(messageId, true), groupDataMessage); return GroupSendUtil.sendResendableDataMessage(context, groupRecipient.requireGroupId().requireV2(), destinations, isRecipientUpdate, ContentHint.IMPLICIT, new MessageId(messageId, true), groupDataMessage);

Wyświetl plik

@ -119,7 +119,7 @@ public class PushGroupUpdateJob extends BaseJob {
SignalServiceDataMessage message = SignalServiceDataMessage.newBuilder() SignalServiceDataMessage message = SignalServiceDataMessage.newBuilder()
.asGroupMessage(groupContext) .asGroupMessage(groupContext)
.withTimestamp(System.currentTimeMillis()) .withTimestamp(System.currentTimeMillis())
.withExpiration(groupRecipient.getExpireMessages()) .withExpiration(groupRecipient.getExpiresInSeconds())
.build(); .build();
SignalServiceMessageSender messageSender = ApplicationDependencies.getSignalServiceMessageSender(); SignalServiceMessageSender messageSender = ApplicationDependencies.getSignalServiceMessageSender();

Wyświetl plik

@ -47,6 +47,7 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.TimeUnit;
/** /**
* Manages the observable datasets available in {@link MediaSendActivity}. * Manages the observable datasets available in {@link MediaSendActivity}.
@ -673,7 +674,7 @@ class MediaSendViewModel extends ViewModel {
Collections.emptyList(), Collections.emptyList(),
System.currentTimeMillis(), System.currentTimeMillis(),
-1, -1,
recipient.getExpireMessages() * 1000, TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds()),
isViewOnce(), isViewOnce(),
ThreadDatabase.DistributionTypes.DEFAULT, ThreadDatabase.DistributionTypes.DEFAULT,
null, null,

Wyświetl plik

@ -167,6 +167,7 @@ import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.TimeUnit;
/** /**
* Takes data about a decrypted message, transforms it into user-presentable data, and writes that * 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); 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); handleExpirationUpdate(content, message, Optional.absent(), Optional.of(groupId), senderRecipient, threadRecipient, receivedTime);
} }
@ -786,7 +787,7 @@ public final class MessageContentProcessor {
int expiresInSeconds = message.getExpiresInSeconds(); int expiresInSeconds = message.getExpiresInSeconds();
Optional<SignalServiceGroupContext> groupContext = message.getGroupContext(); Optional<SignalServiceGroupContext> groupContext = message.getGroupContext();
if (threadRecipient.getExpireMessages() == expiresInSeconds) { if (threadRecipient.getExpiresInSeconds() == expiresInSeconds) {
log(String.valueOf(content.getTimestamp()), "No change in message expiry for group. Ignoring."); log(String.valueOf(content.getTimestamp()), "No change in message expiry for group. Ignoring.");
return null; return null;
} }
@ -1256,7 +1257,7 @@ public final class MessageContentProcessor {
content.getServerReceivedTimestamp(), content.getServerReceivedTimestamp(),
receivedTime, receivedTime,
-1, -1,
message.getExpiresInSeconds() * 1000L, TimeUnit.SECONDS.toMillis(message.getExpiresInSeconds()),
false, false,
message.isViewOnce(), message.isViewOnce(),
content.isNeedsReceipt(), content.isNeedsReceipt(),
@ -1317,7 +1318,7 @@ public final class MessageContentProcessor {
OutgoingExpirationUpdateMessage expirationUpdateMessage = new OutgoingExpirationUpdateMessage(recipient, OutgoingExpirationUpdateMessage expirationUpdateMessage = new OutgoingExpirationUpdateMessage(recipient,
message.getTimestamp(), message.getTimestamp(),
message.getMessage().getExpiresInSeconds() * 1000L); TimeUnit.SECONDS.toMillis(message.getMessage().getExpiresInSeconds()));
long threadId = DatabaseFactory.getThreadDatabase(context).getOrCreateThreadIdFor(recipient); long threadId = DatabaseFactory.getThreadDatabase(context).getOrCreateThreadIdFor(recipient);
long messageId = database.insertMessageOutbox(expirationUpdateMessage, threadId, false, null); 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(), OutgoingMediaMessage mediaMessage = new OutgoingMediaMessage(recipients, message.getMessage().getBody().orNull(),
syncAttachments, syncAttachments,
message.getTimestamp(), -1, message.getTimestamp(), -1,
message.getMessage().getExpiresInSeconds() * 1000, TimeUnit.SECONDS.toMillis(message.getMessage().getExpiresInSeconds()),
viewOnce, viewOnce,
ThreadDatabase.DistributionTypes.DEFAULT, quote.orNull(), ThreadDatabase.DistributionTypes.DEFAULT, quote.orNull(),
sharedContacts.or(Collections.emptyList()), sharedContacts.or(Collections.emptyList()),
@ -1360,7 +1361,7 @@ public final class MessageContentProcessor {
mediaMessage = new OutgoingSecureMediaMessage(mediaMessage); mediaMessage = new OutgoingSecureMediaMessage(mediaMessage);
if (recipients.getExpireMessages() != message.getMessage().getExpiresInSeconds()) { if (recipients.getExpiresInSeconds() != message.getMessage().getExpiresInSeconds()) {
handleSynchronizeSentExpirationUpdate(message); handleSynchronizeSentExpirationUpdate(message);
} }
@ -1395,7 +1396,7 @@ public final class MessageContentProcessor {
.scheduleDeletion(messageId, .scheduleDeletion(messageId,
true, true,
message.getExpirationStartTimestamp(), message.getExpirationStartTimestamp(),
message.getMessage().getExpiresInSeconds() * 1000L); TimeUnit.SECONDS.toMillis(message.getMessage().getExpiresInSeconds()));
} }
if (recipients.isSelf()) { if (recipients.isSelf()) {
@ -1471,7 +1472,7 @@ public final class MessageContentProcessor {
MessageDatabase database = DatabaseFactory.getSmsDatabase(context); MessageDatabase database = DatabaseFactory.getSmsDatabase(context);
String body = message.getBody().isPresent() ? message.getBody().get() : ""; 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); handleExpirationUpdate(content, message, Optional.absent(), groupId, senderRecipient, threadRecipient, receivedTime);
} }
@ -1489,7 +1490,7 @@ public final class MessageContentProcessor {
receivedTime, receivedTime,
body, body,
groupId, groupId,
message.getExpiresInSeconds() * 1000L, TimeUnit.SECONDS.toMillis(message.getExpiresInSeconds()),
content.isNeedsReceipt(), content.isNeedsReceipt(),
content.getServerUuid()); content.getServerUuid());
@ -1512,9 +1513,9 @@ public final class MessageContentProcessor {
{ {
Recipient recipient = getSyncMessageDestination(message); Recipient recipient = getSyncMessageDestination(message);
String body = message.getMessage().getBody().or(""); 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); handleSynchronizeSentExpirationUpdate(message);
} }

Wyświetl plik

@ -40,6 +40,7 @@ import org.thoughtcrime.securesms.sms.OutgoingTextMessage;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
/** /**
* Get the response text from the Wearable Device and sends an message as a reply * 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); Recipient recipient = Recipient.resolved(recipientId);
int subscriptionId = recipient.getDefaultSubscriptionId().or(-1); int subscriptionId = recipient.getDefaultSubscriptionId().or(-1);
long expiresIn = recipient.getExpireMessages() * 1000L; long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds());
switch (replyMethod) { switch (replyMethod) {
case GroupMessage: { case GroupMessage: {

Wyświetl plik

@ -863,7 +863,7 @@ public class Recipient {
return callVibrate; return callVibrate;
} }
public int getExpireMessages() { public int getExpiresInSeconds() {
return expireMessages; return expireMessages;
} }

Wyświetl plik

@ -294,7 +294,7 @@ public class RecipientUtil {
@WorkerThread @WorkerThread
public static boolean setAndSendUniversalExpireTimerIfNecessary(@NonNull Context context, @NonNull Recipient recipient, long threadId) { public static boolean setAndSendUniversalExpireTimerIfNecessary(@NonNull Context context, @NonNull Recipient recipient, long threadId) {
int defaultTimer = SignalStore.settings().getUniversalExpireTimer(); 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; return false;
} }

Wyświetl plik

@ -15,6 +15,7 @@ import org.thoughtcrime.securesms.util.Rfc5724Uri;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.net.URLDecoder; import java.net.URLDecoder;
import java.util.concurrent.TimeUnit;
public class QuickResponseService extends IntentService { public class QuickResponseService extends IntentService {
@ -48,7 +49,7 @@ public class QuickResponseService extends IntentService {
Recipient recipient = Recipient.external(this, number); Recipient recipient = Recipient.external(this, number);
int subscriptionId = recipient.getDefaultSubscriptionId().or(-1); int subscriptionId = recipient.getDefaultSubscriptionId().or(-1);
long expiresIn = recipient.getExpireMessages() * 1000L; long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds());
if (!TextUtils.isEmpty(content)) { if (!TextUtils.isEmpty(content)) {
MessageSender.send(this, new OutgoingTextMessage(recipient, content, expiresIn, subscriptionId), -1, false, null); MessageSender.send(this, new OutgoingTextMessage(recipient, content, expiresIn, subscriptionId), -1, false, null);

Wyświetl plik

@ -14,10 +14,7 @@ import org.signal.core.util.ThreadUtil;
import org.signal.core.util.logging.Log; import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.TransportOption; import org.thoughtcrime.securesms.TransportOption;
import org.thoughtcrime.securesms.TransportOptions; 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.ThreadDatabase;
import org.thoughtcrime.securesms.database.model.StickerRecord;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.mediasend.Media; import org.thoughtcrime.securesms.mediasend.Media;
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage; 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.SlideFactory;
import org.thoughtcrime.securesms.mms.StickerSlide; import org.thoughtcrime.securesms.mms.StickerSlide;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientFormattingException;
import org.thoughtcrime.securesms.sms.MessageSender; import org.thoughtcrime.securesms.sms.MessageSender;
import org.thoughtcrime.securesms.sms.OutgoingTextMessage; import org.thoughtcrime.securesms.sms.OutgoingTextMessage;
import org.thoughtcrime.securesms.stickers.StickerLocator;
import org.thoughtcrime.securesms.util.MessageUtil; import org.thoughtcrime.securesms.util.MessageUtil;
import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.concurrent.SimpleTask; import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
@ -37,6 +32,7 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit;
/** /**
* MultiShareSender encapsulates send logic (stolen from {@link org.thoughtcrime.securesms.conversation.ConversationActivity} * 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); TransportOption transport = resolveTransportOption(context, recipient);
boolean forceSms = recipient.isForceSmsSelection() && transport.isSms(); boolean forceSms = recipient.isForceSmsSelection() && transport.isSms();
int subscriptionId = transport.getSimSubscriptionId().or(-1); int subscriptionId = transport.getSimSubscriptionId().or(-1);
long expiresIn = recipient.getExpireMessages() * 1000L; long expiresIn = TimeUnit.SECONDS.toMillis(recipient.getExpiresInSeconds());
boolean needsSplit = !transport.isSms() && boolean needsSplit = !transport.isSms() &&
message != null && message != null &&
message.length() > transport.calculateCharacters(message).maxPrimaryMessageSize; message.length() > transport.calculateCharacters(message).maxPrimaryMessageSize;

Wyświetl plik

@ -82,6 +82,7 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
public class MessageSender { 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) { 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)) { 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; return outgoingTextMessage;
} }
private static @NonNull OutgoingMediaMessage applyUniversalExpireTimerIfNecessary(@NonNull Context context, @NonNull Recipient recipient, @NonNull OutgoingMediaMessage outgoingMediaMessage, long threadId) { 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)) { 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; return outgoingMediaMessage;
} }