Smart Contract
ResolverSubedition
A.0b2a3299cc857e29.ResolverSubedition
1import NonFungibleToken from 0x1d7e57aa55817448
2import MetadataViews from 0x1d7e57aa55817448
3import TopShot from 0x0b2a3299cc857e29
4import Resolver from 0xb8ea91944fd51c43
5
6pub contract ResolverSubedition {
7 pub enum ResolverType: UInt8 {
8 pub case TopShotSubedition
9 }
10 pub resource OfferResolver: Resolver.ResolverPublic {
11 pub fun checkOfferResolver(
12 item: &AnyResource{NonFungibleToken.INFT, MetadataViews.Resolver},
13 offerParamsString: {String:String},
14 offerParamsUInt64: {String:UInt64},
15 offerParamsUFix64: {String:UFix64}): Bool {
16 if offerParamsString["resolver"] == ResolverType.TopShotSubedition.rawValue.toString() {
17 let view = item.resolveView(Type<TopShot.TopShotMomentMetadataView>())!
18 let metadata = view as! TopShot.TopShotMomentMetadataView
19
20 let offersSubeditionId = offerParamsString["subeditionId"]
21 let nftsSubeditionId = TopShot.getMomentsSubedition(nftID: item.id)
22 assert(offersSubeditionId!=nil, message: "subeditionId does not exist on Offer")
23 assert(nftsSubeditionId!=nil, message: "subeditionId does not exist on NFT")
24
25 if offerParamsString["playId"] == metadata.playID.toString() &&
26 offerParamsString["setId"] == metadata.setID.toString() &&
27 offersSubeditionId! == nftsSubeditionId!.toString(){
28 return true
29 }
30 } else {
31 panic("Invalid Resolver on Offer")
32 }
33
34 return false
35 }
36
37 }
38
39 pub fun createResolver(): @OfferResolver {
40 return <-create OfferResolver()
41 }
42}