mirror of
https://github.com/heyman/heynote.git
synced 2024-11-22 07:54:11 +01:00
Add bufferPath to config, support bufferPath symlink (#27)
* Add bufferPath to config, support bufferPath symlink * defaultPath before checking realpath * Move code for retrieving buffer path into its own file * Do the realpathSync() call for the whole final file path, to allow the buffer file to be a symlink --------- Co-authored-by: Jonatan Heyman <jonatan@heyman.info>
This commit is contained in:
parent
d1ea17c197
commit
f532c7939b
@ -28,6 +28,7 @@ const schema = {
|
|||||||
"allowBetaVersions": {type: "boolean", default: false},
|
"allowBetaVersions": {type: "boolean", default: false},
|
||||||
"enableGlobalHotkey": {type: "boolean", default: false},
|
"enableGlobalHotkey": {type: "boolean", default: false},
|
||||||
"globalHotkey": {type: "string", default: "CmdOrCtrl+Shift+H"},
|
"globalHotkey": {type: "string", default: "CmdOrCtrl+Shift+H"},
|
||||||
|
"bufferPath" : {type: "string", default: ""},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -51,6 +52,7 @@ const defaults = {
|
|||||||
allowBetaVersions: false,
|
allowBetaVersions: false,
|
||||||
enableGlobalHotkey: false,
|
enableGlobalHotkey: false,
|
||||||
globalHotkey: "CmdOrCtrl+Shift+H",
|
globalHotkey: "CmdOrCtrl+Shift+H",
|
||||||
|
bufferPath: "",
|
||||||
},
|
},
|
||||||
theme: "system",
|
theme: "system",
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
const os = require('os');
|
const os = require('os');
|
||||||
|
|
||||||
|
export const isDev = !!process.env.VITE_DEV_SERVER_URL
|
||||||
|
|
||||||
export const isMac = os.platform() === "darwin";
|
export const isMac = os.platform() === "darwin";
|
||||||
export const isWindows = os.platform() === "win32";
|
export const isWindows = os.platform() === "win32";
|
||||||
export const isLinux = os.platform() === "linux";
|
export const isLinux = os.platform() === "linux";
|
||||||
|
|
||||||
|
23
electron/main/buffer.js
Normal file
23
electron/main/buffer.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import fs from "fs"
|
||||||
|
import { join } from "path"
|
||||||
|
import { app } from "electron"
|
||||||
|
import CONFIG from "../config"
|
||||||
|
import { isDev } from "../detect-platform"
|
||||||
|
|
||||||
|
|
||||||
|
export function getBufferFilePath() {
|
||||||
|
let defaultPath = app.getPath("userData")
|
||||||
|
let configPath = CONFIG.get("settings.bufferPath")
|
||||||
|
let bufferPath = configPath.length ? configPath : defaultPath
|
||||||
|
let bufferFilePath = join(bufferPath, isDev ? "buffer-dev.txt" : "buffer.txt")
|
||||||
|
try {
|
||||||
|
// use realpathSync to resolve a potential symlink
|
||||||
|
return fs.realpathSync(bufferFilePath)
|
||||||
|
} catch (err) {
|
||||||
|
// realpathSync will fail if the file does not exist, but that doesn't matter since the file will be created
|
||||||
|
if (err.code !== "ENOENT") {
|
||||||
|
throw err
|
||||||
|
}
|
||||||
|
return bufferFilePath
|
||||||
|
}
|
||||||
|
}
|
@ -8,9 +8,10 @@ import { initialContent, initialDevContent } from '../initial-content'
|
|||||||
import { WINDOW_CLOSE_EVENT, SETTINGS_CHANGE_EVENT } from '../constants';
|
import { WINDOW_CLOSE_EVENT, SETTINGS_CHANGE_EVENT } from '../constants';
|
||||||
import CONFIG from "../config"
|
import CONFIG from "../config"
|
||||||
import { onBeforeInputEvent } from "../keymap"
|
import { onBeforeInputEvent } from "../keymap"
|
||||||
import { isMac } from '../detect-platform';
|
import { isDev } from '../detect-platform';
|
||||||
import { initializeAutoUpdate, checkForUpdates } from './auto-update';
|
import { initializeAutoUpdate, checkForUpdates } from './auto-update';
|
||||||
import { fixElectronCors } from './cors';
|
import { fixElectronCors } from './cors';
|
||||||
|
import { getBufferFilePath } from './buffer';
|
||||||
|
|
||||||
|
|
||||||
// The built directory structure
|
// The built directory structure
|
||||||
@ -54,7 +55,6 @@ export let win: BrowserWindow | null = null
|
|||||||
const preload = join(__dirname, '../preload/index.js')
|
const preload = join(__dirname, '../preload/index.js')
|
||||||
const url = process.env.VITE_DEV_SERVER_URL
|
const url = process.env.VITE_DEV_SERVER_URL
|
||||||
const indexHtml = join(process.env.DIST, 'index.html')
|
const indexHtml = join(process.env.DIST, 'index.html')
|
||||||
const isDev = !!process.env.VITE_DEV_SERVER_URL
|
|
||||||
|
|
||||||
let currentKeymap = CONFIG.get("settings.keymap")
|
let currentKeymap = CONFIG.get("settings.keymap")
|
||||||
let contentSaved = false
|
let contentSaved = false
|
||||||
@ -210,9 +210,8 @@ ipcMain.handle('dark-mode:set', (event, mode) => {
|
|||||||
|
|
||||||
ipcMain.handle('dark-mode:get', () => nativeTheme.themeSource)
|
ipcMain.handle('dark-mode:get', () => nativeTheme.themeSource)
|
||||||
|
|
||||||
const bufferPath = isDev ? join(app.getPath("userData"), "buffer-dev.txt") : join(app.getPath("userData"), "buffer.txt")
|
ipcMain.handle('buffer-content:load', async () => {
|
||||||
|
let bufferPath = getBufferFilePath()
|
||||||
ipcMain.handle('buffer-content:load', async () => {
|
|
||||||
if (jetpack.exists(bufferPath) === "file") {
|
if (jetpack.exists(bufferPath) === "file") {
|
||||||
return await jetpack.read(bufferPath, 'utf8')
|
return await jetpack.read(bufferPath, 'utf8')
|
||||||
} else {
|
} else {
|
||||||
@ -221,7 +220,7 @@ ipcMain.handle('buffer-content:load', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
async function save(content) {
|
async function save(content) {
|
||||||
return await jetpack.write(bufferPath, content, {
|
return await jetpack.write(getBufferFilePath(), content, {
|
||||||
atomic: true,
|
atomic: true,
|
||||||
mode: '600',
|
mode: '600',
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user