From b2998a1f7b64f93ffd9ae90f85ca0581015d589a Mon Sep 17 00:00:00 2001 From: bezvershenko Date: Tue, 12 Mar 2019 21:54:03 +0400 Subject: Add 'pull-to-refresh' in ListView and ArticleView Add host's constant for backend ip-address --- frontend/app/screens/articles/articles2.js | 143 ++++++++++++++++------------- 1 file changed, 81 insertions(+), 62 deletions(-) (limited to 'frontend/app/screens/articles/articles2.js') diff --git a/frontend/app/screens/articles/articles2.js b/frontend/app/screens/articles/articles2.js index 0d48812..03a78da 100644 --- a/frontend/app/screens/articles/articles2.js +++ b/frontend/app/screens/articles/articles2.js @@ -1,84 +1,103 @@ import React from 'react'; import { - FlatList, - Image, - View, - TouchableOpacity, + FlatList, + Image, + View, + TouchableOpacity, } from 'react-native'; import { - RkText, - RkCard, RkStyleSheet, + RkText, + RkCard, RkStyleSheet, } from 'react-native-ui-kitten'; import axios from 'axios'; -import { SocialBar } from '../../components'; +import {SocialBar} from '../../components'; import NavigationType from '../../config/navigation/propTypes'; +import {HOST} from '../../constants' export class Articles2 extends React.Component { - static propTypes = { - navigation: NavigationType.isRequired, - }; - static navigationOptions = { - title: 'Problems List'.toUpperCase(), - }; + static propTypes = { + navigation: NavigationType.isRequired, + }; + static navigationOptions = { + title: 'Problems List'.toUpperCase(), + }; - state = { - articles: [], - }; + state = { + articles: [], + refreshing: false, + }; - componentDidMount() { - axios.get('http://192.168.1.43:8000/api/articles') - .then(res => { + componentDidMount() { + this.makeRemoteRequest() + }; + + makeRemoteRequest = () => { + axios.get(`${HOST}/api/articles`) + .then(res => { + this.setState({ + articles: res.data, + refreshing: false, + }); + + }); + }; + + handleRefresh = () =>{ this.setState({ - articles: res.data, - }); + refreshing: true, + }, () => { + setTimeout(()=>{this.makeRemoteRequest()}, 500) - }); - } + }) + }; - extractItemKey = (item) => `${item.id}`; + extractItemKey = (item) => `${item.id}`; - onItemPressed = (item) => { - this.props.navigation.navigate('Article', { id: item.id }); - }; + onItemPressed = (item) => { + this.props.navigation.navigate('Article', {id: item.id}); + }; - renderItem = ({ item }) => ( - this.onItemPressed(item)}> - - - - {item.title} - - - - - - - ); + renderItem = ({item}) => ( + this.onItemPressed(item)}> + + + + {item.title} + + + + + + + ); - render = () => ( - - ); + render = () => ( + + ); } const styles = RkStyleSheet.create(theme => ({ - container: { - backgroundColor: theme.colors.screen.scroll, - paddingVertical: 8, - paddingHorizontal: 14, - }, - card: { - marginVertical: 8, - }, - time: { - marginTop: 5, - }, + container: { + backgroundColor: theme.colors.screen.scroll, + paddingVertical: 8, + paddingHorizontal: 14, + }, + card: { + marginVertical: 8, + }, + time: { + marginTop: 5, + }, })); -- cgit v1.2.3