Skip to content

Commit

Permalink
initial implementaton of follow/unfollow interaction with github
Browse files Browse the repository at this point in the history
  • Loading branch information
intabulas committed May 6, 2009
1 parent 8395279 commit 2c13151
Show file tree
Hide file tree
Showing 10 changed files with 147 additions and 14 deletions.
5 changes: 5 additions & 0 deletions Classes/AppConstants.h
Expand Up @@ -46,6 +46,11 @@
#define kLoginParam @"login"
#define kTokenParam @"token"

// Following
#define kFollowUserFormat @"https://github.com/api/v2/json/user/%@/%@"

#define kFollow @"follow"
#define kUnFollow @"unfollow"

// KVO
#define kResourceStatusKeyPath @"status"
Expand Down
2 changes: 2 additions & 0 deletions Classes/GHUser.h
Expand Up @@ -56,5 +56,7 @@
- (void)authenticateWithToken:(NSString *)theToken;
- (BOOL)isFollowing:(GHUser *)anUser;
- (BOOL)isWatching:(GHRepository *)aRepository;
- (void)toggleFollowingState:(NSString *)state;


@end
17 changes: 17 additions & 0 deletions Classes/GHUser.m
Expand Up @@ -183,6 +183,23 @@ - (void)parseFollowingJSON {
[pool release];
}


- (void)toggleFollowingState:(NSString *)state {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *username = [defaults stringForKey:kUsernameDefaultsKey];
NSString *token = [defaults stringForKey:kTokenDefaultsKey];

NSString *url = [NSString stringWithFormat:kFollowUserFormat, state, self.login];
NSURL *followingURL = [NSURL URLWithString:url];
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:followingURL ] autorelease];
[request setPostValue:username forKey:@"login"];
[request setPostValue:token forKey:@"token"];
[request start];
[pool release];
}


#pragma mark -
#pragma mark Gravatar

Expand Down
1 change: 0 additions & 1 deletion Classes/RepositoryController.m
Expand Up @@ -14,7 +14,6 @@
#import "RecentCommitsController.h"
#import "IssuesController.h"


@interface RepositoryController ()
- (void)displayRepository;
@end
Expand Down
5 changes: 4 additions & 1 deletion Classes/UserController.h
Expand Up @@ -3,7 +3,7 @@

@class GHUser, LabeledCell;

@interface UserController : UITableViewController {
@interface UserController : UITableViewController <UIActionSheetDelegate> {
@private
GHUser *user;
IBOutlet UIView *tableHeaderView;
Expand All @@ -21,6 +21,9 @@
IBOutlet LabeledCell *locationCell;
IBOutlet LabeledCell *blogCell;
IBOutlet LabeledCell *emailCell;
IBOutlet UIView *activityView;
UIActionSheet *activitySheet;

}

@property (nonatomic, readonly) GHUser *currentUser;
Expand Down
23 changes: 23 additions & 0 deletions Classes/UserController.m
Expand Up @@ -7,9 +7,12 @@
#import "GravatarLoader.h"
#import "iOctocatAppDelegate.h"
#import "FollowingController.h"
#import "ASIFormDataRequest.h"

@interface UserController ()
- (void)displayUser;
- (void)showActivitySheet;
- (void)dismissActivitySheet;
@end


Expand Down Expand Up @@ -81,15 +84,35 @@ - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:object change:change
}

- (IBAction)toggleFollowing:(id)sender {
[self showActivitySheet];
UIImage *buttonImage;
if ([self.currentUser isFollowing:user]) {
[user toggleFollowingState:kUnFollow];
buttonImage = [UIImage imageNamed:@"UnfollowButton.png"];
} else {
[user toggleFollowingState:kFollow];
buttonImage = [UIImage imageNamed:@"FollowButton.png"];
}
[self.currentUser loadFollowing];
[followButton setBackgroundImage:buttonImage forState:UIControlStateNormal];
[self dismissActivitySheet];
}


- (void)showActivitySheet {
iOctocatAppDelegate *appDelegate = (iOctocatAppDelegate *)[[UIApplication sharedApplication] delegate];
activitySheet = [[UIActionSheet alloc] initWithTitle:@"\n\n" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
UIView *currentView = appDelegate.currentView;
[activitySheet addSubview:activityView];
[activitySheet showInView:currentView];
[activitySheet release];
}

- (void)dismissActivitySheet {
[activitySheet dismissWithClickedButtonIndex:0 animated:YES];
}


#pragma mark -
#pragma mark Table view methods

Expand Down
1 change: 1 addition & 0 deletions Classes/iOctocatAppDelegate.h
Expand Up @@ -19,6 +19,7 @@
@property (nonatomic, readonly) LoginController *loginController;

- (GHUser *)currentUser;
- (UIView *)currentView ;
- (GHUser *)userWithLogin:(NSString *)theUsername;

@end
Expand Down
4 changes: 4 additions & 0 deletions Classes/iOctocatAppDelegate.m
Expand Up @@ -28,6 +28,10 @@ - (void)postLaunch {
if (launchDefault) [self authenticate];
}

- (UIView *)currentView {
return tabBarController.modalViewController ? tabBarController.modalViewController.view : tabBarController.view;
}

- (GHUser *)currentUser {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *login = [defaults valueForKey:kUsernameDefaultsKey];
Expand Down
8 changes: 3 additions & 5 deletions IBFiles/MainWindow.xib
Expand Up @@ -597,7 +597,7 @@
<string>UIApplication</string>
<string>UIResponder</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>{{42, 718}, {320, 70}}</string>
<string>{{165, 727}, {320, 70}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSMutableDictionary">
Expand All @@ -613,7 +613,7 @@
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>iOctocatAppDelegate</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>{{22, 276}, {320, 480}}</string>
<string>{{498, 315}, {320, 480}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>MyFeedsController</string>
Expand Down Expand Up @@ -774,15 +774,13 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>activityView</string>
<string>loadingCell</string>
<string>noEntriesCell</string>
<string>noResultsCell</string>
<string>searchBar</string>
<string>searchControl</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIActivityIndicatorView</string>
<string>UITableViewCell</string>
<string>UITableViewCell</string>
<string>UISearchBar</string>
Expand Down
95 changes: 88 additions & 7 deletions IBFiles/User.xib
Expand Up @@ -8,13 +8,14 @@
<string key="IBDocument.HIToolboxVersion">353.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="59"/>
<integer value="70"/>
<integer value="25"/>
<integer value="57"/>
<integer value="75"/>
<integer value="64"/>
<integer value="4"/>
<integer value="59"/>
<integer value="3"/>
<integer value="25"/>
<integer value="64"/>
<integer value="70"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
Expand Down Expand Up @@ -112,7 +113,7 @@
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="IBUIText"/>
<object class="NSFont" key="IBUIFont">
<object class="NSFont" key="IBUIFont" id="290199181">
<string key="NSName">Helvetica</string>
<double key="NSSize">1.400000e+01</double>
<int key="NSfFlags">16</int>
Expand Down Expand Up @@ -738,7 +739,7 @@
<string key="IBUIText">Following</string>
<reference key="IBUIFont" ref="557310877"/>
<reference key="IBUITextColor" ref="498516826"/>
<object class="NSColor" key="IBUIHighlightedColor">
<object class="NSColor" key="IBUIHighlightedColor" id="271922128">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
Expand Down Expand Up @@ -781,6 +782,46 @@
<reference key="IBUIContentView" ref="1044147862"/>
<string key="IBUIReuseIdentifier">FollowingCell</string>
</object>
<object class="IBUIView" id="89453260">
<reference key="NSNextResponder"/>
<int key="NSvFlags">292</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUIActivityIndicatorView" id="726595106">
<reference key="NSNextResponder" ref="89453260"/>
<int key="NSvFlags">301</int>
<string key="NSFrame">{{50, 20}, {20, 20}}</string>
<reference key="NSSuperview" ref="89453260"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<bool key="IBUIHidesWhenStopped">NO</bool>
<bool key="IBUIAnimating">YES</bool>
</object>
<object class="IBUILabel" id="627430483">
<reference key="NSNextResponder" ref="89453260"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{85, 19}, {188, 21}}</string>
<reference key="NSSuperview" ref="89453260"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="IBUIText">Communicating with GitHub</string>
<reference key="IBUIFont" ref="290199181"/>
<reference key="IBUITextColor" ref="271922128"/>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">1.000000e+01</float>
</object>
</object>
<string key="NSFrameSize">{320, 70}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAgMC41AA</bytes>
</object>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
Expand Down Expand Up @@ -994,6 +1035,14 @@
</object>
<int key="connectionID">74</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">activityView</string>
<reference key="source" ref="372490531"/>
<reference key="destination" ref="89453260"/>
</object>
<int key="connectionID">78</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
Expand Down Expand Up @@ -1242,6 +1291,26 @@
<reference key="object" ref="706927182"/>
<reference key="parent" ref="676413936"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">75</int>
<reference key="object" ref="89453260"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="627430483"/>
<reference ref="726595106"/>
</object>
<reference key="parent" ref="360949347"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">76</int>
<reference key="object" ref="627430483"/>
<reference key="parent" ref="89453260"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">77</int>
<reference key="object" ref="726595106"/>
<reference key="parent" ref="89453260"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
Expand Down Expand Up @@ -1300,6 +1369,11 @@
<string>70.IBPluginDependency</string>
<string>71.IBPluginDependency</string>
<string>72.IBPluginDependency</string>
<string>75.IBEditorWindowLastContentRect</string>
<string>75.IBPluginDependency</string>
<string>76.IBPluginDependency</string>
<string>77.IBEditorWindowLastContentRect</string>
<string>77.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
Expand Down Expand Up @@ -1355,6 +1429,11 @@
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>{{165, 727}, {320, 70}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string>{{0, 697}, {37, 37}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
Expand All @@ -1377,7 +1456,7 @@
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">74</int>
<int key="maxID">78</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
Expand Down Expand Up @@ -1414,6 +1493,7 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>activityView</string>
<string>blogCell</string>
<string>blogLabel</string>
<string>companyLabel</string>
Expand All @@ -1432,6 +1512,7 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIView</string>
<string>LabeledCell</string>
<string>UILabel</string>
<string>UILabel</string>
Expand Down

0 comments on commit 2c13151

Please sign in to comment.