on:
  pull_request:
    paths:
      - "**/*.dart"

name: Deploy PR on Github Pages

jobs:
  deploy:
    name: Build web version and deploy
    runs-on: ubuntu-latest
    environment:
      name: PR-${{ github.event.pull_request.number }}
      url: ${{ steps.configure.outputs.URL }}

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Setup flutter
        uses: subosito/flutter-action@v2
        with:
          flutter-version: "3.7.5"
          channel: "stable"
          cache: true
          cache-key: deps-${{ hashFiles('**/pubspec.lock') }} # optional, change this to force refresh cache
          cache-path: ${{ runner.tool_cache }}/flutter # optional, change this to specify the cache path

      - name: Run prebuild
        run: bash prebuild.sh

      - name: Configure environments
        id: configure
        env:
          FOLDER: ${{ github.event.pull_request.number }}
        run: |
          sed -i "s|SERVER_URL=.*|SERVER_URL=https://gateway.upn.integration-open-paas.org/|g" env.file
          sed -i "s|DOMAIN_REDIRECT_URL=.*|DOMAIN_REDIRECT_URL=https://$GITHUB_REPOSITORY_OWNER.github.io/${GITHUB_REPOSITORY##*/}/$FOLDER|g" env.file
          echo "URL=https://$GITHUB_REPOSITORY_OWNER.github.io/${GITHUB_REPOSITORY##*/}/$FOLDER" >> $GITHUB_OUTPUT

      - name: Build
        env:
          FOLDER: ${{ github.event.pull_request.number }}
        run: flutter build web --profile --verbose --base-href "/${GITHUB_REPOSITORY##*/}/$FOLDER/"

      - name: Deploy to Github Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          destination_dir: ${{ github.event.pull_request.number }}
          keep_files: true
          publish_dir: "build/web"

      - name: Find deployment comment
        uses: peter-evans/find-comment@v2
        id: fc
        with:
          comment-author: "github-actions[bot]"
          issue-number: ${{ github.event.pull_request.number }}
          body-includes: "This PR has been deployed to"

      - name: Create or update deployment comment
        uses: peter-evans/create-or-update-comment@v3
        with:
          comment-id: ${{ steps.fc.outputs.comment-id }}
          issue-number: ${{ github.event.pull_request.number }}
          body: |
            This PR has been deployed to ${{ steps.configure.outputs.URL }}.
          edit-mode: replace
