Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Commit 0f29c8e

Browse files
author
vikasrohit
committed
AS#131482348128949, Refactor Mailchimp API wrapper to be generic user preferences service
-- Adapted code to use the refactored api
1 parent e58d8f4 commit 0f29c8e

File tree

4 files changed

+34
-34
lines changed

4 files changed

+34
-34
lines changed

app/services/api.service.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ import _ from 'lodash'
7474
case 'SUBMISSIONS':
7575
case 'USER':
7676
return _getRestangularV3(CONSTANTS.AUTH_API_URL)
77-
case 'MAILCHIMP':
77+
case 'PREFERENCES':
7878
return _getRestangularV3(CONSTANTS.INTERNAL_API_URL)
7979
default:
8080
return _getRestangularV3()

app/services/mailchimp.service.js renamed to app/services/userPreferences.service.js

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@ import angular from 'angular'
33
(function() {
44
'use strict'
55

6-
angular.module('tc.services').factory('MailchimpService', MailchimpService)
6+
angular.module('tc.services').factory('UserPreferencesService', UserPreferencesService)
77

8-
MailchimpService.$inject = ['$http', 'logger', 'Restangular', 'CONSTANTS', 'ApiService', '$q']
8+
UserPreferencesService.$inject = ['$http', 'logger', 'Restangular', 'CONSTANTS', 'ApiService', '$q']
99

10-
function MailchimpService($http, logger, Restangular, CONSTANTS, ApiService, $q) {
11-
var mailchimpApi = ApiService.getApiServiceProvider('MAILCHIMP')
10+
function UserPreferencesService($http, logger, Restangular, CONSTANTS, ApiService, $q) {
11+
var mailchimpApi = ApiService.getApiServiceProvider('PREFERENCES')
1212
var service = {
13-
getMemberSubscription: getMemberSubscription,
14-
addSubscription: addSubscription
13+
getEmailPreferences: getEmailPreferences,
14+
saveEmailPreferences: saveEmailPreferences
1515
}
1616
return service
1717

18-
function getMemberSubscription(user) {
18+
function getEmailPreferences(user) {
1919
return $q(function(resolve, reject) {
20-
mailchimpApi.one('mailchimp/lists', CONSTANTS.MAILCHIMP_LIST_ID)
21-
.one('members', user.userId).get()
20+
mailchimpApi.one('users', user.userId)
21+
.one('preferences', 'email').get()
2222
.then(function(resp) {
2323
resolve(resp)
2424
})
@@ -40,21 +40,21 @@ import angular from 'angular'
4040
}
4141

4242

43-
function addSubscription(user, preferences) {
44-
var subscription = {
43+
function saveEmailPreferences(user, preferences) {
44+
var settings = {
4545
userId: user.userId,
4646
firstName: user.firstName,
4747
lastName: user.lastName,
48-
interests: {}
48+
subscriptions: {}
4949
}
5050
if (!preferences) {
51-
subscription.interests[CONSTANTS.MAILCHIMP_NL_GEN] = true
51+
settings.subscriptions[CONSTANTS.MAILCHIMP_NL_GEN] = true
5252
} else {
53-
subscription.interests = preferences
53+
settings.subscriptions = preferences
5454
}
5555
return $q(function(resolve, reject) {
56-
mailchimpApi.one('mailchimp/lists', CONSTANTS.MAILCHIMP_LIST_ID)
57-
.customPUT(subscription, 'members')
56+
mailchimpApi.one('users', user.userId)
57+
.customPUT(settings, 'preferences/email')
5858
.then(function(resp) {
5959
resolve(resp)
6060
})

app/settings/email/email.controller.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import angular from 'angular'
55

66
angular.module('tc.settings').controller('EmailSettingsController', EmailSettingsController)
77

8-
EmailSettingsController.$inject = ['$rootScope', 'userData', 'ProfileService', 'MailchimpService', 'logger', 'CONSTANTS', 'toaster', '$q', '$scope']
8+
EmailSettingsController.$inject = ['$rootScope', 'userData', 'ProfileService', 'UserPreferencesService', 'logger', 'CONSTANTS', 'toaster', '$q', '$scope']
99

10-
function EmailSettingsController($rootScope, userData, ProfileService, MailchimpService, logger, CONSTANTS, toaster, $q, $scope) {
10+
function EmailSettingsController($rootScope, userData, ProfileService, UserPreferencesService, logger, CONSTANTS, toaster, $q, $scope) {
1111
var vm = this
1212
vm.loading = false
1313
vm.saving = false
@@ -19,42 +19,42 @@ import angular from 'angular'
1919
function activate() {
2020
vm.newsletters = [
2121
{
22-
id: CONSTANTS.MAILCHIMP_NL_GEN,
22+
id: 'TOPCODER_NL_GEN',
2323
name: 'General Newsletter',
2424
desc: 'News summary from all tracks and programs',
2525
enabled: false,
2626
dirty: false
2727
},
2828
{
29-
id: CONSTANTS.MAILCHIMP_NL_DESIGN,
29+
id: 'TOPCODER_NL_DESIGN',
3030
name: 'Design Newsletter',
3131
desc: 'Website, mobile, and product design; UI and UX',
3232
enabled: false,
3333
dirty: false
3434
},
3535
{
36-
id: CONSTANTS.MAILCHIMP_NL_DEV,
36+
id: 'TOPCODER_NL_DEV',
3737
name: 'Development Newsletter',
3838
desc: 'Software architecture, component assembly, application development, and bug hunting',
3939
enabled: false,
4040
dirty: false
4141
},
4242
{
43-
id: CONSTANTS.MAILCHIMP_NL_DATA,
43+
id: 'TOPCODER_NL_DATA',
4444
name: 'Data Science Newsletter',
4545
desc: 'Algorithm and data structures, statistical analysis',
4646
enabled: false,
4747
dirty: false
4848
},
4949
{
50-
id: CONSTANTS.MAILCHIMP_NL_IOS,
50+
id: 'TOPCODER_NL_IOS',
5151
name: 'iOS Community Newsletter',
5252
desc: 'Mobile app design and development for iOS, with Swift emphasis',
5353
enabled: false,
5454
dirty: false
5555
},
5656
{
57-
id: CONSTANTS.MAILCHIMP_NL_TCO,
57+
id: 'TOPCODER_NL_TCO',
5858
name: 'TCO Newsletter',
5959
desc: 'Our annual online and onsite tournament to celebrate and reward the community',
6060
enabled: false,
@@ -63,21 +63,21 @@ import angular from 'angular'
6363
]
6464

6565
vm.loading = true
66-
return MailchimpService.getMemberSubscription(userData).then(function(subscription) {
66+
return UserPreferencesService.getEmailPreferences(userData).then(function(subscription) {
6767
vm.loading = false
6868
if (!subscription) {
6969
// add member to the list with default preferences
70-
MailchimpService.addSubscription(userData, {}).then(function(resp) {
70+
UserPreferencesService.saveEmailPreferences(userData, {}).then(function(resp) {
7171
logger.debug(resp)
7272
}).catch(function(err) {
7373
// no error to user
7474
//TODO some error alert to community admin
7575
logger.debug('error in adding user to member list')
7676
})
7777
} else {
78-
if (subscription.interests) {
78+
if (subscription) {
7979
vm.newsletters.forEach(function(newsletter) {
80-
if (subscription.interests[newsletter.id]) {
80+
if (subscription[newsletter.id]) {
8181
newsletter.enabled = true
8282
}
8383
})
@@ -102,7 +102,7 @@ import angular from 'angular'
102102
vm.newsletters.forEach(function(newsletter) {
103103
preferences[newsletter.id] = newsletter.enabled
104104
})
105-
MailchimpService.addSubscription(userData, preferences).then(function(resp) {
105+
UserPreferencesService.saveEmailPreferences(userData, preferences).then(function(resp) {
106106
vm.loading = false
107107
vm.saving = false
108108
// reset dirty state for all newsletter options

app/skill-picker/skill-picker.controller.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import _ from 'lodash'
66

77
angular.module('tc.skill-picker').controller('SkillPickerController', SkillPickerController)
88

9-
SkillPickerController.$inject = ['$scope', 'CONSTANTS', 'ProfileService', '$state', 'userProfile', 'featuredSkills', 'logger', 'toaster', 'MemberCertService', '$q', 'MailchimpService']
9+
SkillPickerController.$inject = ['$scope', 'CONSTANTS', 'ProfileService', '$state', 'userProfile', 'featuredSkills', 'logger', 'toaster', 'MemberCertService', '$q', 'UserPreferencesService']
1010

11-
function SkillPickerController($scope, CONSTANTS, ProfileService, $state, userProfile, featuredSkills, logger, toaster, MemberCertService, $q, MailchimpService) {
11+
function SkillPickerController($scope, CONSTANTS, ProfileService, $state, userProfile, featuredSkills, logger, toaster, MemberCertService, $q, UserPreferencesService) {
1212
var vm = this
1313
vm.ASSET_PREFIX = CONSTANTS.ASSET_PREFIX
1414
vm.IOS_PROGRAM_ID = CONSTANTS.SWIFT_PROGRAM_ID
@@ -139,10 +139,10 @@ import _ from 'lodash'
139139
}
140140

141141
function addToMailingList() {
142-
return MailchimpService.getMemberSubscription(userProfile).then(function(subscription) {
142+
return UserPreferencesService.getEmailPreferences(userProfile).then(function(subscription) {
143143
logger.debug(subscription)
144144
if (!subscription) {
145-
return MailchimpService.addSubscription(userProfile).then(function(resp) {
145+
return UserPreferencesService.saveEmailPreferences(userProfile).then(function(resp) {
146146
logger.debug(resp)
147147
}).catch(function(err) {
148148
// no error to user

0 commit comments

Comments
 (0)