플러그인 개발 - 모델 데이터를 가져와 위젯을 다시 렌더링하는 더 나은 방법?

여러분 안녕하세요!

현재 위키링크로 연결된 참조로 페이지를 로드하려고 시도하는 플러그인을 개발 중입니다.

기본적인 구현은 작동하고 있지만, 현재 디자인이 마음에 들지 않아 이 작업을 더 부드럽게 만들어 줄 수 있는 누락된 API가 있는지 확인하고 싶었습니다.

현재 제 접근 방식은 다음과 같습니다: discourse-wikilinks/assets/javascripts/initializers/wikilinks-init.js at main · dvargasfuertes/discourse-wikilinks · GitHub

요약하면:

  • post-links 위젯에 api.reopenWidget을 사용하여 html 메서드를 오버라이드합니다.
  • 위젯의 첫 번째 렌더링 시 토픽 제목을 가져온 후 제목에 [[title]]이 포함된 토픽을 검색합니다.
  • 가져오기(fetch) 후 응답 데이터를 사용하여 재렌더링을 예약하되, 다음 렌더링 시 무한히 가져오지 않도록 플래그를 사용합니다.

이 접근 방식이 비최적적인 이유는 다음과 같습니다:

  • 초기 렌더링과 나머지 데이터가 렌더링되는 사이에 지연이 발생합니다.
  • 무한한 가져오기를 방지하는 플래그는 미래에 오류가 발생하기 쉽습니다.
  • 두 번의 API 호출이 필요합니다. 하나는 토픽 제목을 가져오기 위한 것(위젯 트리에서 더 높은 위치에서 사용 가능해야 합니다)이고, 다른 하나는 링크를 위한 것입니다.
  • 플러그인 코드에 원래의 html 위젯 메서드를 복사하여 붙여넣어야 하므로 포크(fork)에 취약해집니다.

이러한 문제를 완화하는 방법에 대해 어떤 생각이 있으신가요? 이상적으로는 원래의 loadTopicView 호출을 편집하여 위키링크를 포함시키고 싶습니다.

또한 Discourse 또는 커뮤니티에서 컨설팅 콜을 제공합니까? Discourse의 아키텍처와 사용 가능한 플러그인에 대해 자세히 알려줄 전문가와 통화를 위해 비용을 지불하고 싶습니다. 이미 대부분의 개발 문서를 살펴보고 코드베이스를 여기저기 둘러보았지만, 더 깊은 이해가 필요합니다.