aboutsummaryrefslogtreecommitdiffstats
path: root/src/features/workspaces
diff options
context:
space:
mode:
authorLibravatar Dominik Guzei <dominik.guzei@gmail.com>2019-04-03 15:14:45 +0200
committerLibravatar Dominik Guzei <dominik.guzei@gmail.com>2019-04-03 15:14:45 +0200
commitb75206e9a0a2c0c7ffb6052ec0f18c6b9ef5a825 (patch)
tree25dffecdc5de5d60a77fd4ec5a0cd506517710f1 /src/features/workspaces
parentadd workspace premium notice to dashboard (diff)
downloadferdium-app-b75206e9a0a2c0c7ffb6052ec0f18c6b9ef5a825.tar.gz
ferdium-app-b75206e9a0a2c0c7ffb6052ec0f18c6b9ef5a825.tar.zst
ferdium-app-b75206e9a0a2c0c7ffb6052ec0f18c6b9ef5a825.zip
add workspace feature info in drawer for free users
Diffstat (limited to 'src/features/workspaces')
-rw-r--r--src/features/workspaces/components/WorkspaceDrawer.js81
-rw-r--r--src/features/workspaces/components/WorkspacesDashboard.js15
-rw-r--r--src/features/workspaces/store.js2
3 files changed, 70 insertions, 28 deletions
diff --git a/src/features/workspaces/components/WorkspaceDrawer.js b/src/features/workspaces/components/WorkspaceDrawer.js
index 4d48c45ef..6eacafa68 100644
--- a/src/features/workspaces/components/WorkspaceDrawer.js
+++ b/src/features/workspaces/components/WorkspaceDrawer.js
@@ -2,8 +2,9 @@ import React, { Component } from 'react';
2import PropTypes from 'prop-types'; 2import 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 { defineMessages, intlShape } from 'react-intl'; 5import { defineMessages, FormattedHTMLMessage, intlShape } from 'react-intl';
6import { H1, Icon } from '@meetfranz/ui'; 6import { H1, Icon } from '@meetfranz/ui';
7import { Button } from '@meetfranz/forms/lib';
7import ReactTooltip from 'react-tooltip'; 8import ReactTooltip from 'react-tooltip';
8 9
9import WorkspaceDrawerItem from './WorkspaceDrawerItem'; 10import WorkspaceDrawerItem from './WorkspaceDrawerItem';
@@ -24,6 +25,14 @@ const messages = defineMessages({
24 id: 'workspaceDrawer.addWorkspaceTooltip', 25 id: 'workspaceDrawer.addWorkspaceTooltip',
25 defaultMessage: '!!!Add workspace', 26 defaultMessage: '!!!Add workspace',
26 }, 27 },
28 workspaceFeatureInfo: {
29 id: 'workspaceDrawer.workspaceFeatureInfo',
30 defaultMessage: '!!!Info about workspace feature',
31 },
32 premiumCtaButtonLabel: {
33 id: 'workspaceDrawer.premiumCtaButtonLabel',
34 defaultMessage: '!!!Create your first workspace',
35 },
27}); 36});
28 37
29const styles = theme => ({ 38const styles = theme => ({
@@ -48,6 +57,19 @@ const styles = theme => ({
48 fill: theme.workspaceDrawerAddButtonHoverColor, 57 fill: theme.workspaceDrawerAddButtonHoverColor,
49 }, 58 },
50 }, 59 },
60 workspaces: {
61 height: 'auto',
62 },
63 premiumAnnouncement: {
64 padding: '20px',
65 paddingTop: '0',
66 height: 'auto',
67 },
68 premiumCtaButton: {
69 marginTop: '20px',
70 width: '100%',
71 color: 'white !important',
72 },
51}); 73});
52 74
53@injectSheet(styles) @observer 75@injectSheet(styles) @observer
@@ -84,7 +106,10 @@ class WorkspaceDrawer extends Component {
84 {intl.formatMessage(messages.headline)} 106 {intl.formatMessage(messages.headline)}
85 <span 107 <span
86 className={classes.addWorkspaceButton} 108 className={classes.addWorkspaceButton}
87 onClick={workspaceActions.openWorkspaceSettings} 109 onClick={() => {
110 workspaceActions.openWorkspaceSettings();
111 gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerHeadline');
112 }}
88 data-tip={`${intl.formatMessage(messages.addWorkspaceTooltip)}`} 113 data-tip={`${intl.formatMessage(messages.addWorkspaceTooltip)}`}
89 > 114 >
90 <Icon 115 <Icon
@@ -94,29 +119,45 @@ class WorkspaceDrawer extends Component {
94 /> 119 />
95 </span> 120 </span>
96 </H1> 121 </H1>
97 <div className={classes.workspaces}> 122 {workspaceStore.isPremiumUpgradeRequired ? (
98 <WorkspaceDrawerItem 123 <div className={classes.premiumAnnouncement}>
99 name={intl.formatMessage(messages.allServices)} 124 <FormattedHTMLMessage {...messages.workspaceFeatureInfo} />
100 onClick={() => { 125 <Button
101 workspaceActions.deactivate(); 126 className={classes.premiumCtaButton}
102 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer'); 127 buttonType="primary"
103 }} 128 label={intl.formatMessage(messages.premiumCtaButtonLabel)}
104 services={getServicesForWorkspace(null)} 129 icon="mdiPlusBox"
105 isActive={actualWorkspace == null} 130 onClick={() => {
106 /> 131 workspaceActions.openWorkspaceSettings();
107 {workspaces.map(workspace => ( 132 gaEvent(GA_CATEGORY_WORKSPACES, 'add', 'drawerPremiumCta');
133 }}
134 />
135 </div>
136 ) : (
137 <div className={classes.workspaces}>
108 <WorkspaceDrawerItem 138 <WorkspaceDrawerItem
109 key={workspace.id} 139 name={intl.formatMessage(messages.allServices)}
110 name={workspace.name}
111 isActive={actualWorkspace === workspace}
112 onClick={() => { 140 onClick={() => {
113 workspaceActions.activate({ workspace }); 141 workspaceActions.deactivate();
114 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer'); 142 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer');
115 }} 143 }}
116 services={getServicesForWorkspace(workspace)} 144 services={getServicesForWorkspace(null)}
145 isActive={actualWorkspace == null}
117 /> 146 />
118 ))} 147 {workspaces.map(workspace => (
119 </div> 148 <WorkspaceDrawerItem
149 key={workspace.id}
150 name={workspace.name}
151 isActive={actualWorkspace === workspace}
152 onClick={() => {
153 workspaceActions.activate({ workspace });
154 gaEvent(GA_CATEGORY_WORKSPACES, 'switch', 'drawer');
155 }}
156 services={getServicesForWorkspace(workspace)}
157 />
158 ))}
159 </div>
160 )}
120 <ReactTooltip place="right" type="dark" effect="solid" /> 161 <ReactTooltip place="right" type="dark" effect="solid" />
121 </div> 162 </div>
122 ); 163 );
diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js
index 1fad1f71d..b141dc960 100644
--- a/src/features/workspaces/components/WorkspacesDashboard.js
+++ b/src/features/workspaces/components/WorkspacesDashboard.js
@@ -51,7 +51,6 @@ const messages = defineMessages({
51const styles = () => ({ 51const styles = () => ({
52 createForm: { 52 createForm: {
53 height: 'auto', 53 height: 'auto',
54 marginBottom: '20px',
55 }, 54 },
56 appear: { 55 appear: {
57 height: 'auto', 56 height: 'auto',
@@ -60,6 +59,7 @@ const styles = () => ({
60 padding: '20px', 59 padding: '20px',
61 backgroundColor: '#3498db', 60 backgroundColor: '#3498db',
62 marginLeft: '-20px', 61 marginLeft: '-20px',
62 marginBottom: '20px',
63 height: 'auto', 63 height: 'auto',
64 }, 64 },
65}); 65});
@@ -128,6 +128,13 @@ class WorkspacesDashboard extends Component {
128 </Appear> 128 </Appear>
129 )} 129 )}
130 130
131 {workspaceStore.isPremiumUpgradeRequired && (
132 <div className={classes.premiumAnnouncement}>
133 <h2>{intl.formatMessage(messages.workspaceFeatureHeadline)}</h2>
134 <p>{intl.formatMessage(messages.workspaceFeatureInfo)}</p>
135 </div>
136 )}
137
131 <PremiumFeatureContainer 138 <PremiumFeatureContainer
132 condition={workspaceStore.isPremiumFeature} 139 condition={workspaceStore.isPremiumFeature}
133 gaEventInfo={{ category: 'User', event: 'upgrade', label: 'workspaces' }} 140 gaEventInfo={{ category: 'User', event: 'upgrade', label: 'workspaces' }}
@@ -140,12 +147,6 @@ class WorkspacesDashboard extends Component {
140 /> 147 />
141 </div> 148 </div>
142 </PremiumFeatureContainer> 149 </PremiumFeatureContainer>
143 {workspaceStore.isUpgradeToPremiumRequired && (
144 <div className={classes.premiumAnnouncement}>
145 <h2>{intl.formatMessage(messages.workspaceFeatureHeadline)}</h2>
146 <p>{intl.formatMessage(messages.workspaceFeatureInfo)}</p>
147 </div>
148 )}
149 {getUserWorkspacesRequest.isExecuting ? ( 150 {getUserWorkspacesRequest.isExecuting ? (
150 <Loader /> 151 <Loader />
151 ) : ( 152 ) : (
diff --git a/src/features/workspaces/store.js b/src/features/workspaces/store.js
index 62bf3efb4..712945bdc 100644
--- a/src/features/workspaces/store.js
+++ b/src/features/workspaces/store.js
@@ -37,7 +37,7 @@ export default class WorkspacesStore extends FeatureStore {
37 return getUserWorkspacesRequest.result || []; 37 return getUserWorkspacesRequest.result || [];
38 } 38 }
39 39
40 @computed get isUpgradeToPremiumRequired() { 40 @computed get isPremiumUpgradeRequired() {
41 return this.isFeatureEnabled && !this.isFeatureActive; 41 return this.isFeatureEnabled && !this.isFeatureActive;
42 } 42 }
43 43