summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Juick/APIClient.m9
-rw-r--r--Juick/AppDelegate.h2
-rw-r--r--Juick/AppDelegate.m4
-rw-r--r--Juick/Main.storyboard2
-rw-r--r--Juick/ViewControllers/FeedViewController.m4
-rw-r--r--Juick/ViewControllers/LoginViewController.m1
-rw-r--r--Juick/ViewControllers/ThreadViewController.m17
7 files changed, 35 insertions, 4 deletions
diff --git a/Juick/APIClient.m b/Juick/APIClient.m
index 4652c0c..848ea77 100644
--- a/Juick/APIClient.m
+++ b/Juick/APIClient.m
@@ -19,6 +19,8 @@
@implementation APIClient
+@synthesize credential = _credential;
+
+(APIClient *) sharedClient {
static APIClient *sharedAPIClient = nil;
static dispatch_once_t onceToken;
@@ -157,7 +159,12 @@
}
- (void)setCredential:(NSURLCredential *)credential {
- [[NSURLCredentialStorage sharedCredentialStorage] setCredential:credential forProtectionSpace:self.apiProtectionSpace];
+ if (credential) {
+ [[NSURLCredentialStorage sharedCredentialStorage] removeCredential:_credential forProtectionSpace:self.apiProtectionSpace];
+ [[NSURLCredentialStorage sharedCredentialStorage] setCredential:credential forProtectionSpace:self.apiProtectionSpace];
+ } else {
+ [[NSURLCredentialStorage sharedCredentialStorage] removeCredential:_credential forProtectionSpace:self.apiProtectionSpace];
+ }
}
diff --git a/Juick/AppDelegate.h b/Juick/AppDelegate.h
index 5357af2..04a903a 100644
--- a/Juick/AppDelegate.h
+++ b/Juick/AppDelegate.h
@@ -28,4 +28,6 @@ extern NSString * const UserUpdatedNotificationName;
@property (strong, nonatomic) NSString *pushedUname;
@property (strong, nonatomic) NSNumber *pushedReplyId;
+- (void) presentLoginView:(UIViewController *)vc;
+
@end
diff --git a/Juick/AppDelegate.m b/Juick/AppDelegate.m
index 61c8da5..3bdb774 100644
--- a/Juick/AppDelegate.m
+++ b/Juick/AppDelegate.m
@@ -147,4 +147,8 @@ NSString * const UserUpdatedNotificationName = @"UserUpdated";
return [mainStoryboard instantiateViewControllerWithIdentifier:@"threadViewControllerIdentifier"];
}
+- (void) presentLoginView:(UIViewController *)vc {
+ [self.window.rootViewController performSegueWithIdentifier:@"loginSegue" sender:vc];
+}
+
@end
diff --git a/Juick/Main.storyboard b/Juick/Main.storyboard
index 00ee720..419e5a5 100644
--- a/Juick/Main.storyboard
+++ b/Juick/Main.storyboard
@@ -52,7 +52,6 @@
</navigationBar>
<connections>
<segue destination="VCH-GK-jaH" kind="relationship" relationship="rootViewController" id="Rgn-In-COD"/>
- <segue destination="J8f-Vc-5Bc" kind="modal" identifier="loginSegue" id="1y1-LA-eQL"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="fVV-xR-99a" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -390,6 +389,7 @@
<segue destination="YkB-dq-pv4" kind="relationship" relationship="viewControllers" id="uQw-Xa-hwe"/>
<segue destination="bqF-EV-jyA" kind="relationship" relationship="viewControllers" id="L49-RF-BJa"/>
<segue destination="wJv-nS-OaN" kind="relationship" relationship="viewControllers" id="5Pl-1T-DRQ"/>
+ <segue destination="J8f-Vc-5Bc" kind="modal" identifier="loginSegue" id="2pJ-ai-Rmu"/>
</connections>
</tabBarController>
<placeholder placeholderIdentifier="IBFirstResponder" id="AnM-ht-zf8" userLabel="First Responder" sceneMemberID="firstResponder"/>
diff --git a/Juick/ViewControllers/FeedViewController.m b/Juick/ViewControllers/FeedViewController.m
index 31bf0ca..a5f7a43 100644
--- a/Juick/ViewControllers/FeedViewController.m
+++ b/Juick/ViewControllers/FeedViewController.m
@@ -14,6 +14,8 @@
#import "AppDelegate.h"
#import "LoginViewController.h"
+NSString * const UserNotAuthenticatedNotificationName = @"UserNotAuthenticated";
+
@interface FeedViewController ()
@property NSString *selectedUser;
@@ -50,7 +52,7 @@
if ([[APIClient sharedClient] isAuthenticated]) {
return YES;
} else {
- [self.navigationController performSegueWithIdentifier:@"loginSegue" sender:self];
+ [[AppDelegate shared] presentLoginView:self];
return NO;
}
}
diff --git a/Juick/ViewControllers/LoginViewController.m b/Juick/ViewControllers/LoginViewController.m
index f9b17a3..55099eb 100644
--- a/Juick/ViewControllers/LoginViewController.m
+++ b/Juick/ViewControllers/LoginViewController.m
@@ -71,6 +71,7 @@ NSString * const UserSignedInNotificationName = @"UserSignedIn";
[self.navigationController dismissViewControllerAnimated:NO completion:nil];
} else {
[User throwUnableToLogin:self error:error];
+ [[APIClient sharedClient] setCredential:nil];
}
}];
}
diff --git a/Juick/ViewControllers/ThreadViewController.m b/Juick/ViewControllers/ThreadViewController.m
index af56bc3..41e9503 100644
--- a/Juick/ViewControllers/ThreadViewController.m
+++ b/Juick/ViewControllers/ThreadViewController.m
@@ -10,6 +10,7 @@
#import "NewPostViewController.h"
#import "MessageCell.h"
#import "APIClient.h"
+#import "AppDelegate.h"
@implementation ThreadViewController
@@ -24,7 +25,9 @@
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
MessageCell *cell = [tableView dequeueReusableCellWithIdentifier:messageCellIdentifier forIndexPath:indexPath];
- [self performSegueWithIdentifier:@"replySegue" sender:cell];
+ if ([self shouldPerformSegueWithIdentifier:@"replySegue" sender:self]){
+ [self performSegueWithIdentifier:@"replySegue" sender:cell];
+ }
}
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
@@ -36,6 +39,18 @@
}
}
+- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
+ if ([identifier isEqualToString:@"replySegue"]) {
+ if ([[APIClient sharedClient] isAuthenticated]) {
+ return YES;
+ } else {
+ [[AppDelegate shared] presentLoginView:self];
+ return NO;
+ }
+ }
+ return YES;
+}
+
-(void) loadMore {
Message *lastMsg = [self.messages lastObject];
[self setShouldScrollToUnreadOnRefresh:lastMsg.rid > 0];