Switching between workspaces in the multi-workspace using the project search ends up outside key contexts #17797
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "Surface closed issues someone's commented on" | |
| on: | |
| issue_comment: | |
| types: | |
| - created | |
| permissions: | |
| contents: read | |
| jobs: | |
| add-to-project: | |
| if: > | |
| github.repository == 'zed-industries/zed' && | |
| github.event.issue.state == 'closed' && | |
| github.event.issue.pull_request == null && | |
| github.event.issue.type != null && | |
| github.event.issue.type.name == 'Bug' && | |
| github.event.comment.user.type != 'Bot' | |
| runs-on: namespace-profile-2x4-ubuntu-2404 | |
| timeout-minutes: 5 | |
| steps: | |
| - id: is-post-close-comment | |
| uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | |
| with: | |
| script: | | |
| const closedAt = new Date(context.payload.issue.closed_at); | |
| const commentedAt = new Date(context.payload.comment.created_at); | |
| const diffSeconds = Math.abs(commentedAt - closedAt) / 1000; | |
| if (diffSeconds <= 30) { | |
| core.notice(`Skipping — comment was likely part of "Close with comment" (${diffSeconds}s gap)`); | |
| return false; | |
| } | |
| return true; | |
| - if: steps.is-post-close-comment.outputs.result == 'true' | |
| id: get-app-token | |
| uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0 | |
| with: | |
| app-id: ${{ secrets.ZED_COMMUNITY_BOT_APP_ID }} | |
| private-key: ${{ secrets.ZED_COMMUNITY_BOT_PRIVATE_KEY }} | |
| owner: zed-industries | |
| - if: steps.is-post-close-comment.outputs.result == 'true' | |
| id: check-staff | |
| uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 | |
| with: | |
| github-token: ${{ steps.get-app-token.outputs.token }} | |
| script: | | |
| try { | |
| const response = await github.rest.teams.getMembershipForUserInOrg({ | |
| org: 'zed-industries', | |
| team_slug: 'staff', | |
| username: context.payload.comment.user.login | |
| }); | |
| return response.data.state === 'active'; | |
| } catch (error) { | |
| // 404 means user is not a member | |
| if (error.status === 404) { | |
| return false; | |
| } | |
| throw error; | |
| } | |
| - if: steps.is-post-close-comment.outputs.result == 'true' && steps.check-staff.outputs.result == 'true' | |
| env: | |
| ISSUE_NUMBER: ${{ github.event.issue.number }} | |
| run: | | |
| echo "::notice::Skipping issue #$ISSUE_NUMBER - commenter is staff member" | |
| # github-script outputs are JSON strings, so we compare against 'false' (string) | |
| - if: steps.is-post-close-comment.outputs.result == 'true' && steps.check-staff.outputs.result == 'false' | |
| env: | |
| ISSUE_NUMBER: ${{ github.event.issue.number }} | |
| COMMENT_USER_LOGIN: ${{ github.event.comment.user.login }} | |
| run: | | |
| echo "::notice::Adding issue #$ISSUE_NUMBER to project (comment by $COMMENT_USER_LOGIN)" | |
| - if: steps.is-post-close-comment.outputs.result == 'true' && steps.check-staff.outputs.result == 'false' | |
| uses: actions/add-to-project@244f685bbc3b7adfa8466e08b698b5577571133e # v1.0.2 | |
| with: | |
| project-url: https://github.com/orgs/zed-industries/projects/73 | |
| github-token: ${{ steps.get-app-token.outputs.token }} |