abstract_add_on/
execute.rs

1use abstract_os::add_on::BaseExecuteMsg;
2
3use cosmwasm_std::{DepsMut, Env, MessageInfo, Response};
4
5use crate::{state::AddOnContract, AddOnResult};
6
7impl<'a> AddOnContract<'a> {
8    pub fn execute(
9        &self,
10        deps: DepsMut,
11        _env: Env,
12        info: MessageInfo,
13        message: BaseExecuteMsg,
14    ) -> AddOnResult {
15        match message {
16            BaseExecuteMsg::UpdateConfig { memory_address } => {
17                self.update_config(deps, info, memory_address)
18            }
19        }
20    }
21
22    fn update_config(
23        &self,
24        deps: DepsMut,
25        info: MessageInfo,
26        memory_address: Option<String>,
27    ) -> AddOnResult {
28        // self._update_config(deps, info, memory_address)?;
29        // Only the admin should be able to call this
30        self.admin.assert_admin(deps.as_ref(), &info.sender)?;
31
32        let mut state = self.base_state.load(deps.storage)?;
33
34        if let Some(memory_address) = memory_address {
35            state.memory.address = deps.api.addr_validate(memory_address.as_str())?;
36        }
37
38        self.base_state.save(deps.storage, &state)?;
39
40        Ok(Response::default().add_attribute("action", "updated_memory_address"))
41    }
42}