Skip to content

ReadBooksOficial/electron

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Windows, Linux e MacOS

  • Essa versão é desenvolvida para Windows, MacOS e Llinux
  • Possui verificação de internet (apresenta página de erro se usuário estiver offiline)
const { app, BrowserWindow, Menu, net, shell, nativeTheme  } = require('electron');
const path = require('path');

let win;
let isOnline = false; // Estado da conexão

function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    icon: path.join(__dirname, 'assets', 'icon.png'),
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false,
    },
    useContentSize: true,
    // titleBarStyle: "customButtonsOnHover"
  });

  win.setContentSize(760, 560);
  win.maximize(); //maximiza app


  // Verifica a conexão inicial
  checkInternetConnection().then((online) => {
    isOnline = online; // Atualiza o estado inicial
    loadPage(win, online); // Carrega a página inicial com base na conexão
  });

  // Monitora a conexão a cada segundo
  setInterval(async () => {
    const online = await checkInternetConnection();
    if (online !== isOnline) { // Apenas muda a página se o estado mudou
      isOnline = online;
      loadPage(win, isOnline);
    }
  }, 1000); // Verifica a cada 1 segundo

  const menuTemplate = [
    {
      label: 'Visualização',
      submenu: [
        { label: 'Recarregar', accelerator: 'CmdOrCtrl+R', click: () => win.reload() },
        { type: 'separator' },
        { label: 'Zoom original', accelerator: 'CmdOrCtrl+0', click: () => win.webContents.setZoomLevel(0) },
        { label: 'Zoom +', accelerator: 'CmdOrCtrl+=', click: () => {
            win.webContents.setZoomLevel(win.webContents.getZoomLevel() + 1);
          } 
        },
        { label: 'Zoom -', accelerator: 'CmdOrCtrl+-', click: () => win.webContents.setZoomLevel(win.webContents.getZoomLevel() - 1) },
        { type: 'separator' },
        { label: 'Tela Cheia', accelerator: 'F11', click: () => {
            const isFullScreen = win.isFullScreen();
            win.setFullScreen(!isFullScreen);
        }},
      ],
    },
    {
      label: 'Janela',
      submenu: [
        { label: 'Minimizar', accelerator: 'CmdOrCtrl+M', role: 'minimize' },
        { label: 'Maximizar', accelerator: 'CmdOrCtrl+Shift+M', click: () => win.maximize() },
      ],
    },
    {
      label: 'Ajuda',
      submenu: [
        { 
          label: 'Comunidade no Discord', 
          click: () => { 
            shell.openExternal('https://discord.gg/rxd8gmGB'); 
          } 
        },
        { 
          label: 'Site', 
          click: () => { 
            shell.openExternal('https://readbooks.site'); 
          } 
        },
      ]
    },
  ];



  const menu = Menu.buildFromTemplate(menuTemplate);
  Menu.setApplicationMenu(menu);
}

function loadPage(win, online) {
  if (online) {
    win.loadURL('https://readbooks.site').catch(err => {
      console.error('Erro ao carregar a página:', err);
        win.webContents.executeJavaScript(`
          alert('Erro 404: Atualize o aplicativo para a versão mais recente.');
        `);
    });
  } else {
    win.loadFile(path.join(__dirname, 'offline.html'));
  }
}




// verifica po sistema se é dark ou não
function loadingDarkTheme(){
  win.webContents.on('did-finish-load', () => {
    const isDark = nativeTheme.shouldUseDarkColors;
    const js = isDark ? "localStorage.setItem('darkMode', 'enabled')" : "localStorage.removeItem('darkMode')"
    win.webContents.executeJavaScript(js);
    win.webContents.executeJavaScript(`verificarModoNoturno()`);
  });

  nativeTheme.on('updated', () => {
    const isDark = nativeTheme.shouldUseDarkColors;
    const js = isDark ? "localStorage.setItem('darkMode', 'enabled')" : "localStorage.removeItem('darkMode')"
    win.webContents.executeJavaScript(js);
    win.webContents.executeJavaScript(`verificarModoNoturno()`);
  });
}

async function checkInternetConnection() {
  return new Promise((resolve) => {
    const request = net.request('https://www.google.com');
    request.on('response', () => resolve(true));
    request.on('error', () => resolve(false));
    request.end();
  });
}

app.on('ready', createWindow);

About

Versão em electron para windows

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published