diff options
author | vantezzen <hello@vantezzen.io> | 2019-10-09 09:48:41 +0200 |
---|---|---|
committer | vantezzen <hello@vantezzen.io> | 2019-10-09 09:48:41 +0200 |
commit | da9e8a3d5b11efcc8eeee325c0ac7eb7840f75af (patch) | |
tree | a189f4566c6380b86aeb04b9307aea23fc6e14d7 /src/features | |
parent | Update zh-HANT.json (diff) | |
parent | Update CHANGELOG.md (diff) | |
download | ferdium-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.js | 4 | ||||
-rw-r--r-- | src/features/webControls/components/WebControls.js | 59 | ||||
-rw-r--r-- | src/features/webControls/constants.js | 1 | ||||
-rw-r--r-- | src/features/webControls/containers/WebControlsScreen.js | 13 | ||||
-rw-r--r-- | src/features/workspaces/components/WorkspaceDrawer.js | 4 | ||||
-rw-r--r-- | src/features/workspaces/components/WorkspaceDrawerItem.js | 4 |
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'; | |||
3 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
4 | import injectSheet from 'react-jss'; | 4 | import injectSheet from 'react-jss'; |
5 | import { Icon } from '@meetfranz/ui'; | 5 | import { Icon } from '@meetfranz/ui'; |
6 | import { defineMessages, intlShape } from 'react-intl'; | ||
6 | 7 | ||
7 | import { | 8 | import { |
8 | mdiReload, mdiArrowRight, mdiArrowLeft, mdiHomeOutline, | 9 | mdiReload, mdiArrowRight, mdiArrowLeft, mdiHomeOutline, mdiEarth, |
9 | } from '@mdi/js'; | 10 | } from '@mdi/js'; |
10 | 11 | ||
12 | const 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 | |||
11 | const styles = theme => ({ | 35 | const 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 | ||
10 | const URL_EVENTS = [ | 10 | const 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'; | |||
5 | import injectSheet from 'react-jss'; | 5 | import injectSheet from 'react-jss'; |
6 | import classnames from 'classnames'; | 6 | import classnames from 'classnames'; |
7 | import { defineMessages, intlShape } from 'react-intl'; | 7 | import { defineMessages, intlShape } from 'react-intl'; |
8 | import { ctrlKey } from '../../../environment'; | ||
8 | 9 | ||
9 | const { Menu } = remote; | 10 | const { 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([ |