마이그레이션 후 페이지 변경 API 디버깅

테마 관리자 커스터마이징의 해당 영역에서 관리자 인터페이스의 JS 탭으로 이 내용을 옮기는 데 도움을 주세요:

<script type="text/discourse-plugin" version="0.8.19">
api.onPageChange(() => {
	if ( window.location.href === "https://apple.com/123" ) {
		window.location.replace( "https://dell.com/234" );
	}
});
</script>

아래와 같은 예시를 보고 있습니다.

export default apiInitializer((api) => {
  // Your code here
});

이 방식은 api.renderInOutlet 같은 경우엔 잘 작동했지만, onPageChange에 대한 최신 예시를 찾지 못했습니다.

이 코드를 그냥 여기로 옮기면 어떻게 될까요:

api.onPageChange(() => {
	if ( window.location.href === "https://apple.com/123" ) {
		window.location.replace( "https://dell.com/234" );
	}
});

으로?

하. 장난치는 거지? 응, 바로 그거 시도했어. 실패했지.

다음은 성공한 방법이야:

import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.0", (api) => {
api.onPageChange((url) => {
// url은 보통 경로(path)입니다.
// 하지만 일부 컨텍스트에서는 전체 URL이 될 수 있으므로, 두 경우를 모두 처리합니다.
const path = url?.startsWith("http") ? new URL(url).pathname : url;
if (path === "/123") {
      window.location.replace("https://dell.com/234");
}
});

죄송합니다. 질문을 오해했습니다.

호기심이 생겼습니다. 어떤 상황들이 그런가요? onPageChange는 Ember의 경로용이므로 URL에서 https를 본 적이 없습니다.

안녕하세요, 정리 차원에서 이 내용을 원래의 릴리스 노트 스레드에서 새로운 토픽으로 옮겼습니다. 이렇게 하면 스레드가 좀 더 깔끔해지고 가시성도 높아집니다. 성공을 기원합니다 :+1:

다만, 나중에 올려주신 예시에서 window.location.href를 더 이상 확인하지 않는 것을 확인했습니다. 이것이 문제인가요?