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.
- package/CHANGELOG.md +24 -0
- package/dist/components/FederatedFolder/FederatedFolderModal.js +96 -22
- package/dist/components/FederatedFolder/FederatedFolderModal.spec.js +137 -219
- package/dist/components/Recipient/RecipientList.js +0 -15
- package/dist/components/ShareAutosuggest.js +1 -0
- package/dist/components/ShareAutosuggest.spec.js +12 -4
- package/dist/components/ShareDialogCozyToCozy.spec.js +55 -8
- package/dist/components/ShareDiscardChangesModal.js +35 -0
- package/dist/components/ShareModal/ShareModal.js +8 -8
- package/dist/components/ShareRecipientsInput.js +13 -3
- package/dist/components/ShareRecipientsInput.spec.js +63 -4
- package/dist/state.js +6 -1
- package/locales/en.json +10 -5
- package/locales/fr.json +10 -5
- package/locales/ru.json +10 -5
- package/locales/vi.json +10 -5
- package/package.json +2 -2
- package/src/components/FederatedFolder/FederatedFolderModal.jsx +230 -138
- package/src/components/FederatedFolder/FederatedFolderModal.spec.jsx +59 -134
- package/src/components/Recipient/RecipientList.jsx +0 -18
- package/src/components/ShareAutosuggest.jsx +1 -0
- package/src/components/ShareAutosuggest.spec.jsx +10 -5
- package/src/components/ShareDialogCozyToCozy.spec.jsx +50 -4
- package/src/components/ShareDiscardChangesModal.jsx +40 -0
- package/src/components/ShareModal/ShareModal.jsx +5 -5
- package/src/components/ShareRecipientsInput.jsx +11 -6
- package/src/components/ShareRecipientsInput.spec.jsx +59 -0
- package/src/state.js +5 -1
- package/dist/components/SharedDrive/SharedDriveRecipient.js +0 -61
- package/dist/components/SharedDrive/SharedDriveRecipientPermissions.js +0 -109
- package/dist/components/SharedDrive/SharedDriveRecipientStatus.js +0 -22
- package/dist/components/SharedFolder/DumbBatchSharedFolderModal.js +0 -145
- package/src/components/SharedDrive/SharedDriveRecipient.jsx +0 -62
- package/src/components/SharedDrive/SharedDriveRecipientPermissions.jsx +0 -78
- package/src/components/SharedDrive/SharedDriveRecipientStatus.jsx +0 -23
- 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
|
|
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: '
|
|
266
|
+
name: 'Done'
|
|
267
267
|
}));
|
|
268
268
|
expect(onShare).not.toHaveBeenCalled();
|
|
269
269
|
expect(onClose).toHaveBeenCalledTimes(1);
|
|
270
270
|
});
|
|
271
|
-
it('
|
|
272
|
-
var onClose
|
|
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
|
-
|
|
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: '
|
|
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,
|
|
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
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
117
|
-
var contacts, contactGroups
|
|
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
|
|
243
|
+
return _context3.stop();
|
|
185
244
|
}
|
|
186
|
-
},
|
|
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
|
-
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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.
|
|
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": "
|
|
86
|
+
"gitHead": "5fd20886ef0dfec91783b81bce0ae59d210a0cfa"
|
|
87
87
|
}
|