Skip to content

Commit

Permalink
Merge pull request #172 from superwall/develop
Browse files Browse the repository at this point in the history
1.2.6
  • Loading branch information
ianrumac authored Sep 24, 2024
2 parents 3e7266b + 6c8d5b2 commit c4982b4
Show file tree
Hide file tree
Showing 29 changed files with 52 additions and 39 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

The changelog for `Superwall`. Also see the [releases](https://github.com/superwall/Superwall-Android/releases) on GitHub.

## 1.2.6

### Fixes
- Fixes issue where the paywall would not show in some cases when using `minutes_since`
- Fixes issue with wrong URL being logged when a paywall fails to load

## 1.2.5

### Enhancements
Expand Down
2 changes: 1 addition & 1 deletion superwall/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ plugins {
id("signing")
}

version = "1.2.5"
version = "1.2.6"

android {
compileSdk = 34
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.superwall.sdk.config

import Assignments
import Given
import Then
import When
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.superwall.sdk.config

import And
import Assignments
import Given
import Then
import When
Expand Down Expand Up @@ -536,18 +535,18 @@ class ConfigManagerTests {
coEvery { storage.write(any(), any()) } just Runs
coEvery { storage.read(LatestGeoInfo) } returns GeoInfo.stub()
coEvery { mockNetwork.getConfig(any()) } coAnswers {
delay(400)
delay(1200)
Either.Success(newConfig)
}
coEvery { mockNetwork.getGeoInfo() } coAnswers {
delay(200)
delay(1200)
Either.Success(GeoInfo.stub())
}

coEvery {
mockDeviceHelper.getGeoInfo()
} coAnswers {
delay(200)
delay(1200)
Either.Success(GeoInfo.stub())
}

Expand Down Expand Up @@ -610,7 +609,7 @@ class ConfigManagerTests {
mockNetwork.getGeoInfo()
} returns Either.Failure(NetworkError.Unknown())
coEvery { mockNetwork.getConfig(any()) } coAnswers {
delay(500)
delay(1200)
Either.Success(Config.stub().copy(buildId = "not"))
}
coEvery { mockDeviceHelper.getTemplateDevice() } returns emptyMap()
Expand Down Expand Up @@ -796,13 +795,13 @@ class ConfigManagerTests {

coEvery { mockNetwork.getConfig(any()) } coAnswers {
async(Dispatchers.IO) {
delay(400)
delay(1200)
}.await()
Either.Success(newConfig)
}
coEvery { mockDeviceHelper.getGeoInfo() } coAnswers {
async(Dispatchers.IO) {
delay(400)
delay(1200)
}.await()
Either.Success(newGeo)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.superwall.sdk.network

import BaseHostService
import Given
import Then
import When
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.superwall.sdk.network

import GeoService
import Given
import Then
import When
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.superwall.sdk.paywall.presentation.rule_logic.expression_evaluator

import ComputedPropertyRequest
import androidx.javascriptengine.JavaScriptSandbox
import androidx.test.platform.app.InstrumentationRegistry
import com.superwall.sdk.dependencies.RuleAttributesFactory
import com.superwall.sdk.models.config.ComputedPropertyRequest
import com.superwall.sdk.models.events.EventData
import com.superwall.sdk.models.triggers.Experiment
import com.superwall.sdk.models.triggers.MatchedItem
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import com.superwall.sdk.config.ConfigLogic
package com.superwall.sdk.config

import com.superwall.sdk.misc.Either
import com.superwall.sdk.misc.then
import com.superwall.sdk.models.assignment.Assignment
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package com.superwall.sdk.config

import Assignments
import android.content.Context
import awaitUntilNetworkExists
import com.superwall.sdk.analytics.internal.trackable.InternalSuperwallEvent
import com.superwall.sdk.config.models.ConfigState
import com.superwall.sdk.config.models.getConfig
Expand All @@ -26,6 +24,7 @@ import com.superwall.sdk.models.triggers.ExperimentID
import com.superwall.sdk.models.triggers.Trigger
import com.superwall.sdk.network.NetworkError
import com.superwall.sdk.network.SuperwallAPI
import com.superwall.sdk.network.awaitUntilNetworkExists
import com.superwall.sdk.network.device.DeviceHelper
import com.superwall.sdk.paywall.manager.PaywallManager
import com.superwall.sdk.paywall.presentation.rule_logic.javascript.JavascriptEvaluator
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.superwall.sdk.config

import Assignments
import android.content.Context
import android.webkit.WebView
import com.superwall.sdk.dependencies.RequestFactory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
package com.superwall.sdk.dependencies

import Assignments
import BaseHostService
import ComputedPropertyRequest
import GeoService
import android.app.Activity
import android.app.Application
import android.content.Context
Expand All @@ -19,6 +15,7 @@ import com.superwall.sdk.analytics.session.AppManagerDelegate
import com.superwall.sdk.analytics.session.AppSession
import com.superwall.sdk.analytics.session.AppSessionManager
import com.superwall.sdk.billing.GoogleBillingWrapper
import com.superwall.sdk.config.Assignments
import com.superwall.sdk.config.ConfigLogic
import com.superwall.sdk.config.ConfigManager
import com.superwall.sdk.config.PaywallPreload
Expand All @@ -33,12 +30,15 @@ import com.superwall.sdk.identity.IdentityManager
import com.superwall.sdk.misc.ActivityProvider
import com.superwall.sdk.misc.AppLifecycleObserver
import com.superwall.sdk.misc.CurrentActivityTracker
import com.superwall.sdk.models.config.ComputedPropertyRequest
import com.superwall.sdk.models.config.FeatureFlags
import com.superwall.sdk.models.events.EventData
import com.superwall.sdk.models.paywall.Paywall
import com.superwall.sdk.models.product.ProductVariable
import com.superwall.sdk.network.Api
import com.superwall.sdk.network.BaseHostService
import com.superwall.sdk.network.CollectorService
import com.superwall.sdk.network.GeoService
import com.superwall.sdk.network.JsonFactory
import com.superwall.sdk.network.Network
import com.superwall.sdk.network.RequestExecutor
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.superwall.sdk.dependencies

import ComputedPropertyRequest
import android.app.Activity
import com.android.billingclient.api.Purchase
import com.superwall.sdk.analytics.internal.trackable.InternalSuperwallEvent
Expand All @@ -12,6 +11,7 @@ import com.superwall.sdk.delegate.SubscriptionStatus
import com.superwall.sdk.identity.IdentityInfo
import com.superwall.sdk.identity.IdentityManager
import com.superwall.sdk.misc.AppLifecycleObserver
import com.superwall.sdk.models.config.ComputedPropertyRequest
import com.superwall.sdk.models.config.FeatureFlags
import com.superwall.sdk.models.events.EventData
import com.superwall.sdk.models.paywall.Paywall
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.superwall.sdk.models.config

import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.superwall.sdk.models.config

import ComputedPropertyRequest
import com.superwall.sdk.models.SerializableEntity
import com.superwall.sdk.models.paywall.Paywall
import com.superwall.sdk.models.postback.PostbackRequest
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package com.superwall.sdk.models.paywall

import ComputedPropertyRequest
import android.graphics.Color
import com.superwall.sdk.config.models.OnDeviceCaching
import com.superwall.sdk.config.models.Survey
import com.superwall.sdk.logger.LogLevel
import com.superwall.sdk.logger.LogScope
import com.superwall.sdk.logger.Logger
import com.superwall.sdk.models.SerializableEntity
import com.superwall.sdk.models.config.ComputedPropertyRequest
import com.superwall.sdk.models.config.FeatureGatingBehavior
import com.superwall.sdk.models.events.EventData
import com.superwall.sdk.models.product.Product
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.superwall.sdk.models.triggers

import ComputedPropertyRequest
import com.superwall.sdk.models.config.ComputedPropertyRequest
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.superwall.sdk.network

import android.Manifest
import android.content.Context
import android.content.pm.PackageManager
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package com.superwall.sdk.network

import com.superwall.sdk.dependencies.ApiFactory
import com.superwall.sdk.misc.Either
import com.superwall.sdk.models.assignment.AssignmentPostback
import com.superwall.sdk.models.assignment.ConfirmedAssignmentResponse
import com.superwall.sdk.models.config.Config
import com.superwall.sdk.models.paywall.Paywall
import com.superwall.sdk.models.paywall.Paywalls
import com.superwall.sdk.network.NetworkError
import com.superwall.sdk.network.NetworkService
import com.superwall.sdk.network.URLQueryItem
import com.superwall.sdk.network.session.CustomHttpUrlConnection
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.superwall.sdk.network

import com.superwall.sdk.dependencies.ApiFactory
import com.superwall.sdk.models.geo.GeoWrapper
import com.superwall.sdk.network.NetworkService
import com.superwall.sdk.network.session.CustomHttpUrlConnection

class GeoService(
Expand Down
2 changes: 0 additions & 2 deletions superwall/src/main/java/com/superwall/sdk/network/Network.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.superwall.sdk.network

import BaseHostService
import GeoService
import com.superwall.sdk.dependencies.ApiFactory
import com.superwall.sdk.logger.LogLevel
import com.superwall.sdk.logger.LogScope
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ internal sealed class Capability(
@Serializable
@SerialName("multiple_paywall_urls")
object MultiplePaywallUrls : Capability("multiple_paywall_urls")

@Serializable
@SerialName("config_caching")
object ConfigCaching : Capability("config_caching")
}

internal fun List<Capability>.toJson(json: Json): JsonElement = json.encodeToJsonElement(this)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.superwall.sdk.network.device

import ComputedPropertyRequest
import android.annotation.SuppressLint
import android.content.Context
import android.content.pm.ApplicationInfo
Expand All @@ -20,6 +19,7 @@ import com.superwall.sdk.logger.LogLevel
import com.superwall.sdk.logger.LogScope
import com.superwall.sdk.logger.Logger
import com.superwall.sdk.misc.then
import com.superwall.sdk.models.config.ComputedPropertyRequest
import com.superwall.sdk.models.events.EventData
import com.superwall.sdk.models.geo.GeoInfo
import com.superwall.sdk.network.JsonFactory
Expand Down Expand Up @@ -424,7 +424,7 @@ class DeviceHelper(
null
}
val capabilities: List<Capability> =
listOf(Capability.PaywallEventReceiver(), Capability.MultiplePaywallUrls)
listOf(Capability.PaywallEventReceiver(), Capability.MultiplePaywallUrls, Capability.ConfigCaching)

val deviceTemplate =
DeviceTemplate(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.superwall.sdk.paywall.presentation

import ComputedPropertyRequest
import com.superwall.sdk.config.models.Survey
import com.superwall.sdk.logger.LogLevel
import com.superwall.sdk.logger.LogScope
import com.superwall.sdk.logger.Logger
import com.superwall.sdk.misc.camelCaseToSnakeCase
import com.superwall.sdk.models.config.ComputedPropertyRequest
import com.superwall.sdk.models.config.FeatureGatingBehavior
import com.superwall.sdk.models.events.EventData
import com.superwall.sdk.models.paywall.LocalNotification
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.superwall.sdk.paywall.presentation.rule_logic

import Assignments
import com.superwall.sdk.config.Assignments
import com.superwall.sdk.dependencies.RuleAttributesFactory
import com.superwall.sdk.models.assignment.ConfirmableAssignment
import com.superwall.sdk.models.events.EventData
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch

internal open class DefaultWebviewClient(
private val forUrl: String = "",
private val ioScope: CoroutineScope,
) : WebViewClient() {
val webviewClientEvents: MutableSharedFlow<WebviewClientEvent> =
Expand Down Expand Up @@ -52,7 +53,7 @@ internal open class DefaultWebviewClient(
val body = it.data?.bufferedReader()?.use { it.readText() } ?: "Unknown"
"Error: ${errorResponse.reasonPhrase} -\n $body"
} ?: "Unknown error",
request?.url?.toString() ?: "",
forUrl,
),
),
)
Expand All @@ -70,7 +71,7 @@ internal open class DefaultWebviewClient(
WebviewError.NetworkError(
error.errorCode,
error.description.toString(),
request?.url?.toString() ?: "",
forUrl,
),
),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,12 @@ class SWWebView(
}

override fun loadUrl(url: String) {
this.webViewClient =
DefaultWebviewClient(
forUrl = url,
ioScope = CoroutineScope(Dispatchers.IO),
)
listenToWebviewClientEvents(this.webViewClient as DefaultWebviewClient)
// Parse the url and add the query parameter
val uri = Uri.parse(url)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ internal class WebviewFallbackClient(
private val mainScope: CoroutineScope,
private val loadUrl: (PaywallWebviewUrl) -> Unit,
private val stopLoading: () -> Unit,
) : DefaultWebviewClient(ioScope) {
) : DefaultWebviewClient("", ioScope) {
private class MaxAttemptsReachedException : Exception("Max attempts reached")

private var failureCount = 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class Converters {
fun toDate(timestamp: Long): Date = Date(timestamp)

@TypeConverter
fun toTimestamp(date: Date): Long = date.time
fun toTimestamp(date: Date?): Long? = date?.time

/**
* Filters out any values that can't be saved to the database.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.superwall.sdk.storage.core_data

import ComputedPropertyRequest
import android.content.Context
import android.icu.util.Calendar
import com.superwall.sdk.logger.LogLevel
import com.superwall.sdk.logger.LogScope
import com.superwall.sdk.logger.Logger
import com.superwall.sdk.models.config.ComputedPropertyRequest
import com.superwall.sdk.models.events.EventData
import com.superwall.sdk.models.triggers.TriggerRuleOccurrence
import com.superwall.sdk.storage.core_data.entities.ManagedEventData
Expand Down

0 comments on commit c4982b4

Please sign in to comment.