name: Core Feature Alert

on:
  pull_request:
    types:
      - opened
      - synchronize
    paths:
      - src/lib/features/client-feature-toggles/**
      - src/lib/features/frontend-api/**

jobs:
  notify-core-changes:
    runs-on: ubuntu-latest

    steps:
      - name: Fetch PR Creator's Username
        id: pr-creator
        run: echo "PR_CREATOR=${{ github.event.pull_request.user.login }}" >> $GITHUB_ENV

      - name: Post a notification about core feature changes if not already commented
        uses: actions/github-script@v6
        with:
          script: |
            const prCreator = process.env.PR_CREATOR;
            const commentBody = `@${prCreator}, core features have been modified in this pull request. Please review carefully!`;

            const { data: comments } = await github.rest.issues.listComments({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.payload.pull_request.number,
            });

            const alreadyCommented = comments.some(comment => comment.body === commentBody);

            if (!alreadyCommented) {
              await github.rest.issues.createComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.payload.pull_request.number,
                body: commentBody,
              });
              console.log('Posted a new comment.');
            } else {
              console.log('Comment already exists, skipping.');
            }
      - name: Add reviewers to the PR if they are not the creator
        uses: actions/github-script@v6
        with:
          script: |
            const prCreator = process.env.PR_CREATOR;
            const allReviewers = ['FredrikOseberg', 'gastonfournier', 'chriswk', 'ivarconr'];
            const reviewersToAdd = allReviewers.filter(reviewer => reviewer !== prCreator);

            if (reviewersToAdd.length > 0) {
              github.rest.pulls.requestReviewers({
                owner: context.repo.owner,
                repo: context.repo.repo,
                pull_number: context.payload.pull_request.number,
                reviewers: reviewersToAdd,
              });
              console.log(`Added reviewers: ${reviewersToAdd.join(', ')}`);
            } else {
              console.log(`No reviewers to add as all match the PR creator.`);
            }