Skip to content

Commit 47efa70

Browse files
committed
refactor: PR comments
Closes #52
1 parent 60cafe3 commit 47efa70

File tree

6 files changed

+27
-16
lines changed

6 files changed

+27
-16
lines changed

src/cursor/base_cursor.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use super::{CursorDirection, CursorSys};
2-
use crate::future::{EventTargetResult, PollUnpinned, VoidRequest};
2+
use crate::future::request::listeners::EventTargetResult;
3+
use crate::future::{PollUnpinned, Request};
34
use crate::internal_utils::SystemRepr;
45
use crate::primitive::{TryFromJs, TryToJs};
56
use fancy_constructor::new;
@@ -27,7 +28,7 @@ pub(crate) enum CursorState {
2728
TryNext,
2829

2930
/// We are currently reading the next record.
30-
ReadingNext(VoidRequest),
31+
ReadingNext(Request<EventTargetResult>),
3132
}
3233

3334
impl BaseCursor {
@@ -108,8 +109,8 @@ impl BaseCursor {
108109
self.as_sys().direction()
109110
}
110111

111-
pub(crate) fn req(&self) -> VoidRequest {
112-
VoidRequest::new(self.as_sys().req())
112+
pub(crate) fn req(&self) -> Request<EventTargetResult> {
113+
Request::new(self.as_sys().req())
113114
}
114115

115116
pub(crate) fn poll_state<R, F>(

src/future/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ pub use basic::BasicRequest;
55
pub use get_all::*;
66
pub use maybe_errored::MaybeErrored;
77
pub use open_db::{OpenDbListener, OpenDbRequest};
8-
pub use request::{EventTargetResult, Request, VoidRequest};
8+
pub use request::{Request, VoidRequest};
99
pub use traits::*;
1010

1111
mod array_map;
1212
mod basic;
1313
mod get_all;
1414
mod maybe_errored;
1515
mod open_db;
16-
mod request;
16+
pub(crate) mod request;
1717
mod traits;
1818

1919
iffeat! {

src/future/open_db.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ impl OpenDbRequest {
7171
impl OpenDbRequest {
7272
fn phase_poll_req(&mut self, cx: &mut Context) -> Poll<crate::OpenDbResult<Database>> {
7373
match self.req.poll_unpinned(cx) {
74-
Poll::Ready(Ok(_)) => {
74+
Poll::Ready(Ok(())) => {
7575
cfg_if! {
7676
if #[cfg(feature = "async-upgrade")] {
7777
self.polling_fn = Self::phase_poll_listeners;

src/future/request.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
mod listeners;
1+
pub(crate) mod listeners;
22
mod untyped;
33

44
use crate::internal_utils::SystemRepr;
55
use internal_macros::{FutureFromPollUnpinned, StructNameDebug};
6-
pub use listeners::EventTargetResult;
76
use listeners::Listeners;
87
use sealed::sealed;
98
use std::marker::PhantomData;
@@ -63,11 +62,22 @@ impl PollUnpinned for Request {
6362
}
6463

6564
#[sealed]
66-
impl PollUnpinned for Request<()> {
67-
type Output = crate::Result<EventTargetResult>;
65+
#[cfg(feature = "cursors")]
66+
impl PollUnpinned for Request<listeners::EventTargetResult> {
67+
type Output = crate::Result<listeners::EventTargetResult>;
6868

6969
#[inline]
7070
fn poll_unpinned(&mut self, cx: &mut Context) -> Poll<Self::Output> {
7171
self.inner.poll_unpinned(cx)
7272
}
7373
}
74+
75+
#[sealed]
76+
impl PollUnpinned for Request<()> {
77+
type Output = crate::Result<()>;
78+
79+
#[inline]
80+
fn poll_unpinned(&mut self, cx: &mut Context) -> Poll<Self::Output> {
81+
self.inner.poll_unpinned(cx).map(|res| res.map(|_| ()))
82+
}
83+
}

src/future/request/listeners.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use wasm_bindgen::prelude::*;
88
type Callback = Closure<dyn FnMut(web_sys::Event) + 'static>;
99

1010
/// represents the value on an event.target.result
11-
pub enum EventTargetResult {
11+
pub(crate) enum EventTargetResult {
1212
/// the event.target.result was null
1313
Null,
1414
/// the event.target.result was a [`web_sys::IdbCursor`] instance

src/future/request/untyped.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ impl UntypedRequest {
3939
}
4040
}
4141

42-
fn poll_request(req: &web_sys::IdbRequest) -> Poll<crate::Result<()>> {
42+
fn poll_request<T>(req: &web_sys::IdbRequest, v: T) -> Poll<crate::Result<T>> {
4343
if matches!(req.ready_state(), IdbRequestReadyState::Done) {
44-
Poll::Ready(Self::req_to_result(req, ()))
44+
Poll::Ready(Self::req_to_result(req, v))
4545
} else {
4646
Poll::Pending
4747
}
@@ -62,8 +62,8 @@ impl PollUnpinned for UntypedRequest {
6262
match self {
6363
Self::WithListeners(listeners) => listeners.poll_unpinned(cx),
6464
Self::Bare(req) => {
65-
if let Poll::Ready(res) = Self::poll_request(req) {
66-
Poll::Ready(res.map(|()| EventTargetResult::NotNull))
65+
if let Poll::Ready(res) = Self::poll_request(req, EventTargetResult::NotNull) {
66+
Poll::Ready(res)
6767
} else {
6868
let mut listeners = Self::create_listeners(req);
6969
let out = listeners.poll_unpinned(cx);

0 commit comments

Comments
 (0)