
// 파이어베이스 사용 가능 여부 확인 (1:가능, 0:불가능)
function fn_checkFirebase() {
	const agent = navigator.userAgent.toLowerCase();
	const inapp = agent.indexOf("inapp");
	const safari = agent.indexOf("safari");
	const chrome = agent.indexOf("chrome");
	
	if(inapp > -1 || (safari > -1 && chrome == -1)) { 
		return 0;
	} else {
		return 1;
	}
}

var firebaseConfig = {
	apiKey: "AIzaSyApWnilxwPiu4cp5_yvOqtKUeKP7BXSXZk",
	authDomain: "korea-kr.firebaseapp.com",
	projectId: "korea-kr",
	storageBucket: "korea-kr.appspot.com",
	messagingSenderId: "6477873872",
	appId: "1:6477873872:web:2322cff2fbf2ac53bad4d5",
	measurementId: "G-KDC8NHJF70"
};

var messaging;
var permission = 'denied';

if(fn_checkFirebase()) { 
	// Initialize Firebase
	firebase.initializeApp(firebaseConfig);
	messaging = firebase.messaging();
	permission = Notification.permission;
}

// 종모양 컨트롤
function fn_controllNoti(type) {
	if(type == "ON") {
		$('#notify_button_id').removeClass("off");
		$('#notify_button_id').html('<span class="sr-only">알림<span>ON</span></span>');
	} else {		
		if(!$('#notify_button_id').hasClass('off')){
			$('#notify_button_id').addClass('off');
			$('#notify_button_id').html('<span class="sr-only">알림설정<span>OFF</span></span>');
		}
	}
}

const getToken = () => {
	messaging.getToken()
		.then((currentToken) => {
			if (currentToken && !checkLocalStorageItem('token', currentToken)) {
				var param = { token: currentToken };
				var jshr = $.getJSON('/etc/fcmTokenInit.do', param, function(data) {
					console.log('토큰 DB 등록 완료');
				});
				jshr.complete(function() {
					setLocalStorageItem('token', currentToken);
					console.log('토큰 LocalStorage 등록 완료');
				});
			}
		})
		.catch((err) => {
			console.log('토큰 가져오기 실패', err);
		});
};

const requestPermission = () => {
	Notification.requestPermission()
		.then((permission) => {
			if (permission === 'granted') {
				console.log('푸시 허용');
				getToken(); 
				
			} else if (permission === 'denied') {
				console.log('푸시 차단');
				const currentToken = getLocalStorageItem('token');
				if (currentToken !== 'D') {
					setLocalStorageItem('token', 'D');
				}
			} else {
				console.log('푸시 기본값');
			}
		});
};

// 사용자 정보 조회 후 종모양 설정
const controllNotiBtn = () => {
	if (permission === 'granted') {
		var param = { token: getLocalStorageItem('token') };
		var jshr = $.getJSON('/etc/checkUserSetting.do', param, function(data) {
			console.log("현재 사용자 알림 설정값 갯수 : "+data.result);
			if(data.result > 0 || data.result == -1) {
				fn_controllNoti("ON");
			} else {
				fn_controllNoti("OFF");
			}
		});
	} else if (permission === 'denied') {
		fn_controllNoti("OFF");
	}
}

requestPermission(); 

const getLocalStorageItem = (k) => localStorage.getItem(k);
const setLocalStorageItem = (k, v) => localStorage.setItem(k, v);
const checkLocalStorageItem = (k, v) => localStorage.getItem(k) === v;