feat: fetch news online if there is an issue with a provider
This commit is contained in:
parent
21390da057
commit
ac9a518f13
63
src/main.py
63
src/main.py
|
@ -45,6 +45,7 @@ import os
|
|||
import markdown
|
||||
import tempfile
|
||||
import re
|
||||
import requests
|
||||
|
||||
class Step(IntEnum):
|
||||
CONVERT_HTML = auto()
|
||||
|
@ -81,13 +82,28 @@ class KillableThread(threading.Thread):
|
|||
def kill(self):
|
||||
self.killed = True
|
||||
|
||||
|
||||
|
||||
ANNOUCEMENT_URL = "https://bavarder.codeberg.page/annoucements.json"
|
||||
|
||||
class Annoucements:
|
||||
def __init__(self):
|
||||
self.annoucements = {}
|
||||
self.load()
|
||||
|
||||
def load(self):
|
||||
try:
|
||||
self.annoucements = requests.get(ANNOUCEMENT_URL).json()
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
|
||||
|
||||
class BavarderApplication(Adw.Application):
|
||||
"""The main application singleton class."""
|
||||
|
||||
annoucements = {}
|
||||
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
application_id="io.github.Bavarder.Bavarder",
|
||||
|
@ -129,8 +145,12 @@ class BavarderApplication(Adw.Application):
|
|||
self.on_set_provider_action
|
||||
)
|
||||
|
||||
self.load_annoucements()
|
||||
self.use_theme = False
|
||||
|
||||
def load_annoucements(self):
|
||||
self.annoucements = requests.get(ANNOUCEMENT_URL).json()
|
||||
|
||||
def on_open_help(self, action, *args):
|
||||
GLib.spawn_command_line_async(
|
||||
f"xdg-open https://bavarder.codeberg.page"
|
||||
|
@ -241,6 +261,8 @@ class BavarderApplication(Adw.Application):
|
|||
self.win.prompt_text_view.grab_focus()
|
||||
|
||||
def load_dropdown(self, window=None):
|
||||
if window is None:
|
||||
window = self.props.active_window
|
||||
|
||||
self.menu_model = Gio.Menu()
|
||||
self.menu_model.append_item(Gio.MenuItem.new(label=_("New Window"), detailed_action="app.new"))
|
||||
|
@ -1070,20 +1092,20 @@ Close All Without Dialog: {self.close_all_without_dialog}
|
|||
--kbd-shadow-color: #8c939a;
|
||||
"""
|
||||
DARK_CUSTOM_STYLE = """
|
||||
--text-color: {card_fg_color};
|
||||
--background-color: {card_bg_color};
|
||||
--alt-background-color: {view_bg_color};
|
||||
--link-color: {accent_fg_color};
|
||||
--blockquote-text-color: {card_fg_color};
|
||||
--blockquote-border-color: {card_bg_color};
|
||||
--header-border-color: {headerbar_border_color};
|
||||
--hr-background-color: {headerbar_bg_color};
|
||||
--table-tr-border-color: {headerbar_border_color};
|
||||
--table-td-border-color: {headerbar_border_color};
|
||||
--kbd-text-color: #ffffff;
|
||||
--kbd-background-color: #4a4a4a;
|
||||
--kbd-border-color: #1f1f1f;
|
||||
--kbd-shadow-color: #1e1e1e;
|
||||
--text-color: {card_fg_color};
|
||||
--background-color: {card_bg_color};
|
||||
--alt-background-color: {view_bg_color};
|
||||
--link-color: {accent_fg_color};
|
||||
--blockquote-text-color: {card_fg_color};
|
||||
--blockquote-border-color: {card_bg_color};
|
||||
--header-border-color: {headerbar_border_color};
|
||||
--hr-background-color: {headerbar_bg_color};
|
||||
--table-tr-border-color: {headerbar_border_color};
|
||||
--table-td-border-color: {headerbar_border_color};
|
||||
--kbd-text-color: #ffffff;
|
||||
--kbd-background-color: #4a4a4a;
|
||||
--kbd-border-color: #1f1f1f;
|
||||
--kbd-shadow-color: #1e1e1e;
|
||||
"""
|
||||
|
||||
if os.path.exists(os.path.expanduser("~/.config/gtk-4.0/gtk.css")):
|
||||
|
@ -1108,6 +1130,17 @@ Close All Without Dialog: {self.close_all_without_dialog}
|
|||
def on_ask_action(self, widget, _):
|
||||
"""Callback for the app.ask action."""
|
||||
|
||||
self.win.banner.set_revealed(False)
|
||||
|
||||
for an in self.annoucements.values():
|
||||
print(an)
|
||||
if an["provider"] == self.provider:
|
||||
if an["status"] == "open":
|
||||
self.win.banner.set_title(an["message"])
|
||||
self.win.banner.set_revealed(True)
|
||||
return
|
||||
break
|
||||
|
||||
self.prompt = self.win.prompt_text_view.get_buffer().props.text.strip()
|
||||
|
||||
if self.prompt == "" or self.prompt is None: # empty prompt
|
||||
|
|
Loading…
Reference in New Issue
Block a user