Skip to main content

xmtp_db/encrypted_store/group/
convert.rs

1use super::*;
2use xmtp_proto::ConversionError;
3use xmtp_proto::xmtp::device_sync::group_backup::GroupMembershipStateSave;
4
5impl TryFrom<GroupMembershipStateSave> for GroupMembershipState {
6    type Error = ConversionError;
7    fn try_from(value: GroupMembershipStateSave) -> Result<Self, Self::Error> {
8        let membership_state = match value {
9            GroupMembershipStateSave::Allowed => Self::Allowed,
10            GroupMembershipStateSave::Pending => Self::Pending,
11            GroupMembershipStateSave::Rejected => Self::Rejected,
12            GroupMembershipStateSave::Restored => Self::Restored,
13            GroupMembershipStateSave::PendingRemove => Self::PendingRemove,
14            _ => {
15                return Err(ConversionError::Unspecified("group_membership_state"));
16            }
17        };
18        Ok(membership_state)
19    }
20}
21
22impl From<GroupMembershipState> for GroupMembershipStateSave {
23    fn from(value: GroupMembershipState) -> Self {
24        match value {
25            GroupMembershipState::Allowed => Self::Allowed,
26            GroupMembershipState::Pending => Self::Pending,
27            GroupMembershipState::Rejected => Self::Rejected,
28            GroupMembershipState::Restored => Self::Restored,
29            GroupMembershipState::PendingRemove => Self::PendingRemove,
30        }
31    }
32}