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

Clear handlers consumed by eager initialization before DOMContentLoaded replay

Abierto Apto para principiantes
#3,362 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 8 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
88/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
javascript, typescript
Área
frontend

Línea de trabajo

Empieza en src/init.ts y compara el consumo inmediato de window._oca_viewer_handlers con el puente DOMContentLoaded en src/views/Viewer.vue. Verifica las pruebas de código fuente existentes para el registro inmediato, los handlers añadidos posteriormente a la cola, los Maps ausentes, los componentes no válidos y los IDs duplicados. La tarea estará terminada cuando las entradas consumidas no se reproduzcan de nuevo, las entradas posteriores sigan funcionando y los registros realmente no válidos o duplicados sigan siendo rechazados.

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

Descripción

3. to review

Repository: https://github.com/nextcloud/viewer

src/init.ts eagerly registers handlers from window._oca_viewer_handlers, but leaves the Map populated. The DOMContentLoaded listener in src/views/Viewer.vue then registers those same handlers again. ViewerService rejects the duplicate IDs and logs errors during normal navigation.

Verified against the files in the Nextcloud v33.0.6 and v33.0.8 tags and stable33 revision c83b93333a27ca12f6f9c120e6e3079720716b1c. This concerns handlers present before eager initialization; it does not claim to cover every later registration sequence.

Reproduction:

  1. Put a valid viewer handler in the global Map before viewer-init executes.
  2. Execute eager initialization: the handler becomes available synchronously.
  3. Fire the existing DOMContentLoaded bridge: the same ID is registered again and rejected.

Proposed change in src/init.ts:

 if (window._oca_viewer_handlers) {
 	window._oca_viewer_handlers.forEach(handler => window.OCA.Viewer.registerHandler(handler))
+	window._oca_viewer_handlers.clear()
 }

Clear the existing Map after consuming it, preserving its identity and accepting entries queued later. Genuine duplicate or invalid registrations must continue to be rejected.

Validation: extracted source tests cover eager registration, later queued handlers, missing Map, invalid components and genuine duplicate IDs. A Chromium navigation with this change plus independent Text/Theming corrections completed without the prior console errors. That was a local response-substitution comparison, not a rebuilt release test.

Related: https://github.com/nextcloud/viewer/pull/3068 discusses the eager-registration motivation; that PR is closed and unmerged as checked on 2026-09-07. This report addresses replay of already-consumed entries while preserving synchronous initialization.

Lenguaje dominante
Sin datos de lenguaje
Estrellas
122
Forks
75
Merge medio
8 d 13 h
PR fusionados (30 d)
24

Preparar el entorno

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/viewer

Todos los issues de nextcloud/viewer

Issues similares

Más issues de Web Dev

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.