From 6d5805e66204caa599a8a2996238adf7931cb95b Mon Sep 17 00:00:00 2001
From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>
Date: Thu, 16 Jan 2025 23:20:39 +1100
Subject: refactor: move popdowns to own folder
And group them like osds
---
src/modules/popdowns/updates.tsx | 88 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 88 insertions(+)
create mode 100644 src/modules/popdowns/updates.tsx
(limited to 'src/modules/popdowns/updates.tsx')
diff --git a/src/modules/popdowns/updates.tsx b/src/modules/popdowns/updates.tsx
new file mode 100644
index 0000000..359fe81
--- /dev/null
+++ b/src/modules/popdowns/updates.tsx
@@ -0,0 +1,88 @@
+import { bind, execAsync, Variable } from "astal";
+import { App, Astal, Gtk } from "astal/gtk3";
+import Updates, { Repo as IRepo, Update as IUpdate } from "../../services/updates";
+import { MenuItem } from "../../utils/widgets";
+import PopdownWindow from "../../widgets/popdownwindow";
+
+const constructItem = (label: string, exec: string, quiet = true) =>
+ new MenuItem({
+ label,
+ onActivate() {
+ App.get_window("updates")?.hide();
+ execAsync(exec).catch(e => !quiet && console.error(e));
+ },
+ });
+
+const Update = (update: IUpdate) => {
+ const menu = new Gtk.Menu();
+ menu.append(constructItem("Open info in browser", `xdg-open '${update.url}'`, false));
+ menu.append(constructItem("Open info in terminal", `uwsm app -- foot -H pacman -Qi ${update.name}`));
+ menu.append(constructItem("Reinstall", `uwsm app -T -- yay -S ${update.name}`));
+ menu.append(constructItem("Remove with dependencies", `uwsm app -T -- yay -Rns ${update.name}`));
+
+ return (
+
+ );
+};
+
+const Repo = (repo: IRepo) => {
+ const expanded = Variable(false);
+
+ return (
+
+
+
+
+ {repo.updates.map(Update)}
+
+
+
+ );
+};
+
+const List = () => (
+
+ {bind(Updates.get_default(), "updateData").as(d => d.repos.map(Repo))}
+
+);
+
+export default () => (
+
+ execAsync("uwsm app -T -- yay")
+ .then(() => Updates.get_default().getUpdates())
+ // Ignore errors
+ .catch(() => {}),
+ },
+ { label: "Reload", onClicked: () => Updates.get_default().getUpdates() },
+ ]}
+ emptyIcon="deployed_code_history"
+ emptyLabel="All packages up to date!"
+ list={
}
+ />
+);
--
cgit v1.2.3-freya