andromeda_std/common/
context.rs1use 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}