mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-24 20:37:58 +00:00
dc0aeac3d6
* routing and signing example * cliipy fix * submitting extrinsics * change order of lines * Skip call variants if there aren't any (#980) Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com> * Tidy up some metadata accessing (#978) * Reduce some repetition when obtaining metadata pallets/runtime_traits * make them pub * fix docs and clippy * Bump tokio from 1.28.1 to 1.28.2 (#984) Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.28.1 to 1.28.2. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.28.1...tokio-1.28.2) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump regex from 1.8.2 to 1.8.3 (#986) Bumps [regex](https://github.com/rust-lang/regex) from 1.8.2 to 1.8.3. - [Release notes](https://github.com/rust-lang/regex/releases) - [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang/regex/compare/1.8.2...1.8.3) --- updated-dependencies: - dependency-name: regex dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump quote from 1.0.27 to 1.0.28 (#983) Bumps [quote](https://github.com/dtolnay/quote) from 1.0.27 to 1.0.28. - [Release notes](https://github.com/dtolnay/quote/releases) - [Commits](https://github.com/dtolnay/quote/compare/1.0.27...1.0.28) --- updated-dependencies: - dependency-name: quote dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Bump proc-macro2 from 1.0.58 to 1.0.59 (#985) Bumps [proc-macro2](https://github.com/dtolnay/proc-macro2) from 1.0.58 to 1.0.59. - [Release notes](https://github.com/dtolnay/proc-macro2/releases) - [Commits](https://github.com/dtolnay/proc-macro2/compare/1.0.58...1.0.59) --- updated-dependencies: - dependency-name: proc-macro2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * restrict sign_with_address_and_signature interface (#988) * changing js bridge * dryrunresult ok * submitting extrinsic working * tiny up code and ui * formatting * remove todos * support tip and mortality * Prevent bug when reusing type ids in hashing (#1075) * practice TDD * implement a hashmap 2-phases approach * use nicer types * add test for cache filling * adjust test --------- Co-authored-by: James Wilson <james@jsdw.me> * small adjustment * Merge branch 'master' into tadeo-hepperle-browser-extension-signing-example * fix lock file * tell users how to add Alice account to run signing example * adjust to PR comments * fmt --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: James Wilson <james@jsdw.me> Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
141 lines
4.9 KiB
Rust
141 lines
4.9 KiB
Rust
use futures::FutureExt;
|
|
use yew::prelude::*;
|
|
|
|
use crate::services;
|
|
|
|
pub struct FetchingExamplesComponent {
|
|
operation_title: Option<AttrValue>,
|
|
lines: Vec<AttrValue>,
|
|
}
|
|
|
|
pub enum Message {
|
|
Error(subxt::Error),
|
|
Reload,
|
|
Line(AttrValue),
|
|
Lines(Vec<AttrValue>),
|
|
ButtonClick(Button),
|
|
}
|
|
|
|
pub enum Button {
|
|
SubscribeFinalized,
|
|
FetchConstant,
|
|
FetchEvents,
|
|
}
|
|
|
|
impl Component for FetchingExamplesComponent {
|
|
type Message = Message;
|
|
type Properties = ();
|
|
|
|
fn create(_ctx: &Context<Self>) -> Self {
|
|
FetchingExamplesComponent {
|
|
lines: Vec::new(),
|
|
operation_title: None,
|
|
}
|
|
}
|
|
|
|
fn update(&mut self, ctx: &Context<Self>, msg: Self::Message) -> bool {
|
|
match msg {
|
|
Message::Error(err) => {
|
|
self.lines.insert(0, err.to_string().into());
|
|
}
|
|
Message::Reload => {
|
|
let window = web_sys::window().expect("Failed to access the window object");
|
|
window
|
|
.location()
|
|
.reload()
|
|
.expect("Failed to reload the page");
|
|
}
|
|
Message::Line(line) => {
|
|
// newer lines go to the top
|
|
self.lines.insert(0, line);
|
|
}
|
|
Message::Lines(lines) => {
|
|
for line in lines {
|
|
self.lines.insert(0, line);
|
|
}
|
|
}
|
|
Message::ButtonClick(button) => match button {
|
|
Button::SubscribeFinalized => {
|
|
self.operation_title = Some("Subscribe to finalized blocks:".into());
|
|
let cb: Callback<AttrValue> = ctx.link().callback(Message::Line);
|
|
ctx.link()
|
|
.send_future(services::subscribe_to_finalized_blocks(cb).map(|result| {
|
|
let err = result.unwrap_err();
|
|
Message::Error(err)
|
|
}));
|
|
}
|
|
Button::FetchConstant => {
|
|
self.operation_title =
|
|
Some("Fetch the constant \"block_length\" of \"System\" pallet:".into());
|
|
ctx.link()
|
|
.send_future(services::fetch_constant_block_length().map(|result| {
|
|
match result {
|
|
Ok(value) => Message::Line(
|
|
format!(
|
|
"constant \"block_length\" of \"System\" pallet:\n {value}"
|
|
)
|
|
.into(),
|
|
),
|
|
Err(err) => Message::Error(err),
|
|
}
|
|
}))
|
|
}
|
|
Button::FetchEvents => {
|
|
self.operation_title = Some("Fetch events:".into());
|
|
ctx.link()
|
|
.send_future(services::fetch_events_dynamically().map(
|
|
|result| match result {
|
|
Ok(value) => {
|
|
Message::Lines(value.into_iter().map(AttrValue::from).collect())
|
|
}
|
|
Err(err) => Message::Error(err),
|
|
},
|
|
))
|
|
}
|
|
},
|
|
}
|
|
true
|
|
}
|
|
|
|
fn view(&self, ctx: &Context<Self>) -> Html {
|
|
let reload: Callback<MouseEvent> = ctx.link().callback(|_| Message::Reload);
|
|
|
|
let subscribe_finalized = ctx
|
|
.link()
|
|
.callback(|_| Message::ButtonClick(Button::SubscribeFinalized));
|
|
|
|
let fetch_constant = ctx
|
|
.link()
|
|
.callback(|_| Message::ButtonClick(Button::FetchConstant));
|
|
|
|
let fetch_events = ctx
|
|
.link()
|
|
.callback(|_| Message::ButtonClick(Button::FetchEvents));
|
|
|
|
html! {
|
|
<div>
|
|
if let Some(operation_title) = &self.operation_title{
|
|
<button onclick={reload}>{"<= Back"}</button>
|
|
<h1>{operation_title}</h1>
|
|
if self.lines.is_empty(){
|
|
<p>{"Loading..."}</p>
|
|
}
|
|
else{
|
|
|
|
}
|
|
{ for self.lines.iter().map(|line| html! {<p> {line} </p>}) }
|
|
}
|
|
else{
|
|
<>
|
|
<a href="/"> <button>{"<= Back"}</button></a>
|
|
<h1>{"Subxt Fetching and Subscribing Examples"}</h1>
|
|
<button onclick={subscribe_finalized}>{"Example: Subscribe to Finalized blocks"}</button>
|
|
<button onclick={fetch_constant}>{"Example: Fetch constant value"}</button>
|
|
<button onclick={fetch_events}>{"Example: Fetch events"}</button>
|
|
</>
|
|
}
|
|
</div>
|
|
}
|
|
}
|
|
}
|