Skip to content

Commit 6b973f2

Browse files
Merge pull request #928 from StepicOrg/release/1.204
Release/1.204
2 parents 0d4301a + bc53c44 commit 6b973f2

77 files changed

Lines changed: 815 additions & 267 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ dependencies {
175175
implementation libraries.domainRx
176176
implementation libraries.viewInjection
177177
implementation libraries.viewBindingDelegate
178+
implementation libraries.multisnaprecycler
178179

179180
implementation libraries.exoPlayerCore
180181
implementation libraries.exoPlayerUI

app/src/debug/java/org/stepik/android/view/debug/ui/adapter/delegate/InAppPurchaseAdapterDelegate.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,6 @@ class InAppPurchaseAdapterDelegate(
3535

3636
inAppPurchaseCourse.isVisible = data.developerPayload.isNotEmpty()
3737
inAppPurchaseUser.isVisible = data.developerPayload.isNotEmpty()
38-
if (data.developerPayload.isNotEmpty()) {
39-
data.developerPayload.toObject<CoursePurchasePayload>().let {
40-
inAppPurchaseCourse.text = context.getString(R.string.debug_purchase_course, it.courseId)
41-
inAppPurchaseUser.text = context.getString(R.string.debug_purchase_profile, it.profileId)
42-
}
43-
}
4438
}
4539
}
4640
}

app/src/main/java/org/stepic/droid/configuration/RemoteConfig.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,8 @@ object RemoteConfig {
1313
const val PERSONALIZED_ONBOARDING_COURSE_LISTS = "personalized_onboarding_course_lists"
1414
const val IS_COURSE_REVENUE_AVAILABLE_ANDROID = "is_course_revenue_available_android"
1515
const val PURCHASE_FLOW_ANDROID = "purchase_flow_android"
16+
const val PURCHASE_FLOW_ANDROID_TEST = "purchase_flow_android_test"
1617
const val PURCHASE_FLOW_DISCLAIMER_EN = "purchase_flow_android_disclaimer_en"
1718
const val PURCHASE_FLOW_DISCLAIMER_RU = "purchase_flow_android_disclaimer_ru"
1819
const val PURCHASE_FLOW_DISCLAIMER_BE = "purchase_flow_android_disclaimer_be"
19-
20-
// TODO APPS-3443: Remove after finishing feature
21-
const val PURCHASE_FLOW_ANDROID_TESTING_FLAG = false
2220
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.stepic.droid.configuration.analytic
2+
3+
import org.stepic.droid.configuration.RemoteConfig
4+
import org.stepik.android.domain.base.analytic.UserProperty
5+
6+
class CoursePurchaseFlowProperty(purchaseFlow: String) : UserProperty {
7+
override val name: String =
8+
RemoteConfig.PREFIX + RemoteConfig.PURCHASE_FLOW_ANDROID
9+
10+
override val value: String =
11+
purchaseFlow
12+
}

app/src/main/java/org/stepic/droid/core/presenters/SplashPresenter.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ constructor(
194194
analytic.reportUserProperty(NewHomeScreenEnabledUserProperty(firebaseRemoteConfig[RemoteConfig.IS_NEW_HOME_SCREEN_ENABLED].asBoolean()))
195195
analytic.reportUserProperty(PersonalizedOnboardingCourseListsUserProperty(firebaseRemoteConfig[RemoteConfig.PERSONALIZED_ONBOARDING_COURSE_LISTS].asString()))
196196
analytic.reportUserProperty(CourseRevenueAvailableUserProperty(firebaseRemoteConfig[RemoteConfig.IS_COURSE_REVENUE_AVAILABLE_ANDROID].asBoolean()))
197+
analytic.reportUserProperty(CoursePurchaseFlowProperty(firebaseRemoteConfig[RemoteConfig.PURCHASE_FLOW_ANDROID].asString()))
197198
}
198199

199200
private fun countNumberOfLaunches() {
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.stepic.droid.storage.migration
2+
3+
import androidx.room.migration.Migration
4+
import androidx.sqlite.db.SupportSQLiteDatabase
5+
6+
object MigrationFrom77To78 : Migration(77, 78) {
7+
override fun migrate(db: SupportSQLiteDatabase) {
8+
db.execSQL("CREATE TABLE IF NOT EXISTS `BillingPurchasePayload` (`orderId` TEXT NOT NULL, `courseId` INTEGER NOT NULL, `profileId` INTEGER NOT NULL, `obfuscatedAccountId` TEXT NOT NULL, `obfuscatedProfileId` TEXT NOT NULL, `promoCode` TEXT, PRIMARY KEY(`orderId`))")
9+
}
10+
}

app/src/main/java/org/stepic/droid/storage/migration/Migrations.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ object Migrations {
208208
MigrationFrom73To74,
209209
MigrationFrom74To75,
210210
MigrationFrom75To76,
211-
MigrationFrom76To77
211+
MigrationFrom76To77,
212+
MigrationFrom77To78
212213
)
213214
}

app/src/main/java/org/stepic/droid/ui/fragments/AboutAppFragment.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.view.ViewGroup
77
import androidx.fragment.app.Fragment
88
import androidx.recyclerview.widget.GridLayoutManager
99
import kotlinx.android.synthetic.main.fragment_about_app.*
10+
import org.stepic.droid.BuildConfig
1011
import org.stepic.droid.R
1112
import org.stepic.droid.analytic.Analytic
1213
import org.stepic.droid.base.FragmentBase
@@ -35,6 +36,8 @@ class AboutAppFragment : FragmentBase() {
3536
analytic.reportEvent(Analytic.Interaction.CLICK_TERMS_OF_SERVICE)
3637
screenManager.openTermsOfServiceWeb(activity)
3738
}
39+
40+
appVersionName.text = getString(R.string.settings_app_version, BuildConfig.VERSION_NAME)
3841
initSocialRecycler()
3942
}
4043

app/src/main/java/org/stepik/android/cache/base/database/AppDatabase.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ import org.stepik.android.domain.catalog.model.CatalogBlock
1818
import org.stepik.android.domain.review_instruction.model.ReviewInstruction
1919
import org.stepik.android.domain.review_session.model.ReviewSession
2020
import org.stepik.android.cache.code_preference.model.CodePreference
21+
import org.stepik.android.cache.course_purchase.dao.BillingPurchasePayloadDao
2122
import org.stepik.android.cache.course_recommendations.dao.CourseRecommendationsDao
2223
import org.stepik.android.cache.exam_session.dao.ExamSessionDao
2324
import org.stepik.android.cache.mobile_tiers.dao.LightSkuDao
2425
import org.stepik.android.cache.mobile_tiers.dao.MobileTiersDao
2526
import org.stepik.android.cache.proctor_session.dao.ProctorSessionDao
2627
import org.stepik.android.cache.rubric.dao.RubricDao
2728
import org.stepik.android.cache.wishlist.dao.WishlistDao
29+
import org.stepik.android.domain.course_purchase.model.BillingPurchasePayload
2830
import org.stepik.android.domain.course_recommendations.model.CourseRecommendation
2931
import org.stepik.android.domain.exam_session.model.ExamSession
3032
import org.stepik.android.domain.mobile_tiers.model.LightSku
@@ -48,7 +50,8 @@ import org.stepik.android.domain.wishlist.model.WishlistEntry
4850
ProctorSession::class,
4951
MobileTier::class,
5052
LightSku::class,
51-
WishlistEntry::class
53+
WishlistEntry::class,
54+
BillingPurchasePayload::class
5255
],
5356
version = AppDatabase.VERSION,
5457
exportSchema = false
@@ -62,7 +65,7 @@ import org.stepik.android.domain.wishlist.model.WishlistEntry
6265
)
6366
abstract class AppDatabase : RoomDatabase() {
6467
companion object {
65-
const val VERSION = 77
68+
const val VERSION = 78
6669
const val NAME = "stepic_database.db"
6770
}
6871

@@ -79,4 +82,5 @@ abstract class AppDatabase : RoomDatabase() {
7982
abstract fun mobileTiersDao(): MobileTiersDao
8083
abstract fun lightSkuDao(): LightSkuDao
8184
abstract fun wishlistDao(): WishlistDao
85+
abstract fun billingPurchasePayloadDao(): BillingPurchasePayloadDao
8286
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.stepik.android.cache.course_purchase
2+
3+
import io.reactivex.Completable
4+
import io.reactivex.Single
5+
import org.stepik.android.cache.course_purchase.dao.BillingPurchasePayloadDao
6+
import org.stepik.android.data.course_purchase.source.BillingPurchasePayloadCacheDataSource
7+
import org.stepik.android.domain.course_purchase.model.BillingPurchasePayload
8+
import javax.inject.Inject
9+
10+
class BillingPurchasePayloadCacheDataSourceImpl
11+
@Inject
12+
constructor(
13+
private val billingPurchasePayloadDao: BillingPurchasePayloadDao
14+
) : BillingPurchasePayloadCacheDataSource {
15+
override fun getPurchaseOrderPayload(orderId: String): Single<BillingPurchasePayload> =
16+
billingPurchasePayloadDao.getBillingPurchasePayload(orderId)
17+
18+
override fun savePurchaseOrderPayload(billingPurchasePayload: BillingPurchasePayload): Completable =
19+
billingPurchasePayloadDao.saveBillingPurchasePayload(billingPurchasePayload)
20+
21+
override fun deletePurchaseOrderPayload(orderId: String): Completable =
22+
billingPurchasePayloadDao.deleteBillingPurchasePayload(orderId)
23+
}

0 commit comments

Comments
 (0)