Skip to main content

oil_chat_api/state/
mod.rs

1mod 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}