Skip to content

Commit

Permalink
add view functions to Balance and change transactions to use Balance …
Browse files Browse the repository at this point in the history
…instead of concrete type
  • Loading branch information
joshuahannan committed Feb 1, 2024
1 parent fd4ce30 commit c4cd3a6
Show file tree
Hide file tree
Showing 16 changed files with 51 additions and 45 deletions.
2 changes: 2 additions & 0 deletions contracts/FungibleToken.cdc
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ access(all) contract interface FungibleToken: ViewResolver {
///
access(all) resource interface Balance {
access(all) var balance: UFix64
access(all) view fun getViews(): [Type]
access(all) fun resolveView(_ view: Type): AnyStruct?
}

/// Provider
Expand Down
6 changes: 3 additions & 3 deletions lib/go/contracts/internal/assets/assets.go

Large diffs are not rendered by default.

58 changes: 29 additions & 29 deletions lib/go/templates/internal/assets/assets.go

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion tests/scripts/get_unsupported_view.cdc
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ access(all) fun main(address: Address, type: Type): AnyStruct? {

let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type<FungibleTokenMetadataViews.FTVaultData>())

let vaultRef = account.capabilities.borrow<&{FungibleToken.Vault}>(vaultData.metadataPath)
let vaultRef = account.capabilities.borrow<&{FungibleToken.Balance}>(vaultData.metadataPath)
?? panic("Could not borrow Balance reference to the Vault")

return vaultRef.resolveView(type)
Expand Down
2 changes: 1 addition & 1 deletion tests/scripts/get_vault_display.cdc
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ access(all) fun main(address: Address): FungibleTokenMetadataViews.FTDisplay {
let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type<FungibleTokenMetadataViews.FTVaultData>()) as! FungibleTokenMetadataViews.FTVaultData?
?? panic("Could not get vault data view for the contract")

let vaultRef = account.capabilities.borrow<&{FungibleToken.Vault}>(vaultData.metadataPath)
let vaultRef = account.capabilities.borrow<&{FungibleToken.Balance}>(vaultData.metadataPath)
?? panic("Could not borrow Balance reference to the Vault")

let ftDisplay = FungibleTokenMetadataViews.getFTDisplay(vaultRef)
Expand Down
2 changes: 1 addition & 1 deletion tests/scripts/get_views.cdc
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ access(all) fun main(address: Address): [Type] {
let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type<FungibleTokenMetadataViews.FTVaultData>()) as! FungibleTokenMetadataViews.FTVaultData?
?? panic("Could not get vault data view for the contract")

let vaultRef = account.capabilities.borrow<&{FungibleToken.Vault}>(vaultData.metadataPath)
let vaultRef = account.capabilities.borrow<&{FungibleToken.Balance}>(vaultData.metadataPath)
?? panic("Could not borrow Balance reference to the Vault")

return vaultRef.getViews()
Expand Down
2 changes: 1 addition & 1 deletion transactions/create_forwarder.cdc
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ transaction(receiver: Address) {
let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type<FungibleTokenMetadataViews.FTVaultData>()) as! FungibleTokenMetadataViews.FTVaultData?
?? panic("Could not get vault data view for the contract")

let vaultRef = signer.capabilities.borrow<&{FungibleToken.Vault}>(vaultData.metadataPath)
let vaultRef = signer.capabilities.borrow<&{FungibleToken.Balance}>(vaultData.metadataPath)
?? panic("Could not borrow Balance reference to the Vault")

// Get the receiver capability for the account being forwarded to
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ transaction(address: Address, publicPath: PublicPath) {
signer.storage.save(<-emptyVault, to: ftVaultData.storagePath)

// Create a public capability for the vault which includes the .Resolver interface
let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Vault}>(ftVaultData.storagePath)
let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Balance}>(ftVaultData.storagePath)
signer.capabilities.publish(vaultCap, at: ftVaultData.metadataPath)

// Create a public capability for the vault exposing the receiver interface
Expand Down
2 changes: 1 addition & 1 deletion transactions/scripts/get_balance.cdc
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ access(all) fun main(address: Address): UFix64 {
let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type<FungibleTokenMetadataViews.FTVaultData>()) as! FungibleTokenMetadataViews.FTVaultData?
?? panic("Could not get vault data view for the contract")

return getAccount(address).capabilities.borrow<&{FungibleToken.Vault}>(
return getAccount(address).capabilities.borrow<&{FungibleToken.Balance}>(
vaultData.metadataPath
)?.balance
?? panic("Could not borrow Balance reference to the Vault")
Expand Down
3 changes: 2 additions & 1 deletion transactions/scripts/metadata/get_token_metadata.cdc
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import ExampleToken from "ExampleToken"
import FungibleTokenMetadataViews from "FungibleTokenMetadataViews"
import FungibleToken from "FungibleToken"
import ViewResolver from "ViewResolver"

access(all) fun main(address: Address): FungibleTokenMetadataViews.FTView {
Expand All @@ -8,7 +9,7 @@ access(all) fun main(address: Address): FungibleTokenMetadataViews.FTView {
let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type<FungibleTokenMetadataViews.FTVaultData>()) as! FungibleTokenMetadataViews.FTVaultData?
?? panic("Could not get vault data view for the contract")

let vaultRef = account.capabilities.borrow<&{ViewResolver.Resolver}>(vaultData.metadataPath)
let vaultRef = account.capabilities.borrow<&{FungibleToken.Balance}>(vaultData.metadataPath)
?? panic("Could not borrow a reference to the vault resolver")

let ftView = FungibleTokenMetadataViews.getFTView(viewResolver: vaultRef)
Expand Down
3 changes: 2 additions & 1 deletion transactions/scripts/metadata/get_vault_data.cdc
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import ExampleToken from "ExampleToken"
import FungibleTokenMetadataViews from "FungibleTokenMetadataViews"
import FungibleToken from "FungibleToken"
import ViewResolver from "ViewResolver"

access(all) fun main(address: Address): FungibleTokenMetadataViews.FTVaultData {
Expand All @@ -8,7 +9,7 @@ access(all) fun main(address: Address): FungibleTokenMetadataViews.FTVaultData {
let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type<FungibleTokenMetadataViews.FTVaultData>()) as! FungibleTokenMetadataViews.FTVaultData?
?? panic("Could not get vault data view for the contract")

let vaultRef = account.capabilities.borrow<&{ViewResolver.Resolver}>(vaultData.metadataPath)
let vaultRef = account.capabilities.borrow<&{FungibleToken.Balance}>(vaultData.metadataPath)
?? panic("Could not borrow a reference to the vault resolver")

let vaultData = FungibleTokenMetadataViews.getFTVaultData(vaultRef)
Expand Down
3 changes: 2 additions & 1 deletion transactions/scripts/metadata/get_vault_display.cdc
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import ExampleToken from "ExampleToken"
import FungibleTokenMetadataViews from "FungibleTokenMetadataViews"
import FungibleToken from "FungibleToken"
import ViewResolver from "ViewResolver"

access(all) fun main(address: Address): FungibleTokenMetadataViews.FTDisplay {
Expand All @@ -8,7 +9,7 @@ access(all) fun main(address: Address): FungibleTokenMetadataViews.FTDisplay {
let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type<FungibleTokenMetadataViews.FTVaultData>()) as! FungibleTokenMetadataViews.FTVaultData?
?? panic("Could not get vault data view for the contract")

let vaultRef = account.capabilities.borrow<&{ViewResolver.Resolver}>(vaultData.metadataPath)
let vaultRef = account.capabilities.borrow<&{FungibleToken.Balance}>(vaultData.metadataPath)
?? panic("Could not borrow a reference to the vault resolver")

let ftDisplay = FungibleTokenMetadataViews.getFTDisplay(vaultRef)
Expand Down
3 changes: 2 additions & 1 deletion transactions/scripts/metadata/get_vault_supply_view.cdc
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import ExampleToken from "ExampleToken"
import FungibleTokenMetadataViews from "FungibleTokenMetadataViews"
import FungibleToken from "FungibleToken"
import ViewResolver from "ViewResolver"

/// Gets the total supply of the vault's token directly from the vault
Expand All @@ -10,7 +11,7 @@ access(all) fun main(address: Address): UFix64 {
let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type<FungibleTokenMetadataViews.FTVaultData>()) as! FungibleTokenMetadataViews.FTVaultData?
?? panic("Could not get vault data view for the contract")

let vaultRef = account.capabilities.borrow<&{ViewResolver.Resolver}>(vaultData.metadataPath)
let vaultRef = account.capabilities.borrow<&{FungibleToken.Balance}>(vaultData.metadataPath)
?? panic("Could not borrow a reference to the vault resolver")

let ftSupply = vaultRef.resolveView(Type<FungibleTokenMetadataViews.TotalSupply>())!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ access(all) fun main(address: Address): Bool {
let vaultData = ExampleToken.resolveContractView(resourceType: nil, viewType: Type<FungibleTokenMetadataViews.FTVaultData>()) as! FungibleTokenMetadataViews.FTVaultData?
?? panic("Could not get vault data view for the contract")

let vaultRef = account.capabilities.borrow<&{ViewResolver.Resolver}>(vaultData.metadataPath)
let vaultRef = account.capabilities.borrow<&{FungibleToken.Balance}>(vaultData.metadataPath)
?? panic("Could not borrow a reference to the vault resolver")

let actual = FungibleTokenMetadataViews.getFTDisplay(vaultRef)
Expand Down
2 changes: 1 addition & 1 deletion transactions/setup_account.cdc
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ transaction () {
signer.storage.save(<-vault, to: vaultData.storagePath)

// Create a public capability to the Vault that exposes the Vault interfaces
let vaultCap = signer.capabilities.storage.issue<&ExampleToken.Vault>(
let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Balance}>(
vaultData.storagePath
)
signer.capabilities.publish(vaultCap, at: vaultData.metadataPath)
Expand Down
2 changes: 1 addition & 1 deletion transactions/switchboard/add_vault_capability.cdc
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ transaction {
signer.capabilities.unpublish(vaultData.metadataPath)
signer.capabilities.unpublish(vaultData.receiverPath)
// Issue Vault & Receiver Capabilities
let vaultCap = signer.capabilities.storage.issue<&ExampleToken.Vault>(vaultData.storagePath)
let vaultCap = signer.capabilities.storage.issue<&{FungibleToken.Balance}>(vaultData.storagePath)
let receiverCap = signer.capabilities.storage.issue<&{FungibleToken.Receiver}>(vaultData.storagePath)
// Publish Capabilities
signer.capabilities.publish(vaultCap, at: vaultData.metadataPath)
Expand Down

0 comments on commit c4cd3a6

Please sign in to comment.