add quicklist to subreddit
This commit is contained in:
parent
ad39254ddc
commit
85dab5e070
@ -327,6 +327,8 @@ async fn main() {
|
||||
app.at("/r/:sub/unsubscribe").post(|r| subreddit::subscriptions_filters(r).boxed());
|
||||
app.at("/r/:sub/filter").post(|r| subreddit::subscriptions_filters(r).boxed());
|
||||
app.at("/r/:sub/unfilter").post(|r| subreddit::subscriptions_filters(r).boxed());
|
||||
app.at("/r/:sub/quicklist").post(|r| subreddit::subscriptions_filters(r).boxed());
|
||||
app.at("/r/:sub/unquicklist").post(|r| subreddit::subscriptions_filters(r).boxed());
|
||||
|
||||
app.at("/r/:sub/comments/:id").get(|r| post::item(r).boxed());
|
||||
app.at("/r/:sub/comments/:id/:title").get(|r| post::item(r).boxed());
|
||||
|
@ -229,6 +229,7 @@ pub async fn subscriptions_filters(req: Request<Body>) -> Result<Response<Body>,
|
||||
let preferences = Preferences::new(&req);
|
||||
let mut sub_list = preferences.subscriptions;
|
||||
let mut filters = preferences.filters;
|
||||
let mut quicklist = preferences.quicklist;
|
||||
|
||||
// Retrieve list of posts for these subreddits to extract display names
|
||||
|
||||
@ -290,7 +291,14 @@ pub async fn subscriptions_filters(req: Request<Body>) -> Result<Response<Body>,
|
||||
} else if action.contains(&"unfilter".to_string()) {
|
||||
// Remove sub name from filtered list
|
||||
filters.retain(|s| s.to_lowercase() != part.to_lowercase());
|
||||
}
|
||||
} else if action.contains(&"quicklist".to_string()) && !quicklist.contains(&part.to_owned()) {
|
||||
// Add each sub name to the filtered list
|
||||
quicklist.push(part.to_owned());
|
||||
} else if action.contains(&"unquicklist".to_string()) {
|
||||
// Remove sub name from filtered list
|
||||
quicklist.retain(|s| s.to_lowercase() != part.to_lowercase());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Redirect back to subreddit
|
||||
@ -326,6 +334,17 @@ pub async fn subscriptions_filters(req: Request<Body>) -> Result<Response<Body>,
|
||||
.into(),
|
||||
);
|
||||
}
|
||||
if quicklist.is_empty() {
|
||||
response.remove_cookie("quicklist".to_string());
|
||||
} else {
|
||||
response.insert_cookie(
|
||||
Cookie::build(("quicklist", quicklist.join("+")))
|
||||
.path("/")
|
||||
.http_only(true)
|
||||
.expires(OffsetDateTime::now_utc() + Duration::weeks(52))
|
||||
.into(),
|
||||
);
|
||||
}
|
||||
|
||||
Ok(response)
|
||||
}
|
||||
|
@ -429,7 +429,7 @@ a:hover {
|
||||
}
|
||||
|
||||
svg {
|
||||
stroke: var(--text);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
img[src=""] {
|
||||
@ -523,9 +523,16 @@ aside {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#sub_actions {
|
||||
display: grid;
|
||||
grid-template-columns: auto 2fr 1fr;
|
||||
grid-template-rows: 1fr;
|
||||
grid-column-gap: 0px;
|
||||
grid-row-gap: 0px;
|
||||
}
|
||||
|
||||
#user_details,
|
||||
#sub_details,
|
||||
#sub_actions,
|
||||
#user_actions {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
@ -545,6 +552,8 @@ aside {
|
||||
#user_subscription,
|
||||
#sub_filter,
|
||||
#user_filter,
|
||||
#sub_quicklist,
|
||||
#user_quicklist,
|
||||
#sub_rss,
|
||||
#user_rss {
|
||||
margin-top: 20px;
|
||||
@ -554,9 +563,15 @@ aside {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
#sub_quicklist button {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.subscribe,
|
||||
.unsubscribe,
|
||||
.filter,
|
||||
.unquick,
|
||||
.quick,
|
||||
.unfilter {
|
||||
padding: 10px 20px;
|
||||
border-radius: 5px;
|
||||
@ -568,12 +583,22 @@ aside {
|
||||
color: var(--foreground);
|
||||
background-color: var(--accent);
|
||||
}
|
||||
.quick {
|
||||
color: var(--foreground);
|
||||
background-color: var(--accent);
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.unsubscribe,
|
||||
.unfilter {
|
||||
color: var(--text);
|
||||
background-color: var(--highlighted);
|
||||
}
|
||||
.unquick {
|
||||
color: var(--text);
|
||||
background-color: var(--highlighted);
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
/* Feeds */
|
||||
|
||||
@ -2283,4 +2308,4 @@ th {
|
||||
|
||||
.download:active {
|
||||
background-color: var(--background);
|
||||
}
|
||||
}
|
||||
|
@ -134,6 +134,31 @@
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div id="sub_quicklist">
|
||||
{% if prefs.quicklist.contains(sub.name) %}
|
||||
<form action="/r/{{ sub.name }}/unquicklist?redirect={{ redirect_url }}" method="POST">
|
||||
<button>
|
||||
<svg class="unquick" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<g fill="none">
|
||||
<path d="m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z" />
|
||||
<path fill="currentColor" d="M16 2a3 3 0 0 1 3 3v11h-3a3 3 0 0 0-2.997 2.87L12 18.202l-4.668 3.112C6.335 21.978 5 21.264 5 20.066V5a3 3 0 0 1 3-3zm6 16a1 1 0 0 1 .117 1.993L22 20h-6a1 1 0 0 1-.117-1.993L16 18z" />
|
||||
</g>
|
||||
</svg>
|
||||
</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<form action="/r/{{ sub.name }}/quicklist?redirect={{ redirect_url }}" method="POST">
|
||||
<button>
|
||||
<svg class="quick" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<path d="m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z" />
|
||||
<path fill="currentColor" d="M10 2a3 3 0 0 0-3 3a3 3 0 0 0-3 3v13.018c0 1.226 1.39 1.934 2.382 1.213l4.118-2.995l4.118 2.995c.991.721 2.382.013 2.382-1.213v-2.236l.618.45c.991.72 2.382.012 2.382-1.214V5a3 3 0 0 0-3-3zm7 14.309l1 .727V5a1 1 0 0 0-1-1h-7a1 1 0 0 0-1 1h5a3 3 0 0 1 3 3z" />
|
||||
</g>
|
||||
</svg>
|
||||
</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if crate::utils::enable_rss() %}
|
||||
<div id="sub_rss">
|
||||
<a href="/r/{{ sub.name }}.rss" title="RSS feed for r/{{ sub.name }}">
|
||||
|
Loading…
x
Reference in New Issue
Block a user