Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DEVELOPER-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ These steps are only needed as a fallback if CI is not correctly notarizing the

1. Download the `.dmg` from `https://github.com/ipfs-shipyard/ipfs-desktop/releases/vA.B.C`.
2. Ensure `APPLEID` and `APPLEIDPASS` are set either as environment variables or entries in `.env` file. These need to belong to the same org as the certificate used for signing.
3. Run `node pkgs/macos/notarize-cli.js ./IPFS-Desktop-A.B.C.dmg`.
3. Run `node pkgs/macos/notarize-cli.cjs ./IPFS-Desktop-A.B.C.dmg`.
4. Debug errors by calling the tool directly: `xcrun altool --notarize-app -f /path/to/IPFS-Desktop-0.X.0.dmg --primary-bundle-id io.ipfs.desktop -u XXX-from-vault-XXX -p XXX-app-specific-password-from-vault-XXX`; also, see the [long list of hoops Apple may ask you to jump through](https://github.com/ipfs-shipyard/ipfs-desktop/pull/1365#issuecomment-598127684).

### Notarization failures
Expand Down
2 changes: 1 addition & 1 deletion electron-builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ directories:

asarUnpack: 'src/**/scripts/**/*'

afterSign: './pkgs/macos/notarize-build.js'
afterSign: './pkgs/macos/notarize-build.cjs'

mac:
artifactName: ${name}-${version}-squirrel.${ext}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"test:e2e": "xvfb-maybe cross-env NODE_ENV=test playwright test -c test/e2e/playwright.config.js",
"postinstall": "run-s install-app-deps patch-deps macos-universal-kubo",
"install-app-deps": "electron-builder install-app-deps",
"macos-universal-kubo": "node pkgs/macos/build-universal-kubo-binary.js",
"macos-universal-kubo": "node pkgs/macos/build-universal-kubo-binary.cjs",
"patch-deps": "patch-package",
"clean": "shx rm -rf node_modules/kubo/bin",
"force-webui-download": "shx rm -rf assets/webui && run-s build:webui",
Expand Down
File renamed without changes.
File renamed without changes.
12 changes: 7 additions & 5 deletions src/add-to-ipfs.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ const { globSource } = require('ipfs-http-client')
const i18n = require('i18next')
const last = require('it-last')
const fs = require('fs-extra')
const logger = require('./common/logger')
const { notify, notifyError } = require('./common/notify')
const { analyticsKeys } = require('./analytics/keys')
const getCtx = require('./context')
const logger = require('./common/logger.js')
const { notify, notifyError } = require('./common/notify.js')
const { analyticsKeys } = require('./analytics/keys.js')
const getCtx = require('./context.js')

async function copyFileToMfs (ipfs, cid, filename) {
let i = 0
Expand Down Expand Up @@ -111,7 +111,7 @@ async function addFileOrDirectory (ipfs, filepath) {
return { cid, filename }
}

module.exports = async function (files) {
const defaultExport = async function (files) {
const ctx = getCtx()
const getIpfsd = await ctx.getProp('getIpfsd')
const ipfsd = await getIpfsd()
Expand Down Expand Up @@ -150,3 +150,5 @@ module.exports = async function (files) {

return cid
}

module.exports = defaultExport
15 changes: 8 additions & 7 deletions src/analytics/index.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
// @ts-check
const Countly = require('countly-sdk-nodejs')
const { ipcMain } = require('electron')
const { COUNTLY_KEY } = require('../common/consts')
const { app, ipcMain } = require('electron')
const { COUNTLY_KEY } = require('../common/consts.js')
const { join } = require('path')
const { app } = require('electron')
const { existsSync, mkdirSync } = require('fs')
const ipcMainEvents = require('../common/ipc-main-events')
const logger = require('../common/logger')
const getCtx = require('../context')
const ipcMainEvents = require('../common/ipc-main-events.js')
const logger = require('../common/logger.js')
const getCtx = require('../context.js')

module.exports = async function () {
const defaultExport = async function () {
logger.info('[analytics] init...')
// workaround: recursive mkdir https://github.com/Countly/countly-sdk-nodejs/pull/14
const countlyDataDir = join(app.getPath('userData'), 'countly-data')
Expand Down Expand Up @@ -39,3 +38,5 @@ module.exports = async function () {
})
logger.info('[analytics] init done')
}

module.exports = defaultExport
6 changes: 4 additions & 2 deletions src/app-menu.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { app, Menu, shell } = require('electron')
const logger = require('./common/logger')
const logger = require('./common/logger.js')

const template = [
{
Expand Down Expand Up @@ -88,9 +88,11 @@ if (process.platform === 'darwin') {
]
}

module.exports = function () {
const defaultExport = function () {
logger.info('[appMenu] init...')
const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)
logger.info('[appMenu] init done...')
}

module.exports = defaultExport
5 changes: 3 additions & 2 deletions src/argv-files-handler.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const fs = require('fs-extra')
const addToIpfs = require('./add-to-ipfs')
const addToIpfs = require('./add-to-ipfs.js')

async function argvHandler (argv) {
let handled = false
Expand All @@ -25,9 +25,10 @@ async function argvHandler (argv) {
return handled
}

module.exports = async function () {
const defaultExport = async function () {
// Checks current process
await argvHandler(process.argv)
}

module.exports = defaultExport
module.exports.argvHandler = argvHandler
15 changes: 8 additions & 7 deletions src/auto-launch.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ const os = require('os')
const path = require('path')
const fs = require('fs-extra')
const untildify = require('untildify')
const createToggler = require('./utils/create-toggler')
const logger = require('./common/logger')
const store = require('./common/store')
const { IS_MAC, IS_WIN } = require('./common/consts')
const { AUTO_LAUNCH: CONFIG_KEY } = require('./common/config-keys')
const { showDialog, recoverableErrorDialog } = require('./dialogs')
const createToggler = require('./utils/create-toggler.js')
const logger = require('./common/logger.js')
const store = require('./common/store.js')
const { IS_MAC, IS_WIN } = require('./common/consts.js')
const { AUTO_LAUNCH: CONFIG_KEY } = require('./common/config-keys.js')
const { showDialog, recoverableErrorDialog } = require('./dialogs/index.js')

function isSupported () {
const plat = os.platform()
Expand Down Expand Up @@ -49,7 +49,7 @@ async function disable () {
await fs.remove(getDesktopFile())
}

module.exports = async function () {
const defaultExport = async function () {
const activate = async ({ newValue, oldValue, feedback }) => {
if (process.env.NODE_ENV === 'development') {
logger.info('[launch on startup] unavailable during development')
Expand Down Expand Up @@ -109,4 +109,5 @@ module.exports = async function () {
createToggler(CONFIG_KEY, activate)
}

module.exports = defaultExport
module.exports.isSupported = isSupported
21 changes: 11 additions & 10 deletions src/auto-updater/index.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
const { shell, app, BrowserWindow, Notification } = require('electron')
const { shell, app, ipcMain, BrowserWindow, Notification } = require('electron')
const { autoUpdater } = require('electron-updater')
const i18n = require('i18next')
const { ipcMain } = require('electron')
const logger = require('../common/logger')
const { showDialog } = require('../dialogs')
const { IS_MAC, IS_WIN, IS_APPIMAGE } = require('../common/consts')
const ipcMainEvents = require('../common/ipc-main-events')
const getCtx = require('../context')
const store = require('../common/store')
const CONFIG_KEYS = require('../common/config-keys')
const logger = require('../common/logger.js')
const { showDialog } = require('../dialogs/index.js')
const { IS_MAC, IS_WIN, IS_APPIMAGE } = require('../common/consts.js')
const ipcMainEvents = require('../common/ipc-main-events.js')
const getCtx = require('../context.js')
const store = require('../common/store.js')
const CONFIG_KEYS = require('../common/config-keys.js')

function isAutoUpdateSupported () {
if (store.get(CONFIG_KEYS.DISABLE_AUTO_UPDATE, false)) {
Expand Down Expand Up @@ -186,7 +185,7 @@ async function checkForUpdates () {
ipcMain.emit(ipcMainEvents.UPDATING_ENDED)
}

module.exports = async function () {
const defaultExport = async function () {
if (['test', 'development'].includes(process.env.NODE_ENV ?? '')) {
getCtx().setProp('manualCheckForUpdates', () => {
showDialog({
Expand Down Expand Up @@ -216,3 +215,5 @@ module.exports = async function () {
checkForUpdates()
})
}

module.exports = defaultExport
14 changes: 8 additions & 6 deletions src/automatic-gc.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
const createToggler = require('./utils/create-toggler')
const logger = require('./common/logger')
const store = require('./common/store')
const { AUTO_GARBAGE_COLLECTOR: CONFIG_KEY } = require('./common/config-keys')
const createToggler = require('./utils/create-toggler.js')
const logger = require('./common/logger.js')
const store = require('./common/store.js')
const { AUTO_GARBAGE_COLLECTOR: CONFIG_KEY } = require('./common/config-keys.js')
const { ipcMain } = require('electron')
const ipcMainEvents = require('./common/ipc-main-events')
const ipcMainEvents = require('./common/ipc-main-events.js')

const gcFlag = '--enable-gc'
const isEnabled = flags => flags.some(f => f === gcFlag)
Expand Down Expand Up @@ -34,7 +34,7 @@ function applyConfig (newFlags) {
})
}

module.exports = async function () {
const defaultExport = async function () {
const activate = ({ newValue, oldValue }) => {
if (newValue === oldValue) return

Expand All @@ -56,3 +56,5 @@ module.exports = async function () {
createToggler(CONFIG_KEY, activate)
logger.info(`[automatic gc] ${store.get(CONFIG_KEY, true) ? 'enabled' : 'disabled'}`)
}

module.exports = defaultExport
30 changes: 19 additions & 11 deletions src/common/consts.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
const os = require('os')
const packageJson = require('../../package.json')

module.exports = Object.freeze({
IS_MAC: os.platform() === 'darwin',
IS_WIN: os.platform() === 'win32',
IS_APPIMAGE: typeof process.env.APPIMAGE !== 'undefined',
VERSION: packageJson.version,
ELECTRON_VERSION: process.versions.electron,
KUBO_VERSION: packageJson.dependencies.kubo,
COUNTLY_KEY: process.env.NODE_ENV === 'development'
? '6b00e04fa5370b1ce361d2f24a09c74254eee382'
: '47fbb3db3426d2ae32b3b65fe40c564063d8b55d'
})
const IS_MAC = os.platform() === 'darwin'
const IS_WIN = os.platform() === 'win32'
const IS_APPIMAGE = typeof process.env.APPIMAGE !== 'undefined'
const VERSION = packageJson.version
const ELECTRON_VERSION = process.versions.electron
const KUBO_VERSION = packageJson.dependencies.kubo
const COUNTLY_KEY = process.env.NODE_ENV === 'development'
? '6b00e04fa5370b1ce361d2f24a09c74254eee382'
: '47fbb3db3426d2ae32b3b65fe40c564063d8b55d'

module.exports = {
IS_MAC,
IS_WIN,
IS_APPIMAGE,
VERSION,
ELECTRON_VERSION,
KUBO_VERSION,
COUNTLY_KEY
}
6 changes: 4 additions & 2 deletions src/common/logger.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const { join } = require('path')
const { app } = require('electron')
const { performance } = require('perf_hooks')
const Countly = require('countly-sdk-nodejs')
const { analyticsKeys } = require('../analytics/keys')
const { analyticsKeys } = require('../analytics/keys.js')

/**
* @typedef {import('countly-sdk-nodejs').AnalyticsKeys} AnalyticsKeys
Expand Down Expand Up @@ -75,7 +75,7 @@ const addAnalyticsEvent = ({ withAnalytics, ...countlyOptions }) => {
}
}

module.exports = Object.freeze({
const defaultExport = Object.freeze({
/**
*
* @param {string} msg
Expand Down Expand Up @@ -153,3 +153,5 @@ module.exports = Object.freeze({
*/
fileLogger: logger
})

module.exports = defaultExport
4 changes: 2 additions & 2 deletions src/common/notify.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function notifyError ({ title, body = '' }) {
})
}

module.exports = Object.freeze({
module.exports = {
notify,
notifyError
})
}
2 changes: 1 addition & 1 deletion src/common/store.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { app } = require('electron')
const Store = require('electron-store')

const logger = require('./logger')
const logger = require('./logger.js')

const { fileLogger } = logger

Expand Down
2 changes: 1 addition & 1 deletion src/context.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// @ts-check
const pDefer = require('p-defer')
const logger = require('./common/logger')
const logger = require('./common/logger.js')

/**
* @typedef { 'tray' | 'tray.update-menu' | 'countlyDeviceId' | 'manualCheckForUpdates' | 'startIpfs' | 'stopIpfs' | 'restartIpfs' | 'getIpfsd' | 'launchWebUI' | 'webui' | 'splashScreen' | 'i18n.initDone' } ContextProperties
Expand Down
10 changes: 5 additions & 5 deletions src/custom-ipfs-binary.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
const i18n = require('i18next')
const { app, dialog } = require('electron')
const { showDialog } = require('./dialogs')
const logger = require('./common/logger')
const store = require('./common/store')
const dock = require('./utils/dock')
const getCtx = require('./context')
const { showDialog } = require('./dialogs/index.js')
const logger = require('./common/logger.js')
const store = require('./common/store.js')
const dock = require('./utils/dock.js')
const getCtx = require('./context.js')

const SETTINGS_KEY = 'binaryPath'

Expand Down
10 changes: 5 additions & 5 deletions src/daemon/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ const { multiaddr } = require('multiaddr')
const http = require('http')
const portfinder = require('portfinder')
const { shell } = require('electron')
const store = require('../common/store')
const logger = require('../common/logger')
const dialogs = require('./dialogs')
const store = require('../common/store.js')
const logger = require('../common/logger.js')
const dialogs = require('./dialogs.js')

/**
* Get repository configuration file path.
Expand Down Expand Up @@ -481,12 +481,12 @@ function checkRepositoryAndConfiguration (ipfsd) {
}
}

module.exports = Object.freeze({
module.exports = {
configExists,
apiFileExists,
removeApiFile,
applyDefaults,
migrateConfig,
checkPorts,
checkRepositoryAndConfiguration
})
}
10 changes: 5 additions & 5 deletions src/daemon/daemon.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
const Ctl = require('ipfsd-ctl')
const logger = require('../common/logger')
const { getCustomBinary } = require('../custom-ipfs-binary')
const { applyDefaults, migrateConfig, checkPorts, configExists, checkRepositoryAndConfiguration, removeApiFile, apiFileExists } = require('./config')
const showMigrationPrompt = require('./migration-prompt')
const dialogs = require('./dialogs')
const logger = require('../common/logger.js')
const { getCustomBinary } = require('../custom-ipfs-binary.js')
const { applyDefaults, migrateConfig, checkPorts, configExists, checkRepositoryAndConfiguration, removeApiFile, apiFileExists } = require('./config.js')
const showMigrationPrompt = require('./migration-prompt.js')
const dialogs = require('./dialogs.js')
const { app } = require('electron')

/**
Expand Down
2 changes: 1 addition & 1 deletion src/daemon/dialogs.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
const { BrowserWindow } = require('electron')
const i18n = require('i18next')
const { showDialog } = require('../dialogs')
const { showDialog } = require('../dialogs/index.js')

function hideOtherWindows () {
// Hide other windows so the user focus in on the dialog
Expand Down
Loading
Loading