atproto explorer pdsls.dev
atproto tool

add go to repo shortcut

juli.ee 794d6b9a ded40009

verified
Changed files
+20 -2
src
+5 -1
src/auth/account.tsx
···
return (
<MenuProvider>
<DropdownMenu icon="lucide--ellipsis" buttonClass="rounded-md p-2">
-
<NavMenu href={`/at://${props.did}`} label="Go to repo" icon="lucide--user-round" />
+
<NavMenu
+
href={`/at://${props.did}`}
+
label={agent()?.sub === props.did ? "Go to repo (g)" : "Go to repo"}
+
icon="lucide--user-round"
+
/>
<ActionMenu
icon="lucide--settings"
label="Edit permissions"
+15 -1
src/layout.tsx
···
import { Handle } from "@atcute/lexicons";
import { Meta, MetaProvider } from "@solidjs/meta";
import { A, RouteSectionProps, useLocation, useNavigate } from "@solidjs/router";
-
import { createEffect, ErrorBoundary, onMount, Show, Suspense } from "solid-js";
+
import { createEffect, ErrorBoundary, onCleanup, onMount, Show, Suspense } from "solid-js";
import { AccountManager } from "./auth/account.jsx";
import { hasUserScope } from "./auth/scope-utils";
+
import { agent } from "./auth/state.js";
import { RecordEditor } from "./components/create.jsx";
import { DropdownMenu, MenuProvider, MenuSeparator, NavMenu } from "./components/dropdown.jsx";
import { NavBar } from "./components/navbar.jsx";
···
onMount(() => {
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", themeEvent);
+
+
const handleGoToRepo = (ev: KeyboardEvent) => {
+
if (document.querySelector("[data-modal]")) return;
+
if (ev.target instanceof HTMLInputElement || ev.target instanceof HTMLTextAreaElement) return;
+
+
if (ev.key === "g" && agent()?.sub) {
+
ev.preventDefault();
+
navigate(`/at://${agent()!.sub}`);
+
}
+
};
+
+
window.addEventListener("keydown", handleGoToRepo);
+
onCleanup(() => window.removeEventListener("keydown", handleGoToRepo));
if (localStorage.getItem("sailor") === "true") {
const style = document.createElement("style");