aboutsummaryrefslogtreecommitdiffstats
path: root/src/features
diff options
context:
space:
mode:
authorLibravatar vantezzen <hello@vantezzen.io>2019-10-09 09:48:41 +0200
committerLibravatar vantezzen <hello@vantezzen.io>2019-10-09 09:48:41 +0200
commitda9e8a3d5b11efcc8eeee325c0ac7eb7840f75af (patch)
treea189f4566c6380b86aeb04b9307aea23fc6e14d7 /src/features
parentUpdate zh-HANT.json (diff)
parentUpdate CHANGELOG.md (diff)
downloadferdium-app-da9e8a3d5b11efcc8eeee325c0ac7eb7840f75af.tar.gz
ferdium-app-da9e8a3d5b11efcc8eeee325c0ac7eb7840f75af.tar.zst
ferdium-app-da9e8a3d5b11efcc8eeee325c0ac7eb7840f75af.zip
Merge branch 'master' of https://github.com/meetfranz/franz into franz-5.4.0
Diffstat (limited to 'src/features')
-rw-r--r--src/features/delayApp/index.js4
-rw-r--r--src/features/webControls/components/WebControls.js59
-rw-r--r--src/features/webControls/constants.js1
-rw-r--r--src/features/webControls/containers/WebControlsScreen.js13
-rw-r--r--src/features/workspaces/components/WorkspaceDrawer.js4
-rw-r--r--src/features/workspaces/components/WorkspaceDrawerItem.js4
6 files changed, 78 insertions, 7 deletions
diff --git a/src/features/delayApp/index.js b/src/features/delayApp/index.js
index a80ea4c72..5cc6c9506 100644
--- a/src/features/delayApp/index.js
+++ b/src/features/delayApp/index.js
@@ -57,12 +57,12 @@ export default function init(stores) {
57 57
58 setVisibility(true); 58 setVisibility(true);
59 59
60 timeLastDelay = moment();
61 shownAfterLaunch = true;
62 60
63 setTimeout(() => { 61 setTimeout(() => {
64 debug('Resetting app delay'); 62 debug('Resetting app delay');
65 63
64 shownAfterLaunch = true;
65 timeLastDelay = moment();
66 setVisibility(false); 66 setVisibility(false);
67 }, config.delayDuration + 1000); // timer needs to be able to hit 0 67 }, config.delayDuration + 1000); // timer needs to be able to hit 0
68 } else { 68 } else {
diff --git a/src/features/webControls/components/WebControls.js b/src/features/webControls/components/WebControls.js
index 03f601a17..c6331073b 100644
--- a/src/features/webControls/components/WebControls.js
+++ b/src/features/webControls/components/WebControls.js
@@ -3,11 +3,35 @@ import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import injectSheet from 'react-jss'; 4import injectSheet from 'react-jss';
5import { Icon } from '@meetfranz/ui'; 5import { Icon } from '@meetfranz/ui';
6import { defineMessages, intlShape } from 'react-intl';
6 7
7import { 8import {
8 mdiReload, mdiArrowRight, mdiArrowLeft, mdiHomeOutline, 9 mdiReload, mdiArrowRight, mdiArrowLeft, mdiHomeOutline, mdiEarth,
9} from '@mdi/js'; 10} from '@mdi/js';
10 11
12const messages = defineMessages({
13 goHome: {
14 id: 'webControls.goHome',
15 defaultMessage: '!!!Home',
16 },
17 openInBrowser: {
18 id: 'webControls.openInBrowser',
19 defaultMessage: '!!!Open in Browser',
20 },
21 back: {
22 id: 'webControls.back',
23 defaultMessage: '!!!Back',
24 },
25 forward: {
26 id: 'webControls.forward',
27 defaultMessage: '!!!Forward',
28 },
29 reload: {
30 id: 'webControls.reload',
31 defaultMessage: '!!!Reload',
32 },
33});
34
11const styles = theme => ({ 35const styles = theme => ({
12 root: { 36 root: {
13 background: theme.colorBackground, 37 background: theme.colorBackground,
@@ -18,7 +42,7 @@ const styles = theme => ({
18 display: 'flex', 42 display: 'flex',
19 flexDirection: 'row', 43 flexDirection: 'row',
20 alignItems: 'center', 44 alignItems: 'center',
21 padding: [0, 20], 45 padding: [0, 10],
22 46
23 '& + div': { 47 '& + div': {
24 height: 'calc(100% - 50px)', 48 height: 'calc(100% - 50px)',
@@ -45,7 +69,7 @@ const styles = theme => ({
45 input: { 69 input: {
46 marginBottom: 0, 70 marginBottom: 0,
47 height: 'auto', 71 height: 'auto',
48 marginLeft: 10, 72 margin: [0, 10],
49 flex: 1, 73 flex: 1,
50 border: 0, 74 border: 0,
51 padding: [4, 10], 75 padding: [4, 10],
@@ -68,10 +92,15 @@ class WebControls extends Component {
68 canGoForward: PropTypes.bool.isRequired, 92 canGoForward: PropTypes.bool.isRequired,
69 goForward: PropTypes.func.isRequired, 93 goForward: PropTypes.func.isRequired,
70 reload: PropTypes.func.isRequired, 94 reload: PropTypes.func.isRequired,
95 openInBrowser: PropTypes.func.isRequired,
71 url: PropTypes.string.isRequired, 96 url: PropTypes.string.isRequired,
72 navigate: PropTypes.func.isRequired, 97 navigate: PropTypes.func.isRequired,
73 } 98 }
74 99
100 static contextTypes = {
101 intl: intlShape,
102 };
103
75 static getDerivedStateFromProps(props, state) { 104 static getDerivedStateFromProps(props, state) {
76 const { url } = props; 105 const { url } = props;
77 const { editUrl } = state; 106 const { editUrl } = state;
@@ -100,6 +129,7 @@ class WebControls extends Component {
100 canGoForward, 129 canGoForward,
101 goForward, 130 goForward,
102 reload, 131 reload,
132 openInBrowser,
103 url, 133 url,
104 navigate, 134 navigate,
105 } = this.props; 135 } = this.props;
@@ -109,12 +139,16 @@ class WebControls extends Component {
109 editUrl, 139 editUrl,
110 } = this.state; 140 } = this.state;
111 141
142 const { intl } = this.context;
143
112 return ( 144 return (
113 <div className={classes.root}> 145 <div className={classes.root}>
114 <button 146 <button
115 onClick={goHome} 147 onClick={goHome}
116 type="button" 148 type="button"
117 className={classes.button} 149 className={classes.button}
150 data-tip={intl.formatMessage(messages.goHome)}
151 data-place="bottom"
118 > 152 >
119 <Icon 153 <Icon
120 icon={mdiHomeOutline} 154 icon={mdiHomeOutline}
@@ -126,6 +160,8 @@ class WebControls extends Component {
126 type="button" 160 type="button"
127 className={classes.button} 161 className={classes.button}
128 disabled={!canGoBack} 162 disabled={!canGoBack}
163 data-tip={intl.formatMessage(messages.back)}
164 data-place="bottom"
129 > 165 >
130 <Icon 166 <Icon
131 icon={mdiArrowLeft} 167 icon={mdiArrowLeft}
@@ -137,6 +173,8 @@ class WebControls extends Component {
137 type="button" 173 type="button"
138 className={classes.button} 174 className={classes.button}
139 disabled={!canGoForward} 175 disabled={!canGoForward}
176 data-tip={intl.formatMessage(messages.forward)}
177 data-place="bottom"
140 > 178 >
141 <Icon 179 <Icon
142 icon={mdiArrowRight} 180 icon={mdiArrowRight}
@@ -147,6 +185,8 @@ class WebControls extends Component {
147 onClick={reload} 185 onClick={reload}
148 type="button" 186 type="button"
149 className={classes.button} 187 className={classes.button}
188 data-tip={intl.formatMessage(messages.reload)}
189 data-place="bottom"
150 > 190 >
151 <Icon 191 <Icon
152 icon={mdiReload} 192 icon={mdiReload}
@@ -160,6 +200,7 @@ class WebControls extends Component {
160 inputUrl: event.target.value, 200 inputUrl: event.target.value,
161 })} 201 })}
162 onFocus={(event) => { 202 onFocus={(event) => {
203 console.log('on focus event');
163 event.target.select(); 204 event.target.select();
164 this.setState({ 205 this.setState({
165 editUrl: true, 206 editUrl: true,
@@ -182,6 +223,18 @@ class WebControls extends Component {
182 }} 223 }}
183 ref={this.inputRef} 224 ref={this.inputRef}
184 /> 225 />
226 <button
227 onClick={openInBrowser}
228 type="button"
229 className={classes.button}
230 data-tip={intl.formatMessage(messages.openInBrowser)}
231 data-place="bottom"
232 >
233 <Icon
234 icon={mdiEarth}
235 className={classes.icon}
236 />
237 </button>
185 </div> 238 </div>
186 ); 239 );
187 } 240 }
diff --git a/src/features/webControls/constants.js b/src/features/webControls/constants.js
new file mode 100644
index 000000000..270a3568e
--- /dev/null
+++ b/src/features/webControls/constants.js
@@ -0,0 +1 @@
export const CUSTOM_WEBSITE_ID = 'franz-custom-website';
diff --git a/src/features/webControls/containers/WebControlsScreen.js b/src/features/webControls/containers/WebControlsScreen.js
index 1452d5a3d..cada01a6f 100644
--- a/src/features/webControls/containers/WebControlsScreen.js
+++ b/src/features/webControls/containers/WebControlsScreen.js
@@ -9,7 +9,6 @@ import Service from '../../../models/Service';
9 9
10const URL_EVENTS = [ 10const URL_EVENTS = [
11 'load-commit', 11 'load-commit',
12 // 'dom-ready',
13 'will-navigate', 12 'will-navigate',
14 'did-navigate', 13 'did-navigate',
15 'did-navigate-in-page', 14 'did-navigate-in-page',
@@ -97,11 +96,20 @@ class WebControlsScreen extends Component {
97 this.url = url; 96 this.url = url;
98 } 97 }
99 98
99 openInBrowser() {
100 const { openExternalUrl } = this.props.actions.app;
101
102 if (!this.webview) return;
103
104 openExternalUrl({ url: this.url });
105 }
106
100 render() { 107 render() {
101 return ( 108 return (
102 <WebControls 109 <WebControls
103 goHome={() => this.goHome()} 110 goHome={() => this.goHome()}
104 reload={() => this.reload()} 111 reload={() => this.reload()}
112 openInBrowser={() => this.openInBrowser()}
105 canGoBack={this.canGoBack} 113 canGoBack={this.canGoBack}
106 goBack={() => this.goBack()} 114 goBack={() => this.goBack()}
107 canGoForward={this.canGoForward} 115 canGoForward={this.canGoForward}
@@ -121,6 +129,9 @@ WebControlsScreen.wrappedComponent.propTypes = {
121 services: PropTypes.instanceOf(ServicesStore).isRequired, 129 services: PropTypes.instanceOf(ServicesStore).isRequired,
122 }).isRequired, 130 }).isRequired,
123 actions: PropTypes.shape({ 131 actions: PropTypes.shape({
132 app: PropTypes.shape({
133 openExternalUrl: PropTypes.func.isRequired,
134 }).isRequired,
124 service: PropTypes.shape({ 135 service: PropTypes.shape({
125 reloadActive: PropTypes.func.isRequired, 136 reloadActive: PropTypes.func.isRequired,
126 }).isRequired, 137 }).isRequired,
diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js
index f4ee89a14..e991b9909 100644
--- a/src/features/workspaces/components/WorkspaceDrawer.js
+++ b/src/features/workspaces/components/WorkspaceDrawer.js
@@ -199,8 +199,9 @@ class WorkspaceDrawer extends Component {
199 }} 199 }}
200 services={getServicesForWorkspace(null)} 200 services={getServicesForWorkspace(null)}
201 isActive={actualWorkspace == null} 201 isActive={actualWorkspace == null}
202 shortcutIndex={0}
202 /> 203 />
203 {workspaces.map(workspace => ( 204 {workspaces.map((workspace, index) => (
204 <WorkspaceDrawerItem 205 <WorkspaceDrawerItem
205 key={workspace.id} 206 key={workspace.id}
206 name={workspace.name} 207 name={workspace.name}
@@ -212,6 +213,7 @@ class WorkspaceDrawer extends Component {
212 }} 213 }}
213 onContextMenuEditClick={() => workspaceActions.edit({ workspace })} 214 onContextMenuEditClick={() => workspaceActions.edit({ workspace })}
214 services={getServicesForWorkspace(workspace)} 215 services={getServicesForWorkspace(workspace)}
216 shortcutIndex={index + 1}
215 /> 217 />
216 ))} 218 ))}
217 <div 219 <div
diff --git a/src/features/workspaces/components/WorkspaceDrawerItem.js b/src/features/workspaces/components/WorkspaceDrawerItem.js
index 59a2144d3..18f424d8a 100644
--- a/src/features/workspaces/components/WorkspaceDrawerItem.js
+++ b/src/features/workspaces/components/WorkspaceDrawerItem.js
@@ -5,6 +5,7 @@ import { observer } from 'mobx-react';
5import injectSheet from 'react-jss'; 5import injectSheet from 'react-jss';
6import classnames from 'classnames'; 6import classnames from 'classnames';
7import { defineMessages, intlShape } from 'react-intl'; 7import { defineMessages, intlShape } from 'react-intl';
8import { ctrlKey } from '../../../environment';
8 9
9const { Menu } = remote; 10const { Menu } = remote;
10 11
@@ -69,6 +70,7 @@ class WorkspaceDrawerItem extends Component {
69 onClick: PropTypes.func.isRequired, 70 onClick: PropTypes.func.isRequired,
70 services: PropTypes.arrayOf(PropTypes.string).isRequired, 71 services: PropTypes.arrayOf(PropTypes.string).isRequired,
71 onContextMenuEditClick: PropTypes.func, 72 onContextMenuEditClick: PropTypes.func,
73 shortcutIndex: PropTypes.number.isRequired,
72 }; 74 };
73 75
74 static defaultProps = { 76 static defaultProps = {
@@ -87,6 +89,7 @@ class WorkspaceDrawerItem extends Component {
87 onClick, 89 onClick,
88 onContextMenuEditClick, 90 onContextMenuEditClick,
89 services, 91 services,
92 shortcutIndex,
90 } = this.props; 93 } = this.props;
91 const { intl } = this.context; 94 const { intl } = this.context;
92 95
@@ -112,6 +115,7 @@ class WorkspaceDrawerItem extends Component {
112 onContextMenu={() => ( 115 onContextMenu={() => (
113 onContextMenuEditClick && contextMenu.popup(remote.getCurrentWindow()) 116 onContextMenuEditClick && contextMenu.popup(remote.getCurrentWindow())
114 )} 117 )}
118 data-tip={`${shortcutIndex <= 9 ? `(${ctrlKey}+Alt+${shortcutIndex})` : ''}`}
115 > 119 >
116 <span 120 <span
117 className={classnames([ 121 className={classnames([