import appinfo from "../../webos-meta/appinfo.json"; import { alertToast } from "../actions/commonActions"; import { store } from "../store/store"; import LS2Request from "./LS2Request"; export const getConnectionStatus = ({ onSuccess, onFailure, onComplete }) => { if (typeof window === "object" && !window.PalmSystem) { console.log("LUNA SEND getConnectionStatus"); //test // setTimeout(() => { // onSuccess({ // returnValue: true, // wifi: { state: "disconnected", onInternet: "no" }, // wired: { state: "disconnected", onInternet: "no" }, // }); // setTimeout(() => { // onSuccess({ // returnValue: true, // wifi: { state: "connected", onInternet: "yes" }, // wired: { state: "connected", onInternet: "yes" }, // }); // }, 20000); // }, 10000); return "Some Hard Coded Mock Data"; } else { return new LS2Request().send({ service: "luna://com.webos.service.connectionmanager", method: "getStatus", subscribe: true, parameters: {}, onSuccess, onFailure, onComplete, }); } }; export const createToast = (message) => { if (typeof window === "object" && !window.PalmSystem) { console.log("LUNA SEND createToast message", message); return; } return new LS2Request().send({ service: "luna://com.webos.notification", method: "createToast", parameters: { message: message, iconUrl: "", noaction: true, }, onSuccess: (res) => { console.log("LUNA SEND createToast success", message); }, onFailure: (err) => { console.log("LUNA SEND createToast failed", err); }, }); }; let httpHeaderHandler = null; export const getHttpHeaderForServiceRequest = ({ onSuccess, onFailure, onComplete, }) => { if ( typeof window === "object" && window.PalmSystem && process.env.REACT_APP_MODE !== "DEBUG" ) { if (httpHeaderHandler) { httpHeaderHandler.cancel(); } httpHeaderHandler = new LS2Request().send({ service: "luna://com.webos.service.sdx", method: "getHttpHeaderForServiceRequest", subscribe: true, parameters: {}, onSuccess: (res) => { try { console.log("[serverHost][LS2] onSuccess HOST:", res && res.HOST); console.log("[serverHost][LS2] onSuccess raw:", res); } catch (e) {} onSuccess && onSuccess(res); }, onFailure: (err) => { console.log("[serverHost][LS2] onFailure:", err); onFailure && onFailure(err); }, onComplete: (res) => { console.log("[serverHost][LS2] onComplete:", res); onComplete && onComplete(res); }, }); return httpHeaderHandler; } else { const serverType = store.getState().localSettings.serverType; const userNumber = serverType === "prd" ? "US2412306099093" : "US2210240095608"; const mockRes = { HOST: "qt2-US.nextlgsdp.com", "X-User-Number": userNumber, Authorization: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJuZXh0bGdzZHAuY29tIiwiYXVkIjoibmV4dGxnc2RwLmNvbSIsImlhdCI6MTcwNzc4NTUyNSwiZXhwIjoxNzA3NzkyNzI1LCJtYWNBZGRyZXNzIjoiZWVkMDQ2NjdiNjUzOWU3YmQxMDA1OTljYjBkYTI5ZjRjZTgyZGZlOGZkNzIzMDAxZGVmMjg4NWRkNWZiODRmNWNiMzZlM2QwNzYzNWZjZGJjYWNjNGVjMzI5NWIwNjZjOTMwNmNmNDI1ZGQzMmQ2MDMxMjc1NWNkOTIyNjEwMzcifQ.vqPdYGnN46diesDBLzA4UhACCJVdIycLs7wZu9M55Hc", "X-Authentication": "MkOLvUocrJ69RH/iV1ZABJhjR2g=", "X-Device-ID": "OemUY5qbPITZv96QKlxrtcqT6ypeX6us2qANLng3/0QCUhv2mecK1UDTMYb/hjpjey9dC/kFycc/5R8u+oK56JIWyYC4V278z64YDPKbDXIsd+eECvyf+Rdm8BneIUPM", "X-Device-Product": "webOSTV 6.0", "X-Device-Platform": "W21A", "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": "6.4.0", "X-Device-Publish-Flag": "N", "X-Device-Fck": "253", "X-Device-SDK-VERSION": "1.0.0", "X-Device-Eula": "additionalDataAllowed,takeOnAllowed,networkAllowed,generalTermsAllowed,chpAllowed,customAdAllowed,acrOnAllowed,voice2Allowed,voiceAllowed,acrAdAllowed", }; try { console.log("[serverHost][LS2][MOCK] onSuccess HOST:", mockRes.HOST); console.log("[serverHost][LS2][MOCK] onSuccess raw:", mockRes); } catch (e) {} onSuccess(mockRes); } }; export const getSystemSettings = ( parameters, { onSuccess, onFailure, onComplete } ) => { if ( typeof window === "object" && window.PalmSystem && process.env.REACT_APP_MODE !== "DEBUG" ) { return new LS2Request().send({ service: "luna://com.webos.settingsservice", method: "getSystemSettings", subscribe: true, parameters: parameters, onSuccess, onFailure, onComplete, }); } else if (typeof window === "object") { const language = typeof window.navigator === "object" ? window.navigator.language || window.navigator.userLanguage : "en-US"; const res = { settings: { smartServiceCountryCode2: language.split("-")[1], captionEnable: true, }, returnValue: true, }; onSuccess(res); onComplete(res); } }; export function checkValidCountry(ricCode, country) { if (ricCode === "aic") { if (country === "US") return true; else return false; } else if (ricCode === "eic") { if (country === "GB" || country === "DE") return true; else return false; } else if (ricCode === "ruc") { if (country === "RU") return true; else return false; } else { if (country === "US") { return true; } else { return false; } } } // 3.0 ~ 4.5 export const setSubtitleEnable = ( mediaId, captionEnable, { onSuccess, onFailure, onComplete } ) => { if ( typeof window === "object" && window.PalmSystem && process.env.REACT_APP_MODE !== "DEBUG" ) { if (captionEnable) { return new LS2Request().send({ service: "luna://com.webos.service.tv.subtitle", method: "enableSubtitle", parameters: { pipelineId: mediaId }, onSuccess, onFailure, onComplete, }); } else { return new LS2Request().send({ service: "luna://com.webos.service.tv.subtitle", method: "disableSubtitle", parameters: { pipelineId: mediaId }, onSuccess, onFailure, onComplete, }); } } }; // 5.0 export const setSubtitleEnableOver5 = ( mediaId, captionEnable, { onSuccess, onFailure, onComplete } ) => { if (typeof window === "object" && window.PalmSystem) { return new LS2Request().send({ service: "luna://com.webos.media", method: "setSubtitleEnable", parameters: { enable: captionEnable, mediaId: mediaId }, onSuccess, onFailure, onComplete, }); } }; // system Alert export const addReservation = (data, { onSuccess, onFailure, onComplete }) => { if (typeof window === "object" && !window.PalmSystem) { console.log("LUNA SEND addReservation data", data); return; } return new LS2Request().send({ service: "luna://com.webos.service.tvReservationAgent", method: "add", parameters: { scheduleType: "LGShopping", startTime: { year: data.startTime.year, month: data.startTime.month, day: data.startTime.day, hour: data.startTime.hour, minute: data.startTime.minute, second: data.startTime.second, }, callback: { method: "luna://com.webos.notification/createAlert", params: { message: data.params.message, buttons: [ { label: data.params.buttons[0].label, onclick: "luna://com.webos.applicationManager/launch", params: { id: window.PalmSystem.identifier ?? appinfo.id, params: data.params.launch, }, }, { label: data.params.buttons[1].label, }, ], autoTimeout: 30, }, }, information: { showId: data.params.showId, chanId: data.params.chanId, }, }, onSuccess, onFailure, onComplete, }); }; export const deleteReservationCallback = ( scheduleIdList, { onSuccess, onFailure, onComplete } ) => { if (typeof window === "object" && !window.PalmSystem) { console.log( "LUNA SEND deleteReservationCallback scheduleIdList", scheduleIdList ); return; } return new LS2Request().send({ service: "luna://com.webos.service.tvReservationAgent", method: "delete", parameters: { scheduleIdList: scheduleIdList, }, onSuccess, onFailure, onComplete, }); }; export const deleteReservation = ({ onSuccess, onFailure, onComplete }) => { if (typeof window === "object" && !window.PalmSystem) { console.log("LUNA SEND deleteReservation"); return; } return new LS2Request().send({ service: "luna://com.palm.db", method: "search", parameters: { query: { from: "com.webos.service.tvReservationAgent.info:1", orderBy: "startTime", filter: [{ prop: "reserveType", op: "=", val: 6 }], // 6 LG Shopping 전용. }, }, onSuccess, onFailure, onComplete, }); }; export const deleteOldDb8 = (kind, { onSuccess, onFailure, onComplete }) => { if (typeof window === "object" && !window.PalmSystem) { console.log("LUNA SEND deleteOldDb8"); onSuccess && onSuccess(); return; } const id = window.PalmSystem.identifier ?? appinfo.id; return new LS2Request().send({ service: "luna://com.webos.service.db", method: "delKind", parameters: { id: id + ":" + kind, }, onSuccess, onFailure, onComplete, }); }; export const checkFirstLaunch = ({ onSuccess, onFailure, onComplete }) => { if (typeof window === "object" && !window.PalmSystem) { console.log("LUNA SEND checkFirstLaunch"); return; } const id = window.PalmSystem.identifier ?? appinfo.id; return new LS2Request().send({ service: "luna://com.webos.service.db", method: "find", parameters: { query: { from: `${id}:20`, where: [{ prop: "type", op: "=", val: "app_init" }], }, }, onSuccess, onFailure, onComplete, }); }; export const saveFirstLaunchInfo = ({ onSuccess, onFailure, onComplete }) => { if (typeof window === "object" && !window.PalmSystem) { console.log("LUNA SEND saveFirstLaunchInfo"); onSuccess({ returnValue: true }); return; } const id = window.PalmSystem.identifier ?? appinfo.id; return new LS2Request().send({ service: "luna://com.webos.service.db", method: "put", parameters: { object: [ { _kind: `${id}:20`, type: "app_init", initialized: true, timestamp: new Date().toISOString(), }, ], }, onSuccess, onFailure, onComplete, }); }; export const disableNotification = ({ onSuccess, onFailure, onComplete }) => { if (typeof window === "object" && !window.PalmSystem) { console.log("LUNA SEND disableNotification"); return; } return new LS2Request().send({ service: "luna://com.webos.notification", method: "disable", parameters: {}, onSuccess, onFailure, onComplete, }); }; export const enableNotification = ({ onSuccess, onFailure, onComplete }) => { if (typeof window === "object" && !window.PalmSystem) { console.log("LUNA SEND enableNotification"); return; } return new LS2Request().send({ service: "luna://com.webos.notification", method: "enable", parameters: {}, onSuccess, onFailure, onComplete, }); }; export const getConnectionInfo = ({ onSuccess, onFailure, onComplete }) => { if (typeof window === "object" && !window.PalmSystem) { console.log("LUNA SEND disableConnectionInfo"); return; } else { return new LS2Request().send({ service: "luna://com.webos.service.connectionmanager", method: "getinfo", subscribe: false, parameters: {}, onSuccess, onFailure, onComplete, }); } };