pryty_rustbrowser/lib.rs
1// Example
2//
3// ```
4// use pryty_rustbrowser::*;
5//
6// fn App() -> Element {
7// let rec = use_recording();
8// let (name, set_name) = use_storage("username".to_string());
9//
10// rsx! {
11// button { onclick: move |_| rec.start(), "录音" }
12// input { value: "{name}", oninput: move |e| set_name(e.value()) }
13// }
14// }
15// ```
16// src/lib.rs
17mod audio;
18mod camera;
19mod clipboard;
20mod storage;
21
22pub use audio::{
23 use_recording,
24 AudioQualityConfig,
25 Recording,
26 RecordingError,
27 RecordingState,
28};
29pub use camera::{
30 use_camera,
31 Camera,
32 CameraError,
33 CameraQualityConfig,
34 CameraState,
35};
36pub use clipboard::{use_clipboard, Clipboard, ClipboardError};
37pub use storage::{read_storage, use_storage, write_storage, StorageError};
38/*
39use dioxus::prelude::*;
40use pryty_rustbrowser::{use_camera, use_clipboard, use_recording, use_storage};
41
42fn main() {
43 dioxus::launch(App);
44}
45
46#[component]
47fn App() -> Element {
48 let camera = use_camera();
49 let recording = use_recording();
50 let (name, set_name) = use_storage("username".to_string());
51 let clipboard = use_clipboard();
52
53 let on_copy = {
54 let name = name.clone();
55 move |_| {
56 clipboard.write(&name.read());
57 }
58 };
59
60 rsx! {
61 div {
62 h1 { "pryty-rustbrowser demo" }
63
64 div {
65 input {
66 value: "{name}",
67 oninput: move |e| set_name.call(e.value())
68 }
69 button { onclick: on_copy, "Copy Username" }
70 }
71
72 div {
73 button {
74 onclick: move |_| camera.start.call(()),
75 disabled: *camera.active.read(),
76 "Start Camera"
77
78 }
79 button {
80 onclick: move |_| camera.stop.call(()),
81 disabled: !*camera.active.read(),
82 "Stop Camera"
83 }
84 p { "camera active: {camera.active.read()}" }
85 }
86
87 div {
88 button {
89 onclick: move |_| recording.start.call(()),
90 disabled: *recording.active.read(),
91 "Start Recording"
92 }
93 button {
94 onclick: move |_| recording.start_with_quality.call(AudioQualityConfig::high()),
95 "Start Recording"
96 }
97 button {
98 onclick: move |_| recording.stop.call(()),
99 disabled: !*recording.active.read(),
100 "Stop Recording"
101 }
102 p { "recording active: {recording.active.read()}" }
103 p {
104 "bytes: {
105 recording
106 .data
107 .read()
108 .as_ref()
109 .map(|v| v.len().to_string())
110 .unwrap_or_else(|| \"0\".to_string())
111 }"
112 }
113 }
114 }
115 }
116} */