This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// Created by Florent Pillet on 14/11/16. | |
// Copyright (c) 2016 Florent Pillet. All rights reserved. | |
// | |
import Foundation | |
/* | |
* A utility struct that helps mesure the performance of sections of code. Only uses Foundation | |
* (we could also use QuartzCore's CACurrentMediaTime() for similar precision) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// Results+Rx.swift | |
// | |
// Make Realm auto-updating Results observable. Works with Realm 0.98 and later, RxSwift 2.1.0 and later. | |
// | |
// Created by Florent Pillet on 12/02/16. | |
// Copyright (c) 2016 Florent Pillet. All rights reserved. | |
// | |
import Foundation |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (void)setupDraggableHeaderGestureRecognizer { | |
// setup a gesture recognizer so we can drag the "I need some daytime hours" header up and down | |
@weakify(self); | |
UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] init]; | |
_draggableHeaderView.userInteractionEnabled = YES; | |
[_draggableHeaderView addGestureRecognizer:recognizer]; | |
RACDisposable *disposable = [[[recognizer | |
rac_gestureSignal] | |
scanWithStart:RACTuplePack(@(_mapViewHeightConstraint.constant), @0) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// Created by Florent Pillet on 30/01/15. | |
// | |
#import <Foundation/Foundation.h> | |
@interface RACSignal (FPOperations) | |
/// Delivers the receiver's latest `next`s with a minimum of `interval` | |
/// seconds between two values. Of `next` values produced by the receiver |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
dispatch_once_t once; | |
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | |
{ | |
dispatch_once(&once, ^{ | |
NSLog(@"one"); | |
dispatch_async(dispatch_get_main_queue(), ^{ | |
once = 0; | |
dispatch_once(&once, ^{ | |
NSLog(@"two"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (void)pushViewModel:(BaseViewModel *)nextViewModel | |
{ | |
NSString *from = [self standardNameFromViewModel:_currentViewController.viewModel]; | |
NSString *to = [self standardNameFromViewModel:nextViewModel]; | |
// We are going to try and find a segue to go to the next viewModel. The way segues are named | |
// in our storyboard should be: FromModel::ToModel | |
// 1. try Segue method. For example, a segue going from WelcomeViewController to LoginViewController would be named "Welcome::Login" | |
// 2. If a segue is not found, try to instantiate the view controller and push it directly. We look up the view controller by its stripped model name (i.e. "WelcomeViewModel" -> "Welcome") | |
// 3. If the view controller is not found in the storyboard, try a XIB with the stripped model name. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* PageFlipMonitor v1.0 | |
* Copyright 2013 CommandFusion, public domain | |
* | |
* Utility object that monitors entering and exiting pages, | |
* and can call any number of callbacks specifically registered to observe | |
* when entering or exiting a page | |
* | |
* You callback functions should be of the form: | |
* | |
function callback(fromPage, toPage) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
containerView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() | |
{ | |
public void onGlobalLayout() | |
{ | |
final Activity app = getActivity(); | |
if (app == null) | |
return; | |
Rect r = new Rect(); | |
containerView.getWindowVisibleDisplayFrame(r); | |
boolean visible = (Math.abs(r.height() - containerView.getHeight()) > 128); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Use RequestQueue.request() instead of CF.request() | |
* At any point, to cancel all pending callbacks, call RequestQueue.clear() | |
* | |
*/ | |
var RequestQueue = (function(){ | |
var self = { | |
q: [], | |
next: 0 | |
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* OrderedRequestQueue.js | |
* | |
* Push CF.request calls using this object instead of directly using CF.request, and | |
* you'll be guaranteed to receive results in the order you pushed them. Note that this | |
* implies that the queue will BLOCK until each result is received in sequence, which may | |
* cause large delays if one site in the list is long to respond. | |
* | |
* Use at your own risk | |
*/ | |
var OrderedRequestQueue = (function(){ |
NewerOlder