¡Hola a todos!
Estoy en medio del desarrollo de un plugin que intenta cargar páginas que están enlazadas con wikilinks como referencias enlazadas.
Tengo una implementación básica funcionando, pero no me gusta cómo se ve el diseño actualmente y quería ver si hay APIs que me estoy perdiendo que ayudarían a que esto sea más fluido.
Aquí está mi enfoque actual: discourse-wikilinks/assets/javascripts/initializers/wikilinks-init.js at main · dvargas92495/discourse-wikilinks · GitHub
Tl;dr:
- usar
api.reopenWidgeten el widgetpost-linkspara sobrescribir el métodohtml. - en el primer renderizado del widget, obtener el título del tema y luego buscar temas que tengan [[título]] en su título.
- Después de la obtención, programar un nuevo renderizado con los datos de respuesta, usando una bandera para asegurarnos de no obtener datos infinitamente en el siguiente renderizado.
Este enfoque es subóptimo porque:
- Hay un retraso entre el renderizado inicial y cuando se renderizan el resto de los datos.
- La bandera que previene la obtención infinita parece propensa a errores en el futuro.
- Necesito hacer dos llamadas a la API, una para obtener el título del tema (que debería estar disponible más arriba en el árbol de widgets) y luego otra para los enlaces.
- Tengo que copiar y pegar el método original del widget
htmlen el código de mi plugin, lo que lo deja vulnerable a ser bifurcado.
¿Alguna idea sobre cómo mitigar estos problemas? Idealmente, me gustaría editar la llamada original a loadTopicView para incluir los wikilinks.
Además, ¿Discourse o alguien de la comunidad ofrece llamadas de consultoría? Me encantaría pagar por una llamada con un experto para que me dé una inmersión profunda en todo lo que hay que saber sobre la arquitectura de Discourse y los plugins disponibles. Ya he revisado la mayoría de los documentos de desarrollo y he navegado bastante por la base de código.