diff --git a/app/src/main/java/com/futo/polycentric/core/Models.kt b/app/src/main/java/com/futo/polycentric/core/Models.kt index 97d2793271837b53377874a79330bb2e69a60212..4cb26203db8b7ce47a0fd8682ae2ee9b528cf115 100644 --- a/app/src/main/java/com/futo/polycentric/core/Models.kt +++ b/app/src/main/java/com/futo/polycentric/core/Models.kt @@ -22,7 +22,12 @@ enum class ContentType(val value: Long) { BANNER(13), OPINION(14), STORE(15), - AUTHORITY(16) + AUTHORITY(16), + STORE_DATA(17), + PROMOTION_BANNER(18), + PROMOTION(19), + MEMBERSHIP_URLS(20), + DONATION_DESTINATIONS(21) } enum class ClaimType(val value: Long) { diff --git a/app/src/main/java/com/futo/polycentric/core/SystemState.kt b/app/src/main/java/com/futo/polycentric/core/SystemState.kt index 27353c642f747c48a6e14fab26e41e57130889dc..c9f535174f9394651eb5d2e3fe28c0ff5e2b0a67 100644 --- a/app/src/main/java/com/futo/polycentric/core/SystemState.kt +++ b/app/src/main/java/com/futo/polycentric/core/SystemState.kt @@ -2,6 +2,8 @@ package com.futo.polycentric.core import com.futo.polycentric.core.serializers.ImageBundleSerializer import kotlinx.serialization.Serializable +import kotlinx.serialization.decodeFromString +import kotlinx.serialization.json.Json import userpackage.Protocol @Serializable @@ -14,6 +16,11 @@ class SystemState( val store: String, @Serializable(with = ImageBundleSerializer::class) val avatar: Protocol.ImageBundle?, @Serializable(with = ImageBundleSerializer::class) val banner: Protocol.ImageBundle?, + var storeData: String, + var promotion: String, + var membershipUrls: List<String>, + var donationDestinations: List<String>, + @Serializable(with = ImageBundleSerializer::class) val promotionBanner: Protocol.ImageBundle?, ) { override fun toString(): String { return "(servers: $servers, processes: $processes, username: $username, description: $description, store: $store, avatar: $avatar, banner: $banner)" @@ -43,6 +50,11 @@ class SystemState( var username = "" var description = "" var store = "" + var storeData = "" + var promotion = "" + var membershipUrls: List<String> = listOf() + var donationDestinations: List<String> = listOf() + var promotionBanner: Protocol.ImageBundle? = null var avatar: Protocol.ImageBundle? = null var banner: Protocol.ImageBundle? = null proto.crdtItems.forEach { item -> @@ -62,10 +74,27 @@ class SystemState( ContentType.BANNER.value -> { banner = Protocol.ImageBundle.parseFrom(item.value) } + ContentType.STORE_DATA.value -> { + storeData = item.value.decodeToString() + } + ContentType.PROMOTION_BANNER.value -> { + promotionBanner = Protocol.ImageBundle.parseFrom(item.value) + } + ContentType.PROMOTION.value -> { + promotion = item.value.decodeToString() + } + ContentType.MEMBERSHIP_URLS.value -> { + val json = item.value.decodeToString() + membershipUrls = Json.decodeFromString(json) + } + ContentType.DONATION_DESTINATIONS.value -> { + val json = item.value.decodeToString() + donationDestinations = Json.decodeFromString(json) + } } } - return SystemState(servers.toTypedArray(), authorities.toTypedArray(), processes.toTypedArray(), username, description, store, avatar, banner) + return SystemState(servers.toTypedArray(), authorities.toTypedArray(), processes.toTypedArray(), username, description, store, avatar, banner, storeData, promotion, membershipUrls, donationDestinations, promotionBanner) } } } diff --git a/app/src/main/java/com/futo/polycentric/core/Utility.kt b/app/src/main/java/com/futo/polycentric/core/Utility.kt index 1dafe61985be0c710fa0065c031c8470eac29bff..ac6d91dc42c7670ab2aa9985a44cba3178dfddea 100644 --- a/app/src/main/java/com/futo/polycentric/core/Utility.kt +++ b/app/src/main/java/com/futo/polycentric/core/Utility.kt @@ -130,12 +130,7 @@ fun Protocol.ImageManifest.toURLInfoDataLink(system: Protocol.PublicKey, process } fun Protocol.ImageManifest.toURLInfoSystemLinkUrl(processHandle: ProcessHandle, servers: Iterable<String>): String { - val urlInfo = Protocol.URLInfo.newBuilder() - .setUrlType(4) - .setBody(toURLInfoDataLink(processHandle.system.toProto(), processHandle.processSecret.process.toProto(), servers).toByteString()) - .build() - - return "polycentric://" + urlInfo.toByteArray().toBase64Url() + return toURLInfoSystemLinkUrl(processHandle.system.toProto(), processHandle.processSecret.process.toProto(), servers) } fun Protocol.ImageManifest.toURLInfoSystemLinkUrl(system: Protocol.PublicKey, process: Protocol.Process, servers: Iterable<String>): String {