안녕하세요, Zendesk 플러그인의 “Zendesk에서 보기” 버튼 동작과 관련하여 문제를 겪고 있습니다. Zendesk에 이미 티켓이 존재하는 경우, 버튼은 올바르게 "Zendesk에서 보기"로 표시됩니다. 그러나 Zendesk 티켓이 없는 다른 주제로 이동하면, 버튼은 “Zendesk 티켓 만들기” 대신 여전히 "Zendesk에서 보기"로 표시됩니다. 페이지를 새로고침하면 버튼이 올바른 “Zendesk 티켓 만들기” 옵션으로 업데이트됩니다.
버튼 컴포넌트가 새 주제로 이동할 때 다시 렌더링되지 않는 것 같습니다. 페이지 변경이 발생할 때마다 이 컴포넌트의 다시 렌더링을 트리거하도록 하는 것이 해결책이 될 수 있다고 생각합니다.
이 문제를 어떻게 접근해야 하는지, 또는 이동 시 컴포넌트가 올바르게 업데이트되도록 강제하는 방법이 있는지 조언을 주실 수 있을까요? 의견이나 제안이 있다면 감사하겠습니다.
안녕하세요,
잘 지내고 계시죠? 이 문제에 대해 업데이트가 있는지 확인차 연락드렸습니다. 여러분의 의견이나 조언을 매우 감사히 여깁니다.
미리 감사드립니다!
MihirR
(Mihir)
12월 27, 2024, 4:35오전
3
페이지 변경을 감지하지 못하기 때문일 수 있습니다. 이는 프론트엔드 프레임워크(Discourse가 사용하므로 아마도 Ember.js일 것입니다)가 내비게이션 중 컴포넌트 렌더링을 처리하는 방식 때문에 발생하는 문제일 가능성이 높습니다.
경로 변경에 대한 리스너를 추가할 수 있습니다. 아래와 유사한 코드를 사용할 수 있습니다:
export default Component.extend({
router: service(),
didInsertElement() {
this._super(...arguments);
this.router.on('routeDidChange', () => {
this.refreshZendeskButton();
});
},
willDestroyElement() {
this._super(...arguments);
this.router.off('routeDidChange', this.refreshZendeskButton);
},
});
setupComponent()를 사용하고 있으므로 수정이 필요할 수 있습니다:
import { ajax } from "discourse/lib/ajax";
export default {
zendesk_id: null,
zendesk_url: null,
dirty: false,
setupComponent(args, component) {
const zendesk_id = args.topic.get("discourse_zendesk_plugin_zendesk_id");
if (zendesk_id && zendesk_id !== "") {
component.set("zendesk_id", zendesk_id);
}
component.setProperties({
zendesk_url: args.topic.get("discourse_zendesk_plugin_zendesk_url"),
valid_zendesk_credential: component.get(
"currentUser.discourse_zendesk_plugin_status"
),
});
},
This file has been truncated. show original
유효한 Zendesk 티켓이 있는지 확인하는 로직은 zendesk_id를 사용합니다. api.onPageChange()가 필요할까요?