import { DeviceType, DesktopType, NotificationMethod } from '@ucap/core';
import { BrowserNativeService } from '@ucap/ng-native-browser';

import {
  Environment,
  commonApiUrls,
  commonApiacceptableFileExtensions,
  publicApiUrls,
  externalApiUrls,
  piUrls,
  protocolUrls,
  messageApiUrls,
  promptUrls,
  commonApiAcceptableFileExtensionsForImage,
  commonApiAcceptableFileExtensionsForVideo
} from './environment.type';

export const environment: Environment = {
  production: false,
  hmr: false,

  productConfig: {
    productId: 'PRO_000482',
    productName: 'EZMessenger',
    localEncriptionKey: '!@#$LG%^&*',
    nativeServiceClass: BrowserNativeService,
    updateCheck: {
      deviceType: DeviceType.Renderer,
      devicePlatformType: DesktopType.Windows,
      intervalHour: 1
    },
    defaultSettings: {
      general: {
        theme: 'theme-default',
        autoLogin: false,
        autoLaunch: false,
        continueRunWhenClose: true,
        locale: 'ko',
        hrInfoLocale: 'ko',
        startupHideWindow: false,
        timezone: 'Asia/Seoul'
      },
      notification: {
        preView: true,
        use: true,
        method: NotificationMethod.SoundAndAlert,
        alertExposureTime: 5,
        receiveForMobile: false,
        receiveForMessage: false
      },
      chat: {
        fontFamily: 'Malgun Gothic',
        fontSize: 12,
        downloadPath: undefined
      },
      presence: {
        absenceTime: 10
      }
    },
    file: {
      defaultDownloadFolder: 'LF Talk2 Download',
      defaultFileAllowSize: 100
    },
    authentication: {
      usePrivateInformationAgree: false,
      useRememberMe: true,
      useAutoLogin: true,
      maxTryCount: 5,
      intervalForRetry: 1 * 60
    },
    profile: {
      editableProfileImage: false
    },
    group: {
      useMyDeptGroup: false,
      myDeptGroupSeq: -5,
      fixedGroupSeqs: [-5]
    },
    chat: {
      useTimerRoom: false,
      timerRoomDefaultInterval: 24 * 60 * 60,

      maxChatRoomUser: 300,
      masstextLength: 800,

      eventRequestInitCount: 30,
      eventRequestDefaultCount: 50,

      readHereShowMinimumEventCount: 10,
      readHereShowMaximumEventCount: 100,
      readHereEventRequestCount: 10
    }
  },

  companyConfig: {
    companyGroupCode: 'LG',
    fixedCompanyCode: undefined
  },

  commonApiModuleConfig: {
    hostConfig: {
      protocol: 'http',
      domain: 'lftalk2.lfcorp.com',
      port: 8033
    },
    urls: commonApiUrls,
    acceptableFileExtensions: commonApiacceptableFileExtensions,
    acceptableFileExtensionsForImage: commonApiAcceptableFileExtensionsForImage,
    acceptableFileExtensionsForVideo: commonApiAcceptableFileExtensionsForVideo
  },

  publicApiModuleConfig: {
    hostConfig: {
      protocol: 'http',
      domain: 'lftalk2.lfcorp.com',
      port: 8033
    },
    urls: publicApiUrls
  },

  externalApiModuleConfig: {
    hostConfig: {
      protocol: 'http',
      domain: 'lftalk2.lfcorp.com',
      port: 8011
    },
    urls: externalApiUrls
  },

  messageApiModuleConfig: {
    hostConfig: {
      protocol: 'http',
      domain: 'lftalk2.lfcorp.com',
      port: 9097
    },
    urls: messageApiUrls
  },

  promptApiModuleConfig: {
    hostConfig: {
      protocol: 'http',
      domain: 'lftalk2.lfcorp.com',
      port: 9097
    },
    urls: promptUrls
  },

  piModuleConfig: {
    hostConfig: {
      protocol: 'http',
      domain: 'lftalk2.lfcorp.com',
      port: 9097
    },
    urls: piUrls
  },

  webSocketModuleConfig: {
    reconnect: {
      delay: 1000 * 3
    }
  },

  protocolModuleConfig: {
    hostConfig: {
      protocol: 'ws',
      domain: 'lftalk2.lfcorp.com',
      port: 8080
    },
    urls: protocolUrls,
    requestId: {
      min: 1,
      max: 59999
    },
    timeout: {
      expiredTime: 15,
      checkInterval: 1
    }
  },
  pingProtocolModuleConfig: {
    statusCode: 'O',
    interval: 5
  }
};
