I'm good with Swift but new to objective-C. When user taps button on alert view, that button needs to be disabled for next 24 hours.Code shown below is a helper method that stores key:userId, value:timestamp
in NSUserDefaults
-which I've never really used. I have some concerns.
My helper method is in a class that only has class methods, so even though I'd like for my helper method to be private, it can't since its called inside class method. Puzzled about how to conceal this from other objects.
Better procedure for logic? The nested if statements look ugly and would probably be hard to read if it wasn't fresh in my mind.
Is it best practice to just copy
alertAction
input or use inout, since I'm just enabling or disabling button based off logic.better name for method? Its purpose is to enable/disable alert controller based off logic, and to store in NSUserDefaults. configXXX seems very generic.
Thanks in advance.
+ (UIAlertAction *)configureAlertAction:(UIAlertAction *)alertAction
forUser:(id<BaseUser>)user {
/// Check User defaults to see if current user has reported this user already.
/// if not: store userID and timestamp 24 hours out in defaults and enable alert action.
/// If so, disable action.
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
UIAlertAction *modifiedAlertAction = alertAction;
double currentDate = [[NSDate date] timeIntervalSince1970];
double previousDate = [standardDefaults doubleForKey:user.userId];
if (previousDate) {
if (previousDate > currentDate) {
// remove from userdefaults..
[standardDefaults removeObjectForKey:user.userId];
// enable alert
[modifiedAlertAction setEnabled:YES];
} else if (previousDate > currentDate) {
[modifiedAlertAction setEnabled:NO];
}
} else {
// store in NSuserdefaults
[modifiedAlertAction setEnabled:YES];
double expirationDate = currentDate + 86400;
[standardDefaults setDouble:expirationDate forKey:user.userId];
}
return modifiedAlertAction;
}