Show Action pattern in The Pocket Guide

This commit is contained in:
Héctor Ramón Jiménez 2024-09-18 22:00:40 +02:00
parent 1cf284a850
commit 9e5afc54ce
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -380,16 +380,18 @@
//! # use iced::{Element, Task}; //! # use iced::{Element, Task};
//! # pub struct Contacts; //! # pub struct Contacts;
//! # impl Contacts { //! # impl Contacts {
//! # pub fn update(&mut self, message: Message) -> Task<Message> { unimplemented!() } //! # pub fn update(&mut self, message: Message) -> Action { unimplemented!() }
//! # pub fn view(&self) -> Element<Message> { unimplemented!() } //! # pub fn view(&self) -> Element<Message> { unimplemented!() }
//! # } //! # }
//! # #[derive(Debug)] //! # #[derive(Debug)]
//! # pub enum Message {} //! # pub enum Message {}
//! # pub enum Action { None, Run(Task<Message>), Chat(()) }
//! # } //! # }
//! # mod conversation { //! # mod conversation {
//! # use iced::{Element, Task}; //! # use iced::{Element, Task};
//! # pub struct Conversation; //! # pub struct Conversation;
//! # impl Conversation { //! # impl Conversation {
//! # pub fn new(contact: ()) -> (Self, Task<Message>) { unimplemented!() }
//! # pub fn update(&mut self, message: Message) -> Task<Message> { unimplemented!() } //! # pub fn update(&mut self, message: Message) -> Task<Message> { unimplemented!() }
//! # pub fn view(&self) -> Element<Message> { unimplemented!() } //! # pub fn view(&self) -> Element<Message> { unimplemented!() }
//! # } //! # }
@ -419,7 +421,19 @@
//! match message { //! match message {
//! Message::Contacts(message) => { //! Message::Contacts(message) => {
//! if let Screen::Contacts(contacts) = &mut state.screen { //! if let Screen::Contacts(contacts) = &mut state.screen {
//! contacts.update(message).map(Message::Contacts) //! let action = contacts.update(message);
//!
//! match action {
//! contacts::Action::None => Task::none(),
//! contacts::Action::Run(task) => task.map(Message::Contacts),
//! contacts::Action::Chat(contact) => {
//! let (conversation, task) = Conversation::new(contact);
//!
//! state.screen = Screen::Conversation(conversation);
//!
//! task.map(Message::Conversation)
//! }
//! }
//! } else { //! } else {
//! Task::none() //! Task::none()
//! } //! }