andromeda_std/common/
context.rs

1use crate::amp::messages::AMPPkt;
2use cosmwasm_std::{DepsMut, Env, MessageInfo};
3
4pub struct ExecuteContext<'a> {
5    pub deps: DepsMut<'a>,
6    pub info: MessageInfo,
7    pub env: Env,
8    pub amp_ctx: Option<AMPPkt>,
9}
10
11impl<'a> ExecuteContext<'a> {
12    #[inline]
13    pub fn new(deps: DepsMut, info: MessageInfo, env: Env) -> ExecuteContext {
14        ExecuteContext {
15            deps,
16            info,
17            env,
18            amp_ctx: None,
19        }
20    }
21
22    pub fn with_ctx(mut self, amp_ctx: AMPPkt) -> Self {
23        self.amp_ctx = Some(amp_ctx);
24        self
25    }
26
27    pub fn contains_sender(&self, addr: &str) -> bool {
28        if self.info.sender == addr {
29            return true;
30        }
31
32        match &self.amp_ctx {
33            None => false,
34            Some(ctx) => ctx.ctx.get_origin() == addr || ctx.ctx.get_previous_sender() == addr,
35        }
36    }
37}