mirror of
https://github.com/Llewellynvdm/nativefier.git
synced 2025-01-11 01:32:04 +00:00
Merge pull request #149 from garymoon/development
Make app data folder consistent per URL and allow clearing of app data from menu
This commit is contained in:
commit
875149bcf7
@ -55,7 +55,7 @@ function createMainWindow(options, onAppQuit, setDockBadge) {
|
|||||||
mainWindow.webContents.send('change-zoom', currentZoom);
|
mainWindow.webContents.send('change-zoom', currentZoom);
|
||||||
};
|
};
|
||||||
|
|
||||||
createMenu(options.nativefierVersion, onAppQuit, mainWindow.webContents.goBack, mainWindow.webContents.goForward, onZoomIn, onZoomOut, mainWindow.webContents.getURL);
|
createMenu(options.nativefierVersion, onAppQuit, onZoomIn, onZoomOut, mainWindow, options);
|
||||||
initContextMenu(mainWindow);
|
initContextMenu(mainWindow);
|
||||||
|
|
||||||
if (options.userAgent) {
|
if (options.userAgent) {
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
import {Menu, shell, clipboard} from 'electron';
|
import {Menu, shell, clipboard, dialog} from 'electron';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {string} nativefierVersion
|
* @param {string} nativefierVersion
|
||||||
* @param {function} onQuit should be from app.quit
|
* @param {function} onQuit should be from app.quit
|
||||||
* @param {function} onGoBack
|
|
||||||
* @param {electron} onGoForward
|
|
||||||
* @param {function} onZoomIn
|
* @param {function} onZoomIn
|
||||||
* @param {function} onZoomOut
|
* @param {function} onZoomOut
|
||||||
* @param {function} getUrl
|
* @param {{}}} mainWindow
|
||||||
|
* @param {{}}} options
|
||||||
*/
|
*/
|
||||||
function createMenu(nativefierVersion, onQuit, onGoBack, onGoForward, onZoomIn, onZoomOut, getUrl) {
|
function createMenu(nativefierVersion, onQuit, onZoomIn, onZoomOut, mainWindow, options) {
|
||||||
if (Menu.getApplicationMenu()) {
|
if (Menu.getApplicationMenu()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -46,7 +45,7 @@ function createMenu(nativefierVersion, onQuit, onGoBack, onGoForward, onZoomIn,
|
|||||||
label: 'Copy Current URL',
|
label: 'Copy Current URL',
|
||||||
accelerator: 'CmdOrCtrl+C',
|
accelerator: 'CmdOrCtrl+C',
|
||||||
click: () => {
|
click: () => {
|
||||||
const currentURL = getUrl();
|
const currentURL = mainWindow.webContents.getURL();
|
||||||
clipboard.writeText(currentURL);
|
clipboard.writeText(currentURL);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -69,14 +68,14 @@ function createMenu(nativefierVersion, onQuit, onGoBack, onGoForward, onZoomIn,
|
|||||||
label: 'Back',
|
label: 'Back',
|
||||||
accelerator: 'CmdOrCtrl+[',
|
accelerator: 'CmdOrCtrl+[',
|
||||||
click: () => {
|
click: () => {
|
||||||
onGoBack();
|
mainWindow.webContents.goBack();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Forward',
|
label: 'Forward',
|
||||||
accelerator: 'CmdOrCtrl+]',
|
accelerator: 'CmdOrCtrl+]',
|
||||||
click: () => {
|
click: () => {
|
||||||
onGoForward();
|
mainWindow.webContents.goForward();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -129,6 +128,27 @@ function createMenu(nativefierVersion, onQuit, onGoBack, onGoForward, onZoomIn,
|
|||||||
onZoomOut();
|
onZoomOut();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: 'Clear App Data',
|
||||||
|
click: () => {
|
||||||
|
dialog.showMessageBox(mainWindow, {
|
||||||
|
type: 'warning',
|
||||||
|
buttons: ['Yes', 'Cancel'],
|
||||||
|
defaultId: 1,
|
||||||
|
title: 'Clear cache confirmation',
|
||||||
|
message: 'This will clear all data (cookies, local storage etc) from this app. Are you sure you wish to proceed?'
|
||||||
|
}, response => {
|
||||||
|
if (response === 0) {
|
||||||
|
mainWindow.webContents.session.clearStorageData({},
|
||||||
|
() => {
|
||||||
|
mainWindow.webContents.session.clearCache(() => {
|
||||||
|
mainWindow.loadURL(options.targetUrl);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: 'Toggle Window Developer Tools',
|
label: 'Toggle Window Developer Tools',
|
||||||
accelerator: (() => {
|
accelerator: (() => {
|
||||||
|
@ -24,15 +24,15 @@ function buildApp(src, dest, options, callback) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fs.writeFileSync(path.join(dest, '/nativefier.json'), JSON.stringify(appArgs));
|
fs.writeFileSync(path.join(dest, '/nativefier.json'), JSON.stringify(appArgs));
|
||||||
changeAppPackageJsonName(dest, appArgs.name);
|
changeAppPackageJsonName(dest, appArgs.name, appArgs.targetUrl);
|
||||||
callback();
|
callback();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeAppPackageJsonName(appPath, name) {
|
function changeAppPackageJsonName(appPath, name, url) {
|
||||||
const packageJsonPath = path.join(appPath, '/package.json');
|
const packageJsonPath = path.join(appPath, '/package.json');
|
||||||
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath));
|
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath));
|
||||||
packageJson.name = normalizeAppName(name);
|
packageJson.name = normalizeAppName(name, url);
|
||||||
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson));
|
fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,9 +57,11 @@ function selectAppArgs(options) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function normalizeAppName(appName) {
|
function normalizeAppName(appName, url) {
|
||||||
// use a simple 3 byte random string to prevent collision
|
// use a simple 3 byte random string to prevent collision
|
||||||
const postFixHash = crypto.randomBytes(3).toString('hex');
|
let hash = crypto.createHash('md5');
|
||||||
|
hash.update(url);
|
||||||
|
const postFixHash = hash.digest('hex').substring(0, 6);
|
||||||
const normalized = _.kebabCase(appName.toLowerCase());
|
const normalized = _.kebabCase(appName.toLowerCase());
|
||||||
return `${normalized}-nativefier-${postFixHash}`;
|
return `${normalized}-nativefier-${postFixHash}`;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user