const {
  BrowserWindow,
  ipcMain,
  session,
  Notification,
  remote
} = require("electron");
const path = require("path");

module.exports = () => {
  let win;
  const url = "https://csdn.net";

  let init = mainWindow => {
    ipcMain.on("token", (e, info) => {
      console.log("on token");
      const loginNote = createNote("登录成功");

      session.defaultSession.cookies
        .get({
          url: url
        })
        .then((cookies, err) => {
          const userInfo = {};
          cookies.forEach(cookie => {
            userInfo[cookie.name] = decodeURIComponent(cookie.value);
          });
          userInfo.UserAvatar = decodeURIComponent(info.UserAvatar);
          console.log(userInfo);
          global.opConfig.set("userInfo", userInfo);
          mainWindow.webContents.send("setUserInfo", userInfo);

          win.close();
          loginNote.show();
        });
    });
    ipcMain.on("logout", (e, info) => {
      console.log("remove cookie");
      const logoutNote = createNote("退出登录");
      session.defaultSession.cookies
        .get({
          url: url
        })
        .then((cookies, err) => {
          cookies.forEach(cookie => {
            session.defaultSession.cookies.remove(url, cookie.name, e => {});
          });
          mainWindow.webContents.send("setUserInfo", "");
          logoutNote.show();
        });
    });
  };

  let createNote = note => {
    return new Notification({
      title: "CSDN通知", // 通知标题
      icon: path.resolve(__static, "./icon.png"),
      body: note, // 内容
      href: "https://www.csdn.net/"
    });
  };

  let createWindow = mainWindow => {
    console.log("create window");
    session.defaultSession.cookies
      .get({
        url: url
      })
      .then((cookies, err) => {
        // console.log("cookies", cookies);
      });

    win = new BrowserWindow({
      frame: true,
      autoHideMenuBar: true,
      title: false,
      parent: mainWindow,
      modal: true,
      width: 460,
      height: 400,
      show: false,
      resizable: false,
      closable: true,
      titleBarStyle: "hiddenInset",
      minimizable: true,
      alwaysOnTop: true,
      webPreferences: {
        webSecurity: false,
        enableRemoteModule: true,
        nodeIntegration: true,
        backgroundThrottling: false,
        devTools: false,
        webviewTag: true,
        preload: `${path.resolve(__static, "./login_preload.js")}`
      }
    });
    // win.loadFile(path.resolve(__dirname, "../../../../send.html"));
    // win.loadURL("https://meiyin.xyz");
    win.loadURL(
      `https://passport.csdn.net/account/login?from=https://gitcode.net/about/quicker`
    );
    win.on("closed", () => {
      win = undefined;
    });
    // 打包后，失焦隐藏
    win.on("blur", () => {
      win.close();
    });
    win.webContents.on("did-stop-loading", () => {
      win.webContents.insertCSS(
        `
        #csdn-toolbar, #copyright-box, #app .notes, #app .icon-list, #app .user-service-link { display: none }
        #app, #app .container-main { min-width: unset!important; min-height: unset!important; }
        #app .main { width: unset }
        html, body { overflow: hidden }
        #app .main-login { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 999 }
        #app .form-control-phone { width: 62%; float: right }
        #app .main-process-login { width: 66%; margin-top: 20px }
        .login-success-tip, .quicker_loading { position: fixed; width: 100%; height: 100%; left: 0; top: 0; color: #fff; z-index: 2000; background: #fff }
        .login-success-tip::after, .quicker_loading::after { content: '正在同步个人设置…'; color: #666; position: absolute; background: #fff; left: 50%; top: 50%; transform: translate(-50%, -50%); }
        .quicker_loading { height: 100vh; }
        `
      );
      win.openDevTools();
      win.show();
    });
  };

  let getWindow = () => win;

  return {
    init,
    getWindow,
    createWindow
  };
};
