Skip to content

Commit f610c6b

Browse files
authored
Implement Into<CaptureError> for the default server function error type (DioxusLabs#4205)
* implement Into<CaptureError> for the server function error type * document the server function error type * fix tests
1 parent 67f7176 commit f610c6b

File tree

20 files changed

+316
-96
lines changed

20 files changed

+316
-96
lines changed

examples/fullstack-auth/src/auth.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ pub async fn connect_to_database() -> SqlitePool {
196196
pub type Session =
197197
axum_session_auth::AuthSession<crate::auth::User, i64, SessionSqlitePool, sqlx::SqlitePool>;
198198

199-
pub async fn get_session() -> Result<Session, ServerFnError> {
199+
pub async fn get_session() -> ServerFnResult<Session> {
200200
extract::<Session, _>()
201201
.await
202202
.map_err(|_| ServerFnError::new("AuthSessionLayer was not found"))

examples/fullstack-auth/src/main.rs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ fn app() -> Element {
7575
div {
7676
button { onclick: move |_| {
7777
async move {
78-
login().await.unwrap();
78+
login().await?;
79+
Ok(())
7980
}
8081
},
8182
"Login Test User"
@@ -84,9 +85,9 @@ fn app() -> Element {
8485
div {
8586
button {
8687
onclick: move |_| async move {
87-
if let Ok(data) = get_user_name().await {
88-
user_name.set(data);
89-
}
88+
let data = get_user_name().await?;
89+
user_name.set(data);
90+
Ok(())
9091
},
9192
"Get User Name"
9293
}
@@ -95,9 +96,9 @@ fn app() -> Element {
9596
div {
9697
button {
9798
onclick: move |_| async move {
98-
if let Ok(data) = get_permissions().await {
99-
permissions.set(data);
100-
}
99+
let data = get_permissions().await?;
100+
permissions.set(data);
101+
Ok(())
101102
},
102103
"Get Permissions"
103104
}
@@ -107,20 +108,20 @@ fn app() -> Element {
107108
}
108109

109110
#[server]
110-
pub async fn get_user_name() -> Result<String, ServerFnError> {
111+
pub async fn get_user_name() -> ServerFnResult<String> {
111112
let auth = auth::get_session().await?;
112113
Ok(auth.current_user.unwrap().username.to_string())
113114
}
114115

115116
#[server]
116-
pub async fn login() -> Result<(), ServerFnError> {
117+
pub async fn login() -> ServerFnResult {
117118
let auth = auth::get_session().await?;
118119
auth.login_user(2);
119120
Ok(())
120121
}
121122

122123
#[server]
123-
pub async fn get_permissions() -> Result<String, ServerFnError> {
124+
pub async fn get_permissions() -> ServerFnResult<String> {
124125
let method: axum::http::Method = extract().await?;
125126
let auth = auth::get_session().await?;
126127
let current_user = auth.current_user.clone().unwrap_or_default();

examples/fullstack-desktop/src/main.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,26 @@ pub fn app() -> Element {
1818
button { onclick: move |_| count -= 1, "Down low!" }
1919
button {
2020
onclick: move |_| async move {
21-
if let Ok(data) = get_server_data().await {
22-
println!("Client received: {}", data);
23-
text.set(data.clone());
24-
post_server_data(data).await.unwrap();
25-
}
21+
let data = get_server_data().await?;
22+
println!("Client received: {}", data);
23+
text.set(data.clone());
24+
post_server_data(data).await?;
25+
Ok(())
2626
},
2727
"Run a server function"
2828
}
2929
"Server said: {text}"
3030
}
3131
}
3232

33-
#[server(PostServerData)]
34-
async fn post_server_data(data: String) -> Result<(), ServerFnError> {
33+
#[server]
34+
async fn post_server_data(data: String) -> ServerFnResult {
3535
println!("Server received: {}", data);
3636

3737
Ok(())
3838
}
3939

40-
#[server(GetServerData)]
41-
async fn get_server_data() -> Result<String, ServerFnError> {
40+
#[server]
41+
async fn get_server_data() -> ServerFnResult<String> {
4242
Ok("Hello from the server!".to_string())
4343
}

examples/fullstack-hello-world/src/main.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ fn app() -> Element {
2020
button { onclick: move |_| count -= 1, "Down low!" }
2121
button {
2222
onclick: move |_| async move {
23-
if let Ok(data) = get_server_data().await {
24-
println!("Client received: {}", data);
25-
text.set(data.clone());
26-
post_server_data(data).await.unwrap();
27-
}
23+
let data = get_server_data().await?;
24+
println!("Client received: {}", data);
25+
text.set(data.clone());
26+
post_server_data(data).await?;
27+
Ok(())
2828
},
2929
"Run a server function!"
3030
}
@@ -33,14 +33,14 @@ fn app() -> Element {
3333
}
3434

3535
#[server]
36-
async fn post_server_data(data: String) -> Result<(), ServerFnError> {
36+
async fn post_server_data(data: String) -> ServerFnResult {
3737
println!("Server received: {}", data);
3838

3939
Ok(())
4040
}
4141

4242
#[server]
43-
async fn get_server_data() -> Result<String, ServerFnError> {
43+
async fn get_server_data() -> ServerFnResult<String> {
4444
Ok(reqwest::get("https://httpbin.org/ip").await?.text().await?)
4545
}
4646

examples/fullstack-router/src/main.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -52,34 +52,34 @@ fn Home() -> Element {
5252
let mut text = use_signal(|| "...".to_string());
5353

5454
rsx! {
55-
Link { to: Route::Blog { id: count() }, "Go to blog" }
56-
div {
57-
h1 { "High-Five counter: {count}" }
58-
button { onclick: move |_| count += 1, "Up high!" }
59-
button { onclick: move |_| count -= 1, "Down low!" }
60-
button {
61-
onclick: move |_| async move {
62-
if let Ok(data) = get_server_data().await {
55+
Link { to: Route::Blog { id: count() }, "Go to blog" }
56+
div {
57+
h1 { "High-Five counter: {count}" }
58+
button { onclick: move |_| count += 1, "Up high!" }
59+
button { onclick: move |_| count -= 1, "Down low!" }
60+
button {
61+
onclick: move |_| async move {
62+
let data = get_server_data().await?;
6363
println!("Client received: {}", data);
6464
text.set(data.clone());
65-
post_server_data(data).await.unwrap();
66-
}
67-
},
68-
"Run server function!"
65+
post_server_data(data).await?;
66+
Ok(())
67+
},
68+
"Run server function!"
69+
}
70+
"Server said: {text}"
6971
}
70-
"Server said: {text}"
71-
}
72-
}
72+
}
7373
}
7474

7575
#[server(PostServerData)]
76-
async fn post_server_data(data: String) -> Result<(), ServerFnError> {
76+
async fn post_server_data(data: String) -> ServerFnResult {
7777
println!("Server received: {}", data);
7878

7979
Ok(())
8080
}
8181

8282
#[server(GetServerData)]
83-
async fn get_server_data() -> Result<String, ServerFnError> {
83+
async fn get_server_data() -> ServerFnResult<String> {
8484
Ok("Hello from the server!".to_string())
8585
}

examples/fullstack-streaming/src/main.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ fn app() -> Element {
99
button {
1010
onclick: move |_| async move {
1111
response.write().clear();
12-
if let Ok(stream) = test_stream().await {
13-
response.write().push_str("Stream started\n");
14-
let mut stream = stream.into_inner();
15-
while let Some(Ok(text)) = stream.next().await {
16-
response.write().push_str(&text);
17-
}
12+
let stream = test_stream().await?;
13+
response.write().push_str("Stream started\n");
14+
let mut stream = stream.into_inner();
15+
while let Some(Ok(text)) = stream.next().await {
16+
response.write().push_str(&text);
1817
}
18+
Ok(())
1919
},
2020
"Start stream"
2121
}
@@ -24,7 +24,7 @@ fn app() -> Element {
2424
}
2525

2626
#[server(output = StreamingText)]
27-
pub async fn test_stream() -> Result<TextStream, ServerFnError> {
27+
pub async fn test_stream() -> ServerFnResult<TextStream<ServerFnError>> {
2828
let (tx, rx) = futures::channel::mpsc::unbounded();
2929
tokio::spawn(async move {
3030
loop {

examples/fullstack-websockets/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fn app() -> Element {
4545
#[server(protocol = Websocket<JsonEncoding, JsonEncoding>)]
4646
async fn uppercase_ws(
4747
input: BoxedStream<String, ServerFnError>,
48-
) -> Result<BoxedStream<String, ServerFnError>, ServerFnError> {
48+
) -> ServerFnResult<BoxedStream<String, ServerFnError>> {
4949
let mut input = input;
5050

5151
// Create a channel with the output of the websocket

packages/fullstack/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ fn App() -> Element {
5858
}
5959
6060
#[server]
61-
async fn get_meaning(of: String) -> Result<Option<u32>, ServerFnError> {
61+
async fn get_meaning(of: String) -> ServerFnResult<Option<u32>> {
6262
Ok(of.contains("life").then(|| 42))
6363
}
6464
```
@@ -131,7 +131,7 @@ fn App() -> Element {
131131
}
132132
133133
#[server]
134-
async fn get_meaning(of: String) -> Result<Option<u32>, ServerFnError> {
134+
async fn get_meaning(of: String) -> ServerFnResult<Option<u32>> {
135135
Ok(of.contains("life").then(|| 42))
136136
}
137137
```

packages/fullstack/docs/request_origin.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ fn PrintHtmlRequestInfo() -> Element {
2323
```rust
2424
# use dioxus::prelude::*;
2525
#[server]
26-
async fn read_headers() -> Result<(), ServerFnError> {
26+
async fn read_headers() -> ServerFnResult {
2727
// Since we are calling this from a server function, the server context that is may be from the
2828
// initial request or a request from the client
2929
let context = server_context();

0 commit comments

Comments
 (0)