import { isMinVersionSupported } from './isMinVersionSupported'; import { safePostMessage } from '../../natives'; import { GET_SERVER_TIME_MIN_VERSION } from '../constants'; /** * @public * @category 시간 * @name getServerTime * @description * 토스 앱 서버의 현재 시간을 Unix timestamp 형식으로 가져와요. * 디바이스 시간이 아닌 서버 기준 시간을 반환하므로 클라이언트 시간 조작에 따른 보상 중복 수령 등의 치팅을 방지할 수 있어요. * * @returns {Promise} 서버 시간을 Unix timestamp 밀리초 단위로 반환해요. (예: 1705123456789) 지원하지 않는 버전에서는 `undefined`를 반환해요. * @property {() => boolean} isSupported 현재 앱 버전이 이 기능을 지원하는지 확인하는 함수예요. * * @example * ```tsx * import { getServerTime } from '@apps-in-toss/framework'; * * async function checkRewardEligibility() { * // 버전 체크를 먼저 수행하는 것을 권장해요 * if (!getServerTime.isSupported()) { * console.log('이 기능은 지원되지 않는 버전입니다.'); * return; * } * * const serverTime = await getServerTime(); * const rewardDeadline = 1705200000000; * * if (serverTime && serverTime > rewardDeadline) { * console.log('보상 수령 기간이 지났습니다.'); * } * } * ``` */ export async function getServerTime(): Promise { const isSupported = isMinVersionSupported(GET_SERVER_TIME_MIN_VERSION); if (!isSupported) { return; } return (await safePostMessage('getServerTime', {})).serverTime; } getServerTime.isSupported = () => isMinVersionSupported(GET_SERVER_TIME_MIN_VERSION);