cozy-bar 29.3.0 → 31.0.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.
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
- var _reactRedux = require("react-redux");
10
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
10
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
12
11
  var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
@@ -16,7 +15,6 @@ var _ShortcutItem = _interopRequireDefault(require("./components/ShortcutItem"))
16
15
  var _EntrypointItem = _interopRequireDefault(require("./components/EntrypointItem"));
17
16
  var _AppItemPlaceholder = _interopRequireDefault(require("./components/AppItemPlaceholder"));
18
17
  var _useI18n2 = _interopRequireDefault(require("../useI18n"));
19
- var _reducers = require("../../lib/reducers");
20
18
  var _helper = require("./helper");
21
19
  var styles = {
22
20
  "apps-menu-grid": "apps-menu-grid",
@@ -85,11 +83,4 @@ AppsMenuContent.propTypes = {
85
83
  }),
86
84
  closeMenu: _propTypes.default.func
87
85
  };
88
- var mapStateToProps = function mapStateToProps(state) {
89
- return {
90
- isFetchingApps: (0, _reducers.isFetchingApps)(state),
91
- apps: (0, _reducers.getApps)(state),
92
- homeApp: (0, _reducers.getHomeApp)(state)
93
- };
94
- };
95
- var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps)(AppsMenuContent);
86
+ var _default = exports.default = AppsMenuContent;
@@ -8,6 +8,7 @@ exports.default = exports.AppItem = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _applications = require("cozy-client/dist/models/applications");
11
+ var _cozyClient = require("cozy-client");
11
12
  var _styles = require("cozy-ui/transpiled/react/styles");
12
13
  var _Buttons = _interopRequireDefault(require("cozy-ui/transpiled/react/Buttons"));
13
14
  var _AppIcon = _interopRequireDefault(require("cozy-ui-plus/dist/AppIcon"));
@@ -15,7 +16,6 @@ var _AppLinker = _interopRequireDefault(require("cozy-ui-plus/dist/AppLinker"));
15
16
  var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
16
17
  var _classnames = _interopRequireDefault(require("classnames"));
17
18
  var _proptypes = require("../../../proptypes");
18
- var _stack = _interopRequireDefault(require("../../../lib/stack"));
19
19
  var styles = {
20
20
  "apps-menu-grid": "apps-menu-grid",
21
21
  "apps-menu-grid-item-wrapper": "apps-menu-grid-item-wrapper",
@@ -34,6 +34,12 @@ var useStyles = (0, _styles.makeStyles)(function () {
34
34
  var AppItem = exports.AppItem = function AppItem(_ref) {
35
35
  var app = _ref.app,
36
36
  onAppSwitch = _ref.onAppSwitch;
37
+ var client = (0, _cozyClient.useClient)();
38
+ var cozyURL = new URL(client.getStackClient().uri);
39
+ var iconProps = {
40
+ domain: cozyURL.host,
41
+ secure: cozyURL.protocol === 'https:'
42
+ };
37
43
  var appName = (0, _applications.getAppDisplayName)(app);
38
44
  var classes = useStyles();
39
45
  return /*#__PURE__*/_react.default.createElement(_AppLinker.default, {
@@ -59,7 +65,7 @@ var AppItem = exports.AppItem = function AppItem(_ref) {
59
65
  }, /*#__PURE__*/_react.default.createElement(_AppIcon.default, (0, _extends2.default)({
60
66
  app: app,
61
67
  key: app.slug
62
- }, _stack.default.get.iconProps()))), /*#__PURE__*/_react.default.createElement(_Typography.default, {
68
+ }, iconProps))), /*#__PURE__*/_react.default.createElement(_Typography.default, {
63
69
  noWrap: true,
64
70
  align: "center",
65
71
  className: "u-w-100 ".concat(classes.text)
@@ -27,7 +27,10 @@ var useStyles = (0, _styles.makeStyles)({
27
27
  }
28
28
  });
29
29
  var AppsMenu = function AppsMenu(_ref) {
30
- var shortcuts = _ref.shortcuts;
30
+ var shortcuts = _ref.shortcuts,
31
+ apps = _ref.apps,
32
+ homeApp = _ref.homeApp,
33
+ isFetchingApps = _ref.isFetchingApps;
31
34
  var _useState = (0, _react.useState)(false),
32
35
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
33
36
  isOpen = _useState2[0],
@@ -53,6 +56,9 @@ var AppsMenu = function AppsMenu(_ref) {
53
56
  open: isOpen,
54
57
  onClose: toggleMenu,
55
58
  content: /*#__PURE__*/_react.default.createElement(_AppsMenuContent.default, {
59
+ apps: apps,
60
+ homeApp: homeApp,
61
+ isFetchingApps: isFetchingApps,
56
62
  shortcuts: shortcuts,
57
63
  closeMenu: toggleMenu
58
64
  }),
@@ -82,6 +88,9 @@ var AppsMenu = function AppsMenu(_ref) {
82
88
  paper: 'u-bdrs-7'
83
89
  }
84
90
  }, /*#__PURE__*/_react.default.createElement(_AppsMenuContent.default, {
91
+ apps: apps,
92
+ homeApp: homeApp,
93
+ isFetchingApps: isFetchingApps,
85
94
  shortcuts: shortcuts,
86
95
  closeMenu: toggleMenu
87
96
  })));
@@ -4,10 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.mapStateToProps = exports.mapDispatchToProps = exports.default = exports.Bar = void 0;
7
+ exports.default = exports.Bar = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _react = _interopRequireWildcard(require("react"));
10
- var _reactRedux = require("react-redux");
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _Grid = _interopRequireDefault(require("cozy-ui/transpiled/react/Grid"));
13
13
  var _Divider = _interopRequireDefault(require("cozy-ui/transpiled/react/Divider"));
@@ -21,54 +21,46 @@ var _UserMenu = _interopRequireDefault(require("./UserMenu"));
21
21
  var _ButtonCozyHome = _interopRequireDefault(require("./utils/ButtonCozyHome"));
22
22
  var _SearchButton = _interopRequireDefault(require("./utils/SearchButton"));
23
23
  var _HelpLink = _interopRequireDefault(require("./utils/HelpLink"));
24
- var _reducers = require("../lib/reducers");
25
24
  var _cozyClient = require("cozy-client");
26
25
  var _cozySearch = require("cozy-search");
27
26
  var _classnames = _interopRequireDefault(require("classnames"));
27
+ var _queries = require("../queries");
28
+ var _helpers = require("./helpers");
28
29
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
29
30
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
31
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
32
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
30
33
  var Bar = exports.Bar = function Bar(_ref) {
31
34
  var _componentsProps$Wrap;
32
- var fetchContext = _ref.fetchContext,
33
- fetchSettingsData = _ref.fetchSettingsData,
34
- fetchApps = _ref.fetchApps,
35
- isPublic = _ref.isPublic,
35
+ var isPublic = _ref.isPublic,
36
36
  barLeft = _ref.barLeft,
37
37
  barRight = _ref.barRight,
38
38
  barCenter = _ref.barCenter,
39
39
  barSearch = _ref.barSearch,
40
40
  onLogOut = _ref.onLogOut,
41
41
  userActionRequired = _ref.userActionRequired,
42
+ appIcon = _ref.appIcon,
43
+ appTextIcon = _ref.appTextIcon,
42
44
  searchOptions = _ref.searchOptions,
43
45
  isInvertedTheme = _ref.isInvertedTheme,
44
46
  appSlug = _ref.appSlug,
45
- hasFetchedApps = _ref.hasFetchedApps,
46
- homeApp = _ref.homeApp,
47
47
  componentsProps = _ref.componentsProps;
48
- var client = (0, _cozyClient.useClient)();
49
48
  var _useBreakpoints = (0, _Breakpoints.useBreakpoints)(),
50
49
  isMobile = _useBreakpoints.isMobile;
51
50
  var shortcuts = (0, _cozyClient.useFetchHomeShortcuts)();
51
+ var appsQuery = (0, _queries.buildAppsQuery)();
52
+ var appsResult = (0, _cozyClient.useQuery)(appsQuery.definition, _objectSpread(_objectSpread({}, appsQuery.options), {}, {
53
+ enabled: !isPublic
54
+ }));
55
+ var rawApps = appsResult.data || [];
56
+ var isFetchingApps = appsResult.fetchStatus === 'loading';
57
+ var _useMemo = (0, _react.useMemo)(function () {
58
+ return (0, _helpers.getAppsData)(rawApps, appSlug);
59
+ }, [rawApps, appSlug]),
60
+ apps = _useMemo.apps,
61
+ homeApp = _useMemo.homeApp,
62
+ isSettingsAppInstalled = _useMemo.isSettingsAppInstalled;
52
63
  var isSearchEnabled = searchOptions.enabled && !isPublic;
53
- var fetchInitialData = (0, _react.useCallback)(function () {
54
- if (!isPublic) {
55
- fetchContext();
56
- fetchSettingsData(false);
57
- if (!hasFetchedApps) {
58
- fetchApps();
59
- }
60
- }
61
- }, [fetchApps, fetchContext, fetchSettingsData, hasFetchedApps, isPublic]);
62
- (0, _react.useEffect)(function () {
63
- var handleTokenRefreshed = function handleTokenRefreshed() {
64
- fetchInitialData();
65
- };
66
- fetchInitialData();
67
- client.on('tokenRefreshed', handleTokenRefreshed);
68
- return function () {
69
- client.removeListener('tokenRefreshed', handleTokenRefreshed);
70
- };
71
- }, [client, fetchInitialData]);
72
64
  var renderCenter = function renderCenter() {
73
65
  return null;
74
66
  };
@@ -96,7 +88,8 @@ var Bar = exports.Bar = function Bar(_ref) {
96
88
  className: "u-mr-half",
97
89
  flexItem: true
98
90
  })), /*#__PURE__*/_react.default.createElement(_AppTitle.default, {
99
- slug: appSlug
91
+ appIcon: appIcon,
92
+ appTextIcon: appTextIcon
100
93
  }));
101
94
  };
102
95
  var renderTwakeRight = function renderTwakeRight() {
@@ -110,9 +103,13 @@ var Bar = exports.Bar = function Bar(_ref) {
110
103
  // to remove this special case
111
104
  if (appSlug === 'drive' && isMobile && barSearch) return null;
112
105
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_HelpLink.default, null), /*#__PURE__*/_react.default.createElement(_AppsMenu.default, {
106
+ apps: apps,
107
+ homeApp: homeApp,
108
+ isFetchingApps: isFetchingApps,
113
109
  shortcuts: shortcuts
114
110
  }), /*#__PURE__*/_react.default.createElement(_UserMenu.default, {
115
- onLogOut: onLogOut
111
+ onLogOut: onLogOut,
112
+ isSettingsAppInstalled: isSettingsAppInstalled
116
113
  }));
117
114
  };
118
115
  var renderSearch = function renderSearch() {
@@ -129,6 +126,8 @@ var Bar = exports.Bar = function Bar(_ref) {
129
126
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, componentsProps === null || componentsProps === void 0 ? void 0 : componentsProps.Wrapper, {
130
127
  className: (0, _classnames.default)('coz-bar-wrapper', componentsProps === null || componentsProps === void 0 || (_componentsProps$Wrap = componentsProps.Wrapper) === null || _componentsProps$Wrap === void 0 ? void 0 : _componentsProps$Wrap.className),
131
128
  "data-testid": "coz-bar-wrapper"
129
+ }), !isPublic && /*#__PURE__*/_react.default.createElement(_cozyClient.RealTimeQueries, {
130
+ doctype: "io.cozy.apps"
132
131
  }), /*#__PURE__*/_react.default.createElement("div", {
133
132
  id: "cozy-bar-modal-dom-place"
134
133
  }), /*#__PURE__*/_react.default.createElement("div", {
@@ -149,23 +148,4 @@ Bar.propTypes = {
149
148
  })
150
149
  })
151
150
  };
152
- var mapStateToProps = exports.mapStateToProps = function mapStateToProps(state) {
153
- return {
154
- hasFetchedApps: (0, _reducers.hasFetched)(state),
155
- homeApp: (0, _reducers.getHomeApp)(state)
156
- };
157
- };
158
- var mapDispatchToProps = exports.mapDispatchToProps = function mapDispatchToProps(dispatch) {
159
- return {
160
- fetchApps: function fetchApps() {
161
- return dispatch((0, _reducers.fetchApps)());
162
- },
163
- fetchContext: function fetchContext() {
164
- return dispatch((0, _reducers.fetchContext)());
165
- },
166
- fetchSettingsData: function fetchSettingsData(displayBusy) {
167
- return dispatch((0, _reducers.fetchSettingsData)(displayBusy));
168
- }
169
- };
170
- };
171
- var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Bar);
151
+ var _default = exports.default = Bar;
@@ -7,7 +7,7 @@ import { render } from '@testing-library/react'
7
7
  import { createMockClient } from 'cozy-client'
8
8
  import { useBreakpoints } from 'cozy-ui/transpiled/react/providers/Breakpoints'
9
9
 
10
- import { useInstanceInfo } from 'cozy-client'
10
+ import { useInstanceInfo, useQuery } from 'cozy-client'
11
11
  import { shouldDisplayOffers } from 'cozy-client/dist/models/instance'
12
12
 
13
13
  jest.mock('cozy-device-helper', () => ({
@@ -17,7 +17,9 @@ jest.mock('cozy-device-helper', () => ({
17
17
 
18
18
  jest.mock('cozy-client', () => ({
19
19
  ...require.requireActual('cozy-client'),
20
- useInstanceInfo: jest.fn()
20
+ useInstanceInfo: jest.fn(),
21
+ useQuery: jest.fn(),
22
+ RealTimeQueries: () => null
21
23
  }))
22
24
 
23
25
  jest.mock('cozy-client/dist/models/instance', () => ({
@@ -39,7 +41,12 @@ describe('Bar', () => {
39
41
  useInstanceInfo.mockReturnValue({
40
42
  isLoaded: true,
41
43
  diskUsage: { data: { used: 0 } },
42
- instance: { data: {} }
44
+ instance: { data: {} },
45
+ context: { data: {} }
46
+ })
47
+ useQuery.mockReturnValue({
48
+ data: [],
49
+ fetchStatus: 'loaded'
43
50
  })
44
51
  })
45
52
 
@@ -47,17 +54,7 @@ describe('Bar', () => {
47
54
  isFlagshipApp.mockClear()
48
55
  })
49
56
 
50
- const mockFetchContext = jest.fn().mockResolvedValue({})
51
- const mockFetchApps = jest.fn().mockResolvedValue([])
52
- const mockFetchSettingsData = jest.fn().mockResolvedValue({})
53
-
54
- const setup = ({
55
- fetchContext = mockFetchContext,
56
- fetchApps = mockFetchApps,
57
- fetchSettingsData = mockFetchSettingsData,
58
- isPublic = false,
59
- hasFetchedApps = false
60
- } = {}) => {
57
+ const setup = ({ isPublic = false } = {}) => {
61
58
  const mockClient = createMockClient({
62
59
  clientOptions: {
63
60
  uri: 'http://cozy.localhost:8080'
@@ -67,11 +64,7 @@ describe('Bar', () => {
67
64
  const result = render(
68
65
  <BarLike client={mockClient}>
69
66
  <Bar
70
- fetchContext={fetchContext}
71
- fetchApps={fetchApps}
72
- fetchSettingsData={fetchSettingsData}
73
67
  isPublic={isPublic}
74
- hasFetchedApps={hasFetchedApps}
75
68
  onDrawer={jest.fn()}
76
69
  searchOptions={{ enabled: false }}
77
70
  />
@@ -84,28 +77,16 @@ describe('Bar', () => {
84
77
  }
85
78
  }
86
79
 
87
- it('should fetch data when mounted', () => {
80
+ it('should render the bar', () => {
88
81
  setup()
89
-
90
- expect(mockFetchContext).toHaveBeenCalled()
91
- expect(mockFetchApps).toHaveBeenCalled()
92
- expect(mockFetchSettingsData).toHaveBeenCalled()
82
+ expect(useQuery).toHaveBeenCalled()
93
83
  })
94
84
 
95
- it('should not fetch data if public', () => {
85
+ it('should not fetch apps if public', () => {
96
86
  setup({ isPublic: true })
97
-
98
- expect(mockFetchContext).not.toHaveBeenCalled()
99
- expect(mockFetchApps).not.toHaveBeenCalled()
100
- expect(mockFetchSettingsData).not.toHaveBeenCalled()
101
- })
102
-
103
- it('should call re-fetch data when token is refreshed', () => {
104
- const { client } = setup()
105
- client.emit('tokenRefreshed')
106
-
107
- expect(mockFetchContext).toHaveBeenCalledTimes(2)
108
- expect(mockFetchApps).toHaveBeenCalledTimes(2)
109
- expect(mockFetchSettingsData).toHaveBeenCalledTimes(2)
87
+ expect(useQuery).toHaveBeenCalledWith(
88
+ expect.anything(),
89
+ expect.objectContaining({ enabled: false })
90
+ )
110
91
  })
111
92
  })
@@ -9,13 +9,10 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _reactDom = require("react-dom");
12
- var _reducers = require("../lib/reducers");
13
12
  var _dom = require("../dom");
14
13
  var _Bar = _interopRequireDefault(require("./Bar"));
15
- var _reactRedux = require("react-redux");
16
14
  var _cozyClient = require("cozy-client");
17
15
  var _CozyTheme = _interopRequireDefault(require("cozy-ui-plus/dist/providers/CozyTheme"));
18
- var _stack = _interopRequireDefault(require("../lib/stack"));
19
16
  var _BarProvider = require("./BarProvider");
20
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
21
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
@@ -80,8 +77,8 @@ var BarComponent = exports.BarComponent = function BarComponent(_ref2) {
80
77
  _ref2$isPublic = _ref2.isPublic,
81
78
  isPublic = _ref2$isPublic === void 0 ? false : _ref2$isPublic,
82
79
  onLogOut = _ref2.onLogOut,
83
- _ref2$disableInternal = _ref2.disableInternalStore,
84
- disableInternalStore = _ref2$disableInternal === void 0 ? false : _ref2$disableInternal,
80
+ appIcon = _ref2.appIcon,
81
+ appTextIcon = _ref2.appTextIcon,
85
82
  _ref2$searchOptions = _ref2.searchOptions,
86
83
  searchOptions = _ref2$searchOptions === void 0 ? {
87
84
  enabled: true
@@ -103,25 +100,6 @@ var BarComponent = exports.BarComponent = function BarComponent(_ref2) {
103
100
 
104
101
  // Force public mode in `/public` URLs
105
102
  var isPublicForce = !isPublic && /^\/public/.test(window.location.pathname);
106
- var getOrCreateStore = require("../lib/store").default;
107
- var store;
108
- if (disableInternalStore) {
109
- store = cozyClient.store;
110
- } else {
111
- store = getOrCreateStore();
112
- }
113
- (0, _react.useEffect)(function () {
114
- store.dispatch((0, _reducers.setInfos)(appName, appNamePrefix, appSlug));
115
- _stack.default.init({
116
- cozyClient: cozyClient,
117
- onCreate: function onCreate(data) {
118
- return store.dispatch((0, _reducers.onRealtimeCreate)(data));
119
- },
120
- onDelete: function onDelete(data) {
121
- return store.dispatch((0, _reducers.onRealtimeDelete)(data));
122
- }
123
- });
124
- }, [appName, appNamePrefix, appSlug, cozyClient, store]);
125
103
  var options = {
126
104
  appName: appName,
127
105
  isInvertedTheme: isInvertedTheme,
@@ -132,6 +110,8 @@ var BarComponent = exports.BarComponent = function BarComponent(_ref2) {
132
110
  isPublic: isPublicForce || isPublic,
133
111
  onLogOut: onLogOut,
134
112
  userActionRequired: (0, _dom.getUserActionRequired)(),
113
+ appIcon: appIcon,
114
+ appTextIcon: appTextIcon,
135
115
  searchOptions: searchOptions,
136
116
  componentsProps: componentsProps,
137
117
  onDrawer: function onDrawer(visible) {
@@ -144,17 +124,10 @@ var BarComponent = exports.BarComponent = function BarComponent(_ref2) {
144
124
  }, /*#__PURE__*/_react.default.createElement(_CozyTheme.default, {
145
125
  variant: themeVariant,
146
126
  ignoreCozySettings: options.isPublic
147
- }, disableInternalStore ? /*#__PURE__*/_react.default.createElement(_Bar.default, (0, _extends2.default)({}, options, {
148
- barSearch: barSearch,
149
- barLeft: barLeft,
150
- barCenter: barCenter,
151
- barRight: barRight
152
- })) : /*#__PURE__*/_react.default.createElement(_reactRedux.Provider, {
153
- store: store
154
127
  }, /*#__PURE__*/_react.default.createElement(_Bar.default, (0, _extends2.default)({}, options, {
155
128
  barSearch: barSearch,
156
129
  barLeft: barLeft,
157
130
  barCenter: barCenter,
158
131
  barRight: barRight
159
- })))));
132
+ }))));
160
133
  };
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
- var _reactRedux = require("react-redux");
11
10
  var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
12
11
  var _cozyIntent = require("cozy-intent");
13
12
  var _cozyClient = require("cozy-client");
@@ -25,7 +24,6 @@ var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
25
24
  var _Divider = _interopRequireDefault(require("cozy-ui/transpiled/react/Divider"));
26
25
  var _Typography = _interopRequireDefault(require("cozy-ui/transpiled/react/Typography"));
27
26
  var _Breakpoints = require("cozy-ui/transpiled/react/providers/Breakpoints");
28
- var _reducers = require("../../lib/reducers");
29
27
  var _useI18n2 = _interopRequireDefault(require("../useI18n"));
30
28
  var _AvatarMyself = _interopRequireDefault(require("./components/AvatarMyself"));
31
29
  var _helpers = require("./helpers");
@@ -128,9 +126,4 @@ var UserMenuContent = function UserMenuContent(_ref) {
128
126
  primary: t('userMenu.logOut')
129
127
  }))));
130
128
  };
131
- var mapStateToProps = function mapStateToProps(state) {
132
- return {
133
- isSettingsAppInstalled: (0, _reducers.getIsSettingsAppInstalled)(state)
134
- };
135
- };
136
- var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps)(UserMenuContent);
129
+ var _default = exports.default = UserMenuContent;
@@ -27,7 +27,8 @@ var useStyles = (0, _styles.makeStyles)({
27
27
  }
28
28
  });
29
29
  var UserMenu = function UserMenu(_ref) {
30
- var onLogOut = _ref.onLogOut;
30
+ var onLogOut = _ref.onLogOut,
31
+ isSettingsAppInstalled = _ref.isSettingsAppInstalled;
31
32
  var _useState = (0, _react.useState)(false),
32
33
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
33
34
  isOpen = _useState2[0],
@@ -60,6 +61,7 @@ var UserMenu = function UserMenu(_ref) {
60
61
  onLogOut: onLogOut,
61
62
  instance: instance,
62
63
  diskUsage: diskUsage,
64
+ isSettingsAppInstalled: isSettingsAppInstalled,
63
65
  closeMenu: toggleMenu
64
66
  }),
65
67
  componentsProps: {
@@ -91,6 +93,7 @@ var UserMenu = function UserMenu(_ref) {
91
93
  onLogOut: onLogOut,
92
94
  instance: instance,
93
95
  diskUsage: diskUsage,
96
+ isSettingsAppInstalled: isSettingsAppInstalled,
94
97
  closeMenu: toggleMenu
95
98
  })));
96
99
  };
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getAppsData = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _cozyFlags = _interopRequireDefault(require("cozy-flags"));
10
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
12
+ // cozy-client's useQuery normalizes JSON:API responses — attributes are
13
+ // spread to the top level (e.g. app.slug, app.name exist directly).
14
+ // We only ensure `href` is derived from `links.related` for AppLinker.
15
+ var mapApp = function mapApp(app) {
16
+ return _objectSpread(_objectSpread({}, app), {}, {
17
+ href: app.links && app.links.related || app.href
18
+ });
19
+ };
20
+ var getAppsData = exports.getAppsData = function getAppsData(rawApps, appSlug) {
21
+ var excludedApps = (0, _cozyFlags.default)('apps.hidden') || [];
22
+ var apps = rawApps.map(mapApp).filter(function (app) {
23
+ return !excludedApps.includes(app.slug);
24
+ }).map(function (app) {
25
+ return _objectSpread(_objectSpread({}, app), {}, {
26
+ isCurrentApp: app.slug === appSlug
27
+ });
28
+ });
29
+ var homeApp = apps.find(function (app) {
30
+ return app.slug === 'home';
31
+ }) || null;
32
+ var isSettingsAppInstalled = rawApps.some(function (app) {
33
+ return app.slug === 'settings';
34
+ });
35
+ return {
36
+ apps: apps,
37
+ homeApp: homeApp,
38
+ isSettingsAppInstalled: isSettingsAppInstalled
39
+ };
40
+ };
@@ -6,13 +6,16 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
- var _reactRedux = require("react-redux");
10
9
  var _IconButton = _interopRequireDefault(require("cozy-ui/transpiled/react/IconButton"));
11
10
  var _Icon = _interopRequireDefault(require("cozy-ui/transpiled/react/Icon"));
12
11
  var _HelpOutlined = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/HelpOutlined"));
13
- var _reducers = require("../../lib/reducers");
14
- var HelpLink = function HelpLink(_ref) {
15
- var helpLink = _ref.helpLink;
12
+ var _cozyClient = require("cozy-client");
13
+ var HelpLink = function HelpLink() {
14
+ var _context$data;
15
+ var _useInstanceInfo = (0, _cozyClient.useInstanceInfo)(),
16
+ context = _useInstanceInfo.context;
17
+ var helpLink = ((_context$data = context.data) === null || _context$data === void 0 || (_context$data = _context$data.attributes) === null || _context$data === void 0 ? void 0 : _context$data.help_link) || null;
18
+ if (!helpLink) return null;
16
19
  return /*#__PURE__*/_react.default.createElement(_IconButton.default, {
17
20
  component: "a",
18
21
  href: helpLink,
@@ -24,9 +27,4 @@ var HelpLink = function HelpLink(_ref) {
24
27
  size: "18"
25
28
  }));
26
29
  };
27
- var mapStateToProps = function mapStateToProps(state) {
28
- return {
29
- helpLink: (0, _reducers.getHelpLink)(state)
30
- };
31
- };
32
- var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps)(HelpLink);
30
+ var _default = exports.default = HelpLink;
package/dist/index.js CHANGED
@@ -52,12 +52,6 @@ Object.defineProperty(exports, "BarTheme", {
52
52
  return _BarTheme.BarTheme;
53
53
  }
54
54
  });
55
- Object.defineProperty(exports, "barReducers", {
56
- enumerable: true,
57
- get: function get() {
58
- return _reducers.reducers;
59
- }
60
- });
61
55
  exports.version = void 0;
62
56
  require("cozy-search/dist/stylesheet.css");
63
57
  var _BarComponent = require("./components/BarComponent");
@@ -68,7 +62,6 @@ var _BarTheme = require("./components/BarTheme");
68
62
  var _BarSearch = require("./components/BarSearch");
69
63
  var _BarRoutes = require("./components/BarRoutes");
70
64
  var _BarProvider = _interopRequireDefault(require("./components/BarProvider"));
71
- var _reducers = require("./lib/reducers");
72
65
  /* global __VERSION__ */
73
66
 
74
- var version = exports.version = "\"29.3.0\"";
67
+ var version = exports.version = "\"31.0.0\"";
@@ -4,6 +4,18 @@ import { render, screen } from '@testing-library/react'
4
4
  import { BarComponent, BarProvider, BarLeft } from './index'
5
5
  import { BarLike } from '../test/lib/BarLike'
6
6
 
7
+ jest.mock('cozy-client', () => ({
8
+ ...require.requireActual('cozy-client'),
9
+ useQuery: jest.fn().mockReturnValue({ data: [], fetchStatus: 'loaded' }),
10
+ RealTimeQueries: () => null,
11
+ useInstanceInfo: jest.fn().mockReturnValue({
12
+ isLoaded: true,
13
+ diskUsage: { data: { used: 0 } },
14
+ instance: { data: {} },
15
+ context: { data: {} }
16
+ })
17
+ }))
18
+
7
19
  describe('The bar library', function() {
8
20
  beforeEach(() => {
9
21
  // Set up our document body
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildAppsQuery = void 0;
7
+ var _cozyClient = _interopRequireWildcard(require("cozy-client"));
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ var defaultFetchPolicy = _cozyClient.default.fetchPolicies.olderThan(60 * 60 * 1000);
11
+ var buildAppsQuery = exports.buildAppsQuery = function buildAppsQuery() {
12
+ return {
13
+ definition: function definition() {
14
+ return (0, _cozyClient.Q)('io.cozy.apps');
15
+ },
16
+ options: {
17
+ as: "io.cozy.apps",
18
+ fetchPolicy: defaultFetchPolicy
19
+ }
20
+ };
21
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cozy-bar",
3
- "version": "29.3.0",
3
+ "version": "31.0.0",
4
4
  "description": "cozy-bar.js library, a small lib provided by cozy-stack to inject the Cozy-bar component into each app",
5
5
  "main": "dist/index.js",
6
6
  "author": "Cozy Cloud <contact@cozycloud.cc> (https://cozy.io/)",
@@ -54,11 +54,10 @@
54
54
  "cozy-device-helper": "2.6.0",
55
55
  "cozy-flags": "^4.6.1",
56
56
  "cozy-intent": "^2.29.1",
57
- "cozy-interapp": "0.4.9",
58
57
  "cozy-logger": "1.9.1",
59
58
  "cozy-realtime": "^4.0.5",
60
59
  "cozy-search": "^0.14.0",
61
- "cozy-ui": "^135.0.0",
60
+ "cozy-ui": "^137.0.0",
62
61
  "cozy-ui-plus": "^4.0.0",
63
62
  "eslint-config-cozy-app": "2.0.0",
64
63
  "identity-obj-proxy": "3.0.0",
@@ -75,13 +74,7 @@
75
74
  },
76
75
  "dependencies": {
77
76
  "lodash.set": "^4.3.2",
78
- "lodash.unionwith": "4.6.0",
79
- "prop-types": "15.7.2",
80
- "react-redux": "5.1.1",
81
- "redux": "4.1.2",
82
- "redux-logger": "3.0.6",
83
- "redux-persist": "5.10.0",
84
- "redux-thunk": "2.3.0"
77
+ "prop-types": "15.7.2"
85
78
  },
86
79
  "peerDependencies": {
87
80
  "@cozy/minilog": ">=1.0.0",
@@ -90,10 +83,9 @@
90
83
  "cozy-device-helper": ">=2.6.0",
91
84
  "cozy-flags": ">=4.6.1",
92
85
  "cozy-intent": ">=2.29.1",
93
- "cozy-interapp": ">=0.4.9",
94
86
  "cozy-realtime": ">=4.0.5",
95
87
  "cozy-search": ">=0.14.0",
96
- "cozy-ui": ">=135.0.0",
88
+ "cozy-ui": ">=137.0.0",
97
89
  "cozy-ui-plus": ">=4.0.0",
98
90
  "react": ">=16.10.1",
99
91
  "react-dom": ">=16.10.1",