Add has_webhooks function and update navbar visibility based on if webhooks exist
This commit is contained in:
parent
9446e46f22
commit
9b685e4980
3 changed files with 37 additions and 4 deletions
|
|
@ -114,6 +114,13 @@ def get_reader_dependency() -> Reader:
|
||||||
return get_reader()
|
return get_reader()
|
||||||
|
|
||||||
|
|
||||||
|
def has_webhooks() -> bool:
|
||||||
|
"""Return whether at least one global webhook is configured."""
|
||||||
|
reader: Reader = get_reader()
|
||||||
|
webhooks = list(reader.get_tag((), "webhooks", []))
|
||||||
|
return bool(webhooks)
|
||||||
|
|
||||||
|
|
||||||
# Time constants for relative time formatting
|
# Time constants for relative time formatting
|
||||||
SECONDS_PER_MINUTE = 60
|
SECONDS_PER_MINUTE = 60
|
||||||
SECONDS_PER_HOUR = 3600
|
SECONDS_PER_HOUR = 3600
|
||||||
|
|
@ -185,6 +192,7 @@ templates.env.filters["encode_url"] = lambda url: urllib.parse.quote(str(url)) i
|
||||||
templates.env.filters["discord_markdown"] = markdownify # pyright: ignore[reportArgumentType]
|
templates.env.filters["discord_markdown"] = markdownify # pyright: ignore[reportArgumentType]
|
||||||
templates.env.filters["relative_time"] = relative_time
|
templates.env.filters["relative_time"] = relative_time
|
||||||
templates.env.globals["get_backup_path"] = get_backup_path # pyright: ignore[reportArgumentType]
|
templates.env.globals["get_backup_path"] = get_backup_path # pyright: ignore[reportArgumentType]
|
||||||
|
templates.env.globals["has_webhooks"] = has_webhooks # pyright: ignore[reportArgumentType]
|
||||||
|
|
||||||
|
|
||||||
@app.post("/add_webhook")
|
@app.post("/add_webhook")
|
||||||
|
|
|
||||||
|
|
@ -12,10 +12,12 @@
|
||||||
<a class="nav-link" href="/">Feeds</a>
|
<a class="nav-link" href="/">Feeds</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item nav-link d-none d-md-block">|</li>
|
<li class="nav-item nav-link d-none d-md-block">|</li>
|
||||||
<li class="nav-item">
|
{% if has_webhooks() %}
|
||||||
<a class="nav-link" href="/add">Add feed</a>
|
<li class="nav-item">
|
||||||
</li>
|
<a class="nav-link" href="/add">Add feed</a>
|
||||||
<li class="nav-item nav-link d-none d-md-block">|</li>
|
</li>
|
||||||
|
<li class="nav-item nav-link d-none d-md-block">|</li>
|
||||||
|
{% endif %}
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/webhooks">Webhooks</a>
|
<a class="nav-link" href="/webhooks">Webhooks</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ if TYPE_CHECKING:
|
||||||
import pytest
|
import pytest
|
||||||
from httpx import Response
|
from httpx import Response
|
||||||
from reader import Entry
|
from reader import Entry
|
||||||
|
from reader import Reader
|
||||||
|
|
||||||
client: TestClient = TestClient(app)
|
client: TestClient = TestClient(app)
|
||||||
webhook_name: str = "Hello, I am a webhook!"
|
webhook_name: str = "Hello, I am a webhook!"
|
||||||
|
|
@ -197,6 +198,28 @@ def test_add_page_shows_global_default_delivery_mode_hint() -> None:
|
||||||
assert "text" in response.text
|
assert "text" in response.text
|
||||||
|
|
||||||
|
|
||||||
|
def test_navbar_add_feed_visible_only_when_webhooks_exist() -> None:
|
||||||
|
reader: Reader = get_reader_dependency()
|
||||||
|
reader.set_tag((), "webhooks", []) # pyright: ignore[reportArgumentType]
|
||||||
|
|
||||||
|
response: Response = client.get(url="/")
|
||||||
|
assert response.status_code == 200, f"/ failed: {response.text}"
|
||||||
|
assert '<a class="nav-link" href="/add">Add feed</a>' not in response.text
|
||||||
|
|
||||||
|
response = client.post(
|
||||||
|
url="/add_webhook",
|
||||||
|
data={"webhook_name": webhook_name, "webhook_url": webhook_url},
|
||||||
|
)
|
||||||
|
assert response.status_code == 200, f"Failed to add webhook: {response.text}"
|
||||||
|
|
||||||
|
response = client.get(url="/")
|
||||||
|
assert response.status_code == 200, f"/ failed: {response.text}"
|
||||||
|
assert '<a class="nav-link" href="/add">Add feed</a>' in response.text
|
||||||
|
|
||||||
|
cleanup_response: Response = client.post(url="/delete_webhook", data={"webhook_url": webhook_url})
|
||||||
|
assert cleanup_response.status_code == 200, f"Failed to clean up webhook: {cleanup_response.text}"
|
||||||
|
|
||||||
|
|
||||||
def test_c3kay_feed_delivery_mode_toggle_routes_update_stored_tags() -> None:
|
def test_c3kay_feed_delivery_mode_toggle_routes_update_stored_tags() -> None:
|
||||||
reader = get_reader_dependency()
|
reader = get_reader_dependency()
|
||||||
c3kay_feed_url = "https://feeds.c3kay.de/hoyolab-ui-toggle-test.xml"
|
c3kay_feed_url = "https://feeds.c3kay.de/hoyolab-ui-toggle-test.xml"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue