cozy-sharing 31.0.2 → 31.2.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.
Files changed (81) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/components/FederatedFolder/DumbFederatedFolderModal.js +15 -16
  3. package/dist/components/FederatedFolder/FederatedFolderModal.js +78 -103
  4. package/dist/components/FederatedFolder/FederatedFolderModal.spec.js +102 -292
  5. package/dist/components/Recipient/GroupRecipientPermissions.js +15 -11
  6. package/dist/components/Recipient/LinkRecipient.js +15 -11
  7. package/dist/components/Recipient/LinkRecipientLite.js +1 -1
  8. package/dist/components/Recipient/LinkRecipientPermissions.js +2 -1
  9. package/dist/components/Recipient/MemberRecipient.spec.js +8 -10
  10. package/dist/components/Recipient/MemberRecipientLite.js +1 -1
  11. package/dist/components/Recipient/MemberRecipientPermissions.js +16 -12
  12. package/dist/components/Recipient/MemberRecipientPermissions.spec.js +62 -50
  13. package/dist/components/Recipient/RecipientConfirm.js +0 -5
  14. package/dist/components/ShareAutosuggest.js +9 -4
  15. package/dist/components/ShareByEmail.js +29 -274
  16. package/dist/components/ShareByEmail.spec.js +52 -230
  17. package/dist/components/ShareByLink.js +1 -3
  18. package/dist/components/ShareDialogCozyToCozy.js +169 -35
  19. package/dist/components/ShareDialogCozyToCozy.spec.js +123 -36
  20. package/dist/components/ShareDialogTwoStepsConfirmationContainer.js +13 -3
  21. package/dist/components/ShareModal/SharingDetailsModal.js +0 -5
  22. package/dist/components/ShareRecipientsInput.js +6 -3
  23. package/dist/components/SharedDrive/SharedDriveForm.js +17 -25
  24. package/dist/components/SharedDrive/SharedDriveModal.js +1 -1
  25. package/dist/components/SharedDrive/SharedDriveRecipientPermissions.js +15 -10
  26. package/dist/components/SharedDrive/useSharedDrive.js +33 -57
  27. package/dist/components/SharedDrive/useSharedDrive.spec.js +29 -93
  28. package/dist/components/SharedFolder/DumbBatchSharedFolderModal.js +15 -26
  29. package/dist/components/Sharetypeselect.js +85 -90
  30. package/dist/hooks/usePendingRecipients.js +20 -0
  31. package/dist/hooks/usePendingRecipients.spec.js +30 -0
  32. package/dist/styles/autosuggest.styl +8 -2
  33. package/dist/styles/share.styl +0 -39
  34. package/dist/stylesheet.css +8 -36
  35. package/locales/en.json +14 -44
  36. package/locales/fr.json +14 -44
  37. package/locales/ru.json +14 -44
  38. package/locales/vi.json +14 -42
  39. package/package.json +2 -2
  40. package/src/components/FederatedFolder/DumbFederatedFolderModal.jsx +14 -15
  41. package/src/components/FederatedFolder/FederatedFolderModal.jsx +50 -67
  42. package/src/components/FederatedFolder/FederatedFolderModal.spec.jsx +63 -186
  43. package/src/components/Recipient/GroupRecipientPermissions.jsx +15 -13
  44. package/src/components/Recipient/LinkRecipient.jsx +9 -9
  45. package/src/components/Recipient/LinkRecipientLite.jsx +1 -3
  46. package/src/components/Recipient/LinkRecipientPermissions.jsx +2 -1
  47. package/src/components/Recipient/MemberRecipient.spec.jsx +4 -6
  48. package/src/components/Recipient/MemberRecipientLite.jsx +2 -2
  49. package/src/components/Recipient/MemberRecipientPermissions.jsx +16 -21
  50. package/src/components/Recipient/MemberRecipientPermissions.spec.jsx +21 -23
  51. package/src/components/ShareAutosuggest.jsx +7 -2
  52. package/src/components/ShareByEmail.jsx +35 -186
  53. package/src/components/ShareByEmail.spec.jsx +22 -173
  54. package/src/components/ShareByLink.jsx +1 -7
  55. package/src/components/ShareDialogCozyToCozy.jsx +171 -38
  56. package/src/components/ShareDialogCozyToCozy.spec.jsx +67 -1
  57. package/src/components/ShareDialogTwoStepsConfirmationContainer.jsx +11 -1
  58. package/src/components/ShareRecipientsInput.jsx +5 -2
  59. package/src/components/SharedDrive/SharedDriveForm.jsx +16 -25
  60. package/src/components/SharedDrive/SharedDriveModal.jsx +1 -1
  61. package/src/components/SharedDrive/SharedDriveRecipientPermissions.jsx +15 -17
  62. package/src/components/SharedDrive/useSharedDrive.js +24 -50
  63. package/src/components/SharedDrive/useSharedDrive.spec.js +19 -67
  64. package/src/components/SharedFolder/DumbBatchSharedFolderModal.jsx +15 -29
  65. package/src/components/Sharetypeselect.jsx +75 -58
  66. package/src/hooks/usePendingRecipients.js +13 -0
  67. package/src/hooks/usePendingRecipients.spec.js +21 -0
  68. package/src/styles/autosuggest.styl +8 -2
  69. package/src/styles/share.styl +0 -39
  70. package/dist/components/Recipient/actions/revokeGroup.js +0 -42
  71. package/dist/components/Recipient/actions/revokeMember.js +0 -42
  72. package/dist/components/Recipient/actions/revokeSharedDriveMember.js +0 -41
  73. package/dist/components/SharedDrive/helpers.js +0 -102
  74. package/dist/components/SharedDrive/helpers.spec.js +0 -227
  75. package/dist/components/Sharesubmit.js +0 -28
  76. package/src/components/Recipient/actions/revokeGroup.js +0 -42
  77. package/src/components/Recipient/actions/revokeMember.js +0 -42
  78. package/src/components/Recipient/actions/revokeSharedDriveMember.js +0 -41
  79. package/src/components/SharedDrive/helpers.js +0 -108
  80. package/src/components/SharedDrive/helpers.spec.js +0 -177
  81. package/src/components/Sharesubmit.jsx +0 -31
@@ -1,104 +1,99 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
-
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
-
5
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
-
7
- import cx from 'classnames';
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import _extends from "@babel/runtime/helpers/extends";
8
3
  import PropTypes from 'prop-types';
9
- import React from 'react';
10
- import Icon from 'cozy-ui/transpiled/react/Icon';
11
- import BottomIcon from 'cozy-ui/transpiled/react/Icons/Bottom';
12
- import CheckIcon from 'cozy-ui/transpiled/react/Icons/Check';
13
- import SelectBox, { components } from 'cozy-ui/transpiled/react/SelectBox';
4
+ import React, { forwardRef, useRef, useState } from 'react';
5
+ import ActionsMenu from 'cozy-ui/transpiled/react/ActionsMenu';
6
+ import { makeActions } from 'cozy-ui/transpiled/react/ActionsMenu/Actions';
7
+ import ActionsMenuItem from 'cozy-ui/transpiled/react/ActionsMenu/ActionsMenuItem';
8
+ import DropdownButton from 'cozy-ui/transpiled/react/DropdownButton';
9
+ import ListItemIcon from 'cozy-ui/transpiled/react/ListItemIcon';
10
+ import ListItemText from 'cozy-ui/transpiled/react/ListItemText';
11
+ import Radios from 'cozy-ui/transpiled/react/Radios';
14
12
  import logger from '../logger';
15
- var styles = {
16
- "share-modal-content": "share__share-modal-content___1iqEq",
17
- "coz-form": "share__coz-form___1ICST",
18
- "coz-form-group": "share__coz-form-group___VsQp7",
19
- "coz-form-desc": "share__coz-form-desc___2mYN4",
20
- "coz-form-label": "share__coz-form-label___bogBw",
21
- "coz-form-label--error": "share__coz-form-label--error___3YPkf",
22
- "coz-form-errors": "share__coz-form-errors___2xYRz",
23
- "coz-form-controls": "share__coz-form-controls___H8kGc",
24
- "coz-form-controls--full": "share__coz-form-controls--full___1oQXF",
25
- "coz-form-controls--dispatch": "share__coz-form-controls--dispatch___1zIxt",
26
- "error": "share__error___pwqPO",
27
- "share-byemail-onlybylink": "share__share-byemail-onlybylink___29W-t",
28
- "aligned-dropdown-button": "share__aligned-dropdown-button___3crgG",
29
- "share-type-control": "share__share-type-control___1YoRr",
30
- "select-wrapper": "share__select-wrapper___3XBKC",
31
- "select-option": "share__select-option___3Jp8_",
32
- "select-option-label": "share__select-option-label___1BWz_",
33
- "select-option-desc": "share__select-option-desc___3jOnr",
34
- "share-details-created": "share__share-details-created___z3nvO",
35
- "share-details-perm": "share__share-details-perm___3HjxK",
36
- "share-details-perm-desc": "share__share-details-perm-desc___3HyHu"
37
- };
38
13
 
39
- var DropdownIndicator = function DropdownIndicator(props) {
40
- return /*#__PURE__*/React.createElement(components.DropdownIndicator, props, /*#__PURE__*/React.createElement(Icon, {
41
- icon: BottomIcon,
42
- color: "var(--iconTextColor)"
43
- }));
14
+ var makeShareTypeAction = function makeShareTypeAction(_ref) {
15
+ var option = _ref.option,
16
+ isSelected = _ref.isSelected,
17
+ onSelect = _ref.onSelect;
18
+ var Component = /*#__PURE__*/forwardRef(function (props, ref) {
19
+ return /*#__PURE__*/React.createElement(ActionsMenuItem, _extends({}, props, {
20
+ ref: ref,
21
+ onClick: function onClick() {
22
+ return onSelect(option.value);
23
+ },
24
+ disabled: option.disabled
25
+ }), /*#__PURE__*/React.createElement(ListItemIcon, null, /*#__PURE__*/React.createElement(Radios, {
26
+ checked: isSelected
27
+ })), /*#__PURE__*/React.createElement(ListItemText, {
28
+ primary: option.label
29
+ }));
30
+ });
31
+ Component.displayName = "ShareTypeAction-".concat(option.value);
32
+ return function () {
33
+ return {
34
+ name: "shareType-".concat(option.value),
35
+ label: option.label,
36
+ icon: null,
37
+ action: function action() {
38
+ return onSelect(option.value);
39
+ },
40
+ Component: Component
41
+ };
42
+ };
44
43
  };
45
44
 
46
- var Option = function Option(props) {
47
- return /*#__PURE__*/React.createElement(components.Option, props, /*#__PURE__*/React.createElement("div", {
48
- className: cx(styles['select-option'])
49
- }, props.isSelected && /*#__PURE__*/React.createElement(Icon, {
50
- icon: CheckIcon,
51
- color: "var(--primaryColor)"
52
- }), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
53
- className: styles['select-option-label']
54
- }, props.label), /*#__PURE__*/React.createElement("div", {
55
- className: styles['select-option-desc']
56
- }, props.data.desc))));
57
- };
45
+ var ShareTypeSelect = function ShareTypeSelect(_ref2) {
46
+ var _options$find;
58
47
 
59
- var customStyles = {
60
- option: function option(base, state) {
61
- return _objectSpread(_objectSpread({}, base), {}, {
62
- color: 'var(--primaryTextColor)',
63
- backgroundColor: state.isFocused ? 'var(--actionColorHover)' : null,
64
- padding: 0,
65
- borderBottom: state.options.findIndex(function (o) {
66
- return o.value === state.value;
67
- }) === 0 ? '1px solid var(--borderMainColor)' : null
68
- });
69
- },
70
- menu: function menu(base) {
71
- return _objectSpread(_objectSpread({}, base), {}, {
72
- backgroundColor: 'var(--paperBackgroundColor)',
73
- width: '204%'
74
- });
75
- }
76
- };
48
+ var value = _ref2.value,
49
+ options = _ref2.options,
50
+ onChange = _ref2.onChange;
51
+ var buttonRef = useRef();
52
+
53
+ var _useState = useState(false),
54
+ _useState2 = _slicedToArray(_useState, 2),
55
+ isOpen = _useState2[0],
56
+ setOpen = _useState2[1];
57
+
58
+ var open = function open() {
59
+ return setOpen(true);
60
+ };
61
+
62
+ var close = function close() {
63
+ return setOpen(false);
64
+ };
77
65
 
78
- var ShareTypeSelect = function ShareTypeSelect(_ref) {
79
- var options = _ref.options,
80
- _onChange = _ref.onChange;
81
- return /*#__PURE__*/React.createElement("div", {
82
- className: styles['select-wrapper']
83
- }, /*#__PURE__*/React.createElement(SelectBox, {
84
- name: "select",
85
- classNamePrefix: "needsclick react-select",
86
- components: {
87
- DropdownIndicator: DropdownIndicator,
88
- Option: Option
89
- },
90
- styles: customStyles,
91
- defaultValue: options[0],
92
- isSearchable: false,
93
- onChange: function onChange(option) {
94
- _onChange(option.value);
95
- },
96
- options: options,
97
- menuPosition: "fixed"
66
+ var onSelect = function onSelect(nextValue) {
67
+ onChange(nextValue);
68
+ setOpen(false);
69
+ };
70
+
71
+ var selectedOption = (_options$find = options.find(function (option) {
72
+ return option.value === value;
73
+ })) !== null && _options$find !== void 0 ? _options$find : options[0];
74
+ var actions = makeActions(options.map(function (option) {
75
+ return makeShareTypeAction({
76
+ option: option,
77
+ isSelected: option.value === selectedOption.value,
78
+ onSelect: onSelect
79
+ });
80
+ }));
81
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DropdownButton, {
82
+ ref: buttonRef,
83
+ onClick: open,
84
+ textVariant: "body2",
85
+ size: "small"
86
+ }, selectedOption.label), /*#__PURE__*/React.createElement(ActionsMenu, {
87
+ ref: buttonRef,
88
+ open: isOpen,
89
+ actions: actions,
90
+ autoClose: true,
91
+ onClose: close
98
92
  }));
99
93
  };
100
94
 
101
95
  ShareTypeSelect.propTypes = {
96
+ value: PropTypes.string,
102
97
  onChange: PropTypes.func,
103
98
  options: PropTypes.array.isRequired
104
99
  };
@@ -0,0 +1,20 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useState } from 'react';
3
+ export var usePendingRecipients = function usePendingRecipients() {
4
+ var _useState = useState([]),
5
+ _useState2 = _slicedToArray(_useState, 2),
6
+ pendingRecipients = _useState2[0],
7
+ setPendingRecipients = _useState2[1];
8
+
9
+ var _useState3 = useState('readWrite'),
10
+ _useState4 = _slicedToArray(_useState3, 2),
11
+ selectedOption = _useState4[0],
12
+ setSelectedOption = _useState4[1];
13
+
14
+ return {
15
+ pendingRecipients: pendingRecipients,
16
+ setPendingRecipients: setPendingRecipients,
17
+ selectedOption: selectedOption,
18
+ setSelectedOption: setSelectedOption
19
+ };
20
+ };
@@ -0,0 +1,30 @@
1
+ import { renderHook, act } from '@testing-library/react-hooks';
2
+ import { usePendingRecipients } from './usePendingRecipients';
3
+ describe('usePendingRecipients', function () {
4
+ it('starts with empty recipients and readWrite option', function () {
5
+ var _renderHook = renderHook(function () {
6
+ return usePendingRecipients();
7
+ }),
8
+ result = _renderHook.result;
9
+
10
+ expect(result.current.pendingRecipients).toEqual([]);
11
+ expect(result.current.selectedOption).toBe('readWrite');
12
+ });
13
+ it('exposes setters that update state', function () {
14
+ var _renderHook2 = renderHook(function () {
15
+ return usePendingRecipients();
16
+ }),
17
+ result = _renderHook2.result;
18
+
19
+ act(function () {
20
+ result.current.setPendingRecipients([{
21
+ email: 'a@b.c'
22
+ }]);
23
+ result.current.setSelectedOption('readOnly');
24
+ });
25
+ expect(result.current.pendingRecipients).toEqual([{
26
+ email: 'a@b.c'
27
+ }]);
28
+ expect(result.current.selectedOption).toBe('readOnly');
29
+ });
30
+ });
@@ -5,7 +5,7 @@
5
5
  box-sizing border-box
6
6
  position absolute
7
7
  top 100%
8
- margin-top .25rem
8
+ margin-top .5rem
9
9
  z-index var(--zIndex-alertMobile)
10
10
  width 100%
11
11
  overflow hidden
@@ -37,12 +37,13 @@
37
37
  display flex
38
38
  flex-wrap wrap
39
39
  align-items center
40
- padding .25rem .5rem
40
+ padding .25rem 3.5rem .25rem .5rem
41
41
  border-radius .25rem
42
42
  border 1px solid var(--borderMainColor)
43
43
  min-height 2.5rem
44
44
  max-height 6.75rem
45
45
  overflow auto
46
+ position relative
46
47
 
47
48
  &:hover
48
49
  border 1px solid var(--borderMainColor)
@@ -69,3 +70,8 @@
69
70
  font-size 1rem
70
71
  .recipientChip
71
72
  margin .25rem .5rem .25rem 0
73
+
74
+ .endAdornment
75
+ position absolute
76
+ top .75rem
77
+ right 1rem
@@ -38,45 +38,6 @@
38
38
  .coz-form-desc
39
39
  color var(--secondaryTextColor)
40
40
 
41
- .share-type-control
42
- display flex
43
- flex-direction row
44
- justify-content space-between
45
- padding .5rem 0 0
46
-
47
- .select-wrapper
48
- flex 0 0 49%
49
- position relative
50
-
51
- .select-option
52
- padding .5rem 1.5rem .5rem 3rem
53
- position relative
54
-
55
- svg
56
- position absolute
57
- left 1rem
58
- top 1rem
59
-
60
-
61
- .select-option-label
62
- line-height 2
63
-
64
- .select-option-desc
65
- line-height 1.5
66
- font-size .8125rem
67
- color var(--secondaryTextColor)
68
-
69
-
70
-
71
- button
72
- flex 0 0 49%
73
- margin 0
74
-
75
- :global
76
- // dirty hack for react-select: its API doesn't allow to make change to active styles
77
- .react-select__option:active
78
- background-color var(--defaultBackgroundColor) !important
79
-
80
41
  input[type=text]
81
42
  width 100%
82
43
 
@@ -312,40 +312,6 @@
312
312
  .share__coz-form-group___VsQp7 .share__coz-form-desc___2mYN4 {
313
313
  color: var(--secondaryTextColor);
314
314
  }
315
- .share__share-type-control___1YoRr {
316
- display: flex;
317
- flex-direction: row;
318
- justify-content: space-between;
319
- padding: 0.5rem 0 0;
320
- }
321
- .share__share-type-control___1YoRr .share__select-wrapper___3XBKC {
322
- flex: 0 0 49%;
323
- position: relative;
324
- }
325
- .share__share-type-control___1YoRr .share__select-wrapper___3XBKC .share__select-option___3Jp8_ {
326
- padding: 0.5rem 1.5rem 0.5rem 3rem;
327
- position: relative;
328
- }
329
- .share__share-type-control___1YoRr .share__select-wrapper___3XBKC .share__select-option___3Jp8_ svg {
330
- position: absolute;
331
- left: 1rem;
332
- top: 1rem;
333
- }
334
- .share__share-type-control___1YoRr .share__select-wrapper___3XBKC .share__select-option-label___1BWz_ {
335
- line-height: 2;
336
- }
337
- .share__share-type-control___1YoRr .share__select-wrapper___3XBKC .share__select-option-desc___3jOnr {
338
- line-height: 1.5;
339
- font-size: 0.8125rem;
340
- color: var(--secondaryTextColor);
341
- }
342
- .share__share-type-control___1YoRr button {
343
- flex: 0 0 49%;
344
- margin: 0;
345
- }
346
- .react-select__option:active {
347
- background-color: var(--defaultBackgroundColor) !important;
348
- }
349
315
  input[type=text] {
350
316
  width: 100%;
351
317
  }
@@ -380,7 +346,7 @@ input[type=text] {
380
346
  box-sizing: border-box;
381
347
  position: absolute;
382
348
  top: 100%;
383
- margin-top: 0.25rem;
349
+ margin-top: 0.5rem;
384
350
  z-index: var(--zIndex-alertMobile);
385
351
  width: 100%;
386
352
  overflow: hidden;
@@ -412,12 +378,13 @@ input[type=text] {
412
378
  display: flex;
413
379
  flex-wrap: wrap;
414
380
  align-items: center;
415
- padding: 0.25rem 0.5rem;
381
+ padding: 0.25rem 3.5rem 0.25rem 0.5rem;
416
382
  border-radius: 0.25rem;
417
383
  border: 1px solid var(--borderMainColor);
418
384
  min-height: 2.5rem;
419
385
  max-height: 6.75rem;
420
386
  overflow: auto;
387
+ position: relative;
421
388
  }
422
389
  .autosuggest__recipientsContainer___1JYxA:hover {
423
390
  border: 1px solid var(--borderMainColor);
@@ -449,6 +416,11 @@ input[type=text] {
449
416
  .autosuggest__recipientChip___d5I3R {
450
417
  margin: 0.25rem 0.5rem 0.25rem 0;
451
418
  }
419
+ .autosuggest__endAdornment___2EwTN {
420
+ position: absolute;
421
+ top: 0.75rem;
422
+ right: 1rem;
423
+ }
452
424
  /* imported from button.styl */
453
425
 
454
426
  .button__coz-btn-shared___9MFbY {
package/locales/en.json CHANGED
@@ -14,12 +14,8 @@
14
14
  "unregistered": "Error"
15
15
  },
16
16
  "type": {
17
- "one-way": "Can view",
18
- "two-way": "Can change",
19
- "desc": {
20
- "one-way": "Contacts can view, download, and add the content to their Twake. If they add the content to their Twake, they will get updates you make to the content, but they won't be able to update it.",
21
- "two-way": "Contacts can update, delete and add the content to their Twake. Updates on the content will be seen on other Cozies."
22
- }
17
+ "one-way": "Viewer",
18
+ "two-way": "Editor"
23
19
  },
24
20
  "locked-type-file": "Coming soon: you will be able to change permissions you grant on the file.",
25
21
  "locked-type-folder": "Coming soon: you will be able to change permissions you grant on the folder.",
@@ -35,6 +31,7 @@
35
31
  "count": "%{smart_count} member |||| %{smart_count} members",
36
32
  "others": "and 1 other… |||| and %{smart_count} others…",
37
33
  "otherContacts": "other contact |||| other contacts",
34
+ "revoke": "Remove from sharing",
38
35
  "error": {
39
36
  "changePermission": "An error occurred while changing the permissions. Please try again."
40
37
  }
@@ -105,8 +102,8 @@
105
102
  "details": {
106
103
  "title": "Sharing details",
107
104
  "createdAt": "On %{date}",
108
- "ro": "Can read",
109
- "rw": "Can change",
105
+ "ro": "Viewer",
106
+ "rw": "Editor",
110
107
  "desc": {
111
108
  "ro": "You can view, download, and add this content to your Twake. You will get updates by the owner, but you won't be able to update this content yourself.",
112
109
  "rw": "You can view, update, delete and add this content to your Twake. Updates you make will be seen on other Cozies."
@@ -130,7 +127,7 @@
130
127
  "shareByEmail": {
131
128
  "subtitle": "By email",
132
129
  "emailPlaceholder": "Add contacts",
133
- "send": "Send",
130
+ "send": "Share",
134
131
  "singleContactSuccess": "You sent an invite to %{email}.",
135
132
  "contactSuccess": "You sent an invite to %{smart_count} contact. |||| You sent an invite to %{smart_count} contacts.",
136
133
  "singleGroupSuccess": "You sent an invite to the members of the %{groupName} group.",
@@ -174,8 +171,8 @@
174
171
  "details": {
175
172
  "title": "Sharing details",
176
173
  "createdAt": "On %{date}",
177
- "ro": "Can read",
178
- "rw": "Can change",
174
+ "ro": "Viewer",
175
+ "rw": "Editor",
179
176
  "desc": {
180
177
  "ro": "You can view, download, and add this content to your Twake. You will get updates by the owner, but you won't be able to update this content yourself.",
181
178
  "rw": "You can view, update, delete and add this content to your Twake. Updates you make will be seen on other Cozies."
@@ -198,7 +195,7 @@
198
195
  "subtitle": "By email",
199
196
  "email": "To:",
200
197
  "emailPlaceholder": "Enter the email address or name of the recipient",
201
- "send": "Send",
198
+ "send": "Share",
202
199
  "singleContactSuccess": "You sent an invite to %{email}.",
203
200
  "contactSuccess": "You sent an invite to %{smart_count} contact. |||| You sent an invite to %{smart_count} contacts.",
204
201
  "singleGroupSuccess": "You sent an invite to the members of the %{groupName} group.",
@@ -267,7 +264,7 @@
267
264
  "subtitle": "By email",
268
265
  "email": "email",
269
266
  "emailPlaceholder": "Enter the email address or name of the recipient",
270
- "send": "Send",
267
+ "send": "Share",
271
268
  "singleContactSuccess": "You sent an invite to %{email}.",
272
269
  "contactSuccess": "You sent an invite to %{smart_count} contact. |||| You sent an invite to %{smart_count} contacts.",
273
270
  "singleGroupSuccess": "You sent an invite to the members of the %{groupName} group.",
@@ -306,8 +303,8 @@
306
303
  "details": {
307
304
  "title": "Sharing details",
308
305
  "createdAt": "On %{date}",
309
- "ro": "Can read",
310
- "rw": "Can change",
306
+ "ro": "Viewer",
307
+ "rw": "Editor",
311
308
  "desc": {
312
309
  "ro": "You can view, download, and add this content to your Twake. You will get updates by the owner, but you won't be able to update this content yourself.",
313
310
  "rw": "You can view, update, delete and add this content to your Twake. Updates you make will be seen on other Cozies."
@@ -331,7 +328,7 @@
331
328
  "subtitle": "By email",
332
329
  "email": "Send to:",
333
330
  "emailPlaceholder": "Enter the email address or name of the recipient",
334
- "send": "Send",
331
+ "send": "Share",
335
332
  "error": {
336
333
  "addingRecipient": "An error occurred while adding the recipient. Please try again."
337
334
  },
@@ -384,37 +381,10 @@
384
381
  "content": "You cannot share %{documentName} with more than %{limit} members.",
385
382
  "confirm": "I understand"
386
383
  },
387
- "RevokeMemberItem": {
388
- "revoke": {
389
- "title": "Remove from sharing",
390
- "desc": "This contact will keep a copy but the changes won't be synchrnoized anymore.",
391
- "sharedDriveDesc": "Your contact will no longer be able to access the data."
392
- },
393
- "revokeSelf": {
394
- "title": "Remove me from sharing",
395
- "desc": "You keep the content but it won't be updated between your Twake anymore."
396
- }
397
- },
398
- "RevokeSharedDriveMemberItem": {
399
- "revoke": {
400
- "title": "Remove"
401
- }
402
- },
403
384
  "GroupRecipient": {
404
385
  "secondary": "%{memberCount} member |||| %{memberCount} members",
405
386
  "secondary_you": "including you"
406
387
  },
407
- "RevokeGroupItem": {
408
- "revoke": {
409
- "title": "Remove group from sharing",
410
- "desc": "Group members will keep a copy but the changes won't be synchrnoized anymore.",
411
- "sharedDriveDesc": "Group members will no longer be able to access the data."
412
- },
413
- "revokeSelf": {
414
- "title": "Remove me from sharing",
415
- "desc": "You keep the content but it won't be updated between your Twake anymore."
416
- }
417
- },
418
388
  "GroupRecipientDetail": {
419
389
  "subtitle": "Managed by %{ownerName}",
420
390
  "empty": {
@@ -480,7 +450,7 @@
480
450
  "cancel": "Cancel",
481
451
  "create": "Create",
482
452
  "save": "Save",
483
- "addPeople": "Add people to the shared drive",
453
+ "addPeople": "Add users",
484
454
  "successNotification": "Shared drive has been added",
485
455
  "errorNotification": "Error during shared drive creation",
486
456
  "successNotificationUpdate": "Your shared drive has been modified",