Skip to content
Snippets Groups Projects
Commit cf119883 authored by Taras's avatar Taras
Browse files

Remove flavors from auth module

parent ff3b9e86
No related branches found
No related tags found
No related merge requests found
Showing
with 52 additions and 109 deletions
......@@ -67,6 +67,9 @@ dependencies {
gplayImplementation 'com.google.firebase:firebase-analytics-ktx'
gplayImplementation 'com.google.firebase:firebase-messaging-ktx'
//Subscriptions
gplayImplementation 'com.android.billingclient:billing-ktx:6.0.0'
// UnifiedPush
implementation 'com.github.UnifiedPush:android-connector:2.1.1'
......
package org.futo.circles.di
import android.content.Context
import androidx.fragment.app.Fragment
import dagger.Binds
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import org.futo.circles.R
import org.futo.circles.auth.subscriptions.ItemPurchasedListener
import org.futo.circles.auth.subscriptions.SubscriptionManager
import org.futo.circles.auth.subscriptions.SubscriptionProvider
import org.futo.circles.core.provider.PreferencesProvider
import org.futo.circles.feature.notifications.FcmHelper
import org.futo.circles.feature.notifications.GuardServiceStarter
......@@ -22,9 +28,19 @@ abstract class FlavorModule {
@Provides
fun provideGuardServiceStarter(
preferences: PreferencesProvider,
appContext: Context
@ApplicationContext appContext: Context
): GuardServiceStarter = FdroidGuardServiceStarter(appContext, preferences)
@Provides
fun provideSubscriptionProvider(): SubscriptionProvider {
return object : SubscriptionProvider {
override fun getManager(
fragment: Fragment,
itemPurchaseListener: ItemPurchasedListener?
): SubscriptionManager =
throw IllegalStateException(fragment.getString(R.string.flavour_does_not_support_subscriptions))
}
}
}
@Binds
......
package org.futo.circles.di
import androidx.fragment.app.Fragment
import dagger.Binds
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import org.futo.circles.auth.subscriptions.ItemPurchasedListener
import org.futo.circles.auth.subscriptions.SubscriptionManager
import org.futo.circles.auth.subscriptions.SubscriptionProvider
import org.futo.circles.feature.notifications.FcmHelper
import org.futo.circles.feature.notifications.GuardServiceStarter
import org.futo.circles.feature.notifications.test.task.NotificationTestsProvider
import org.futo.circles.notifications.GoogleFcmHelper
import org.futo.circles.notifications.test.GoogleNotificationTestProvider
import javax.inject.Singleton
import org.futo.circles.subscriptions.google.GoogleSubscriptionsManager
@Module
@InstallIn(SingletonComponent::class)
......@@ -21,6 +25,16 @@ abstract class FlavorModule {
fun provideGuardServiceStarter(): GuardServiceStarter {
return object : GuardServiceStarter {}
}
@Provides
fun provideSubscriptionProvider(): SubscriptionProvider {
return object : SubscriptionProvider {
override fun getManager(
fragment: Fragment,
itemPurchaseListener: ItemPurchasedListener?
): SubscriptionManager = GoogleSubscriptionsManager(fragment, itemPurchaseListener)
}
}
}
@Binds
......
package org.futo.circles.auth.subscriptions.google
package org.futo.circles.subscriptions.google
import androidx.fragment.app.Fragment
import androidx.lifecycle.DefaultLifecycleObserver
......@@ -6,7 +6,7 @@ import androidx.lifecycle.LifecycleOwner
import com.android.billingclient.api.*
import com.android.billingclient.api.BillingClient.BillingResponseCode.*
import kotlinx.coroutines.suspendCancellableCoroutine
import org.futo.circles.auth.R
import org.futo.circles.R
import org.futo.circles.auth.model.SubscriptionListItem
import org.futo.circles.auth.model.SubscriptionReceiptData
import org.futo.circles.auth.subscriptions.ItemPurchasedListener
......
package org.futo.circles.auth.subscriptions.google
package org.futo.circles.subscriptions.google
import android.content.Context
import com.android.billingclient.api.ProductDetails
......
......@@ -6,4 +6,5 @@
<string name="user_canceled">User canceled</string>
<string name="item_not_owned">Item is not owned</string>
<string name="developer_error">Developer error</string>
<string name="purchase_failed_format">Purchase failed with code %d</string>
</resources>
\ No newline at end of file
......@@ -164,12 +164,6 @@
<string name="confirm">Confirm</string>
<string name="reset_keys">Reset keys</string>
<string name="reset_keys_message">Confirm auth to reset keys and enable cross signing</string>
<string name="feature_not_supported">Feature is not supported</string>
<string name="service_unavailable">Service unavailable</string>
<string name="item_unavailable">Item is unavailable</string>
<string name="user_canceled">User canceled</string>
<string name="item_not_owned">Item is not owned</string>
<string name="developer_error">Developer error</string>
<string name="upload_to_gallery">Upload to gallery</string>
<string name="share_with_group">Share with a group</string>
<string name="share_with_circle">Share with a circle</string>
......
......@@ -40,17 +40,6 @@ android {
}
}
def flavor_dimension_name = "store"
flavorDimensions flavor_dimension_name
productFlavors {
gplay {
dimension flavor_dimension_name
}
fdroid {
dimension flavor_dimension_name
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
......@@ -75,9 +64,6 @@ dependencies {
//Password strength
implementation 'com.nulab-inc:zxcvbn:1.7.0'
//Subscriptions
gplayImplementation 'com.android.billingclient:billing-ktx:6.0.0'
//Hilt
def hilt = '2.46.1'
implementation "com.google.dagger:hilt-android:$hilt"
......
package org.futo.circles.auth.subscriptions
import androidx.fragment.app.Fragment
import org.futo.circles.auth.R
object SubscriptionManagerProvider : SubscriptionProvider {
override fun getManager(
fragment: Fragment,
itemPurchaseListener: ItemPurchasedListener?
): SubscriptionManager =
throw IllegalStateException(fragment.getString(R.string.flavour_does_not_support_subscriptions))
}
\ No newline at end of file
<resources>
<string name="flavour_does_not_support_subscriptions">This flavour does not support subscriptions</string>
<string name="settings_troubleshoot_test_battery_title">Battery Optimization</string>
<string name="settings_troubleshoot_test_battery_success">Circles is not affected by Battery Optimization.</string>
<string name="settings_troubleshoot_test_battery_failed">If a user leaves a device unplugged and stationary for a period of time, with the screen off, the device enters Doze mode. This prevents apps from accessing the network and defers their jobs, syncs, and standard alarms. </string>
<string name="settings_troubleshoot_test_bg_restricted_title">Check background restrictions</string>
<string name="settings_troubleshoot_test_bg_restricted_success">Background restrictions are disabled for Circles. This test should be run using mobile data (no WIFI).\n%1$s</string>
<string name="settings_troubleshoot_test_bg_restricted_failed">Background restrictions are enabled for Circles.\nWork that the app tries to do will be aggressively restricted while it is in the background, and this could affect notifications.\n%1$s</string>
</resources>
\ No newline at end of file
package org.futo.circles.auth.subscriptions
import androidx.fragment.app.Fragment
import org.futo.circles.auth.subscriptions.google.GoogleSubscriptionsManager
object SubscriptionManagerProvider : SubscriptionProvider {
override fun getManager(
fragment: Fragment,
itemPurchaseListener: ItemPurchasedListener?
): SubscriptionManager = GoogleSubscriptionsManager(fragment, itemPurchaseListener)
}
\ No newline at end of file
......@@ -9,12 +9,13 @@ import by.kirich1409.viewbindingdelegate.viewBinding
import dagger.hilt.android.AndroidEntryPoint
import org.futo.circles.auth.R
import org.futo.circles.auth.databinding.FragmentSelectSignUpTypeBinding
import org.futo.circles.auth.subscriptions.SubscriptionManagerProvider
import org.futo.circles.auth.subscriptions.SubscriptionProvider
import org.futo.circles.core.CirclesAppConfig
import org.futo.circles.core.extensions.observeData
import org.futo.circles.core.extensions.observeResponse
import org.futo.circles.core.extensions.setIsVisible
import org.futo.circles.core.fragment.HasLoadingState
import javax.inject.Inject
@AndroidEntryPoint
class SelectSignUpTypeFragment : Fragment(R.layout.fragment_select_sign_up_type),
......@@ -25,8 +26,11 @@ class SelectSignUpTypeFragment : Fragment(R.layout.fragment_select_sign_up_type)
private val binding by viewBinding(FragmentSelectSignUpTypeBinding::bind)
private val viewModel by viewModels<SelectSignUpTypeViewModel>()
@Inject
lateinit var subscriptionProvider: SubscriptionProvider
private val subscriptionManager by lazy {
SubscriptionManagerProvider.getManager(this, null)
subscriptionProvider.getManager(this, null)
}
override fun onCreate(savedInstanceState: Bundle?) {
......
......@@ -10,10 +10,11 @@ import org.futo.circles.auth.databinding.FragmentSubscriptionStageBinding
import org.futo.circles.auth.feature.sign_up.subscription_stage.list.SubscriptionsAdapter
import org.futo.circles.auth.model.SubscriptionReceiptData
import org.futo.circles.auth.subscriptions.ItemPurchasedListener
import org.futo.circles.auth.subscriptions.SubscriptionManagerProvider
import org.futo.circles.auth.subscriptions.SubscriptionProvider
import org.futo.circles.core.extensions.observeResponse
import org.futo.circles.core.extensions.showError
import org.futo.circles.core.fragment.ParentBackPressOwnerFragment
import javax.inject.Inject
@AndroidEntryPoint
class SubscriptionStageFragment :
......@@ -22,8 +23,11 @@ class SubscriptionStageFragment :
private val binding by viewBinding(FragmentSubscriptionStageBinding::bind)
private val viewModel by viewModels<SubscriptionStageViewModel>()
@Inject
lateinit var subscriptionProvider: SubscriptionProvider
private val subscriptionManager by lazy {
SubscriptionManagerProvider.getManager(
subscriptionProvider.getManager(
this, object : ItemPurchasedListener {
override fun onItemPurchased(subscriptionReceiptData: SubscriptionReceiptData) {
viewModel.validateSubscription(subscriptionReceiptData)
......
......@@ -18,7 +18,6 @@
<string name="choose_a_subscription">Choose a subscription</string>
<string name="create_a_subscription">Create a subscription</string>
<string name="sign_up">Sign Up</string>
<string name="purchase_failed_format">Purchase failed with code %d</string>
<string name="not_supported_stage_format">Not supported stage %s</string>
<string name="sign_up_stage_subtitle_format">Stage %1$d of %2$d</string>
<string name="no_backup_message">Keys backup not found</string>
......@@ -93,7 +92,7 @@
<string name="remove_user_message">Are you sure you want to remove this user?</string>
<string name="remove">Remove</string>
<string name="not_supported_navigation_event">Not supported navigation event</string>
<string name="purchase_failed_format">Purchase failed with code %d</string>
<plurals name="days">
<item quantity="one">%1$d day</item>
......
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<application>
<service
android:name=".notifications.GuardAndroidService"
android:exported="false"
tools:ignore="Instantiatable" />
</application>
</manifest>
<resources>
<string name="flavour_does_not_support_subscriptions">This flavour does not support subscriptions</string>
<string name="settings_troubleshoot_test_battery_title">Battery Optimization</string>
<string name="settings_troubleshoot_test_battery_success">Circles is not affected by Battery Optimization.</string>
<string name="settings_troubleshoot_test_battery_failed">If a user leaves a device unplugged and stationary for a period of time, with the screen off, the device enters Doze mode. This prevents apps from accessing the network and defers their jobs, syncs, and standard alarms. </string>
<string name="settings_troubleshoot_test_bg_restricted_title">Check background restrictions</string>
<string name="settings_troubleshoot_test_bg_restricted_success">Background restrictions are disabled for Circles. This test should be run using mobile data (no WIFI).\n%1$s</string>
<string name="settings_troubleshoot_test_bg_restricted_failed">Background restrictions are enabled for Circles.\nWork that the app tries to do will be aggressively restricted while it is in the background, and this could affect notifications.\n%1$s</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application>
<service android:name=".notifications.FirebaseMessagingService"
android:exported="false"
tools:ignore="Instantiatable">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
</application>
</manifest>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment