Move billing code to shared module.

This commit is contained in:
Alex Hart
2024-08-22 15:12:24 -03:00
committed by mtang-signal
parent 4447433ffe
commit 244a81ef24
12 changed files with 136 additions and 183 deletions

View File

@@ -1,30 +0,0 @@
/*
* Copyright 2024 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.thoughtcrime.securesms.billing
import android.app.Activity
/**
* Variant interface for the BillingApi.
*/
interface GooglePlayBillingApi {
fun isApiAvailable(): Boolean = false
suspend fun queryProducts() = Unit
/**
* Queries the user's current purchases. This enqueues a check and will
* propagate it to the normal callbacks in the api.
*/
suspend fun queryPurchases() = Unit
suspend fun launchBillingFlow(activity: Activity) = Unit
/**
* Empty implementation, to be used when play services are available but
* GooglePlayBillingApi is not available.
*/
object Empty : GooglePlayBillingApi
}

View File

@@ -7,12 +7,12 @@ import io.reactivex.rxjava3.core.Observable
import io.reactivex.rxjava3.subjects.BehaviorSubject
import io.reactivex.rxjava3.subjects.Subject
import okhttp3.OkHttpClient
import org.signal.core.util.billing.BillingApi
import org.signal.core.util.concurrent.DeadlockDetector
import org.signal.core.util.resettableLazy
import org.signal.libsignal.net.Network
import org.signal.libsignal.zkgroup.profiles.ClientZkProfileOperations
import org.signal.libsignal.zkgroup.receipts.ClientZkReceiptOperations
import org.thoughtcrime.securesms.billing.GooglePlayBillingApi
import org.thoughtcrime.securesms.components.TypingStatusRepository
import org.thoughtcrime.securesms.components.TypingStatusSender
import org.thoughtcrime.securesms.crypto.storage.SignalServiceDataStoreImpl
@@ -212,7 +212,7 @@ object AppDependencies {
}
@JvmStatic
val billingApi: GooglePlayBillingApi by lazy {
val billingApi: BillingApi by lazy {
provider.provideBillingApi()
}
@@ -348,6 +348,6 @@ object AppDependencies {
fun provideClientZkReceiptOperations(signalServiceConfiguration: SignalServiceConfiguration): ClientZkReceiptOperations
fun provideScheduledMessageManager(): ScheduledMessageManager
fun provideLibsignalNetwork(config: SignalServiceConfiguration): Network
fun provideBillingApi(): GooglePlayBillingApi
fun provideBillingApi(): BillingApi
}
}

View File

@@ -8,15 +8,15 @@ import android.os.HandlerThread;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import org.signal.billing.BillingFactory;
import org.signal.core.util.ThreadUtil;
import org.signal.core.util.billing.BillingApi;
import org.signal.core.util.concurrent.DeadlockDetector;
import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.libsignal.net.Network;
import org.signal.libsignal.zkgroup.profiles.ClientZkProfileOperations;
import org.signal.libsignal.zkgroup.receipts.ClientZkReceiptOperations;
import org.thoughtcrime.securesms.BuildConfig;
import org.thoughtcrime.securesms.billing.GooglePlayBillingApi;
import org.thoughtcrime.securesms.billing.GooglePlayBillingFactory;
import org.thoughtcrime.securesms.components.TypingStatusRepository;
import org.thoughtcrime.securesms.components.TypingStatusSender;
import org.thoughtcrime.securesms.crypto.ReentrantSessionLock;
@@ -460,8 +460,8 @@ public class ApplicationDependencyProvider implements AppDependencies.Provider {
}
@Override
public @NonNull GooglePlayBillingApi provideBillingApi() {
return GooglePlayBillingFactory.create(context);
public @NonNull BillingApi provideBillingApi() {
return BillingFactory.create(context, RemoteConfig.messageBackups());
}
@VisibleForTesting