Last active
November 18, 2022 10:23
-
-
Save polluterofminds/17e961796b795a4c001c2e644bda6a41 to your computer and use it in GitHub Desktop.
Full PinataPartyContract
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pub contract PinataPartyContract { | |
pub resource NFT { | |
pub let id: UInt64 | |
init(initID: UInt64) { | |
self.id = initID | |
} | |
} | |
pub resource interface NFTReceiver { | |
pub fun deposit(token: @NFT, metadata: {String : String}) | |
pub fun getIDs(): [UInt64] | |
pub fun idExists(id: UInt64): Bool | |
pub fun getMetadata(id: UInt64) : {String : String} | |
} | |
pub resource Collection: NFTReceiver { | |
pub var ownedNFTs: @{UInt64: NFT} | |
pub var metadataObjs: {UInt64: { String : String }} | |
init () { | |
self.ownedNFTs <- {} | |
self.metadataObjs = {} | |
} | |
pub fun withdraw(withdrawID: UInt64): @NFT { | |
let token <- self.ownedNFTs.remove(key: withdrawID)! | |
return <-token | |
} | |
pub fun deposit(token: @NFT, metadata: {String : String}) { | |
self.metadataObjs[token.id] = metadata | |
self.ownedNFTs[token.id] <-! token | |
} | |
pub fun idExists(id: UInt64): Bool { | |
return self.ownedNFTs[id] != nil | |
} | |
pub fun getIDs(): [UInt64] { | |
return self.ownedNFTs.keys | |
} | |
pub fun updateMetadata(id: UInt64, metadata: {String: String}) { | |
self.metadataObjs[id] = metadata | |
} | |
pub fun getMetadata(id: UInt64): {String : String} { | |
return self.metadataObjs[id]! | |
} | |
destroy() { | |
destroy self.ownedNFTs | |
} | |
} | |
pub fun createEmptyCollection(): @Collection { | |
return <- create Collection() | |
} | |
pub resource NFTMinter { | |
pub var idCount: UInt64 | |
init() { | |
self.idCount = 1 | |
} | |
pub fun mintNFT(): @NFT { | |
var newNFT <- create NFT(initID: self.idCount) | |
self.idCount = self.idCount + 1 as UInt64 | |
return <-newNFT | |
} | |
} | |
init() { | |
self.account.save(<-self.createEmptyCollection(), to: /storage/NFTCollection) | |
self.account.link<&{NFTReceiver}>(/public/NFTReceiver, target: /storage/NFTCollection) | |
self.account.save(<-create NFTMinter(), to: /storage/NFTMinter) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi @polluterofminds I tried the PinataPartyContract.While deploying it shows error
Error deploying PinataPartyContract: (execution error code 1006: [Error Code: 1006] invalid proposal key: public key 0 on account f8d6e0586b0a20c7 does not have a valid signature: [Error Code: 1009] invalid envelope key: public key 0 on account f8d6e0586b0a20c7 does not have a valid signature: signature is not valid)
Please suggest how to solve the issue