<!DOCTYPE html>
<html lang="ko"
	xmlns:th="http://www.thymeleaf.org">
<!--
 *******************************************************************************
 * @source  : SnsCallBackFormMob.html
 * @desc    : SNS 콜백 화면 Page
 *============================================================================
 * STYLE24
 * Copyright(C) 2020 TSIT, All rights reserved.
 *============================================================================
 * VER  DATE         AUTHOR      DESCRIPTION
 * ===  ===========  ==========  =============================================
 * 1.0  2021.02.15   jsshin     최초 작성
 *******************************************************************************
 -->
<head th:replace="~{mob/common/fragments/HeadMob :: head}"></head>
<th:block th:replace="~{web/common/fragments/VariablesWeb :: variables}"></th:block>
<th:block th:replace="~{mob/common/fragments/ScriptsMob :: scripts}"></th:block>
<body>


<script th:inline="javascript">
/*<![CDATA[*/
	const resultMap = [[${resultMap}]];
	let custAppAgreeYn;
	let custMkAgreeYn;
	let phoneAppAgreeYn;
	let phoneMkAgreeYn;
	let custNo;
	let returnUrl;

	// 콜백 함수 위치 변경
	$(document).ready(function() {
		if (gagajf.isNull(resultMap.snsId) && gagajf.isNull(resultMap.snsType)){
			mcxDialog.alertC("인증에 실패하였습니다.<br> 로그인 정보를 확인해주시기 바랍니다.", {
				sureBtnText: "확인",
				sureBtnClick: function() {
					cfnGoToPage(_PAGE_LOGIN);
				}
			});
		} else {
			fnSnsSigninCallback(resultMap);
		}
	});

	// SNS 로그인 콜백함수(네이버, 카카오, YES24)
	var fnSnsSigninCallback = function(userInfo) {
		// 1.CI 정보로 사용자가 없어 회원가입 처리 중 이메일, 휴대전화 중복
		if (userInfo.custStat === 'DUP_PHONE_CUST') {
			mcxDialog.alert("이미 사용 중인 휴대전화번호 입니다.");
			return;
		}
		if (userInfo.custStat === 'DUP_EMAIL_CUST') {
			mcxDialog.alert("이미 사용 중인 이메일 입니다.");
			return;
		}
		// 2.SNS 로그인 정보로 탈퇴확인
		if (userInfo.custStat === 'SECEDE_CUST') {
			mcxDialog.alert("탈퇴 회원 입니다.");
			return;
		}
		// 3.SNS 로그인 정보로 휴면확인
		if (userInfo.custStat === 'DORMANT_CUST') {
			mcxDialog.alertC("휴면 고객님께서는 휴면을<br>해지하신 후 사용하실 수 있습니다.", {
				sureBtnText: "확인",
				sureBtnClick: function() {
					cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
				}
			});
			return;
		}
		// 4.휴대전화 정보가 없으면 SNS 가입화면 이동
		if (userInfo.custStat === 'EMPTY_PHONE_CUST') {
			cfnGoToPage(_PAGE_CUSTOMER_SNS_JOIN);
		}
		// 5.YES24 첫 로그인 시도 시 정보동의 페이지 이동
		if (userInfo.custStat === 'NEED_AGREE_CUST') {
			cfnConsentUseInfo(userInfo.custNm);
			return;
		}
		// 6.SNS 정보로 가입 성공시 가입완료 페이지 이동
		if (userInfo.custStat === 'NEW_CUST') {
			cfnGoToPage(_PAGE_CUSTOMER_JOIN_COMPLETE);
			return;
		}
		// 7.SNS 정보로 가입 실패시 안내 창 알림
		if (userInfo.custStat === 'FAIL_CUST') {
			mcxDialog.alertC("회원가입에 실패 했습니다.<br> 고객센터에 문의 하시기 바랍니다.", {
				sureBtnText: "확인",
				sureBtnClick: function() {
					cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);
				}
			});
			return;
		}
		// 8.CI 정보가 없을때 안내 창 알림
		if (userInfo.custStat === 'EMPTY_CI_CUST') {
			mcxDialog.alertC("연계정보(CI) 값이 없습니다.<br> 고객센터에 문의 하시기 바랍니다.", {
				sureBtnText: "확인",
				sureBtnClick: function() {
					cfnGoToPage(_PAGE_CUSTOMER_JOIN_TYPE);
				}
			});
			return;
		}
		// 9.SNS 로그인 연동 성공 및 기존 SNS 연동된 회원 로그인 시도
		if (userInfo.custStat === 'SUCC_CUST') {
			let params = {};
			params.snsType = userInfo.snsType;
			params.snsId = [[${snsLoginPrefix}]] + userInfo.snsId;
			params.rememberMe = 'true';
			$.post(_frontUrl + '/login'
				, $.param(params)
				,fnReloadAfterLogin
				, "json");
		}
	};

	// 로그인 후 처리
	var fnReloadAfterLogin = function(result) {
		if (result.status === 'OK') {
			if (_isApp === 'true') {
				custAppAgreeYn = result.appAgreeYn;
				custMkAgreeYn = result.mkAgreeYn;
				custNo = result.custNo;
				returnUrl = result.returnUrl;
				setTimeout(function () {
					document.location.href = "idsend://?id=" + custNo + "^link=" + returnUrl;
				}, 1000); // 정보성 PUSH, 마케팅 PUSH 수신여부 확인이 정상적으로 처리되지 않을 때
				fnIsPushEnable(); // 정보성 PUSH, 마케팅 PUSH 수신여부 확인
			} else {
				document.location.href = result.returnUrl;
			}
		} else {
			fnFailLoginProcess(result);
		}
	};

	// 로그인 실패 후 과정
	var fnFailLoginProcess = function (result) {
		// 탈퇴회원
		if (result.status === 'SECEDE_CUST') {
			mcxDialog.alert("탈퇴 회원 입니다.");
			return;
		}
		// 휴면회원
		if (result.status === 'DORMANT_CUST') {
			mcxDialog.alertC("휴면 고객님께서는 휴면을<br>해지하신 후 사용하실 수 있습니다.", {
				sureBtnText: "확인",
				sureBtnClick: function() {
					cfnGoToPage(_PAGE_CUSTOMER_DORMANT);
				}
			});
			return;
		}
		// CI(본인인증)정보 없는 회원
		if (result.status === 'CI_EMPTY') {
			// 본인이증 필요한 회원
			mcxDialog.alertC("본인인증 후 다시 로그인 하시기 바랍니다.", {
				sureBtnText: "확인",
				sureBtnClick: function() {
					cfnGoToPage(_PAGE_CUSTOMER_CERTIFICATION);
				}
			});
			return;
		}

		return; // 정상적으로 로그인 되지 않았으므로 return
	}

	// 앱에서 호출되는 함수(앱푸시)
	var settingsSwitchPush = function(onOff) {
		if (onOff === 'ON') {
			phoneAppAgreeYn = 'Y';
		} else if (onOff === 'OFF'){
			phoneAppAgreeYn = 'N';
		}
		fnIsAdEnable();
	}

	// 앱에서 호출되는 함수(마케팅동의)
	var settingsSwitchAdvertise = function (onOff) {
		if (onOff === 'ON') {
			phoneMkAgreeYn = 'Y';
		} else if (onOff === 'OFF'){
			phoneMkAgreeYn = 'N';
		}

		// 기기에 등록된 정보성 PUSH, 마케팅 PUSH 수신여부와
		// 고객DB 수신여부 비교 후 다르면 기기에 등록된 데이터로 업데이트
		if (phoneAppAgreeYn !== custAppAgreeYn || phoneMkAgreeYn !== custMkAgreeYn ) {
			fnUpdatePush(phoneAppAgreeYn, phoneMkAgreeYn);
		}
		document.location.href = "idsend://?id=" + custNo + "^link=" + returnUrl;
	}

	// 정보성 PUSH ON, OFF 여부 확인
	// 호출시 앱에서 settingsSwitchPush 호출 해서 ON, OFF 값을 param 값으로 준다.
	var fnIsPushEnable = function () {
		if (_osType === 'A') {
			window.style24.isPushEnable();
		} else if (_osType === 'I') {
			window.webkit.messageHandlers.isPushEnable.postMessage({'dummy':'dummy'});
		}
	}

	// 마케팅 PUSH ON, OFF 여부확인
	// 호출시 앱에서 settingsSwitchAdvertise 호출 해서 ON, OFF 값을 param 값으로 준다.
	var fnIsAdEnable = function () {
		if (_osType === 'A') {
			window.style24.isAdEnable();
		} else if (_osType === 'I') {
			window.webkit.messageHandlers.isAdEnable.postMessage({'dummy':'dummy'});
		}
	}

	var fnUpdatePush = function (appAgreeYn, mkAgreeYn) {
		let params = {}
		params.appAgreeYn = appAgreeYn;
		params.mkAgreeYn = mkAgreeYn;
		let jsonData = JSON.stringify(params);
		gagajf.ajaxJsonSubmit('/app/push/update', jsonData);
	}


/*]]>*/
</script>


</body>
</html>
