name: Restore Android MainViewModel once on: push: branches: - 'release/android-0.19.0-final-field-flow' permissions: contents: write jobs: restore: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: ref: release/android-0.19.0-final-field-flow fetch-depth: 0 - name: Restore MainViewModel from main and apply only 0.19.0 changes run: | set -Eeuo pipefail git fetch origin main git show origin/main:android-app/app/src/main/java/com/korexlabs/dhinspeccion/MainViewModel.kt > android-app/app/src/main/java/com/korexlabs/dhinspeccion/MainViewModel.kt python - <<'PY' from pathlib import Path p = Path('android-app/app/src/main/java/com/korexlabs/dhinspeccion/MainViewModel.kt') text = p.read_text() replacements = [ ( ' accuracyM: Double?,\n ) {\n val visitId = visit?.id ?: return\n if (visit?.status != "IN_PROGRESS") {', ' accuracyM: Double?,\n description: String? = null,\n ) {\n val visitId = visit?.id ?: return\n if (visit?.status != "IN_PROGRESS") {' ), ( ' commonName = commonName?.trim()?.takeIf { it.isNotBlank() },\n attributes = attributes,', ' commonName = commonName?.trim()?.takeIf { it.isNotBlank() },\n description = description?.trim()?.takeIf { it.isNotBlank() },\n attributes = attributes,' ), ( 'error = "Ya existe un Acta en borrador. Bloqueala o cancelala antes de crear la siguiente."', 'error = "Ya existe un Acta en elaboración. Cerrala o cancelala antes de crear la siguiente."' ), ( 'error = "Creá o seleccioná el Acta en borrador antes de registrar Hallazgos."', 'error = "Creá o seleccioná el Acta en elaboración antes de registrar Hallazgos."' ), ( 'error = "No hay un Acta en borrador seleccionada."', 'error = "No hay un Acta en elaboración seleccionada."' ), ( 'notice = "Ausencia del responsable registrada. La manifestación de empresa quedará pendiente y deberá resolverse antes de sellar el Acta."', 'notice = "Ausencia del responsable registrada. La manifestación de empresa quedará pendiente y deberá resolverse antes de firmar y cerrar el Acta."' ), ( 'notice = "Acta bloqueada. Su contenido quedó inmutable; ahora deben resolverse las firmas y manifestaciones."', 'notice = "Acta cerrada y pendiente de firma. Su contenido quedó inmutable; las firmas y manifestaciones pueden completarse a continuación."' ), ( 'error = "Un Acta bloqueada es inmutable y no puede volver a borrador."', 'error = "Un Acta pendiente de firma es inmutable y no puede volver a edición."' ), ( 'notice = "${selectedAct?.code ?: "Acta"} SELLADA e inmutable. Podés crear otra Acta o continuar hacia el cierre de la Inspección."', 'notice = "${selectedAct?.code ?: "Acta"} firmada y cerrada. Podés crear otra Acta o continuar hacia el cierre de la Inspección."' ), ( 'notice = "Inspección cerrada. Todas sus Actas quedaron SELLADAS y disponibles para el circuito de oficina."', 'notice = "Inspección cerrada. Todas sus Actas quedaron firmadas y disponibles para el circuito de oficina."' ), ] for old, new in replacements: if old not in text: raise SystemExit(f'Pattern not found: {old}') text = text.replace(old, new, 1) p.write_text(text) PY - name: Commit restore and remove temporary workflow run: | set -Eeuo pipefail git config user.name 'DH Android Finalizer' git config user.email 'android-finalizer@dhv2.local' git rm .github/workflows/restore-mainviewmodel-once.yml git add android-app/app/src/main/java/com/korexlabs/dhinspeccion/MainViewModel.kt git commit -m 'fix(android): preservar ViewModel estable en release final' git push origin HEAD:release/android-0.19.0-final-field-flow