From 3d44a3aaf53ba3f845ae9e7b4f95589e87d52d15 Mon Sep 17 00:00:00 2001 From: xuwenyang Date: Wed, 22 May 2019 00:21:34 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=97=A5=E8=AE=B0=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E7=82=B9=E5=87=BA=E6=97=A5=E8=AE=B0=E8=AF=A6=E6=83=85=E9=A1=B5?= =?UTF-8?q?=202.=20=E7=94=A8=E6=88=B7=E5=A4=B4=E5=83=8F=E7=82=B9=E5=87=BA?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=AF=A6=E6=83=85=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/component/diary/diaryBrief.js | 2 +- src/component/diary/diaryList.js | 45 +++++++++++++++++++- src/component/notebook/notebookDiaryList.js | 23 +++++++++- src/component/notebook/notebookList.js | 29 ++++++++++++- src/component/userIntro.js | 3 +- src/page/FollowPage.js | 38 +---------------- src/page/HomePage.js | 25 +---------- src/page/NotebookDetailPage.js | 4 +- src/page/UserPage.js | 25 ++++------- src/util/api.js | 47 +++++++++++++-------- 10 files changed, 137 insertions(+), 104 deletions(-) diff --git a/src/component/diary/diaryBrief.js b/src/component/diary/diaryBrief.js index f89cba5..1fb9738 100644 --- a/src/component/diary/diaryBrief.js +++ b/src/component/diary/diaryBrief.js @@ -39,7 +39,7 @@ export default class DiaryBrief extends Component { return ( {(user && user.iconUrl && this.show('icon')) - ? : null} + ? : null} diff --git a/src/component/diary/diaryList.js b/src/component/diary/diaryList.js index cecc7f2..4e5f4f5 100644 --- a/src/component/diary/diaryList.js +++ b/src/component/diary/diaryList.js @@ -42,6 +42,46 @@ export default class DiaryList extends Component { }); } + _onUserIconPress(diary) { + Navigation.push(this.props.componentId, { + component: { + name: 'User', + options: { + bottomTabs: { + visible: false, + + // hide bottom tab for android + drawBehind: true, + animate: true + } + }, + passProps: { + user: diary.user + } + } + }); + } + + _onDiaryPress(diary) { + Navigation.push(this.props.componentId, { + component: { + name: 'DiaryDetail', + options: { + bottomTabs: { + visible: false, + + // hide bottom tab for android + drawBehind: true, + animate: true + } + }, + passProps: { + diary: diary + } + } + }); + } + async refresh() { if (this.state.refreshing) { return; @@ -130,9 +170,10 @@ export default class DiaryList extends Component { renderItem={({item}) => { return ( - this.props.onDiaryPress(item)}> + this._onDiaryPress(item)}> + showField={this.props.showField} + onUserIconPress={() => this._onUserIconPress(item)}> ) diff --git a/src/component/notebook/notebookDiaryList.js b/src/component/notebook/notebookDiaryList.js index 3496468..7de455c 100644 --- a/src/component/notebook/notebookDiaryList.js +++ b/src/component/notebook/notebookDiaryList.js @@ -8,6 +8,7 @@ import { TouchableOpacity, ActivityIndicator } from 'react-native'; +import {Navigation} from 'react-native-navigation'; import moment from 'moment' import Api from '../../util/api'; @@ -149,6 +150,26 @@ export default class NotebookDiaryList extends Component { }); } + _onDiaryPress(diary) { + Navigation.push(this.props.componentId, { + component: { + name: 'DiaryDetail', + options: { + bottomTabs: { + visible: false, + + // hide bottom tab for android + drawBehind: true, + animate: true + } + }, + passProps: { + diary: diary + } + } + }); + } + render() { return this.notebook ? ( @@ -159,7 +180,7 @@ export default class NotebookDiaryList extends Component { sections={this.state.diaries} renderItem={(rowData) => { - return ( {}}> + return ( this._onDiaryPress(rowData.item)}> diff --git a/src/component/notebook/notebookList.js b/src/component/notebook/notebookList.js index 19c38ab..3b46860 100644 --- a/src/component/notebook/notebookList.js +++ b/src/component/notebook/notebookList.js @@ -8,6 +8,7 @@ import { RefreshControl, TouchableOpacity } from 'react-native'; +import {Navigation} from 'react-native-navigation'; import Api from '../../util/api'; import Notebook from './notebook' @@ -20,6 +21,8 @@ export default class NotebookList extends Component { this.itemsPerRow = 2; this.state = { + user: props.user, + notebooks: [], refreshing: false }; @@ -56,9 +59,31 @@ export default class NotebookList extends Component { return groups; } + _onNotebookPress(notebook) { + Navigation.push(this.props.componentId, { + component: { + name: 'NotebookDetail', + options: { + bottomTabs: { + visible: false, + + // hide bottom tab for android + drawBehind: true, + animate: true + } + }, + passProps: { + notebook: notebook + } + } + }); + } + refresh() { this.setState({refreshing: true}); - Api.getSelfNotebooks() + + let user = this.state.user; + (user ? Api.getUserNotebooks(user.id) : Api.getSelfNotebooks()) .then(notebooks => { let groups = this.createGroup(notebooks, this.itemsPerRow); this.setState({ @@ -73,7 +98,7 @@ export default class NotebookList extends Component { _renderItem(notebook) { return notebook ? ( this.props.onNotebookPress(notebook)}> + onPress={() => this._onNotebookPress(notebook)}> diff --git a/src/component/userIntro.js b/src/component/userIntro.js index b6b97cc..94a5acd 100644 --- a/src/component/userIntro.js +++ b/src/component/userIntro.js @@ -29,7 +29,8 @@ export default class UserIntro extends Component { } loadUser() { - Api.getSelfInfoByStore() + let user = this.state.user; + (user ? Api.getUserInfo(user.id) : Api.getSelfInfoByStore()) .then(user => { this.setState({ user: user diff --git a/src/page/FollowPage.js b/src/page/FollowPage.js index e7b1ccb..d9cb66a 100644 --- a/src/page/FollowPage.js +++ b/src/page/FollowPage.js @@ -35,20 +35,6 @@ export default class FollowPage extends Component { } navigationButtonPressed({buttonId}) { - /* - Navigation.setRoot({ - root: { - stack: { - children: [{ - component: { - name: 'FollowUser' - } - }] - } - } - }); - */ - Navigation.push(this.props.componentId, { component: { name: 'FollowUser', @@ -66,34 +52,12 @@ export default class FollowPage extends Component { } - _onDiaryPress(diary) { - Navigation.push(this.props.componentId, { - component: { - name: 'DiaryDetail', - passProps: { - diary: diary - } - } - }); - } - - renderHeader() { - return ( - - 关注 - - ); - } - render() { return ( this.list = r} dataSource={this.dataSource} - /* header={this.renderHeader.bind(this)} */ - onDiaryPress={this._onDiaryPress.bind(this)} - - navigator={this.props.navigator} + {...this.props} > diff --git a/src/page/HomePage.js b/src/page/HomePage.js index 039f295..2a75de8 100644 --- a/src/page/HomePage.js +++ b/src/page/HomePage.js @@ -15,35 +15,12 @@ export default class HomePage extends Component { this.dataSource = new HomeDiaryData(); } - _onDiaryPress(diary) { - console.log('componentId:', this.props.componentId, diary); - Navigation.push(this.props.componentId, { - component: { - name: 'DiaryDetail', - options: { - bottomTabs: { - visible: false, - - // hide bottom tab for android - drawBehind: true, - animate: true - } - }, - passProps: { - diary: diary - } - } - }); - } - render() { return ( this.list = r} dataSource={this.dataSource} - onDiaryPress={this._onDiaryPress.bind(this)} - - navigator={this.props.navigator} + {...this.props} > diff --git a/src/page/NotebookDetailPage.js b/src/page/NotebookDetailPage.js index b7fe534..a605f17 100644 --- a/src/page/NotebookDetailPage.js +++ b/src/page/NotebookDetailPage.js @@ -10,7 +10,9 @@ export default class NotebookDetailPage extends Component { render() { return ( - + + ); } diff --git a/src/page/UserPage.js b/src/page/UserPage.js index 8a819f1..39206f5 100644 --- a/src/page/UserPage.js +++ b/src/page/UserPage.js @@ -22,7 +22,9 @@ export default class UserPage extends Component { constructor(props) { super(props); - this.dataSource = new UserDiaryData(); + this.user = props.user; + this.userId = this.user ? this.user.id : (props.userId || 0); + this.dataSource = new UserDiaryData(this.userId); this.state = { index: 0, @@ -34,17 +36,7 @@ export default class UserPage extends Component { }; } - _onNotebookPress(notebook) { - Navigation.push(this.props.componentId, { - component: { - name: 'NotebookDetail', - passProps: { - notebook: notebook - } - } - }); - - } + _renderLabel = props => ({route}) => { let routes = props.navigationState.routes; @@ -75,16 +67,15 @@ export default class UserPage extends Component { _renderScene = SceneMap({ userIntro: () => , diary: () => {}} - - navigator={this.props.navigator} + {...this.props} />, notebook: () => }); diff --git a/src/util/api.js b/src/util/api.js index 2f2afd4..7b6d0a4 100644 --- a/src/util/api.js +++ b/src/util/api.js @@ -65,22 +65,6 @@ async function getFollowDiaries(page = 1, page_size = 20, first_id = '') { }); } -async function getDiaryComments(diaryId) { - return call('GET', '/diaries/' + diaryId + '/comments') -} - -async function getSelfNotebooks() { - return call('GET', '/notebooks/my') -} - -async function getRelationUsers(page, page_size) { - return call('GET', `/relation?page=${page}&page_size=${page_size}`); -} - -async function getRelationReverseUsers(page, page_size) { - return call('GET', `/relation/reverse?page=${page}&page_size=${page_size}`); -} - async function getNotebookDiaries(id, page, page_size) { return call('GET', '/notebooks/' + id + '/diaries?page=' + page + '&page_size=' + page_size, null, 30000) .then((json) => { @@ -91,12 +75,36 @@ async function getNotebookDiaries(id, page, page_size) { }); } +async function getUserTodayDiaries(userId) { + return call('GET', '/users/' + userId + '/diaries/'); +} + +async function getDiaryComments(diaryId) { + return call('GET', '/diaries/' + diaryId + '/comments') +} + +async function getSelfNotebooks() { + return call('GET', '/notebooks/my') +} + +async function getUserNotebooks(id) { + return call('GET', '/users/' + id + '/notebooks') +} + +async function getRelationUsers(page, page_size) { + return call('GET', `/relation?page=${page}&page_size=${page_size}`); +} + +async function getRelationReverseUsers(page, page_size) { + return call('GET', `/relation/reverse?page=${page}&page_size=${page_size}`); +} + async function getSelfInfoByStore() { return await TokenManager.getUserInfo(); } -async function getUserTodayDiaries(userId) { - return call('GET', '/users/' + userId + '/diaries/'); +async function getUserInfo(id) { + return call('GET', '/users/' + id) } async function getMessagesHistory() { @@ -192,6 +200,7 @@ export default { login, getSelfInfoByStore, + getUserInfo, getTodayDiaries, getFollowDiaries, @@ -199,7 +208,9 @@ export default { getUserTodayDiaries, getDiaryComments, + getSelfNotebooks, + getUserNotebooks, getRelationUsers, getRelationReverseUsers,