diff --git a/.pubnub.yml b/.pubnub.yml index 241c54976..34bab4d59 100644 --- a/.pubnub.yml +++ b/.pubnub.yml @@ -1,9 +1,9 @@ name: kotlin -version: 10.4.3 +version: 10.4.4 schema: 1 scm: github.com/pubnub/kotlin files: - - build/libs/pubnub-kotlin-10.4.3-all.jar + - build/libs/pubnub-kotlin-10.4.4-all.jar sdks: - type: library @@ -23,8 +23,8 @@ sdks: - distribution-type: library distribution-repository: maven - package-name: pubnub-kotlin-10.4.3 - location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/10.4.3/pubnub-kotlin-10.4.3.jar + package-name: pubnub-kotlin-10.4.4 + location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/10.4.4/pubnub-kotlin-10.4.4.jar supported-platforms: supported-operating-systems: Android: @@ -121,6 +121,11 @@ sdks: license-url: https://www.apache.org/licenses/LICENSE-2.0.txt is-required: Required changelog: + - date: 2025-03-07 + version: v10.4.4 + changes: + - type: bug + text: "Internal fixes." - date: 2025-02-28 version: v10.4.3 changes: diff --git a/CHANGELOG.md b/CHANGELOG.md index 43b8a1311..52c532065 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## v10.4.4 +March 07 2025 + +#### Fixed +- Internal fixes. + ## v10.4.3 February 28 2025 diff --git a/README.md b/README.md index f98c47366..1997c6696 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ You will need the publish and subscribe keys to authenticate your app. Get your com.pubnub pubnub-kotlin - 10.4.3 + 10.4.4 ``` diff --git a/gradle.properties b/gradle.properties index 0b0d5c6c2..39f2b884f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,7 +18,7 @@ RELEASE_SIGNING_ENABLED=true SONATYPE_HOST=DEFAULT SONATYPE_AUTOMATIC_RELEASE=false GROUP=com.pubnub -VERSION_NAME=10.4.3 +VERSION_NAME=10.4.4 POM_PACKAGING=jar POM_NAME=PubNub SDK diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 52160e2ed..67400f21e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ dokka = "1.9.20" kotlinx_datetime = "0.6.1" kotlinx_coroutines = "1.9.0" pubnub_js = "8.6.0" -pubnub_swift = "8.3.0" +pubnub_swift = "9.0.0" [libraries] retrofit2 = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit2" } diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/AddChannelsToPush.ios.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/AddChannelsToPush.ios.kt index 11d9fd059..9d9510915 100644 --- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/AddChannelsToPush.ios.kt +++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/AddChannelsToPush.ios.kt @@ -2,7 +2,6 @@ package com.pubnub.api.endpoints.push import cocoapods.PubNubSwift.KMPPubNub import cocoapods.PubNubSwift.addChannelsToPushNotificationsWithChannels -import com.pubnub.api.PubNubException import com.pubnub.api.enums.PNPushEnvironment import com.pubnub.api.enums.PNPushType import com.pubnub.api.models.consumer.push.PNPushAddChannelResult @@ -11,9 +10,7 @@ import com.pubnub.api.v2.callbacks.Result import com.pubnub.kmp.PNFuture import com.pubnub.kmp.onFailureHandler import com.pubnub.kmp.onSuccessHandler -import com.pubnub.kmp.toNSData import kotlinx.cinterop.ExperimentalForeignApi -import platform.Foundation.NSData /** * @see [PubNub.addPushNotificationsOnChannels] @@ -30,16 +27,14 @@ class AddChannelsToPushImpl( private val environment: PNPushEnvironment ) : AddChannelsToPush { override fun async(callback: Consumer>) { - deviceId.toNSData()?.let { data: NSData -> - pubnub.addChannelsToPushNotificationsWithChannels( - channels = channels, - deviceId = data, - pushType = pushType.toParamString(), - topic = topic.orEmpty(), - environment = environment.toParamString(), - onSuccess = callback.onSuccessHandler { PNPushAddChannelResult() }, - onFailure = callback.onFailureHandler() - ) - } ?: callback.accept(Result.failure(PubNubException("Cannot create NSData from $deviceId"))) + pubnub.addChannelsToPushNotificationsWithChannels( + channels = channels, + deviceId = deviceId, + pushType = pushType.toParamString(), + topic = topic.orEmpty(), + environment = environment.toParamString(), + onSuccess = callback.onSuccessHandler { PNPushAddChannelResult() }, + onFailure = callback.onFailureHandler() + ) } } diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/ListPushProvisions.ios.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/ListPushProvisions.ios.kt index ed9eb3ce8..664257858 100644 --- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/ListPushProvisions.ios.kt +++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/ListPushProvisions.ios.kt @@ -2,7 +2,6 @@ package com.pubnub.api.endpoints.push import cocoapods.PubNubSwift.KMPPubNub import cocoapods.PubNubSwift.listPushChannelsWithDeviceId -import com.pubnub.api.PubNubException import com.pubnub.api.enums.PNPushEnvironment import com.pubnub.api.enums.PNPushType import com.pubnub.api.models.consumer.push.PNPushListProvisionsResult @@ -11,9 +10,7 @@ import com.pubnub.api.v2.callbacks.Result import com.pubnub.kmp.PNFuture import com.pubnub.kmp.onFailureHandler import com.pubnub.kmp.onSuccessHandler -import com.pubnub.kmp.toNSData import kotlinx.cinterop.ExperimentalForeignApi -import platform.Foundation.NSData /** * @see [PubNub.auditPushChannelProvisions] @@ -29,15 +26,17 @@ class ListPushProvisionsImpl( private val environment: PNPushEnvironment ) : ListPushProvisions { override fun async(callback: Consumer>) { - deviceId.toNSData()?.let { data: NSData -> - pubnub.listPushChannelsWithDeviceId( - deviceId = data, - pushType = pushType.toParamString(), - topic = topic.orEmpty(), - environment = environment.toParamString(), - onSuccess = callback.onSuccessHandler { PNPushListProvisionsResult(channels = it?.filterIsInstance() ?: emptyList()) }, - onFailure = callback.onFailureHandler() - ) - } ?: callback.accept(Result.failure(PubNubException("Cannot create NSData from $deviceId"))) + pubnub.listPushChannelsWithDeviceId( + deviceId = deviceId, + pushType = pushType.toParamString(), + topic = topic.orEmpty(), + environment = environment.toParamString(), + onSuccess = callback.onSuccessHandler { + PNPushListProvisionsResult( + channels = it?.filterIsInstance() ?: emptyList() + ) + }, + onFailure = callback.onFailureHandler() + ) } } diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveAllPushChannelsForDevice.ios.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveAllPushChannelsForDevice.ios.kt index 646918755..952a8ade4 100644 --- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveAllPushChannelsForDevice.ios.kt +++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveAllPushChannelsForDevice.ios.kt @@ -2,7 +2,6 @@ package com.pubnub.api.endpoints.push import cocoapods.PubNubSwift.KMPPubNub import cocoapods.PubNubSwift.removeAllChannelsFromPushWithPushType -import com.pubnub.api.PubNubException import com.pubnub.api.enums.PNPushEnvironment import com.pubnub.api.enums.PNPushType import com.pubnub.api.models.consumer.push.PNPushRemoveAllChannelsResult @@ -11,9 +10,7 @@ import com.pubnub.api.v2.callbacks.Result import com.pubnub.kmp.PNFuture import com.pubnub.kmp.onFailureHandler import com.pubnub.kmp.onSuccessReturnValue -import com.pubnub.kmp.toNSData import kotlinx.cinterop.ExperimentalForeignApi -import platform.Foundation.NSData /** * @see [PubNub.removeAllPushNotificationsFromDeviceWithPushToken] @@ -29,15 +26,13 @@ class RemoveAllPushChannelsForDeviceImpl( private val environment: PNPushEnvironment ) : RemoveAllPushChannelsForDevice { override fun async(callback: Consumer>) { - deviceId.toNSData()?.let { data: NSData -> - pubnub.removeAllChannelsFromPushWithPushType( - pushType = pushType.toParamString(), - deviceId = data, - topic = topic.orEmpty(), - environment = environment.toParamString(), - onSuccess = callback.onSuccessReturnValue(PNPushRemoveAllChannelsResult()), - onFailure = callback.onFailureHandler() - ) - } ?: callback.accept(Result.failure(PubNubException("Cannot create NSData from $deviceId"))) + pubnub.removeAllChannelsFromPushWithPushType( + pushType = pushType.toParamString(), + deviceId = deviceId, + topic = topic.orEmpty(), + environment = environment.toParamString(), + onSuccess = callback.onSuccessReturnValue(PNPushRemoveAllChannelsResult()), + onFailure = callback.onFailureHandler() + ) } } diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveChannelsFromPush.ios.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveChannelsFromPush.ios.kt index e0f320e59..1e31ef34b 100644 --- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveChannelsFromPush.ios.kt +++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/endpoints/push/RemoveChannelsFromPush.ios.kt @@ -2,7 +2,6 @@ package com.pubnub.api.endpoints.push import cocoapods.PubNubSwift.KMPPubNub import cocoapods.PubNubSwift.removeChannelsFromPushWithChannels -import com.pubnub.api.PubNubException import com.pubnub.api.enums.PNPushEnvironment import com.pubnub.api.enums.PNPushType import com.pubnub.api.models.consumer.push.PNPushRemoveChannelResult @@ -11,9 +10,7 @@ import com.pubnub.api.v2.callbacks.Result import com.pubnub.kmp.PNFuture import com.pubnub.kmp.onFailureHandler import com.pubnub.kmp.onSuccessHandler -import com.pubnub.kmp.toNSData import kotlinx.cinterop.ExperimentalForeignApi -import platform.Foundation.NSData /** * @see [PubNub.removePushNotificationsFromChannels] @@ -30,16 +27,14 @@ class RemoveChannelsFromPushImpl( private val environment: PNPushEnvironment, ) : RemoveChannelsFromPush { override fun async(callback: Consumer>) { - deviceId.toNSData()?.let { data: NSData -> - pubnub.removeChannelsFromPushWithChannels( - channels = channels, - deviceId = data, - pushType = pushType.toParamString(), - topic = topic.orEmpty(), - environment = environment.toParamString(), - onSuccess = callback.onSuccessHandler { PNPushRemoveChannelResult() }, - onFailure = callback.onFailureHandler() - ) - } ?: callback.accept(Result.failure(PubNubException("Cannot create NSData from $deviceId"))) + pubnub.removeChannelsFromPushWithChannels( + channels = channels, + deviceId = deviceId, + pushType = pushType.toParamString(), + topic = topic.orEmpty(), + environment = environment.toParamString(), + onSuccess = callback.onSuccessHandler { PNPushRemoveChannelResult() }, + onFailure = callback.onFailureHandler() + ) } } diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/kmp/converters.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/kmp/converters.kt index e600c515a..9921ad8da 100644 --- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/kmp/converters.kt +++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/kmp/converters.kt @@ -14,14 +14,6 @@ import com.pubnub.api.models.consumer.objects.membership.PNChannelMembership import com.pubnub.api.models.consumer.objects.uuid.PNUUIDMetadata import com.pubnub.api.utils.PatchValue import kotlinx.cinterop.ExperimentalForeignApi -import platform.Foundation.NSData -import platform.Foundation.NSString -import platform.Foundation.NSUTF8StringEncoding -import platform.Foundation.dataUsingEncoding - -internal fun String.toNSData(): NSData? { - return (this as NSString).dataUsingEncoding(NSUTF8StringEncoding) -} @OptIn(ExperimentalForeignApi::class) internal fun createPubNubHashedPage(from: PNPage?): KMPHashedPage { diff --git a/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt b/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt index 606370494..04a4550ac 100644 --- a/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt +++ b/pubnub-kotlin/pubnub-kotlin-impl/src/test/kotlin/com/pubnub/api/legacy/PubNubImplTest.kt @@ -56,7 +56,7 @@ class PubNubImplTest : BaseTest() { fun getVersionAndTimeStamp() { val version = PubNubImpl.SDK_VERSION val timeStamp = PubNubImpl.timestamp() - assertEquals("10.4.3", version) + assertEquals("10.4.4", version) assertTrue(timeStamp > 0) }