Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[Bug] Lock owned by another client (e.g. Text app) cannot be unlocked from the app

Abierto Apto para principiantes
#17,837 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@falkloewert ya está trabajando en esto.

Desde el 18/10/2026.

  • #17838 de @falkloewert — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
72/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
android, kotlin
Área
mobile

Línea de trabajo

Lee FileLockingHelper.canUserUnlockFile() y sigue cómo el menú de desbordamiento usa el resultado para mostrar la acción de desbloqueo. Compara la comprobación del cliente con la regla del servidor descrita en el issue, incluida la salvedad sobre las carpetas de grupo y el almacenamiento externo. La tarea está terminada cuando el propietario del archivo puede desbloquear un archivo que le pertenece y el comportamiento está cubierto por una prueba pertinente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Steps to reproduce
  1. Open a Markdown/text file in the Text app (web or Android) and close it without releasing the lock (tab killed, connection lost, app swiped away).
  2. files_lock keeps the lock with owner text.
  3. Open that file's overflow menu in the Nextcloud Android app.
Actual behaviour

The file is shown as locked (lock icon, "Locked by Text app — expires in …"), but the menu has no "Unlock file" entry. FileLockingHelper.canUserUnlockFile() only returns true when lockOwnerId == userId, so the file owner is never offered the action.

With the default lock_timeout = -1 the lock never expires; edits then fail with ManuallyLockedException / HTTP 423 and are only recoverable from the web UI (or by waiting for a configured timeout).

Expected behaviour

The file owner can unlock. The server already allows this — OCA\FilesLock\Service\LockService::canUnlock():

if ($request->getType() === ILock::TYPE_USER && $isFileOwner) {
    return;
}
Possible fix

Also accept the file owner in FileLockingHelper (file.ownerId == userId), mirroring the server check. I'm preparing a PR.

Caveat: for group folders and external storage the server deliberately skips the file-owner check, so the client cannot mirror the rule exactly there.

Environment
  • Server: Nextcloud 34 (AIO), files_lock 34.0.1
  • Client: current Play release
  • File in personal storage
Lenguaje dominante
Kotlin
Estrellas
5.6k
Forks
2k
Merge medio
2 d 4 h
PR fusionados (30 d)
91

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de nextcloud/android

Todos los issues de nextcloud/android

Issues similares

Más issues de Kotlin

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.