SuperMan.js 2.68 KB
'use strict';

import React from 'react';
import ReactNative from 'react-native';
import ImmutablePropTypes from 'react-immutable-proptypes';

const {
    View,
    Text,
    Image,
    TouchableOpacity,
    StyleSheet,
    Dimensions,
} = ReactNative;

export default class SuperMan extends React.Component {

    static propTypes = {
        avatar: React.PropTypes.string,
        msgNumber: React.PropTypes.number,
        onSaveingTheWorld: React.PropTypes.func,
    };

    constructor(props) {
        super (props);


    }

    renderMsgNumber() {
        if (this.props.msgNumber > 0) {
            return (
                <View style={styles.textContainer}>
                    <Text style={styles.text}>{this.props.msgNumber}</Text>
                </View>
            );
        } else {
            return null;
        }
    }

    render() {
        let avtatStyle = this.props.avatar ? styles.avatarContainer : null;
        return (
            <View style={[styles.container, this.props.fly]}>
                <TouchableOpacity onPress={() => {
                    this.props.onSaveingTheWorld && this.props.onSaveingTheWorld();
                }}>
                    <View style={avtatStyle}>
                        <Image style={styles.avatar} source={{uri: this.props.avatar}} resizeMode={'cover'} defaultSource={require('../../images/home/superman.png')}/>
                    </View>
                    {this.renderMsgNumber()}
                </TouchableOpacity>
            </View>
        );
    }
}

let styles = StyleSheet.create({
    container: {
        flexDirection: 'row',
        alignItems: 'center',
        backgroundColor: 'transparent',
        width: 45,
        height: 45,
        justifyContent: 'center',
    },
    avatarContainer: {
        width: 44,
        height: 44,
        borderRadius: 22,
        shadowColor: 'darkgray',
        shadowOpacity: 1,
        shadowOffset: {width: 0, height: 0},
    },
    avatar: {
        width: 44,
        height: 44,
        borderRadius: 22,
        borderColor: 'white',
        borderWidth: 1,
        // shadowColor: 'red',
        // shadowOpacity: 1,
        // // shadowRadius: 20,
        // shadowOffset: {width: 0, height: 0},
    },
    textContainer: {
        position: 'absolute',
        top: -4,
        right: -4,
        height: 18,
        borderRadius: 9,
        borderColor: 'red',
        borderWidth: 1,
        justifyContent: 'center',
        alignItems: 'center',
        opacity: 0.9,
        backgroundColor: 'white',
    },
    text: {
        fontSize: 12,
        color: 'red',
        textAlign: 'center',
        marginHorizontal: 6,
        marginVertical: 6,
        backgroundColor: 'transparent',
    },
});