mirror of
https://github.com/ecency/ecency-mobile.git
synced 2024-11-22 23:28:56 +03:00
Merge branch 'development' into bugfix/navigation
This commit is contained in:
commit
5af359bf66
@ -929,7 +929,7 @@
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = app.esteem.mobile.ios;
|
||||
PRODUCT_NAME = eSteem;
|
||||
PROVISIONING_PROFILE_SPECIFIER = dev09Dec;
|
||||
PROVISIONING_PROFILE_SPECIFIER = dev;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VERSIONING_SYSTEM = "apple-generic";
|
||||
};
|
||||
|
Binary file not shown.
Binary file not shown.
@ -4,7 +4,5 @@
|
||||
<dict>
|
||||
<key>aps-environment</key>
|
||||
<string>development</string>
|
||||
<key>com.apple.developer.associated-domains</key>
|
||||
<array/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
@ -67,7 +67,6 @@
|
||||
"react-native-navigation-bar-color": "^0.1.0",
|
||||
"react-native-reanimated": "^1.3.0",
|
||||
"react-native-render-html": "^4.1.2",
|
||||
"react-native-screens": "^2.0.0-alpha.16",
|
||||
"react-native-scrollable-tab-view": "esteemapp/react-native-scrollable-tab-view",
|
||||
"react-native-slider": "^0.11.0",
|
||||
"react-native-snap-carousel": "^3.8.0",
|
||||
|
@ -37,6 +37,7 @@ export default EStyleSheet.create({
|
||||
position: 'absolute',
|
||||
right: 0,
|
||||
bottom: -10,
|
||||
padding: 10,
|
||||
},
|
||||
voteCountText: {
|
||||
alignSelf: 'center',
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React, { PureComponent, Fragment } from 'react';
|
||||
import React, { Fragment, useState, useRef } from 'react';
|
||||
import { View, TouchableWithoutFeedback } from 'react-native';
|
||||
import ActionSheet from 'react-native-actionsheet';
|
||||
import { injectIntl } from 'react-intl';
|
||||
import { useIntl } from 'react-intl';
|
||||
import get from 'lodash/get';
|
||||
|
||||
import { getTimeFromNow } from '../../../utils/time';
|
||||
@ -17,177 +17,162 @@ import { TextWithIcon } from '../../basicUIElements';
|
||||
// Styles
|
||||
import styles from './commentStyles';
|
||||
|
||||
class CommentView extends PureComponent {
|
||||
/* Props
|
||||
* ------------------------------------------------
|
||||
* @prop { type } name - Description....
|
||||
*/
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
isShowSubComments: props.isShowSubComments || false,
|
||||
isPressedShowButton: false,
|
||||
};
|
||||
}
|
||||
|
||||
// Component Life Cycles
|
||||
// Component Functions
|
||||
|
||||
_showSubCommentsToggle = () => {
|
||||
const { isShowSubComments } = this.state;
|
||||
|
||||
this.setState({ isShowSubComments: !isShowSubComments, isPressedShowButton: true });
|
||||
const CommentView = ({
|
||||
avatarSize,
|
||||
comment,
|
||||
commentNumber,
|
||||
currentAccountUsername,
|
||||
fetchPost,
|
||||
handleDeleteComment,
|
||||
handleOnEditPress,
|
||||
handleOnLongPress,
|
||||
handleOnReplyPress,
|
||||
handleOnUserPress,
|
||||
handleOnVotersPress,
|
||||
isLoggedIn,
|
||||
isShowComments,
|
||||
isShowMoreButton,
|
||||
marginLeft,
|
||||
voteCount,
|
||||
mainAuthor = { mainAuthor },
|
||||
isHideImage,
|
||||
showAllComments,
|
||||
isShowSubComments,
|
||||
hideManyCommentsButton,
|
||||
}) => {
|
||||
const [_isShowSubComments, setIsShowSubComments] = useState(isShowSubComments || false);
|
||||
const [isPressedShowButton, setIsPressedShowButton] = useState(false);
|
||||
const intl = useIntl();
|
||||
const actionSheet = useRef(null);
|
||||
const _showSubCommentsToggle = () => {
|
||||
setIsShowSubComments(!_isShowSubComments);
|
||||
setIsPressedShowButton(true);
|
||||
};
|
||||
|
||||
render() {
|
||||
const {
|
||||
avatarSize,
|
||||
comment,
|
||||
commentNumber,
|
||||
currentAccountUsername,
|
||||
fetchPost,
|
||||
handleDeleteComment,
|
||||
handleOnEditPress,
|
||||
handleOnLongPress,
|
||||
handleOnReplyPress,
|
||||
handleOnUserPress,
|
||||
handleOnVotersPress,
|
||||
isLoggedIn,
|
||||
isShowComments,
|
||||
isShowMoreButton,
|
||||
marginLeft,
|
||||
voteCount,
|
||||
intl,
|
||||
mainAuthor = { mainAuthor },
|
||||
isHideImage,
|
||||
} = this.props;
|
||||
const { isShowSubComments, isPressedShowButton } = this.state;
|
||||
|
||||
return (
|
||||
<TouchableWithoutFeedback onLongPress={handleOnLongPress}>
|
||||
<View>
|
||||
<PostHeaderDescription
|
||||
key={comment.permlink}
|
||||
date={getTimeFromNow(comment.created)}
|
||||
name={comment.author}
|
||||
reputation={comment.author_reputation}
|
||||
size={avatarSize || 24}
|
||||
currentAccountUsername={currentAccountUsername}
|
||||
isShowOwnerIndicator={mainAuthor === comment.author}
|
||||
isHideImage={isHideImage}
|
||||
return (
|
||||
<TouchableWithoutFeedback onLongPress={handleOnLongPress}>
|
||||
<View>
|
||||
<PostHeaderDescription
|
||||
key={comment.permlink}
|
||||
date={getTimeFromNow(comment.created)}
|
||||
name={comment.author}
|
||||
reputation={comment.author_reputation}
|
||||
size={avatarSize || 24}
|
||||
currentAccountUsername={currentAccountUsername}
|
||||
isShowOwnerIndicator={mainAuthor === comment.author}
|
||||
isHideImage={isHideImage}
|
||||
/>
|
||||
<View style={[{ marginLeft: marginLeft || 29 }, styles.bodyWrapper]}>
|
||||
<PostBody
|
||||
isComment
|
||||
commentDepth={comment.depth}
|
||||
handleOnUserPress={handleOnUserPress}
|
||||
body={comment.body}
|
||||
textSelectable={false}
|
||||
/>
|
||||
<View style={[{ marginLeft: marginLeft || 29 }, styles.bodyWrapper]}>
|
||||
<PostBody
|
||||
isComment
|
||||
commentDepth={comment.depth}
|
||||
handleOnUserPress={handleOnUserPress}
|
||||
body={comment.body}
|
||||
textSelectable={false}
|
||||
/>
|
||||
<View style={styles.footerWrapper}>
|
||||
{isLoggedIn && (
|
||||
<Fragment>
|
||||
<Upvote isShowPayoutValue content={comment} />
|
||||
<TextWithIcon
|
||||
iconName="heart-outline"
|
||||
iconSize={20}
|
||||
wrapperStyle={styles.leftButton}
|
||||
iconType="MaterialCommunityIcons"
|
||||
isClickable
|
||||
onPress={() =>
|
||||
handleOnVotersPress &&
|
||||
voteCount > 0 &&
|
||||
handleOnVotersPress(get(comment, 'active_votes'))
|
||||
}
|
||||
text={voteCount}
|
||||
textMarginLeft={20}
|
||||
textStyle={styles.voteCountText}
|
||||
/>
|
||||
<IconButton
|
||||
size={20}
|
||||
iconStyle={styles.leftIcon}
|
||||
style={styles.leftButton}
|
||||
name="comment-outline"
|
||||
onPress={() => handleOnReplyPress && handleOnReplyPress(comment)}
|
||||
iconType="MaterialCommunityIcons"
|
||||
/>
|
||||
{currentAccountUsername === comment.author && (
|
||||
<Fragment>
|
||||
<IconButton
|
||||
size={20}
|
||||
iconStyle={styles.leftIcon}
|
||||
style={styles.leftButton}
|
||||
name="create"
|
||||
onPress={() => handleOnEditPress && handleOnEditPress(comment)}
|
||||
iconType="MaterialIcons"
|
||||
/>
|
||||
{!comment.children && !voteCount && (
|
||||
<Fragment>
|
||||
<IconButton
|
||||
size={20}
|
||||
iconStyle={styles.leftIcon}
|
||||
style={styles.leftButton}
|
||||
name="delete-forever"
|
||||
onPress={() => this.ActionSheet.show()}
|
||||
iconType="MaterialIcons"
|
||||
/>
|
||||
<ActionSheet
|
||||
// eslint-disable-next-line no-return-assign
|
||||
ref={o => (this.ActionSheet = o)}
|
||||
options={[
|
||||
intl.formatMessage({ id: 'alert.delete' }),
|
||||
intl.formatMessage({ id: 'alert.cancel' }),
|
||||
]}
|
||||
title={intl.formatMessage({ id: 'alert.delete' })}
|
||||
destructiveButtonIndex={0}
|
||||
cancelButtonIndex={1}
|
||||
onPress={index => {
|
||||
index === 0 ? handleDeleteComment(comment.permlink) : null;
|
||||
}}
|
||||
/>
|
||||
</Fragment>
|
||||
)}
|
||||
</Fragment>
|
||||
)}
|
||||
</Fragment>
|
||||
)}
|
||||
{isShowMoreButton && (
|
||||
<View style={styles.rightButtonWrapper}>
|
||||
<TextWithIcon
|
||||
wrapperStyle={styles.rightButton}
|
||||
iconName={isShowSubComments ? 'keyboard-arrow-up' : 'keyboard-arrow-down'}
|
||||
textStyle={!isPressedShowButton && styles.moreText}
|
||||
iconType="MaterialIcons"
|
||||
isClickable
|
||||
iconStyle={styles.iconStyle}
|
||||
iconSize={16}
|
||||
onPress={() => this._showSubCommentsToggle()}
|
||||
text={!isPressedShowButton ? `${comment.children} more replies` : ''}
|
||||
/>
|
||||
</View>
|
||||
)}
|
||||
</View>
|
||||
{isShowSubComments && commentNumber > 0 && (
|
||||
<Comments
|
||||
isShowComments={isShowComments}
|
||||
commentNumber={commentNumber && commentNumber * 2}
|
||||
marginLeft={20}
|
||||
isShowSubComments={isShowSubComments}
|
||||
avatarSize={avatarSize || 16}
|
||||
author={comment.author}
|
||||
permlink={comment.permlink}
|
||||
commentCount={comment.children}
|
||||
isShowMoreButton={false}
|
||||
fetchPost={fetchPost}
|
||||
mainAuthor={mainAuthor}
|
||||
/>
|
||||
<View style={styles.footerWrapper}>
|
||||
{isLoggedIn && (
|
||||
<Fragment>
|
||||
<Upvote isShowPayoutValue content={comment} />
|
||||
<TextWithIcon
|
||||
iconName="people"
|
||||
iconSize={20}
|
||||
wrapperStyle={styles.leftButton}
|
||||
iconType="MaterialIcons"
|
||||
isClickable
|
||||
onPress={() =>
|
||||
handleOnVotersPress &&
|
||||
voteCount > 0 &&
|
||||
handleOnVotersPress(get(comment, 'active_votes'))
|
||||
}
|
||||
text={voteCount}
|
||||
textMarginLeft={20}
|
||||
textStyle={styles.voteCountText}
|
||||
/>
|
||||
<IconButton
|
||||
size={20}
|
||||
iconStyle={styles.leftIcon}
|
||||
style={styles.leftButton}
|
||||
name="reply"
|
||||
onPress={() => handleOnReplyPress && handleOnReplyPress(comment)}
|
||||
iconType="MaterialIcons"
|
||||
/>
|
||||
{currentAccountUsername === comment.author && (
|
||||
<Fragment>
|
||||
<IconButton
|
||||
size={20}
|
||||
iconStyle={styles.leftIcon}
|
||||
style={styles.leftButton}
|
||||
name="create"
|
||||
onPress={() => handleOnEditPress && handleOnEditPress(comment)}
|
||||
iconType="MaterialIcons"
|
||||
/>
|
||||
{!comment.children && !voteCount && (
|
||||
<Fragment>
|
||||
<IconButton
|
||||
size={20}
|
||||
iconStyle={styles.leftIcon}
|
||||
style={styles.leftButton}
|
||||
name="delete-forever"
|
||||
onPress={() => actionSheet.current.show()}
|
||||
iconType="MaterialIcons"
|
||||
/>
|
||||
<ActionSheet
|
||||
ref={actionSheet}
|
||||
options={[
|
||||
intl.formatMessage({ id: 'alert.delete' }),
|
||||
intl.formatMessage({ id: 'alert.cancel' }),
|
||||
]}
|
||||
title={intl.formatMessage({ id: 'alert.delete' })}
|
||||
destructiveButtonIndex={0}
|
||||
cancelButtonIndex={1}
|
||||
onPress={index => {
|
||||
index === 0 ? handleDeleteComment(comment.permlink) : null;
|
||||
}}
|
||||
/>
|
||||
</Fragment>
|
||||
)}
|
||||
</Fragment>
|
||||
)}
|
||||
</Fragment>
|
||||
)}
|
||||
{!showAllComments && isShowMoreButton && (
|
||||
<View style={styles.rightButtonWrapper}>
|
||||
<TextWithIcon
|
||||
wrapperStyle={styles.rightButton}
|
||||
iconName={_isShowSubComments ? 'keyboard-arrow-up' : 'keyboard-arrow-down'}
|
||||
textStyle={!isPressedShowButton && styles.moreText}
|
||||
iconType="MaterialIcons"
|
||||
isClickable
|
||||
iconStyle={styles.iconStyle}
|
||||
iconSize={16}
|
||||
onPress={() => _showSubCommentsToggle()}
|
||||
text={!isPressedShowButton ? `${comment.children} more replies` : ''}
|
||||
/>
|
||||
</View>
|
||||
)}
|
||||
</View>
|
||||
{_isShowSubComments && commentNumber > 0 && (
|
||||
<Comments
|
||||
isShowComments={isShowComments}
|
||||
commentNumber={commentNumber + 1}
|
||||
marginLeft={20}
|
||||
isShowSubComments={true}
|
||||
avatarSize={avatarSize || 16}
|
||||
author={comment.author}
|
||||
permlink={comment.permlink}
|
||||
commentCount={comment.children}
|
||||
isShowMoreButton={false}
|
||||
hasManyComments={commentNumber === 5 && get(comment, 'children') > 0}
|
||||
fetchPost={fetchPost}
|
||||
hideManyCommentsButton={hideManyCommentsButton}
|
||||
mainAuthor={mainAuthor}
|
||||
/>
|
||||
)}
|
||||
</View>
|
||||
</TouchableWithoutFeedback>
|
||||
);
|
||||
}
|
||||
}
|
||||
</View>
|
||||
</TouchableWithoutFeedback>
|
||||
);
|
||||
};
|
||||
|
||||
export default injectIntl(CommentView);
|
||||
export default CommentView;
|
||||
|
@ -261,11 +261,16 @@ class CommentsContainer extends Component {
|
||||
isOwnProfile,
|
||||
isHideImage,
|
||||
isShowSubComments,
|
||||
hasManyComments,
|
||||
showAllComments,
|
||||
hideManyCommentsButton,
|
||||
} = this.props;
|
||||
|
||||
return (
|
||||
<CommentsView
|
||||
key={selectedFilter}
|
||||
hasManyComments={hasManyComments}
|
||||
hideManyCommentsButton={hideManyCommentsButton}
|
||||
selectedFilter={selectedFilter}
|
||||
selectedPermlink={_selectedPermlink || selectedPermlink}
|
||||
author={author}
|
||||
@ -285,6 +290,7 @@ class CommentsContainer extends Component {
|
||||
isHideImage={isHideImage}
|
||||
handleOnVotersPress={this._handleOnVotersPress}
|
||||
isShowSubComments={isShowSubComments}
|
||||
showAllComments={showAllComments}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
@ -4,4 +4,18 @@ export default EStyleSheet.create({
|
||||
list: {
|
||||
marginBottom: 20,
|
||||
},
|
||||
moreRepliesButtonWrapper: {
|
||||
backgroundColor: '$iconColor',
|
||||
height: 18,
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
borderRadius: 20,
|
||||
marginTop: 15,
|
||||
minWidth: 40,
|
||||
maxWidth: 170,
|
||||
},
|
||||
moreRepliesText: {
|
||||
color: '$white',
|
||||
fontSize: 10,
|
||||
},
|
||||
});
|
||||
|
@ -1,114 +1,122 @@
|
||||
import React, { Component, Fragment } from 'react';
|
||||
import React, { useState, Fragment, useRef } from 'react';
|
||||
import { FlatList } from 'react-native';
|
||||
import ActionSheet from 'react-native-actionsheet';
|
||||
import get from 'lodash/get';
|
||||
import { injectIntl } from 'react-intl';
|
||||
import { useIntl } from 'react-intl';
|
||||
import { navigate } from '../../../navigation/service';
|
||||
|
||||
// Components
|
||||
// eslint-disable-next-line import/no-cycle
|
||||
import { Comment } from '../../comment';
|
||||
import { Comment, TextButton } from '../..';
|
||||
|
||||
// Constants
|
||||
import ROUTES from '../../../constants/routeNames';
|
||||
|
||||
// Styles
|
||||
import styles from './commentStyles';
|
||||
|
||||
class CommentsView extends Component {
|
||||
/* Props
|
||||
* ------------------------------------------------
|
||||
* @prop { type } name - Description....
|
||||
*/
|
||||
const CommentsView = ({
|
||||
avatarSize,
|
||||
commentCount,
|
||||
commentNumber,
|
||||
comments,
|
||||
currentAccountUsername,
|
||||
fetchPost,
|
||||
handleDeleteComment,
|
||||
handleOnEditPress,
|
||||
handleOnPressCommentMenu,
|
||||
handleOnReplyPress,
|
||||
handleOnUserPress,
|
||||
handleOnVotersPress,
|
||||
hasManyComments,
|
||||
isHideImage,
|
||||
isLoggedIn,
|
||||
isOwnProfile,
|
||||
isShowSubComments,
|
||||
mainAuthor,
|
||||
marginLeft,
|
||||
isShowMoreButton,
|
||||
showAllComments,
|
||||
hideManyCommentsButton,
|
||||
}) => {
|
||||
const [selectedComment, setSelectedComment] = useState(null);
|
||||
const intl = useIntl();
|
||||
const commentMenu = useRef();
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
selectedComment: null,
|
||||
};
|
||||
this.commentMenu = React.createRef();
|
||||
}
|
||||
const _keyExtractor = item => get(item, 'permlink');
|
||||
|
||||
// Component Life Cycles
|
||||
|
||||
// Component Functions
|
||||
|
||||
_keyExtractor = item => item.permlink;
|
||||
|
||||
_openCommentMenu = item => {
|
||||
this.setState({ selectedComment: item });
|
||||
this.commentMenu.current.show();
|
||||
const _openCommentMenu = item => {
|
||||
setSelectedComment(item);
|
||||
commentMenu.current.show();
|
||||
};
|
||||
|
||||
render() {
|
||||
const {
|
||||
mainAuthor,
|
||||
avatarSize,
|
||||
commentCount,
|
||||
commentNumber,
|
||||
comments,
|
||||
currentAccountUsername,
|
||||
fetchPost,
|
||||
handleOnEditPress,
|
||||
handleOnReplyPress,
|
||||
handleOnUserPress,
|
||||
isLoggedIn,
|
||||
isShowSubComments,
|
||||
marginLeft,
|
||||
handleDeleteComment,
|
||||
handleOnPressCommentMenu,
|
||||
handleOnVotersPress,
|
||||
intl,
|
||||
isOwnProfile,
|
||||
isHideImage,
|
||||
} = this.props;
|
||||
const { selectedComment } = this.state;
|
||||
const _readMoreComments = () => {
|
||||
navigate({
|
||||
routeName: ROUTES.SCREENS.COMMENTS,
|
||||
params: { comments, fetchPost, handleOnVotersPress },
|
||||
});
|
||||
};
|
||||
|
||||
const menuItems = isOwnProfile
|
||||
? [
|
||||
intl.formatMessage({ id: 'post.copy_link' }),
|
||||
intl.formatMessage({ id: 'post.open_thread' }),
|
||||
intl.formatMessage({ id: 'alert.cancel' }),
|
||||
]
|
||||
: [intl.formatMessage({ id: 'post.copy_link' }), intl.formatMessage({ id: 'alert.cancel' })];
|
||||
const menuItems = isOwnProfile
|
||||
? [
|
||||
intl.formatMessage({ id: 'post.copy_link' }),
|
||||
intl.formatMessage({ id: 'post.open_thread' }),
|
||||
intl.formatMessage({ id: 'alert.cancel' }),
|
||||
]
|
||||
: [intl.formatMessage({ id: 'post.copy_link' }), intl.formatMessage({ id: 'alert.cancel' })];
|
||||
|
||||
if (!hideManyCommentsButton && hasManyComments) {
|
||||
return (
|
||||
<Fragment>
|
||||
<FlatList
|
||||
style={styles.list}
|
||||
data={comments}
|
||||
keyExtractor={this._keyExtractor}
|
||||
renderItem={({ item }) => (
|
||||
<Comment
|
||||
mainAuthor={mainAuthor}
|
||||
avatarSize={avatarSize}
|
||||
comment={item}
|
||||
commentCount={commentCount || get(item.children)}
|
||||
commentNumber={commentNumber}
|
||||
handleDeleteComment={handleDeleteComment}
|
||||
currentAccountUsername={currentAccountUsername}
|
||||
fetchPost={fetchPost}
|
||||
handleOnEditPress={handleOnEditPress}
|
||||
handleOnReplyPress={handleOnReplyPress}
|
||||
handleOnUserPress={handleOnUserPress}
|
||||
handleOnVotersPress={handleOnVotersPress}
|
||||
isHideImage={isHideImage}
|
||||
isLoggedIn={isLoggedIn}
|
||||
isShowMoreButton={commentNumber === 1 && get(item, 'children') > 0}
|
||||
voteCount={get(item, 'vote_count')}
|
||||
isShowSubComments={isShowSubComments}
|
||||
key={item.permlink}
|
||||
marginLeft={marginLeft}
|
||||
handleOnLongPress={() => this._openCommentMenu(item)}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
<ActionSheet
|
||||
ref={this.commentMenu}
|
||||
options={menuItems}
|
||||
title={get(selectedComment, 'summary')}
|
||||
cancelButtonIndex={isOwnProfile ? 2 : 1}
|
||||
onPress={index => handleOnPressCommentMenu(index, selectedComment)}
|
||||
/>
|
||||
</Fragment>
|
||||
<TextButton
|
||||
style={styles.moreRepliesButtonWrapper}
|
||||
textStyle={styles.moreRepliesText}
|
||||
onPress={() => _readMoreComments()}
|
||||
text="Read more comments"
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default injectIntl(CommentsView);
|
||||
return (
|
||||
<Fragment>
|
||||
<FlatList
|
||||
style={styles.list}
|
||||
data={comments}
|
||||
keyExtractor={_keyExtractor}
|
||||
renderItem={({ item }) => (
|
||||
<Comment
|
||||
mainAuthor={mainAuthor}
|
||||
avatarSize={avatarSize}
|
||||
hideManyCommentsButton={hideManyCommentsButton}
|
||||
comment={item}
|
||||
commentCount={commentCount || get(item, 'children')}
|
||||
commentNumber={commentNumber}
|
||||
handleDeleteComment={handleDeleteComment}
|
||||
currentAccountUsername={currentAccountUsername}
|
||||
fetchPost={fetchPost}
|
||||
handleOnEditPress={handleOnEditPress}
|
||||
handleOnReplyPress={handleOnReplyPress}
|
||||
handleOnUserPress={handleOnUserPress}
|
||||
handleOnVotersPress={handleOnVotersPress}
|
||||
isHideImage={isHideImage}
|
||||
isLoggedIn={isLoggedIn}
|
||||
isShowMoreButton={commentNumber === 1 && get(item, 'children') > 0}
|
||||
showAllComments={showAllComments}
|
||||
voteCount={get(item, 'vote_count')}
|
||||
isShowSubComments={isShowSubComments}
|
||||
key={get(item, 'permlink')}
|
||||
marginLeft={marginLeft}
|
||||
handleOnLongPress={() => _openCommentMenu(item)}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
<ActionSheet
|
||||
ref={commentMenu}
|
||||
options={menuItems}
|
||||
title={get(selectedComment, 'summary')}
|
||||
cancelButtonIndex={isOwnProfile ? 2 : 1}
|
||||
onPress={index => handleOnPressCommentMenu(index, selectedComment)}
|
||||
/>
|
||||
</Fragment>
|
||||
);
|
||||
};
|
||||
|
||||
export default CommentsView;
|
||||
|
@ -222,25 +222,29 @@ class ProfileView extends PureComponent {
|
||||
/>
|
||||
)}
|
||||
</View>
|
||||
<View
|
||||
tabLabel={
|
||||
estimatedWalletValue
|
||||
? `${currencySymbol} ${(estimatedWalletValue * currencyRate).toFixed()}`
|
||||
: intl.formatMessage({
|
||||
id: 'profile.wallet',
|
||||
})
|
||||
}
|
||||
>
|
||||
{selectedUser ? (
|
||||
<Wallet
|
||||
setEstimatedWalletValue={value => this.setState({ estimatedWalletValue: value })}
|
||||
selectedUser={selectedUser}
|
||||
handleOnScroll={isSummaryOpen ? this._handleOnScroll : null}
|
||||
/>
|
||||
) : (
|
||||
<WalletDetailsPlaceHolder />
|
||||
)}
|
||||
</View>
|
||||
{!isOwnProfile && (
|
||||
<View
|
||||
tabLabel={
|
||||
estimatedWalletValue
|
||||
? `${currencySymbol} ${(estimatedWalletValue * currencyRate).toFixed()}`
|
||||
: intl.formatMessage({
|
||||
id: 'profile.wallet',
|
||||
})
|
||||
}
|
||||
>
|
||||
{selectedUser ? (
|
||||
<Wallet
|
||||
setEstimatedWalletValue={value =>
|
||||
this.setState({ estimatedWalletValue: value })
|
||||
}
|
||||
selectedUser={selectedUser}
|
||||
handleOnScroll={isSummaryOpen ? this._handleOnScroll : null}
|
||||
/>
|
||||
) : (
|
||||
<WalletDetailsPlaceHolder />
|
||||
)}
|
||||
</View>
|
||||
)}
|
||||
</ScrollableTabView>
|
||||
</SafeAreaView>
|
||||
</Fragment>
|
||||
|
@ -430,5 +430,8 @@
|
||||
"current_time": "Current time;",
|
||||
"information": "We noticed that your device has incorrect date or time. Please fix Date & Time or Set Automatically and try again."
|
||||
}
|
||||
},
|
||||
"comments": {
|
||||
"title": "Comments"
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"wallet": {
|
||||
"curation_reward": "Curation Reward",
|
||||
"author_reward": "Xelata Nivîskarî",
|
||||
"curation_reward": "Xelata Kuratorê",
|
||||
"author_reward": "Xelata Nivîskêr",
|
||||
"comment_benefactor_reward": "Comment Benefactor Reward",
|
||||
"claim_reward_balance": "Claim Reward Balance",
|
||||
"transfer": "Transfer",
|
||||
"transfer": "Veguheztin",
|
||||
"transfer_to_vesting": "Transfer To Vesting",
|
||||
"transfer_from_savings": "Transfer From Savings",
|
||||
"withdraw_vesting": "Power Down",
|
||||
"withdraw_vesting": "Kêmhêz Bike",
|
||||
"fill_order": "Fill Order",
|
||||
"post": "Şandî",
|
||||
"comment": "Şîrove",
|
||||
@ -19,7 +19,7 @@
|
||||
"outgoing_transfer_title": "Outgoing transfer",
|
||||
"checkin_extra": "Bonus",
|
||||
"delegation": "Şande",
|
||||
"delegations": "Delegations",
|
||||
"delegations": "Şande",
|
||||
"delegation_title": "Xelata şandeyê",
|
||||
"delegation_desc": "Earn ESTM everyday for delegation",
|
||||
"post_title": "Puanên ji bo şandiyê",
|
||||
@ -39,30 +39,30 @@
|
||||
"reblog_desc": "Share what post you like with your friends and earn points.",
|
||||
"login_desc": "When you login into app first time you earn 100 points.",
|
||||
"checkin_extra_desc": "Consistent use of app gives you extra chances to earn more points, be more active and earn more.",
|
||||
"dropdown_transfer": "Gift",
|
||||
"dropdown_transfer": "Diyarî",
|
||||
"dropdown_promote": "Promote",
|
||||
"dropdown_boost": "Boost",
|
||||
"from": "From",
|
||||
"to": "To",
|
||||
"dropdown_boost": "Zêde bike",
|
||||
"from": "Ji",
|
||||
"to": "Bo",
|
||||
"estimated_value_desc": "Determined by purchase value",
|
||||
"estimated_value": "Estimated value",
|
||||
"estimated_amount": "Vote value",
|
||||
"estimated_amount": "Rêjeya dengan",
|
||||
"amount_information": "Drag the slider to adjust the amount",
|
||||
"amount": "Amount",
|
||||
"memo": "Memo",
|
||||
"amount": "Pîvan",
|
||||
"memo": "Bîrname",
|
||||
"information": "Are you sure to transfer funds?",
|
||||
"amount_desc": "Balance",
|
||||
"memo_desc": "This memo is public",
|
||||
"to_placeholder": "Username",
|
||||
"memo_placeholder": "Enter your notes here",
|
||||
"to_placeholder": "Navê bikarhêner",
|
||||
"memo_placeholder": "Notên xwe li vir binivîse",
|
||||
"transfer_token": "Transfer",
|
||||
"points": "Gift ESTM to someone",
|
||||
"transfer_to_saving": "Transfer To Saving",
|
||||
"powerUp": "Power Up",
|
||||
"powerUp": "Bihêz Bike",
|
||||
"withdraw_to_saving": "Withdraw To Saving",
|
||||
"steemconnect_title": "Steemconnect Transfer",
|
||||
"next": "NEXT",
|
||||
"delegate": "Delegate",
|
||||
"steemconnect_title": "Veguheztina Steemconnectê",
|
||||
"next": "PÊŞVE",
|
||||
"delegate": "Şande",
|
||||
"power_down": "Power Down",
|
||||
"withdraw_steem": "Withdraw Steem",
|
||||
"withdraw_sbd": "Withdraw Steem Dollar",
|
||||
@ -89,14 +89,14 @@
|
||||
},
|
||||
"steem": {
|
||||
"title": "STEEM",
|
||||
"buy": "GET STEEM"
|
||||
"buy": "STEEMê BISTÎNE"
|
||||
},
|
||||
"sbd": {
|
||||
"title": "SBD",
|
||||
"buy": "GET SBD"
|
||||
"buy": "SBDê BISTÎNE"
|
||||
},
|
||||
"steem_power": {
|
||||
"title": "STEEM POWER"
|
||||
"title": "HÊZA STEEMê"
|
||||
}
|
||||
},
|
||||
"notification": {
|
||||
@ -120,9 +120,9 @@
|
||||
"older_then": "Older Than A Month"
|
||||
},
|
||||
"leaderboard": {
|
||||
"daily": "DAILY",
|
||||
"weekly": "WEEKLY",
|
||||
"monthly": "MONTHLY"
|
||||
"daily": "ROJANE",
|
||||
"weekly": "HEFTANE",
|
||||
"monthly": "MEHANE"
|
||||
},
|
||||
"messages": {
|
||||
"comingsoon": "Di nêz de taybetiya peyaman li vir e!"
|
||||
@ -130,7 +130,7 @@
|
||||
"profile": {
|
||||
"following": "Şopandin",
|
||||
"follower": "Şopîner",
|
||||
"post": "Post",
|
||||
"post": "Şandî",
|
||||
"details": "Hûrgiliyên Profîlê",
|
||||
"comments": "Şîrove",
|
||||
"replies": "Bersiv",
|
||||
@ -145,15 +145,15 @@
|
||||
"havent_posted": "heta niha ti tişt parve nebûye",
|
||||
"steem_power": "Hêza Steemê",
|
||||
"next_power_text": "Next power down is in",
|
||||
"days": "days",
|
||||
"day": "day",
|
||||
"days": "roj",
|
||||
"day": "roj",
|
||||
"steem_dollars": "Dolarên Steemê",
|
||||
"savings": "Savings",
|
||||
"savings": "Berhev bike",
|
||||
"edit": {
|
||||
"display_name": "Display Name",
|
||||
"about": "About",
|
||||
"location": "Location",
|
||||
"website": "Website"
|
||||
"about": "Derbar",
|
||||
"location": "Cîgeh",
|
||||
"website": "Malper"
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
@ -177,30 +177,30 @@
|
||||
"reset": "Nûsaz bike",
|
||||
"nsfw_content": "NSFW",
|
||||
"send_feedback": "Paşragihandin Bişîne",
|
||||
"send": "Send",
|
||||
"send": "Bişîne",
|
||||
"default_footer": "Default Footer",
|
||||
"nsfw": {
|
||||
"always_show": "Always show",
|
||||
"always_hide": "Always hide",
|
||||
"always_warn": "Always warn"
|
||||
"always_show": "Her tim nîşan bide",
|
||||
"always_hide": "Her tim veşêre",
|
||||
"always_warn": "Her tim hişyar bike"
|
||||
},
|
||||
"feedback_success": "Email successfully open",
|
||||
"feedback_fail": "Email client could not open",
|
||||
"feedback_success": "Epeyam bi serkeftî vebû",
|
||||
"feedback_fail": "Stînera epeyamê venebû",
|
||||
"server_fail": "Server not available"
|
||||
},
|
||||
"voters": {
|
||||
"voters_info": "Voters Info",
|
||||
"no_user": "User is not found."
|
||||
"voters_info": "Agahiya Dengdêran",
|
||||
"no_user": "Bikarhêner nehate dîtin."
|
||||
},
|
||||
"login": {
|
||||
"signin": "Sign in",
|
||||
"signup": "Sign up",
|
||||
"signin": "Têketin",
|
||||
"signup": "Tomar bibe",
|
||||
"signin_title": "To get all the benefits of using eSteem",
|
||||
"username": "Username",
|
||||
"password": "Password or WIF",
|
||||
"username": "Navê bikarhêner",
|
||||
"password": "Pêborîn an WIF",
|
||||
"description": "User credentials are kept locally on the device. Credentials are removed upon logout!",
|
||||
"cancel": "cancel",
|
||||
"login": "LOGIN",
|
||||
"cancel": "betal",
|
||||
"login": "TÊKETIN",
|
||||
"steemconnect_description": "If you don't want to keep your password encrypted and saved on your device, you can use Steemconnect.",
|
||||
"steemconnect_fee_description": "Steemconnect may charge some fees from your reward transactions"
|
||||
},
|
||||
@ -242,8 +242,8 @@
|
||||
"capture_photo": "Wêneyekî bigire"
|
||||
},
|
||||
"pincode": {
|
||||
"enter_text": "Enter pin to unlock",
|
||||
"set_new": "Set new pin",
|
||||
"enter_text": "Ji bo vekirinê PIN têxîne",
|
||||
"set_new": "PINa nû saz bike",
|
||||
"write_again": "Dîsa binivîsîne",
|
||||
"forgot_text": "Wey, Min ji bîr kir..."
|
||||
},
|
||||
@ -253,17 +253,17 @@
|
||||
"allRead": "Hemû danezanan wekî xwendî nîşan bike",
|
||||
"claim_reward_balance_ok": "Reward balance claimed",
|
||||
"fail": "Biserneket!",
|
||||
"move": "Move",
|
||||
"move_question": "Are you sure to move to drafts?",
|
||||
"success_shared": "Your post successfully shared",
|
||||
"success_moved": "Moved to draft",
|
||||
"permission_denied": "Permission denied",
|
||||
"permission_text": "Please, go to phone Settings and change eSteem app permissions.",
|
||||
"success_rebloged": "Rebloged!",
|
||||
"move": "Veguhezîne",
|
||||
"move_question": "Bi rastî jî tu dixwazî reşnivîsan veguhezînî?",
|
||||
"success_shared": "Şandiya te bi serkeftî hate parvekirin",
|
||||
"success_moved": "Veguhezî reşnivîsê bû",
|
||||
"permission_denied": "Destûr hate redkirin",
|
||||
"permission_text": "Ji kerema xwe, biçe Sazkariyên telefonê û destûrên eSteemê veke.",
|
||||
"success_rebloged": "Reblog bû!",
|
||||
"already_rebloged": "You have already reblogged!",
|
||||
"warning": "Warning",
|
||||
"invalid_pincode": "Invalid pin code, please check and try again.",
|
||||
"remove_alert": "Are you sure want to remove?",
|
||||
"warning": "Hişyarî",
|
||||
"invalid_pincode": "Koda PINê nederbasdar e, kontrol bike û dîsa biceribîne.",
|
||||
"remove_alert": "Bi rastî jî tu dixwazî rake?",
|
||||
"clear_alert": "Bi rastî jî tu dixwazî paqij bike?",
|
||||
"clear_user_alert": "Tu dixwazî hemû daneyên bikarhêner paqij bike?",
|
||||
"clear": "Paqij bike",
|
||||
@ -274,11 +274,11 @@
|
||||
"confirm": "Bipejirîne",
|
||||
"removed": "Hate rakirin",
|
||||
"same_user": "This user already added to list",
|
||||
"unknow_error": "An error occurred",
|
||||
"error": "Error",
|
||||
"fetch_error": "Fetching data failed, please try again or notify us at info@esteem.app",
|
||||
"connection_fail": "Connection Failed!",
|
||||
"connection_success": "Successfully connected!",
|
||||
"unknow_error": "Çêwtiyek çêbû",
|
||||
"error": "Çewtî",
|
||||
"fetch_error": "Anîna daneyê biserneket, ji kerema xwe dîsa biceribîne an jî ji ser info@esteem.app me agahdar bike",
|
||||
"connection_fail": "Girêdan Biserneket!",
|
||||
"connection_success": "Bi serkeftî hate girêdan!",
|
||||
"checking": "Checking...",
|
||||
"not_existing_post": "The post does not exist! Please check permlink and author.",
|
||||
"google_play_version": "We noticed that your device has old version of Google Play. Please update Google Play services and try again!"
|
||||
@ -286,45 +286,45 @@
|
||||
"post": {
|
||||
"reblog_alert": "Are you sure, you want to reblog?",
|
||||
"removed_hint": "The post was removed by",
|
||||
"copy_link": "Copy Link",
|
||||
"copy_link": "Girêdanê kopî bike",
|
||||
"reblogged": "reblogged by",
|
||||
"sponsored": "SPONSORED",
|
||||
"open_thread": "Open Thread"
|
||||
"sponsored": "SPONSORKIRÎ",
|
||||
"open_thread": "Mijara Vekirî"
|
||||
},
|
||||
"drafts": {
|
||||
"title": "Drafts",
|
||||
"load_error": "Could not load drafts",
|
||||
"empty_list": "Nothing here",
|
||||
"deleted": "Draft deleted"
|
||||
"title": "Reşnivîs",
|
||||
"load_error": "Reşnivîs bar nebûn",
|
||||
"empty_list": "Li vir ti tişt tine ye",
|
||||
"deleted": "Reşnivîs hate jêbirin"
|
||||
},
|
||||
"schedules": {
|
||||
"title": "Schedules",
|
||||
"empty_list": "Nothing here",
|
||||
"deleted": "Scheduled post deleted",
|
||||
"move": "Move to drafts",
|
||||
"moved": "Moved to drafts"
|
||||
"empty_list": "Li vir ti tişt tine ye",
|
||||
"deleted": "Şandiya demsazkirî hate jêbirin",
|
||||
"move": "Veguhezîne reşnivîsan",
|
||||
"moved": "Veguhezî reşnivîsan bû"
|
||||
},
|
||||
"bookmarks": {
|
||||
"title": "Bookmarks",
|
||||
"load_error": "Could not load bookmarks",
|
||||
"empty_list": "Nothing here",
|
||||
"empty_list": "Li vir ti tişt tine ye",
|
||||
"deleted": "Bookmark removed",
|
||||
"search": "Search in bookmarks",
|
||||
"added": "Added to bookmarks",
|
||||
"add": "Add to bookmarks"
|
||||
},
|
||||
"favorites": {
|
||||
"title": "Favorites",
|
||||
"load_error": "Could not load favorites",
|
||||
"empty_list": "Nothing here",
|
||||
"search": "Search in favorites"
|
||||
"title": "Bijardeyên min",
|
||||
"load_error": "Bijarde bar nebûn",
|
||||
"empty_list": "Li vir ti tişt tine ye",
|
||||
"search": "Di bijardeyan de bigere"
|
||||
},
|
||||
"auth": {
|
||||
"invalid_pin": "Invalid pin code, please check and try again",
|
||||
"invalid_username": "Invalid username, please check and try again",
|
||||
"already_logged": "You are already logged in, please try to add another account",
|
||||
"invalid_username": "Navê bikarhêner nederbasdar e, kontrol bike û dîsa biceribîne",
|
||||
"already_logged": "Jixwe tu têketî ye, ji kerema xwe tevlîkirina hesabekî din biceribîne",
|
||||
"invalid_credentials": "Invalid credentials, please check and try again",
|
||||
"unknow_error": "Unknown error, please contact us at support@esteem.app"
|
||||
"unknow_error": "Çewtiya nenas, ji ser support@esteem.app bi me re têkilî deyne"
|
||||
},
|
||||
"payout": {
|
||||
"potential_payout": "Potential Payout",
|
||||
@ -337,89 +337,89 @@
|
||||
"breakdown": "Breakdown"
|
||||
},
|
||||
"post_dropdown": {
|
||||
"copy": "copy link",
|
||||
"copy": "kopî bike",
|
||||
"reblog": "reblog",
|
||||
"reply": "reply",
|
||||
"share": "share",
|
||||
"reply": "bibersivîne",
|
||||
"share": "parve bike",
|
||||
"bookmarks": "add to bookmarks",
|
||||
"promote": "promote",
|
||||
"boost": "boost"
|
||||
"boost": "zêde bike"
|
||||
},
|
||||
"deep_link": {
|
||||
"no_existing_user": "No existing user",
|
||||
"no_existing_post": "No existing post"
|
||||
"no_existing_user": "Bikarhêner tine ye",
|
||||
"no_existing_post": "Şandî tine ye"
|
||||
},
|
||||
"search": {
|
||||
"posts": "Posts",
|
||||
"comments": "Comments"
|
||||
"posts": "Şandî",
|
||||
"comments": "Şîrove"
|
||||
},
|
||||
"comment_filter": {
|
||||
"trending": "TOP",
|
||||
"trending": "SEREKE",
|
||||
"reputation": "REPUTATION",
|
||||
"votes": "VOTE",
|
||||
"age": "AGE",
|
||||
"top": "TOP",
|
||||
"time": "TIME"
|
||||
"votes": "DENG",
|
||||
"age": "TEMEN",
|
||||
"top": "SEREKE",
|
||||
"time": "DEM"
|
||||
},
|
||||
"transfer": {
|
||||
"from": "From",
|
||||
"to": "To",
|
||||
"from": "Ji",
|
||||
"to": "Bo",
|
||||
"amount_information": "Drag the slider to adjust the amount",
|
||||
"amount": "Amount",
|
||||
"memo": "Memo",
|
||||
"amount": "Pîvan",
|
||||
"memo": "Bîrname",
|
||||
"information": "Are you sure to transfer funds?",
|
||||
"amount_desc": "Balance",
|
||||
"memo_desc": "This memo is public",
|
||||
"to_placeholder": "Username",
|
||||
"memo_placeholder": "Enter your notes here",
|
||||
"transfer_token": "Transfer",
|
||||
"to_placeholder": "Navê bikarhêner",
|
||||
"memo_placeholder": "Notên xwe li vir binivîse",
|
||||
"transfer_token": "Veguheztin",
|
||||
"points": "Gift ESTM to someone",
|
||||
"transfer_to_saving": "Transfer To Saving",
|
||||
"powerUp": "Power Up",
|
||||
"powerUp": "Bihêz Bike",
|
||||
"withdraw_to_saving": "Withdraw To Saving",
|
||||
"steemconnect_title": "Steemconnect Transfer",
|
||||
"estimated_weekly": "Estimated Weekly",
|
||||
"destination_accounts": "Destination Accounts",
|
||||
"steemconnect_title": "Veguheztina Steemconnectê",
|
||||
"estimated_weekly": "Texmînkirina Heftane",
|
||||
"destination_accounts": "Hesabên Armanc",
|
||||
"stop_information": "Are you sure want to stop?",
|
||||
"percent": "Percent",
|
||||
"auto_vests": "Auto Vests",
|
||||
"save": "SAVE",
|
||||
"percent_information": "Percent info",
|
||||
"next": "NEXT",
|
||||
"delegate": "Delegate",
|
||||
"power_down": "Power Down",
|
||||
"save": "TOMAR BIKE",
|
||||
"percent_information": "Agahiya rêjeyê",
|
||||
"next": "PÊŞVE",
|
||||
"delegate": "Şande",
|
||||
"power_down": "Kêmhêz Bike",
|
||||
"withdraw_steem": "Withdraw Steem",
|
||||
"withdraw_sbd": "Withdraw Steem Dollar",
|
||||
"incoming_funds": "Incoming Funds",
|
||||
"stop": "Stop"
|
||||
"incoming_funds": "Fonên Tên",
|
||||
"stop": "Rawestîne"
|
||||
},
|
||||
"boost": {
|
||||
"title": "Get eSteem Points",
|
||||
"buy": "GET ESTM",
|
||||
"next": "NEXT"
|
||||
"next": "PÊŞVE"
|
||||
},
|
||||
"free_estm": {
|
||||
"title": "Free ESTM",
|
||||
"button": "SPIN & WIN",
|
||||
"get_spin": "5 SPINS",
|
||||
"spin_right": "Spin Left",
|
||||
"title": "ESTM ya Belaş",
|
||||
"button": "BIZÎVIRÎNE Û QEZENC BIKE",
|
||||
"get_spin": "5 ZÎVIR",
|
||||
"spin_right": "Bizîvirîne Çepê",
|
||||
"timer_text": "Next free spin in"
|
||||
},
|
||||
"promote": {
|
||||
"title": "Promote",
|
||||
"days": "days",
|
||||
"user": "User",
|
||||
"permlink": "Post",
|
||||
"days": "roj",
|
||||
"user": "Bikarhêner",
|
||||
"permlink": "Şandî",
|
||||
"permlinkPlaceholder": "author/permlink",
|
||||
"information": "Are you sure to promote?"
|
||||
},
|
||||
"boostPost": {
|
||||
"title": "Boost"
|
||||
"title": "Zêde bike"
|
||||
},
|
||||
"voters_dropdown": {
|
||||
"rewards": "REWARDS",
|
||||
"percent": "PERCENT",
|
||||
"time": "TIME"
|
||||
"rewards": "XELAT",
|
||||
"percent": "JI SEDÎ",
|
||||
"time": "DEM"
|
||||
},
|
||||
"reblog": {
|
||||
"title": "Reblog Info"
|
||||
|
@ -24,6 +24,7 @@ export default {
|
||||
STEEM_CONNECT: `SteemConnect${SCREEN_SUFFIX}`,
|
||||
TRANSFER: `Transfer${SCREEN_SUFFIX}`,
|
||||
VOTERS: `Voters${SCREEN_SUFFIX}`,
|
||||
COMMENTS: `Comments${SCREEN_SUFFIX}`,
|
||||
},
|
||||
DRAWER: {
|
||||
MAIN: `Main${DRAWER_SUFFIX}`,
|
||||
|
@ -3,15 +3,12 @@ import 'react-native-gesture-handler';
|
||||
import { Provider, connect } from 'react-redux';
|
||||
import { PersistGate } from 'redux-persist/integration/react';
|
||||
import { IntlProvider } from 'react-intl';
|
||||
import { enableScreens } from 'react-native-screens';
|
||||
import { flattenMessages } from './utils/flattenMessages';
|
||||
import messages from './config/locales';
|
||||
|
||||
import Application from './screens/application';
|
||||
import { store, persistor } from './redux/store/store';
|
||||
|
||||
enableScreens();
|
||||
|
||||
const _renderApp = ({ locale }) => (
|
||||
<PersistGate loading={null} persistor={persistor}>
|
||||
<IntlProvider locale={locale} messages={flattenMessages(messages[locale])}>
|
||||
|
@ -58,7 +58,12 @@ const BaseNavigator = createBottomTabNavigator(
|
||||
screen: Profile,
|
||||
navigationOptions: () => ({
|
||||
tabBarIcon: ({ tintColor }) => (
|
||||
<Icon iconType="MaterialIcons" name="person" color={tintColor} size={scalePx(26)} />
|
||||
<Icon
|
||||
iconType="MaterialIcons"
|
||||
name="person-outline"
|
||||
color={tintColor}
|
||||
size={scalePx(26)}
|
||||
/>
|
||||
),
|
||||
}),
|
||||
},
|
||||
|
@ -1 +0,0 @@
|
||||
export * from './baseNavigator';
|
@ -1,19 +1,28 @@
|
||||
import React from 'react';
|
||||
import { createSwitchNavigator } from 'react-navigation';
|
||||
import { createBottomTabNavigator } from 'react-navigation-tabs';
|
||||
import { createDrawerNavigator } from 'react-navigation-drawer';
|
||||
import { createStackNavigator } from 'react-navigation-stack';
|
||||
|
||||
import { BaseNavigator } from './baseNavigator';
|
||||
// Constants
|
||||
import ROUTES from '../constants/routeNames';
|
||||
import scalePx from '../utils/scalePx';
|
||||
|
||||
// Components
|
||||
import { Icon, IconContainer } from '../components/icon';
|
||||
import { PostButton, BottomTabBar, SideMenu } from '../components';
|
||||
|
||||
// Screens
|
||||
import {
|
||||
Bookmarks,
|
||||
Boost,
|
||||
Comments,
|
||||
Drafts,
|
||||
Editor,
|
||||
Feed,
|
||||
Follows,
|
||||
SpinGame,
|
||||
Login,
|
||||
PinCode,
|
||||
Notification,
|
||||
Post,
|
||||
Profile,
|
||||
ProfileEdit,
|
||||
@ -21,132 +30,104 @@ import {
|
||||
Redeem,
|
||||
SearchResult,
|
||||
Settings,
|
||||
SteemConnect,
|
||||
SpinGame,
|
||||
Transfer,
|
||||
Voters,
|
||||
Wallet,
|
||||
} from '../screens';
|
||||
|
||||
// Components
|
||||
import { SideMenu } from '../components';
|
||||
|
||||
const mainNavigation = createDrawerNavigator(
|
||||
const bottomTabNavigator = createBottomTabNavigator(
|
||||
{
|
||||
[ROUTES.SCREENS.FEED]: {
|
||||
screen: BaseNavigator,
|
||||
[ROUTES.TABBAR.FEED]: {
|
||||
screen: Feed,
|
||||
navigationOptions: () => ({
|
||||
tabBarIcon: ({ tintColor }) => (
|
||||
<Icon iconType="MaterialIcons" name="view-day" color={tintColor} size={scalePx(26)} />
|
||||
),
|
||||
}),
|
||||
},
|
||||
[ROUTES.TABBAR.NOTIFICATION]: {
|
||||
screen: Notification,
|
||||
navigationOptions: () => ({
|
||||
tabBarIcon: ({ tintColor }) => (
|
||||
<IconContainer
|
||||
isBadge
|
||||
badgeType="notification"
|
||||
iconType="MaterialIcons"
|
||||
name="notifications"
|
||||
color={tintColor}
|
||||
size={scalePx(26)}
|
||||
/>
|
||||
),
|
||||
}),
|
||||
},
|
||||
[ROUTES.TABBAR.POST_BUTTON]: {
|
||||
screen: () => null,
|
||||
navigationOptions: {
|
||||
tabBarIcon: () => <PostButton />,
|
||||
},
|
||||
},
|
||||
[ROUTES.TABBAR.WALLET]: {
|
||||
screen: Wallet,
|
||||
navigationOptions: () => ({
|
||||
tabBarIcon: ({ tintColor }) => (
|
||||
<Icon
|
||||
iconType="MaterialIcons"
|
||||
name="account-balance-wallet"
|
||||
color={tintColor}
|
||||
size={scalePx(26)}
|
||||
/>
|
||||
),
|
||||
}),
|
||||
},
|
||||
[ROUTES.TABBAR.PROFILE]: {
|
||||
screen: Profile,
|
||||
navigationOptions: () => ({
|
||||
tabBarIcon: ({ tintColor }) => (
|
||||
<Icon iconType="MaterialIcons" name="person" color={tintColor} size={scalePx(26)} />
|
||||
),
|
||||
}),
|
||||
},
|
||||
},
|
||||
{
|
||||
contentComponent: SideMenu,
|
||||
tabBarComponent: props => <BottomTabBar {...props} />,
|
||||
tabBarOptions: {
|
||||
showLabel: false,
|
||||
activeTintColor: '#f6f6f6',
|
||||
inactiveTintColor: '#c1c5c7',
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
const mainNavigation = createDrawerNavigator(
|
||||
{ [ROUTES.SCREENS.FEED]: { screen: bottomTabNavigator } },
|
||||
{ contentComponent: SideMenu },
|
||||
);
|
||||
|
||||
const stackNavigator = createStackNavigator(
|
||||
{
|
||||
[ROUTES.DRAWER.MAIN]: {
|
||||
screen: mainNavigation,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.PROFILE]: {
|
||||
screen: Profile,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.PROFILE_EDIT]: {
|
||||
screen: ProfileEdit,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.POST]: {
|
||||
screen: Post,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.EDITOR]: {
|
||||
screen: Editor,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.VOTERS]: {
|
||||
screen: Voters,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.FOLLOWS]: {
|
||||
screen: Follows,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.SETTINGS]: {
|
||||
screen: Settings,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.DRAFTS]: {
|
||||
screen: Drafts,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.BOOKMARKS]: {
|
||||
screen: Bookmarks,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.SEARCH_RESULT]: {
|
||||
screen: SearchResult,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.TRANSFER]: {
|
||||
screen: Transfer,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.BOOST]: {
|
||||
screen: Boost,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.REDEEM]: {
|
||||
screen: Redeem,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.REBLOGS]: {
|
||||
screen: Reblogs,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
[ROUTES.SCREENS.SPIN_GAME]: {
|
||||
screen: SpinGame,
|
||||
navigationOptions: {
|
||||
header: () => null,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
headerMode: 'none',
|
||||
[ROUTES.DRAWER.MAIN]: { screen: mainNavigation },
|
||||
[ROUTES.SCREENS.PROFILE]: { screen: Profile },
|
||||
[ROUTES.SCREENS.PROFILE_EDIT]: { screen: ProfileEdit },
|
||||
[ROUTES.SCREENS.POST]: { screen: Post },
|
||||
[ROUTES.SCREENS.EDITOR]: { screen: Editor },
|
||||
[ROUTES.SCREENS.VOTERS]: { screen: Voters },
|
||||
[ROUTES.SCREENS.FOLLOWS]: { screen: Follows },
|
||||
[ROUTES.SCREENS.SETTINGS]: { screen: Settings },
|
||||
[ROUTES.SCREENS.DRAFTS]: { screen: Drafts },
|
||||
[ROUTES.SCREENS.BOOKMARKS]: { screen: Bookmarks },
|
||||
[ROUTES.SCREENS.SEARCH_RESULT]: { screen: SearchResult },
|
||||
[ROUTES.SCREENS.TRANSFER]: { screen: Transfer },
|
||||
[ROUTES.SCREENS.BOOST]: { screen: Boost },
|
||||
[ROUTES.SCREENS.REDEEM]: { screen: Redeem },
|
||||
[ROUTES.SCREENS.REBLOGS]: { screen: Reblogs },
|
||||
[ROUTES.SCREENS.SPIN_GAME]: { screen: SpinGame },
|
||||
[ROUTES.SCREENS.COMMENTS]: { screen: Comments },
|
||||
},
|
||||
{ headerMode: 'none' },
|
||||
);
|
||||
|
||||
export default createSwitchNavigator({
|
||||
stackNavigator,
|
||||
[ROUTES.SCREENS.LOGIN]: { screen: Login },
|
||||
[ROUTES.SCREENS.PINCODE]: { screen: PinCode },
|
||||
[ROUTES.SCREENS.STEEM_CONNECT]: { screen: SteemConnect },
|
||||
});
|
||||
|
41
src/screens/comments/screen/commentsScreen.js
Normal file
41
src/screens/comments/screen/commentsScreen.js
Normal file
@ -0,0 +1,41 @@
|
||||
import React from 'react';
|
||||
import { View } from 'react-native';
|
||||
import { useIntl } from 'react-intl';
|
||||
|
||||
import { BasicHeader, Comments } from '../../../components';
|
||||
|
||||
// Styles
|
||||
import globalStyles from '../../../globalStyles';
|
||||
|
||||
const CommentsScreen = ({ navigation }) => {
|
||||
const intl = useIntl();
|
||||
const comments = navigation.getParam('comments', [{}])[0];
|
||||
|
||||
return (
|
||||
<View style={globalStyles.container}>
|
||||
<BasicHeader
|
||||
title={intl.formatMessage({
|
||||
id: 'comments.title',
|
||||
})}
|
||||
/>
|
||||
<View style={globalStyles.containerHorizontal16}>
|
||||
<Comments
|
||||
isShowComments
|
||||
author={comments.author}
|
||||
mainAuthor={comments.author}
|
||||
permlink={comments.permlink}
|
||||
commentCount={comments.children}
|
||||
isShowMoreButton={true}
|
||||
isShowSubComments
|
||||
showAllComments
|
||||
fetchPost={navigation.getParam('fetchPost', null)}
|
||||
handleOnVotersPress={navigation.getParam('handleOnVotersPress', null)}
|
||||
hasManyComments={false}
|
||||
hideManyCommentsButton
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export { CommentsScreen as Comments };
|
@ -1,17 +1,18 @@
|
||||
import { Bookmarks } from './bookmarks';
|
||||
import { Comments } from './comments/screen/commentsScreen';
|
||||
import { Drafts } from './drafts';
|
||||
import { Editor } from './editor';
|
||||
import { Follows } from './follows';
|
||||
import { Feed } from './feed';
|
||||
import { Follows } from './follows';
|
||||
import { Launch } from './launch';
|
||||
import { Login } from './login';
|
||||
import { Notification } from './notification';
|
||||
import { PinCode } from './pinCode';
|
||||
import { Wallet } from './wallet';
|
||||
import { Post } from './post';
|
||||
import { SearchResult } from './searchResult';
|
||||
import { Settings } from './settings';
|
||||
import { SpinGame } from './spinGame/screen/spinGameScreen';
|
||||
import { Wallet } from './wallet';
|
||||
import Boost from './boost/screen/boostScreen';
|
||||
import Profile from './profile/screen/profileScreen';
|
||||
import ProfileEdit from './profileEdit/screen/profileEditScreen';
|
||||
@ -24,15 +25,15 @@ import Voters from './voters';
|
||||
export {
|
||||
Bookmarks,
|
||||
Boost,
|
||||
Comments,
|
||||
Drafts,
|
||||
Editor,
|
||||
Follows,
|
||||
Feed,
|
||||
Follows,
|
||||
Launch,
|
||||
Login,
|
||||
Notification,
|
||||
PinCode,
|
||||
Wallet,
|
||||
Post,
|
||||
Profile,
|
||||
ProfileEdit,
|
||||
@ -44,4 +45,5 @@ export {
|
||||
SteemConnect,
|
||||
Transfer,
|
||||
Voters,
|
||||
Wallet,
|
||||
};
|
||||
|
@ -7705,13 +7705,6 @@ react-native-safe-modules@^1.0.0:
|
||||
dependencies:
|
||||
debounce "^1.2.0"
|
||||
|
||||
react-native-screens@^2.0.0-alpha.16:
|
||||
version "2.0.0-alpha.18"
|
||||
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-2.0.0-alpha.18.tgz#70c116cc96069ad1d930f2984bbec7d66856a1ee"
|
||||
integrity sha512-ML5MVFMWsw7x4GdAA6xWMnFUp37Rk4dpNb5MKrRIPqOTYTS+cN+eyo7UCqICEa6KwYKCtGN6Kq7xrKOtboWPMg==
|
||||
dependencies:
|
||||
debounce "^1.2.0"
|
||||
|
||||
react-native-scrollable-tab-view@esteemapp/react-native-scrollable-tab-view:
|
||||
version "0.10.0"
|
||||
resolved "https://codeload.github.com/esteemapp/react-native-scrollable-tab-view/tar.gz/a86ddabbda728b86eb16656b8e8e71655a38400e"
|
||||
|
Loading…
Reference in New Issue
Block a user