Update libsignal-client to 0.14.0

This commit is contained in:
Greyson Parrelli
2022-03-14 15:49:46 -04:00
committed by Cody Henthorne
parent 749bbf428d
commit 057231b9c3
650 changed files with 2154 additions and 2384 deletions

View File

@@ -6,13 +6,12 @@ import androidx.annotation.NonNull;
import androidx.lifecycle.LiveData;
import org.signal.core.util.logging.Log;
import org.signal.core.util.money.FiatMoney;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.signal.core.util.money.FiatMoney;
import org.thoughtcrime.securesms.util.DateUtils;
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.payments.Money;
import java.io.IOException;
@@ -21,6 +20,7 @@ import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.util.Currency;
import java.util.Locale;
import java.util.Optional;
public final class FiatMoneyUtil {
@@ -40,7 +40,7 @@ public final class FiatMoneyUtil {
.exchange(a);
} catch (IOException e) {
Log.w(TAG, e);
return Optional.absent();
return Optional.empty();
}
});
}

View File

@@ -7,9 +7,7 @@ import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.util.FeatureFlags;
import org.thoughtcrime.securesms.util.Util;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;

View File

@@ -11,10 +11,10 @@ import com.airbnb.lottie.LottieAnimationView;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.payments.confirm.ConfirmPaymentState.Status;
import org.thoughtcrime.securesms.util.SpanUtil;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingViewHolder;
import org.thoughtcrime.securesms.util.SpanUtil;
import org.whispersystems.signalservice.api.payments.FormatterOptions;
import org.whispersystems.signalservice.api.payments.Money;

View File

@@ -33,8 +33,8 @@ import org.thoughtcrime.securesms.payments.Payee;
import org.thoughtcrime.securesms.payments.preferences.RecipientHasNotEnabledPaymentsDialog;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.BottomSheetUtil;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList;
import org.thoughtcrime.securesms.util.StringUtil;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList;
import org.thoughtcrime.securesms.util.navigation.SafeNavigation;
import org.whispersystems.signalservice.api.payments.FormatterOptions;

View File

@@ -3,8 +3,8 @@ package org.thoughtcrime.securesms.payments.confirm;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.payments.Payee;
import org.signal.core.util.money.FiatMoney;
import org.thoughtcrime.securesms.payments.Payee;
import org.whispersystems.signalservice.api.payments.Money;
import java.util.UUID;

View File

@@ -9,6 +9,7 @@ import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import org.signal.core.util.logging.Log;
import org.signal.core.util.money.FiatMoney;
import org.thoughtcrime.securesms.database.PaymentDatabase.PaymentTransaction;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
@@ -17,14 +18,13 @@ import org.thoughtcrime.securesms.payments.FiatMoneyUtil;
import org.thoughtcrime.securesms.payments.PaymentTransactionLiveData;
import org.thoughtcrime.securesms.payments.PaymentsAddressException;
import org.thoughtcrime.securesms.payments.confirm.ConfirmPaymentRepository.ConfirmPaymentResult;
import org.signal.core.util.money.FiatMoney;
import org.thoughtcrime.securesms.util.DefaultValueLiveData;
import org.thoughtcrime.securesms.util.SingleLiveEvent;
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil;
import org.thoughtcrime.securesms.util.livedata.Store;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.payments.Money;
import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@@ -68,7 +68,7 @@ final class ConfirmPaymentViewModel extends ViewModel {
this.paymentDone = Transformations.distinctUntilChanged(Transformations.map(store.getStateLiveData(), state -> state.getStatus().isTerminalStatus()));
LiveData<Optional<FiatMoney>> exchange = FiatMoneyUtil.getExchange(amount);
this.store.update(exchange, (exchange1, confirmPaymentState1) -> confirmPaymentState1.updateExchange(exchange1.orNull()));
this.store.update(exchange, (exchange1, confirmPaymentState1) -> confirmPaymentState1.updateExchange(exchange1.orElse(null)));
LiveData<ConfirmPaymentState.Status> statusLiveData = Transformations.map(store.getStateLiveData(), ConfirmPaymentState::getStatus);
LiveData<ConfirmPaymentState.Status> timeoutSignal = Transformations.switchMap(statusLiveData,

View File

@@ -11,20 +11,19 @@ import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import org.signal.core.util.logging.Log;
import org.signal.core.util.money.FiatMoney;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.payments.Balance;
import org.thoughtcrime.securesms.payments.CreatePaymentDetails;
import org.thoughtcrime.securesms.payments.FiatMoneyUtil;
import org.thoughtcrime.securesms.payments.currency.CurrencyExchange;
import org.signal.core.util.money.FiatMoney;
import org.thoughtcrime.securesms.payments.preferences.model.PayeeParcelable;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.DefaultValueLiveData;
import org.thoughtcrime.securesms.util.ProfileUtil;
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil;
import org.thoughtcrime.securesms.util.livedata.Store;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.payments.FormatterOptions;
import org.whispersystems.signalservice.api.payments.Money;
import org.whispersystems.signalservice.api.util.OptionalUtil;
@@ -33,6 +32,7 @@ import java.io.IOException;
import java.math.BigDecimal;
import java.util.Currency;
import java.util.Objects;
import java.util.Optional;
public class CreatePaymentViewModel extends ViewModel {
@@ -73,18 +73,18 @@ public class CreatePaymentViewModel extends ViewModel {
LiveData<Optional<CurrencyExchange.ExchangeRate>> liveExchangeRate = LiveDataUtil.mapAsync(SignalStore.paymentsValues().liveCurrentCurrency(),
currency -> {
try {
return Optional.fromNullable(ApplicationDependencies.getPayments()
return Optional.ofNullable(ApplicationDependencies.getPayments()
.getCurrencyExchange(true)
.getExchangeRate(currency));
} catch (IOException e1) {
Log.w(TAG, "Unable to get fresh exchange data, falling back to cached", e1);
try {
return Optional.fromNullable(ApplicationDependencies.getPayments()
return Optional.ofNullable(ApplicationDependencies.getPayments()
.getCurrencyExchange(false)
.getExchangeRate(currency));
} catch (IOException e2) {
Log.w(TAG, "Unable to get any exchange data", e2);
return Optional.absent();
return Optional.empty();
}
}
});
@@ -119,7 +119,7 @@ public class CreatePaymentViewModel extends ViewModel {
void clearAmount() {
inputState.update(s -> {
final Money money = Money.MobileCoin.ZERO;
final Optional<FiatMoney> fiat = OptionalUtil.flatMap(s.getExchangeRate(), r -> r.exchange(money));
final Optional<FiatMoney> fiat = s.getExchangeRate().flatMap(r -> r.exchange(money));
return s.updateAmount("0", "0", Money.MobileCoin.ZERO, fiat);
});
@@ -155,7 +155,7 @@ public class CreatePaymentViewModel extends ViewModel {
{
String newFiatAmount = updateAmountString(context, inputState.getFiatAmount(), glyph, currency.getDefaultFractionDigits());
FiatMoney newFiat = stringToFiatValueOrZero(newFiatAmount, currency);
Money newMoney = OptionalUtil.flatMap(inputState.getExchangeRate(), e -> e.exchange(newFiat)).get();
Money newMoney = inputState.getExchangeRate().flatMap(e -> e.exchange(newFiat)).get();
String newMoneyAmount;
if (newFiatAmount.equals("0")) {
@@ -177,7 +177,7 @@ public class CreatePaymentViewModel extends ViewModel {
{
String newMoneyAmount = updateAmountString(context, inputState.getMoneyAmount(), glyph, inputState.getMoney().getCurrency().getDecimalPrecision());
Money.MobileCoin newMoney = stringToMobileCoinValueOrZero(newMoneyAmount);
Optional<FiatMoney> newFiat = OptionalUtil.flatMap(inputState.getExchangeRate(), e -> e.exchange(newMoney));
Optional<FiatMoney> newFiat = inputState.getExchangeRate().flatMap(e -> e.exchange(newMoney));
String newFiatAmount;
if (!withinMobileCoinBounds(newMoney)) {
@@ -187,7 +187,7 @@ public class CreatePaymentViewModel extends ViewModel {
if (newMoneyAmount.equals("0")) {
newFiatAmount = "0";
} else {
newFiatAmount = newFiat.transform(f -> FiatMoneyUtil.format(context.getResources(), f, FiatMoneyUtil.formatOptions().withDisplayTime(false).numberOnly())).or("0");
newFiatAmount = newFiat.map(f -> FiatMoneyUtil.format(context.getResources(), f, FiatMoneyUtil.formatOptions().withDisplayTime(false).numberOnly())).orElse("0");
}
return inputState.updateAmount(newMoneyAmount, newFiatAmount, newMoney, newFiat);

View File

@@ -2,21 +2,22 @@ package org.thoughtcrime.securesms.payments.create;
import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.payments.currency.CurrencyExchange;
import org.signal.core.util.money.FiatMoney;
import org.whispersystems.libsignal.util.guava.Optional;
import org.thoughtcrime.securesms.payments.currency.CurrencyExchange;
import org.whispersystems.signalservice.api.payments.Money;
import java.util.Optional;
final class InputState {
private final InputTarget inputTarget;
private final String moneyAmount;
private final String fiatAmount;
private final Optional<FiatMoney> fiatMoney;
private final Money money;
private final String fiatAmount;
private final Optional<FiatMoney> fiatMoney;
private final Money money;
private final Optional<CurrencyExchange.ExchangeRate> exchangeRate;
InputState() {
this(InputTarget.MONEY, "0", "0", Money.MobileCoin.ZERO, Optional.absent(), Optional.absent());
this(InputTarget.MONEY, "0", "0", Money.MobileCoin.ZERO, Optional.empty(), Optional.empty());
}
private InputState(@NonNull InputTarget inputTarget,

View File

@@ -5,7 +5,6 @@ import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import org.signal.core.util.money.FiatMoney;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.payments.Money;
import java.math.BigDecimal;
@@ -15,6 +14,7 @@ import java.util.Currency;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
public final class CurrencyExchange {
private final Map<String, BigDecimal> conversions;
@@ -68,14 +68,14 @@ public final class CurrencyExchange {
if (rate != null) {
return Optional.of(new FiatMoney(amount.multiply(rate).setScale(currency.getDefaultFractionDigits(), RoundingMode.HALF_EVEN), currency, timestamp));
}
return Optional.absent();
return Optional.empty();
}
public @NonNull Optional<Money> exchange(@NonNull FiatMoney fiatMoney) {
if (rate != null) {
return Optional.of(Money.mobileCoin(fiatMoney.getAmount().setScale(12, RoundingMode.HALF_EVEN).divide(rate, RoundingMode.HALF_EVEN)));
} else {
return Optional.absent();
return Optional.empty();
}
}
}

View File

@@ -24,8 +24,8 @@ import org.thoughtcrime.securesms.recipients.RecipientId;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
import org.thoughtcrime.securesms.util.navigation.SafeNavigation;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Optional;
import java.util.function.Consumer;

View File

@@ -3,8 +3,8 @@ package org.thoughtcrime.securesms.payments.preferences;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.thoughtcrime.securesms.payments.currency.CurrencyExchange;
import org.signal.core.util.money.FiatMoney;
import org.thoughtcrime.securesms.payments.currency.CurrencyExchange;
import org.thoughtcrime.securesms.payments.preferences.model.PaymentItem;
import java.util.Collections;

View File

@@ -10,6 +10,7 @@ import androidx.lifecycle.ViewModelProvider;
import com.annimon.stream.Stream;
import org.signal.core.util.logging.Log;
import org.signal.core.util.money.FiatMoney;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.settings.SettingHeader;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
@@ -21,7 +22,6 @@ import org.thoughtcrime.securesms.payments.Payment;
import org.thoughtcrime.securesms.payments.UnreadPaymentsRepository;
import org.thoughtcrime.securesms.payments.currency.CurrencyExchange;
import org.thoughtcrime.securesms.payments.currency.CurrencyExchangeRepository;
import org.signal.core.util.money.FiatMoney;
import org.thoughtcrime.securesms.payments.preferences.model.InProgress;
import org.thoughtcrime.securesms.payments.preferences.model.InfoCard;
import org.thoughtcrime.securesms.payments.preferences.model.IntroducingPayments;
@@ -29,14 +29,14 @@ import org.thoughtcrime.securesms.payments.preferences.model.NoRecentActivity;
import org.thoughtcrime.securesms.payments.preferences.model.PaymentItem;
import org.thoughtcrime.securesms.payments.preferences.model.SeeAll;
import org.thoughtcrime.securesms.util.AsynchronousCallback;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList;
import org.thoughtcrime.securesms.util.SingleLiveEvent;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList;
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil;
import org.thoughtcrime.securesms.util.livedata.Store;
import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.payments.Money;
import java.util.List;
import java.util.Optional;
public class PaymentsHomeViewModel extends ViewModel {
@@ -82,7 +82,7 @@ public class PaymentsHomeViewModel extends ViewModel {
LiveData<Optional<FiatMoney>> liveExchangeAmount = LiveDataUtil.combineLatest(this.balance,
liveExchangeRate,
(balance, exchangeRate) -> exchangeRate.exchange(balance));
this.store.update(liveExchangeAmount, (amount, state) -> state.updateCurrencyAmount(amount.orNull()));
this.store.update(liveExchangeAmount, (amount, state) -> state.updateCurrencyAmount(amount.orElse(null)));
refreshExchangeRates(true);
}

View File

@@ -21,8 +21,8 @@ import org.thoughtcrime.securesms.payments.currency.CurrencyExchange;
import org.thoughtcrime.securesms.payments.currency.CurrencyExchangeRepository;
import org.thoughtcrime.securesms.payments.currency.CurrencyUtil;
import org.thoughtcrime.securesms.util.AsynchronousCallback;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList;
import org.thoughtcrime.securesms.util.SetUtil;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList;
import org.thoughtcrime.securesms.util.livedata.Store;
import org.whispersystems.libsignal.util.Pair;

View File

@@ -17,9 +17,9 @@ import org.thoughtcrime.securesms.payments.State;
import org.thoughtcrime.securesms.payments.preferences.PaymentType;
import org.thoughtcrime.securesms.payments.preferences.details.PaymentDetailsParcelable;
import org.thoughtcrime.securesms.util.DateUtils;
import org.thoughtcrime.securesms.util.SpanUtil;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModelList;
import org.thoughtcrime.securesms.util.SpanUtil;
import org.whispersystems.signalservice.api.payments.FormatterOptions;
import org.whispersystems.signalservice.api.payments.PaymentsConstants;

View File

@@ -10,8 +10,8 @@ import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.AvatarImageView;
import org.thoughtcrime.securesms.payments.preferences.PaymentsHomeAdapter;
import org.thoughtcrime.securesms.payments.preferences.model.PaymentItem;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingViewHolder;
import org.thoughtcrime.securesms.util.SpanUtil;
import org.thoughtcrime.securesms.util.adapter.mapping.MappingViewHolder;
import org.thoughtcrime.securesms.util.viewholders.RecipientMappingModel.RecipientIdMappingModel;
import org.thoughtcrime.securesms.util.viewholders.RecipientViewHolder;