export type UCapRuntime = 'browser' | 'electron';

export interface Environment {
  production: boolean;
  runtime?: UCapRuntime;
  title: string;

  companyConfig: {
    companyGroupCode: string;
    fixedCompanyCode: string;
  };

  productConfig: {
    productId: string;
    productName: string;
    authentication: {
      usePrivateInformationAgree: boolean;
      rememberMe: {
        use: boolean;
      };
      autoLogin: {
        use: boolean;
      };
    };
    updateCheckConfig: {
      deviceType: DeviceType;
      intervalHour: number;
    };
    defaultSettings: Settings;

    CommonSetting: {
      /** 파일업로드 제한 사이즈 (mb) */
      defaultFileAllowSize: number;

      /** 내 프로필 이미지 수정 가능 여부 */
      editableProfileImage: boolean;

      /** 소속부서(내부서) 그룹핑 사용여부 */
      useMyDeptGroup: boolean;
      /** 소속부서(내부서) 고정 그룹 SEQ */
      myDeptGroupSeq: number;
      /** 삭제,수정 불가 그룹 Seqs:number[] */
      fixedGroupSeqs: number[];

      /** 타이머대화방 사용유무 */
      useTimerRoom: boolean;
      /** 타이머대화방 기본 interval */
      timerRoomDefaultInterval: number;

      /** 최대 대화방 참여인원 */
      maxChatRoomUser: number;
      /** 대용량대화 기준 */
      masstextLength: number;

      /** 대화방 초기 로딩 이벤트 갯수 */
      eventRequestInitCount: number;
      /** 대화방 이벤트 조회 개수 */
      eventRequestDefaultCount: number;

      /** 여기까지 읽음을 보여줄 최소 이벤트 개수 (show: over) */
      readHereShowMinimumEventCount: number;
      /** 여기까지 읽음을 보여줄 최대 이벤트 개수 (show: under) */
      readHereShowMaximumEventCount: number;
      /** 여기까지 읽음이 보여질때 대화방 이벤트 조회 개수. */
      readHereEventRequestCount: number;
    };
  };

  customConfig?: any;

  commonApiModuleConfig: CommonApiModuleConfig;
  publicApiModuleConfig: PublicApiModuleConfig;
  externalApiModuleConfig: ExternalApiModuleConfig;
  messageApiModuleConfig: MessageApiModuleConfig;
  promptApiModuleConfig: PromptApiModuleConfig;
  piModuleConfig: PiModuleConfig;
  protocolModuleConfig: ProtocolModuleConfig;
  nativeModuleConfig: NativeModuleConfig;
}

export const commonApiUrls: CommonApiUrls = {
  fileProfileSave: '/Common/FileProfileSave.aspx',
  fileTalkDownload: '/Common/FileTalkDownload.aspx',
  fileTalkSave: '/Common/FileTalkSave.aspx',
  fileTalkShare: '/Common/FileTalkShare.aspx',
  massTalkDownload: '/Common/MassTalkDownload.aspx',
  massTalkSave: '/Common/MassTalkSave.aspx',
  transMassTalkDownload: '/Common/TransMassTalkDownload.aspx',
  transMassTalkSave: '/Common/TransMassTalkSave.aspx',
  translationReq: '/Common/TranslationReq.aspx',
  translationSave: '/Common/TranslationSave.aspx'
};

http://15.164.139.105/WebFile/GUC100/2020/01/29/MA_9829_111249476815_2.png.thumb.jpg

export const publicApiUrls: PublicApiUrls = {
  versionInfo2: '/Pub/verinfo2.aspx',
  updateInfo: '/Pub/updinfo.aspx'
};
export const externalApiUrls: ExternalApiUrls = {
  checkUserInfoEx: '/Extern/CheckUserInfoEx.aspx',
  companyList: '/Extern/CompanyList.aspx',
  tokenUpdate: '/Extern/TokenUpdate.aspx',
  urlInfo: '/Extern/urlinfo.aspx'
};
export const messageApiUrls: MessageApiUrls = {
  retrieveSendMessageList: '/uCapMsg/msg/retrieveSendMessageList.do',
  retrieveRecvMessageList: '/uCapMsg/msg/retrieveRecvMessageList.do',
  retrieveReservationMessageList:
    '/uCapMsg/msg/retrieveReservationMessageList.do',
  retrieveSearchMessage: '/uCapMsg/msg/retrieveSearchMessage.do',

  sendNewMessage: '/uCapMsg/msg/sendNewMessage.do',

  retrieveMessageDetail: '/uCapMsg/msg/retrieveMessageDetail.do',
  readMessage: '/uCapMsg/msg/readMessage.do',
  retrieveReadCheck: '/uCapMsg/msg/retrieveReadCheck.do',
  cancelMessage: '/uCapMsg/msg/cancelMessage.do',
  cancelReservationMessage: '/uCapMsg/msg/cancelReservationMessage.do',
  retrieveResourceFile: '/uCapMsg/msg/retrieveResourceFile.do',

  deleteMessage: '/uCapMsg/msg/deleteMessage.do',

  saveMyMessage: '/uCapMsg/msg/saveMyMessage.do',
  retrieveMyMessage: '/uCapMsg/msg/retrieveMyMessage.do',
  deleteMyMessage: '/uCapMsg/msg/deleteMyMessage.do',
  editMyMessage: '/uCapMsg/msg/editMyMessage.do',

  editReservationMessageEx: '/uCapMsg/msg/editReservationMessageEx.do',

  sendCopyMessage: '/uCapMsg/msg/sendCopyMessage.do',

  retrieveUnreadCount: '/uCapMsg/msg/retrieveUnreadCount.do',

  retrieveNoticeList: '/uCapMsg/notice/retrieveNoticeList.do'
};
export const promptUrls: PromptUrls = {
  sendCall: '/uCapPrompt/api/call/clicktocall'
};
export const piUrls: PiUrls = {
  login2: '/uCapPi/login2',
  userTermsAction: '/uCapPi/user/terms.action',
  passwordInitStep1: '/uCapPi/password/initStep1',
  passwordChange: '/uCapPi/password/change',
  policyTotal: '/uCapPi/policy/total',
  policyService: '/uCapPi/policy/service',
  policyPrivacy: '/uCapPi/policy/privacy',
  tokenCheck: '/uCapPi/tokenCheck',
  userMobileAuth: '/uCapPi/user/mobileAuth',
  userUserAuth: '/uCapPi/user/userAuth',
  userCall: '/uCapPi/user/call',
  userMoblieCallAuth: '/uCapPi/user/moblieCallAuth',
  eventSendEventMail: '/uCapPi/event/sendEventMail',
  userMobileInitial1: '/uCapPi/user/mobileInitial1',
  eventSendInvite: '/uCapPi/event/sendInvite',
  userRoom: '/uCapPi/user/room',
  scheduleRetrieveScheduleList: '/uCapPi/schedule/retrieveScheduleList',
  userScreenCapture: '/uCapPi/user/screenCapture'
};
export const protocolUrls: ProtocolUrls = {
  base: '/'
};

export const commonApiacceptableFileExtensions: string[] = [
  // 문서1
  'csv',
  'd01',
  'doc',
  'docx',
  'dot',
  'dotx',
  'hwp',
  'log',
  'one',
  'pdf',
  'pot',
  'potx',
  'pps',
  'ppsx',
  'ppt',
  'pptx',
  'ps',
  // 문서2
  'rtf',
  'txt',
  'vcf',
  'xls',
  'xlsx',
  'xlt',
  'xltx',
  'xlsm',
  'ods',
  // CAD
  'asc',
  'dwg',
  'dws',
  'dwt',
  'dxf',
  'pgp',
  'plt',
  // MAC
  'pages',
  'keynote',
  // 압축
  '7z',
  'a01',
  'a02',
  'a03',
  'alz',
  'egg',
  'gz',
  'rar',
  'tar',
  'zip',
  // 오디오
  'aac',
  'aiff',
  'flac',
  'm4a',
  'mp2',
  'mp3',
  'mpega',
  'mpga',
  'ogg',
  'wma',
  'wav',
  // 플래쉬
  'fla',
  'flv',
  'swf',
  // 이미지
  'ai',
  'bmp',
  'cdr',
  'emf',
  'eps',
  'gif',
  'jpeg',
  'jpg',
  'png',
  'psd',
  'tif',
  'tiff',
  'wmf',
  // 동영상
  '3gp',
  'avi',
  'm4v',
  'mkv',
  'mov',
  'mp4',
  'mpeg',
  'mpg',
  'rv',
  'ts',
  'webm',
  'wmv',
  // 폴더전송용
  'zdr'
];
