Skip to content

Commit

Permalink
Merge 'main' into 'sargon_os'
Browse files Browse the repository at this point in the history
  • Loading branch information
micbakos-rdx committed Jul 10, 2024
1 parent 4bfdccb commit 10d2e16
Show file tree
Hide file tree
Showing 24 changed files with 271 additions and 138 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/release-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: CD Android

on:
workflow_dispatch:
inputs:
build_name:
description: "A custom version name. The resulting name will have the format <cargo.version.patch>-<custom-name>-<rev> (E.g. 1.0.23-custom-name-2eb68d8c)."
required: true
type: string
push:
tags:
- "**"
Expand All @@ -21,6 +26,7 @@ jobs:
env:
RUST_TOOLCHAIN: nightly-2024-01-11
RUST_COMPONENTS: "rust-std"
CUSTOM_BUILD_NAME: ${{ inputs.build_name }}
steps:
- uses: RDXWorks-actions/checkout@main

Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/release-desktop-bins.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@ name: CD Desktop Binaries

on:
workflow_dispatch:
inputs:
build_name:
description: "A custom version name. The resulting name will have the format <cargo.version.patch>-<custom-name>-<rev> (E.g. 1.0.23-custom-name-2eb68d8c)."
required: true
type: string
push:
tags:
- "**"
Expand All @@ -21,6 +26,7 @@ jobs:
env:
RUST_TOOLCHAIN: nightly-2024-01-11
RUST_COMPONENTS: "rust-std"
CUSTOM_BUILD_NAME: ${{ inputs.build_name }}
steps:
- uses: RDXWorks-actions/checkout@main

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,9 @@ import Foundation
import SargonUniFFI

extension AppPreferences: SargonModel {}

extension AppPreferences {
public func hasGateway(with url: URL) -> Bool {
appPreferencesHasGatewayWithUrl(appPreferences: self, url: url)
}
}
1 change: 0 additions & 1 deletion apple/Tests/TestCases/Address/AccountAddressTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ final class AccountAddressTests: AddressTest<AccountAddress> {
func test_formatted() {
XCTAssertEqual(SUT.sample.formatted(.full), "account_rdx128y6j78mt0aqv6372evz28hrxp8mn06ccddkr7xppc88hyvynvjdwr")
XCTAssertEqual(SUT.sample.formatted(.default), "acco...nvjdwr")
XCTAssertEqual(SUT.sample.formatted(.middle), "unt_rdx128y6j78mt0aqv6372evz28hrxp8mn06ccddkr7xppc88hyvy")
}

func test_from_bech32_on_stokenet() throws {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ final class LegacyOlympiaAccountAddressTests: BaseAddressTest<LegacyOlympiaAccou
func test_formatted() {
XCTAssertNoDifference(SUT.sampleOther.formatted(.default), "rdx...0xqm2ylge")
XCTAssertNoDifference(SUT.sampleOther.formatted(.raw), "rdx1qsp8n0nx0muaewav2ksx99wwsu9swq5mlndjmn3gm9vl9q2mzmup0xqm2ylge")
XCTAssertNoDifference(SUT.sampleOther.formatted(.middle), "1qsp8n0nx0muaewav2ksx99wwsu9swq5mlndjmn3gm9vl9q2mzmup")
}
}

Expand Down
6 changes: 2 additions & 4 deletions apple/Tests/TestCases/Prelude/NonFungibleGlobalIDTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,7 @@ final class NonFungibleGlobalIDTests: IdentifiableByStringProtocolTest<NonFungib
)
)
XCTAssertNoDifference(sut.formatted(.raw), "resource_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtejc9wlxa:{deadbeef12345678-babecafe87654321-fadedeaf01234567-ecadabba76543210}")
XCTAssertNoDifference(sut.formatted(.default), "reso...c9wlxa:dead...3210")
XCTAssertNoDifference(sut.formatted(.middle), "urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej:beef12345678-babecafe87654321-fadedeaf01234567-ecadabba7654")
XCTAssertNoDifference(sut.formatted(.default), "reso...c9wlxa:{dead...3210}")
}

func test_formatted_string() throws {
Expand All @@ -59,7 +58,6 @@ final class NonFungibleGlobalIDTests: IdentifiableByStringProtocolTest<NonFungib
localID: .stringID("foobar")
)
XCTAssertNoDifference(sut.formatted(.raw), "resource_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtejc9wlxa:<foobar>")
XCTAssertNoDifference(sut.formatted(.default), "reso...c9wlxa:foobar")
XCTAssertNoDifference(sut.formatted(.middle), "urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej")
XCTAssertNoDifference(sut.formatted(.default), "reso...c9wlxa:<foobar>")
}
}
6 changes: 6 additions & 0 deletions apple/Tests/TestCases/Profile/AppPreferencesTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,10 @@ final class AppPreferencesTests: Test<AppPreferences> {
func test_default_guarantee_is_99() {
XCTAssertEqual(SUT.default.transaction.defaultDepositGuarantee, 0.99)
}

func test_has_gateway() {
XCTAssertTrue(SUT.default.hasGateway(with: .init(string: "https://mainnet.radixdlt.com/")!))
XCTAssertTrue(SUT.default.hasGateway(with: .init(string: "https://mainnet.radixdlt.com")!))
XCTAssertFalse(SUT.default.hasGateway(with: .init(string: "https://radixdlt.com")!))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,12 @@ private fun Project.parseGitHash(): String {
return String(out.toByteArray(), Charsets.UTF_8).trim()
}

fun Project.sargonVersion(): String = "${parseTomlVersion()}-${parseGitHash()}"
fun Project.sargonVersion(): String {
val customBuildName = System.getenv("CUSTOM_BUILD_NAME")?.takeIf {
it.isNotBlank()
}?.replace("\\s+".toRegex(), "-")?.let {
"-${it}"
}.orEmpty()

return "${parseTomlVersion()}${customBuildName}-${parseGitHash()}"
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class NonFungibleGlobalIdTest {
nonFungibleLocalId = NonFungibleLocalId.init("#1#")
)

assertEquals("reso...c9wlxa:1", address.formatted())
assertEquals("reso...c9wlxa:#1#", address.formatted())
assertEquals(
"resource_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtejc9wlxa:1",
address.formatted(format = AddressFormat.FULL)
Expand Down
8 changes: 0 additions & 8 deletions src/profile/v100/address/account_address.rs
Original file line number Diff line number Diff line change
Expand Up @@ -308,14 +308,6 @@ mod tests {
);
}

#[test]
fn formatted_middle() {
assert_eq!(
SUT::sample().formatted(AddressFormat::Middle),
"unt_rdx128y6j78mt0aqv6372evz28hrxp8mn06ccddkr7xppc88hyvy"
);
}

#[test]
fn invalid() {
assert_eq!(
Expand Down
1 change: 0 additions & 1 deletion src/profile/v100/address/address_format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,4 @@ pub enum AddressFormat {
Full,
Raw,
Default,
Middle,
}
9 changes: 0 additions & 9 deletions src/profile/v100/address/legacy_olympia_account_address.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,6 @@ impl LegacyOlympiaAccountAddress {
match format {
AddressFormat::Default => format_string(self.to_string(), 3, 9),
AddressFormat::Full | AddressFormat::Raw => self.to_string(),
AddressFormat::Middle => trim_string(self.to_string(), 3, 9),
}
}
}
Expand Down Expand Up @@ -231,14 +230,6 @@ mod tests {
);
}

#[test]
fn formatted_middle() {
assert_eq!(
SUT::sample_other().formatted(AddressFormat::Middle),
"1qsp8n0nx0muaewav2ksx99wwsu9swq5mlndjmn3gm9vl9q2mzmup"
);
}

#[test]
fn debug() {
assert_eq!(
Expand Down
52 changes: 23 additions & 29 deletions src/profile/v100/address/non_fungible_global_id.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,22 +160,28 @@ impl NonFungibleGlobalId {

pub fn formatted(&self, format: AddressFormat) -> String {
match format {
AddressFormat::Default | AddressFormat::Full => format!(
AddressFormat::Default => {
let local_id_formatted = match self.non_fungible_local_id {
NonFungibleLocalId::Ruid { value: _ } => format_string(
self.non_fungible_local_id.to_string(),
5,
5,
),
_ => self.non_fungible_local_id.to_string(),
};

format!(
"{}:{}",
self.resource_address.formatted(format),
local_id_formatted
)
}
AddressFormat::Full => format!(
"{}:{}",
self.resource_address.formatted(format),
self.non_fungible_local_id.formatted(format)
),
AddressFormat::Raw => self.to_canonical_string(),
AddressFormat::Middle => match self.non_fungible_local_id {
NonFungibleLocalId::Ruid { value: _ } => {
format!(
"{}:{}",
self.resource_address.formatted(format),
self.non_fungible_local_id.formatted(format)
)
}
_ => self.resource_address.formatted(format),
},
}
}
}
Expand Down Expand Up @@ -300,7 +306,7 @@ mod tests {
fn formatted_default() {
assert_eq!(
SUT::sample_ruid().formatted(AddressFormat::Default),
"reso...c9wlxa:dead...3210"
"reso...c9wlxa:{dead...3210}"
);
}

Expand All @@ -321,45 +327,33 @@ mod tests {
let mut item = SUT::new(resource_address, local_id);
assert_eq!(
item.formatted(AddressFormat::Default),
"reso...c9wlxa:12345678"
);
assert_eq!(
item.formatted(AddressFormat::Middle),
"urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej"
"reso...c9wlxa:#12345678#"
);

// local_id: string
local_id = NonFungibleLocalId::string("foobar").unwrap();
item = SUT::new(resource_address, local_id);
assert_eq!(
item.formatted(AddressFormat::Default),
"reso...c9wlxa:foobar"
);
assert_eq!(
item.formatted(AddressFormat::Middle),
"urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej"
"reso...c9wlxa:<foobar>"
);

// local_id: bytes
local_id = NonFungibleLocalId::bytes([0xde, 0xad]).unwrap();
item = SUT::new(resource_address, local_id);
assert_eq!(
item.formatted(AddressFormat::Default),
"reso...c9wlxa:dead"
);
assert_eq!(
item.formatted(AddressFormat::Middle),
"urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej"
"reso...c9wlxa:[dead]"
);

// local_id: ruid
local_id = NonFungibleLocalId::ruid(hex_decode("deadbeef12345678babecafe87654321fadedeaf01234567ecadabba76543210").unwrap()).unwrap();
item = SUT::new(resource_address, local_id);
println!("{}", item.formatted(AddressFormat::Raw));
assert_eq!(
item.formatted(AddressFormat::Default),
"reso...c9wlxa:dead...3210"
"reso...c9wlxa:{dead...3210}"
);
assert_eq!(item.formatted(AddressFormat::Middle), "urce_rdx1nfyg2f68jw7hfdlg5hzvd8ylsa7e0kjl68t5t62v3ttamtej:beef12345678-babecafe87654321-fadedeaf01234567-ecadabba7654");
}

#[test]
Expand Down
36 changes: 0 additions & 36 deletions src/profile/v100/address/non_fungible_local_id.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 +64,6 @@ impl NonFungibleLocalId {
},
AddressFormat::Full => self.to_user_facing_string(),
AddressFormat::Raw => self.to_string(),
AddressFormat::Middle => match self {
NonFungibleLocalId::Ruid { value: _ } => {
trim_string(self.to_user_facing_string(), 4, 4)
}
_ => self.to_user_facing_string(),
},
}
}
pub fn to_user_facing_string(&self) -> String {
Expand Down Expand Up @@ -343,36 +337,6 @@ mod tests {
).unwrap().formatted(AddressFormat::Full), "deadbeef12345678-babecafe87654321-fadedeaf01234567-ecadabba76543210");
}

#[test]
fn formatted_middle_variant_string() {
assert_eq!(
SUT::string("foo").unwrap().formatted(AddressFormat::Middle),
"foo"
);
}

#[test]
fn formatted_middle_variant_integer() {
assert_eq!(SUT::integer(1234).formatted(AddressFormat::Middle), "1234");
}

#[test]
fn formatted_middle_variant_bytes() {
assert_eq!(
SUT::bytes([0xde, 0xad])
.unwrap()
.formatted(AddressFormat::Middle),
"dead"
);
}

#[test]
fn formatted_middle_variant_ruid() {
assert_eq!( SUT::ruid(
hex_decode("deadbeef12345678babecafe87654321fadedeaf01234567ecadabba76543210").unwrap()
).unwrap().formatted(AddressFormat::Middle), "beef12345678-babecafe87654321-fadedeaf01234567-ecadabba7654");
}

#[test]
fn from_str_err() {
assert!(SUT::from_str("no_angle_brackets").is_err());
Expand Down
8 changes: 0 additions & 8 deletions src/profile/v100/address/resource_address.rs
Original file line number Diff line number Diff line change
Expand Up @@ -307,14 +307,6 @@ mod tests {
);
}

#[test]
fn formatted_middle() {
assert_eq!(
SUT::sample().formatted(AddressFormat::Middle),
"urce_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxx"
);
}

#[test]
fn display() {
let s = "resource_rdx1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxradxrd";
Expand Down
12 changes: 0 additions & 12 deletions src/profile/v100/address/wrap_ret_address.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,6 @@ pub(crate) fn format_string(
format!("{}...{}", prefix, suffix)
}

pub(crate) fn trim_string(
s: impl AsRef<str>,
prefix: usize,
suffix: usize,
) -> String {
let s = s.as_ref();
let start = prefix;
let end = s.len() - suffix;
s[start..end].to_string()
}

pub trait IntoScryptoAddress: IsNetworkAware {
fn scrypto(&self) -> ScryptoGlobalAddress;
}
Expand Down Expand Up @@ -201,7 +190,6 @@ macro_rules! decl_ret_wrapped_address {
match format {
AddressFormat::Default => format_string(self.address(), 4, 6),
AddressFormat::Full | AddressFormat::Raw => self.address(),
AddressFormat::Middle => trim_string(self.address(), 4, 6),
}
}

Expand Down
22 changes: 22 additions & 0 deletions src/profile/v100/app_preferences/app_preferences.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,12 @@ impl HasSampleValues for AppPreferences {
}
}

impl AppPreferences {
pub fn has_gateway_with_url(&self, url: Url) -> bool {
self.gateways.all().into_iter().any(|g| g.id() == url)
}
}

#[cfg(test)]
mod tests {
use super::*;
Expand Down Expand Up @@ -123,6 +129,22 @@ mod tests {
assert_eq!(SUT::sample().transaction, TransactionPreferences::sample())
}

#[test]
fn test_has_gateway_with_url() {
let sut = SUT::sample();
// Test without the "/" at the end
let mut url = Url::parse("https://mainnet.radixdlt.com").unwrap();
assert!(sut.has_gateway_with_url(url));

// Test with the "/" at the end
url = Url::parse("https://mainnet.radixdlt.com/").unwrap();
assert!(sut.has_gateway_with_url(url));

// Test with a Url that isn't present
url = Url::parse("https://radixdlt.com/").unwrap();
assert!(!sut.has_gateway_with_url(url));
}

#[test]
fn json_roundtrip() {
let sut = SUT::sample();
Expand Down
Loading

0 comments on commit 10d2e16

Please sign in to comment.