use std::path::Path;
use super::{aimed, down, read};
use crate::state::{Link, Open};
use crate::ui::Channel;
pub(super) fn ask(
link: &Link,
root: &Path,
standing: &crate::state::Standing,
channel: &Channel,
aim: &crate::ui::Aim,
) {
aimed(
link,
root,
channel,
&crate::verbs::conversations(aim.address.clone()),
);
if standing.standing(&Open::Tuning) {
aimed(
link,
root,
channel,
&crate::verbs::roles(aim.address.clone()),
);
}
if standing.standing(&Open::Board) {
aimed(
link,
root,
channel,
&crate::verbs::workspace_balls(aim.address.clone()),
);
aimed(
link,
root,
channel,
&crate::verbs::marks(aim.address.clone()),
);
}
fleet(link, root, standing, channel, aim);
if standing.standing(&Open::Login(standing.signin())) {
aimed(
link,
root,
channel,
&crate::verbs::providers(aim.address.clone()),
);
}
if standing.standing(&Open::Clients) {
aimed(
link,
root,
channel,
&crate::verbs::clients(aim.address.clone()),
);
}
if standing.standing(&Open::Config(standing.at())) {
aimed(
link,
root,
channel,
&crate::verbs::lineages(aim.address.clone()),
);
if let Some(at) = standing.at() {
let gesture = crate::verbs::config(&at);
if at.addresses_a_workspace() {
aimed(link, root, channel, &gesture);
} else {
read(link, down(link, root, channel, &gesture), channel);
}
}
}
let Some(conversation) = standing.conversation.clone() else {
return;
};
aimed(
link,
root,
channel,
&crate::verbs::transcript(aim.address.clone(), conversation.clone()),
);
aimed(
link,
root,
channel,
&crate::verbs::agent(aim.address.clone(), conversation.clone()),
);
if standing.standing(&Open::Records) {
records(link, root, channel, &aim.address, &conversation);
}
}
fn records(link: &Link, root: &Path, channel: &Channel, wall: &str, conversation: &str) {
for ask in [
crate::verbs::steps(wall.to_owned(), conversation.to_owned()),
crate::verbs::files(wall.to_owned(), conversation.to_owned()),
crate::verbs::rail(wall.to_owned(), conversation.to_owned()),
crate::verbs::governing(wall.to_owned(), conversation.to_owned()),
crate::verbs::inbox(wall.to_owned(), conversation.to_owned()),
] {
aimed(link, root, channel, &ask);
}
}
fn fleet(
link: &Link,
root: &Path,
standing: &crate::state::Standing,
channel: &Channel,
aim: &crate::ui::Aim,
) {
if !standing.standing(&Open::Fleet) {
return;
}
aimed(
link,
root,
channel,
&crate::verbs::science(aim.address.clone()),
);
aimed(
link,
root,
channel,
&crate::verbs::work_diff(aim.address.clone()),
);
}