diff --git a/CHANGELOG.md b/CHANGELOG.md index 54c1361..f5a77d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# Version 0.0.5 + +- Will attempt to launch bundled `ssb-server` if it can't connect to one. + # Version 0.0.4 - Refactored the source code to Mithril. diff --git a/app.js b/app.js index 5bcc4b0..c07c232 100644 --- a/app.js +++ b/app.js @@ -1,10 +1,16 @@ const m = require("mithril"); +const electron = require("electron") const Navigation = require("./navigation"); const Welcome = require("./welcome"); const Backup = require("./backup"); const root = document.getElementById("root"); +electron.ipcRenderer.on('server-started', (event, config) => { + console.log("server started") + m.route.set("/backup/connect") +}) + m.route(root, "/welcome", { "/welcome": { render: (vnode) => { @@ -16,4 +22,5 @@ m.route(root, "/welcome", { return m(Navigation, m(Backup, vnode.attrs)) } } -}); \ No newline at end of file +}); + diff --git a/background-process.js b/background-process.js index 84551b3..c87d745 100644 --- a/background-process.js +++ b/background-process.js @@ -3,12 +3,11 @@ const Path = require('path') const electron = require('electron') const Client = require('ssb-client') const ssbKeys = require('ssb-keys') +const Config = require("ssb-config/inject") +const appName = process.env.ssb_appname || "ssb" +const config = Config(appName) // pull config options out of depject -let config = require('./config') -console.log("config", config) - -config = config.create().config.sync.load() const createSbot = require('ssb-server') .use(require('ssb-local')) diff --git a/backup.js b/backup.js index b147b06..815415c 100644 --- a/backup.js +++ b/backup.js @@ -10,6 +10,7 @@ // dependencies needed... const m = require("mithril") +const electron = require('electron') const marked = require("marked") const path = require("path") const fs = require("fs") @@ -33,6 +34,7 @@ const secretFile = path.join(config.path, "secret") // script local variables used by multiple components... let backup = {} let sbot = false +let attemptedToStartBuiltinServer = false /** * MessageWithIndeterminateProgress @@ -176,7 +178,11 @@ const connect = { ssbClient(config, (err, server) => { if (err) { console.error("err", err) - m.route.set("/backup/servernotrunning") + if (attemptedToStartBuiltinServer) { + m.route.set("/backup/servernotrunning") + } else { + m.route.set("/backup/startserver") + } } else { sbot = server backup.feed = sbot.id @@ -191,6 +197,19 @@ const connect = { } } +const startserver = { + oncreate: function (vnode) { + attemptedToStartBuiltinServer = true + electron.ipcRenderer.send('start-server', config) + + }, + view: function (vnode) { + return m(MessageWithIndeterminateProgress, { + content: `Attempting to start SSB server...` + }) + } +} + /** * getdatafromserver - phase 4 of backup * @@ -412,6 +431,7 @@ const BackupView = { start, checkssbfolder, connect, + startserver, getdatafromserver, summary, saved, diff --git a/index.js b/index.js index efbdece..cc86014 100644 --- a/index.js +++ b/index.js @@ -8,6 +8,7 @@ const debug = require('electron-debug') const contextMenu = require('electron-context-menu') const menu = require('./menu') const appName = process.env.SSB_APPNAME || 'ssb' +const developmentMode = process.env.DEVELOPMENT_MODE == "true" || false const os = require('os') const fs = require('fs') const CONFIG_FOLDER = path.join(os.homedir(), `.${appName}`) @@ -37,15 +38,22 @@ let windows = {}; const createBackgroundWindow = async () => { if (!windows.background) { + console.log("creating background window...") const bgWin = new BrowserWindow({ title: "SSB Backup tool server", - show: false, - width: 150, - height: 150, + show: developmentMode, + width: 500, + height: 500, webPreferences: { nodeIntegration: true } }); + bgWin.on('closed', () => { + // Dereference the window + // For multiple windows store them in an array + windows.background = undefined + }); + await bgWin.loadFile(path.join(__dirname, 'background.html')) return bgWin @@ -63,7 +71,9 @@ const createMainWindow = async () => { win.on('ready-to-show', () => { win.show() - // win.closeDevTools() + if (!developmentMode) { + win.closeDevTools() + } }); win.on('closed', () => { @@ -111,5 +121,11 @@ app.on('window-all-closed', () => { ipcMain.once('server-started', async (ev, config) => { console.log("server started!") + windows.main.webContents.send('server-started', config) + }) + + ipcMain.once('start-server', async () => { + console.log("attempting to start server...") + windows.background = await createBackgroundWindow() }) })(); diff --git a/package.json b/package.json index bd134a4..e403c7c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ssb-backup-tool", "productName": "SSB Backup Tool", - "version": "0.0.4", + "version": "0.0.5", "description": "A backup tool for the scuttleverse", "license": "MIT", "repository": "ssbc/ssb-backup-tool", @@ -14,6 +14,7 @@ "scripts": { "postinstall": "electron-builder install-app-deps", "start": "cross-env ELECTRON_DISABLE_SECURITY_WARNINGS=true electron .", + "dev": "cross-env ELECTRON_DISABLE_SECURITY_WARNINGS=true DEVELOPMENT_MODE=true electron .", "pack": "electron-builder --dir", "dist": "electron-builder --macos --windows --linux ", "release": "env-cmd electron-builder --windows --macos --linux --publish always", @@ -71,8 +72,14 @@ "github" ], "target": [ - "nsis", - "zip" + { + "target": "nsis", + "arch": ["x64", "ia32"] + }, + { + "target": "zip", + "arch": ["x64", "ia32", "arm64"] + } ] }, "mac": { diff --git a/readme.md b/readme.md index d2b1366..eaa1741 100644 --- a/readme.md +++ b/readme.md @@ -37,6 +37,15 @@ $ npm install $ npm start ``` +### Run in development mode + +``` +$ npm install +$ npm run dev +``` + +In _development mode_ the development tools are visible and both the main window and the background window responsible for the bundled ssb-server are visible. + ### Publish ```