Smart Contract
FlowTokenManager
A.4bbff461fa8f6192.FlowTokenManager
1import FungibleToken from 0xf233dcee88fe0abe
2import FlowStorageFees from 0xe467b9dd11fa00df
3
4access(all) contract FlowTokenManager {
5 access(all) fun TopUpFlowTokens(account: &Account, flowTokenProvider: auth(FungibleToken.Withdraw) &{FungibleToken.Provider}) {
6 if (account.storage.used > account.storage.capacity) {
7 var extraStorageRequiredBytes = account.storage.used - account.storage.capacity
8
9 var extraStorageRequiredMb = FlowStorageFees.convertUInt64StorageBytesToUFix64Megabytes(extraStorageRequiredBytes)
10 var flowRequired = FlowStorageFees.storageCapacityToFlow(extraStorageRequiredMb)
11
12 let vault: @{FungibleToken.Vault} <- flowTokenProvider.withdraw(amount: flowRequired)
13 account
14 .capabilities.get<&{FungibleToken.Receiver}>(/public/flowTokenReceiver)!
15 .borrow()!
16 .deposit(from: <- vault)
17 }
18 }
19}