name: Pull Request Workflow

on:
  pull_request:
  merge_group:

jobs:
  code_tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: cat .github/workflows/versions.env >> $GITHUB_ENV
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: ${{ env.FLUTTER_VERSION }}
          cache: true
      - run: flutter pub get
      - name: Check formatting
        run: dart format lib/ test/ --set-exit-if-changed
      - name: Check import formatting
        run: dart run import_sorter:main --no-comments --exit-if-changed
      - run: flutter analyze
      - name: Apply google services patch
        run: git apply ./scripts/enable-android-google-services.patch
      - run: flutter analyze
      - run: flutter test

  build_debug_apk:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: cat .github/workflows/versions.env >> $GITHUB_ENV
      - uses: actions/setup-java@v4
        with:
          java-version: ${{ env.JAVA_VERSION }}
          distribution: "zulu"
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: ${{ env.FLUTTER_VERSION }}
          cache: true
      - run: flutter pub get
      - run: flutter build apk --debug

  build_debug_web:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: cat .github/workflows/versions.env >> $GITHUB_ENV
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: ${{ env.FLUTTER_VERSION }}
          cache: true
      - run: flutter pub get
      - name: Prepare web
        run: ./scripts/prepare-web.sh
      - run: flutter build web

  build_debug_linux:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: cat .github/workflows/versions.env >> $GITHUB_ENV
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: ${{ env.FLUTTER_VERSION }}
          cache: true
      - name: Install dependencies
        run: sudo apt-get update && sudo apt-get install curl clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev liblzma-dev libjsoncpp-dev cmake-data libsecret-1-dev libsecret-1-0 librhash0 -y
      - run: flutter pub get
      - run: flutter build linux --target-platform linux-x64

  build_debug_ios:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - run: cat .github/workflows/versions.env >> $GITHUB_ENV
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: ${{ env.FLUTTER_VERSION }}
          cache: true
      - name: Setup Xcode version
        uses: maxim-lobanov/setup-xcode@v1.6.0
        with:
          xcode-version: latest
      - run: flutter pub get
      - run: flutter build ios --no-codesign
