Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Query delegate projects if radicle.id is set
Alexis Sellier committed 4 years ago
commit 217bd814a64c4c79e1105b63f35db962d08c0a40
parent 4651275e7150df0723d3ab1534a8d59238fc2b82
5 files changed +19 -4
modified src/base/orgs/View/Projects.svelte
@@ -59,7 +59,7 @@
</style>

<div class="projects">
-
  {#await seed.getProjects()}
+
  {#await seed.getProjects(profile?.id)}
    <Loading center />
  {:then projects}
    {#each projects as project}
modified src/base/registrations/registrar.ts
@@ -17,6 +17,7 @@ export interface Registration {

export interface EnsProfile {
  name: string;
+
  id?: string;
  owner?: string;
  address?: string;
  seed?: Seed | InvalidSeed;
@@ -73,6 +74,7 @@ export async function getRegistration(name: string, config: Config, resolver?: E
    resolver.getAddress(),
    resolver.getText('avatar'),
    resolver.getText('url'),
+
    resolver.getText('eth.radicle.id'),
    resolver.getText('eth.radicle.seed.id'),
    resolver.getText('eth.radicle.seed.host'),
    resolver.getText('eth.radicle.seed.git'),
@@ -82,11 +84,12 @@ export async function getRegistration(name: string, config: Config, resolver?: E
    resolver.getText('com.github'),
  ]);

-
  const [address, avatar, url, seedId, seedHost, seedGit, seedApi, anchorsAccount, twitter, github] =
+
  const [address, avatar, url, id, seedId, seedHost, seedGit, seedApi, anchorsAccount, twitter, github] =
    meta.map(r => r.status == "fulfilled" && r.value ? r.value : undefined);

  const profile: EnsProfile = {
    name,
+
    id,
    url,
    avatar,
    anchorsAccount,
modified src/base/seeds/Seed.ts
@@ -68,8 +68,11 @@ export class Seed {
    return proj.getInfo(urn, this.api);
  }

-
  async getProjects(): Promise<proj.ProjectInfo[]> {
-
    const result = await proj.getProjects(this.api);
+
  async getProjects(id?: string): Promise<proj.ProjectInfo[]> {
+
    const result = id
+
      ? await proj.getDelegateProjects(id, this.api)
+
      : await proj.getProjects(this.api);
+

    return result.map((project: any) => ({ ...project, id: project.urn }));
  }

modified src/profile.ts
@@ -37,6 +37,11 @@ export class Profile {
    return this.profile.ens?.address ?? this.profile.address;
  }

+
  // Get radicle link id.
+
  get id(): string | undefined {
+
    return this.profile.ens?.id;
+
  }
+

  // Get the address type
  get type(): AddressType {
    return this.profile.type;
modified src/project.ts
@@ -117,6 +117,10 @@ export async function getProjects(host: api.Host): Promise<ProjectInfo[]> {
  return api.get("projects", {}, host);
}

+
export async function getDelegateProjects(delegate: string, host: api.Host): Promise<ProjectInfo[]> {
+
  return api.get(`delegates/${delegate}/projects`, {}, host);
+
}
+

export async function getBranchesByPeer(urn: string, peer: string, host: api.Host): Promise<Branches> {
  return api.get(`projects/${urn}/remotes/${peer}`, {}, host);
}