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

Migration from sg721 to cw721 CollectionInfo #668

Open
wants to merge 26 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
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
Prev Previous commit
Next Next commit
update lib
  • Loading branch information
taitruong committed Mar 26, 2024
commit 7cbefc6d9b05996bdcd54b131a3b0f94eee70eeb
45 changes: 34 additions & 11 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 6 additions & 3 deletions contracts/collections/sg721-base/examples/schema.rs
Original file line number Diff line number Diff line change
@@ -3,13 +3,14 @@ use std::fs::create_dir_all;

use cosmwasm_schema::{export_schema, export_schema_with_title, remove_schemas, schema_for};

use cw721::CollectionMetadataAndExtension;
use cw721_base::{
msg::{
AllNftInfoResponse, ApprovalResponse, ApprovalsResponse, MinterResponse, NftInfoResponse,
NumTokensResponse, OperatorsResponse, OwnerOfResponse, TokensResponse,
},
state::CollectionMetadata,
CollectionMetadataExtension, DefaultOptionCollectionMetadataExtension,
CollectionMetadataExtensionWrapper, DefaultOptionCollectionMetadataExtension,
DefaultOptionNftMetadataExtension, RoyaltyInfo,
};
use sg721::InstantiateMsg;
@@ -30,7 +31,9 @@ fn main() {
#[allow(deprecated)]
export_schema(&schema_for!(CollectionInfoResponse), &out_dir);
export_schema(
&schema_for!(CollectionMetadata<CollectionMetadataExtension<RoyaltyInfo>>),
&schema_for!(
CollectionMetadataAndExtension<CollectionMetadataExtensionWrapper<RoyaltyInfo>>
),
&out_dir,
);
export_schema_with_title(
@@ -49,7 +52,7 @@ fn main() {
export_schema(&schema_for!(ApprovalsResponse), &out_dir);
export_schema(&schema_for!(OperatorsResponse), &out_dir);
export_schema(
&schema_for!(CollectionMetadata<DefaultOptionCollectionMetadataExtension>),
&schema_for!(CollectionMetadataAndExtension<DefaultOptionCollectionMetadataExtension>),
&out_dir,
);
export_schema_with_title(
12 changes: 7 additions & 5 deletions contracts/collections/sg721-base/src/contract.rs
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ use cosmwasm_std::{
MessageInfo, Response, StdError, Storage, Timestamp, WasmQuery,
};

use cw721_base::{execute::Cw721Execute, query::Cw721Query};
use cw721_base::traits::{Cw721Execute, Cw721Query};
use cw_utils::nonpayable;

#[allow(deprecated)]
@@ -120,7 +120,9 @@ where
info: MessageInfo,
collection_msg: UpdateCollectionInfoMsg<RoyaltyInfoResponse>,
) -> Result<Response<TCustomResponseMsg>, ContractError> {
let collection_info = self.parent.config.collection_metadata.load(deps.storage)?;
let collection_info = self
.parent
.query_collection_metadata_and_extension(deps.as_ref())?;

if self.frozen_collection_info.load(deps.storage)? {
return Err(ContractError::CollectionInfoFrozen {});
@@ -153,7 +155,7 @@ where
extension: Some(collection_extension),
};
self.parent
.update_collection_metadata(deps, &info, &env, msg)?;
.update_collection_metadata(deps, Some(&info), Some(&env), msg)?;

let event = Event::new("update_collection_info").add_attribute("sender", info.sender);
Ok(Response::new().add_event(event))
@@ -183,7 +185,7 @@ where
}),
};
self.parent
.update_collection_metadata(deps, &info, &env, msg)?;
.update_collection_metadata(deps, Some(&info), Some(&env), msg)?;

let event = Event::new("update_start_trading_time").add_attribute("sender", info.sender);
Ok(Response::new().add_event(event))
@@ -253,7 +255,7 @@ where
&self,
deps: Deps,
) -> Result<CollectionInfoResponse, ContractError> {
let collection_info = self.parent.config.collection_metadata.load(deps.storage)?;
let collection_info = self.parent.query_collection_metadata_and_extension(deps)?;

let creator = self
.get_creator(deps.storage)?
6 changes: 3 additions & 3 deletions contracts/collections/sg721-base/src/msg.rs
Original file line number Diff line number Diff line change
@@ -10,7 +10,7 @@ use cw721_base::{
NumTokensResponse, OperatorsResponse, OwnerOfResponse, QueryMsg as Cw721QueryMsg,
TokensResponse,
},
state::CollectionMetadata,
state::CollectionMetadataAndExtension,
DefaultOptionCollectionMetadataExtensionMsg,
};
use cw_ownable::Ownership;
@@ -64,13 +64,13 @@ pub enum QueryMsg<
NumTokens {},

#[deprecated(since = "0.19.0", note = "Please use GetCollectionMetadata instead")]
#[returns(CollectionMetadata<DefaultOptionCollectionMetadataExtensionMsg>)]
#[returns(CollectionMetadataAndExtension<DefaultOptionCollectionMetadataExtensionMsg>)]
/// Deprecated: use GetCollectionMetadata instead! Will be removed in next release!
ContractInfo {},

/// With MetaData Extension.
/// Returns top-level metadata about the contract
#[returns(CollectionMetadata<TCollectionMetadataExtension>)]
#[returns(CollectionMetadataAndExtension<TCollectionMetadataExtension>)]
GetCollectionMetadata {},

#[deprecated(since = "0.19.0", note = "Please use GetMinterOwnership instead")]
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ use cw721::{
DefaultOptionCollectionMetadataExtensionMsg, DefaultOptionNftMetadataExtension,
DefaultOptionNftMetadataExtensionMsg,
};
use cw721_base::execute::Cw721Execute;
use cw721_base::traits::Cw721Execute;

/// Migrates cw721 states:
/// (1) legacy creator and minter migration, now using cw-ownable
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
use crate::{ContractError, Sg721Contract};

use cosmwasm_std::{DepsMut, Empty, Env, Event, Response};
use cw721::traits::StateFactory;
use cw721::execute::update_collection_metadata;
use cw721::msg::CollectionMetadataMsg;
use cw721::{
msg::CollectionMetadataExtensionMsg, query::Cw721Query,
msg::CollectionMetadataExtensionMsg, traits::Cw721Query,
DefaultOptionCollectionMetadataExtension, DefaultOptionCollectionMetadataExtensionMsg,
DefaultOptionNftMetadataExtension, DefaultOptionNftMetadataExtensionMsg, RoyaltyInfo,
};
@@ -23,33 +24,35 @@ pub fn upgrade(deps: DepsMut, env: &Env, response: Response) -> Result<Response,
>::default();
let event = Event::new("migrate-3.1.0");
// migrate only in case collection metadata is not set
let mut collection_metadata = contract
let collection_metadata = contract
.parent
.query_collection_metadata(deps.as_ref(), env)?;
.query_collection_metadata_and_extension(deps.as_ref())?;
let event = match collection_metadata.extension.clone() {
Some(_) => event,
None => {
let legacy_collection_info_store: Item<CollectionInfo<RoyaltyInfo>> =
Item::new("collection_info");
let legacy_collection_info = legacy_collection_info_store.load(deps.storage)?;
let collection_metadata_msg = CollectionMetadataExtensionMsg::<RoyaltyInfoResponse> {
description: Some(legacy_collection_info.description),
explicit_content: legacy_collection_info.explicit_content,
external_link: legacy_collection_info.external_link,
image: Some(legacy_collection_info.image),
start_trading_time: legacy_collection_info.start_trading_time,
royalty_info: legacy_collection_info.royalty_info.map(|r| r.into()),
let collection_metadata_extension_msg =
CollectionMetadataExtensionMsg::<RoyaltyInfoResponse> {
description: Some(legacy_collection_info.description),
explicit_content: legacy_collection_info.explicit_content,
external_link: legacy_collection_info.external_link,
image: Some(legacy_collection_info.image),
start_trading_time: legacy_collection_info.start_trading_time,
royalty_info: legacy_collection_info.royalty_info.map(|r| r.into()),
};
let collection_metadata_msg = CollectionMetadataMsg {
name: Some(collection_metadata.name),
symbol: Some(collection_metadata.symbol),
extension: Some(collection_metadata_extension_msg.clone()),
};
let updated_collection_metadata_extension_result =
collection_metadata_msg.create(Some(deps.as_ref()), Some(env), None, None);
let updated_collection_metadata_extension =
updated_collection_metadata_extension_result?;
collection_metadata.extension = Some(updated_collection_metadata_extension);
contract
.parent
.config
.collection_metadata
.save(deps.storage, &collection_metadata)?;

update_collection_metadata::<
DefaultOptionCollectionMetadataExtension,
DefaultOptionCollectionMetadataExtensionMsg,
Empty,
>(deps, None, env.into(), collection_metadata_msg)?;
event
}
};
4 changes: 2 additions & 2 deletions contracts/collections/sg721-nt/examples/schema.rs
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ use std::fs::create_dir_all;
use cosmwasm_schema::{export_schema, export_schema_with_title, remove_schemas, schema_for};

use cw721::{
state::CollectionMetadata, DefaultOptionCollectionMetadataExtension,
CollectionMetadataAndExtension, DefaultOptionCollectionMetadataExtension,
DefaultOptionNftMetadataExtension,
};
#[allow(deprecated)]
@@ -51,7 +51,7 @@ fn main() {
#[allow(deprecated)]
export_schema(&schema_for!(ContractInfoResponse), &out_dir);
export_schema(
&schema_for!(CollectionMetadata<DefaultOptionCollectionMetadataExtension>),
&schema_for!(CollectionMetadataAndExtension<DefaultOptionCollectionMetadataExtension>),
&out_dir,
);
export_schema_with_title(
2 changes: 1 addition & 1 deletion contracts/collections/sg721-nt/src/lib.rs
Original file line number Diff line number Diff line change
@@ -37,7 +37,7 @@ pub mod entry {
use crate::msg::ExecuteMsg;
use cosmwasm_std::{Binary, Deps, DepsMut, Empty, Env, MessageInfo, Response, StdError};
use cw721::msg::Cw721MigrateMsg;
use cw721_base::execute::Cw721Execute;
use cw721_base::traits::Cw721Execute;
use sg721_base::ContractError;

#[entry_point]
8 changes: 5 additions & 3 deletions contracts/collections/sg721-updatable/examples/schema.rs
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ use std::fs::create_dir_all;
use cosmwasm_schema::{export_schema, export_schema_with_title, remove_schemas, schema_for};

use cw721::{
state::CollectionMetadata, CollectionMetadataExtension,
CollectionMetadataAndExtension, CollectionMetadataExtensionWrapper,
DefaultOptionCollectionMetadataExtension, DefaultOptionNftMetadataExtension, RoyaltyInfo,
};
#[allow(deprecated)]
@@ -41,7 +41,9 @@ fn main() {
#[allow(deprecated)]
export_schema(&schema_for!(CollectionInfoResponse), &out_dir);
export_schema(
&schema_for!(CollectionMetadata<CollectionMetadataExtension<RoyaltyInfo>>),
&schema_for!(
CollectionMetadataAndExtension<CollectionMetadataExtensionWrapper<RoyaltyInfo>>
),
&out_dir,
);
export_schema_with_title(
@@ -61,7 +63,7 @@ fn main() {
#[allow(deprecated)]
export_schema(&schema_for!(ContractInfoResponse), &out_dir);
export_schema(
&schema_for!(CollectionMetadata<DefaultOptionCollectionMetadataExtension>),
&schema_for!(CollectionMetadataAndExtension<DefaultOptionCollectionMetadataExtension>),
&out_dir,
);
export_schema_with_title(
2 changes: 1 addition & 1 deletion contracts/collections/sg721-updatable/src/contract.rs
Original file line number Diff line number Diff line change
@@ -256,7 +256,7 @@ mod tests {
from_json, to_json_binary, ContractInfoResponse, ContractResult, Empty, OwnedDeps, Querier,
QuerierResult, QueryRequest, SystemError, SystemResult, WasmQuery,
};
use cw721_base::query::Cw721Query;
use cw721_base::traits::Cw721Query;
use sg721::{CollectionInfo, InstantiateMsg};
use std::marker::PhantomData;

Loading