Delete feed button
And a non-functional edit button
This commit is contained in:
parent
478e72d8f0
commit
b94555d346
@ -144,9 +144,23 @@ form.add-feed-form .form-grid textarea {
|
|||||||
resize: vertical;
|
resize: vertical;
|
||||||
}
|
}
|
||||||
|
|
||||||
form.add-feed-form input[type="submit"] {
|
form.add-feed-form button {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
margin-top: 24px;
|
margin-top: 24px;
|
||||||
padding: 4px 16px;
|
padding: 4px 16px;
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Feed */
|
||||||
|
|
||||||
|
header.feed-header {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
header.feed-header button {
|
||||||
|
font-size: 14px;
|
||||||
|
padding: 4px 16px;
|
||||||
|
margin-left: 24px;
|
||||||
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use axum::extract::{Path, State};
|
use axum::extract::{Path, State};
|
||||||
use axum::http::StatusCode;
|
use axum::http::StatusCode;
|
||||||
use axum::response::{IntoResponse, Response};
|
use axum::response::{IntoResponse, Response, Redirect};
|
||||||
use axum::Form;
|
use axum::Form;
|
||||||
use feed_rs::parser;
|
use feed_rs::parser;
|
||||||
use maud::html;
|
use maud::html;
|
||||||
@ -11,7 +11,7 @@ use sqlx::PgPool;
|
|||||||
|
|
||||||
use crate::error::{Error, Result};
|
use crate::error::{Error, Result};
|
||||||
use crate::models::entry::get_entries_for_feed;
|
use crate::models::entry::get_entries_for_feed;
|
||||||
use crate::models::feed::{create_feed, get_feed, CreateFeed};
|
use crate::models::feed::{create_feed, get_feed, CreateFeed, delete_feed};
|
||||||
use crate::partials::{entry_list::entry_list, feed_link::feed_link, layout::Layout};
|
use crate::partials::{entry_list::entry_list, feed_link::feed_link, layout::Layout};
|
||||||
use crate::uuid::Base62Uuid;
|
use crate::uuid::Base62Uuid;
|
||||||
use crate::turbo_stream::TurboStream;
|
use crate::turbo_stream::TurboStream;
|
||||||
@ -23,8 +23,15 @@ pub async fn get(
|
|||||||
) -> Result<Response> {
|
) -> Result<Response> {
|
||||||
let feed = get_feed(&pool, id.as_uuid()).await?;
|
let feed = get_feed(&pool, id.as_uuid()).await?;
|
||||||
let entries = get_entries_for_feed(&pool, feed.feed_id, Default::default()).await?;
|
let entries = get_entries_for_feed(&pool, feed.feed_id, Default::default()).await?;
|
||||||
|
let delete_url = format!("/feed/{}/delete", id);
|
||||||
Ok(layout.render(html! {
|
Ok(layout.render(html! {
|
||||||
|
header class="feed-header" {
|
||||||
h2 { (feed.title.unwrap_or_else(|| "Untitled Feed".to_string())) }
|
h2 { (feed.title.unwrap_or_else(|| "Untitled Feed".to_string())) }
|
||||||
|
button class="edit-feed" { "✏️ Edit feed" }
|
||||||
|
form action=(delete_url) method="post" {
|
||||||
|
button type="submit" class="remove-feed" data-controller="remove-feed" { "❌ Remove feed" }
|
||||||
|
}
|
||||||
|
}
|
||||||
@if let Some(description) = feed.description {
|
@if let Some(description) = feed.description {
|
||||||
p { (description) }
|
p { (description) }
|
||||||
}
|
}
|
||||||
@ -128,3 +135,11 @@ pub async fn post(
|
|||||||
)
|
)
|
||||||
.into_response())
|
.into_response())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub async fn delete(
|
||||||
|
State(pool): State<PgPool>,
|
||||||
|
Path(id): Path<Base62Uuid>,
|
||||||
|
) -> Result<Redirect> {
|
||||||
|
delete_feed(&pool, id.as_uuid()).await?;
|
||||||
|
Ok(Redirect::to("/feeds"))
|
||||||
|
}
|
||||||
|
@ -28,7 +28,7 @@ pub async fn get(State(pool): State<PgPool>, layout: Layout) -> Result<Response>
|
|||||||
label { "Description: " }
|
label { "Description: " }
|
||||||
textarea id="description" name="description" placeholder="Feed description" {}
|
textarea id="description" name="description" placeholder="Feed description" {}
|
||||||
}
|
}
|
||||||
input type="submit" value="Add Feed";
|
button type="submit" { "Add Feed" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,7 @@ async fn main() -> Result<()> {
|
|||||||
.route("/feeds", get(handlers::feeds::get))
|
.route("/feeds", get(handlers::feeds::get))
|
||||||
.route("/feed", post(handlers::feed::post))
|
.route("/feed", post(handlers::feed::post))
|
||||||
.route("/feed/:id", get(handlers::feed::get))
|
.route("/feed/:id", get(handlers::feed::get))
|
||||||
|
.route("/feed/:id/delete", post(handlers::feed::delete))
|
||||||
.route("/entry/:id", get(handlers::entry::get))
|
.route("/entry/:id", get(handlers::entry::get))
|
||||||
.route("/log", get(handlers::log::get))
|
.route("/log", get(handlers::log::get))
|
||||||
.route("/log/stream", get(handlers::log::stream))
|
.route("/log/stream", get(handlers::log::stream))
|
||||||
|
Loading…
Reference in New Issue
Block a user