Skip to content

Commit a4ea425

Browse files
authored
Merge pull request #125 from superwall/ir/refactor/ios-naming
Deprecate ViewController methods in favor of Android names and accessors
2 parents 400acb0 + 2f56507 commit a4ea425

File tree

53 files changed

+660
-502
lines changed

Some content is hidden

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

53 files changed

+660
-502
lines changed

CHANGELOG.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,37 @@ The changelog for `Superwall`. Also see the [releases](https://github.com/superw
66

77
### Deprecations
88

9+
10+
This release includes multiple deprecations that will be removed in upcoming versions.
11+
Most are internal and will not affect the public API, those that will are marked as such and a simple migration
12+
path is provided. The notable ones in the public API are as follows:
13+
914
- Deprecated configuration method `Superwall.configure(applicationContext: Context, ...)` in favor of `Superwall.configure(applicationContext: Application, ...)` to enforce type safety. The rest of the method signature remains the same.
15+
- Deprecated `DebugViewControllerActivity` in favor of `DebugViewActivity`
16+
- Deprecated `PaywallViewController` in favor of `PaywallView`
17+
- Deprecated belonging methods:
18+
- `viewWillAppear` in favor of `beforeViewCreated`
19+
- `viewDidAppear` in favor of `onViewCreated`
20+
- `viewWillDisappear` in favor of `beforeOnDestroy`
21+
- `viewDidDisappear` in favor of `destroyed`
22+
- `presentAlert` in favor of `showAlert`
23+
- Deprecated `PaywallViewControllerDelegate` in favor of `PaywallViewCallback`
24+
- Deprecated belonging methods:
25+
- `didFinish` in favor of `onFinished`
26+
- Deprecated `PaywallViewControllerEventDelegate` in favor of `PaywallViewEventCallback`
27+
- Users might also note deprecation of `PaywallWebEvent.OpenedUrlInSafari` in favor of `PaywallWebEvent.OpenedUrlInChrome`
28+
- `didFinish` in favor of `onFinished`
29+
30+
- In `Superwall`, the following methods were deprecated:
31+
- `Superwall.paywallViewController` in favor of `Superwall.paywallView`
32+
- `Superwall.eventDidOccur` argument `paywallViewController` in favor of `paywallView`
33+
- `Superwall.dismiss` in favor of `Superwall.presentPaywallView
34+
- `Superwall.presentPaywallViewController` in favor of `Superwall.presentPaywallView`
35+
- Deprecated `Paywallmanager.getPaywallViewController` in favor of `PaywallManager.getPaywallView`
36+
- Deprecated `DebugManager.viewController` in favor of `DebugManager.view`
37+
- Deprecated `DebugViewController` in favor of `DebugView`
38+
- Deprecated `LogScope.debugViewController` in favor of `LogScope.debugView`
39+
- Deprecated `PaywallPresentationRequestStatus.NoPaywallViewController` in favor of `NoPaywallView`
1040

1141
### Fixes
1242

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ The preferred installation method is with [Gradle](https://superwall.com/docs/in
7272
android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar"
7373
android:configChanges="orientation|screenSize|keyboardHidden">
7474
</activity>
75-
<activity android:name="com.superwall.sdk.debug.DebugViewControllerActivity" />
75+
<activity android:name="com.superwall.sdk.debug.DebugViewActivity" />
7676
<activity android:name="com.superwall.sdk.debug.localizations.SWLocalizationActivity" />
7777
<activity android:name="com.superwall.sdk.debug.SWConsoleActivity" />
7878
```

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar"
5656
android:configChanges="orientation|screenSize|keyboardHidden">
5757
</activity>
58-
<activity android:name="com.superwall.sdk.debug.DebugViewControllerActivity" />
58+
<activity android:name="com.superwall.sdk.debug.DebugViewActivity" />
5959
<activity android:name="com.superwall.sdk.debug.localizations.SWLocalizationActivity" />
6060
<activity android:name="com.superwall.sdk.debug.SWConsoleActivity" />
6161
</application>

app/src/main/java/com/superwall/superapp/ComposeActivity.kt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,22 +28,22 @@ import androidx.compose.ui.unit.dp
2828
import com.superwall.sdk.composable.PaywallComposable
2929
import com.superwall.sdk.paywall.presentation.internal.request.PaywallOverrides
3030
import com.superwall.sdk.paywall.presentation.internal.state.PaywallResult
31-
import com.superwall.sdk.paywall.vc.PaywallViewController
32-
import com.superwall.sdk.paywall.vc.delegate.PaywallViewControllerDelegate
31+
import com.superwall.sdk.paywall.vc.PaywallView
32+
import com.superwall.sdk.paywall.vc.delegate.PaywallViewCallback
3333
import com.superwall.superapp.ui.theme.MyApplicationTheme
3434

3535
class ComposeActivity :
3636
ComponentActivity(),
37-
PaywallViewControllerDelegate {
37+
PaywallViewCallback {
3838
override fun onCreate(savedInstanceState: Bundle?) {
3939
super.onCreate(savedInstanceState)
4040
setContent {
4141
ComposeActivityContent(this)
4242
}
4343
}
4444

45-
override fun didFinish(
46-
paywall: PaywallViewController,
45+
override fun onFinished(
46+
paywall: PaywallView,
4747
result: PaywallResult,
4848
shouldDismiss: Boolean,
4949
) {
@@ -54,7 +54,7 @@ class ComposeActivity :
5454
@Preview(showBackground = true)
5555
@Composable
5656
fun ComposeActivityContent(
57-
@PreviewParameter(PreviewPaywallDelegateProvider::class) delegate: PaywallViewControllerDelegate,
57+
@PreviewParameter(PreviewPaywallDelegateProvider::class) delegate: PaywallViewCallback,
5858
) {
5959
val selectedTabIndex = remember { mutableStateOf(0) }
6060
val examplePaywallOverrides = PaywallOverrides()
@@ -101,7 +101,7 @@ fun ComposeActivityContent(
101101
@Composable
102102
fun TabContent0(
103103
paywallOverrides: PaywallOverrides?,
104-
delegate: PaywallViewControllerDelegate,
104+
delegate: PaywallViewCallback,
105105
) {
106106
PaywallComposable(
107107
event = "no_products",
@@ -114,7 +114,7 @@ fun TabContent0(
114114
@Composable
115115
fun TabContent1(
116116
paywallOverrides: PaywallOverrides?,
117-
delegate: PaywallViewControllerDelegate,
117+
delegate: PaywallViewCallback,
118118
) {
119119
PaywallComposable(
120120
event = "no-existing-event",
@@ -167,13 +167,13 @@ fun EventButton() {
167167
}
168168

169169
// Mock Provider for Preview
170-
class PreviewPaywallDelegateProvider : PreviewParameterProvider<PaywallViewControllerDelegate> {
171-
override val values: Sequence<PaywallViewControllerDelegate> =
170+
class PreviewPaywallDelegateProvider : PreviewParameterProvider<PaywallViewCallback> {
171+
override val values: Sequence<PaywallViewCallback> =
172172
sequenceOf(
173-
object : PaywallViewControllerDelegate {
174-
// Mock implementation of PaywallViewControllerDelegate
175-
override fun didFinish(
176-
paywall: PaywallViewController,
173+
object : PaywallViewCallback {
174+
// Mock implementation of PaywallViewDelegate
175+
override fun onFinished(
176+
paywall: PaywallView,
177177
result: PaywallResult,
178178
shouldDismiss: Boolean,
179179
) {

app/src/main/java/com/superwall/superapp/test/UITestHandler.kt

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,8 @@ object UITestHandler {
367367
"browser opens, close it, and verify that the paywall is still showing.",
368368
test = { scope, events ->
369369

370-
// Create a mock paywall view controller
371-
val delegate = MockPaywallViewControllerDelegate()
370+
// Create a mock paywall view
371+
val delegate = MockPaywallViewDelegate()
372372

373373
// Get the paywall view controller instance
374374
val viewController =
@@ -668,17 +668,17 @@ object UITestHandler {
668668
" After doing this, try test 37",
669669
test = { scope, events ->
670670
// Create a mock paywall view controller
671-
val delegate = MockPaywallViewControllerDelegate()
672-
delegate.paywallViewControllerDidFinish { paywallViewController, paywallResult, shouldDismiss ->
673-
println("!!! TEST 35 !!! Result: $paywallResult, shouldDismiss: $shouldDismiss, paywallVc: $paywallViewController")
671+
val delegate = MockPaywallViewDelegate()
672+
delegate.paywallViewFinished { paywallView, paywallResult, shouldDismiss ->
673+
println("!!! TEST 35 !!! Result: $paywallResult, shouldDismiss: $shouldDismiss, paywallVc: $paywallView")
674674
}
675675

676676
// Get the paywall view controller instance
677-
val viewController =
677+
val view =
678678
Superwall.instance.getPaywall(event = "present_data", delegate = delegate)
679679

680680
// Present using the convenience `SuperwallPaywallActivity` activity and verify test case.
681-
SuperwallPaywallActivity.startWithView(context = this, view = viewController)
681+
SuperwallPaywallActivity.startWithView(context = this, view = view)
682682
},
683683
)
684684
var test36Info =
@@ -688,9 +688,9 @@ object UITestHandler {
688688
"\"the result type \"declined\" is printed to the console. The paywall should close.",
689689
test = { scope, events ->
690690
// Create a mock paywall view controller
691-
val delegate = MockPaywallViewControllerDelegate()
692-
delegate.paywallViewControllerDidFinish { paywallViewController, paywallResult, shouldDismiss ->
693-
println("!!! TEST 36 !!! Result: $paywallResult, shouldDismiss: $shouldDismiss, paywallVc: $paywallViewController")
691+
val delegate = MockPaywallViewDelegate()
692+
delegate.paywallViewFinished { paywallView, paywallResult, shouldDismiss ->
693+
println("!!! TEST 36 !!! Result: $paywallResult, shouldDismiss: $shouldDismiss, paywallVc: $paywallView")
694694
}
695695

696696
// Get the paywall view controller instance
@@ -709,9 +709,9 @@ object UITestHandler {
709709
"print the paywallResult as \"restored\".",
710710
test = { scope, events ->
711711
// Create a mock paywall view controller
712-
val delegate = MockPaywallViewControllerDelegate()
713-
delegate.paywallViewControllerDidFinish { paywallViewController, paywallResult, shouldDismiss ->
714-
println("!!! TEST 37 !!! Result: $paywallResult, shouldDismiss: $shouldDismiss, paywallVc: $paywallViewController")
712+
val delegate = MockPaywallViewDelegate()
713+
delegate.paywallViewFinished { paywallView, paywallResult, shouldDismiss ->
714+
println("!!! TEST 37 !!! Result: $paywallResult, shouldDismiss: $shouldDismiss, paywallVc: $paywallView")
715715
}
716716

717717
// Get the paywall view controller instance
@@ -1042,9 +1042,9 @@ object UITestHandler {
10421042
"the \"No Subscription Found\" alert pops up.",
10431043
test = { scope, events ->
10441044
// Create a mock paywall view controller
1045-
val delegate = MockPaywallViewControllerDelegate()
1046-
delegate.paywallViewControllerDidFinish { paywallViewController, paywallResult, shouldDismiss ->
1047-
println("!!! TEST 37 !!! Result: $paywallResult, shouldDismiss: $shouldDismiss, paywallVc: $paywallViewController")
1045+
val delegate = MockPaywallViewDelegate()
1046+
delegate.paywallViewFinished { paywallView, paywallResult, shouldDismiss ->
1047+
println("!!! TEST 37 !!! Result: $paywallResult, shouldDismiss: $shouldDismiss, paywallVc: $paywallView")
10481048
}
10491049

10501050
// Get the paywall view controller instance
@@ -1256,9 +1256,9 @@ object UITestHandler {
12561256
}
12571257

12581258
// Create a mock paywall view controller
1259-
val paywallDelegate = MockPaywallViewControllerDelegate()
1260-
paywallDelegate.paywallViewControllerDidFinish { paywallViewController, paywallResult, shouldDismiss ->
1261-
println("!!! TEST 70 !!! Result: $paywallResult, shouldDismiss: $shouldDismiss, paywallVc: $paywallViewController")
1259+
val paywallDelegate = MockPaywallViewDelegate()
1260+
paywallDelegate.paywallViewFinished { paywallView, paywallResult, shouldDismiss ->
1261+
println("!!! TEST 70 !!! Result: $paywallResult, shouldDismiss: $shouldDismiss, paywallVc: $paywallView")
12621262
if (shouldDismiss) {
12631263
CoroutineScope(Dispatchers.IO).launch {
12641264
Superwall.instance.dismiss()

app/src/main/java/com/superwall/superapp/test/UITestMocks.kt

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,39 @@ package com.superwall.superapp.test
33
import com.superwall.sdk.analytics.superwall.SuperwallEventInfo
44
import com.superwall.sdk.delegate.SuperwallDelegate
55
import com.superwall.sdk.paywall.presentation.internal.state.PaywallResult
6-
import com.superwall.sdk.paywall.vc.PaywallViewController
7-
import com.superwall.sdk.paywall.vc.delegate.PaywallViewControllerDelegate
6+
import com.superwall.sdk.paywall.vc.PaywallView
7+
import com.superwall.sdk.paywall.vc.delegate.PaywallViewCallback
88

9-
class MockPaywallViewControllerDelegate : PaywallViewControllerDelegate {
10-
private var paywallViewControllerDidFinish: ((PaywallViewController, PaywallResult, Boolean) -> Unit)? = null
9+
@Deprecated("Will be removed in the upcoming versions, use MockPaywallViewDelegate instead")
10+
typealias MockPaywallViewControllerDelegate = MockPaywallViewDelegate
11+
12+
class MockPaywallViewDelegate : PaywallViewCallback {
13+
private var paywallViewFinished: ((PaywallView, PaywallResult, Boolean) -> Unit)? = null
1114

1215
override fun didFinish(
13-
paywall: PaywallViewController,
16+
paywall: PaywallView,
17+
result: PaywallResult,
18+
shouldDismiss: Boolean,
19+
) = onFinished(paywall, result, shouldDismiss)
20+
21+
override fun onFinished(
22+
paywall: PaywallView,
1423
result: PaywallResult,
1524
shouldDismiss: Boolean,
1625
) {
17-
paywallViewControllerDidFinish?.invoke(paywall, result, shouldDismiss)
26+
paywallViewFinished?.invoke(paywall, result, shouldDismiss)
1827
if (shouldDismiss) {
1928
paywall.encapsulatingActivity?.finish()
2029
}
2130
}
2231

23-
fun paywallViewControllerDidFinish(handler: (PaywallViewController, PaywallResult, Boolean) -> Unit) {
24-
paywallViewControllerDidFinish = handler
32+
@Deprecated("Will be removed in the upcoming versions, use paywallViewFinished instead")
33+
fun paywallViewControllerDidFinish(handler: (PaywallView, PaywallResult, Boolean) -> Unit) {
34+
paywallViewFinished(handler)
35+
}
36+
37+
fun paywallViewFinished(handler: (PaywallView, PaywallResult, Boolean) -> Unit) {
38+
paywallViewFinished = handler
2539
}
2640
}
2741

superwall/src/main/java/com/superwall/sdk/Superwall.kt

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,20 @@ import com.superwall.sdk.paywall.presentation.PaywallInfo
2424
import com.superwall.sdk.paywall.presentation.PresentationItems
2525
import com.superwall.sdk.paywall.presentation.internal.dismiss
2626
import com.superwall.sdk.paywall.presentation.internal.state.PaywallResult
27-
import com.superwall.sdk.paywall.vc.PaywallViewController
27+
import com.superwall.sdk.paywall.vc.PaywallView
2828
import com.superwall.sdk.paywall.vc.SuperwallPaywallActivity
2929
import com.superwall.sdk.paywall.vc.SuperwallStoreOwner
3030
import com.superwall.sdk.paywall.vc.ViewModelFactory
3131
import com.superwall.sdk.paywall.vc.ViewStorageViewModel
32-
import com.superwall.sdk.paywall.vc.delegate.PaywallViewControllerEventDelegate
32+
import com.superwall.sdk.paywall.vc.delegate.PaywallViewEventCallback
3333
import com.superwall.sdk.paywall.vc.web_view.messaging.PaywallWebEvent
3434
import com.superwall.sdk.paywall.vc.web_view.messaging.PaywallWebEvent.Closed
3535
import com.superwall.sdk.paywall.vc.web_view.messaging.PaywallWebEvent.Custom
3636
import com.superwall.sdk.paywall.vc.web_view.messaging.PaywallWebEvent.InitiatePurchase
3737
import com.superwall.sdk.paywall.vc.web_view.messaging.PaywallWebEvent.InitiateRestore
3838
import com.superwall.sdk.paywall.vc.web_view.messaging.PaywallWebEvent.OpenedDeepLink
3939
import com.superwall.sdk.paywall.vc.web_view.messaging.PaywallWebEvent.OpenedURL
40-
import com.superwall.sdk.paywall.vc.web_view.messaging.PaywallWebEvent.OpenedUrlInSafari
40+
import com.superwall.sdk.paywall.vc.web_view.messaging.PaywallWebEvent.OpenedUrlInChrome
4141
import com.superwall.sdk.storage.ActiveSubscriptionStatus
4242
import com.superwall.sdk.store.ExternalNativePurchaseController
4343
import kotlinx.coroutines.CoroutineScope
@@ -60,7 +60,7 @@ class Superwall(
6060
options: SuperwallOptions?,
6161
private var activityProvider: ActivityProvider?,
6262
private val completion: (() -> Unit)?,
63-
) : PaywallViewControllerEventDelegate {
63+
) : PaywallViewEventCallback {
6464
private var _options: SuperwallOptions? = options
6565
private val ioScope = CoroutineScope(Dispatchers.IO)
6666
internal var context: Context = context.applicationContext
@@ -79,10 +79,10 @@ class Superwall(
7979
internal val presentationItems: PresentationItems = PresentationItems()
8080

8181
/**
82-
* The presented paywall view controller.
82+
* The presented paywall view.
8383
*/
84-
val paywallViewController: PaywallViewController?
85-
get() = dependencyContainer.paywallManager.presentedViewController
84+
val paywallView: PaywallView?
85+
get() = dependencyContainer.paywallManager.currentView
8686

8787
/**
8888
* A convenience variable to access and change the paywall options that you passed
@@ -104,7 +104,7 @@ class Superwall(
104104
* Determines whether a paywall is being presented.
105105
*/
106106
val isPaywallPresented: Boolean
107-
get() = paywallViewController != null
107+
get() = paywallView != null
108108

109109
/**
110110
* The delegate that handles Superwall lifecycle events.
@@ -182,12 +182,12 @@ class Superwall(
182182
get() = dependencyContainer.identityManager.isLoggedIn
183183

184184
/**
185-
* The `PaywallInfo` object of the most recently presented view controller.
185+
* The `PaywallInfo` object of the most recently presented view.
186186
*/
187187
val latestPaywallInfo: PaywallInfo?
188188
get() {
189189
val presentedPaywallInfo =
190-
dependencyContainer.paywallManager.presentedViewController?.info
190+
dependencyContainer.paywallManager.currentView?.info
191191
return presentedPaywallInfo ?: presentationItems.paywallInfo
192192
}
193193

@@ -373,9 +373,9 @@ class Superwall(
373373
*/
374374
fun togglePaywallSpinner(isHidden: Boolean) {
375375
ioScope.launch {
376-
val paywallViewController =
377-
dependencyContainer.paywallManager.presentedViewController ?: return@launch
378-
paywallViewController.togglePaywallSpinner(isHidden)
376+
val paywallView =
377+
dependencyContainer.paywallManager.currentView ?: return@launch
378+
paywallView.togglePaywallSpinner(isHidden)
379379
}
380380
}
381381

@@ -486,20 +486,20 @@ class Superwall(
486486

487487
override suspend fun eventDidOccur(
488488
paywallEvent: PaywallWebEvent,
489-
paywallViewController: PaywallViewController,
489+
paywallView: PaywallView,
490490
) {
491491
withContext(Dispatchers.Main) {
492492
Logger.debug(
493493
logLevel = LogLevel.debug,
494-
scope = LogScope.paywallViewController,
494+
scope = LogScope.paywallView,
495495
message = "Event Did Occur",
496496
info = mapOf("event" to paywallEvent),
497497
)
498498

499499
when (paywallEvent) {
500500
is Closed -> {
501501
dismiss(
502-
paywallViewController,
502+
paywallView,
503503
result = PaywallResult.Declined(),
504504
closeReason = PaywallCloseReason.ManualClose,
505505
)
@@ -515,7 +515,7 @@ class Superwall(
515515
try {
516516
dependencyContainer.transactionManager.purchase(
517517
paywallEvent.productId,
518-
paywallViewController,
518+
paywallView,
519519
)
520520
} finally {
521521
// Ensure the task is cleared once the purchase is complete or if an error occurs
@@ -525,14 +525,14 @@ class Superwall(
525525
}
526526

527527
is InitiateRestore -> {
528-
dependencyContainer.transactionManager.tryToRestore(paywallViewController)
528+
dependencyContainer.transactionManager.tryToRestore(paywallView)
529529
}
530530

531531
is OpenedURL -> {
532532
dependencyContainer.delegateAdapter.paywallWillOpenURL(url = paywallEvent.url)
533533
}
534534

535-
is OpenedUrlInSafari -> {
535+
is OpenedUrlInChrome -> {
536536
dependencyContainer.delegateAdapter.paywallWillOpenURL(url = paywallEvent.url)
537537
}
538538

0 commit comments

Comments
 (0)