Radish alpha
r
rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5
Radicle web interface
Radicle
Git
Issue/patch editing improvements
Merged rudolfs opened 2 years ago

See individual commits for more details.

check check-visual check-unit-test check-httpd-api-unit-test check-e2e check-build

👉 Preview
👉 Workflow runs
👉 Branch on GitHub

4 files changed +27 -11 dbfb56f3 d86ff195
modified src/components/ExtendedTextarea.svelte
@@ -25,7 +25,10 @@
  export let body: string = "";
  export let embeds: Map<string, Embed> = new Map();
  export let submitInProgress: boolean = false;
-
  export let validateBody: boolean = true;
+
  export let disallowEmptyBody: boolean = false;
+
  export let isValid: () => boolean = () => {
+
    return true;
+
  };

  let preview: boolean = false;
  let selectionStart = 0;
@@ -178,7 +181,7 @@
    </Button>
    <Button
      styleBorderRadius="0"
-
      disabled={validateBody && !body}
+
      disabled={!isValid()}
      variant={preview ? "selected" : "not-selected"}
      on:click={() => {
        preview = true;
@@ -235,7 +238,9 @@
      </Button>
      <Button
        variant="secondary"
-
        disabled={(validateBody && !body) || submitInProgress}
+
        disabled={!isValid() ||
+
          submitInProgress ||
+
          (disallowEmptyBody && body.length === 0)}
        on:click={submit}>
        {#if submitInProgress}
          <Loading small noDelay />
modified src/views/projects/Issue.svelte
@@ -365,6 +365,9 @@
    }
  }

+
  let newTitle = issue.title;
+
  let newDescription = issue.discussion[0].body;
+

  $: uniqueEmbeds = uniqBy(
    issue.discussion.flatMap(comment => comment.embeds),
    "content",
@@ -485,7 +488,7 @@
            {#if issueState !== "read"}
              <TextInput
                placeholder="Title"
-
                bind:value={issue.title}
+
                bind:value={newTitle}
                showKeyHint={false} />
            {:else if !issue.title}
              <span class="txt-missing">No title</span>
@@ -494,7 +497,7 @@
                <InlineMarkdown
                  stripEmphasizedStyling
                  fontSize="large"
-
                  content={issue.title} />
+
                  content={newTitle} />
              </div>
            {/if}
          </div>
@@ -539,16 +542,19 @@
        <div slot="description">
          {#if issueState !== "read"}
            <ExtendedTextarea
+
              isValid={() => newTitle.length > 0}
+
              disallowEmptyBody
              rawPath={rawPath(project.head)}
              enableAttachments
              embeds={parseEmbedIntoMap(issue.discussion[0].embeds)}
-
              body={issue.discussion[0].body}
+
              body={newDescription}
              submitCaption="Save"
              submitInProgress={issueState === "submit"}
              placeholder="Leave a description"
              on:close={() => {
                issueState = "read";
-
                void refreshIssue();
+
                newTitle = issue.title;
+
                newDescription = issue.discussion[0].body;
              }}
              on:submit={async ({ detail: { comment, embeds } }) => {
                if (session) {
@@ -556,11 +562,12 @@
                    issueState = "submit";
                    await editIssue(
                      session.id,
-
                      issue.title,
+
                      newTitle,
                      issue.id,
                      comment,
                      Array.from(embeds.values()),
                    );
+
                    newDescription = comment;
                  } finally {
                    issueState = "read";
                  }
modified src/views/projects/Issue/New.svelte
@@ -99,6 +99,8 @@
          <svelte:fragment slot="description">
            <ExtendedTextarea
              rawPath={rawPath(project.head)}
+
              disallowEmptyBody
+
              isValid={() => issueTitle.length > 0}
              enableAttachments
              submitCaption="Submit"
              placeholder="Write a description"
@@ -117,11 +119,13 @@
      </div>
      <div class="metadata">
        <AssigneeInput
-
          locallyAuthenticated={Boolean(session)}
+
          locallyAuthenticated={session &&
+
            project.delegates.includes(`did:key:${session.publicKey}`)}
          on:save={({ detail: updatedAssignees }) =>
            (assignees = updatedAssignees)} />
        <LabelInput
-
          locallyAuthenticated={Boolean(session)}
+
          locallyAuthenticated={session &&
+
            project.delegates.includes(`did:key:${session.publicKey}`)}
          on:save={({ detail: updatedLabels }) => (labels = updatedLabels)} />
      </div>
    </div>
modified src/views/projects/Patch.svelte
@@ -766,7 +766,7 @@
          <div class="revision-description">
            {#if session && patchState !== "read" && latestEdit}
              <ExtendedTextarea
-
                validateBody={false}
+
                isValid={() => patch.title.length > 0}
                enableAttachments
                embeds={parseEmbedIntoMap(latestEdit.embeds)}
                rawPath={rawPath(patch.revisions[0].id)}