UNPKG

react-native-facebook-login

Version:

React Native wrapper for native iOS Facebook SDK login button and manager

145 lines (128 loc) 3.12 kB
'use strict'; var React = require('react'); var ReactNative = require('react-native'); var PropTypes = require('prop-types'); var { StyleSheet, Text, Image, View, ViewPropTypes, TouchableHighlight, } = ReactNative; var FBLoginManager = require('NativeModules').FBLoginManager; const viewPropTypes = ViewPropTypes || View.propTypes; var FBLoginMock = React.createClass({ propTypes: { style: viewPropTypes.style, onPress: PropTypes.func, onLogin: PropTypes.func, onLogout: PropTypes.func, }, getInitialState: function(){ return { user: null, }; }, handleLogin: function(){ var _this = this; FBLoginManager.login(function(error, data){ if (!error) { _this.setState({ user : data}); _this.props.onLogin && _this.props.onLogin(); } else { console.log(error, data); } }); }, handleLogout: function(){ var _this = this; FBLoginManager.logout(function(error, data){ if (!error) { _this.setState({ user : null}); _this.props.onLogout && _this.props.onLogout(); } else { console.log(error, data); } }); }, onPress: function(){ this.state.user ? this.handleLogout() : this.handleLogin(); this.props.onPress && this.props.onPress(); }, componentWillMount: function(){ var _this = this; FBLoginManager.getCredentials(function(error, data){ if (!error) { _this.setState({ user : data}) } }); }, render: function() { var text = this.state.user ? "Log out" : "Log in with Facebook"; return ( <View style={this.props.style}> <TouchableHighlight style={styles.container} onPress={this.onPress} > <View style={styles.FBLoginButton}> <Image style={styles.FBLogo} source={require('./images/FB-f-Logo__white_144.png')} /> <Text style={[styles.FBLoginButtonText, this.state.user ? styles.FBLoginButtonTextLoggedIn : styles.FBLoginButtonTextLoggedOut]} numberOfLines={1}>{text}</Text> </View> </TouchableHighlight> </View> ); } }); var styles = StyleSheet.create({ container: { flex: 1, flexDirection: 'row', justifyContent: 'center', alignItems: 'center', }, FBLoginButton: { flex: 1, flexDirection: 'row', alignItems: 'center', justifyContent: 'center', height: 30, width: 175, paddingLeft: 2, backgroundColor: 'rgb(66,93,174)', borderRadius: 3, borderWidth: 1, borderColor: 'rgb(66,93,174)', shadowColor: "#000000", shadowOpacity: 0.8, shadowRadius: 2, shadowOffset: { height: 1, width: 0 }, }, FBLoginButtonText: { color: 'white', fontWeight: '600', fontFamily: 'Helvetica neue', fontSize: 14.2, }, FBLoginButtonTextLoggedIn: { marginLeft: 5, }, FBLoginButtonTextLoggedOut: { marginLeft: 18, }, FBLogo: { position: 'absolute', height: 14, width: 14, left: 7, top: 7, }, }); module.exports = FBLoginMock;