28 Commits

Author SHA1 Message Date
Mauro Romito
5e5fb19f42 pr suggestions 2026-02-19 22:40:31 +01:00
Mauro Romito
1bb0a8c136 removed unused import and fixed tests for swift testing 2026-02-19 22:40:31 +01:00
Mauro Romito
a0be508691 improved the code so that we can use the AudioPlayerState directly to check the playback speed and added localization 2026-02-19 22:40:31 +01:00
Florian
5f724941ee Voice message: variable play back speed (#5121)
* Implement voice message variable playback speed

* Move playback speed string to Untranslated

https://github.com/element-hq/element-x-ios/pull/5121#discussion_r2822631371

* Address review feedback for voice message playback speed

- Persist voice message playback speed as an enum in AppSettings instead of storing an index.
- Update playback speed cycling to derive from enum allCases and safely fall back to `.default` if the stored value cannot be resolved.
- Apply runtime speed updates in AudioPlayer only when the player is in the `.playing` state.
- Keep MediaPlayerProviderTests formatting/indentation style intact while retaining mock playback speed setup.
- Regenerate preview snapshots for:
  - PlaybackSpeedButton
  - VoiceMessageRoomPlaybackView
  - VoiceMessageRoomTimelineView

* Move VoiceMessagePlaybackSpeed outside AppSettings, remove speedRatio

* Stabilize PlaybackSpeedButton width

* Sync voice-message speed label

- Add voiceMessagePlaybackSpeed to TimelineViewState and bind it from appSettings.$voiceMessagePlaybackSpeed.
- Pass that timeline-level speed into VoiceMessageRoomPlaybackView and use it for PlaybackSpeedButton, so labels update consistently across items.
- Use @EnvironmentObject in VoiceMessageRoomTimelineContent so the view re-renders when timeline context state changes.
- In WaveformInteractionModifier, add .allowsHitTesting(showCursor) to the cursor interaction view so hidden pre-playback cursor hit area does not steal taps from the speed button.
2026-02-19 22:40:31 +01:00
Stefan Ceriu
04053ae69b Update files following swiftformat upgrade 2026-01-27 12:50:57 +02:00
Doug
e4d961225a Silence some warnings. (#4969) 2026-01-19 15:16:16 +00:00
Mauro
6160c44d67 Update copyright holding and dates (#4640)
* Update copyright holding and dates

* compound IDE Macros updated

* update copyright

* update copyrights done

* update templates and README
2025-10-21 14:34:56 +02:00
manuroe
c29f4cc9b4 Dual licensing: AGPL + Element Commercial (#3657)
* New LICENSE-COMMERCIAL file

* Apply dual licenses: AGPL + Element Commercial to file headers

* Update README with dual licensing
2025-01-06 11:27:37 +01:00
Doug
7980b4f464 Update the SDK. (#3565)
* Update the SDK.

* Add mockMXC URLs to fix all the crashes during tests.

* Refactor Voice Messages to not use a MediaSource for local files.
2024-11-28 08:34:38 +00:00
Stefan Ceriu
678767d7fd Add support for showing media playback controls on the lock screen 2024-09-09 14:42:32 +03:00
Stefan Ceriu
22bb305e79 Fixes #3197 - Allow voice message playback in the background
- inform other audio sessions on deactivation
- let CallKit handle the audioSession for ElementCall
2024-09-09 14:42:32 +03:00
Stefan Ceriu
89eae00479 Switch license to AGPL (#3237)
* Switch license file to AGPL

* Update file copyright headers

* Update the default project file header
2024-09-06 16:34:30 +03:00
Mauro
84b0f967e8 Removing Dead Code part 1 (#2234) 2023-12-13 09:51:57 +01:00
Nicolas Mauri
7fa9b8a348 Fixed some issues with voice messages when sent from a bridge. (#2190) 2023-11-30 17:39:54 +01:00
Nicolas Mauri
167a7075e6 Fix: added sample rate conversion for recording voice messages (#2188) 2023-11-29 15:20:02 +00:00
Nicolas Mauri
619e781a7f Display voice message progress cursor if progress is greater than zero (#2077) 2023-11-13 16:41:38 +01:00
Nicolas Mauri
37556463d8 New voice message recording mode (#2051)
* Lock voice message recording

* Use the VoiceMessageCache to store the recording file

* Rework on some composer toolbar buttons

* Update accessibility labels for voice message recording button

* PreviewTests
2023-11-10 15:32:22 +00:00
Nicolas Mauri
d3a5c6c983 Voice message recording enhancements (#2042)
* Use Combine to report AudioRecorder state changes

* AudioRecorder is now using AVAudioEngine instead of AVAudioRecorder

* Stop recording when audio configuration changes

* AudioRecorder error handling

* UnitTests

* Use Accelerate to calculate RMS
2023-11-08 10:19:28 +01:00
Alfonso Grillo
00994dc3d7 Add deferred spinner for voice messages (#2018)
* Add  delayedLoaderPlaybackState

* Add more tests

* Fix Xcode 14 build error

* Refactor  delayedLoaderPlaybackState -> playerButtonPlaybackState

* Fix runtime issue
2023-11-03 10:39:22 +00:00
Alfonso Grillo
2e090e38da Voice message record button hapitcs (#2013)
* Move tooltip logics in VoiceMessageRecordingButton

* Add hapitc feedback when recording a voice message

* Cleanup
2023-11-02 12:58:19 +01:00
Nicolas Mauri
20e6e4e97d Fix: release audio session after playback ends (#1992) 2023-10-31 13:13:50 +00:00
Nicolas Mauri
dbc1704751 Fix the delay when switching between voice messages (#1985) 2023-10-30 19:44:59 +00:00
Nicolas Mauri
2f7382fbf0 Fix: Keep the progress indicator visible after pausing or scrubbing a voice message. (#1969) 2023-10-27 15:24:22 +00:00
Nicolas Mauri
af9e245e79 Add some logs to allow debugging of voice messages in rageshake (#1967) 2023-10-26 17:22:41 +02:00
Nicolas Mauri
ec78d43acd Fix playback and recording of voice messages (#1948) 2023-10-24 16:49:42 +00:00
Nicolas Mauri
54be55e4af Allow to record a voice message (#1926) 2023-10-23 15:47:36 +00:00
Alfonso Grillo
c6f90e611d Voice message waveform from audio files (#1919)
* Add DSWaveformImage

* Add estimated waveform

* Add progress mask modifier

* Add real waveform

* Fix cursor

* Fix scale factor

* Refine ProgressMaskModifier

* Refine waveform logic

* Add docs

* Add waveform placeholder
2023-10-19 11:01:45 +02:00
Nicolas Mauri
64f5122d32 Add UI to record a voice message from the composer toolbar (#1892) 2023-10-16 15:18:51 +00:00