Skip to content

Commit

Permalink
ffi: Use Duration instead of u64
Browse files Browse the repository at this point in the history
Resolves FIXME comment.
  • Loading branch information
jplatte committed Jun 15, 2023
1 parent 7756b6d commit 7feba6f
Showing 1 changed file with 6 additions and 10 deletions.
16 changes: 6 additions & 10 deletions bindings/matrix-sdk-ffi/src/timeline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -631,9 +631,7 @@ impl TryFrom<&ImageInfo> for BaseImageInfo {

#[derive(Clone, uniffi::Record)]
pub struct AudioInfo {
// FIXME: duration should be a std::time::Duration once the UniFFI proc-macro API adds support
// for that
pub duration: Option<u64>,
pub duration: Option<Duration>,
pub size: Option<u64>,
pub mimetype: Option<String>,
}
Expand All @@ -642,8 +640,7 @@ impl TryFrom<&AudioInfo> for BaseAudioInfo {
type Error = TimelineError;

fn try_from(value: &AudioInfo) -> Result<Self, TimelineError> {
let duration =
value.duration.map(Duration::from_secs).ok_or(TimelineError::MissingMediaInfoField)?;
let duration = value.duration.ok_or(TimelineError::MissingMediaInfoField)?;
let size = UInt::try_from(value.size.ok_or(TimelineError::MissingMediaInfoField)?)
.map_err(|_| TimelineError::InvalidMediaInfoField)?;

Expand All @@ -653,7 +650,7 @@ impl TryFrom<&AudioInfo> for BaseAudioInfo {

#[derive(Clone, uniffi::Record)]
pub struct VideoInfo {
pub duration: Option<u64>,
pub duration: Option<Duration>,
pub height: Option<u64>,
pub width: Option<u64>,
pub mimetype: Option<String>,
Expand All @@ -667,8 +664,7 @@ impl TryFrom<&VideoInfo> for BaseVideoInfo {
type Error = TimelineError;

fn try_from(value: &VideoInfo) -> Result<Self, TimelineError> {
let duration =
value.duration.map(Duration::from_secs).ok_or(TimelineError::MissingMediaInfoField)?;
let duration = value.duration.ok_or(TimelineError::MissingMediaInfoField)?;
let height = UInt::try_from(value.height.ok_or(TimelineError::MissingMediaInfoField)?)
.map_err(|_| TimelineError::InvalidMediaInfoField)?;
let width = UInt::try_from(value.width.ok_or(TimelineError::MissingMediaInfoField)?)
Expand Down Expand Up @@ -789,7 +785,7 @@ impl From<&matrix_sdk::ruma::events::room::ImageInfo> for ImageInfo {
impl From<&matrix_sdk::ruma::events::room::message::AudioInfo> for AudioInfo {
fn from(info: &matrix_sdk::ruma::events::room::message::AudioInfo) -> Self {
Self {
duration: info.duration.map(|d| d.as_millis() as u64),
duration: info.duration,
size: info.size.map(Into::into),
mimetype: info.mimetype.clone(),
}
Expand All @@ -806,7 +802,7 @@ impl From<&matrix_sdk::ruma::events::room::message::VideoInfo> for VideoInfo {
});

Self {
duration: info.duration.map(|d| d.as_secs()),
duration: info.duration,
height: info.height.map(Into::into),
width: info.width.map(Into::into),
mimetype: info.mimetype.clone(),
Expand Down

0 comments on commit 7feba6f

Please sign in to comment.