import app from "ags/gtk3/app"
import { Astal, Gtk, Gdk } from "ags/gtk3"
import { createPoll } from "ags/time"
import { getBrainState } from "../../lib/brain"
function BrainContent() {
const state = createPoll("", 10000, () => JSON.stringify(getBrainState()))
const version = state((s: string) => {
try { return `kernel v${JSON.parse(s).kernelVersion}` } catch { return "" }
})
const focus = state((s: string) => {
try { return JSON.parse(s).focus } catch { return "..." }
})
const session = state((s: string) => {
try {
const sess = JSON.parse(s).session
return sess || "aucune session active"
} catch { return "..." }
})
const intentionsTitle = state((s: string) => {
try {
const i = JSON.parse(s).intentions
return ` INTENTIONS (${i.active} active${i.active > 1 ? "s" : ""})`
} catch { return " INTENTIONS" }
})
const intentionsList = state((s: string) => {
try {
const names = JSON.parse(s).intentions.names
return names.map((n: string) => ` • ${n}`).join("\n") || " aucune"
} catch { return "..." }
})
const todosTitle = state((s: string) => {
try {
const t = JSON.parse(s).todos
return `${t.open} ouverts / ${t.done} faits`
} catch { return "" }
})
const todosList = state((s: string) => {
try {
const t = JSON.parse(s).todos.top3
return t.map((item: string) => ` ⬜ ${item}`).join("\n") || " rien"
} catch { return "..." }
})
const reposStatus = state((s: string) => {
try {
const repos = JSON.parse(s).repos
return repos.map((r: any) => ` ${r.name.padEnd(14)} ${r.status}`).join("\n")
} catch { return "..." }
})
const commitsList = state((s: string) => {
try {
const commits = JSON.parse(s).commits
return commits.map((c: string) => ` ${c}`).join("\n") || " aucun"
} catch { return "..." }
})
return (
{/* FOCUS */}
{/* SESSION */}
{/* INTENTIONS */}
{/* TODOS */}
{/* REPOS */}
{/* COMMITS */}
)
}
export default function BrainPower(gdkmonitor: Gdk.Monitor) {
const { TOP, LEFT, BOTTOM } = Astal.WindowAnchor
return (
{
const win = app.get_window("brain-power")
if (win) win.visible = false
}}
>
)
}