From 82a2ac6f6427ac2dc7edbcf3dc816e0e18fb7a8d Mon Sep 17 00:00:00 2001 From: Sebastian Martinez Date: Thu, 3 Feb 2022 23:13:15 +0100 Subject: [PATCH] Allow users to pass project names into URL Signed-off-by: Sebastian Martinez --- src/base/projects/Header.svelte | 6 +++--- src/base/projects/Routes.svelte | 16 ++++++++-------- src/base/projects/View.svelte | 26 ++++++++++++++------------ src/project.ts | 5 +++-- 4 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/base/projects/Header.svelte b/src/base/projects/Header.svelte index 9fada7be7..da9d99edd 100644 --- a/src/base/projects/Header.svelte +++ b/src/base/projects/Header.svelte @@ -29,17 +29,17 @@ // Switches between the browser and commit view const toggleContent = (input: ProjectContent) => { - dispatch("routeParamsChange", { content: content === input ? ProjectContent.Tree : input, revision, peer, path }); + dispatch("routeParamsChange", { urn, content: content === input ? ProjectContent.Tree : input, revision, peer, path }); }; const updatePeer = (newPeer: string) => { dropdownState.peer = false; - dispatch("routeParamsChange", { content, revision, peer: newPeer, path }); + dispatch("routeParamsChange", { urn, content, revision, peer: newPeer, path }); }; const updateRevision = (newRevision: string) => { dropdownState.branch = false; - dispatch("routeParamsChange", { content, revision: newRevision, peer, path }); + dispatch("routeParamsChange", { urn, content, revision: newRevision, peer, path }); }; $: commit = getOid(project.head, revision, branches); diff --git a/src/base/projects/Routes.svelte b/src/base/projects/Routes.svelte index 96e49e225..c46c2b9be 100644 --- a/src/base/projects/Routes.svelte +++ b/src/base/projects/Routes.svelte @@ -9,22 +9,22 @@ - - + + - - + + - - + + - - + + diff --git a/src/base/projects/View.svelte b/src/base/projects/View.svelte index 0a361f72d..c0bc86e63 100644 --- a/src/base/projects/View.svelte +++ b/src/base/projects/View.svelte @@ -7,7 +7,7 @@ import Avatar from '@app/Avatar.svelte'; import { Profile, ProfileType } from '@app/profile'; import type { Info } from '@app/project'; - import { formatOrg, formatSeedId } from '@app/utils'; + import { formatOrg, formatSeedId, isRadicleId } from '@app/utils'; import { getOid } from '@app/project'; import { Seed } from '@app/base/seeds/Seed'; import { getAllAnchors } from '@app/anchors'; @@ -15,7 +15,7 @@ import Header from '@app/base/projects/Header.svelte'; import ProjectContentRoutes from '@app/base/projects/ProjectContentRoutes.svelte'; - export let urn: string; + export let id: string; // Project name or URN. export let org = ""; export let user = ""; export let seed = ""; @@ -23,7 +23,7 @@ export let config: Config; let parentName = formatOrg(org || user, config); - let pageTitle = parentName ? `${parentName}/${urn}` : urn; + let pageTitle = parentName ? `${parentName}/${id}` : id; let projectInfo: Info | null = null; let revision: string; let content: proj.ProjectContent; @@ -42,7 +42,8 @@ const profile = result?.profile; const seedInstance = profile?.seed ?? result?.seed; const cfg = seedInstance && seedInstance.valid ? config.withSeed(seedInstance) : config; - const info = await proj.getInfo(urn, cfg); + const info = await proj.getInfo(id, cfg); + const urn = isRadicleId(id) ? id : info.meta.urn; const anchors = await getAllAnchors(config, urn, profile?.anchorsAccount ?? org); let branches = Array([info.meta.defaultBranch, info.head]) as [string, string][]; @@ -50,6 +51,9 @@ projectInfo = info; + // Replace project name with URN, in URL bar. + navigate(proj.path({ peer, urn, org, revision, path, seed }), { replace: true }); + // Checks for delegates returned from seed node, as feature check of the seed node if (info.meta.delegates) { // Check for selected peer to override available branches. @@ -80,8 +84,8 @@ } } - function updateRouteParams({ detail: newParams }: { detail: { path: string; revision: string; peer: string; content: proj.ProjectContent } }) { - let newLocation = proj.path({ urn, user, org, seed, content: newParams.content, peer: newParams.peer, revision: newParams.revision, path: newParams.path }); + function updateRouteParams({ detail: newParams }: { detail: { urn: string; path: string; revision: string; peer: string; content: proj.ProjectContent } }) { + let newLocation = proj.path({ user, org, seed, urn: newParams.urn, content: newParams.content, peer: newParams.peer, revision: newParams.revision, path: newParams.path }); if (newLocation !== window.location.pathname) { navigate(newLocation); } @@ -92,8 +96,6 @@ } const back = () => window.history.back(); - - $: projectRoot = proj.path({ urn, user, org, seed });