forked from tangled.org/core
Monorepo for Tangled — https://tangled.org
1{{ define "repo/pulls/fragments/pullActions" }} 2 {{ $lastIdx := sub (len .Pull.Submissions) 1 }} 3 {{ $roundNumber := .RoundNumber }} 4 {{ $stack := .Stack }} 5 6 {{ $totalPulls := sub 0 1 }} 7 {{ $below := sub 0 1 }} 8 {{ $stackCount := "" }} 9 {{ if .Pull.IsStacked }} 10 {{ $totalPulls = len $stack }} 11 {{ $below = $stack.Below .Pull }} 12 {{ $mergeable := len $below.Mergeable }} 13 {{ $stackCount = printf "%d/%d" $mergeable $totalPulls }} 14 {{ end }} 15 16 {{ $isPushAllowed := .RepoInfo.Roles.IsPushAllowed }} 17 {{ $isMerged := .Pull.State.IsMerged }} 18 {{ $isClosed := .Pull.State.IsClosed }} 19 {{ $isOpen := .Pull.State.IsOpen }} 20 {{ $isConflicted := and .MergeCheck (or .MergeCheck.Error .MergeCheck.IsConflicted) }} 21 {{ $isPullAuthor := and .LoggedInUser (eq .LoggedInUser.Did .Pull.OwnerDid) }} 22 {{ $isLastRound := eq $roundNumber $lastIdx }} 23 {{ $isSameRepoBranch := .Pull.IsBranchBased }} 24 {{ $isUpToDate := .ResubmitCheck.No }} 25 <div class="relative w-fit"> 26 <div id="actions-{{$roundNumber}}" class="flex flex-wrap gap-2"> 27 <button 28 hx-get="/{{ .RepoInfo.FullName }}/pulls/{{ .Pull.PullId }}/round/{{ $roundNumber }}/comment" 29 hx-target="#actions-{{$roundNumber}}" 30 hx-swap="outerHtml" 31 class="btn p-2 flex items-center gap-2 no-underline hover:no-underline group"> 32 {{ i "message-square-plus" "w-4 h-4" }} 33 <span>comment</span> 34 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 35 </button> 36 {{ if and $isPushAllowed $isOpen $isLastRound }} 37 {{ $disabled := "" }} 38 {{ if $isConflicted }} 39 {{ $disabled = "disabled" }} 40 {{ end }} 41 <button 42 hx-post="/{{ .RepoInfo.FullName }}/pulls/{{ .Pull.PullId }}/merge" 43 hx-swap="none" 44 hx-confirm="Are you sure you want to merge pull #{{ .Pull.PullId }} into the `{{ .Pull.TargetBranch }}` branch?" 45 class="btn p-2 flex items-center gap-2 group" {{ $disabled }}> 46 {{ i "git-merge" "w-4 h-4" }} 47 <span>merge{{if $stackCount}} {{$stackCount}}{{end}}</span> 48 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 49 </button> 50 {{ end }} 51 52 {{ if and $isPullAuthor $isOpen $isLastRound }} 53 {{ $disabled := "" }} 54 {{ if $isUpToDate }} 55 {{ $disabled = "disabled" }} 56 {{ end }} 57 <button id="resubmitBtn" 58 {{ if not .Pull.IsPatchBased }} 59 hx-post="/{{ .RepoInfo.FullName }}/pulls/{{ .Pull.PullId }}/resubmit" 60 {{ else }} 61 hx-get="/{{ .RepoInfo.FullName }}/pulls/{{ .Pull.PullId }}/resubmit" 62 hx-target="#actions-{{$roundNumber}}" 63 hx-swap="outerHtml" 64 {{ end }} 65 66 hx-disabled-elt="#resubmitBtn" 67 class="btn p-2 flex items-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed group" {{ $disabled }} 68 69 {{ if $disabled }} 70 title="Update this branch to resubmit this pull request" 71 {{ else }} 72 title="Resubmit this pull request" 73 {{ end }} 74 > 75 {{ i "rotate-ccw" "w-4 h-4" }} 76 <span>resubmit</span> 77 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 78 </button> 79 {{ end }} 80 81 {{ if and (or $isPullAuthor $isPushAllowed) $isOpen $isLastRound }} 82 <button 83 hx-post="/{{ .RepoInfo.FullName }}/pulls/{{ .Pull.PullId }}/close" 84 hx-swap="none" 85 class="btn p-2 flex items-center gap-2 group"> 86 {{ i "ban" "w-4 h-4" }} 87 <span>close</span> 88 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 89 </button> 90 {{ end }} 91 92 {{ if and (or $isPullAuthor $isPushAllowed) $isClosed $isLastRound }} 93 <button 94 hx-post="/{{ .RepoInfo.FullName }}/pulls/{{ .Pull.PullId }}/reopen" 95 hx-swap="none" 96 class="btn p-2 flex items-center gap-2 group"> 97 {{ i "refresh-ccw-dot" "w-4 h-4" }} 98 <span>reopen</span> 99 {{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }} 100 </button> 101 {{ end }} 102 </div> 103 </div> 104{{ end }} 105 106