summaryrefslogtreecommitdiff
path: root/frontend/app/screens/articles/article.js
blob: aedeb1d9ee66106e35bf75d9d3dfc7a63199da9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import React from 'react';
import axios from 'axios';
import {
    ScrollView,
    Image,
    View,
    RefreshControl,
} from 'react-native';

import {
    RkCard,
    RkText,
    RkStyleSheet,
} from 'react-native-ui-kitten';
import {
    Avatar,
    SocialBar,
} from '../../components';
import NavigationType from '../../config/navigation/propTypes';
import {HOST} from '../../constants'


export class Article extends React.Component {
    state = {
        article: {},
        mounted: false,
        refreshing: false,
    };

    static propTypes = {
        navigation: NavigationType.isRequired,
    };
    static navigationOptions = {
        title: 'Current problem'.toUpperCase(),
    };


    componentWillMount() {
        this.makeRemoteRequest()
    }

    makeRemoteRequest = () => {
        const articleId = this.props.navigation.getParam('id', 1);
        console.log(articleId);

        axios.get(`${HOST}/api/articles/${articleId}`)
            .then(res => {
                this.setState({
                    article: res.data,
                    mounted: true,
                    refreshing: false,
                });
                console.log(this.state.article);
            });
    };

    handleRefresh = () => {
        this.setState({
            refreshing: true,
        }, () => {
            setTimeout(() => {
                this.makeRemoteRequest()
            }, 500)

        })
    };


    render() {
        if (this.state.mounted) {
            return (
                <ScrollView style={styles.root} refreshControl={
                    <RefreshControl
                        refreshing={this.state.refreshing}
                        onRefresh={this.handleRefresh}
                    />}>
                    <RkCard rkType='article'>
                        <Image
                            rkCardImg
                            source={{
                                uri: `${this.state.article.image.toString()
                                    .replace('http://127.0.0.1:8000/', '')}`,
                            }}
                        />
                        <View rkCardHeader>
                            <View>
                                <RkText style={styles.title} rkType='header4'>{this.state.article.title}</RkText>
                            </View>


                        </View>
                        <View rkCardContent>
                            <View>
                                <RkText rkType='primary3 bigLine'>{this.state.article.text}</RkText>
                            </View>
                        </View>
                        <View rkCardFooter>
                            <SocialBar comments={this.state.article.n_comments}
                                       is_solved={this.state.article.is_solved ? 'Solved' : "Doesn't solved"}/>
                        </View>
                    </RkCard>
                </ScrollView>

            );
        }
        return null;
    }
}

const styles = RkStyleSheet.create(theme => ({
    root: {
        backgroundColor: theme.colors.screen.base,
    },
    title: {
        marginBottom: 5,
    },
}));