web-sys fetch service conversion#867
Conversation
|
Rebased. |
|
@daxpedda how come you reversed the split? I prefer split! Maybe a misunderstanding? 😜 |
|
Yes, apparently 🤣. |
jstarry
left a comment
There was a problem hiding this comment.
This was an impressive effort battling the nasty js-sys apis for promises! I'm wondering if we should instead use wasm-bindgen-futures and make use of async-await to simplify the implementation. Thoughts?
|
Sorry for the delay.
Fetch is currently running asynchronously because javascript is. If we would use a future, we wouldn't be able to let the user handle it asynchronously because Unless my assumption is incorrect and |
I had the same assumption but from my reading I've concluded that it isn't blocking. |
I just tried it, it isn't blocking. |
|
Absolutely mindblowing, I wish we could cancel futures, then I could also remove that atomic bool? EDIT: Rebased because of conflict in |
|
Thank you for this amazing work @jstarry, actually somebody who knows what he is doing. |
| } | ||
|
|
||
| thread_local! { | ||
| static GLOBAL: WindowOrWorker = WindowOrWorker::new(); |
There was a problem hiding this comment.
I replaced the Reflect implementation with this.
Reflect generates very unfavourable JS, it has a bit of overhead, because it requires transferring a string over the boundery.
In comparison this implementation translates into pure JS returning the correct type.
There was a problem hiding this comment.
Great, I'm glad we aren't taking a performance hit due to Reflect for every fetch too. Looks good!
|
Sweet, great teamwork! Merging 🎉 |
* Enable travis * `web-sys` general conversion (#826) * Moved patches from different PRs. * Add bits & pieces and some services. * Rename `stdweb` feature to `std_web`. * Move tests and examples to different PR. * Revert some `cargo_web` handling removal. * Missed something. * Implement `console_error_panic_hook`. * Update Cargo.toml Co-authored-by: Justin Starry <justin.m.starry@gmail.com> * Move document creation to util convenience method (#855) * `web-sys` listener conversion (#813) * `web-sys` listener initial try. * Improve macros? * Remove generic from `EventListenerHandle`. * Fix build. * A cleaner solution? * Even cleaner. * Fix `build.rs`. * Minor improvements. * Following the yew toml style. * Fixing visibility. * Fix `rustfmt`. * Add `web-sys` re-exports. * Move general changes to different PR. * Remove compat. * Actually remove `compat.rs`. * Rename `stdweb` feature to `std_web`. * Move to gloo's `EventListener` and some polish. * Remove outdated comment. * Change `EventHandler` to be cancelled on drop. * `web-sys` html conversion (#817) * Converting all `html` parts. * Format. * Move general changes to different PR. * Removed compat. * Rename `stdweb` feature to `std_web`. * Remove redudant function copy. * Some polish. * Move to gloo's `EventListener`. * Replace `unwrap`s with `expect`s. * `web-sys` agent conversion (#818) * Converting `agent`. * Remove wrong `cfg` in imports. * Move general changes to different PR. * Some optimisations. * Rename `stdweb` feature to `std_web`. * Fix `ArrayBuffer` to `Uint8Array` conversions. * Add js module worker. * Use `cfg-if`` and `cfg-match` to make things clearer. * Fix `std_web` build. * Add some polish. * Add build guards for invalid build configs (#866) * `web_sys` cfg conversion (#862) * Use `cfg-if` and `cfg-match` and some polish. * Mistakes were made. * Missed line during rebasing. * Mistakes were undone. * Remove global. * Remove part of `global!`. * `web-sys` services conversion (#827) * Convert `console`. * Finish services. * Some polish. * Fix `ArrayBuffer` to `Uint8Array` conversions. * Fix aborting fetch leading to error and some polish. * Replaced some `unwrap`s with `expect`s. * Use `cfg_if` and `cfg_match` and do some polish. * Proper scoping. * Some fixes. * Move fetch and reader services to different PR. * Revert split. * Fix CI builds (#877) * Fix derive_props_test * Move tests (#897) (#898) * `web-sys` fetch service conversion (#867) * Split implementation. * Import global. * Import global. * Revert split. * Make fetch available again. * Revert "Revert split." This reverts commit 6e3f101. * Re-revert split. * Some polish. * Move to `wasm_bindgen_futures`. * Switch to `thiserror`. * wip * Update src/services/fetch/web_sys.rs Co-Authored-By: daxpedda <daxpedda@gmail.com> * Some more polish. Co-authored-by: Justin Starry <justin.m.starry@gmail.com> * `web-sys` reader service conversion (#868) * Split reader implementation. * Revert split. * Remove leftover files. * Make reader available again. * Revert "Revert split." This reverts commit 8abdc9c. * Revert "Remove leftover files." This reverts commit 188c6eb. * Re-revert split. * Polish. * Forgot some part. * Some polish. * Some polish. * `web-sys` examples/tests conversion (#841) * Fix examples/tests to work with `web_sys`. * Update `StorageService` usage. * Split `stdweb` and `web-sys` examples. * Fixing the shell script. * Trying to reset file permissions. * Update to new reader API. * Update to new fetch API. * Update to new fetch API. * Re-enable examples CI. * Deleted duplicate example. * Some fixes. * Fix rand build. * Fix spawning workers in combination with `wasm-bindgen`. (#901) * Fix component rendering process (#913) * wip * Fix component rendering process * Simplify yew-macro a bit (#902) * yew-macro: Simplify Properties validation * Fix most clippy warnings * Fix clippy warnings (#912) * Import Task trait in dashboard example * Remove duplicate vtag tests * Fix prevent_default() by non-passive (#958) * Fix prevent_default() by non-passive * Fix cargo fmt * Remove `Option` from most services. * Remove `Option` from resize service. * Apply fetch changes. * Apply reader service changes. * Fix `node_refs` example. * Remove web-sys travis branch Co-authored-by: daxpedda <daxpedda@gmail.com> Co-authored-by: Jonas Platte <jplatte@users.noreply.github.com> Co-authored-by: Jet Li <jing.i.qin@icloud.com>
* Enable travis * `web-sys` general conversion (yewstack#826) * Moved patches from different PRs. * Add bits & pieces and some services. * Rename `stdweb` feature to `std_web`. * Move tests and examples to different PR. * Revert some `cargo_web` handling removal. * Missed something. * Implement `console_error_panic_hook`. * Update Cargo.toml Co-authored-by: Justin Starry <justin.m.starry@gmail.com> * Move document creation to util convenience method (yewstack#855) * `web-sys` listener conversion (yewstack#813) * `web-sys` listener initial try. * Improve macros? * Remove generic from `EventListenerHandle`. * Fix build. * A cleaner solution? * Even cleaner. * Fix `build.rs`. * Minor improvements. * Following the yew toml style. * Fixing visibility. * Fix `rustfmt`. * Add `web-sys` re-exports. * Move general changes to different PR. * Remove compat. * Actually remove `compat.rs`. * Rename `stdweb` feature to `std_web`. * Move to gloo's `EventListener` and some polish. * Remove outdated comment. * Change `EventHandler` to be cancelled on drop. * `web-sys` html conversion (yewstack#817) * Converting all `html` parts. * Format. * Move general changes to different PR. * Removed compat. * Rename `stdweb` feature to `std_web`. * Remove redudant function copy. * Some polish. * Move to gloo's `EventListener`. * Replace `unwrap`s with `expect`s. * `web-sys` agent conversion (yewstack#818) * Converting `agent`. * Remove wrong `cfg` in imports. * Move general changes to different PR. * Some optimisations. * Rename `stdweb` feature to `std_web`. * Fix `ArrayBuffer` to `Uint8Array` conversions. * Add js module worker. * Use `cfg-if`` and `cfg-match` to make things clearer. * Fix `std_web` build. * Add some polish. * Add build guards for invalid build configs (yewstack#866) * `web_sys` cfg conversion (yewstack#862) * Use `cfg-if` and `cfg-match` and some polish. * Mistakes were made. * Missed line during rebasing. * Mistakes were undone. * Remove global. * Remove part of `global!`. * `web-sys` services conversion (yewstack#827) * Convert `console`. * Finish services. * Some polish. * Fix `ArrayBuffer` to `Uint8Array` conversions. * Fix aborting fetch leading to error and some polish. * Replaced some `unwrap`s with `expect`s. * Use `cfg_if` and `cfg_match` and do some polish. * Proper scoping. * Some fixes. * Move fetch and reader services to different PR. * Revert split. * Fix CI builds (yewstack#877) * Fix derive_props_test * Move tests (yewstack#897) (yewstack#898) * `web-sys` fetch service conversion (yewstack#867) * Split implementation. * Import global. * Import global. * Revert split. * Make fetch available again. * Revert "Revert split." This reverts commit 6e3f101. * Re-revert split. * Some polish. * Move to `wasm_bindgen_futures`. * Switch to `thiserror`. * wip * Update src/services/fetch/web_sys.rs Co-Authored-By: daxpedda <daxpedda@gmail.com> * Some more polish. Co-authored-by: Justin Starry <justin.m.starry@gmail.com> * `web-sys` reader service conversion (yewstack#868) * Split reader implementation. * Revert split. * Remove leftover files. * Make reader available again. * Revert "Revert split." This reverts commit 8abdc9c. * Revert "Remove leftover files." This reverts commit 188c6eb. * Re-revert split. * Polish. * Forgot some part. * Some polish. * Some polish. * `web-sys` examples/tests conversion (yewstack#841) * Fix examples/tests to work with `web_sys`. * Update `StorageService` usage. * Split `stdweb` and `web-sys` examples. * Fixing the shell script. * Trying to reset file permissions. * Update to new reader API. * Update to new fetch API. * Update to new fetch API. * Re-enable examples CI. * Deleted duplicate example. * Some fixes. * Fix rand build. * Fix spawning workers in combination with `wasm-bindgen`. (yewstack#901) * Fix component rendering process (yewstack#913) * wip * Fix component rendering process * Simplify yew-macro a bit (yewstack#902) * yew-macro: Simplify Properties validation * Fix most clippy warnings * Fix clippy warnings (yewstack#912) * Import Task trait in dashboard example * Remove duplicate vtag tests * Fix prevent_default() by non-passive (yewstack#958) * Fix prevent_default() by non-passive * Fix cargo fmt * Remove `Option` from most services. * Remove `Option` from resize service. * Apply fetch changes. * Apply reader service changes. * Fix `node_refs` example. * Remove web-sys travis branch Co-authored-by: daxpedda <daxpedda@gmail.com> Co-authored-by: Jonas Platte <jplatte@users.noreply.github.com> Co-authored-by: Jet Li <jing.i.qin@icloud.com>
* Properties 2.0 * Fix problem when passing a closure to prop_or_else * Update test names * Add support for building with web-sys (#961) * Enable travis * `web-sys` general conversion (#826) * Moved patches from different PRs. * Add bits & pieces and some services. * Rename `stdweb` feature to `std_web`. * Move tests and examples to different PR. * Revert some `cargo_web` handling removal. * Missed something. * Implement `console_error_panic_hook`. * Update Cargo.toml Co-authored-by: Justin Starry <justin.m.starry@gmail.com> * Move document creation to util convenience method (#855) * `web-sys` listener conversion (#813) * `web-sys` listener initial try. * Improve macros? * Remove generic from `EventListenerHandle`. * Fix build. * A cleaner solution? * Even cleaner. * Fix `build.rs`. * Minor improvements. * Following the yew toml style. * Fixing visibility. * Fix `rustfmt`. * Add `web-sys` re-exports. * Move general changes to different PR. * Remove compat. * Actually remove `compat.rs`. * Rename `stdweb` feature to `std_web`. * Move to gloo's `EventListener` and some polish. * Remove outdated comment. * Change `EventHandler` to be cancelled on drop. * `web-sys` html conversion (#817) * Converting all `html` parts. * Format. * Move general changes to different PR. * Removed compat. * Rename `stdweb` feature to `std_web`. * Remove redudant function copy. * Some polish. * Move to gloo's `EventListener`. * Replace `unwrap`s with `expect`s. * `web-sys` agent conversion (#818) * Converting `agent`. * Remove wrong `cfg` in imports. * Move general changes to different PR. * Some optimisations. * Rename `stdweb` feature to `std_web`. * Fix `ArrayBuffer` to `Uint8Array` conversions. * Add js module worker. * Use `cfg-if`` and `cfg-match` to make things clearer. * Fix `std_web` build. * Add some polish. * Add build guards for invalid build configs (#866) * `web_sys` cfg conversion (#862) * Use `cfg-if` and `cfg-match` and some polish. * Mistakes were made. * Missed line during rebasing. * Mistakes were undone. * Remove global. * Remove part of `global!`. * `web-sys` services conversion (#827) * Convert `console`. * Finish services. * Some polish. * Fix `ArrayBuffer` to `Uint8Array` conversions. * Fix aborting fetch leading to error and some polish. * Replaced some `unwrap`s with `expect`s. * Use `cfg_if` and `cfg_match` and do some polish. * Proper scoping. * Some fixes. * Move fetch and reader services to different PR. * Revert split. * Fix CI builds (#877) * Fix derive_props_test * Move tests (#897) (#898) * `web-sys` fetch service conversion (#867) * Split implementation. * Import global. * Import global. * Revert split. * Make fetch available again. * Revert "Revert split." This reverts commit 6e3f101. * Re-revert split. * Some polish. * Move to `wasm_bindgen_futures`. * Switch to `thiserror`. * wip * Update src/services/fetch/web_sys.rs Co-Authored-By: daxpedda <daxpedda@gmail.com> * Some more polish. Co-authored-by: Justin Starry <justin.m.starry@gmail.com> * `web-sys` reader service conversion (#868) * Split reader implementation. * Revert split. * Remove leftover files. * Make reader available again. * Revert "Revert split." This reverts commit 8abdc9c. * Revert "Remove leftover files." This reverts commit 188c6eb. * Re-revert split. * Polish. * Forgot some part. * Some polish. * Some polish. * `web-sys` examples/tests conversion (#841) * Fix examples/tests to work with `web_sys`. * Update `StorageService` usage. * Split `stdweb` and `web-sys` examples. * Fixing the shell script. * Trying to reset file permissions. * Update to new reader API. * Update to new fetch API. * Update to new fetch API. * Re-enable examples CI. * Deleted duplicate example. * Some fixes. * Fix rand build. * Fix spawning workers in combination with `wasm-bindgen`. (#901) * Fix component rendering process (#913) * wip * Fix component rendering process * Simplify yew-macro a bit (#902) * yew-macro: Simplify Properties validation * Fix most clippy warnings * Fix clippy warnings (#912) * Import Task trait in dashboard example * Remove duplicate vtag tests * Fix prevent_default() by non-passive (#958) * Fix prevent_default() by non-passive * Fix cargo fmt * Remove `Option` from most services. * Remove `Option` from resize service. * Apply fetch changes. * Apply reader service changes. * Fix `node_refs` example. * Remove web-sys travis branch Co-authored-by: daxpedda <daxpedda@gmail.com> Co-authored-by: Jonas Platte <jplatte@users.noreply.github.com> Co-authored-by: Jet Li <jing.i.qin@icloud.com> * Fix vtag test warning (#978) * Clean up exported apis and doc visibility (#977) * Clean up exported apis and doc visibility * Remove unused ScopeHolder * Change ComponentLink to alias of Scope * cargo fmt * update new examples to Properties 2.0 * Fix a mistake when resolving conflicts * Remove an outdated hack. Co-authored-by: Justin Starry <justin.m.starry@gmail.com> Co-authored-by: daxpedda <daxpedda@gmail.com> Co-authored-by: Jonas Platte <jplatte@users.noreply.github.com> Co-authored-by: Jet Li <jing.i.qin@icloud.com>
Split from #827.
Cc #558, #827, #841, #862, #868.