-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcontrollers.js
56 lines (48 loc) · 1.97 KB
/
controllers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//inject the twitterService (our factory) into the controller
app.controller('TwitterController', function($scope,$q, twitterService) {
//create array of tweets
$scope.tweets=[];
//start the twitter service
twitterService.initialize();
//using the OAuth authorization result get the latest 20 tweets from twitter for the user
$scope.refreshTimeline = function(maxId) {
//use a promise
twitterService.getLatestTweets(maxId).then(function(data) {
$scope.tweets = $scope.tweets.concat(data);
},function(){
//there is a rate limit to twitter requests
$scope.rateLimitError = true;
});
}
//when the user clicks the connect twitter button, the popup authorization window opens
$scope.connectButton = function() {
twitterService.connectTwitter().then(function() {
if (twitterService.isReady()) {
//if the authorization is successful, hide the connect button and display the tweets
$('#connectButton').fadeOut(function(){
$('#getTimelineButton, #signOut').fadeIn();
$scope.refreshTimeline();
$scope.connectedTwitter = true;
});
} else {
}
});
}
//sign out clears the OAuth cache, the user will have to reauthenticate when returning
$scope.signOut = function() {
twitterService.clearCache();
$scope.tweets.length = 0;
$('#getTimelineButton, #signOut').fadeOut(function(){
$('#connectButton').fadeIn();
$scope.$apply(function(){$scope.connectedTwitter=false})
});
$scope.rateLimitError = false;
}
//if the user is a returning user, hide the sign in button and display the tweets
if (twitterService.isReady()) {
$('#connectButton').hide();
$('#getTimelineButton, #signOut').show();
$scope.connectedTwitter = true;
$scope.refreshTimeline();
}
});