mirror of
https://github.com/responsively-org/responsively-app
synced 2024-09-21 06:41:55 +00:00
add option to swtich between blank page and homepage when app launches
This commit is contained in:
parent
c0409c3d22
commit
2e80b227c7
8 changed files with 89 additions and 13 deletions
|
@ -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));
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -12,3 +12,8 @@ export const DESIGN_MODE_JS_VALUES = {
|
|||
ON: 'on',
|
||||
OFF: 'off',
|
||||
};
|
||||
|
||||
export const STARTUP_PAGE = {
|
||||
BLANK: 'BLANK',
|
||||
HOME: 'HOME',
|
||||
};
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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') ||
|
||||
|
|
Loading…
Reference in a new issue