Smart Contract

ResolverSubedition

A.0b2a3299cc857e29.ResolverSubedition

Deployed

1w ago
Feb 17, 2026, 04:29:37 PM UTC

Dependents

0 imports
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}