name: Main Deploy Workflow

on:
  push:
    branches:
      - main
  workflow_dispatch:

concurrency:
  group: main_deploy
  cancel-in-progress: true

jobs:
  deploy_web:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - run: cat .github/workflows/versions.env >> $GITHUB_ENV
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: ${{ env.FLUTTER_VERSION }}
      - uses: moonrepo/setup-rust@v1
      - run: rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu
      - name: Prepare web
        run: ./scripts/prepare-web.sh
      - run: rm ./assets/vodozemac/.gitignore
      - run: flutter pub get
      - name: Build Release Web
        run: flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=canvaskit/ --release --source-maps --base-href "/nightly/"
      - run: mv build/web/ public
      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v4
        with:
          personal_token: ${{ secrets.PAGES_DEPLOY_TOKEN }}
          publish_dir: ./public
          publish_branch: gh-pages
          destination_dir: nightly

  deploy_playstore_internal:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - run: cat .github/workflows/versions.env >> $GITHUB_ENV
      - uses: actions/setup-java@v5
        with:
          java-version: ${{ env.JAVA_VERSION }}
          distribution: 'zulu'
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: ${{ env.FLUTTER_VERSION }}
          cache: true
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: '3.3'
      - uses: ./.github/actions/free_up_space
      - uses: moonrepo/setup-rust@v1
      - name: Install Fastlane
        run: gem install fastlane -NV
      - name: Add Firebase Messaging
        run: |
          echo '${{secrets.GOOGLE_SERVICES_JSON}}' | base64 -d > android/app/google-services.json
          ./scripts/add-firebase-messaging.sh
      - run: flutter pub get
      - name: Prepare Android Release Build
        env:
          FDROID_KEY: ${{ secrets.FDROID_KEY }}
          FDROID_KEY_PASS: ${{ secrets.FDROID_KEY_PASS }}
          PLAYSTORE_DEPLOY_KEY: ${{ secrets.PLAYSTORE_DEPLOY_KEY }}
        run: ./scripts/prepare-android-release.sh
      - name: Build Android Release
        run: flutter build appbundle --target-platform android-arm,android-arm64
      - name: Set changelog
        working-directory: android/fastlane/metadata/android/en-US/changelogs
        run: git log --no-merges -1 --pretty=%B > default.txt
      - name: Deploy Android Release
        run: |
          mkdir -p build/android
          cp build/app/outputs/bundle/release/app-release.aab build/android/
          cd android
          bundle install
          bundle update fastlane
          bundle exec fastlane deploy_internal_test
          cd ..
