nav: nav to accounts view for actions that require key
Fixes: https://github.com/damus-io/notedeck/issues/936 Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
@@ -4,7 +4,7 @@ use notedeck_ui::anim::AnimationHelper;
|
||||
static ICON_WIDTH: f32 = 40.0;
|
||||
static ICON_EXPANSION_MULTIPLE: f32 = 1.2;
|
||||
|
||||
pub fn compose_note_button(interactive: bool, dark_mode: bool) -> impl Widget {
|
||||
pub fn compose_note_button(dark_mode: bool) -> impl Widget {
|
||||
move |ui: &mut egui::Ui| -> egui::Response {
|
||||
let max_size = ICON_WIDTH * ICON_EXPANSION_MULTIPLE; // max size of the widget
|
||||
|
||||
@@ -12,11 +12,7 @@ pub fn compose_note_button(interactive: bool, dark_mode: bool) -> impl Widget {
|
||||
let min_plus_sign_size = 14.0; // length of the plus sign
|
||||
let min_line_width = 2.25; // width of the plus sign
|
||||
|
||||
let helper = if interactive {
|
||||
AnimationHelper::new(ui, "note-compose-button", vec2(max_size, max_size))
|
||||
} else {
|
||||
AnimationHelper::no_animation(ui, vec2(max_size, max_size))
|
||||
};
|
||||
let helper = AnimationHelper::new(ui, "note-compose-button", vec2(max_size, max_size));
|
||||
|
||||
let painter = ui.painter_at(helper.get_animation_rect());
|
||||
|
||||
@@ -24,11 +20,8 @@ pub fn compose_note_button(interactive: bool, dark_mode: bool) -> impl Widget {
|
||||
let use_line_width = helper.scale_1d_pos(min_line_width);
|
||||
let use_edge_circle_radius = helper.scale_radius(min_line_width);
|
||||
|
||||
let fill_color = if interactive {
|
||||
notedeck_ui::colors::PINK
|
||||
} else {
|
||||
ui.visuals().noninteractive().bg_fill
|
||||
};
|
||||
// TODO: theme!?
|
||||
let fill_color = notedeck_ui::colors::PINK;
|
||||
|
||||
painter.circle_filled(helper.center(), use_background_radius, fill_color);
|
||||
|
||||
@@ -38,7 +31,7 @@ pub fn compose_note_button(interactive: bool, dark_mode: bool) -> impl Widget {
|
||||
let west_edge = helper.scale_from_center(-min_half_plus_sign_size, 0.0);
|
||||
let east_edge = helper.scale_from_center(min_half_plus_sign_size, 0.0);
|
||||
|
||||
let icon_color = if !dark_mode && !interactive {
|
||||
let icon_color = if !dark_mode {
|
||||
Color32::BLACK
|
||||
} else {
|
||||
Color32::WHITE
|
||||
|
||||
@@ -92,16 +92,7 @@ impl<'a> DesktopSidePanel<'a> {
|
||||
// ui.add_space(24.0);
|
||||
//}
|
||||
|
||||
let is_interactive = self.selected_account.key.secret_key.is_some();
|
||||
let compose_resp = ui.add(crate::ui::post::compose_note_button(
|
||||
is_interactive,
|
||||
dark_mode,
|
||||
));
|
||||
let compose_resp = if is_interactive {
|
||||
compose_resp
|
||||
} else {
|
||||
compose_resp.on_hover_cursor(egui::CursorIcon::NotAllowed)
|
||||
};
|
||||
let compose_resp = ui.add(crate::ui::post::compose_note_button(dark_mode));
|
||||
let search_resp = ui.add(search_button());
|
||||
let column_resp = ui.add(add_column_button());
|
||||
|
||||
@@ -135,6 +126,9 @@ impl<'a> DesktopSidePanel<'a> {
|
||||
SidePanelAction::ComposeNote,
|
||||
compose_resp,
|
||||
))
|
||||
} else if compose_resp.hovered() {
|
||||
notedeck_ui::show_pointer(ui);
|
||||
None
|
||||
} else if search_resp.clicked() {
|
||||
Some(InnerResponse::new(SidePanelAction::Search, search_resp))
|
||||
} else if column_resp.clicked() {
|
||||
@@ -226,7 +220,11 @@ impl<'a> DesktopSidePanel<'a> {
|
||||
}
|
||||
}
|
||||
SidePanelAction::ComposeNote => {
|
||||
if router.routes().iter().any(|r| r == &Route::ComposeNote) {
|
||||
let can_post = accounts.get_selected_account().key.secret_key.is_some();
|
||||
|
||||
if !can_post {
|
||||
router.route_to(Route::accounts());
|
||||
} else if router.routes().iter().any(|r| r == &Route::ComposeNote) {
|
||||
router.go_back();
|
||||
} else {
|
||||
router.route_to(Route::ComposeNote);
|
||||
|
||||
Reference in New Issue
Block a user