Skip to content

Commit 7a9d083

Browse files
authored
Merge pull request #436 from perun-network/fix-cross-chain
Ordered Ledger List
2 parents dc9713b + 2f1c717 commit 7a9d083

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

channel/multi/asset.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ type (
4848

4949
// LedgerIDs returns the identifiers of the associated ledgers.
5050
func (a assets) LedgerIDs() ([]LedgerBackendID, error) {
51-
ids := make(map[LedgerBackendKey]LedgerBackendID)
51+
var ids []LedgerBackendID
52+
seen := make(map[LedgerBackendKey]struct{})
5253

5354
for _, asset := range a {
5455
ma, ok := asset.(Asset)
@@ -57,18 +58,19 @@ func (a assets) LedgerIDs() ([]LedgerBackendID, error) {
5758
}
5859

5960
assetID := ma.LedgerBackendID()
61+
key := LedgerBackendKey{
62+
BackendID: assetID.BackendID(),
63+
LedgerID: string(assetID.LedgerID().MapKey()),
64+
}
65+
if _, exists := seen[key]; exists {
66+
continue // skip duplicates, keep first occurrence order
67+
}
68+
seen[key] = struct{}{}
6069

61-
ids[LedgerBackendKey{BackendID: assetID.BackendID(), LedgerID: string(assetID.LedgerID().MapKey())}] = assetID
62-
}
63-
idsArray := make([]LedgerBackendID, len(ids))
64-
65-
i := 0
66-
for _, v := range ids {
67-
idsArray[i] = v
68-
i++
70+
ids = append(ids, assetID)
6971
}
7072

71-
return idsArray, nil
73+
return ids, nil
7274
}
7375

7476
// IsMultiLedgerAssets returns whether the assets are from multiple ledgers.

0 commit comments

Comments
 (0)