Skip to content

Commit

Permalink
Revert proposal execute callback messages
Browse files Browse the repository at this point in the history
  • Loading branch information
ismellike committed Sep 22, 2024
1 parent 2356fcb commit 8f34329
Show file tree
Hide file tree
Showing 18 changed files with 59 additions and 163 deletions.
54 changes: 22 additions & 32 deletions Cargo.lock

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

1 change: 0 additions & 1 deletion contracts/dao-dao-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,3 @@ cw721-base = { workspace = true }
dao-cw-orch = { path = "../../packages/cw-orch" }
dao-proposal-sudo = { workspace = true }
dao-voting-cw20-balance = { workspace = true }
dao-callback-messages = { workspace = true }
36 changes: 10 additions & 26 deletions contracts/dao-dao-core/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ use cosmwasm_std::{
use cw2::{get_contract_version, set_contract_version, ContractVersion};
use cw_paginate_storage::{paginate_map, paginate_map_keys, paginate_map_values};
use cw_storage_plus::Map;
use cw_utils::{parse_reply_execute_data, parse_reply_instantiate_data, Duration};
use cw_utils::{parse_reply_instantiate_data, Duration};
use dao_interface::{
msg::{ExecuteMsg, InitialItem, InstantiateMsg, MigrateMsg, QueryMsg},
query::{
AdminNominationResponse, Cw20BalanceResponse, DaoURIResponse, DumpStateResponse,
GetItemResponse, PauseInfoResponse, ProposalModuleCountResponse, SubDao,
},
state::{
Admin, CallbackMessages, Config, ModuleInstantiateInfo, ProposalModule,
Admin, Config, ModuleInstantiateCallback, ModuleInstantiateInfo, ProposalModule,
ProposalModuleStatus,
},
voting,
Expand All @@ -30,10 +30,9 @@ use crate::state::{
pub(crate) const CONTRACT_NAME: &str = "crates.io:dao-dao-core";
pub(crate) const CONTRACT_VERSION: &str = env!("CARGO_PKG_VERSION");

const PROPOSAL_MODULE_INSTANTIATE_REPLY_ID: u64 = 0;
const PROPOSAL_MODULE_REPLY_ID: u64 = 0;
const VOTE_MODULE_INSTANTIATE_REPLY_ID: u64 = 1;
const VOTE_MODULE_UPDATE_REPLY_ID: u64 = 2;
const PROPOSAL_MODULE_EXECUTE_REPLY_ID: u64 = 3;

#[cfg_attr(not(feature = "library"), entry_point)]
pub fn instantiate(
Expand Down Expand Up @@ -72,7 +71,7 @@ pub fn instantiate(
.proposal_modules_instantiate_info
.into_iter()
.map(|info| info.into_wasm_msg(env.contract.address.clone()))
.map(|wasm| SubMsg::reply_on_success(wasm, PROPOSAL_MODULE_INSTANTIATE_REPLY_ID))
.map(|wasm| SubMsg::reply_on_success(wasm, PROPOSAL_MODULE_REPLY_ID))
.collect();
if proposal_module_msgs.is_empty() {
return Err(ContractError::NoActiveProposalModules {});
Expand Down Expand Up @@ -229,10 +228,7 @@ pub fn execute_proposal_hook(

Ok(Response::default()
.add_attribute("action", "execute_proposal_hook")
.add_submessages(
msgs.into_iter()
.map(|msg| SubMsg::reply_on_success(msg, PROPOSAL_MODULE_EXECUTE_REPLY_ID)),
))
.add_messages(msgs))
}

pub fn execute_nominate_admin(
Expand Down Expand Up @@ -396,7 +392,7 @@ pub fn execute_update_proposal_modules(
let to_add: Vec<SubMsg<Empty>> = to_add
.into_iter()
.map(|info| info.into_wasm_msg(env.contract.address.clone()))
.map(|wasm| SubMsg::reply_on_success(wasm, PROPOSAL_MODULE_INSTANTIATE_REPLY_ID))
.map(|wasm| SubMsg::reply_on_success(wasm, PROPOSAL_MODULE_REPLY_ID))
.collect();

Ok(Response::default()
Expand Down Expand Up @@ -956,7 +952,7 @@ pub fn migrate(deps: DepsMut, env: Env, msg: MigrateMsg) -> Result<Response, Con
#[cfg_attr(not(feature = "library"), entry_point)]
pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result<Response, ContractError> {
match msg.id {
PROPOSAL_MODULE_INSTANTIATE_REPLY_ID => {
PROPOSAL_MODULE_REPLY_ID => {
let res = parse_reply_instantiate_data(msg)?;
let prop_module_addr = deps.api.addr_validate(&res.contract_address)?;
let total_module_count = TOTAL_PROPOSAL_MODULE_COUNT.load(deps.storage)?;
Expand All @@ -977,7 +973,7 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result<Response, ContractE

// Check for module instantiation callbacks
let callback_msgs = match res.data {
Some(data) => from_json::<CallbackMessages>(&data)
Some(data) => from_json::<ModuleInstantiateCallback>(&data)
.map(|m| m.msgs)
.unwrap_or_else(|_| vec![]),
None => vec![],
Expand All @@ -987,6 +983,7 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result<Response, ContractE
.add_attribute("prop_module".to_string(), res.contract_address)
.add_messages(callback_msgs))
}

VOTE_MODULE_INSTANTIATE_REPLY_ID => {
let res = parse_reply_instantiate_data(msg)?;
let vote_module_addr = deps.api.addr_validate(&res.contract_address)?;
Expand All @@ -1002,7 +999,7 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result<Response, ContractE

// Check for module instantiation callbacks
let callback_msgs = match res.data {
Some(data) => from_json::<CallbackMessages>(&data)
Some(data) => from_json::<ModuleInstantiateCallback>(&data)
.map(|m| m.msgs)
.unwrap_or_else(|_| vec![]),
None => vec![],
Expand All @@ -1020,19 +1017,6 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result<Response, ContractE

Ok(Response::default().add_attribute("voting_module", vote_module_addr))
}
PROPOSAL_MODULE_EXECUTE_REPLY_ID => match parse_reply_execute_data(msg) {
Ok(res) => {
let callback_msgs = match res.data {
Some(data) => from_json::<CallbackMessages>(&data)
.map(|m| m.msgs)
.unwrap_or_else(|_| vec![]),
None => vec![],
};

Ok(Response::default().add_messages(callback_msgs))
}
Err(_) => Ok(Response::default()),
},
_ => Err(ContractError::UnknownReplyID {}),
}
}
Expand Down
7 changes: 4 additions & 3 deletions contracts/external/dao-abc-factory/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ use cw_abc::msg::{
use cw_storage_plus::{Bound, Item, Map};
use cw_utils::parse_reply_instantiate_data;
use dao_interface::{
state::CallbackMessages, token::TokenFactoryCallback, voting::Query as VotingModuleQueryMsg,
state::ModuleInstantiateCallback, token::TokenFactoryCallback,
voting::Query as VotingModuleQueryMsg,
};

use crate::{
Expand Down Expand Up @@ -158,10 +159,10 @@ pub fn reply(deps: DepsMut, _env: Env, msg: Reply) -> Result<Response, ContractE
};

// DAO must accept ownership transfer. Here we include a
// CallbackMessages message that will be called by the
// ModuleInstantiateCallback message that will be called by the
// dao-dao-core contract when voting module instantiation is
// complete.
let callback = CallbackMessages {
let callback = ModuleInstantiateCallback {
msgs: vec![CosmosMsg::Wasm(WasmMsg::Execute {
contract_addr: abc_addr.clone(),
msg: to_json_binary(&AbcExecuteMsg::UpdateOwnership(
Expand Down
4 changes: 2 additions & 2 deletions contracts/external/dao-migrator/src/contract.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use cosmwasm_std::{
use cw2::set_contract_version;
use dao_interface::{
query::SubDao,
state::{CallbackMessages, ProposalModule},
state::{ModuleInstantiateCallback, ProposalModule},
};

use crate::{
Expand Down Expand Up @@ -42,7 +42,7 @@ pub fn instantiate(
CORE_ADDR.save(deps.storage, &info.sender)?;

Ok(
Response::default().set_data(to_json_binary(&CallbackMessages {
Response::default().set_data(to_json_binary(&ModuleInstantiateCallback {
msgs: vec![WasmMsg::Execute {
contract_addr: env.contract.address.to_string(),
msg: to_json_binary(&MigrateV1ToV2 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use cosmwasm_std::{
};
use cw2::set_contract_version;

use dao_interface::state::CallbackMessages;
use dao_interface::state::ModuleInstantiateCallback;
use dao_pre_propose_approval_single::msg::{
ApproverProposeMessage, ExecuteExt as ApprovalExt, ExecuteMsg as PreProposeApprovalExecuteMsg,
};
Expand Down Expand Up @@ -59,7 +59,7 @@ pub fn instantiate(
let addr = deps.api.addr_validate(&msg.pre_propose_approval_contract)?;
PRE_PROPOSE_APPROVAL_CONTRACT.save(deps.storage, &addr)?;

Ok(resp.set_data(to_json_binary(&CallbackMessages {
Ok(resp.set_data(to_json_binary(&ModuleInstantiateCallback {
msgs: vec![
CosmosMsg::Wasm(WasmMsg::Execute {
contract_addr: addr.to_string(),
Expand Down
23 changes: 0 additions & 23 deletions contracts/test/dao-callback-messages/Cargo.toml

This file was deleted.

3 changes: 0 additions & 3 deletions contracts/test/dao-callback-messages/README.md

This file was deleted.

Loading

0 comments on commit 8f34329

Please sign in to comment.