oil_chat_api/state/
mod.rs1mod config;
2mod message;
3mod reaction;
4
5pub use config::*;
6pub use message::*;
7pub use reaction::*;
8
9use crate::consts::*;
10use steel::*;
11
12#[repr(u8)]
13#[derive(Clone, Copy, Debug, Eq, PartialEq, IntoPrimitive, TryFromPrimitive)]
14pub enum ChatAccount {
15 Config = 100,
16 Message = 101,
17 Reaction = 102,
18}
19
20pub fn config_pda() -> (Pubkey, u8) {
21 Pubkey::find_program_address(&[CONFIG], &crate::ID)
22}
23
24pub fn message_pda(authority: Pubkey, message_id: u64) -> (Pubkey, u8) {
25 Pubkey::find_program_address(
26 &[MESSAGE, &authority.to_bytes(), &message_id.to_le_bytes()],
27 &crate::ID,
28 )
29}
30
31pub fn reaction_pda(message_pda: Pubkey, authority: Pubkey, emoji: &[u8]) -> (Pubkey, u8) {
32 Pubkey::find_program_address(
33 &[REACTION, &message_pda.to_bytes(), &authority.to_bytes(), emoji],
34 &crate::ID,
35 )
36}