From 57cada83ba5865e2ce04ff004e9911cf90c83775 Mon Sep 17 00:00:00 2001 From: matiasbzurovski <164921079+matiasbzurovski@users.noreply.github.com> Date: Mon, 26 Aug 2024 09:53:38 +0200 Subject: [PATCH] Hiding/unhiding resource updates (#201) * renames * bump * fix iOS * Update kt extensions --------- Co-authored-by: Sergiu Puhalschi --- Cargo.lock | 2 +- Cargo.toml | 2 +- .../AssetPreference+Wrap+Functions.swift | 23 --- ...ResourceAppPreference+Wrap+Functions.swift | 23 +++ .../AssetPreferences+SampleValues.swift | 6 +- .../Profile/AssetPreference+Swiftified.swift | 13 -- .../Profile/AssetPreferencesTests.swift | 31 ---- .../Profile/ResourcePreferencesTests.swift | 31 ++++ .../sargon/extensions/AssetPreferences.kt | 53 ------- .../extensions/ResourceAppPreferences.kt | 53 +++++++ .../sargon/samples/AssetPreferencesSample.kt | 16 -- .../samples/ResourceAppPreferencesSample.kt | 16 ++ .../com/radixdlt/sargon/AppPreferencesTest.kt | 4 +- .../radixdlt/sargon/AssetPreferencesTest.kt | 54 ------- .../sargon/ResourceAppPreferencesTest.kt | 54 +++++++ .../v100/app_preferences/app_preferences.rs | 28 ++-- .../asset_preferences/asset_preferences.rs | 138 ----------------- .../asset_preferences_uniffi_fn.rs | 65 -------- .../app_preferences/asset_preferences/mod.rs | 13 -- src/profile/v100/app_preferences/mod.rs | 4 +- .../hidden_resources.rs} | 13 +- .../resource_preferences/mod.rs | 13 ++ .../resource_app_preference.rs} | 44 +++--- .../resource_identifier.rs} | 37 ++--- .../resource_preferences.rs | 146 ++++++++++++++++++ .../resource_preferences_uniffi_fn.rs | 68 ++++++++ .../resource_visibility.rs} | 12 +- src/profile/v100/profile.rs | 8 +- 28 files changed, 478 insertions(+), 492 deletions(-) delete mode 100644 apple/Sources/Sargon/Extensions/Methods/Profile/AssetPreference+Wrap+Functions.swift create mode 100644 apple/Sources/Sargon/Extensions/Methods/Profile/ResourceAppPreference+Wrap+Functions.swift delete mode 100644 apple/Sources/Sargon/Extensions/Swiftified/Profile/AssetPreference+Swiftified.swift delete mode 100644 apple/Tests/TestCases/Profile/AssetPreferencesTests.swift create mode 100644 apple/Tests/TestCases/Profile/ResourcePreferencesTests.swift delete mode 100644 jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/AssetPreferences.kt create mode 100644 jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/ResourceAppPreferences.kt delete mode 100644 jvm/sargon-android/src/main/java/com/radixdlt/sargon/samples/AssetPreferencesSample.kt create mode 100644 jvm/sargon-android/src/main/java/com/radixdlt/sargon/samples/ResourceAppPreferencesSample.kt delete mode 100644 jvm/sargon-android/src/test/java/com/radixdlt/sargon/AssetPreferencesTest.kt create mode 100644 jvm/sargon-android/src/test/java/com/radixdlt/sargon/ResourceAppPreferencesTest.kt delete mode 100644 src/profile/v100/app_preferences/asset_preferences/asset_preferences.rs delete mode 100644 src/profile/v100/app_preferences/asset_preferences/asset_preferences_uniffi_fn.rs delete mode 100644 src/profile/v100/app_preferences/asset_preferences/mod.rs rename src/profile/v100/app_preferences/{asset_preferences/asset_addresses.rs => resource_preferences/hidden_resources.rs} (57%) create mode 100644 src/profile/v100/app_preferences/resource_preferences/mod.rs rename src/profile/v100/app_preferences/{asset_preferences/asset_preference.rs => resource_preferences/resource_app_preference.rs} (55%) rename src/profile/v100/app_preferences/{asset_preferences/asset_address.rs => resource_preferences/resource_identifier.rs} (69%) create mode 100644 src/profile/v100/app_preferences/resource_preferences/resource_preferences.rs create mode 100644 src/profile/v100/app_preferences/resource_preferences/resource_preferences_uniffi_fn.rs rename src/profile/v100/app_preferences/{asset_preferences/asset_visibility.rs => resource_preferences/resource_visibility.rs} (79%) diff --git a/Cargo.lock b/Cargo.lock index b0ea0dcf2..b657c2641 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2585,7 +2585,7 @@ dependencies = [ [[package]] name = "sargon" -version = "1.1.6" +version = "1.1.7" dependencies = [ "actix-rt", "aes-gcm", diff --git a/Cargo.toml b/Cargo.toml index 9cc269584..b577bbe9f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sargon" -version = "1.1.6" +version = "1.1.7" edition = "2021" build = "build.rs" diff --git a/apple/Sources/Sargon/Extensions/Methods/Profile/AssetPreference+Wrap+Functions.swift b/apple/Sources/Sargon/Extensions/Methods/Profile/AssetPreference+Wrap+Functions.swift deleted file mode 100644 index e8ff34135..000000000 --- a/apple/Sources/Sargon/Extensions/Methods/Profile/AssetPreference+Wrap+Functions.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// File.swift -// -// -// Created by Matias Bzurovski on 13/8/24. -// - -import Foundation -import SargonUniFFI - -extension [AssetPreference] { - public var hiddenAssets: [AssetAddress] { - assetPreferencesGetHiddenAssets(assetPreferences: self) - } - - public mutating func hideAsset(asset: AssetAddress) { - self = assetPreferencesHideAsset(assetPreferences: self, asset: asset) - } - - public mutating func unhideAsset(asset: AssetAddress) { - self = assetPreferencesUnhideAsset(assetPreferences: self, asset: asset) - } -} diff --git a/apple/Sources/Sargon/Extensions/Methods/Profile/ResourceAppPreference+Wrap+Functions.swift b/apple/Sources/Sargon/Extensions/Methods/Profile/ResourceAppPreference+Wrap+Functions.swift new file mode 100644 index 000000000..b22ad721b --- /dev/null +++ b/apple/Sources/Sargon/Extensions/Methods/Profile/ResourceAppPreference+Wrap+Functions.swift @@ -0,0 +1,23 @@ +// +// File.swift +// +// +// Created by Matias Bzurovski on 13/8/24. +// + +import Foundation +import SargonUniFFI + +extension [ResourceAppPreference] { + public var hiddenResources: [ResourceIdentifier] { + resourcePreferencesGetHiddenResources(resourcePreferences: self) + } + + public mutating func hideResource(resource: ResourceIdentifier) { + self = resourcePreferencesHideResource(resourcePreferences: self, resource: resource) + } + + public mutating func unhideResource(resource: ResourceIdentifier) { + self = resourcePreferencesUnhideResource(resourcePreferences: self, resource: resource) + } +} diff --git a/apple/Sources/Sargon/Extensions/SampleValues/Profile/AssetPreferences+SampleValues.swift b/apple/Sources/Sargon/Extensions/SampleValues/Profile/AssetPreferences+SampleValues.swift index 779aedcee..a629ae2b6 100644 --- a/apple/Sources/Sargon/Extensions/SampleValues/Profile/AssetPreferences+SampleValues.swift +++ b/apple/Sources/Sargon/Extensions/SampleValues/Profile/AssetPreferences+SampleValues.swift @@ -9,8 +9,8 @@ import Foundation import SargonUniFFI #if DEBUG -extension [AssetPreference] { - public static let sample: Self = newAssetPreferencesSample() - public static let sampleOther: Self = newAssetPreferencesSampleOther() +extension [ResourceAppPreference] { + public static let sample: Self = newResourcePreferencesSample() + public static let sampleOther: Self = newResourcePreferencesSampleOther() } #endif // DEBUG diff --git a/apple/Sources/Sargon/Extensions/Swiftified/Profile/AssetPreference+Swiftified.swift b/apple/Sources/Sargon/Extensions/Swiftified/Profile/AssetPreference+Swiftified.swift deleted file mode 100644 index 37cf92f3d..000000000 --- a/apple/Sources/Sargon/Extensions/Swiftified/Profile/AssetPreference+Swiftified.swift +++ /dev/null @@ -1,13 +0,0 @@ -// -// File.swift -// -// -// Created by Matias Bzurovski on 13/8/24. -// - -import Foundation -import SargonUniFFI - -public typealias AssetPreferences = [AssetPreference] - -//extension AssetPreferences: SargonModel {} diff --git a/apple/Tests/TestCases/Profile/AssetPreferencesTests.swift b/apple/Tests/TestCases/Profile/AssetPreferencesTests.swift deleted file mode 100644 index e1f273677..000000000 --- a/apple/Tests/TestCases/Profile/AssetPreferencesTests.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// File.swift -// -// -// Created by Matias Bzurovski on 13/8/24. -// - -import CustomDump -import Foundation -import Sargon -import SargonUniFFI -import XCTest - -final class AssetPreferencesTests: TestCase { - func test_hidden_resources() { - var sut = AssetPreferences() - XCTAssertTrue(sut.hiddenAssets.isEmpty) - - // Hide assets - sut.hideAsset(asset: .fungible(.sample)) - sut.hideAsset(asset: .nonFungible(.sample)) - sut.hideAsset(asset: .fungible(.sampleOther)) - - XCTAssertEqual(sut.hiddenAssets, [.fungible(.sample), .nonFungible(.sample), .fungible(.sampleOther)]) - - // Unhide assets - sut.unhideAsset(asset: .fungible(.sampleOther)) - sut.unhideAsset(asset: .nonFungible(.sample)) - XCTAssertEqual(sut.hiddenAssets, [.fungible(.sample)]) - } -} diff --git a/apple/Tests/TestCases/Profile/ResourcePreferencesTests.swift b/apple/Tests/TestCases/Profile/ResourcePreferencesTests.swift new file mode 100644 index 000000000..486c956a6 --- /dev/null +++ b/apple/Tests/TestCases/Profile/ResourcePreferencesTests.swift @@ -0,0 +1,31 @@ +// +// File.swift +// +// +// Created by Matias Bzurovski on 13/8/24. +// + +import CustomDump +import Foundation +import Sargon +import SargonUniFFI +import XCTest + +final class AssetPreferencesTests: TestCase { + func test_hidden_resources() { + var sut: [ResourceAppPreference] = [] + XCTAssertTrue(sut.hiddenResources.isEmpty) + + // Hide assets + sut.hideResource(resource: .fungible(.sample)) + sut.hideResource(resource: .nonFungible(.sample)) + sut.hideResource(resource: .fungible(.sampleOther)) + + XCTAssertEqual(sut.hiddenResources, [.fungible(.sample), .nonFungible(.sample), .fungible(.sampleOther)]) + + // Unhide assets + sut.unhideResource(resource: .fungible(.sampleOther)) + sut.unhideResource(resource: .nonFungible(.sample)) + XCTAssertEqual(sut.hiddenResources, [.fungible(.sample)]) + } +} diff --git a/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/AssetPreferences.kt b/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/AssetPreferences.kt deleted file mode 100644 index 0b26db6c2..000000000 --- a/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/AssetPreferences.kt +++ /dev/null @@ -1,53 +0,0 @@ -package com.radixdlt.sargon.extensions - -import com.radixdlt.sargon.AssetAddress -import com.radixdlt.sargon.AssetPreference -import com.radixdlt.sargon.annotation.KoverIgnore -import com.radixdlt.sargon.assetPreferencesGetHiddenAssets -import com.radixdlt.sargon.assetPreferencesHideAsset -import com.radixdlt.sargon.assetPreferencesUnhideAsset - -class AssetPreferences private constructor( - private val array: IdentifiedArray -) : IdentifiedArray by array { - - constructor(assetPreferences: List) : this( - IdentifiedArrayImpl( - elements = assetPreferences, - identifier = { it.assetAddress } - ) - ) - - constructor(vararg assetPreference: AssetPreference) : this(assetPreferences = assetPreference.asList()) - - @KoverIgnore // False positive in javaClass check - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (javaClass != other?.javaClass) return false - - other as AssetPreferences - - return array == other.array - } - - override fun hashCode(): Int { - return array.hashCode() - } - - @KoverIgnore - override fun toString(): String { - return "AssetPreferences(array=$array)" - } - - companion object - -} - -fun List.asIdentifiable() = AssetPreferences(assetPreferences = this) - -val AssetPreferences.hiddenAssets - get() = assetPreferencesGetHiddenAssets(asList()) - -fun AssetPreferences.hideAsset(assetAddress: AssetAddress) = assetPreferencesHideAsset(asList(), assetAddress).asIdentifiable() - -fun AssetPreferences.unhideAsset(assetAddress: AssetAddress) = assetPreferencesUnhideAsset(asList(), assetAddress).asIdentifiable() \ No newline at end of file diff --git a/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/ResourceAppPreferences.kt b/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/ResourceAppPreferences.kt new file mode 100644 index 000000000..b0b5bb8c0 --- /dev/null +++ b/jvm/sargon-android/src/main/java/com/radixdlt/sargon/extensions/ResourceAppPreferences.kt @@ -0,0 +1,53 @@ +package com.radixdlt.sargon.extensions + +import com.radixdlt.sargon.ResourceAppPreference +import com.radixdlt.sargon.ResourceIdentifier +import com.radixdlt.sargon.annotation.KoverIgnore +import com.radixdlt.sargon.resourcePreferencesGetHiddenResources +import com.radixdlt.sargon.resourcePreferencesHideResource +import com.radixdlt.sargon.resourcePreferencesUnhideResource + +class ResourceAppPreferences private constructor( + private val array: IdentifiedArray +) : IdentifiedArray by array { + + constructor(resourceAppPreferences: List) : this( + IdentifiedArrayImpl( + elements = resourceAppPreferences, + identifier = { it.resource } + ) + ) + + constructor(vararg resourceAppPreference: ResourceAppPreference) : this(resourceAppPreferences = resourceAppPreference.asList()) + + @KoverIgnore // False positive in javaClass check + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as ResourceAppPreferences + + return array == other.array + } + + override fun hashCode(): Int { + return array.hashCode() + } + + @KoverIgnore + override fun toString(): String { + return "ResourceAppPreferences(array=$array)" + } + + companion object + +} + +fun List.asIdentifiable() = ResourceAppPreferences(resourceAppPreferences = this) + +val ResourceAppPreferences.hiddenResources + get() = resourcePreferencesGetHiddenResources(asList()) + +fun ResourceAppPreferences.hideResource(resourceIdentifier: ResourceIdentifier) = resourcePreferencesHideResource(asList(), resourceIdentifier).asIdentifiable() + +fun ResourceAppPreferences.unhideResource(resourceIdentifier: ResourceIdentifier) = resourcePreferencesUnhideResource(asList(), resourceIdentifier).asIdentifiable() \ No newline at end of file diff --git a/jvm/sargon-android/src/main/java/com/radixdlt/sargon/samples/AssetPreferencesSample.kt b/jvm/sargon-android/src/main/java/com/radixdlt/sargon/samples/AssetPreferencesSample.kt deleted file mode 100644 index c60724b72..000000000 --- a/jvm/sargon-android/src/main/java/com/radixdlt/sargon/samples/AssetPreferencesSample.kt +++ /dev/null @@ -1,16 +0,0 @@ -package com.radixdlt.sargon.samples - -import com.radixdlt.sargon.annotation.UsesSampleValues -import com.radixdlt.sargon.extensions.AssetPreferences -import com.radixdlt.sargon.extensions.asIdentifiable -import com.radixdlt.sargon.newAssetPreferencesSample -import com.radixdlt.sargon.newAssetPreferencesSampleOther - -@UsesSampleValues -val AssetPreferences.Companion.sample: Sample - get() = object : Sample { - - override fun invoke(): AssetPreferences = newAssetPreferencesSample().asIdentifiable() - - override fun other(): AssetPreferences = newAssetPreferencesSampleOther().asIdentifiable() - } \ No newline at end of file diff --git a/jvm/sargon-android/src/main/java/com/radixdlt/sargon/samples/ResourceAppPreferencesSample.kt b/jvm/sargon-android/src/main/java/com/radixdlt/sargon/samples/ResourceAppPreferencesSample.kt new file mode 100644 index 000000000..1eecf4c8d --- /dev/null +++ b/jvm/sargon-android/src/main/java/com/radixdlt/sargon/samples/ResourceAppPreferencesSample.kt @@ -0,0 +1,16 @@ +package com.radixdlt.sargon.samples + +import com.radixdlt.sargon.annotation.UsesSampleValues +import com.radixdlt.sargon.extensions.ResourceAppPreferences +import com.radixdlt.sargon.extensions.asIdentifiable +import com.radixdlt.sargon.newResourcePreferencesSample +import com.radixdlt.sargon.newResourcePreferencesSampleOther + +@UsesSampleValues +val ResourceAppPreferences.Companion.sample: Sample + get() = object : Sample { + + override fun invoke(): ResourceAppPreferences = newResourcePreferencesSample().asIdentifiable() + + override fun other(): ResourceAppPreferences = newResourcePreferencesSampleOther().asIdentifiable() + } \ No newline at end of file diff --git a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/AppPreferencesTest.kt b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/AppPreferencesTest.kt index 437fdf0ad..42633bd33 100644 --- a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/AppPreferencesTest.kt +++ b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/AppPreferencesTest.kt @@ -1,6 +1,6 @@ package com.radixdlt.sargon -import com.radixdlt.sargon.extensions.AssetPreferences +import com.radixdlt.sargon.extensions.ResourceAppPreferences import com.radixdlt.sargon.extensions.default import com.radixdlt.sargon.extensions.toDecimal192 import com.radixdlt.sargon.samples.Sample @@ -29,7 +29,7 @@ class AppPreferencesTest : SampleTestable { securityStructuresOfFactorSourceIds = emptyList() ), transaction = TransactionPreferences(defaultDepositGuarantee = 0.99.toDecimal192()), - assets = AssetPreferences().asList() + resources = ResourceAppPreferences().asList() ), AppPreferences.default() ) diff --git a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/AssetPreferencesTest.kt b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/AssetPreferencesTest.kt deleted file mode 100644 index 0c3911c41..000000000 --- a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/AssetPreferencesTest.kt +++ /dev/null @@ -1,54 +0,0 @@ -package com.radixdlt.sargon - -import com.radixdlt.sargon.extensions.AssetPreferences -import com.radixdlt.sargon.extensions.hiddenAssets -import com.radixdlt.sargon.extensions.hideAsset -import com.radixdlt.sargon.extensions.unhideAsset -import com.radixdlt.sargon.samples.Sample -import com.radixdlt.sargon.samples.sample -import com.radixdlt.sargon.samples.sampleMainnet -import com.radixdlt.sargon.samples.sampleStokenet -import org.junit.jupiter.api.Assertions.assertEquals -import org.junit.jupiter.api.Assertions.assertTrue -import org.junit.jupiter.api.Test - -class AssetPreferencesTest : SampleTestable { - - override val samples: List> - get() = listOf(AssetPreferences.sample) - - @Test - fun testHiddenAssets() { - var sut = AssetPreferences() - - assertTrue(sut.hiddenAssets.isEmpty()) - - // Hide assets - sut = sut.hideAsset(AssetAddress.Fungible(ResourceAddress.sampleMainnet())) - .hideAsset(AssetAddress.Fungible(ResourceAddress.sampleStokenet())) - .hideAsset(AssetAddress.NonFungible(NonFungibleGlobalId.sample())) - .hideAsset(AssetAddress.PoolUnit(PoolAddress.sampleMainnet())) - - assertEquals( - listOf( - AssetAddress.Fungible(ResourceAddress.sampleMainnet()), - AssetAddress.Fungible(ResourceAddress.sampleStokenet()), - AssetAddress.NonFungible(NonFungibleGlobalId.sample()), - AssetAddress.PoolUnit(PoolAddress.sampleMainnet()) - ), - sut.hiddenAssets - ) - - // Unhide assets - sut = sut.unhideAsset(AssetAddress.Fungible(ResourceAddress.sampleStokenet())) - .unhideAsset(AssetAddress.NonFungible(NonFungibleGlobalId.sample())) - - assertEquals( - listOf( - AssetAddress.Fungible(ResourceAddress.sampleMainnet()), - AssetAddress.PoolUnit(PoolAddress.sampleMainnet()) - ), - sut.hiddenAssets - ) - } -} \ No newline at end of file diff --git a/jvm/sargon-android/src/test/java/com/radixdlt/sargon/ResourceAppPreferencesTest.kt b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/ResourceAppPreferencesTest.kt new file mode 100644 index 000000000..dcd06e315 --- /dev/null +++ b/jvm/sargon-android/src/test/java/com/radixdlt/sargon/ResourceAppPreferencesTest.kt @@ -0,0 +1,54 @@ +package com.radixdlt.sargon + +import com.radixdlt.sargon.extensions.ResourceAppPreferences +import com.radixdlt.sargon.extensions.hiddenResources +import com.radixdlt.sargon.extensions.hideResource +import com.radixdlt.sargon.extensions.unhideResource +import com.radixdlt.sargon.samples.Sample +import com.radixdlt.sargon.samples.sample +import com.radixdlt.sargon.samples.sampleMainnet +import com.radixdlt.sargon.samples.sampleStokenet +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.Test + +class ResourceAppPreferencesTest : SampleTestable { + + override val samples: List> + get() = listOf(ResourceAppPreferences.sample) + + @Test + fun testHiddenAssets() { + var sut = ResourceAppPreferences() + + assertTrue(sut.hiddenResources.isEmpty()) + + // Hide assets + sut = sut.hideResource(ResourceIdentifier.Fungible(ResourceAddress.sampleMainnet())) + .hideResource(ResourceIdentifier.Fungible(ResourceAddress.sampleStokenet())) + .hideResource(ResourceIdentifier.NonFungible(ResourceAddress.sampleMainnet())) + .hideResource(ResourceIdentifier.PoolUnit(PoolAddress.sampleMainnet())) + + assertEquals( + listOf( + ResourceIdentifier.Fungible(ResourceAddress.sampleMainnet()), + ResourceIdentifier.Fungible(ResourceAddress.sampleStokenet()), + ResourceIdentifier.NonFungible(ResourceAddress.sampleMainnet()), + ResourceIdentifier.PoolUnit(PoolAddress.sampleMainnet()) + ), + sut.hiddenResources + ) + + // Unhide assets + sut = sut.unhideResource(ResourceIdentifier.Fungible(ResourceAddress.sampleStokenet())) + .unhideResource(ResourceIdentifier.NonFungible(ResourceAddress.sampleMainnet())) + + assertEquals( + listOf( + ResourceIdentifier.Fungible(ResourceAddress.sampleMainnet()), + ResourceIdentifier.PoolUnit(PoolAddress.sampleMainnet()) + ), + sut.hiddenResources + ) + } +} \ No newline at end of file diff --git a/src/profile/v100/app_preferences/app_preferences.rs b/src/profile/v100/app_preferences/app_preferences.rs index 277e6bdc7..d159aa645 100644 --- a/src/profile/v100/app_preferences/app_preferences.rs +++ b/src/profile/v100/app_preferences/app_preferences.rs @@ -32,9 +32,9 @@ pub struct AppPreferences { /// Default config related to making of transactions pub transaction: TransactionPreferences, - /// Configuration related to assets + /// Configuration related to resources #[serde(default)] - pub assets: AssetPreferences, + pub resources: ResourcePreferences, } impl AppPreferences { @@ -45,13 +45,13 @@ impl AppPreferences { gateways: {} security: {} transaction: {} - assets: {:?} + resources: {:?} "#, self.display, self.gateways, self.security, self.transaction, - self.assets + self.resources ) } } @@ -62,14 +62,14 @@ impl AppPreferences { gateways: SavedGateways, security: Security, transaction: TransactionPreferences, - assets: AssetPreferences, + resources: ResourcePreferences, ) -> Self { Self { display, gateways, security, transaction, - assets, + resources, } } } @@ -82,7 +82,7 @@ impl HasSampleValues for AppPreferences { SavedGateways::sample(), Security::sample(), TransactionPreferences::sample(), - AssetPreferences::sample(), + ResourcePreferences::sample(), ) } @@ -93,7 +93,7 @@ impl HasSampleValues for AppPreferences { SavedGateways::sample_other(), Security::sample_other(), TransactionPreferences::sample_other(), - AssetPreferences::sample_other(), + ResourcePreferences::sample_other(), ) } } @@ -143,8 +143,8 @@ mod tests { } #[test] - fn get_assets() { - assert_eq!(SUT::sample().assets, AssetPreferences::sample()) + fn get_resources() { + assert_eq!(SUT::sample().resources, ResourcePreferences::sample()) } #[test] @@ -204,18 +204,18 @@ mod tests { "transaction": { "defaultDepositGuarantee": "0.975" }, - "assets": [ + "resources": [ { - "asset_address": { + "resource": { "kind": "fungible", "value": "resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd" }, "visibility": "hidden" }, { - "asset_address": { + "resource": { "kind": "nonFungible", - "value": "resource_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtejc9wlxa:" + "value": "resource_rdx1t4dy69k6s0gv040xa64cyadyefwtett62ng6xfdnljyydnml7t6g3j" }, "visibility": "visible" } diff --git a/src/profile/v100/app_preferences/asset_preferences/asset_preferences.rs b/src/profile/v100/app_preferences/asset_preferences/asset_preferences.rs deleted file mode 100644 index e9849864e..000000000 --- a/src/profile/v100/app_preferences/asset_preferences/asset_preferences.rs +++ /dev/null @@ -1,138 +0,0 @@ -use crate::prelude::*; -use core::hash::Hash; -use std::{hash::Hasher, ops::Index}; - -decl_identified_vec_of!( - /// User off-ledger preferences regarding assets. - AssetPreference -); - -impl HasSampleValues for AssetPreferences { - fn sample() -> Self { - Self::from_iter([ - AssetPreference::sample(), - AssetPreference::sample_other(), - ]) - } - - fn sample_other() -> Self { - Self::from_iter([AssetPreference::sample_other()]) - } -} - -impl AssetPreferences { - pub fn get_hidden_assets(&self) -> AssetAddresses { - self.iter() - .filter(|x| x.visibility == AssetVisibility::Hidden) - .map(|x| x.asset_address) - .collect() - } - - pub fn hide_asset(&mut self, asset: AssetAddress) { - if !self - .update_with(asset.id(), |x| x.visibility = AssetVisibility::Hidden) - { - let item = AssetPreference::new(asset, AssetVisibility::Hidden); - self.append(item); - } - } - - pub fn unhide_asset(&mut self, asset: AssetAddress) { - if !self.update_with(asset.id(), |x| { - x.visibility = AssetVisibility::Visible - }) { - let item = AssetPreference::new(asset, AssetVisibility::Visible); - self.append(item); - } - } -} - -#[cfg(test)] -mod tests { - use super::*; - - #[allow(clippy::upper_case_acronyms)] - type SUT = AssetPreferences; - - #[test] - fn equality() { - assert_eq!(SUT::sample(), SUT::sample()); - assert_eq!(SUT::sample_other(), SUT::sample_other()); - } - - #[test] - fn inequality() { - assert_ne!(SUT::sample(), SUT::sample_other()); - } - - #[test] - fn hidden_resources() { - use crate::AssetAddress::*; - let mut sut = SUT::new(); - - // Test with no assets hidden - let mut result = sut.get_hidden_assets(); - assert!(result.is_empty()); - - // Test unhiding an asset that wasn't present - let pool_unit = AssetAddress::PoolUnit(PoolAddress::sample()); - sut.unhide_asset(pool_unit.clone()); - result = sut.get_hidden_assets(); - assert!(result.is_empty()); - - // Test with some assets hidden - let fungible_one = - AssetAddress::Fungible(ResourceAddress::sample_other()); - let fungible_two = AssetAddress::Fungible(ResourceAddress::sample()); - sut.hide_asset(fungible_one.clone()); - sut.hide_asset(fungible_two.clone()); - - result = sut.get_hidden_assets(); - assert_eq!( - AssetAddresses::from_iter([ - fungible_one.clone(), - fungible_two.clone() - ]), - result - ); - - // Test hiding some non-fungible and pool unit, and unhiding one of the fungibles - let non_fungible = - AssetAddress::NonFungible(NonFungibleGlobalId::sample()); - sut.unhide_asset(fungible_one); - sut.hide_asset(non_fungible.clone()); - sut.hide_asset(pool_unit.clone()); - - result = sut.get_hidden_assets(); - assert_eq!( - AssetAddresses::from_iter([fungible_two, non_fungible, pool_unit]), - result - ); - } - - #[test] - fn json_roundtrip() { - let sut = SUT::sample(); - assert_eq_after_json_roundtrip( - &sut, - r#" - [ - { - "asset_address": { - "kind": "fungible", - "value": "resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd" - }, - "visibility": "hidden" - }, - { - "asset_address": { - "kind": "nonFungible", - "value": "resource_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtejc9wlxa:" - }, - "visibility": "visible" - } - ] - "#, - ); - } -} diff --git a/src/profile/v100/app_preferences/asset_preferences/asset_preferences_uniffi_fn.rs b/src/profile/v100/app_preferences/asset_preferences/asset_preferences_uniffi_fn.rs deleted file mode 100644 index 9cc9cd415..000000000 --- a/src/profile/v100/app_preferences/asset_preferences/asset_preferences_uniffi_fn.rs +++ /dev/null @@ -1,65 +0,0 @@ -use crate::prelude::*; - -#[uniffi::export] -pub fn asset_preferences_get_hidden_assets( - asset_preferences: AssetPreferences, -) -> AssetAddresses { - asset_preferences.get_hidden_assets() -} - -#[uniffi::export] -pub fn asset_preferences_hide_asset( - asset_preferences: AssetPreferences, - asset: AssetAddress, -) -> AssetPreferences { - let mut asset_preferences = asset_preferences.clone(); - asset_preferences.hide_asset(asset); - asset_preferences -} - -#[uniffi::export] -pub fn asset_preferences_unhide_asset( - asset_preferences: AssetPreferences, - asset: AssetAddress, -) -> AssetPreferences { - let mut asset_preferences = asset_preferences.clone(); - asset_preferences.unhide_asset(asset); - asset_preferences -} - -#[cfg(test)] -mod tests { - - use std::clone; - - use super::*; - - #[allow(clippy::upper_case_acronyms)] - type SUT = AssetPreferences; - - #[test] - fn equality_samples() { - assert_eq!(SUT::sample(), new_asset_preferences_sample()); - assert_eq!(SUT::sample_other(), new_asset_preferences_sample_other()); - } - - #[test] - fn hidden_assets() { - // Test with empty AssetPreferences - let mut sut = SUT::new(); - let mut result = asset_preferences_get_hidden_assets(sut.clone()); - assert!(result.is_empty()); - - // Test after hiding one asset - let asset_one = AssetAddress::sample(); - sut = asset_preferences_hide_asset(sut, asset_one.clone()); - - result = asset_preferences_get_hidden_assets(sut.clone()); - assert_eq!(AssetAddresses::from_iter([asset_one.clone()]), result); - - // Test after unhiding the fungible asset - sut = asset_preferences_unhide_asset(sut, asset_one.clone()); - result = asset_preferences_get_hidden_assets(sut); - assert!(result.is_empty()); - } -} diff --git a/src/profile/v100/app_preferences/asset_preferences/mod.rs b/src/profile/v100/app_preferences/asset_preferences/mod.rs deleted file mode 100644 index 9400a9d5b..000000000 --- a/src/profile/v100/app_preferences/asset_preferences/mod.rs +++ /dev/null @@ -1,13 +0,0 @@ -mod asset_address; -mod asset_addresses; -mod asset_preference; -mod asset_preferences; -mod asset_preferences_uniffi_fn; -mod asset_visibility; - -pub use asset_address::*; -pub use asset_addresses::*; -pub use asset_preference::*; -pub use asset_preferences::*; -pub use asset_preferences_uniffi_fn::*; -pub use asset_visibility::*; diff --git a/src/profile/v100/app_preferences/mod.rs b/src/profile/v100/app_preferences/mod.rs index fcc64befb..f2a3762f4 100644 --- a/src/profile/v100/app_preferences/mod.rs +++ b/src/profile/v100/app_preferences/mod.rs @@ -1,15 +1,15 @@ mod app_display_settings; mod app_preferences; mod app_preferences_uniffi_fn; -mod asset_preferences; mod gateways; +mod resource_preferences; mod security; mod transaction_preferences; pub use app_display_settings::*; pub use app_preferences::*; pub use app_preferences_uniffi_fn::*; -pub use asset_preferences::*; pub use gateways::*; +pub use resource_preferences::*; pub use security::*; pub use transaction_preferences::*; diff --git a/src/profile/v100/app_preferences/asset_preferences/asset_addresses.rs b/src/profile/v100/app_preferences/resource_preferences/hidden_resources.rs similarity index 57% rename from src/profile/v100/app_preferences/asset_preferences/asset_addresses.rs rename to src/profile/v100/app_preferences/resource_preferences/hidden_resources.rs index 832c5edc5..78e1442e2 100644 --- a/src/profile/v100/app_preferences/asset_preferences/asset_addresses.rs +++ b/src/profile/v100/app_preferences/resource_preferences/hidden_resources.rs @@ -1,14 +1,17 @@ use crate::prelude::*; -decl_identified_vec_of!(AssetAddresses, AssetAddress); +decl_identified_vec_of!(HiddenResources, ResourceIdentifier); -impl HasSampleValues for AssetAddresses { +impl HasSampleValues for HiddenResources { fn sample() -> Self { - Self::from_iter([AssetAddress::sample(), AssetAddress::sample_other()]) + Self::from_iter([ + ResourceIdentifier::sample(), + ResourceIdentifier::sample_other(), + ]) } fn sample_other() -> Self { - Self::from_iter([AssetAddress::sample_other()]) + Self::from_iter([ResourceIdentifier::sample_other()]) } } @@ -17,7 +20,7 @@ mod tests { use crate::prelude::*; #[allow(clippy::upper_case_acronyms)] - type SUT = AssetAddresses; + type SUT = HiddenResources; #[test] fn equality() { diff --git a/src/profile/v100/app_preferences/resource_preferences/mod.rs b/src/profile/v100/app_preferences/resource_preferences/mod.rs new file mode 100644 index 000000000..580d23a5f --- /dev/null +++ b/src/profile/v100/app_preferences/resource_preferences/mod.rs @@ -0,0 +1,13 @@ +mod hidden_resources; +mod resource_app_preference; +mod resource_identifier; +mod resource_preferences; +mod resource_preferences_uniffi_fn; +mod resource_visibility; + +pub use hidden_resources::*; +pub use resource_app_preference::*; +pub use resource_identifier::*; +pub use resource_preferences::*; +pub use resource_preferences_uniffi_fn::*; +pub use resource_visibility::*; diff --git a/src/profile/v100/app_preferences/asset_preferences/asset_preference.rs b/src/profile/v100/app_preferences/resource_preferences/resource_app_preference.rs similarity index 55% rename from src/profile/v100/app_preferences/asset_preferences/asset_preference.rs rename to src/profile/v100/app_preferences/resource_preferences/resource_app_preference.rs index 4e3a9a19b..fca9df34f 100644 --- a/src/profile/v100/app_preferences/asset_preferences/asset_preference.rs +++ b/src/profile/v100/app_preferences/resource_preferences/resource_app_preference.rs @@ -1,43 +1,45 @@ use crate::prelude::*; -/// A preference the user has configured off-ledger for a given asset. -/// Allows users, for example, to hide a given asset on their accounts. +/// A preference the user has configured off-ledger for a given resource. +/// Allows users, for example, to hide a given resource on their accounts. +/// +/// Named like this to differ from RET's `ResourcePreference`. #[derive( Deserialize, Serialize, Clone, PartialEq, Eq, Debug, Hash, uniffi::Record, )] -pub struct AssetPreference { - pub asset_address: AssetAddress, - pub visibility: AssetVisibility, +pub struct ResourceAppPreference { + pub resource: ResourceIdentifier, + pub visibility: ResourceVisibility, } -impl AssetPreference { +impl ResourceAppPreference { pub fn new( - asset_address: impl Into, - visibility: AssetVisibility, + resource: impl Into, + visibility: ResourceVisibility, ) -> Self { Self { - asset_address: asset_address.into(), + resource: resource.into(), visibility, } } } -impl Identifiable for AssetPreference { - type ID = AssetAddress; +impl Identifiable for ResourceAppPreference { + type ID = ResourceIdentifier; fn id(&self) -> Self::ID { - self.asset_address.clone() + self.resource.clone() } } -impl HasSampleValues for AssetPreference { +impl HasSampleValues for ResourceAppPreference { fn sample() -> Self { - Self::new(ResourceAddress::sample(), AssetVisibility::sample()) + Self::new(ResourceIdentifier::sample(), ResourceVisibility::sample()) } fn sample_other() -> Self { Self::new( - NonFungibleGlobalId::sample(), - AssetVisibility::sample_other(), + ResourceIdentifier::sample_other(), + ResourceVisibility::sample_other(), ) } } @@ -47,7 +49,7 @@ mod tests { use super::*; #[allow(clippy::upper_case_acronyms)] - type SUT = AssetPreference; + type SUT = ResourceAppPreference; #[test] fn equality() { @@ -63,10 +65,10 @@ mod tests { #[test] fn visibility() { let mut sut = SUT::sample(); - assert_eq!(AssetVisibility::Hidden, sut.visibility); + assert_eq!(ResourceVisibility::Hidden, sut.visibility); - sut.visibility = AssetVisibility::Visible; - assert_eq!(AssetVisibility::Visible, sut.visibility); + sut.visibility = ResourceVisibility::Visible; + assert_eq!(ResourceVisibility::Visible, sut.visibility); } #[test] @@ -76,7 +78,7 @@ mod tests { &sut, r#" { - "asset_address": { + "resource": { "kind": "fungible", "value": "resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd" }, diff --git a/src/profile/v100/app_preferences/asset_preferences/asset_address.rs b/src/profile/v100/app_preferences/resource_preferences/resource_identifier.rs similarity index 69% rename from src/profile/v100/app_preferences/asset_preferences/asset_address.rs rename to src/profile/v100/app_preferences/resource_preferences/resource_identifier.rs index b923c2d89..846049564 100644 --- a/src/profile/v100/app_preferences/asset_preferences/asset_address.rs +++ b/src/profile/v100/app_preferences/resource_preferences/resource_identifier.rs @@ -1,6 +1,6 @@ use crate::prelude::*; -/// An enum representation of an Asset for which the user can set up its preferences. +/// An enum representation of an resource for which the user can set up its preferences. #[derive( Clone, Debug, @@ -16,38 +16,26 @@ use crate::prelude::*; )] #[serde(tag = "kind", content = "value")] #[serde(rename_all = "camelCase")] -pub enum AssetAddress { +pub enum ResourceIdentifier { Fungible(ResourceAddress), - NonFungible(NonFungibleGlobalId), + NonFungible(ResourceAddress), PoolUnit(PoolAddress), } -impl Identifiable for AssetAddress { +impl Identifiable for ResourceIdentifier { type ID = Self; fn id(&self) -> Self::ID { self.clone() } } -impl From for AssetAddress { - fn from(value: ResourceAddress) -> Self { - Self::Fungible(value) - } -} - -impl From for AssetAddress { - fn from(value: NonFungibleGlobalId) -> Self { - Self::NonFungible(value) - } -} - -impl From for AssetAddress { +impl From for ResourceIdentifier { fn from(value: PoolAddress) -> Self { Self::PoolUnit(value) } } -impl HasSampleValues for AssetAddress { +impl HasSampleValues for ResourceIdentifier { fn sample() -> Self { Self::sample_fungible() } @@ -58,13 +46,13 @@ impl HasSampleValues for AssetAddress { } #[allow(unused)] -impl AssetAddress { +impl ResourceIdentifier { pub(crate) fn sample_fungible() -> Self { Self::Fungible(ResourceAddress::sample()) } pub(crate) fn sample_non_fungible() -> Self { - Self::NonFungible(NonFungibleGlobalId::sample_other()) + Self::NonFungible(ResourceAddress::sample_other()) } pub(crate) fn sample_pool_unit() -> Self { @@ -77,7 +65,7 @@ mod tests { use super::*; #[allow(clippy::upper_case_acronyms)] - type SUT = AssetAddress; + type SUT = ResourceIdentifier; #[test] fn equality() { @@ -92,11 +80,6 @@ mod tests { #[test] fn from() { - assert_eq!(SUT::sample_fungible(), ResourceAddress::sample().into()); - assert_eq!( - SUT::sample_non_fungible(), - NonFungibleGlobalId::sample_other().into() - ); assert_eq!(SUT::sample_pool_unit(), PoolAddress::sample().into()) } @@ -117,7 +100,7 @@ mod tests { r#" { "kind": "nonFungible", - "value": "resource_rdx1n2ekdd2m0jsxjt9wasmu3p49twy2yfalpaa6wf08md46sk8dfmldnd:" + "value": "resource_rdx1t4dy69k6s0gv040xa64cyadyefwtett62ng6xfdnljyydnml7t6g3j" } "#, ); diff --git a/src/profile/v100/app_preferences/resource_preferences/resource_preferences.rs b/src/profile/v100/app_preferences/resource_preferences/resource_preferences.rs new file mode 100644 index 000000000..2887005a7 --- /dev/null +++ b/src/profile/v100/app_preferences/resource_preferences/resource_preferences.rs @@ -0,0 +1,146 @@ +use crate::prelude::*; +use core::hash::Hash; +use std::{hash::Hasher, ops::Index}; + +decl_identified_vec_of!( + /// User off-ledger preferences regarding resources. + ResourcePreferences, + ResourceAppPreference +); + +impl HasSampleValues for ResourcePreferences { + fn sample() -> Self { + Self::from_iter([ + ResourceAppPreference::sample(), + ResourceAppPreference::sample_other(), + ]) + } + + fn sample_other() -> Self { + Self::from_iter([ResourceAppPreference::sample_other()]) + } +} + +impl ResourcePreferences { + pub fn get_hidden_resources(&self) -> HiddenResources { + self.iter() + .filter(|x| x.visibility == ResourceVisibility::Hidden) + .map(|x| x.resource) + .collect() + } + + pub fn hide_resource(&mut self, resource: ResourceIdentifier) { + if !self.update_with(resource.id(), |x| { + x.visibility = ResourceVisibility::Hidden + }) { + let item = ResourceAppPreference::new( + resource, + ResourceVisibility::Hidden, + ); + self.append(item); + } + } + + pub fn unhide_resource(&mut self, resource: ResourceIdentifier) { + if !self.update_with(resource.id(), |x| { + x.visibility = ResourceVisibility::Visible + }) { + let item = ResourceAppPreference::new( + resource, + ResourceVisibility::Visible, + ); + self.append(item); + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[allow(clippy::upper_case_acronyms)] + type SUT = ResourcePreferences; + + #[test] + fn equality() { + assert_eq!(SUT::sample(), SUT::sample()); + assert_eq!(SUT::sample_other(), SUT::sample_other()); + } + + #[test] + fn inequality() { + assert_ne!(SUT::sample(), SUT::sample_other()); + } + + #[test] + fn hidden_resources() { + use crate::ResourceIdentifier::*; + let mut sut = SUT::new(); + + // Test with no resources hidden + let mut result = sut.get_hidden_resources(); + assert!(result.is_empty()); + + // Test unhiding an resource that wasn't present + let pool_unit = ResourceIdentifier::PoolUnit(PoolAddress::sample()); + sut.unhide_resource(pool_unit.clone()); + result = sut.get_hidden_resources(); + assert!(result.is_empty()); + + // Test with some resources hidden + let fungible_one = + ResourceIdentifier::Fungible(ResourceAddress::sample_other()); + let fungible_two = + ResourceIdentifier::Fungible(ResourceAddress::sample()); + sut.hide_resource(fungible_one.clone()); + sut.hide_resource(fungible_two.clone()); + + result = sut.get_hidden_resources(); + assert_eq!( + HiddenResources::from_iter([ + fungible_one.clone(), + fungible_two.clone() + ]), + result + ); + + // Test hiding some non-fungible and pool unit, and unhiding one of the fungibles + let non_fungible = + ResourceIdentifier::NonFungible(ResourceAddress::sample_other()); + sut.unhide_resource(fungible_one); + sut.hide_resource(non_fungible.clone()); + sut.hide_resource(pool_unit.clone()); + + result = sut.get_hidden_resources(); + assert_eq!( + HiddenResources::from_iter([fungible_two, non_fungible, pool_unit]), + result + ); + } + + #[test] + fn json_roundtrip() { + let sut = SUT::sample(); + assert_eq_after_json_roundtrip( + &sut, + r#" + [ + { + "resource": { + "kind": "fungible", + "value": "resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd" + }, + "visibility": "hidden" + }, + { + "resource": { + "kind": "nonFungible", + "value": "resource_rdx1t4dy69k6s0gv040xa64cyadyefwtett62ng6xfdnljyydnml7t6g3j" + }, + "visibility": "visible" + } + ] + "#, + ); + } +} diff --git a/src/profile/v100/app_preferences/resource_preferences/resource_preferences_uniffi_fn.rs b/src/profile/v100/app_preferences/resource_preferences/resource_preferences_uniffi_fn.rs new file mode 100644 index 000000000..ee7e54f4a --- /dev/null +++ b/src/profile/v100/app_preferences/resource_preferences/resource_preferences_uniffi_fn.rs @@ -0,0 +1,68 @@ +use crate::prelude::*; + +#[uniffi::export] +pub fn resource_preferences_get_hidden_resources( + resource_preferences: ResourcePreferences, +) -> HiddenResources { + resource_preferences.get_hidden_resources() +} + +#[uniffi::export] +pub fn resource_preferences_hide_resource( + resource_preferences: ResourcePreferences, + resource: ResourceIdentifier, +) -> ResourcePreferences { + let mut resource_preferences = resource_preferences.clone(); + resource_preferences.hide_resource(resource); + resource_preferences +} + +#[uniffi::export] +pub fn resource_preferences_unhide_resource( + resource_preferences: ResourcePreferences, + resource: ResourceIdentifier, +) -> ResourcePreferences { + let mut resource_preferences = resource_preferences.clone(); + resource_preferences.unhide_resource(resource); + resource_preferences +} + +#[cfg(test)] +mod tests { + + use std::clone; + + use super::*; + + #[allow(clippy::upper_case_acronyms)] + type SUT = ResourcePreferences; + + #[test] + fn equality_samples() { + assert_eq!(SUT::sample(), new_resource_preferences_sample()); + assert_eq!( + SUT::sample_other(), + new_resource_preferences_sample_other() + ); + } + + #[test] + fn hidden_resources() { + // Test with empty ResourcePreferences + let mut sut = SUT::new(); + let mut result = resource_preferences_get_hidden_resources(sut.clone()); + assert!(result.is_empty()); + + // Test after hiding one resource + let resource_one = ResourceIdentifier::sample(); + sut = resource_preferences_hide_resource(sut, resource_one.clone()); + + result = resource_preferences_get_hidden_resources(sut.clone()); + assert_eq!(HiddenResources::from_iter([resource_one.clone()]), result); + + // Test after unhiding the fungible resource + sut = resource_preferences_unhide_resource(sut, resource_one.clone()); + result = resource_preferences_get_hidden_resources(sut); + assert!(result.is_empty()); + } +} diff --git a/src/profile/v100/app_preferences/asset_preferences/asset_visibility.rs b/src/profile/v100/app_preferences/resource_preferences/resource_visibility.rs similarity index 79% rename from src/profile/v100/app_preferences/asset_preferences/asset_visibility.rs rename to src/profile/v100/app_preferences/resource_preferences/resource_visibility.rs index 1da49b4e1..7d594f2aa 100644 --- a/src/profile/v100/app_preferences/asset_preferences/asset_visibility.rs +++ b/src/profile/v100/app_preferences/resource_preferences/resource_visibility.rs @@ -1,6 +1,6 @@ use crate::prelude::*; -/// Indicates the visibility of an Asset. +/// Indicates the visibility of a resource. #[derive( Serialize, Deserialize, @@ -18,18 +18,18 @@ use crate::prelude::*; uniffi::Enum, )] #[serde(rename_all = "camelCase")] -pub enum AssetVisibility { +pub enum ResourceVisibility { Hidden, Visible, } -impl Default for AssetVisibility { +impl Default for ResourceVisibility { fn default() -> Self { Self::Visible } } -impl HasSampleValues for AssetVisibility { +impl HasSampleValues for ResourceVisibility { fn sample() -> Self { Self::Hidden } @@ -44,7 +44,7 @@ mod tests { use super::*; #[allow(clippy::upper_case_acronyms)] - type SUT = AssetVisibility; + type SUT = ResourceVisibility; #[test] fn equality() { @@ -59,7 +59,7 @@ mod tests { #[test] fn test_default() { - assert_eq!(AssetVisibility::Visible, AssetVisibility::default()); + assert_eq!(ResourceVisibility::Visible, ResourceVisibility::default()); } #[test] diff --git a/src/profile/v100/profile.rs b/src/profile/v100/profile.rs index 323c5f9d0..313960113 100644 --- a/src/profile/v100/profile.rs +++ b/src/profile/v100/profile.rs @@ -876,18 +876,18 @@ mod tests { "transaction": { "defaultDepositGuarantee": "0.975" }, - "assets": [ + "resources": [ { - "asset_address": { + "resource": { "kind": "fungible", "value": "resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd" }, "visibility": "hidden" }, { - "asset_address": { + "resource": { "kind": "nonFungible", - "value": "resource_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtejc9wlxa:" + "value": "resource_rdx1t4dy69k6s0gv040xa64cyadyefwtett62ng6xfdnljyydnml7t6g3j" }, "visibility": "visible" }