Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Set page title in the router
Rūdolfs Ošiņš committed 2 years ago
commit cdd0b9c7b654666918105386a6f78bfd981b20fe
parent d0ee6e42e66bc9049ccbc9f0510e9276efe1bde5
6 files changed +63 -18
modified index.html
@@ -93,7 +93,7 @@
      import { Buffer } from "buffer";
      window.Buffer = Buffer;
    </script>
-
    <title>Radicle Interface</title>
+
    <title>Radicle</title>
  </head>
  <body>
    <script type="module" src="/src/index.ts"></script>
modified src/App.svelte
@@ -51,10 +51,6 @@
  }
</style>

-
<svelte:head>
-
  <title>Radicle</title>
-
</svelte:head>
-

{#if $activeRouteStore.resource !== "booting"}
  <LoadingBar />
{/if}
modified src/lib/router.ts
@@ -8,6 +8,7 @@ import * as utils from "@app/lib/utils";
import { config } from "@app/lib/config";
import {
  projectRouteToPath,
+
  projectTitle,
  resolveProjectRoute,
} from "@app/views/projects/router";
import { loadRoute } from "@app/lib/router/definitions";
@@ -15,9 +16,6 @@ import { seedPath } from "@app/views/seeds/router";

export { type Route };

-
// Only used by Safari.
-
const DOCUMENT_TITLE = "Radicle Interface";
-

export const isLoading = writable<boolean>(true);
export const activeRouteStore = writable<LoadedRoute>({
  resource: "booting",
@@ -97,9 +95,9 @@ async function navigate(
    : routeToPath(newRoute);

  if (action === "push") {
-
    window.history.pushState(newRoute, DOCUMENT_TITLE, path);
+
    window.history.pushState(newRoute, "", path);
  } else if (action === "replace") {
-
    window.history.replaceState(newRoute, DOCUMENT_TITLE);
+
    window.history.replaceState(newRoute, "");
  }
  currentUrl = new URL(window.location.href);

@@ -112,10 +110,36 @@ async function navigate(
    return;
  }

+
  setTitle(loadedRoute);
  activeRouteStore.set(loadedRoute);
  isLoading.set(false);
}

+
function setTitle(loadedRoute: LoadedRoute) {
+
  const title: string[] = [];
+

+
  if (loadedRoute.resource === "booting" || loadedRoute.resource === "home") {
+
    title.push("Radicle");
+
  } else if (loadedRoute.resource === "loadError") {
+
    title.push("Load error");
+
    title.push("Radicle");
+
  } else if (loadedRoute.resource === "notFound") {
+
    title.push("Page not found");
+
    title.push("Radicle");
+
  } else if (loadedRoute.resource === "projects") {
+
    title.push(...projectTitle(loadedRoute));
+
  } else if (loadedRoute.resource === "seeds") {
+
    title.push(loadedRoute.params.baseUrl.hostname);
+
  } else if (loadedRoute.resource === "session") {
+
    title.push("Authenticating");
+
    title.push("Radicle");
+
  } else {
+
    utils.unreachable(loadedRoute);
+
  }
+

+
  document.title = title.join(" · ");
+
}
+

export async function push(newRoute: Route): Promise<void> {
  await navigate("push", newRoute);
}
modified src/views/home/Index.svelte
@@ -51,10 +51,6 @@
  }
</style>

-
<svelte:head>
-
  <title>Radicle &ndash; Home</title>
-
</svelte:head>
-

<div class="wrapper">
  <div class="blurb">
    <p use:twemoji>
modified src/views/projects/router.ts
@@ -651,4 +651,37 @@ export function projectRouteToPath(params: ProjectsParams): string {
  }
}

+
export function projectTitle(loadedRoute: ProjectLoadedRoute) {
+
  const title: string[] = [];
+

+
  if (loadedRoute.params.view.resource === "tree") {
+
    title.push(loadedRoute.params.project.name);
+
    title.push(loadedRoute.params.project.description);
+
  } else if (loadedRoute.params.view.resource === "commits") {
+
    title.push(loadedRoute.params.view.commit.commit.summary);
+
    title.push("commit");
+
  } else if (loadedRoute.params.view.resource === "history") {
+
    title.push(loadedRoute.params.project.name);
+
    title.push("history");
+
  } else if (loadedRoute.params.view.resource === "newIssue") {
+
    title.push("new issue");
+
  } else if (loadedRoute.params.view.resource === "issue") {
+
    title.push(loadedRoute.params.view.issue.title);
+
    title.push("issue");
+
  } else if (loadedRoute.params.view.resource === "issues") {
+
    title.push(loadedRoute.params.project.name);
+
    title.push("issues");
+
  } else if (loadedRoute.params.view.resource === "patch") {
+
    title.push(loadedRoute.params.view.patch.title);
+
    title.push("patch");
+
  } else if (loadedRoute.params.view.resource === "patches") {
+
    title.push(loadedRoute.params.project.name);
+
    title.push("patches");
+
  } else {
+
    return unreachable(loadedRoute.params.view);
+
  }
+

+
  return title;
+
}
+

export const testExports = { isOid };
modified src/views/seeds/View.svelte
@@ -92,10 +92,6 @@
  }
</style>

-
<svelte:head>
-
  <title>{hostname}</title>
-
</svelte:head>
-

<div class="wrapper">
  <div class="header">
    {hostname}