add RoutableWidgetState conception

holds the routes for an arbitrary widget

Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
kernelkind
2024-09-06 18:31:50 -04:00
committed by William Casarin
parent df4e331d33
commit ee0029268f
4 changed files with 49 additions and 18 deletions

View File

@@ -1,23 +1,31 @@
use egui::{Response, RichText};
use egui::RichText;
use enostr::NoteId;
use std::fmt::{self};
use strum_macros::Display;
use crate::{ui::AccountManagementView, Damus};
use crate::ui::{
account_login_view::AccountLoginResponse, account_management::AccountManagementViewResponse,
};
/// App routing. These describe different places you can go inside Notedeck.
#[derive(Clone, Debug)]
pub enum Route {
Timeline(String),
ManageAccount,
Thread(NoteId),
Reply(NoteId),
Relays,
}
#[derive(Clone, Debug, Default, Display)]
pub enum ManageAccountRoute {
#[default]
AccountManagement,
AddAccount,
}
impl fmt::Display for Route {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Route::ManageAccount => write!(f, "Manage Account"),
Route::Timeline(name) => write!(f, "{}", name),
Route::Thread(_id) => write!(f, "Thread"),
Route::Reply(_id) => write!(f, "Reply"),
@@ -27,16 +35,8 @@ impl fmt::Display for Route {
}
impl Route {
pub fn show_global_popup(&self, app: &mut Damus, ui: &mut egui::Ui) -> Option<Response> {
match self {
Route::ManageAccount => AccountManagementView::ui(app, ui),
_ => None,
}
}
pub fn title(&self) -> RichText {
match self {
Route::ManageAccount => RichText::new("Manage Account").size(24.0),
Route::Thread(_) => RichText::new("Thread"),
Route::Reply(_) => RichText::new("Reply"),
Route::Relays => RichText::new("Relays"),
@@ -44,3 +44,8 @@ impl Route {
}
}
}
pub enum ManageAcountRouteResponse {
AccountManagement(AccountManagementViewResponse),
AddAccount(AccountLoginResponse),
}