1
- const _ = require ( 'lodash' ) ;
2
-
3
1
require ( './addressbook-parser.service' ) ;
4
2
require ( './contact-api-client.service.js' ) ;
5
3
require ( './addressbook-display.service.js' ) ;
6
4
require ( './virtual-addressbook.service.js' ) ;
7
5
require ( './constants.js' ) ;
6
+ require ( './contact-dav-url.service.js' ) ;
8
7
9
8
( function ( angular ) {
10
9
'use strict' ;
@@ -17,20 +16,19 @@ require('./constants.js');
17
16
$window ,
18
17
$log ,
19
18
session ,
20
- esnUserConfigurationService ,
19
+ contactDavUrlService ,
21
20
contactAddressbookParser ,
22
21
ContactAPIClient ,
23
22
contactAddressbookDisplayService ,
24
23
ContactVirtualAddressBookService ,
25
- davProxyPrincipalService ,
24
+ FileSaver ,
26
25
CONTACT_ADDRESSBOOK_TYPES ,
27
26
CONTACT_ADDRESSBOOK_STATES ,
28
27
CONTACT_ADDRESSBOOK_MEMBERS_RIGHTS ,
29
28
CONTACT_SHARING_INVITE_STATUS ,
30
- CONTACT_SHARING_SUBSCRIPTION_TYPE
29
+ CONTACT_SHARING_SUBSCRIPTION_TYPE ,
30
+ CONTACT_EXPORT_FILE_TYPE
31
31
) {
32
- var DAVSERVER_CONFIGURATION = 'davserver' ;
33
-
34
32
return {
35
33
createAddressbook : createAddressbook ,
36
34
createGroupAddressbook : createGroupAddressbook ,
@@ -46,7 +44,8 @@ require('./constants.js');
46
44
subscribeAddressbooks : subscribeAddressbooks ,
47
45
shareAddressbook : shareAddressbook ,
48
46
updateAddressbookPublicRight : updateAddressbookPublicRight ,
49
- updateGroupAddressbookMembersRight : updateGroupAddressbookMembersRight
47
+ updateGroupAddressbookMembersRight : updateGroupAddressbookMembersRight ,
48
+ exportAddressbook
50
49
} ;
51
50
52
51
function getAddressbookByBookName ( bookName , bookId ) {
@@ -94,7 +93,7 @@ require('./constants.js');
94
93
}
95
94
96
95
function _listGroupAddressbooks ( ) {
97
- return davProxyPrincipalService . getGroupMembership ( '/principals/users/' + session . user . _id )
96
+ return ContactAPIClient . getGroupMembership ( '/principals/users/' + session . user . _id )
98
97
. then ( function ( groupPrincipals ) {
99
98
var promises = groupPrincipals . map ( function ( principal ) {
100
99
var parsedPrincipal = contactAddressbookParser . parsePrincipalPath ( principal ) ;
@@ -241,7 +240,7 @@ require('./constants.js');
241
240
}
242
241
243
242
function getAddressbookUrl ( addressbook ) {
244
- return _getFrontendURL ( ) . then ( function ( url ) {
243
+ return contactDavUrlService . getFrontendUrl ( ) . then ( function ( url ) {
245
244
return [ url , _sanitizeAddressbookHref ( addressbook ) ]
246
245
. map ( function ( fragment ) {
247
246
return fragment . replace ( / ^ \/ | \/ $ / g, '' ) ;
@@ -250,39 +249,22 @@ require('./constants.js');
250
249
} ) ;
251
250
}
252
251
253
- function _sanitizeAddressbookHref ( addressbook ) {
254
- var parsedPath = contactAddressbookParser . parseAddressbookPath ( addressbook . href ) ;
255
-
256
- return [ 'addressbooks' , parsedPath . bookId , parsedPath . bookName ] . join ( '/' ) ;
257
- }
258
-
259
- function _getFrontendURL ( ) {
260
- return esnUserConfigurationService . get ( [ DAVSERVER_CONFIGURATION ] , 'core' )
261
- . then ( function ( configurations ) {
262
- if ( ! configurations || ! configurations . length ) {
263
- $log . debug ( 'No valid configurations found for davserver' ) ;
264
-
265
- return _getDefaultURL ( ) ;
266
- }
267
-
268
- var davserver = _ . find ( configurations , { name : DAVSERVER_CONFIGURATION } ) ;
269
-
270
- if ( ! davserver ) {
271
- $log . debug ( 'davserver configuration is not set' ) ;
272
-
273
- return _getDefaultURL ( ) ;
274
- }
275
-
276
- return davserver . value && davserver . value . frontend && davserver . value . frontend . url ? davserver . value . frontend . url : _getDefaultURL ( ) ;
277
- } , function ( err ) {
278
- $log . debug ( 'Can not get davserver from configuration' , err ) ;
252
+ function exportAddressbook ( addressbook ) {
253
+ return ContactAPIClient
254
+ . addressbookHome ( addressbook . bookId )
255
+ . addressbook ( addressbook . bookName )
256
+ . exportAddressbook ( )
257
+ . then ( ( { data } ) => {
258
+ const vcfBlob = new Blob ( [ data ] , { type : CONTACT_EXPORT_FILE_TYPE } ) ;
279
259
280
- return _getDefaultURL ( ) ;
260
+ FileSaver . saveAs ( vcfBlob , ` ${ addressbook . bookName } .vcf` ) ;
281
261
} ) ;
282
262
}
283
263
284
- function _getDefaultURL ( ) {
285
- return $window . location . origin ;
264
+ function _sanitizeAddressbookHref ( addressbook ) {
265
+ var parsedPath = contactAddressbookParser . parseAddressbookPath ( addressbook . href ) ;
266
+
267
+ return [ 'addressbooks' , parsedPath . bookId , parsedPath . bookName ] . join ( '/' ) ;
286
268
}
287
269
}
288
270
} ) ( angular ) ;
0 commit comments