Skip to content

Commit e95f043

Browse files
committed
feat: add UI for egui while waiting
1 parent 142f0b3 commit e95f043

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/data_state_retry.rs

+16-4
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,15 @@ impl<T, E: ErrorBounds> DataStateRetry<T, E> {
103103
self.inner = DataState::default();
104104
}
105105
} else {
106+
let wait_left = wait_before_next_attempt(self.next_allowed_attempt);
107+
ui.colored_label(
108+
ui.visuals().error_fg_color,
109+
format!(
110+
"{} attempt(s) left. {} seconds before retry. {e}",
111+
self.attempts_left,
112+
wait_left.as_secs()
113+
),
114+
);
106115
let is_able_to_make_progress = self.get(fetch_fn).is_able_to_make_progress();
107116
assert!(
108117
is_able_to_make_progress,
@@ -163,10 +172,8 @@ impl<T, E: ErrorBounds> DataStateRetry<T, E> {
163172
if self.attempts_left == 0 {
164173
self.inner.get(fetch_fn)
165174
} else {
166-
let wait_duration_left = self
167-
.next_allowed_attempt
168-
.saturating_duration_since(Instant::now());
169-
if wait_duration_left.is_zero() {
175+
let wait_left = wait_before_next_attempt(self.next_allowed_attempt);
176+
if wait_left.is_zero() {
170177
warn!(?err_msg, ?self.attempts_left, "retrying request");
171178
self.attempts_left -= 1;
172179
self.inner = DataState::None;
@@ -233,3 +240,8 @@ impl<T, E: ErrorBounds> AsMut<DataStateRetry<T, E>> for DataStateRetry<T, E> {
233240
self
234241
}
235242
}
243+
244+
/// The duration before the next attempt will be made
245+
fn wait_before_next_attempt(next_allowed_attempt: Instant) -> Duration {
246+
next_allowed_attempt.saturating_duration_since(Instant::now())
247+
}

0 commit comments

Comments
 (0)