Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add a metadata view to designate an nft as a pack #148

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions contracts/MetadataViews.cdc
Original file line number Diff line number Diff line change
Expand Up @@ -695,6 +695,28 @@ pub contract MetadataViews {
}
}

// Taken from GaiaPackNFT https://flow-view-source.com/mainnet/account/0xfdae91e14e960079/contract/GaiaPackNFT
// AllDay Packs have a subset of these so it should be safe to use this more verbose set
pub enum PackStatus: UInt8 {
pub case Sealed
pub case RevealRequested
pub case Revealed
pub case OpenRequested
pub case Opened
}
Comment on lines +700 to +706
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if an enum is the right call given its finality. We could instead make it a string so we can add to this as needed. Both Gaia and AD packs use an enum, though

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we potentially make it an integer, and then have a switch statement to indicate what its status is? that way we can add more to it if needed, but it is still similar to an enum

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No strong feelings on that part either way. I was talking to Chris on the Gaia team and he had suggested maybe going with a "Consumable" standard instead where packs are just a one-time consumable. In which case, we would amend this to let you ask how many charges are left in some capacity.

I'll open a ticket to discuss this and then we can amend this PR as needed, it is just a starting point for discussion 🙂

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


pub struct Pack {
pub let status: PackStatus

pub fun isOpen(): Bool {
return self.status == PackStatus.Opened
}

init(_ status: PackStatus) {
self.status = status
}
}

/// Helper to get Traits view in a typesafe way
///
/// @param viewResolver: A reference to the resolver resource
Expand Down
32 changes: 32 additions & 0 deletions docs/MetdataViews/MetadataViews_Pack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Struct `Pack`

```cadence
pub struct Pack {
pub let status: PackStatus

}
```

View to return the status of an nft if it is a pack.

NOTE: **This view should only be supported if it is a pack**

### Initializer

```cadence
init(_ status: PackStatus)
```


## Functions

### `isOpened()`

```cadence
pub fun isOpen(): Bool
```
Returns a boolean marking whether this pack has been opened or not

Parameters: None

---