diff --git a/com.twin.app.shoptime/src/views/MainView/MainView.jsx b/com.twin.app.shoptime/src/views/MainView/MainView.jsx index 71d9c275..6d6ec92e 100644 --- a/com.twin.app.shoptime/src/views/MainView/MainView.jsx +++ b/com.twin.app.shoptime/src/views/MainView/MainView.jsx @@ -892,64 +892,190 @@ export default function MainView({ className, initService }) { 📱 Launch Params: {(() => { - let raw = window.PalmSystem?.launchParams || "{}"; - let parsed = JSON.parse(raw); - let containerFlag = parsed["x-webos-app-container-launch"]; - let finalParams = - containerFlag === true ? parsed.details : parsed; - let contentTarget = finalParams?.contentTarget || "N/A"; + try { + // 항상 모든 정보를 표시 + const windowExists = typeof window === "object"; + const palmSystemExists = windowExists && !!window.PalmSystem; + const launchParamsExists = + palmSystemExists && + window.PalmSystem.launchParams !== undefined; + const launchParamsValue = palmSystemExists + ? window.PalmSystem.launchParams + : null; + const launchParamsType = palmSystemExists + ? typeof window.PalmSystem.launchParams + : "N/A"; - return ( - <> -
-
- raw (최초 파라미터): -
-
- {raw} -
-
+ let raw = "N/A"; + let parsed = {}; + let containerFlag = "N/A"; + let finalParams = {}; + let contentTarget = "N/A"; + let parseError = null; -
-
finalParams:
-
- {JSON.stringify(finalParams, null, 2)} -
-
+ // TV에서 launch params가 빈 문자열이거나 null일 수 있음 + if (launchParamsExists && launchParamsValue) { + try { + raw = window.PalmSystem.launchParams; + parsed = JSON.parse(raw); + containerFlag = parsed["x-webos-app-container-launch"]; + finalParams = + containerFlag === true ? parsed.details : parsed; + contentTarget = finalParams.contentTarget; + } catch (e) { + parseError = e.message; + } + } -
-
- contentTarget:{" "} + // Redux에서 가져온 contentTarget (비교용) + const reduxContentTarget = deepLinkInfo.contentTarget; + + // getLaunchParams() 함수 결과 확인 + let getLaunchParamsResult = {}; + try { + // helperMethods.js의 getLaunchParams 함수 직접 호출 + if ( + typeof window === "object" && + window.PalmSystem && + window.PalmSystem.launchParams + ) { + getLaunchParamsResult = JSON.parse( + window.PalmSystem.launchParams + ); + if ( + getLaunchParamsResult[ + "x-webos-app-container-launch" + ] === true + ) { + getLaunchParamsResult = getLaunchParamsResult.details; + } + } else { + // localLaunchParams가 반환될 것임 + getLaunchParamsResult = { + source: "localLaunchParams (fallback)", + }; + } + } catch (e) { + getLaunchParamsResult = { error: e.message }; + } + + return ( + <> +
- {contentTarget || "MISSING"} + webOS환경: {palmSystemExists ? "✓" : "✗"}
-
- - ); + +
+
+ raw (최초 파라미터): +
+
+ {raw} +
+
+ +
+ containerFlag: {String(containerFlag)} +
+ +
+
initialParse:
+
+ {JSON.stringify(parsed, null, 2)} +
+
+ +
+
finalParams:
+
+ {JSON.stringify(finalParams, null, 2)} +
+
+ +
+
+ launch contentTarget:{" "} + + {contentTarget || "MISSING"} + +
+
+ redux contentTarget:{" "} + + {reduxContentTarget || "MISSING"} + +
+
+
+ getLaunchParams() 결과: +
+
+ {JSON.stringify(getLaunchParamsResult, null, 2)} +
+
+
+ + {parseError && ( +
+ Parse Error: {parseError} +
+ )} + + ); + } catch (e) { + return ( +
Error: {e.message}
+ ); + } })()}