hunk.code_window:       NSInteger expiration = [result.token.expirationDate timeIntervalSince1970];
         resolve(@{ @"type": @"success", @"token": result.token.tokenString, @"expires": @(expiration) });
       }];
     });
   }
   + (id)facebookAppIdFromNSBundle
  
hunk.labels: keep replace replace replace keep keep keep keep
hunk.after_edit:         NSInteger expiration = [result.token.expirationDate timeIntervalSince1970];
           resolve(@{ @"type": @"success", @"token": result.token.tokenString, @"expires": @(expiration) });
         }];
       }
       @catch (NSException *exception) {
         NSString *message = [@"An error occurred while trying to log in to Facebook: " stringByAppendingString:exception.reason];
         reject(@"E_FBLOGIN_ERROR", message, nil);
       }
  
hunk.file_path: ios/Exponent/Versioned/Core/Api/EXFacebook.m
hunk.type: replace
file: package abi22_0_0.host.exp.exponent.modules.api.components;
  
  import abi22_0_0.com.facebook.react.bridge.ReadableArray;
  import abi22_0_0.com.facebook.react.uimanager.annotations.ReactProp;
  import abi22_0_0.com.facebook.react.uimanager.SimpleViewManager;
  import abi22_0_0.com.facebook.react.uimanager.ThemedReactContext;
  
  public class LinearGradientManager extends SimpleViewManager<LinearGradientView> {
      public static final String REACT_CLASS = "ExponentLinearGradient";
      public static final String PROP_COLORS = "colors";
      public static final String PROP_LOCATIONS = "locations";
      public static final String PROP_START_POS = "start";
      public static final String PROP_END_POS = "end";
      public static final String PROP_BORDER_RADII = "borderRadii";
  
      @Override
      public String getName() {
          return REACT_CLASS;
      }
  
      @Override
      protected LinearGradientView createViewInstance(ThemedReactContext context) {
          return new LinearGradientView(context);
      }
  
      @ReactProp(name=PROP_COLORS)
      public void setColors(LinearGradientView gradientView, ReadableArray colors) {
          gradientView.setColors(colors);
      }
  
      @ReactProp(name=PROP_LOCATIONS)
      public void setLocations(LinearGradientView gradientView, ReadableArray locations) {
          if (locations != null) {
              gradientView.setLocations(locations);
          }
      }
  
      @ReactProp(name=PROP_START_POS)
      public void setStartPosition(LinearGradientView gradientView, ReadableArray startPos) {
          gradientView.setStartPosition(startPos);
      }
  
      @ReactProp(name=PROP_END_POS)
      public void setEndPosition(LinearGradientView gradientView, ReadableArray endPos) {
          gradientView.setEndPosition(endPos);
      }
  
      // temporary solution until following issue is resolved:
      // https://github.com/facebook/react-native/issues/3198
      @ReactProp(name=PROP_BORDER_RADII)
      public void setBorderRadii(LinearGradientView gradientView, ReadableArray borderRadii) {
          gradientView.setBorderRadii(borderRadii);
      }
  }
  