// 전역 변수

import {talkEvent} from "./talkEvent.js";

const global = {
    /*스톰프*/
    stomp: null,
    /*사용자 정보 */
    user: null,
    /*현페이지 업무정보*/
    work: null,
    /*api url정의*/
    apiUrl: '',
    /*헬프톡 생성 옵션*/
    option: {},
    /*헬프톡 content 루트 */
    shadowRoot: null,
    /*헬프톨 주요 엘리먼트 */
    element: {},
    /*채팅 날짜 정의*/
    currDay: '',
    /*채팅 상태글 이전 날짜*/
    yourOldDate: '',
    /*채팅 본인글 이전 날짜*/
    mineOldDate: '',
    /*톡방 메시지 스크롤 위치*/
    oldScrollPosition: 0,
    /*스크롤 top < 300 페이징 데이터 호출 여부*/
    scrollMoreFlag: true,
    /*채팅방 엘리먼트 변화 감지 하여 자동 스크롤 사용여부*/
    scrollObserveFlag:true,
    /* 불필요 변수 */
    allVNode: [],
    /* 채팅방 데이터 */
    talkData: [],
    /* 소켓 커넥션 및 브로드 캐스드 관리*/
    channel: null,
    /* 현재 접속 서버 */
    currentServer: '',
    /*시스템 강제 종료 여부*/
    forceKill: false,
    /* 채팅글 호출 파라미터 */
    messageParams: {
        'talkId': '',
        'week': 1,
        'row': 50,
        'start': 0,
    },
    /* 현재 접속 url 파리미터 정보 */
    requestParams: {},
    /* 구독 목록 */
    subscribeList : {},
    // 파일 구독 목록
    fileSubscribeList: {},
    /* 현재 사이트 URL*/
    currentUrl: '',
    /* 에러 메시지 함수 */
    notifier: null,
    /* 브라우저 탭 아이디 */
    tabId: '',
    /* 방 생성자 */
    chatCreator: null,
    hub: null,
    /*클립보드 정보*/
    clipboardData: null,
    clipboardObjectUrl: null,
    // 서비스워커 연결 여부
    serviceWorkerConnect: false,
    // 소켓연결 제어
    reConnect: false,
    /* 로딩 여부 (새로고침시 reconnect 방지용)*/
    init: false,
    checker : {flag: false, inDate: ''},
    talkParams : (obj) => {
        return {
            type: obj.type,
            insSabun: global.user.sabun,
            insName : global.user.name,
            insDate : obj.insDate || '',
            message: obj.message || '',
            talkId: obj.talkId,
            workId: obj.workId,
            workNm: obj.workNm || '',
            introOwner: obj.introOwner || '',
            talkAttachDtos: obj.talkAttachDtos === undefined ? [] : obj.talkAttachDtos,
            talkMessages: obj.talkMessages,
            attach: obj.attach,
            tabId: global.tabId
        }
    },
    /*특정 파라미터 초기화(채팅방 나가기시)*/
    reset: () => {
        // 인포 메시지 삭제
        const systemMessages = global.shadowRoot.querySelectorAll('.system-message');
        Array.from(systemMessages).forEach((sm) => sm.remove());
        // 사이드바 원위치
        global.element.chatSidebar.style.left = 0;
        // // 채팅 내용 호출 파라미터 초기화
        global.currDay = ''
        global.yourOldDate = '';
        global.mineOldDate = '';
        // global.messageParams.talkId = '';
        // global.messageParams.week = 1;
        global.scrollMoreFlag = true;
        global.scrollObserveFlag = true;
        // 검색 비활성화
        global.searchClose();

        /*작성된 메시지 제거*/
        const msg = global.element.chatEditor.innerText.trim();
        if(msg !== '') {
            const talkId = localStorage.getItem(global.tabId)
            const _this = global.shadowRoot.querySelector(`div[data-talk-id="${talkId}"]`)
            const workId = _this.dataset.workId;
            const workNm = _this.dataset.workNm;
            talkEvent.send(global.talkParams({
                type: "UNTYPED",
                talkId: talkId,
                workId: workId,
                workNm: workNm
            }))

            global.element.chatEditor.innerHTML = '';
        }

        talkEvent.messageClean();
        // localstorage 정보 제거
        localStorage.removeItem(global.tabId)
        localStorage.removeItem('workId')
        localStorage.removeItem('workNm')

    },
    talkClean: () => {
        //
        console.log('clean')
        global.currDay = ''
        global.yourOldDate = '';
        global.mineOldDate = '';
        global.messageParams.talkId = '';
        global.messageParams.week = 1;
        global.scrollMoreFlag = true;
        global.scrollObserveFlag = true;
    },
    searchClose: () => {
        const searchCloseBtn = global.shadowRoot.querySelector('#chat-option.bi-x-lg');
        if(searchCloseBtn) {
            searchCloseBtn.click()
        }
    }
}



export {global}