@@ -69,10 +69,13 @@ pub fn suggested_role_for_power_level(
6969 Ok ( RoomMemberRole :: suggested_role_for_power_level ( power_level. try_into ( ) ?) )
7070}
7171
72+ /// Get the suggested power level for the given role.
73+ ///
74+ /// Returns an error if the value of the power level is unsupported.
7275#[ matrix_sdk_ffi_macros:: export]
73- pub fn suggested_power_level_for_role ( role : RoomMemberRole ) -> PowerLevel {
76+ pub fn suggested_power_level_for_role ( role : RoomMemberRole ) -> Result < PowerLevel , ClientError > {
7477 // It's not possible to expose methods on an Enum through Uniffi ☹️
75- role. suggested_power_level ( ) . into ( )
78+ Ok ( role. suggested_power_level ( ) . try_into ( ) ? )
7679}
7780
7881/// Generates a `matrix.to` permalink to the given userID.
@@ -106,8 +109,8 @@ impl TryFrom<SdkRoomMember> for RoomMember {
106109 avatar_url : m. avatar_url ( ) . map ( |a| a. to_string ( ) ) ,
107110 membership : m. membership ( ) . clone ( ) . try_into ( ) ?,
108111 is_name_ambiguous : m. name_ambiguous ( ) ,
109- power_level : m. power_level ( ) . into ( ) ,
110- normalized_power_level : m. normalized_power_level ( ) . into ( ) ,
112+ power_level : m. power_level ( ) . try_into ( ) ? ,
113+ normalized_power_level : m. normalized_power_level ( ) . try_into ( ) ? ,
111114 is_ignored : m. is_ignored ( ) ,
112115 suggested_role_for_power_level : m. suggested_role_for_power_level ( ) ,
113116 membership_change_reason : m. event ( ) . reason ( ) . map ( |s| s. to_owned ( ) ) ,
@@ -148,12 +151,14 @@ pub enum PowerLevel {
148151 Value { value : i64 } ,
149152}
150153
151- impl From < UserPowerLevel > for PowerLevel {
152- fn from ( value : UserPowerLevel ) -> Self {
154+ impl TryFrom < UserPowerLevel > for PowerLevel {
155+ type Error = NotYetImplemented ;
156+
157+ fn try_from ( value : UserPowerLevel ) -> Result < Self , Self :: Error > {
153158 match value {
154- UserPowerLevel :: Infinite => Self :: Infinite ,
155- UserPowerLevel :: Int ( value) => Self :: Value { value : value. into ( ) } ,
156- _ => unimplemented ! ( ) ,
159+ UserPowerLevel :: Infinite => Ok ( Self :: Infinite ) ,
160+ UserPowerLevel :: Int ( value) => Ok ( Self :: Value { value : value. into ( ) } ) ,
161+ _ => Err ( NotYetImplemented ) ,
157162 }
158163 }
159164}
0 commit comments