@@ -20,6 +20,7 @@ import org.xmtp.android.example.extension.stateFlow
20
20
import org.xmtp.android.example.pushnotifications.PushNotificationTokenManager
21
21
import org.xmtp.android.library.Conversation
22
22
import org.xmtp.android.library.DecodedMessage
23
+ import org.xmtp.android.library.push.Service
23
24
24
25
class MainViewModel : ViewModel () {
25
26
@@ -43,7 +44,24 @@ class MainViewModel : ViewModel() {
43
44
val listItems = mutableListOf<MainListItem >()
44
45
try {
45
46
val conversations = ClientManager .client.conversations.list(includeGroups = true )
46
- PushNotificationTokenManager .xmtpPush.subscribe(conversations.map { it.topic })
47
+ val subscriptions = conversations.map {
48
+ val hmacKeysResult = ClientManager .client.conversations.getHmacKeys()
49
+ val hmacKeys = hmacKeysResult.hmacKeysMap
50
+ val result = hmacKeys[it.topic]?.valuesList?.map { hmacKey ->
51
+ Service .Subscription .HmacKey .newBuilder().also { sub_key ->
52
+ sub_key.key = hmacKey.hmacKey
53
+ sub_key.thirtyDayPeriodsSinceEpoch = hmacKey.thirtyDayPeriodsSinceEpoch
54
+ }.build()
55
+ }
56
+
57
+ Service .Subscription .newBuilder().also { sub ->
58
+ sub.addAllHmacKeys(result)
59
+ sub.topic = it.topic
60
+ sub.isSilent = it.version == Conversation .Version .V1
61
+ }.build()
62
+ }
63
+
64
+ PushNotificationTokenManager .xmtpPush.subscribeWithMetadata(subscriptions)
47
65
listItems.addAll(
48
66
conversations.map { conversation ->
49
67
val lastMessage = fetchMostRecentMessage(conversation)
0 commit comments