pryty-rustbrowser
Browser API hooks for Dioxus web apps.
Install
What this crate provides
This crate exposes four hook groups:
- Audio recording
- Camera stream control
- Typed localStorage state
- Clipboard read/write
API Overview
Recording
use_recording() -> Recording
Creates a recording controller.
Recording fields:
start: Callback<()>stop: Callback<()>data: Signal<Option<Vec<u8>>>state: Signal<RecordingState>last_error: Signal<Option<String>>
Recording methods:
is_active(&self) -> bool
Returnstrueonly while actual recording is active.is_busy(&self) -> bool
Returnstruewhile transitioning (StartingorStopping).
RecordingState:
IdleStartingRecordingStoppingError(String)
RecordingError variants:
WindowUnavailableMediaDevicesUnavailableGetUserMediaFailed(String)CastMediaStreamFailedRecorderCreateFailed(String)RecorderStartFailed(String)RecorderStopFailed(String)RecorderRequestDataFailed(String)
Camera
use_camera() -> Camera
Creates a camera controller.
Camera fields:
start: Callback<()>stop: Callback<()>stream: Signal<Option<web_sys::MediaStream>>state: Signal<CameraState>last_error: Signal<Option<String>>
Camera methods:
is_active(&self) -> bool
Returnstrueonly while camera stream is active.is_busy(&self) -> bool
Returnstruewhile transitioning (StartingorStopping).
CameraState:
IdleStartingActiveStoppingError(String)
CameraError variants:
WindowUnavailableMediaDevicesUnavailableGetUserMediaFailed(String)CastMediaStreamFailed
Storage
use_storage<T>(key, default) -> Result<(Signal<T>, Callback<T>), StorageError>
Where:
T: serde::Serialize + serde::de::DeserializeOwned + Clone + 'static
Reads from localStorage and binds value to a Signal<T>.
- If key exists and decode succeeds, uses stored value
- Otherwise uses
default - Setter writes to
localStorageand updates signal
read_storage<T>(key) -> Result<Option<T>, StorageError>
Reads one value from localStorage and deserializes it.
write_storage<T>(key, value) -> Result<(), StorageError>
Serializes and writes one value to localStorage.
StorageError variants:
WindowUnavailableLocalStorageUnavailableLocalStorageAccessFailed(String)ReadFailed(String)WriteFailed(String)SerializeFailed(String)DeserializeFailed(String)
Clipboard
use_clipboard() -> Clipboard
Creates clipboard helper.
Clipboard methods:
write(&self, text: &str) -> Callback<()>
Returns a callback that writes text asynchronously.write_async(&self, text: &str) -> Result<(), ClipboardError>
Async write with explicit result.read(&self) -> Result<Option<String>, ClipboardError>
Async read with explicit result.
ClipboardError variants:
WindowUnavailableClipboardUnavailableReadFailed(String)WriteFailed(String)
Re-exports
pub use ;
pub use ;
pub use ;
pub use ;
Usage Examples
1) Recording
use *;
use *;
2) Camera
use *;
use *;
3) Typed storage
use *;
use *;
4) Clipboard
use *;
use *;
Notes
- This crate is designed for browser targets (
wasm32). - Browser permission policies apply to camera/microphone/clipboard APIs.
- Some features require secure context (HTTPS or localhost).
License
Apache-2.0