add option to swtich between blank page and homepage when app launches

This commit is contained in:
jjavierdguezas 2021-05-17 21:26:15 +02:00 committed by Manoj Vivek
parent c0409c3d22
commit 2e80b227c7
8 changed files with 89 additions and 13 deletions

View file

@ -52,6 +52,7 @@ export const TOGGLE_DEVICE_DESIGN_MODE = 'TOGGLE_DEVICE_DESIGN_MODE';
export const SET_HEADER_VISIBILITY = 'SET_HEADER_VISIBILITY';
export const SET_LEFT_PANE_VISIBILITY = 'SET_LEFT_PANE_VISIBILITY';
export const SET_HOVERED_LINK = 'SET_HOVERED_LINK';
export const SET_STARTUP_PAGE = 'SET_STARTUP_PAGE';
export function newAddress(address) {
return {
@ -928,3 +929,16 @@ export function setHoveredLink(url) {
url,
};
}
export function setStartupPage(value: 'BLANK' | 'HOME') {
return {
type: SET_STARTUP_PAGE,
value,
};
}
export function changeStartupPage(value: 'BLANK' | 'HOME') {
return (dispatch: Dispatch, getState: RootStateType) => {
dispatch(setStartupPage(value));
};
}

View file

@ -16,7 +16,7 @@ import {DEVTOOLS_MODES} from '../../constants/previewerLayouts';
import {LIGHT_THEME, DARK_THEME} from '../../constants/theme';
import ScreenShotSavePreference from '../ScreenShotSavePreference/index';
import {userPreferenceSettings} from '../../settings/userPreferenceSettings';
import {SCREENSHOT_MECHANISM} from '../../constants/values';
import {SCREENSHOT_MECHANISM, STARTUP_PAGE} from '../../constants/values';
import {notifyPermissionPreferenceChanged} from '../../utils/permissionUtils.js';
import {PERMISSION_MANAGEMENT_OPTIONS} from '../../constants/permissionsManagement';
import {setTheme} from '../../actions/browser';
@ -37,6 +37,17 @@ function UserPreference({
[themeSource]
);
const startupPageOptions = [
{
label: 'Homepage',
value: STARTUP_PAGE.HOME,
},
{
label: 'Blank Page',
value: STARTUP_PAGE.BLANK,
},
];
const onChange = (field, value) => {
onUserPreferencesChange({...userPreferences, [field]: value});
};
@ -271,6 +282,29 @@ function UserPreference({
</p>
</div>
</div>
<div className={commonClasses.sidebarContentSectionContainer}>
<div
className={cx(
commonClasses.flexAlignVerticalMiddle,
classes.sectionHeader
)}
>
Startup Page
</div>
<div className={classes.marginTop}>
<Select
options={startupPageOptions}
value={
startupPageOptions.find(
x => x.value === userPreferences?.startupPage
) || startupPageOptions[0]
}
onChange={val => {
onChange('startupPage', val.value);
}}
/>
</div>
</div>
<div className={commonClasses.sidebarContentSectionContainer}>
<div
className={cx(

View file

@ -12,3 +12,8 @@ export const DESIGN_MODE_JS_VALUES = {
ON: 'on',
OFF: 'off',
};
export const STARTUP_PAGE = {
BLANK: 'BLANK',
HOME: 'HOME',
};

View file

@ -32,6 +32,7 @@ import installExtension, {
import fs from 'fs';
import MenuBuilder from './menu';
import {USER_PREFERENCES, NETWORK_CONFIGURATION} from './constants/settingKeys';
import {STARTUP_PAGE} from './constants/values';
import {migrateDeviceSchema} from './settings/migration';
import {DEVTOOLS_MODES} from './constants/previewerLayouts';
import {initMainShortcutManager} from './shortcut-manager/main-shortcut-manager';
@ -54,6 +55,7 @@ import appMetadata from './services/db/appMetadata';
import {convertToProxyConfig} from './utils/proxyUtils';
import {PERMISSION_MANAGEMENT_OPTIONS} from './constants/permissionsManagement';
import {endSession, startSession} from './utils/analytics';
import {getStartupPage, getLastOpenedAddress} from './utils/navigatorUtils';
const path = require('path');
const URL = require('url').URL;
@ -307,14 +309,6 @@ function getUserPreferences(): UserPreferenceType {
return settings.get(USER_PREFERENCES) || {};
}
function getLastOpenedAddress() {
return settings.get(LAST_OPENED_ADDRESS) || getHomepage();
}
function getHomepage() {
return settings.get(HOME_PAGE) || 'https://www.google.com/';
}
const createWindow = async () => {
appMetadata.incrementOpenCount();
hasActiveWindow = true;
@ -393,7 +387,7 @@ const createWindow = async () => {
openUrl(
getUserPreferences().reopenLastAddress
? getLastOpenedAddress()
: getHomepage()
: getStartupPage()
);
mainWindow.show();
}

View file

@ -31,6 +31,7 @@ import {
SET_HEADER_VISIBILITY,
SET_LEFT_PANE_VISIBILITY,
SET_HOVERED_LINK,
SET_STARTUP_PAGE,
} from '../actions/browser';
import {
CHANGE_ACTIVE_THROTTLING_PROFILE,
@ -59,6 +60,7 @@ import {
getHomepage,
saveHomepage,
saveLastOpenedAddress,
saveStartupPage,
} from '../utils/navigatorUtils';
import {updateExistingUrl} from '../services/searchUrlSuggestions';
import {normalizeZoomLevel} from '../utils/browserUtils';
@ -601,6 +603,9 @@ export default function browser(
...state,
hoveredLink: action.url,
};
case SET_STARTUP_PAGE:
saveStartupPage(action.value);
return {...state};
default:
return state;
}

View file

@ -5,7 +5,7 @@ import {
NETWORK_CONFIGURATION,
LAYOUT,
} from '../constants/settingKeys';
import {SCREENSHOT_MECHANISM} from '../constants/values';
import {SCREENSHOT_MECHANISM, STARTUP_PAGE} from '../constants/values';
import {PERMISSION_MANAGEMENT_OPTIONS} from '../constants/permissionsManagement';
import {DARK_THEME} from '../constants/theme';
import {FLEXIGRID_LAYOUT} from '../constants/previewerLayouts';
@ -23,6 +23,16 @@ export function migrateDeviceSchema() {
_handlePermissionsDefaultPreferences();
_handleColorThemePreferences();
_handleLayout();
_ensureDefaultStartupPage();
}
function _ensureDefaultStartupPage() {
const userPreferences = settings.get(USER_PREFERENCES) || {};
const defaultStartupPage = userPreferences.startupPage;
if (defaultStartupPage != null) return;
userPreferences.startupPage = STARTUP_PAGE.HOME;
settings.set(USER_PREFERENCES, userPreferences);
}
function _ensureDefaultNetworkConfig() {

View file

@ -1,5 +1,7 @@
import settings from 'electron-settings';
import path from 'path';
import {STARTUP_PAGE} from '../constants/values';
import {USER_PREFERENCES} from '../constants/settingKeys';
const HOME_PAGE = 'HOME_PAGE';
const LAST_OPENED_ADDRESS = 'LAST_OPENED_ADDRESS';
@ -17,5 +19,17 @@ export function getHomepage() {
}
export function getLastOpenedAddress() {
return settings.get(LAST_OPENED_ADDRESS) || getHomepage();
return settings.get(LAST_OPENED_ADDRESS) || getStartupPage();
}
export function getStartupPage() {
const startupPage = settings.get(USER_PREFERENCES).startupPage;
if (startupPage === STARTUP_PAGE.BLANK) return 'about:blank';
return getHomepage();
}
export function saveStartupPage(option: 'BLANK' | 'HOME') {
const preferences = settings.get(USER_PREFERENCES);
preferences.startupPage = option;
settings.set(USER_PREFERENCES, preferences);
}

View file

@ -10,7 +10,7 @@ export function getHostFromURL(url: String) {
}
export const normalize = (address: string) => {
if (address.indexOf('://') === -1) {
if (address !== 'about:blank' && address.indexOf('://') === -1) {
let protocol = 'https://';
if (
address.startsWith('localhost') ||