Compare commits
2 Commits
c2fdade4d9
...
729a0479ec
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
729a0479ec | ||
|
|
c312df3db2 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -3,3 +3,5 @@
|
|||||||
.direnv
|
.direnv
|
||||||
.env
|
.env
|
||||||
.session
|
.session
|
||||||
|
api/config.toml
|
||||||
|
api/items.json
|
||||||
|
|||||||
2194
Cargo.lock
generated
2194
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
[workspace]
|
[workspace]
|
||||||
members = [".", "api", "typegen"]
|
members = [".", "api", "typegen", "ui-gpui", "ui-iced"]
|
||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "jello"
|
name = "jello"
|
||||||
|
|||||||
6
ui-gpui/Cargo.toml
Normal file
6
ui-gpui/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "ui-gpui"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
14
ui-gpui/src/lib.rs
Normal file
14
ui-gpui/src/lib.rs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
pub fn add(left: u64, right: u64) -> u64 {
|
||||||
|
left + right
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn it_works() {
|
||||||
|
let result = add(2, 2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
||||||
7
ui-iced/Cargo.toml
Normal file
7
ui-iced/Cargo.toml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[package]
|
||||||
|
name = "ui-iced"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
iced = { version = "0.13.1", features = ["canvas", "image", "tokio"] }
|
||||||
53
ui-iced/src/lib.rs
Normal file
53
ui-iced/src/lib.rs
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
use iced::{Element, Task};
|
||||||
|
|
||||||
|
struct State {
|
||||||
|
screen: Screen,
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Screen {
|
||||||
|
Contacts(Contacts),
|
||||||
|
Conversation(Conversation),
|
||||||
|
}
|
||||||
|
|
||||||
|
enum Message {
|
||||||
|
Contacts(contacts::Message),
|
||||||
|
Conversation(conversation::Message),
|
||||||
|
}
|
||||||
|
|
||||||
|
fn update(state: &mut State, message: Message) -> Task<Message> {
|
||||||
|
match message {
|
||||||
|
Message::Contacts(message) => {
|
||||||
|
if let Screen::Contacts(contacts) = &mut state.screen {
|
||||||
|
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 {
|
||||||
|
Task::none()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Message::Conversation(message) => {
|
||||||
|
if let Screen::Conversation(conversation) = &mut state.screen {
|
||||||
|
conversation.update(message).map(Message::Conversation)
|
||||||
|
} else {
|
||||||
|
Task::none()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn view(state: &State) -> Element<Message> {
|
||||||
|
match &state.screen {
|
||||||
|
Screen::Contacts(contacts) => contacts.view().map(Message::Contacts),
|
||||||
|
Screen::Conversation(conversation) => conversation.view().map(Message::Conversation),
|
||||||
|
}
|
||||||
|
}
|
||||||
8249
ui-iced/target/rust-analyzer/flycheck0/stderr
Normal file
8249
ui-iced/target/rust-analyzer/flycheck0/stderr
Normal file
File diff suppressed because it is too large
Load Diff
973
ui-iced/target/rust-analyzer/flycheck0/stdout
Normal file
973
ui-iced/target/rust-analyzer/flycheck0/stdout
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user