Skip to content

Instantly share code, notes, and snippets.

View soxjke's full-sized avatar

Petro Korienev soxjke

View GitHub Profile
@soxjke
soxjke / AWSIdentityManager+Fixtures.h
Last active April 8, 2019 13:10
AWSAuthCore crash workaround
#import <AWSAuthCore/AWSAuthCore.h>
@interface AWSIdentityManager (Fixtures)
@end
@soxjke
soxjke / PINCodeView.h
Last active February 24, 2019 15:48
PINCodeField
@interface PINCodeView : UIView
- (instancetype)initWithNumberOfDigits:(NSUInteger)digits
keyboardType:(UIKeyboardType)keyboardType
autocapitalizationType:(UITextAutocapitalizationType)autocapitalizationType;
@property (nonatomic, copy) NSString *code;
- (void)becameFirstResponder;
@end

#Twitter client with offline mode.

  • As a user I can login to Twitter
  • As a user I see my twitter name in the navigation bar
  • As a user I can view my Twitter feed (fail plan: display error)
  • As a user I can refresh my feed using pull-to-refresh (fail plan: display error)
  • As a user I can view my Twitter feed without internet connection
  • As a user I expect that feed will be automatically updated when network connection is available
  • As a user I can tap on system compose button on the right of navigation bar and get to post new tweet screen
  • As a user I can post new tweet (fail plan: display error)
- (NSMethodSignature *)methodSignatureForSelector:(SEL)sel {
NSMethodSignature * __block signature = nil;
[self.implementations enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
signature = [obj methodSignatureForSelector:sel];
*stop = (nil != signature);
}];
return signature;
}
- (BOOL)respondsToSelector:(SEL)aSelector {
@soxjke
soxjke / right
Last active February 15, 2018 20:27
comma-separated
255, 1, 1, 1, 0
2233, 0, 1, 1, 1
@soxjke
soxjke / right
Last active February 15, 2018 20:26
No headline
255, 1, 1, 1, 0
2233, 0, 1, 1, 1
enum UIState {
case current
case forecast(page: Int)
}
enum UIEvent {
case turnCurrent
case turnForecast
case turnLeft
case turnRight
func setupObserving() {
currentWeatherView.reactive.weatherFeatures <~ viewModel.weatherFeatures
loadingIndicator.reactive.isAnimating <~ viewModel.isLoading
segmentedControl.reactive.isEnabled <~ viewModel.isEnabledControl(for: Set([.turnCurrent, .turnForecast]))
reactive.title <~ viewModel.title
reactive.rightBarButtonItem <~ viewModel.isLoading.map { [weak self] (isLoading) -> UIBarButtonItem? in
return isLoading ? self?.loadingBarButtonItem : self?.refreshBarButtonItem
}
@soxjke
soxjke / ComplexWay.swift
Created November 28, 2017 19:38
NibInstantiatable
import UIKit
public protocol NibInstantiator {
associatedtype Base
func instantiate() -> Base
}
public extension NibInstantiator where Base: UIView {
public func instantiate() -> Base {
guard let view =
enum AuthError: Error {
case wrongAuthData,
case wrongDeauthData
}
class AuthManager {
let networkManager: // injected dependency
func deauthenticateUser(user: User) -> SignalProducer<User, AuthError> {
// perhaps go to network:
return SignalProducer { (observer, disposable) in