11/**
22 * @flow
3- * Created by Rabbit on 2018/5/4 .
3+ * Created by Rabbit on 2019-02-25 .
44 */
5-
65import React from 'react' ;
7- import { StyleSheet , Text , View , Image , ActivityIndicator , Modal , TouchableWithoutFeedback } from 'react-native' ;
8- import { MasonryList } from '../../../components ' ;
9- import BaseContainer from '../../../components/BaseContainer ' ;
6+ import { StyleSheet } from 'react-native' ;
7+ import { WaterfallList } from 'react-native-largelist-v3 ' ;
8+ import { NormalFooter } from 'react-native-spring-scrollview/NormalFooter ' ;
109
1110import { WelfareMobx } from '../../../mobx/News' ;
12-
13- import { observer } from 'mobx-react ' ;
11+ import { inject , observer } from 'mobx-react' ;
12+ import type { RTWeal } from '../../../servers/News/interfaces ' ;
1413import { Button , CustomImage } from '../../../components' ;
15- import type { NavigationState } from 'react-navigation' ;
16- import { RTWeal } from '../../../servers/News/interfaces' ;
1714import { System } from '../../../utils' ;
1815import { ActionSheet , Overlay } from 'teaset' ;
19- import { inject } from 'mobx- react' ;
16+ import type { NavigationState } from 'react-navigation ' ;
2017import { PowerStore } from '../../../store/PowerStore' ;
18+ import { ConfigStore } from '../../../store/ConfigStore' ;
2119
2220type Props = {
2321 navigate : NavigationState ,
24- powerStore : PowerStore
22+ powerStore : PowerStore ,
23+ configStore : ConfigStore
2524} ;
26-
27- @inject ( 'powerStore' )
25+ @inject ( 'powerStore' , 'configStore' )
2826@observer
2927class Welfare extends React . Component < Props > {
30- welfareMobx : WelfareMobx ;
31- customPopView : any ;
32-
33- constructor ( props : Props ) {
28+ constructor ( props ) {
3429 super ( props ) ;
3530 this . welfareMobx = new WelfareMobx ( ) ;
3631 }
3732
3833 async componentDidMount ( ) : void {
39- await this . welfareMobx . fetchWelfareData ( 1 ) ;
34+ await this . welfareMobx . loadWelfareData ( 'refreshing' ) ;
4035 }
4136
4237 actionSheetToSaveImage = ( item : RTWeal ) => {
@@ -52,7 +47,7 @@ class Welfare extends React.Component<Props> {
5247 title : '设置主屏幕' ,
5348 type : 'default' ,
5449 onPress : async ( ) => {
55- // alert ('设置成功');
50+ this . props . configStore . showToast ( '设置成功' ) ;
5651 await this . props . powerStore . setShiTuBackgroundImage ( item . url ) ;
5752 }
5853 }
@@ -66,7 +61,7 @@ class Welfare extends React.Component<Props> {
6661 < Overlay . PopView
6762 style = { { alignItems : 'center' , justifyContent : 'center' } }
6863 overlayOpacity = { 1 }
69- type = "zoomIn "
64+ type = "zoomOut "
7065 ref = { v => ( this . customPopView = v ) }
7166 >
7267 < Button
@@ -88,70 +83,47 @@ class Welfare extends React.Component<Props> {
8883 Overlay . show ( overlayView ) ;
8984 }
9085
91- renderItem = ( { item } : { item : RTWeal , index : number , column : number } ) => {
86+ renderItem = ( item : RTWeal ) => {
9287 return (
93- < Button onPress = { ( ) => this . showPopCustom ( item ) } >
94- < CustomImage
95- source = { { uri : item . url } }
96- style = { [ styles . cell , { height : item . height , backgroundColor : 'white' } ] }
97- />
88+ < Button onPress = { ( ) => this . showPopCustom ( item ) } style = { { flex : 1 } } >
89+ < CustomImage source = { { uri : item . url } } style = { [ styles . cell ] } />
9890 </ Button >
9991 ) ;
10092 } ;
10193
102- renderFooterComponent = ( ) => {
103- const { isRefreshing } = this . welfareMobx ;
104- return (
105- ! isRefreshing && (
106- < View
107- style = { {
108- height : 50 ,
109- flex : 1 ,
110- alignItems : 'center' ,
111- justifyContent : 'center'
112- } }
113- >
114- < ActivityIndicator size = { 'small' } />
115- </ View >
116- )
117- ) ;
118- } ;
119-
12094 render ( ) {
121- const { dataSource, isRefreshing, refreshData, loadMoreData } = this . welfareMobx ;
122-
95+ const { dataSource , isRefreshing , loadWelfareData } = this . welfareMobx ;
12396 return (
124- < BaseContainer key = { 'base' } isHiddenNavBar = { true } isTopNavigator = { true } store = { this . welfareMobx } >
125- < MasonryList
126- onRefresh = { refreshData }
127- style = { { backgroundColor : 'white' } }
128- refreshing = { isRefreshing }
129- data = { dataSource . slice ( ) }
130- renderItem = { this . renderItem }
131- getHeightForItem = { ( { item } ) => item . height + 2 }
132- numColumns = { 2 }
133- initialNumToRender = { 10 }
134- keyExtractor = { item => item . _id }
135- ListEmptyComponent = { ( ) => < View /> }
136- ListHeaderComponent = { ( ) => < View /> }
137- ListFooterComponent = { this . renderFooterComponent }
138- onEndReachedThreshold = { 0.1 }
139- onEndReached = { loadMoreData }
140- />
141- </ BaseContainer >
97+ < WaterfallList
98+ ref = { ref => ( this . _scrollView = ref ) }
99+ data = { dataSource }
100+ style = { styles . container }
101+ heightForItem = { item => item . height + 10 }
102+ preferColumnWidth = { SCREEN_WIDTH / 2 - 10 }
103+ renderItem = { this . renderItem }
104+ onRefresh = { ( ) => {
105+ loadWelfareData ( 'refreshing' ) ;
106+ ! isRefreshing && this . _scrollView . endRefresh ( ) ; // 报错
107+ } }
108+ onLoading = { async ( ) => {
109+ loadWelfareData ( 'load more' ) ;
110+ this . _scrollView . endLoading ( ) ;
111+ } }
112+ // loadingFooter={NormalFooter}
113+ />
142114 ) ;
143115 }
144116}
145117
118+ export { Welfare } ;
119+
146120const styles = StyleSheet . create ( {
147121 container : {
148- flex : 1
122+ paddingHorizontal : 3
149123 } ,
150124 cell : {
151- margin : 1 ,
152- alignItems : 'center' ,
153- justifyContent : 'center '
125+ flex : 1 ,
126+ margin : 5 ,
127+ backgroundColor : 'white '
154128 }
155129} ) ;
156-
157- export { Welfare } ;
0 commit comments