cozy-sharing 32.1.2 → 32.3.2

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 (36) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/components/FederatedFolder/FederatedFolderModal.js +96 -22
  3. package/dist/components/FederatedFolder/FederatedFolderModal.spec.js +137 -219
  4. package/dist/components/Recipient/RecipientList.js +0 -15
  5. package/dist/components/ShareAutosuggest.js +1 -0
  6. package/dist/components/ShareAutosuggest.spec.js +12 -4
  7. package/dist/components/ShareDialogCozyToCozy.spec.js +55 -8
  8. package/dist/components/ShareDiscardChangesModal.js +35 -0
  9. package/dist/components/ShareModal/ShareModal.js +8 -8
  10. package/dist/components/ShareRecipientsInput.js +13 -3
  11. package/dist/components/ShareRecipientsInput.spec.js +63 -4
  12. package/dist/state.js +6 -1
  13. package/locales/en.json +10 -5
  14. package/locales/fr.json +10 -5
  15. package/locales/ru.json +10 -5
  16. package/locales/vi.json +10 -5
  17. package/package.json +2 -2
  18. package/src/components/FederatedFolder/FederatedFolderModal.jsx +230 -138
  19. package/src/components/FederatedFolder/FederatedFolderModal.spec.jsx +59 -134
  20. package/src/components/Recipient/RecipientList.jsx +0 -18
  21. package/src/components/ShareAutosuggest.jsx +1 -0
  22. package/src/components/ShareAutosuggest.spec.jsx +10 -5
  23. package/src/components/ShareDialogCozyToCozy.spec.jsx +50 -4
  24. package/src/components/ShareDiscardChangesModal.jsx +40 -0
  25. package/src/components/ShareModal/ShareModal.jsx +5 -5
  26. package/src/components/ShareRecipientsInput.jsx +11 -6
  27. package/src/components/ShareRecipientsInput.spec.jsx +59 -0
  28. package/src/state.js +5 -1
  29. package/dist/components/SharedDrive/SharedDriveRecipient.js +0 -61
  30. package/dist/components/SharedDrive/SharedDriveRecipientPermissions.js +0 -109
  31. package/dist/components/SharedDrive/SharedDriveRecipientStatus.js +0 -22
  32. package/dist/components/SharedFolder/DumbBatchSharedFolderModal.js +0 -145
  33. package/src/components/SharedDrive/SharedDriveRecipient.jsx +0 -62
  34. package/src/components/SharedDrive/SharedDriveRecipientPermissions.jsx +0 -78
  35. package/src/components/SharedDrive/SharedDriveRecipientStatus.jsx +0 -23
  36. package/src/components/SharedFolder/DumbBatchSharedFolderModal.jsx +0 -161
@@ -250,7 +250,7 @@ describe('ShareDialogCozyToCozy', function () {
250
250
  }
251
251
  }, _callee8);
252
252
  })));
253
- it('main Share button calls onClose when there are no pending chips', function () {
253
+ it('main Done button calls onClose when there are no pending chips', function () {
254
254
  var onClose = jest.fn();
255
255
  var onShare = jest.fn();
256
256
 
@@ -263,13 +263,60 @@ describe('ShareDialogCozyToCozy', function () {
263
263
  getByRole = _setup6.getByRole;
264
264
 
265
265
  fireEvent.click(getByRole('button', {
266
- name: 'Share'
266
+ name: 'Done'
267
267
  }));
268
268
  expect(onShare).not.toHaveBeenCalled();
269
269
  expect(onClose).toHaveBeenCalledTimes(1);
270
270
  });
271
- it('main Share button calls onShare with chips then closes', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {
272
- var onClose, onShare, props, _setup7, getByPlaceholderText, getByRole;
271
+ it('close action closes dialog when there are no pending chips', function () {
272
+ var onClose = jest.fn();
273
+
274
+ var props = _objectSpread(_objectSpread({}, getMockProps()), {}, {
275
+ onClose: onClose
276
+ });
277
+
278
+ var _setup7 = setup(props),
279
+ getByRole = _setup7.getByRole;
280
+
281
+ fireEvent.click(getByRole('button', {
282
+ name: 'Close'
283
+ }));
284
+ expect(onClose).toHaveBeenCalledTimes(1);
285
+ });
286
+ it('close action closes dialog when there are pending chips', function () {
287
+ var onClose = jest.fn();
288
+
289
+ var props = _objectSpread(_objectSpread({}, getMockProps()), {}, {
290
+ onClose: onClose
291
+ });
292
+
293
+ var _setup8 = setup(props),
294
+ getByPlaceholderText = _setup8.getByPlaceholderText,
295
+ getByRole = _setup8.getByRole,
296
+ queryByText = _setup8.queryByText;
297
+
298
+ act(function () {
299
+ fireEvent.change(getByPlaceholderText('Enter the email address or name of the recipient'), {
300
+ target: {
301
+ value: 'new@cozycloud.cc'
302
+ }
303
+ });
304
+ });
305
+ act(function () {
306
+ fireEvent.keyPress(getByPlaceholderText('Enter the email address or name of the recipient'), {
307
+ key: 'Enter',
308
+ code: 'Enter',
309
+ charCode: 13
310
+ });
311
+ });
312
+ fireEvent.click(getByRole('button', {
313
+ name: 'Close'
314
+ }));
315
+ expect(queryByText("Discard the changes you haven't saved?")).toBe(null);
316
+ expect(onClose).toHaveBeenCalledTimes(1);
317
+ });
318
+ it('main Done button calls onShare with chips then closes', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10() {
319
+ var onClose, onShare, props, _setup9, getByPlaceholderText, getByRole;
273
320
 
274
321
  return _regeneratorRuntime.wrap(function _callee10$(_context10) {
275
322
  while (1) switch (_context10.prev = _context10.next) {
@@ -280,7 +327,7 @@ describe('ShareDialogCozyToCozy', function () {
280
327
  onClose: onClose,
281
328
  onShare: onShare
282
329
  });
283
- _setup7 = setup(props), getByPlaceholderText = _setup7.getByPlaceholderText, getByRole = _setup7.getByRole;
330
+ _setup9 = setup(props), getByPlaceholderText = _setup9.getByPlaceholderText, getByRole = _setup9.getByRole;
284
331
  act(function () {
285
332
  fireEvent.change(getByPlaceholderText('Enter the email address or name of the recipient'), {
286
333
  target: {
@@ -301,7 +348,7 @@ describe('ShareDialogCozyToCozy', function () {
301
348
  while (1) switch (_context9.prev = _context9.next) {
302
349
  case 0:
303
350
  fireEvent.click(getByRole('button', {
304
- name: 'Share'
351
+ name: 'Done'
305
352
  }));
306
353
 
307
354
  case 1:
@@ -330,7 +377,7 @@ describe('ShareDialogCozyToCozy', function () {
330
377
  }, _callee10);
331
378
  })));
332
379
  it("should display confirmation of 'contact rejection' when user click on the 'reject' button", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee15() {
333
- var _deferablePromise5, promise, resolve, rejectRecipient, props, _setup8, getByText, verifyButton, rejectButton, confirmRejectButton;
380
+ var _deferablePromise5, promise, resolve, rejectRecipient, props, _setup10, getByText, verifyButton, rejectButton, confirmRejectButton;
334
381
 
335
382
  return _regeneratorRuntime.wrap(function _callee15$(_context15) {
336
383
  while (1) switch (_context15.prev = _context15.next) {
@@ -348,7 +395,7 @@ describe('ShareDialogCozyToCozy', function () {
348
395
  recipientConfirmationDialogContent: CozyPassFingerprintDialogContent
349
396
  }
350
397
  });
351
- _setup8 = setup(props), getByText = _setup8.getByText;
398
+ _setup10 = setup(props), getByText = _setup10.getByText;
352
399
  _context15.next = 6;
353
400
  return act( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11() {
354
401
  return _regeneratorRuntime.wrap(function _callee11$(_context11) {
@@ -0,0 +1,35 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import Button from 'cozy-ui/transpiled/react/Buttons';
4
+ import { ConfirmDialog } from 'cozy-ui/transpiled/react/CozyDialogs';
5
+ import { useI18n } from 'twake-i18n';
6
+
7
+ var ShareDiscardChangesModal = function ShareDiscardChangesModal(_ref) {
8
+ var onCancel = _ref.onCancel,
9
+ onConfirm = _ref.onConfirm;
10
+
11
+ var _useI18n = useI18n(),
12
+ t = _useI18n.t;
13
+
14
+ return /*#__PURE__*/React.createElement(ConfirmDialog, {
15
+ open: true,
16
+ title: t('ShareDiscardChangesModal.title'),
17
+ actions: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
18
+ variant: "secondary",
19
+ label: t('ShareDiscardChangesModal.cancel'),
20
+ className: "u-fz-small",
21
+ onClick: onCancel
22
+ }), /*#__PURE__*/React.createElement(Button, {
23
+ variant: "primary",
24
+ label: t('ShareDiscardChangesModal.discard'),
25
+ className: "u-fz-small",
26
+ onClick: onConfirm
27
+ }))
28
+ });
29
+ };
30
+
31
+ ShareDiscardChangesModal.propTypes = {
32
+ onCancel: PropTypes.func.isRequired,
33
+ onConfirm: PropTypes.func.isRequired
34
+ };
35
+ export { ShareDiscardChangesModal };
@@ -58,17 +58,17 @@ export var ShareModal = withLocales(function (props) {
58
58
  };
59
59
  }();
60
60
 
61
- var isFederatedMode = flag('drive.federated-shared-folder.enabled');
62
-
63
- if (isFederatedMode && allLoaded) {
64
- return /*#__PURE__*/React.createElement(FederatedFolderModal, _extends({
65
- document: document
66
- }, rest));
67
- }
68
-
69
61
  var isEditable = !byDocId[document.id] || isOwner(document.id) || canReshare(document.id);
70
62
 
71
63
  if (isEditable) {
64
+ var isFederatedMode = flag('drive.federated-shared-folder.enabled');
65
+
66
+ if (isFederatedMode && allLoaded) {
67
+ return /*#__PURE__*/React.createElement(FederatedFolderModal, _extends({
68
+ document: document
69
+ }, rest));
70
+ }
71
+
72
72
  return /*#__PURE__*/React.createElement(EditableSharingModal, _extends({
73
73
  document: document
74
74
  }, rest));
@@ -18,6 +18,10 @@ import { buildReachableContactsQuery, buildContactGroupsQuery, buildUnreachableC
18
18
  * In order to display the total number of members in each group, we also retrieve the contacts that are not reachable.
19
19
  */
20
20
 
21
+ var isCurrentUser = function isCurrentUser(contact) {
22
+ return contact.me === true;
23
+ };
24
+
21
25
  var ShareRecipientsInput = function ShareRecipientsInput(_ref) {
22
26
  var currentRecipients = _ref.currentRecipients,
23
27
  recipients = _ref.recipients,
@@ -35,6 +39,12 @@ var ShareRecipientsInput = function ShareRecipientsInput(_ref) {
35
39
  var contactGroupsQuery = buildContactGroupsQuery();
36
40
  var contactGroupsResult = useQueryAll(contactGroupsQuery.definition, contactGroupsQuery.options);
37
41
  var isLoading = isQueryLoading(reachableContactsResult) || reachableContactsResult.hasMore || isQueryLoading(contactGroupsResult) || contactGroupsResult.hasMore || flag('sharing.show-recipient-groups') && (isQueryLoading(unreachableContactsWithGroupsResult) || unreachableContactsWithGroupsResult.hasMore);
42
+ var reachableContacts = (reachableContactsResult.data || []).filter(function (contact) {
43
+ return !isCurrentUser(contact);
44
+ });
45
+ var unreachableContactsWithGroups = (unreachableContactsWithGroupsResult.data || []).filter(function (contact) {
46
+ return !isCurrentUser(contact);
47
+ });
38
48
  var currentRecipientGroups = currentRecipients.map(function (_ref2) {
39
49
  var id = _ref2.id;
40
50
  return id;
@@ -43,7 +53,7 @@ var ShareRecipientsInput = function ShareRecipientsInput(_ref) {
43
53
  var _id = _ref3._id;
44
54
  return !flag('sharing.show-recipient-groups') || !currentRecipientGroups.includes(_id);
45
55
  }).map(function (contactGroup) {
46
- var reachableMembers = getContactsFromGroupId(reachableContactsResult.data, contactGroup.id).map(function (contact) {
56
+ var reachableMembers = getContactsFromGroupId(reachableContacts, contactGroup.id).map(function (contact) {
47
57
  return _objectSpread(_objectSpread({}, contact), {}, {
48
58
  isReachable: true
49
59
  });
@@ -55,7 +65,7 @@ var ShareRecipientsInput = function ShareRecipientsInput(_ref) {
55
65
  });
56
66
  }
57
67
 
58
- var unreachableMembers = getContactsFromGroupId(unreachableContactsWithGroupsResult.data, contactGroup.id).map(function (contact) {
68
+ var unreachableMembers = getContactsFromGroupId(unreachableContactsWithGroups, contactGroup.id).map(function (contact) {
59
69
  return _objectSpread(_objectSpread({}, contact), {}, {
60
70
  isReachable: false
61
71
  });
@@ -64,7 +74,7 @@ var ShareRecipientsInput = function ShareRecipientsInput(_ref) {
64
74
  members: [].concat(_toConsumableArray(reachableMembers), _toConsumableArray(unreachableMembers))
65
75
  });
66
76
  });
67
- var contactsAndGroups = [].concat(_toConsumableArray(reachableContactsResult.data || []), _toConsumableArray(contactGroups));
77
+ var contactsAndGroups = [].concat(_toConsumableArray(reachableContacts), _toConsumableArray(contactGroups));
68
78
  return /*#__PURE__*/React.createElement(ShareAutosuggest, {
69
79
  loading: isLoading,
70
80
  disabled: disabled,
@@ -113,10 +113,69 @@ describe('ShareRecipientsInput component', function () {
113
113
  }
114
114
  }, _callee);
115
115
  })));
116
- it('should include unreachable members when flag sharing.show-recipient-groups is activated', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
117
- var contacts, contactGroups, unreachableContact;
116
+ it('should exclude current user from suggestions when me is true', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
117
+ var contacts, contactGroups;
118
118
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
119
119
  while (1) switch (_context2.prev = _context2.next) {
120
+ case 0:
121
+ contacts = [{
122
+ id: 'df563cc4-6440',
123
+ _id: 'df563cc4-6440',
124
+ _type: 'io.cozy.contacts',
125
+ me: true,
126
+ name: {
127
+ givenName: 'My',
128
+ familyName: 'Self'
129
+ },
130
+ relationships: {
131
+ groups: {
132
+ data: [{
133
+ _id: 'group-id',
134
+ _type: 'io.cozy.contacts.groups'
135
+ }]
136
+ }
137
+ }
138
+ }, {
139
+ id: '5a3b4ccf-c257',
140
+ _id: '5a3b4ccf-c257',
141
+ _type: 'io.cozy.contacts',
142
+ name: {
143
+ givenName: 'Teagan',
144
+ familyName: 'Wolf'
145
+ },
146
+ relationships: {
147
+ groups: {
148
+ data: [{
149
+ _id: 'group-id',
150
+ _type: 'io.cozy.contacts.groups'
151
+ }]
152
+ }
153
+ }
154
+ }];
155
+ contactGroups = [{
156
+ id: 'group-id',
157
+ name: 'Friends',
158
+ _id: 'group-id',
159
+ _type: 'io.cozy.contacts.groups'
160
+ }];
161
+ setup({
162
+ contacts: contacts,
163
+ contactGroups: contactGroups
164
+ });
165
+ expect(screen.queryByText('My Self')).not.toBeInTheDocument();
166
+ expect(screen.getByText('Teagan Wolf')).toBeInTheDocument();
167
+ expect(screen.getByText('Friends - 1 members')).toBeInTheDocument();
168
+
169
+ case 6:
170
+ case "end":
171
+ return _context2.stop();
172
+ }
173
+ }, _callee2);
174
+ })));
175
+ it('should include unreachable members when flag sharing.show-recipient-groups is activated', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
176
+ var contacts, contactGroups, unreachableContact;
177
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
178
+ while (1) switch (_context3.prev = _context3.next) {
120
179
  case 0:
121
180
  flag.mockReturnValue(true);
122
181
  contacts = [{
@@ -181,8 +240,8 @@ describe('ShareRecipientsInput component', function () {
181
240
 
182
241
  case 8:
183
242
  case "end":
184
- return _context2.stop();
243
+ return _context3.stop();
185
244
  }
186
- }, _callee2);
245
+ }, _callee3);
187
246
  })));
188
247
  });
package/dist/state.js CHANGED
@@ -412,7 +412,12 @@ export var isSharedDrive = function isSharedDrive(state, docId) {
412
412
  export var canReshare = function canReshare(state, docId, instanceUri) {
413
413
  var sharing = getDocumentSharing(state, docId);
414
414
  var me = sharing.attributes.members.find(matchingInstanceName(instanceUri));
415
- return sharing.attributes.open_sharing === true && me && !me.read_only;
415
+
416
+ if (sharing.drive) {
417
+ return me && !me.read_only;
418
+ } else {
419
+ return sharing.attributes.open_sharing === true && me && !me.read_only;
420
+ }
416
421
  };
417
422
  export var getOwner = function getOwner(state, docId) {
418
423
  return getRecipients(state, docId).find(function (r) {
package/locales/en.json CHANGED
@@ -128,7 +128,7 @@
128
128
  "shareByEmail": {
129
129
  "subtitle": "By email",
130
130
  "emailPlaceholder": "Add contacts",
131
- "send": "Share",
131
+ "send": "Done",
132
132
  "singleContactSuccess": "You sent an invite to %{email}.",
133
133
  "contactSuccess": "You sent an invite to %{smart_count} contact. |||| You sent an invite to %{smart_count} contacts.",
134
134
  "singleGroupSuccess": "You sent an invite to the members of the %{groupName} group.",
@@ -196,7 +196,7 @@
196
196
  "subtitle": "By email",
197
197
  "email": "To:",
198
198
  "emailPlaceholder": "Enter the email address or name of the recipient",
199
- "send": "Share",
199
+ "send": "Done",
200
200
  "singleContactSuccess": "You sent an invite to %{email}.",
201
201
  "contactSuccess": "You sent an invite to %{smart_count} contact. |||| You sent an invite to %{smart_count} contacts.",
202
202
  "singleGroupSuccess": "You sent an invite to the members of the %{groupName} group.",
@@ -265,7 +265,7 @@
265
265
  "subtitle": "By email",
266
266
  "email": "email",
267
267
  "emailPlaceholder": "Enter the email address or name of the recipient",
268
- "send": "Share",
268
+ "send": "Done",
269
269
  "singleContactSuccess": "You sent an invite to %{email}.",
270
270
  "contactSuccess": "You sent an invite to %{smart_count} contact. |||| You sent an invite to %{smart_count} contacts.",
271
271
  "singleGroupSuccess": "You sent an invite to the members of the %{groupName} group.",
@@ -329,7 +329,7 @@
329
329
  "subtitle": "By email",
330
330
  "email": "Send to:",
331
331
  "emailPlaceholder": "Enter the email address or name of the recipient",
332
- "send": "Share",
332
+ "send": "Done",
333
333
  "error": {
334
334
  "addingRecipient": "An error occurred while adding the recipient. Please try again."
335
335
  },
@@ -382,6 +382,11 @@
382
382
  "content": "You cannot share %{documentName} with more than %{limit} members.",
383
383
  "confirm": "I understand"
384
384
  },
385
+ "ShareDiscardChangesModal": {
386
+ "title": "Discard the changes you haven't saved?",
387
+ "cancel": "Cancel",
388
+ "discard": "Discard"
389
+ },
385
390
  "GroupRecipient": {
386
391
  "secondary": "%{memberCount} member |||| %{memberCount} members",
387
392
  "secondary_you": "including you"
@@ -436,7 +441,7 @@
436
441
  },
437
442
  "FederatedFolder": {
438
443
  "title": "Shared folder",
439
- "share": "Share",
444
+ "share": "Done",
440
445
  "shareTitle": "Share \"%{name}\"",
441
446
  "successNotification": "Folder has been shared",
442
447
  "errorNotification": "Error while sharing folder",
package/locales/fr.json CHANGED
@@ -125,7 +125,7 @@
125
125
  "shareByEmail": {
126
126
  "subtitle": "Par email",
127
127
  "emailPlaceholder": "Ajouter des contacts",
128
- "send": "Partager",
128
+ "send": "Terminé",
129
129
  "singleContactSuccess": "Vous avez envoyé une invitation à %{email}.",
130
130
  "contactSuccess": "Vous avez invité %{smart_count} contact. |||| Vous avez invité %{smart_count} contacts.",
131
131
  "singleGroupSuccess": "Vous avez invité les membres du groupe %{groupName}.",
@@ -193,7 +193,7 @@
193
193
  "subtitle": "Par email",
194
194
  "email": "À :",
195
195
  "emailPlaceholder": "Saisissez le courriel ou le nom du destinataire.",
196
- "send": "Partager",
196
+ "send": "Terminé",
197
197
  "singleContactSuccess": "Vous avez envoyé une invitation à %{email}.",
198
198
  "contactSuccess": "Vous avez invité %{smart_count} contact. |||| Vous avez invité %{smart_count} contacts.",
199
199
  "singleGroupSuccess": "Vous avez invité les membres du groupe %{groupName}.",
@@ -263,7 +263,7 @@
263
263
  "subtitle": "Par email",
264
264
  "email": "e-mail",
265
265
  "emailPlaceholder": "Saisissez l'email ou le nom du destinataire.",
266
- "send": "Partager",
266
+ "send": "Terminé",
267
267
  "singleContactSuccess": "Vous avez envoyé une invitation à %{email}.",
268
268
  "contactSuccess": "Vous avez invité %{smart_count} contact. |||| Vous avez invité %{smart_count} contacts.",
269
269
  "singleGroupSuccess": "Vous avez invité les membres du groupe %{groupName}.",
@@ -327,7 +327,7 @@
327
327
  "subtitle": "Par email",
328
328
  "email": "Envoyer à :",
329
329
  "emailPlaceholder": "Saisissez le courriel ou le nom du destinataire.",
330
- "send": "Partager",
330
+ "send": "Terminé",
331
331
  "error": {
332
332
  "addingRecipient": "Une erreur s'est produite lors de l'ajout du destinataire. Veuillez réessayer."
333
333
  },
@@ -380,6 +380,11 @@
380
380
  "content": "Vous ne pouvez pas partager %{documentName} à plus de %{limit} membres.",
381
381
  "confirm": "J'ai compris"
382
382
  },
383
+ "ShareDiscardChangesModal": {
384
+ "title": "Abandonner les modifications non enregistrées ?",
385
+ "cancel": "Annuler",
386
+ "discard": "Abandonner"
387
+ },
383
388
  "GroupRecipient": {
384
389
  "secondary": "%{memberCount} membre |||| %{memberCount} membres",
385
390
  "secondary_you": "dont vous"
@@ -434,7 +439,7 @@
434
439
  },
435
440
  "FederatedFolder": {
436
441
  "title": "Dossier partagé",
437
- "share": "Partager",
442
+ "share": "Terminé",
438
443
  "shareTitle": "Partager \"%{name}\"",
439
444
  "successNotification": "Le dossier a été partagé",
440
445
  "errorNotification": "Erreur lors du partage du dossier",
package/locales/ru.json CHANGED
@@ -128,7 +128,7 @@
128
128
  "shareByEmail": {
129
129
  "subtitle": "По электронной почте",
130
130
  "emailPlaceholder": "Добавить контакты",
131
- "send": "Поделиться",
131
+ "send": "Готово",
132
132
  "singleContactSuccess": "Вы отправили приглашение на %{email}.",
133
133
  "contactSuccess": "Вы отправили приглашение %{smart_count} контакту. |||| Вы отправили приглашение %{smart_count} контактам.",
134
134
  "singleGroupSuccess": "Вы отправили приглашение участникам группы %{groupName}.",
@@ -196,7 +196,7 @@
196
196
  "subtitle": "По электронной почте",
197
197
  "email": "Кому:",
198
198
  "emailPlaceholder": "Введите адрес электронной почты или имя получателя",
199
- "send": "Поделиться",
199
+ "send": "Готово",
200
200
  "singleContactSuccess": "Вы отправили приглашение на %{email}.",
201
201
  "contactSuccess": "Вы отправили приглашение %{smart_count} контакту. |||| Вы отправили приглашение %{smart_count} контактам.",
202
202
  "singleGroupSuccess": "Вы отправили приглашение участникам группы %{groupName}.",
@@ -265,7 +265,7 @@
265
265
  "subtitle": "По электронной почте",
266
266
  "email": "эл. почта",
267
267
  "emailPlaceholder": "Введите адрес электронной почты или имя получателя",
268
- "send": "Поделиться",
268
+ "send": "Готово",
269
269
  "singleContactSuccess": "Вы отправили приглашение на %{email}.",
270
270
  "contactSuccess": "Вы отправили приглашение %{smart_count} контакту. |||| Вы отправили приглашение %{smart_count} контактам.",
271
271
  "singleGroupSuccess": "Вы отправили приглашение участникам группы %{groupName}.",
@@ -329,7 +329,7 @@
329
329
  "subtitle": "По электронной почте",
330
330
  "email": "Отправить:",
331
331
  "emailPlaceholder": "Введите адрес электронной почты или имя получателя",
332
- "send": "Поделиться",
332
+ "send": "Готово",
333
333
  "error": {
334
334
  "addingRecipient": "Произошла ошибка при добавлении получателя. Пожалуйста, попробуйте еще раз."
335
335
  },
@@ -382,6 +382,11 @@
382
382
  "content": "Вы не можете предоставить общий доступ к %{documentName} более чем %{limit} участникам.",
383
383
  "confirm": "Понятно"
384
384
  },
385
+ "ShareDiscardChangesModal": {
386
+ "title": "Отменить несохраненные изменения?",
387
+ "cancel": "Отмена",
388
+ "discard": "Отменить"
389
+ },
385
390
  "GroupRecipient": {
386
391
  "secondary": "%{memberCount} участник |||| %{memberCount} участников",
387
392
  "secondary_you": "включая вас"
@@ -436,7 +441,7 @@
436
441
  },
437
442
  "FederatedFolder": {
438
443
  "title": "Общая папка",
439
- "share": "Поделиться",
444
+ "share": "Готово",
440
445
  "shareTitle": "Поделиться \"%{name}\"",
441
446
  "successNotification": "Папка была расшарена",
442
447
  "errorNotification": "Ошибка при расшаривании папки",
package/locales/vi.json CHANGED
@@ -128,7 +128,7 @@
128
128
  "shareByEmail": {
129
129
  "subtitle": "Bằng email",
130
130
  "emailPlaceholder": "Thêm liên hệ",
131
- "send": "Chia sẻ",
131
+ "send": "Xong",
132
132
  "singleContactSuccess": "Bạn đã gửi lời mời đến %{email}.",
133
133
  "contactSuccess": "Bạn đã gửi lời mời đến %{smart_count} liên hệ. |||| Bạn đã gửi lời mời đến %{smart_count} liên hệ.",
134
134
  "singleGroupSuccess": "Bạn đã gửi lời mời đến các thành viên của nhóm %{groupName}.",
@@ -196,7 +196,7 @@
196
196
  "subtitle": "Bằng email",
197
197
  "email": "Đến:",
198
198
  "emailPlaceholder": "Nhập địa chỉ email hoặc tên người nhận",
199
- "send": "Chia sẻ",
199
+ "send": "Xong",
200
200
  "singleContactSuccess": "Bạn đã gửi lời mời đến %{email}.",
201
201
  "contactSuccess": "Bạn đã gửi lời mời đến %{smart_count} liên hệ. |||| Bạn đã gửi lời mời đến %{smart_count} liên hệ.",
202
202
  "singleGroupSuccess": "Bạn đã gửi lời mời đến các thành viên của nhóm %{groupName}.",
@@ -265,7 +265,7 @@
265
265
  "subtitle": "Bằng email",
266
266
  "email": "email",
267
267
  "emailPlaceholder": "Nhập địa chỉ email hoặc tên người nhận",
268
- "send": "Chia sẻ",
268
+ "send": "Xong",
269
269
  "singleContactSuccess": "Bạn đã gửi lời mời đến %{email}.",
270
270
  "contactSuccess": "Bạn đã gửi lời mời đến %{smart_count} liên hệ. |||| Bạn đã gửi lời mời đến %{smart_count} liên hệ.",
271
271
  "singleGroupSuccess": "Bạn đã gửi lời mời đến các thành viên của nhóm %{groupName}.",
@@ -329,7 +329,7 @@
329
329
  "subtitle": "Bằng email",
330
330
  "email": "Gửi đến:",
331
331
  "emailPlaceholder": "Nhập địa chỉ email hoặc tên người nhận",
332
- "send": "Chia sẻ",
332
+ "send": "Xong",
333
333
  "error": {
334
334
  "addingRecipient": "Đã xảy ra lỗi khi thêm người nhận. Vui lòng thử lại."
335
335
  },
@@ -382,6 +382,11 @@
382
382
  "content": "Bạn không thể chia sẻ %{documentName} với nhiều hơn %{limit} thành viên.",
383
383
  "confirm": "Tôi hiểu rồi"
384
384
  },
385
+ "ShareDiscardChangesModal": {
386
+ "title": "Bạn có muốn bỏ các thay đổi chưa lưu?",
387
+ "cancel": "Hủy",
388
+ "discard": "Bỏ"
389
+ },
385
390
  "GroupRecipient": {
386
391
  "secondary": "%{memberCount} thành viên |||| %{memberCount} thành viên",
387
392
  "secondary_you": "bao gồm cả bạn"
@@ -436,7 +441,7 @@
436
441
  },
437
442
  "FederatedFolder": {
438
443
  "title": "Thư mục chia sẻ",
439
- "share": "Chia sẻ",
444
+ "share": "Xong",
440
445
  "shareTitle": "Chia sẻ \"%{name}\"",
441
446
  "successNotification": "Thư mục đã được chia sẻ",
442
447
  "errorNotification": "Lỗi khi chia sẻ thư mục",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cozy-sharing",
3
- "version": "32.1.2",
3
+ "version": "32.3.2",
4
4
  "description": "Provides sharing login for React applications.",
5
5
  "main": "dist/index.js",
6
6
  "author": "Cozy",
@@ -83,5 +83,5 @@
83
83
  "sideEffects": [
84
84
  "*.css"
85
85
  ],
86
- "gitHead": "9a0df81fbae4d16cd70fea539f652f7bc8930ca7"
86
+ "gitHead": "5fd20886ef0dfec91783b81bce0ae59d210a0cfa"
87
87
  }