SideBar.js 6.96 KB
import PropTypes from 'prop-types';
import React, {Component} from 'react';
import {NavigationActions} from 'react-navigation';
import Modal from 'react-native-modal';
import RNKakao from 'rn-kakao-login';
import Avatar from '../assets/avatar.svg'
import AsyncStorage from '@react-native-community/async-storage'
import {ScrollView, Text, View, StyleSheet, Dimensions, TouchableOpacity,StatusBar,Image} from 'react-native';
class SideMenu extends Component {
    navigateToScreen = (route) => () => {
      const navigateAction = NavigationActions.navigate({
        routeName: route
      });
      this.props.navigation.dispatch(navigateAction);
    }
  constructor(props) {
      super(props)
      this.state= {
          user:{},
          pushData:[],
          not_checked:0,
          inquiry:[],
          isModalVisible:false,
      }
      this.onLoad = this.onLoad.bind(this)
      this.check = this.check.bind(this)
  }
  
  toggleModal = () => {
      if(!this.state.user.id) return alert("로그인 후 이용 가능합니다.")
      if(this.state.isModalVisible == true) {
        this.setState({
            isModalVisible:false
        })
      }
      else {
        this.setState({
            isModalVisible:true
        })
      }
  };
    onLoad = () => {
        this.props.navigation.addListener('willFocus', () => {
            this.check();
        });
    };

    
    check = () => {  
        AsyncStorage.getItem('user',(err,res) => {
            if(res) {
                this.setState({
                    user:JSON.parse(res)
                },() => {
                })
            }
        })
    };
    onLogout = async () => {
        try {
            const a = await RnKakao.logout()
        }
        catch(e) {
            console.log(e)
        }
        AsyncStorage.removeItem('user')
        this.setState({
            user:{}
        })
    }
    componentDidMount() {
        this.onLoad()
        this.check()
    }
  render () {
    const {user} = this.state
    return (
        
        <ScrollView style={{backgroundColor:"white",paddingLeft:"10%",width:"100%",height:Dimensions.get('window').height}}>
            <View>
                {this.state.user.nickname?
                <View  style={{flexDirection:"row",marginTop:40,marginBottom:50,flex:1}}> 
                    <View>
                    <Text style={{color:"black",fontWeight:"bold",fontSize:17}}>
                        {user.phone?user.phone:""}
                    </Text>
                    <Text style={{color:"black",fontWeight:"bold",fontSize:17}}>
                        {user.nickname} 
                    </Text>
                    </View>
                        <View style={{marginLeft:"auto",marginRight:30}}>
                            {user.profileImageThumbnail || user.picture?<Image style={{alignSelf:"center",width:48,height:48,borderRadius:100,borderColor:'#615F5F',borderWidth:1}} source={Image.profileImageThumbnail?{uri:user.profileImageThumbnail}:user.picture?{uri:user.picture}:undefined}/> :<Avatar style={{alignSelf:"center"}}/>}
                            <TouchableOpacity onPress={() => this.props.navigation.navigate("EditProfile")}>
                                <Text style={{marginTop:6,textAlign:"center",fontSize:12,fontWeight:"bold",color:"#FFD63A"}}>
                                    프로필 편집
                                </Text>
                            </TouchableOpacity>
                        </View>
                    </View>
                    : <TouchableOpacity onPress={() => this.props.navigation.navigate("LoginTab")} style={{marginTop:40,marginBottom:50,flex:1,flexDirection:"row"}}>
                    <Text style={{color:"black",fontWeight:"bold",fontSize:15}}>
                        로그인 하러가기
                    </Text>
                    <Image source={require('../assets/go.png')} style={{marginLeft:10}}/>
                </TouchableOpacity>}
                
                <TouchableOpacity onPress={() => this.props.navigation.navigate("MyCoupon")} style={{marginBottom:24,flex:1,flexDirection:"row"}}>
                    <Text style={{color:"#6D6E70",fontWeight:"bold",fontSize:15}}>
                         쿠폰 & 스탬프
                    </Text>
                </TouchableOpacity>
                <TouchableOpacity onPress={this.toggleModal} style={{marginBottom:300,flex:1,flexDirection:"row"}}>
                    <Text style={{color:"#6D6E70",fontWeight:"bold",fontSize:15}}>
                         스토어 관리
                    </Text>
                </TouchableOpacity>
            </View>
                <TouchableOpacity onPress={() => this.onLogout()} style={{position:"absolute",bottom:"10%",flex:1,flexDirection:"row"}}>
                    <Text style={{color:"#6D6E70",fontWeight:"bold",fontSize:15}}>
                        로그아웃
                    </Text>
                </TouchableOpacity>

                
      <Modal onBackButtonPress={() => this.setState({isModalVisible:false})} onBackdropPress={() => this.setState({isModalVisible:false})} isVisible={this.state.isModalVisible}>
        <View style={{ width:"80%",backgroundColor:"white",alignSelf:"center"}}>
          <TouchableOpacity onPress={() => { 
              this.setState({isModalVisible:false})
              this.props.navigation.navigate("Store")}}>
          <Text style={{color:"#979292",fontSize:16,lineHeight:50,textAlign:"center",marginTop:10}}>스토어</Text>
          </TouchableOpacity>
          <TouchableOpacity onPress={() => { this.setState({isModalVisible:false}) 
          this.props.navigation.navigate("Coupon")}}>
          <Text style={{color:"#979292",fontSize:16,lineHeight:50,textAlign:"center"}}>쿠폰</Text>
          </TouchableOpacity>
          <TouchableOpacity onPress={() => { this.setState({isModalVisible:false})
          this.props.navigation.navigate("Stamp")}}>
          <Text style={{color:"#979292",fontSize:16,lineHeight:50,textAlign:"center"}}>스탬프</Text>
          </TouchableOpacity>
          <TouchableOpacity onPress={() => { this.setState({isModalVisible:false})
          this.props.navigation.navigate("Menu")}}>
          <Text style={{color:"#979292",fontSize:16,lineHeight:50,textAlign:"center"}}>메뉴</Text>
          </TouchableOpacity>
          <TouchableOpacity>
          <Text style={{color:"#979292",fontSize:16,lineHeight:50,textAlign:"center"}}>리뷰게시판</Text>
          </TouchableOpacity>
          <TouchableOpacity onPress={() => {
              this.setState({
                  isModalVisible:false
              })
              this.props.navigation.navigate("Send_Alarm")
          }}>
          <Text style={{color:"#979292",fontSize:16,lineHeight:50,textAlign:"center",marginBottom:10}}>알림발송</Text>
          </TouchableOpacity>
        </View>
      </Modal>
        </ScrollView>
    );
  }
}

const styles = StyleSheet.create({
    elem: {

    },
    small_elem: {

    }
})
SideMenu.propTypes = {
  navigation: PropTypes.object
};


export default (SideMenu)