page editor
This commit is contained in:
38
src/app.rs
38
src/app.rs
@@ -37,14 +37,17 @@ impl<T> ApiList<T> {
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Login form ───────────────────────────────────────────────────────────────
|
||||
// ─── App state ────────────────────────────────────────────────────────────────
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
pub enum AppState {
|
||||
Login,
|
||||
Main,
|
||||
Editor,
|
||||
}
|
||||
|
||||
// ─── Login form ───────────────────────────────────────────────────────────────
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
pub enum LoginField {
|
||||
Url,
|
||||
@@ -115,6 +118,7 @@ pub struct MainView {
|
||||
pub focus: Panel,
|
||||
pub loading_spaces: bool,
|
||||
pub loading_pages: bool,
|
||||
pub loading_page_content: bool,
|
||||
pub error: Option<String>,
|
||||
}
|
||||
|
||||
@@ -128,17 +132,45 @@ impl MainView {
|
||||
focus: Panel::Spaces,
|
||||
loading_spaces: true,
|
||||
loading_pages: false,
|
||||
loading_page_content: false,
|
||||
error: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Editor view ─────────────────────────────────────────────────────────────
|
||||
|
||||
pub struct EditorView {
|
||||
pub page_id: String,
|
||||
pub page_title: String,
|
||||
pub saving: bool,
|
||||
pub status: Option<EditorStatus>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum EditorStatus {
|
||||
Saved,
|
||||
Error(String),
|
||||
}
|
||||
|
||||
impl EditorView {
|
||||
pub fn new(page_id: String, page_title: String) -> Self {
|
||||
Self {
|
||||
page_id,
|
||||
page_title,
|
||||
saving: false,
|
||||
status: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Root app ─────────────────────────────────────────────────────────────────
|
||||
|
||||
pub struct App {
|
||||
pub state: AppState,
|
||||
pub login: LoginForm,
|
||||
pub main: MainView,
|
||||
pub editor: EditorView,
|
||||
pub base_url: String,
|
||||
pub token: String,
|
||||
}
|
||||
@@ -149,6 +181,7 @@ impl App {
|
||||
state: AppState::Login,
|
||||
login: LoginForm::new(),
|
||||
main: MainView::new(),
|
||||
editor: EditorView::new(String::new(), String::new()),
|
||||
base_url: String::new(),
|
||||
token: String::new(),
|
||||
}
|
||||
@@ -162,6 +195,9 @@ pub enum AppMsg {
|
||||
LoginError(String),
|
||||
SpacesLoaded(Vec<Space>),
|
||||
PagesLoaded(Vec<Page>),
|
||||
PageContentLoaded { page_id: String, title: String, content: String },
|
||||
PageSaved,
|
||||
SaveError(String),
|
||||
ApiError(String),
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user