diff --git a/.pubnub.yml b/.pubnub.yml
index cee682560..a327510cd 100644
--- a/.pubnub.yml
+++ b/.pubnub.yml
@@ -1,9 +1,9 @@
name: kotlin
-version: 10.5.7
+version: 10.5.8
schema: 1
scm: github.com/pubnub/kotlin
files:
- - build/libs/pubnub-kotlin-10.5.7-all.jar
+ - build/libs/pubnub-kotlin-10.5.8-all.jar
sdks:
-
type: library
@@ -23,8 +23,8 @@ sdks:
-
distribution-type: library
distribution-repository: maven
- package-name: pubnub-kotlin-10.5.7
- location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/10.5.7/pubnub-kotlin-10.5.7.jar
+ package-name: pubnub-kotlin-10.5.8
+ location: https://repo.maven.apache.org/maven2/com/pubnub/pubnub-kotlin/10.5.8/pubnub-kotlin-10.5.8.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-08-06
+ version: v10.5.8
+ changes:
+ - type: bug
+ text: "Internal fixes."
- date: 2025-07-31
version: v10.5.7
changes:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 915fa0985..a282d4861 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## v10.5.8
+August 06 2025
+
+#### Fixed
+- Internal fixes.
+
## v10.5.7
July 31 2025
diff --git a/README.md b/README.md
index bc3f582f7..eb1108be8 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.5.7
+ 10.5.8
```
diff --git a/gradle.properties b/gradle.properties
index eb93d8cdd..9b729069a 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.5.7
+VERSION_NAME=10.5.8
POM_PACKAGING=jar
POM_NAME=PubNub SDK
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 822cb0e0b..64676ce99 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -13,7 +13,7 @@ dokka = "2.0.0"
kotlinx_datetime = "0.6.2"
kotlinx_coroutines = "1.10.2"
pubnub_js = "9.8.1"
-pubnub_swift = "9.3.1"
+pubnub_swift = "9.3.2"
[libraries]
retrofit2 = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit2" }
diff --git a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/PubNubImpl.kt b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/PubNubImpl.kt
index 7a3673e4e..43a2d0681 100644
--- a/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/PubNubImpl.kt
+++ b/pubnub-kotlin/pubnub-kotlin-api/src/appleMain/kotlin/com/pubnub/api/PubNubImpl.kt
@@ -1,5 +1,7 @@
package com.pubnub.api
+import cocoapods.PubNubSwift.KMPPAMPermission
+import cocoapods.PubNubSwift.KMPPAMTokenResource
import cocoapods.PubNubSwift.KMPPubNub
import cocoapods.PubNubSwift.KMPSubscription
import cocoapods.PubNubSwift.KMPSubscriptionSet
@@ -10,6 +12,7 @@ import cocoapods.PubNubSwift.channelMetadataWith
import cocoapods.PubNubSwift.channelWith
import cocoapods.PubNubSwift.disconnect
import cocoapods.PubNubSwift.getToken
+import cocoapods.PubNubSwift.parseWithToken
import cocoapods.PubNubSwift.reconnectWithTimetoken
import cocoapods.PubNubSwift.removeAllListeners
import cocoapods.PubNubSwift.removeEventListenerWithListener
@@ -144,6 +147,7 @@ import com.pubnub.internal.subscription.SubscriptionImpl
import com.pubnub.internal.subscription.SubscriptionSetImpl
import com.pubnub.kmp.CustomObject
import com.pubnub.kmp.Uploadable
+import com.pubnub.kmp.safeCast
import kotlinx.cinterop.ExperimentalForeignApi
@OptIn(ExperimentalForeignApi::class)
@@ -1022,7 +1026,49 @@ class PubNubImpl(private val pubNubObjC: KMPPubNub) : PubNub {
}
override fun parseToken(token: String): PNToken {
- TODO("Not yet implemented")
+ return pubNubObjC.parseWithToken(token)?.let {
+ PNToken(
+ version = it.version().intValue,
+ timestamp = it.timestamp().longValue(),
+ authorizedUUID = it.authorizedUUID(),
+ resources = mapPAMTokenResources(it.resources()),
+ patterns = mapPAMTokenResources(it.patterns()),
+ meta = it.meta().asMap()
+ )
+ } ?: PNToken(
+ resources = PNToken.PNTokenResources(),
+ patterns = PNToken.PNTokenResources()
+ )
+ }
+
+ private fun mapPAMTokenResources(from: KMPPAMTokenResource): PNToken.PNTokenResources {
+ val channels = from.channels().safeCast().mapValues {
+ mapPAMTokenResourcePermission(it.value)
+ }
+ val channelGroups = from.channelGroups().safeCast().mapValues {
+ mapPAMTokenResourcePermission(it.value)
+ }
+ val uuids = from.uuids().safeCast().mapValues {
+ mapPAMTokenResourcePermission(it.value)
+ }
+
+ return PNToken.PNTokenResources(
+ channels = channels,
+ channelGroups = channelGroups,
+ uuids = uuids
+ )
+ }
+
+ private fun mapPAMTokenResourcePermission(from: KMPPAMPermission): PNToken.PNResourcePermissions {
+ return PNToken.PNResourcePermissions(
+ read = from.read(),
+ write = from.write(),
+ manage = from.manage(),
+ delete = from.delete(),
+ get = from.get(),
+ update = from.update(),
+ join = from.join()
+ )
}
override fun unsubscribeAll() {
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 5d26db31d..d483fca73 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.5.7", version)
+ assertEquals("10.5.8", version)
assertTrue(timeStamp > 0)
}