cozy-bar 12.3.0 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -158,7 +158,6 @@ You can reach the Cozy Community by:
158
158
 
159
159
  cozy-bar is developed by Cozy Cloud and distributed under the [MIT].
160
160
 
161
-
162
161
  [cozy]: https://cozy.io "Cozy Cloud"
163
162
  [setup]: https://dev.cozy.io/#set-up-the-development-environment "Cozy dev docs: Set up the Development Environment"
164
163
  [doctypes]: https://dev.cozy.io/#main-document-types
@@ -19,6 +19,8 @@ var _reactRedux = require("react-redux");
19
19
 
20
20
  var _propTypes = _interopRequireDefault(require("prop-types"));
21
21
 
22
+ var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
23
+
22
24
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
23
25
 
24
26
  var _cozyDeviceHelper = require("cozy-device-helper");
@@ -75,11 +77,16 @@ var Bar = function Bar(_ref) {
75
77
  var _useI18n = (0, _useI18n2.default)(),
76
78
  t = _useI18n.t;
77
79
 
80
+ var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
81
+ isMobile = _useBreakpoints.isMobile;
82
+
78
83
  var _useState = (0, _react.useState)(false),
79
84
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
80
85
  drawerVisible = _useState2[0],
81
86
  setDrawerVisible = _useState2[1];
82
87
 
88
+ var showDrawerAndBurger = !isPublic && isMobile;
89
+ var showSettings = !isPublic && !isMobile;
83
90
  var fetchInitialData = (0, _react.useCallback)(function () {
84
91
  if (!isPublic) {
85
92
  fetchContext();
@@ -131,7 +138,7 @@ var Bar = function Bar(_ref) {
131
138
  } // data-tutorial attribute allows to be targeted in an application tutorial
132
139
 
133
140
 
134
- return !isPublic ? /*#__PURE__*/_react.default.createElement("button", {
141
+ return showDrawerAndBurger ? /*#__PURE__*/_react.default.createElement("button", {
135
142
  type: "button",
136
143
  className: "coz-bar-btn coz-bar-burger",
137
144
  onClick: toggleDrawer,
@@ -147,7 +154,7 @@ var Bar = function Bar(_ref) {
147
154
  };
148
155
 
149
156
  var renderRight = function renderRight() {
150
- return !isPublic ? /*#__PURE__*/_react.default.createElement(_Settings.default, {
157
+ return showSettings ? /*#__PURE__*/_react.default.createElement(_Settings.default, {
151
158
  onLogOut: onLogOut
152
159
  }) : null;
153
160
  };
@@ -161,7 +168,7 @@ var Bar = function Bar(_ref) {
161
168
  className: "coz-bar-container"
162
169
  }, barLeft || renderLeft(), barCenter || renderCenter(), /*#__PURE__*/_react.default.createElement("div", {
163
170
  className: "u-flex-grow"
164
- }, barSearch), barRight || renderRight(), !isPublic ? /*#__PURE__*/_react.default.createElement(_Drawer.default, {
171
+ }, barSearch), barRight || renderRight(), showDrawerAndBurger ? /*#__PURE__*/_react.default.createElement(_Drawer.default, {
165
172
  visible: drawerVisible,
166
173
  onClose: toggleDrawer,
167
174
  drawerListener: function drawerListener() {
@@ -1,21 +1,45 @@
1
1
  import React from 'react'
2
- import { isFlagshipApp, isMobileApp } from 'cozy-device-helper'
2
+ import { isFlagshipApp } from 'cozy-device-helper'
3
3
  import { BarLike } from 'test/lib/BarLike'
4
4
 
5
5
  import { Bar } from './Bar'
6
6
  import { fireEvent, render, screen } from '@testing-library/react'
7
7
  import { createMockClient } from 'cozy-client'
8
+ import { useBreakpoints } from 'cozy-ui/transpiled/react/providers/Breakpoints'
9
+
10
+ import { useInstanceInfo } from 'cozy-client'
11
+ import { shouldDisplayOffers } from 'cozy-client/dist/models/instance'
8
12
 
9
13
  jest.mock('cozy-device-helper', () => ({
10
14
  ...require.requireActual('cozy-device-helper'),
11
- isMobileApp: jest.fn(),
12
15
  isFlagshipApp: jest.fn()
13
16
  }))
14
17
 
18
+ jest.mock('cozy-client', () => ({
19
+ ...require.requireActual('cozy-client'),
20
+ useInstanceInfo: jest.fn()
21
+ }))
22
+
23
+ jest.mock('cozy-client/dist/models/instance', () => ({
24
+ ...require.requireActual('cozy-client/dist/models/instance'),
25
+ shouldDisplayOffers: jest.fn()
26
+ }))
27
+
28
+ jest.mock('cozy-ui/transpiled/react/providers/Breakpoints', () => ({
29
+ ...require.requireActual('cozy-ui/transpiled/react/providers/Breakpoints'),
30
+ __esModule: true,
31
+ useBreakpoints: jest.fn()
32
+ }))
33
+
15
34
  describe('Bar', () => {
16
35
  beforeEach(() => {
17
36
  jest.resetAllMocks()
18
- isMobileApp.mockReturnValue(false)
37
+ useBreakpoints.mockReturnValue({ isMobile: true })
38
+ shouldDisplayOffers.mockReturnValue(false)
39
+ useInstanceInfo.mockReturnValue({
40
+ isLoaded: true,
41
+ diskUsage: { data: { attributes: { used: 0 } } }
42
+ })
19
43
  })
20
44
 
21
45
  afterEach(() => {
@@ -162,7 +162,8 @@ var BarComponent = function BarComponent(_ref2) {
162
162
  wrapperElement: wrapperElement,
163
163
  setWrapperElement: setWrapperElement
164
164
  }, /*#__PURE__*/_react.default.createElement(_CozyTheme.default, {
165
- variant: themeVariant
165
+ variant: themeVariant,
166
+ ignoreCozySettings: options.isPublic
166
167
  }, disableInternalStore ? /*#__PURE__*/_react.default.createElement(_Bar.default, (0, _extends2.default)({}, options, {
167
168
  barSearch: barSearch,
168
169
  barLeft: barLeft,
@@ -35,6 +35,12 @@ var _hammerjs = _interopRequireDefault(require("hammerjs"));
35
35
 
36
36
  var _propTypes = _interopRequireDefault(require("prop-types"));
37
37
 
38
+ var _Divider = _interopRequireDefault(require("cozy-ui/transpiled/react/Divider"));
39
+
40
+ var _List = _interopRequireDefault(require("cozy-ui/transpiled/react/List"));
41
+
42
+ var _Paper = _interopRequireDefault(require("cozy-ui/transpiled/react/Paper"));
43
+
38
44
  var _AppsContent = _interopRequireDefault(require("./Apps/AppsContent"));
39
45
 
40
46
  var _SettingsContent = _interopRequireDefault(require("./Settings/SettingsContent"));
@@ -122,7 +128,6 @@ var Drawer = /*#__PURE__*/function (_Component) {
122
128
  isScrolling: false,
123
129
  isClosing: false
124
130
  };
125
- _this.handleLogout = _this.handleLogout.bind((0, _assertThisInitialized2.default)(_this));
126
131
  return _this;
127
132
  }
128
133
 
@@ -252,59 +257,15 @@ var Drawer = /*#__PURE__*/function (_Component) {
252
257
  progress = Math.min(1.1, Math.max(0, progress));
253
258
  this.asideRef.style.transform = 'translateX(-' + progress * 100 + '%)';
254
259
  }
255
- }, {
256
- key: "handleLogout",
257
- value: function () {
258
- var _handleLogout = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
259
- var _this$props, onLogOut, logOut, res;
260
-
261
- return _regenerator.default.wrap(function _callee3$(_context3) {
262
- while (1) {
263
- switch (_context3.prev = _context3.next) {
264
- case 0:
265
- _this$props = this.props, onLogOut = _this$props.onLogOut, logOut = _this$props.logOut;
266
-
267
- if (!(onLogOut && typeof onLogOut === 'function')) {
268
- _context3.next = 6;
269
- break;
270
- }
271
-
272
- res = onLogOut();
273
-
274
- if (!(res instanceof Promise)) {
275
- _context3.next = 6;
276
- break;
277
- }
278
-
279
- _context3.next = 6;
280
- return res;
281
-
282
- case 6:
283
- logOut();
284
-
285
- case 7:
286
- case "end":
287
- return _context3.stop();
288
- }
289
- }
290
- }, _callee3, this);
291
- }));
292
-
293
- function handleLogout() {
294
- return _handleLogout.apply(this, arguments);
295
- }
296
-
297
- return handleLogout;
298
- }()
299
260
  }, {
300
261
  key: "render",
301
262
  value: function render() {
302
263
  var _this3 = this;
303
264
 
304
- var _this$props2 = this.props,
305
- visible = _this$props2.visible,
306
- storageData = _this$props2.storageData,
307
- isInvertedTheme = _this$props2.isInvertedTheme;
265
+ var _this$props = this.props,
266
+ visible = _this$props.visible,
267
+ isInvertedTheme = _this$props.isInvertedTheme,
268
+ onLogOut = _this$props.onLogOut;
308
269
  return /*#__PURE__*/_react.default.createElement("div", {
309
270
  className: "coz-drawer-wrapper",
310
271
  onClick: this.onDrawerClick,
@@ -321,15 +282,15 @@ var Drawer = /*#__PURE__*/function (_Component) {
321
282
  }, /*#__PURE__*/_react.default.createElement(_AppsContent.default, {
322
283
  onAppSwitch: this.close,
323
284
  isInvertedTheme: isInvertedTheme
324
- })), /*#__PURE__*/_react.default.createElement("hr", {
325
- className: "coz-sep-flex"
326
- }), /*#__PURE__*/_react.default.createElement("nav", {
285
+ })), /*#__PURE__*/_react.default.createElement(_Divider.default, null), /*#__PURE__*/_react.default.createElement("nav", {
327
286
  className: "coz-drawer--settings"
328
- }, /*#__PURE__*/_react.default.createElement(_SettingsContent.default, {
329
- onLogOut: this.handleLogout,
330
- storageData: storageData,
331
- isDrawer: true
332
- }))));
287
+ }, /*#__PURE__*/_react.default.createElement(_Paper.default, {
288
+ elevation: 0,
289
+ square: true
290
+ }, /*#__PURE__*/_react.default.createElement(_List.default, null, /*#__PURE__*/_react.default.createElement(_SettingsContent.default, {
291
+ isDrawer: true,
292
+ onLogOut: onLogOut
293
+ }))))));
333
294
  }
334
295
  }]);
335
296
  return Drawer;
@@ -341,28 +302,17 @@ Drawer.propTypes = {
341
302
  onClose: _propTypes.default.func,
342
303
  onLogOut: _propTypes.default.func,
343
304
  isInvertedTheme: _propTypes.default.bool,
344
- storageData: _propTypes.default.object,
345
- fetchSettingsData: _propTypes.default.func,
346
- logOut: _propTypes.default.func
347
- };
348
-
349
- var mapStateToProps = function mapStateToProps(state) {
350
- return {
351
- storageData: (0, _reducers.getStorageData)(state)
352
- };
305
+ fetchSettingsData: _propTypes.default.func
353
306
  };
354
307
 
355
308
  var mapDispatchToProps = function mapDispatchToProps(dispatch) {
356
309
  return {
357
310
  fetchSettingsData: function fetchSettingsData() {
358
311
  return dispatch((0, _reducers.fetchSettingsData)());
359
- },
360
- logOut: function logOut() {
361
- return dispatch((0, _reducers.logOut)());
362
312
  }
363
313
  };
364
314
  };
365
315
 
366
- var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Drawer);
316
+ var _default = (0, _reactRedux.connect)(null, mapDispatchToProps)(Drawer);
367
317
 
368
318
  exports.default = _default;
@@ -2,20 +2,35 @@ import React from 'react'
2
2
 
3
3
  import { render, screen, fireEvent, act } from '@testing-library/react'
4
4
 
5
+ import { useInstanceInfo } from 'cozy-client'
6
+
5
7
  import { Drawer } from './Drawer'
6
8
  import { BarLike } from 'test/lib/BarLike'
7
9
 
10
+ jest.mock('cozy-client', () => ({
11
+ ...require.requireActual('cozy-client'),
12
+ useInstanceInfo: jest.fn()
13
+ }))
14
+
8
15
  const sleep = duration => new Promise(resolve => setTimeout(resolve, duration))
9
16
 
10
17
  describe('bar', () => {
18
+ beforeEach(() => {
19
+ jest.resetAllMocks()
20
+ useInstanceInfo.mockReturnValue({
21
+ isLoaded: true,
22
+ diskUsage: { data: { attributes: { used: 0 } } }
23
+ })
24
+ })
25
+
11
26
  describe('logout', () => {
12
27
  const findLogoutButton = () => {
13
28
  return screen.getByText('Log out')
14
29
  }
15
- const setup = ({ onLogOut, logOut }) => {
30
+ const setup = ({ onLogOut }) => {
16
31
  render(
17
32
  <BarLike>
18
- <Drawer logOut={logOut} onLogOut={onLogOut} />
33
+ <Drawer onLogOut={onLogOut} />
19
34
  </BarLike>
20
35
  )
21
36
  }
@@ -34,9 +49,6 @@ describe('bar', () => {
34
49
  it('should await the onLogOut', async () => {
35
50
  let prom
36
51
  const callOrder = []
37
- const logOut = jest.fn().mockImplementation(() => {
38
- callOrder.push('logOut')
39
- })
40
52
 
41
53
  const onLogOut = jest.fn().mockImplementation(async () => {
42
54
  prom = sleep(100)
@@ -44,40 +56,26 @@ describe('bar', () => {
44
56
  await prom
45
57
  })
46
58
 
47
- setup({ logOut, onLogOut })
59
+ setup({ onLogOut })
48
60
 
49
61
  act(() => {
50
62
  clickLogout()
51
63
  })
52
64
 
53
- expect(logOut).not.toHaveBeenCalled()
54
65
  await prom
55
66
  await sleep(0)
56
67
 
57
- expect(logOut).toHaveBeenCalled()
58
68
  expect(onLogOut).toHaveBeenCalled()
59
- expect(callOrder).toEqual(['onLogOut', 'logOut'])
60
- })
61
-
62
- it('should work if onLogOut has not been passed', () => {
63
- const logOut = jest.fn()
64
- setup({ logOut })
65
- act(() => {
66
- clickLogout()
67
- })
68
-
69
- expect(logOut).toHaveBeenCalled()
69
+ expect(callOrder).toEqual(['onLogOut'])
70
70
  })
71
71
 
72
72
  it('should work if onLogOut does not return a promise', () => {
73
- const logOut = jest.fn()
74
73
  const onLogOut = jest.fn()
75
- setup({ logOut, onLogOut })
74
+ setup({ onLogOut })
76
75
  act(() => {
77
76
  clickLogout()
78
77
  })
79
78
 
80
- expect(logOut).toHaveBeenCalled()
81
79
  expect(onLogOut).toHaveBeenCalled()
82
80
  })
83
81
  })
@@ -7,196 +7,81 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
12
- var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
13
 
14
- var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
14
+ var _react = _interopRequireDefault(require("react"));
15
15
 
16
- var _cozyDeviceHelper = require("cozy-device-helper");
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
 
18
18
  var _cozyClient = require("cozy-client");
19
19
 
20
- var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
21
-
22
- var _Openwith = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Openwith"));
23
-
24
- var _People = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/People"));
25
-
26
- var _Palette = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Palette"));
20
+ var _Actions = require("cozy-ui/transpiled/react/ActionsMenu/Actions");
27
21
 
28
- var _GraphCircle = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/GraphCircle"));
22
+ var _ActionsMenu = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu"));
29
23
 
30
- var _CozyCircle = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/CozyCircle"));
24
+ var _ActionsItems = _interopRequireDefault(require("cozy-ui/transpiled/react/ActionsMenu/ActionsItems"));
31
25
 
32
- var _Hand = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Hand"));
26
+ var _actions = require("./actions");
33
27
 
34
- var _Devices = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Devices"));
35
-
36
- var _Globe = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Globe"));
37
-
38
- var _Logout = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Logout"));
39
-
40
- var _Help = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Help"));
41
-
42
- var _Email = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Email"));
43
-
44
- var _helper = require("./helper");
28
+ var _useI18n2 = _interopRequireDefault(require("../useI18n"));
45
29
 
46
- var _StorageData = _interopRequireDefault(require("./StorageData"));
30
+ var SettingsContent = function SettingsContent(_ref) {
31
+ var anchorRef = _ref.anchorRef,
32
+ instanceInfo = _ref.instanceInfo,
33
+ onLogOut = _ref.onLogOut,
34
+ isDrawer = _ref.isDrawer,
35
+ onClose = _ref.onClose;
47
36
 
48
- var _useI18n2 = _interopRequireDefault(require("../useI18n"));
37
+ var _useI18n = (0, _useI18n2.default)(),
38
+ t = _useI18n.t;
49
39
 
50
- var MenuIcon = function MenuIcon(_ref) {
51
- var icon = _ref.icon;
52
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
53
- className: "u-mr-1",
54
- color: "var(--iconTextColor)",
55
- icon: icon
40
+ var actions = (0, _Actions.makeActions)([_actions.profile, _actions.appearance, _actions.plans, _actions.storage, _actions.permissions, _Actions.divider, _actions.connectedDevices, _actions.connections, _Actions.divider, _actions.help, _actions.contact, _actions.logout], {
41
+ t: t,
42
+ instanceInfo: instanceInfo,
43
+ onLogOut: onLogOut
56
44
  });
57
- };
58
-
59
- var ExternalLinkIcon = function ExternalLinkIcon() {
60
- return /*#__PURE__*/_react.default.createElement(_Icon.default, {
61
- className: "coz-nav-settings-item-btn-external-icon",
62
- color: "var(--iconTextColor)",
63
- icon: _Openwith.default
45
+ if (isDrawer) return /*#__PURE__*/_react.default.createElement(_ActionsItems.default, {
46
+ actions: actions
47
+ });
48
+ return /*#__PURE__*/_react.default.createElement(_ActionsMenu.default, {
49
+ ref: anchorRef,
50
+ open: true,
51
+ docs: [],
52
+ actions: actions,
53
+ anchorOrigin: {
54
+ vertical: 'bottom',
55
+ horizontal: 'right'
56
+ },
57
+ autoClose: true,
58
+ onClose: onClose
64
59
  });
65
60
  };
66
61
 
67
- var NavGroup = function NavGroup(_ref2) {
68
- var children = _ref2.children;
69
- return /*#__PURE__*/_react.default.createElement("ul", {
70
- className: "coz-nav-group"
71
- }, children);
72
- };
73
-
74
- var NavItem = function NavItem(_ref3) {
75
- var children = _ref3.children;
76
- return /*#__PURE__*/_react.default.createElement("li", {
77
- className: "coz-nav-settings-item"
78
- }, children);
62
+ SettingsContent.propTypes = {
63
+ instanceInfo: _propTypes.default.object,
64
+ onLogOut: _propTypes.default.func,
65
+ isDrawer: _propTypes.default.bool
79
66
  };
80
67
 
81
- var SettingsContent = function SettingsContent(_ref4) {
82
- var onLogOut = _ref4.onLogOut,
83
- storageData = _ref4.storageData,
84
- _ref4$isDrawer = _ref4.isDrawer,
85
- isDrawer = _ref4$isDrawer === void 0 ? false : _ref4$isDrawer,
86
- shoulDisplayViewOfferButton = _ref4.shoulDisplayViewOfferButton,
87
- managerUrlPremiumLink = _ref4.managerUrlPremiumLink;
88
-
89
- var _useI18n = (0, _useI18n2.default)(),
90
- t = _useI18n.t;
68
+ var SettingsContentWithQuery = function SettingsContentWithQuery(props) {
69
+ var _useInstanceInfo = (0, _cozyClient.useInstanceInfo)(),
70
+ isLoaded = _useInstanceInfo.isLoaded,
71
+ instanceInfo = (0, _objectWithoutProperties2.default)(_useInstanceInfo, ["isLoaded"]);
91
72
 
92
- var client = (0, _cozyClient.useClient)();
93
- return /*#__PURE__*/_react.default.createElement("div", {
94
- className: "coz-nav-pop-content"
95
- }, isDrawer && /*#__PURE__*/_react.default.createElement("hr", null), /*#__PURE__*/_react.default.createElement(NavGroup, null, /*#__PURE__*/_react.default.createElement(NavItem, null, /*#__PURE__*/_react.default.createElement("a", {
96
- role: "menuitem",
97
- href: (0, _helper.getSettingsLink)({
98
- client: client,
99
- hash: 'profile'
100
- }),
101
- target: "_self",
102
- title: t('profile')
103
- }, /*#__PURE__*/_react.default.createElement(MenuIcon, {
104
- icon: _People.default
105
- }), t('profile'))), (0, _cozyFlags.default)('ui.darkmode.enabled') && /*#__PURE__*/_react.default.createElement(NavItem, null, /*#__PURE__*/_react.default.createElement("a", {
106
- role: "menuitem",
107
- href: (0, _helper.getSettingsLink)({
108
- client: client,
109
- hash: 'appearance'
110
- }),
111
- target: "_self",
112
- title: t('appearance')
113
- }, /*#__PURE__*/_react.default.createElement(MenuIcon, {
114
- icon: _Palette.default
115
- }), t('appearance'))), (!isDrawer || !(0, _cozyDeviceHelper.isMobileApp)()) && shoulDisplayViewOfferButton && /*#__PURE__*/_react.default.createElement(NavItem, null, /*#__PURE__*/_react.default.createElement("a", {
116
- role: "menuitem",
117
- href: managerUrlPremiumLink,
118
- target: "_self",
119
- title: t('plans')
120
- }, /*#__PURE__*/_react.default.createElement(MenuIcon, {
121
- icon: _CozyCircle.default
122
- }), t('plans'), !(0, _cozyFlags.default)('settings.subscription') && /*#__PURE__*/_react.default.createElement(ExternalLinkIcon, null))), /*#__PURE__*/_react.default.createElement(NavItem, null, /*#__PURE__*/_react.default.createElement("a", {
123
- role: "menuitem",
124
- target: "_self",
125
- title: t('storage'),
126
- href: (0, _helper.getSettingsLink)({
127
- client: client,
128
- hash: 'storage'
129
- })
130
- }, /*#__PURE__*/_react.default.createElement(MenuIcon, {
131
- icon: _GraphCircle.default
132
- }), /*#__PURE__*/_react.default.createElement("span", null, t('storage'), storageData ? /*#__PURE__*/_react.default.createElement(_StorageData.default, {
133
- data: storageData
134
- }) : null)))), /*#__PURE__*/_react.default.createElement(NavGroup, null, (0, _cozyFlags.default)('settings.permissions-dashboard') && /*#__PURE__*/_react.default.createElement(NavItem, null, /*#__PURE__*/_react.default.createElement("a", {
135
- role: "menuitem",
136
- href: (0, _helper.getSettingsLink)({
137
- client: client,
138
- hash: 'permissions/slug'
139
- }),
140
- target: "_self",
141
- title: t('permissions')
142
- }, /*#__PURE__*/_react.default.createElement(MenuIcon, {
143
- icon: _Hand.default
144
- }), t('permissions'))), /*#__PURE__*/_react.default.createElement(NavItem, null, /*#__PURE__*/_react.default.createElement("a", {
145
- role: "menuitem",
146
- href: (0, _helper.getSettingsLink)({
147
- client: client,
148
- hash: 'connectedDevices'
149
- }),
150
- target: "_self",
151
- title: t('connectedDevices')
152
- }, /*#__PURE__*/_react.default.createElement(MenuIcon, {
153
- icon: _Devices.default
154
- }), t('connectedDevices'))), /*#__PURE__*/_react.default.createElement(NavItem, null, /*#__PURE__*/_react.default.createElement("a", {
155
- role: "menuitem",
156
- href: (0, _helper.getSettingsLink)({
157
- client: client,
158
- hash: 'sessions'
159
- }),
160
- target: "_self",
161
- title: t('connections')
162
- }, /*#__PURE__*/_react.default.createElement(MenuIcon, {
163
- icon: _Globe.default
164
- }), t('connections')))), /*#__PURE__*/_react.default.createElement(NavGroup, null, !(0, _cozyDeviceHelper.isMobileApp)() && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(NavItem, null, /*#__PURE__*/_react.default.createElement("a", {
165
- role: "menuitem",
166
- target: "_blank",
167
- rel: "noopener noreferrer",
168
- href: "https://support.cozy.io/",
169
- title: t('help')
170
- }, /*#__PURE__*/_react.default.createElement(MenuIcon, {
171
- icon: _Help.default
172
- }), t('help'), /*#__PURE__*/_react.default.createElement(ExternalLinkIcon, null))), /*#__PURE__*/_react.default.createElement(NavItem, null, /*#__PURE__*/_react.default.createElement("a", {
173
- role: "menuitem",
174
- href: (0, _helper.getSettingsLink)({
175
- client: client,
176
- hash: 'support'
177
- }),
178
- target: "_self",
179
- title: t('contact')
180
- }, /*#__PURE__*/_react.default.createElement(MenuIcon, {
181
- icon: _Email.default
182
- }), t('contact')))), /*#__PURE__*/_react.default.createElement(NavItem, null, /*#__PURE__*/_react.default.createElement("button", {
183
- type: "button",
184
- role: "menuitem",
185
- onClick: onLogOut,
186
- title: t('logout')
187
- }, /*#__PURE__*/_react.default.createElement(MenuIcon, {
188
- icon: _Logout.default
189
- }), " ", t('logout')))));
73
+ if (!isLoaded) return null;
74
+ return /*#__PURE__*/_react.default.createElement(SettingsContent, (0, _extends2.default)({
75
+ instanceInfo: instanceInfo
76
+ }, props));
190
77
  };
191
78
 
192
- SettingsContent.defaultProps = {
193
- shoulDisplayViewOfferButton: false
79
+ SettingsContentWithQuery.defaultProps = {
80
+ isDrawer: false
194
81
  };
195
- SettingsContent.propTypes = {
196
- shoulDisplayViewOfferButton: _propTypes.default.bool,
197
- onLogOut: _propTypes.default.func.isRequired,
198
- storageData: _propTypes.default.object,
82
+ SettingsContentWithQuery.propTypes = {
83
+ onLogOut: _propTypes.default.func,
199
84
  isDrawer: _propTypes.default.bool
200
85
  };
201
- var _default = SettingsContent;
86
+ var _default = SettingsContentWithQuery;
202
87
  exports.default = _default;
@@ -9,28 +9,35 @@ exports.default = void 0;
9
9
 
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
 
12
- var _useI18n2 = _interopRequireDefault(require("../useI18n"));
12
+ var _cozyClient = require("cozy-client");
13
+
14
+ var _instance = require("cozy-client/dist/models/instance");
13
15
 
14
- var StorageData = function StorageData(_ref) {
15
- var data = _ref.data;
16
+ var _Progress = require("cozy-ui/transpiled/react/Progress");
17
+
18
+ var _useI18n2 = _interopRequireDefault(require("../useI18n"));
16
19
 
20
+ var StorageData = function StorageData() {
17
21
  var _useI18n = (0, _useI18n2.default)(),
18
22
  t = _useI18n.t;
19
23
 
20
- var diskQuota = Number.isInteger(data.quota) ? (data.quota / (1000 * 1000 * 1000)).toFixed(2) : data.quota;
21
- var diskUsage = Number.isInteger(data.usage) ? (data.usage / (1000 * 1000 * 1000)).toFixed(2) : data.usage;
22
- return /*#__PURE__*/_react.default.createElement("div", {
23
- className: "coz-nav-storage"
24
- }, /*#__PURE__*/_react.default.createElement("p", {
25
- className: "coz-nav-storage-text"
26
- }, t('storage_phrase', {
27
- diskUsage: diskUsage,
28
- diskQuota: diskQuota
29
- })), /*#__PURE__*/_react.default.createElement("progress", {
30
- className: "cozy-nav-storage-bar",
31
- value: diskUsage,
32
- max: diskQuota,
33
- min: "0"
24
+ var _useInstanceInfo = (0, _cozyClient.useInstanceInfo)(),
25
+ isLoaded = _useInstanceInfo.isLoaded,
26
+ diskUsage = _useInstanceInfo.diskUsage;
27
+
28
+ if (!isLoaded) return null; // we used this default quota set in getStorageData, we just reuse it here
29
+
30
+ var storageData = (0, _instance.makeDiskInfos)(diskUsage.data.attributes.used, diskUsage.data.attributes.quota || Math.max(Math.pow(10, 12), 10 * parseInt(diskUsage.data.attributes.used, 10)));
31
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, t('storage_phrase', {
32
+ diskUsage: storageData.humanDiskUsage,
33
+ diskQuota: storageData.humanDiskQuota
34
+ }), /*#__PURE__*/_react.default.createElement(_Progress.LinearProgress, {
35
+ style: {
36
+ width: '85%'
37
+ },
38
+ className: "u-mt-half",
39
+ variant: "determinate",
40
+ value: parseInt(storageData.percentUsage)
34
41
  }));
35
42
  };
36
43