/* global $, Whisper, storage */

$(document).on('keyup', e => {
  'use strict';

  if (e.keyCode === 27) {
    window.closeSettings();
  }
});

const $body = $(document.body);
$body.addClass(`${window.theme}-theme`);

// eslint-disable-next-line strict
const getInitialData = async () => ({
  deviceName: await window.getDeviceName(),

  themeSetting: await window.getThemeSetting(),
  hideMenuBar: await window.getHideMenuBar(),

  messageTTL: await window.getMessageTTL(),
  readReceiptSetting: await window.getReadReceiptSetting(),
  typingIndicatorsSetting: await window.getTypingIndicatorsSetting(),
  linkPreviewSetting: await window.getLinkPreviewSetting(),
  notificationSetting: await window.getNotificationSetting(),
  audioNotification: await window.getAudioNotification(),

  spellCheck: await window.getSpellCheck(),

  mediaPermissions: await window.getMediaPermissions(),

  isPrimary: await window.isPrimary(),
  lastSyncTime: await window.getLastSyncTime(),
});

window.initialRequest = getInitialData();

// eslint-disable-next-line more/no-then
window.initialRequest.then(
  data => {
    'use strict';

    storage.fetch();

    window.initialData = data;
    window.view = new Whisper.SettingsView();
    window.view.$el.appendTo($body);
  },
  error => {
    'use strict';

    window.log.error(
      'settings.initialRequest error:',
      error && error.stack ? error.stack : error
    );
    window.closeSettings();
  }
);