Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Fix anchor lookup in project view
Alexis Sellier committed 4 years ago
commit 2fc2639b49c0d86f5814325cfa3e8856955d1f1d
parent b26192f933f99a479f1dbb1611688c7c6f7751cb
3 files changed +15 -7
modified src/anchors.ts
@@ -16,13 +16,11 @@ interface AnchorObject {
  multihash: string;
}

-
export async function getAllAnchors(config: Config, urn: string, anchors?: string | null): Promise<string[]> {
-
  if (! anchors) {
-
    return [];
-
  }
+
export async function getProjectAnchors(urn: string, anchorsStorage: string, config: Config): Promise<string[]> {
  const unpadded = decodeRadicleId(urn);
  const id = ethers.utils.hexZeroPad(unpadded, 32);
-
  const allAnchors = await querySubgraph(config.orgs.subgraph, GetAllAnchors, { project: id, org: anchors });
+
  const allAnchors = await querySubgraph(config.orgs.subgraph, GetAllAnchors, { project: id, org: anchorsStorage });
+

  return allAnchors.anchors
    .map((anchor: AnchorObject) => formatProjectHash(ethers.utils.arrayify(anchor.multihash)));
}
modified src/base/projects/View.svelte
@@ -9,7 +9,6 @@
  import { formatOrg, formatSeedId, isRadicleId } from '@app/utils';
  import { getOid } from '@app/project';
  import { Seed } from '@app/base/seeds/Seed';
-
  import { getAllAnchors } from '@app/anchors';

  import Header from '@app/base/projects/Header.svelte';
  import ProjectContentRoutes from '@app/base/projects/ProjectContentRoutes.svelte';
@@ -41,7 +40,8 @@
    const cfg = seedInstance && seedInstance.valid ? config.withSeed(seedInstance) : config;
    const info = await proj.getInfo(id, cfg);
    const urn = isRadicleId(id) ? id : info.urn;
-
    const anchors = await getAllAnchors(config, urn, profile?.anchorsAccount ?? addressOrName);
+
    const anchors = profile ? await profile.confirmedProjectAnchors(urn, config) : [];
+

    let branches = Array([info.defaultBranch, info.head]) as [string, string][];
    let peers: proj.Peer[] = [];

modified src/profile.ts
@@ -8,6 +8,7 @@ import type { Config } from "@app/config";
import type { Seed, InvalidSeed } from "@app/base/seeds/Seed";
import { Org } from "@app/base/orgs/Org";
import { NotFoundError } from "@app/error";
+
import { getProjectAnchors } from "@app/anchors";
import type { Anchor, PendingAnchor } from "@app/project";

export interface IProfile {
@@ -164,6 +165,15 @@ export class Profile {
    }
  }

+
  async confirmedProjectAnchors(urn: string, config: Config): Promise<string[]> {
+
    const storage = this.anchorsAccount || this.org?.address;
+

+
    if (storage) {
+
      return await getProjectAnchors(urn, storage, config);
+
    }
+
    return [];
+
  }
+

  // Get the anchors account as an org, or the org, if available.
  private async getAnchorsOrg(config: Config): Promise<Org | null> {
    if (this.anchorsAccount) {