name: Congratsbot

on:
  push:
    branches: [main]

jobs:
  check-author:
    if: ${{ github.repository_owner == 'zed-industries' }}
    runs-on: ubuntu-latest
    outputs:
      should_congratulate: ${{ steps.check.outputs.should_congratulate }}
    steps:
      - name: Get PR info and check if author is external
        id: check
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.CONGRATSBOT_GITHUB_TOKEN }}
          script: |
            const { data: prs } = await github.rest.repos.listPullRequestsAssociatedWithCommit({
              owner: context.repo.owner,
              repo: context.repo.repo,
              commit_sha: context.sha
            });

            if (prs.length === 0) {
              core.setOutput('should_congratulate', 'false');
              return;
            }

            const mergedPR = prs.find(pr => pr.merged_at !== null) || prs[0];
            const prAuthor = mergedPR.user.login;

            try {
              await github.rest.teams.getMembershipForUserInOrg({
                org: 'zed-industries',
                team_slug: 'staff',
                username: prAuthor
              });
              core.setOutput('should_congratulate', 'false');
            } catch (error) {
              if (error.status === 404) {
                core.setOutput('should_congratulate', 'true');
              } else {
                console.error(`Error checking team membership: ${error.message}`);
                core.setOutput('should_congratulate', 'false');
              }
            }

  congrats:
    needs: check-author
    if: needs.check-author.outputs.should_congratulate == 'true'
    uses: withastro/automation/.github/workflows/congratsbot.yml@main
    with:
      EMOJIS: 🎉,🎊,🧑‍🚀,🥳,🙌,🚀,🦀,🔥,🚢
    secrets:
      DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_CONGRATS }}
