name: build mobile app

on:
  pull_request:
    types: [opened, ready_for_review]
  workflow_dispatch:

permissions:
  contents: write
  pull-requests: write

jobs:   
  build-android:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 21

      - uses: pnpm/action-setup@v3
        name: Install pnpm
        with:
          version: 8
          run_install: false

      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'temurin'

      - name: Setup Android SDK
        uses: android-actions/setup-android@v3

      - name: Install dependencies
        run: pnpm install

      - name: Build Android app
        run: cd apps/expo && pnpm run apk

      - name: Rename apk
        run: cd apps/expo && mv android/app/build/outputs/apk/release/app-release.apk android/app/build/outputs/apk/release/movie-web.apk

      - name: Upload movie-web.apk as artifact
        uses: actions/upload-artifact@v4
        with:
          name: apk
          path: ./apps/expo/android/app/build/outputs/apk/release/movie-web.apk

  build-ios:
    runs-on: macos-14

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Xcode Select Version
        uses: maxim-lobanov/setup-xcode@v1
        with:
          xcode-version: '15.1.0'

      - name: Install Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 21
  
      - uses: pnpm/action-setup@v3
        name: Install pnpm
        with:
          version: 8
          run_install: false

      - name: Install dependencies
        run: pnpm install

      - name: Build iOS app
        run: cd apps/expo && pnpm run ipa
          
      - name: Pack .ipa from .app
        run: |
          cd apps/expo
          mkdir -p ios/build/Build/Products/Release-iphoneos/Payload
          mv ios/build/Build/Products/Release-iphoneos/movieweb.app ios/build/Build/Products/Release-iphoneos/Payload/
          cd ios/build/Build/Products/Release-iphoneos
          zip -r ../../../movie-web.ipa Payload

      - name: Upload movie-web.ipa as artifact
        uses: actions/upload-artifact@v4
        with:
          name: ipa
          path: ./apps/expo/ios/build/movie-web.ipa
