From 85f6ccff0b16b720a8dc7d7dca9d9f62c2e7b07a Mon Sep 17 00:00:00 2001 From: yonghyon Date: Tue, 13 Feb 2024 16:09:00 +0900 Subject: [PATCH] app http header read --- com.twin.app.shoptime/src/App/App.js | 126 +++++----- .../src/actions/actionTypes.js | 1 + .../src/actions/commonActions.js | 45 ++++ com.twin.app.shoptime/src/api/TAxios.js | 36 +-- .../src/lunaSend/TTSService.js | 221 ------------------ com.twin.app.shoptime/src/lunaSend/account.js | 34 --- com.twin.app.shoptime/src/lunaSend/common.js | 40 ++++ .../src/reducers/commonReducer.js | 10 +- .../src/reducers/deviceReducer.js | 2 +- .../src/utils/helperMethods.js | 9 + .../src/views/LoadingPanel/LoadingPanel.jsx | 6 +- .../src/views/MainView/MainView.jsx | 3 +- 12 files changed, 177 insertions(+), 356 deletions(-) delete mode 100644 com.twin.app.shoptime/src/lunaSend/TTSService.js diff --git a/com.twin.app.shoptime/src/App/App.js b/com.twin.app.shoptime/src/App/App.js index 4f75752a..4ecde30d 100644 --- a/com.twin.app.shoptime/src/App/App.js +++ b/com.twin.app.shoptime/src/App/App.js @@ -1,6 +1,6 @@ import React, { useCallback, useEffect } from "react"; -import { useDispatch } from "react-redux"; +import { useDispatch, useSelector } from "react-redux"; import platform from "@enact/core/platform"; import ThemeDecorator from "@enact/sandstone/ThemeDecorator"; @@ -18,8 +18,9 @@ import { getSubCategory, getTop20Show } from "../actions/mainActions"; import { getMyRecommandedKeyword } from "../actions/myPageActions"; import { getOnSaleInfo } from "../actions/onSaleActions"; import { getBestSeller } from "../actions/productActions"; +import { getHttpHeaderForServiceRequest } from "../actions/commonActions"; import { lunaTest } from "../lunaSend/lunaTest"; -import { getLaunchParams } from "../utils/helperMethods"; +import { getLaunchParams, clearLaunchParams } from "../utils/helperMethods"; import MainView from "../views/MainView/MainView"; import css from "./App.module.less"; import { handleDeepLink } from "./deepLinkHandler"; @@ -28,7 +29,9 @@ let foreGroundChangeTimer = null; function AppBase(props) { const dispatch = useDispatch(); + const { httpHeader } = useSelector((state) => state.common); + // called by [receive httpHeader, launch, relaunch] const initService = useCallback( (haveyInit = true) => { console.log( @@ -36,72 +39,58 @@ function AppBase(props) { haveyInit, appinfo ); - if (haveyInit) { - dispatch(changeAppStatus({ connectionFailed: false })); - if (typeof window === "object" && window.PalmSystem) { + if(httpHeader){ + if (haveyInit) { + dispatch(changeAppStatus({ connectionFailed: false })); + if (typeof window === "object" && window.PalmSystem) { + dispatch( + changeAppStatus({ + cursorVisible: window.PalmSystem?.cursor?.visibility, + }) + ); + } + dispatch(getAuthenticationCode()); + dispatch(getOnSaleInfo({ categoryIncFlag: "Y", lgCatCd: "" })); + dispatch(getHomeMenu()); + dispatch(getHomeLayout()); + dispatch(getHomeMainContents()); + dispatch(getMyRecommandedKeyword()); + dispatch(getBestSeller()); dispatch( - changeAppStatus({ - cursorVisible: window.PalmSystem?.cursor?.visibility, + getSubCategory({ + lgCatCd: "1017", //LG Electronics Base + patnrIdList: null, + pageSize: null, + tabType: null, + filterType: null, }) ); + dispatch(getTop20Show()); + dispatch(getThemeCurationInfo()); } - //todo - // dispatch(getSystemSettings()); - // //get captionEnable - // dispatch(getSystemSettings2()); - // dispatch(getSystemInfo()); - // dispatch(getDeviceId()); - // dispatch(getHttpHeaderForServiceRequest(webOSVersion, language)); - - dispatch(getAuthenticationCode()); - dispatch(getOnSaleInfo({ categoryIncFlag: "Y", lgCatCd: "" })); - dispatch(getHomeMenu()); - dispatch(getHomeLayout()); - dispatch(getHomeMainContents()); - dispatch(getMyRecommandedKeyword()); - dispatch(getBestSeller()); - dispatch( - getSubCategory({ - lgCatCd: "1017", //LG Electronics Base - patnrIdList: null, - pageSize: null, - tabType: null, - filterType: null, - }) - ); - dispatch(getTop20Show()); - dispatch(getThemeCurationInfo()); - } - }, - [dispatch] - ); - - const handleLaunchEvent = useCallback( - (isRelaunch = false) => { - //todo deeplink - const launchParams = getLaunchParams(); - console.log( - "handleLaunchEvent...{isRelaunch, launchParams}", - isRelaunch, - launchParams - ); - - if (launchParams?.contentTarget) { //todo deeplink - dispatch(handleDeepLink(launchParams.contentTarget)); - } + const launchParams = getLaunchParams(); + console.log( + "initService...{haveyInit, launchParams}", + haveyInit, + launchParams + ); - setTimeout(() => { - initService(!isRelaunch); - }, 100); + if (launchParams?.contentTarget) { + //todo deeplink + dispatch(handleDeepLink(launchParams.contentTarget)); + } + clearLaunchParams(); + dispatch(changeAppStatus({ showLoadingPanel: { show: false } })); + } }, - [initService] + [dispatch, httpHeader] ); const handleRelaunchEvent = useCallback(() => { console.log("handleRelaunchEvent started"); - handleLaunchEvent(true); - }, [handleLaunchEvent]); + initService(false); + }, [initService]); const visibilityChanged = useCallback(() => { console.log("document is hidden", document.hidden); @@ -134,9 +123,6 @@ function AppBase(props) { ); } }, 1000); - setTimeout(() => { - initService(false); - }, 100); } }, [dispatch, initService]); @@ -146,14 +132,30 @@ function AppBase(props) { window.lunaTest = (service, method, subscribe, parameters) => lunaTest(service, method, subscribe, parameters); } - handleLaunchEvent(); + dispatch(getHttpHeaderForServiceRequest()); + //todo subscribe + // dispatch(getSystemSettings()); + // //get captionEnable + // dispatch(getSystemSettings2()); + // dispatch(getSystemInfo()); + // dispatch(getDeviceId()); document.addEventListener("visibilitychange", visibilityChanged); document.addEventListener("webOSRelaunch", handleRelaunchEvent); return () => { document.removeEventListener("visibilitychange", visibilityChanged); document.removeEventListener("webOSRelaunch", handleRelaunchEvent); }; - }, [dispatch]); + }, []); + + useEffect(() => { + console.log('httpHeader changed ', httpHeader); + if(!httpHeader){ + + }else{ //계정정보 변경시 또는 초기 로딩시 + dispatch(changeAppStatus({ showLoadingPanel: { show: true } })); + initService(true); + } + }, [httpHeader]); return ; } diff --git a/com.twin.app.shoptime/src/actions/actionTypes.js b/com.twin.app.shoptime/src/actions/actionTypes.js index ca6270f9..bafa4f0f 100644 --- a/com.twin.app.shoptime/src/actions/actionTypes.js +++ b/com.twin.app.shoptime/src/actions/actionTypes.js @@ -10,6 +10,7 @@ export const types = { GET_AUTHENTICATION_CODE: "GET_AUTHENTICATION_CODE", // common actions + GET_HTTP_HEADER: "GET_HTTP_HEADER", CHANGE_APP_STATUS: "CHANGE_APP_STATUS", // appData actions diff --git a/com.twin.app.shoptime/src/actions/commonActions.js b/com.twin.app.shoptime/src/actions/commonActions.js index 14265f84..4e36955c 100644 --- a/com.twin.app.shoptime/src/actions/commonActions.js +++ b/com.twin.app.shoptime/src/actions/commonActions.js @@ -1,6 +1,51 @@ import { types } from "./actionTypes"; +import * as lunaSend from '../lunaSend'; +import appinfo from "../../webos-meta/appinfo.json"; export const changeAppStatus = (status) => ({ type: types.CHANGE_APP_STATUS, payload: status, }); + +export const getHttpHeaderForServiceRequest = onComplete => (dispatch, getState) => { + console.log('getHttpHeaderForServiceRequest '); + lunaSend.getHttpHeaderForServiceRequest({ + onSuccess: (res) => { + console.log("getHttpHeaderForServiceRequest", res); + const convertedRes = { + "Authorization": res["Authorization"], + "X-Authentication": res["X-Authentication"], + "X-Device-ID": res["X-Device-ID"], + "X-Device-Product": res["X-Device-Product"], + "X-Device-Platform": res["X-Device-Platform"], + "X-Device-Model": res["X-Device-Model"], + "X-Device-Eco-Info": res["X-Device-Eco-Info"], + "X-Device-Country": res["X-Device-Country"], + "X-Device-Language":res["X-Device-Language"], + "X-Device-Netcast-Platform-Version": res["X-Device-Netcast-Platform-Version"], + "X-Device-Publish-Flag": res["X-Device-Publish-Flag"], + "X-Device-Fck": res["X-Device-Fck"], + "X-Device-Eula": res["X-Device-Eula"] + } + convertedRes["X-Device-Personalization"] = "Y"; + + convertedRes["app_id"] = appinfo.id; + //todo temp + convertedRes["app_ver"] = "1.0.0";//appinfo.version; + convertedRes["dvc_id"] = res["X-Device-Model"]; + convertedRes["cntry_cd"] = res["X-Device-Country"]; + convertedRes["prod_cd"] = res["X-Device-Product"]; + convertedRes["plat_cd"] = res["X-Device-Platform"]; + convertedRes["lang_cd"] = res["X-Device-Language"]; + convertedRes["sdk_ver"] = "1.0.0"; //server sdk version + convertedRes["publish_flag"] = "Y"; + const version = res["X-Device-Netcast-Platform-Version"] || ""; + convertedRes["os_ver"] = version; + dispatch({ type: types.GET_HTTP_HEADER, payload: convertedRes }); + dispatch(changeAppStatus({webOSVersion: version.substring(0,version.lastIndexOf('.'))})); + }, + onFailure: (err) => { + console.log("getHttpHeaderForServiceRequest fail",err); + } + }); +}; \ No newline at end of file diff --git a/com.twin.app.shoptime/src/api/TAxios.js b/com.twin.app.shoptime/src/api/TAxios.js index 1dddc188..71e49a52 100644 --- a/com.twin.app.shoptime/src/api/TAxios.js +++ b/com.twin.app.shoptime/src/api/TAxios.js @@ -103,36 +103,8 @@ export const TAxios = ( }); }; - const executeRequest = (accessToken) => { - const AUTHORIZATION = { headers: {} }; - - AUTHORIZATION.headers["app_id"] = "com.lgshop.app"; - AUTHORIZATION.headers["app_ver"] = "1.0.0"; - AUTHORIZATION.headers["dvc_id"] = "testdeviceid"; - AUTHORIZATION.headers["cntry_cd"] = "US"; - AUTHORIZATION.headers["prod_cd"] = "webOSTV 5.0"; - AUTHORIZATION.headers["plat_cd"] = "W20H"; - AUTHORIZATION.headers["lang_cd"] = "en-US"; - AUTHORIZATION.headers["os_ver"] = "3.0"; - AUTHORIZATION.headers["sdk_ver"] = "1.0.0"; - AUTHORIZATION.headers["publish_flag"] = "Y"; - - // Device Header 임시 - AUTHORIZATION.headers["X-Authentication"] = "MkOLvUocrJ69RH/iV1ZABJhjR2g="; - AUTHORIZATION.headers["X-Device-ID"] = - "OemUY5qbPITZv96QKlxrtcqT6ypeX6us2qANLng3/0QCUhv2mecK1UDTMYb/hjpjey9dC/kFycc/5R8u+oK56JIWyYC4V278z64YDPKbDXIsd+eECvyf+Rdm8BneIUPM"; - AUTHORIZATION.headers["X-Device-Product"] = "webOSTV 5.0"; - AUTHORIZATION.headers["X-Device-Platform"] = "W20P"; - AUTHORIZATION.headers["X-Device-Model"] = "HE_DTV_W20P_AFADATAA"; - AUTHORIZATION.headers["X-Device-Eco-Info"] = "1"; - AUTHORIZATION.headers["X-Device-Country"] = "US"; - AUTHORIZATION.headers["X-Device-Language"] = "en-US"; - AUTHORIZATION.headers["X-Device-Netcast-Platform-Version"] = "5.0.0"; - AUTHORIZATION.headers["X-Device-Publish-Flag"] = "N"; - AUTHORIZATION.headers["X-Device-Fck"] = "253"; - AUTHORIZATION.headers["X-Device-Eula"] = - "additionalDataAllowed,takeOnAllowed,networkAllowed,generalTermsAllowed,chpAllowed,customAdAllowed,acrOnAllowed,voice2Allowed,voiceAllowed,acrAdAllowed"; - AUTHORIZATION.headers["X-Device-Personalization"] = "Y"; + const executeRequest = (accessToken, httpHeader) => { + const AUTHORIZATION = { headers: {...httpHeader} }; if (accessToken) { AUTHORIZATION.headers["lgsp_auth"] = accessToken; @@ -174,12 +146,12 @@ export const TAxios = ( checkAccessToken().then((accessToken) => { if (!noTokenRefresh) { tokenRefresh(dispatch, getState) - .then(() => executeRequest(accessToken)) + .then(() => executeRequest(accessToken, getState().common.httpHeader)) .catch(() => { /* 토큰 갱신 실패 처리 */ }); } else { - executeRequest(accessToken); + executeRequest(accessToken, getState().common.httpHeader); } }); }; diff --git a/com.twin.app.shoptime/src/lunaSend/TTSService.js b/com.twin.app.shoptime/src/lunaSend/TTSService.js deleted file mode 100644 index 3b0a6da7..00000000 --- a/com.twin.app.shoptime/src/lunaSend/TTSService.js +++ /dev/null @@ -1,221 +0,0 @@ -import LS2Request from "./LS2Request"; -import * as helperMethods from "../utils/helperMethods"; -//W6.0 -const SERVICE_URL = "luna://com.webos.service.tts"; -const SETTING_SERVICE_URL = "luna://com.webos.settingsservice"; -const METHOD_TYPE = { - GET_SYSTEM_SETTINGS: "getSystemSettings", - GET_STATUS: "getStatus", - SPEAK: "speak", - STOP: "stop", -}; - -const isLocalConditions = () => (typeof window === 'object' && !window.PalmSystem); - -export const getAudioFeedbackStatus = () => { - if (isLocalConditions()) { - console.log("isLocal: LUNA SEND getAudioFeedbackStatus"); - return "Some Hard Coded Mock Data"; - } else { - try { - const response = new LS2Request().send({ - service: SETTING_SERVICE_URL, - method: METHOD_TYPE.GET_SYSTEM_SETTINGS, - subscribe: false, - parameters: { - category: "voiceframework", - key: "audioFeedback", - }, - }); - console.log("LUNA SEND getAudioFeedbackStatus"); - console.log("LUNA getAudioFeedbackStatus response: ", response); - - return response; - } catch (e) { - console.error("LUNA SEND ERROR: ", e); - } - } -}; - -export const setAudioFeedback = (value = false) => { - if (isLocalConditions()) { - console.log("isLocal: LUNA SEND setAudioFeedback: ", value); - return "Some Hard Coded Mock Data"; - } else { - try { - const response = new LS2Request().send({ - service: SETTING_SERVICE_URL, - method: METHOD_TYPE.SETTING_SERVICE_URL, - subscribe: false, - parameters: { - category: "voiceframework", - settings: { audioFeedback: value }, - }, - }); - console.log("LUNA SEND setAudioFeedback: ", value); - console.log("LUNA setAudioFeedback response: ", response); - } catch (e) { - console.error("LUNA SEND ERROR: ", e); - } - } -}; - -export const getStatus = () => { - if (isLocalConditions()) { - console.log("isLocal: LUNA SEND getStatus"); - return "Some Hard Coded Mock Data"; - } else { - console.log("LUNA SEND getStatus"); - return new LS2Request().send({ - service: SERVICE_URL, - method: METHOD_TYPE.GET_STATUS, - subscribe: false, - parameters: {}, - }); - } -}; -let speakHandle; -export const speak = (text, onEnded) => { - stop(); - speakHandle = setTimeout(() => _speak(text, onEnded), 500); -}; -let serviceHandle = null; -let msgId = null; -export const _speak = (text, onEnded) => { - const _onEnded = () => { - if(onEnded){ - onEnded(text); - } - }; - const _text = helperMethods.stripHTML(text); - if (isLocalConditions()) { - console.log("isLocal: LUNA SEND speak", text); - localPlay(_text, _onEnded); - return "Some Hard Coded Mock Data"; - } else { - const _onSuccess = (res) =>{ - console.log('TTS Speak onSuccess', res); - if(res.returnValue && res.msgID){ - if(res.msgStatus === 'done'){ - if(msgId === res.msgID){ - if(onEnded){ - onEnded(text); - } - } - serviceHandle.cancel(); - serviceHandle = null; - }else{ - msgId = res.msgID; - } - } - } - const _onFailure = (res) =>{ - console.log('TTS Speak onFailure', res); - serviceHandle.cancel(); - } - try { - const textArr = helperMethods.splitText(_text, 300); - - textArr.map((textEl, index) => { - serviceHandle = new LS2Request().send({ - service: SERVICE_URL, - method: METHOD_TYPE.SPEAK, - subscribe: true, - parameters: { - text: textEl, - feedback: true, - mode: "audioFeedback", - clear: index === textEl.length - 1 ? false : true, - }, - onSuccess: _onSuccess, - onFailure: _onFailure, - }); - return serviceHandle; - }); - } catch (e) { - console.error("TTS Speak ERROR: ", e); - } - } -}; - -export const stop = () => { - clearTimeout(speakHandle); - speakHandle = null; - if(serviceHandle){ - serviceHandle.cancel(); - serviceHandle = null; - } - if (isLocalConditions()) { - console.log("isLocal: LUNA SEND stop"); - localStop(); - return "Some Hard Coded Mock Data"; - } else { - const _onSuccess = (res) =>{ - console.log('TTS stop onSuccess', res); - } - const _onFailure = (res) =>{ - console.log('TTS stop onFailure', res); - } - try { - const handle = new LS2Request().send({ - service: SERVICE_URL, - method: METHOD_TYPE.STOP, - subscribe: false, - parameters: {}, - onSuccess: _onSuccess, - onFailure: _onFailure - }); - return handle; - } catch (e) { - console.error("LUNA SEND ERROR: ", e); - } - } -}; - -const localSoundEffect = (textToSpeak, onended) => { - if (typeof window === "object") { - try { - if (window.speechSynthesis) { - const synth = window.speechSynthesis; - - synth.cancel(); - - const utterance = new window.SpeechSynthesisUtterance(textToSpeak); - - if (typeof window.navigator === 'object') { - const isAppleOS = window.navigator.userAgent - .toLowerCase() - .includes("mac"); - - // 음성 합성 설정 (선택 사항) - utterance.lang = "ko-KR"; // 음성 언어 설정 - utterance.volume = 1; // 음성 볼륨 설정 (0.0에서 1.0까지) - if (isAppleOS) { - utterance.rate = 1.2; // 음성 속도 설정 (0.1에서 10.0까지) - utterance.pitch = 1; // 음성 음조 설정 (0.1에서 2.0까지) - } else { - utterance.rate = 1.7; // 음성 속도 설정 (0.1에서 10.0까지) - utterance.pitch = 1.7; // 음성 음조 설정 (0.1에서 2.0까지) - } - } - utterance.onend = onended; - synth.speak(utterance); - } - } catch (e) { - console.error("error: ", e); - } - } -}; - -export const localPlay = (text, onended) => { - localSoundEffect(text, onended); -}; - -export const localStop = () => { - if (typeof window === "object") { - if (window.speechSynthesis) { - const synth = window.speechSynthesis; - synth.cancel(); - } - } -}; diff --git a/com.twin.app.shoptime/src/lunaSend/account.js b/com.twin.app.shoptime/src/lunaSend/account.js index 274dca6c..d17e9a9f 100644 --- a/com.twin.app.shoptime/src/lunaSend/account.js +++ b/com.twin.app.shoptime/src/lunaSend/account.js @@ -1,40 +1,6 @@ import LS2Request from "./LS2Request"; import * as Config from "../utils/Config"; import appinfo from '../../webos-meta/appinfo.json'; -//W6.0 -export const getHttpHeaderForServiceRequest = (webOSVersion, language, {onSuccess, onFailure, onComplete}) => { - if (webOSVersion === "local") { - if (Config.SUPPORT_LOGIN || Config.USE_DUMMY) { - if (language === "ko") { - onSuccess({ - "X-User-Number": Config.DEBUG_WINDOW_ACCOUNTID_KR, - }); - } else { - onSuccess({ - "X-User-Number": Config.DEBUG_WINDOW_ACCOUNTID_US, - }); - } - } else { - onFailure(); - } - onComplete(); - } else { - if (process.env.REACT_APP_MODE === "DEBUG") { - console.log("LUNA SEND getHttpHeaderForServiceRequest"); - return "Some Hard Coded Mock Data"; - } else { - return new LS2Request().send({ - service: "luna://com.webos.service.sdx", - method: "getHttpHeaderForServiceRequest", - subscribe: false, - parameters: {}, - onSuccess, - onFailure, - onComplete, - }); - } - } -}; export const getSystemSettings = (parameters, {onSuccess, onFailure, onComplete}) => { if (typeof window === "object" && window.PalmSystem) { diff --git a/com.twin.app.shoptime/src/lunaSend/common.js b/com.twin.app.shoptime/src/lunaSend/common.js index cbd521ed..430c4da0 100644 --- a/com.twin.app.shoptime/src/lunaSend/common.js +++ b/com.twin.app.shoptime/src/lunaSend/common.js @@ -37,4 +37,44 @@ export const createToast = (message) => { console.log("LUNA SEND createToast failed", err); } }); +}; + +let httpHeaderHandler = null; +export const getHttpHeaderForServiceRequest = ({onSuccess, onFailure, onComplete}) => { + if (typeof window === "object" && window.PalmSystem) { + if (process.env.REACT_APP_MODE === "DEBUG") { + console.log("LUNA SEND getHttpHeaderForServiceRequest"); + return "Some Hard Coded Mock Data"; + } else { + if(httpHeaderHandler){ + httpHeaderHandler.cancel(); + } + httpHeaderHandler = new LS2Request().send({ + service: "luna://com.webos.service.sdx", + method: "getHttpHeaderForServiceRequest", + subscribe: true, + parameters: {}, + onSuccess, + onFailure, + onComplete, + }); + return httpHeaderHandler; + } + }else{ + onSuccess({ + "Authorization": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuZXh0bGdzZHAuY29tIiwiYXVkIjoibmV4dGxnc2RwLmNvbSIsImlhdCI6MTcwNzc4NTUyNSwiZXhwIjoxNzA3NzkyNzI1LCJtYWNBZGRyZXNzIjoiZWVkMDQ2NjdiNjUzOWU3YmQxMDA1OTljYjBkYTI5ZjRjZTgyZGZlOGZkNzIzMDAxZGVmMjg4NWRkNWZiODRmNWNiMzZlM2QwNzYzNWZjZGJjYWNjNGVjMzI5NWIwNjZjOTMwNmNmNDI1ZGQzMmQ2MDMxMjc1NWNkOTIyNjEwMzcifQ.vqPdYGnN46diesDBLzA4UhACCJVdIycLs7wZu9M55Hc", + "X-Authentication": "MkOLvUocrJ69RH/iV1ZABJhjR2g=", + "X-Device-ID": "OemUY5qbPITZv96QKlxrtcqT6ypeX6us2qANLng3/0QCUhv2mecK1UDTMYb/hjpjey9dC/kFycc/5R8u+oK56JIWyYC4V278z64YDPKbDXIsd+eECvyf+Rdm8BneIUPM", + "X-Device-Product": "webOSTV 5.0", + "X-Device-Platform": "W20P", + "X-Device-Model": "HE_DTV_W20P_AFADATAA", + "X-Device-Eco-Info": "1", + "X-Device-Country": "US", + "X-Device-Language":"en-US", + "X-Device-Netcast-Platform-Version": "5.0.0", + "X-Device-Publish-Flag": "N", + "X-Device-Fck": "253", + "X-Device-Eula": "additionalDataAllowed,takeOnAllowed,networkAllowed,generalTermsAllowed,chpAllowed,customAdAllowed,acrOnAllowed,voice2Allowed,voiceAllowed,acrAdAllowed" + }); + } }; \ No newline at end of file diff --git a/com.twin.app.shoptime/src/reducers/commonReducer.js b/com.twin.app.shoptime/src/reducers/commonReducer.js index 4862c8ea..39f002a0 100644 --- a/com.twin.app.shoptime/src/reducers/commonReducer.js +++ b/com.twin.app.shoptime/src/reducers/commonReducer.js @@ -4,8 +4,10 @@ const initialState = { appStatus: { showLoadingPanel: { show: true, type: "launching" }, isLoading: true, - cursorVisible: false, + webOSVersion:"", //"5.0", "9.0" ... + cursorVisible: false }, + httpHeader: null }; export const commonReducer = (state = initialState, action) => { @@ -38,7 +40,11 @@ export const commonReducer = (state = initialState, action) => { } return state; } - + case types.GET_HTTP_HEADER: + return { + ...state, + httpHeader: action.payload + } default: return state; } diff --git a/com.twin.app.shoptime/src/reducers/deviceReducer.js b/com.twin.app.shoptime/src/reducers/deviceReducer.js index 9b123c94..9e7b37e3 100644 --- a/com.twin.app.shoptime/src/reducers/deviceReducer.js +++ b/com.twin.app.shoptime/src/reducers/deviceReducer.js @@ -1,7 +1,7 @@ import { types } from "../actions/actionTypes"; const initialState = { - accessToken: null, + accessToken: null }; export const deviceReducer = (state = initialState, action) => { diff --git a/com.twin.app.shoptime/src/utils/helperMethods.js b/com.twin.app.shoptime/src/utils/helperMethods.js index cb2c1b9a..ddad37ad 100644 --- a/com.twin.app.shoptime/src/utils/helperMethods.js +++ b/com.twin.app.shoptime/src/utils/helperMethods.js @@ -113,3 +113,12 @@ export const getLaunchParams = () => { return localLaunchParams; } }; + +export const clearLaunchParams = () => { + console.log('common.clearLaunchParams'); + if (typeof window === 'object' && window.PalmSystem && window.PalmSystem.launchParams) { + window.PalmSystem.launchParams = ''; + }else{ + localLaunchParams = {}; + } +}; \ No newline at end of file diff --git a/com.twin.app.shoptime/src/views/LoadingPanel/LoadingPanel.jsx b/com.twin.app.shoptime/src/views/LoadingPanel/LoadingPanel.jsx index c029de93..3ff7f63f 100644 --- a/com.twin.app.shoptime/src/views/LoadingPanel/LoadingPanel.jsx +++ b/com.twin.app.shoptime/src/views/LoadingPanel/LoadingPanel.jsx @@ -66,9 +66,9 @@ export default function LoadingPanel({ showLoadingPanel, ...rest }) { } else { setReadyToHide(false); setReadyToAni(false); - minShowingTimeJob.stop(); - hidingJob.stop(); - maxShowingTimeJob.stop(); + minShowingTimeJob && minShowingTimeJob.stop(); + hidingJob && hidingJob.stop(); + maxShowingTimeJob && maxShowingTimeJob.stop(); dispatch(changeAppStatus({ showLoadingPanel: { show: false } })); } } diff --git a/com.twin.app.shoptime/src/views/MainView/MainView.jsx b/com.twin.app.shoptime/src/views/MainView/MainView.jsx index 6b11822c..a21f6d94 100644 --- a/com.twin.app.shoptime/src/views/MainView/MainView.jsx +++ b/com.twin.app.shoptime/src/views/MainView/MainView.jsx @@ -59,7 +59,8 @@ export default function MainView() { }, [mainIndex, panels.length]); const onPreImageLoadComplete = useCallback(() => { - dispatch(changeAppStatus({ showLoadingPanel: { show: false } })); + console.log('MainView onPreImageLoadComplete'); + // dispatch(changeAppStatus({ showLoadingPanel: { show: false } })); }, [dispatch]); const renderTopPanel = useCallback(() => {