@@ -69,10 +69,13 @@ pub fn suggested_role_for_power_level(
69
69
Ok ( RoomMemberRole :: suggested_role_for_power_level ( power_level. try_into ( ) ?) )
70
70
}
71
71
72
+ /// Get the suggested power level for the given role.
73
+ ///
74
+ /// Returns an error if the value of the power level is unsupported.
72
75
#[ 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 > {
74
77
// 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 ( ) ? )
76
79
}
77
80
78
81
/// Generates a `matrix.to` permalink to the given userID.
@@ -106,8 +109,8 @@ impl TryFrom<SdkRoomMember> for RoomMember {
106
109
avatar_url : m. avatar_url ( ) . map ( |a| a. to_string ( ) ) ,
107
110
membership : m. membership ( ) . clone ( ) . try_into ( ) ?,
108
111
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 ( ) ? ,
111
114
is_ignored : m. is_ignored ( ) ,
112
115
suggested_role_for_power_level : m. suggested_role_for_power_level ( ) ,
113
116
membership_change_reason : m. event ( ) . reason ( ) . map ( |s| s. to_owned ( ) ) ,
@@ -148,12 +151,14 @@ pub enum PowerLevel {
148
151
Value { value : i64 } ,
149
152
}
150
153
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 > {
153
158
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 ) ,
157
162
}
158
163
}
159
164
}
0 commit comments