Merge branch 'development' into bugfix/navigation

This commit is contained in:
Feruz M 2019-12-13 14:11:54 +02:00 committed by GitHub
commit 5af359bf66
21 changed files with 576 additions and 539 deletions

View File

@ -929,7 +929,7 @@
); );
PRODUCT_BUNDLE_IDENTIFIER = app.esteem.mobile.ios; PRODUCT_BUNDLE_IDENTIFIER = app.esteem.mobile.ios;
PRODUCT_NAME = eSteem; PRODUCT_NAME = eSteem;
PROVISIONING_PROFILE_SPECIFIER = dev09Dec; PROVISIONING_PROFILE_SPECIFIER = dev;
TARGETED_DEVICE_FAMILY = "1,2"; TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic"; VERSIONING_SYSTEM = "apple-generic";
}; };

View File

@ -4,7 +4,5 @@
<dict> <dict>
<key>aps-environment</key> <key>aps-environment</key>
<string>development</string> <string>development</string>
<key>com.apple.developer.associated-domains</key>
<array/>
</dict> </dict>
</plist> </plist>

View File

@ -67,7 +67,6 @@
"react-native-navigation-bar-color": "^0.1.0", "react-native-navigation-bar-color": "^0.1.0",
"react-native-reanimated": "^1.3.0", "react-native-reanimated": "^1.3.0",
"react-native-render-html": "^4.1.2", "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-scrollable-tab-view": "esteemapp/react-native-scrollable-tab-view",
"react-native-slider": "^0.11.0", "react-native-slider": "^0.11.0",
"react-native-snap-carousel": "^3.8.0", "react-native-snap-carousel": "^3.8.0",

View File

@ -37,6 +37,7 @@ export default EStyleSheet.create({
position: 'absolute', position: 'absolute',
right: 0, right: 0,
bottom: -10, bottom: -10,
padding: 10,
}, },
voteCountText: { voteCountText: {
alignSelf: 'center', alignSelf: 'center',

View File

@ -1,7 +1,7 @@
import React, { PureComponent, Fragment } from 'react'; import React, { Fragment, useState, useRef } from 'react';
import { View, TouchableWithoutFeedback } from 'react-native'; import { View, TouchableWithoutFeedback } from 'react-native';
import ActionSheet from 'react-native-actionsheet'; import ActionSheet from 'react-native-actionsheet';
import { injectIntl } from 'react-intl'; import { useIntl } from 'react-intl';
import get from 'lodash/get'; import get from 'lodash/get';
import { getTimeFromNow } from '../../../utils/time'; import { getTimeFromNow } from '../../../utils/time';
@ -17,177 +17,162 @@ import { TextWithIcon } from '../../basicUIElements';
// Styles // Styles
import styles from './commentStyles'; import styles from './commentStyles';
class CommentView extends PureComponent { const CommentView = ({
/* Props avatarSize,
* ------------------------------------------------ comment,
* @prop { type } name - Description.... commentNumber,
*/ currentAccountUsername,
fetchPost,
constructor(props) { handleDeleteComment,
super(props); handleOnEditPress,
this.state = { handleOnLongPress,
isShowSubComments: props.isShowSubComments || false, handleOnReplyPress,
isPressedShowButton: false, handleOnUserPress,
}; handleOnVotersPress,
} isLoggedIn,
isShowComments,
// Component Life Cycles isShowMoreButton,
// Component Functions marginLeft,
voteCount,
_showSubCommentsToggle = () => { mainAuthor = { mainAuthor },
const { isShowSubComments } = this.state; isHideImage,
showAllComments,
this.setState({ isShowSubComments: !isShowSubComments, isPressedShowButton: true }); 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() { return (
const { <TouchableWithoutFeedback onLongPress={handleOnLongPress}>
avatarSize, <View>
comment, <PostHeaderDescription
commentNumber, key={comment.permlink}
currentAccountUsername, date={getTimeFromNow(comment.created)}
fetchPost, name={comment.author}
handleDeleteComment, reputation={comment.author_reputation}
handleOnEditPress, size={avatarSize || 24}
handleOnLongPress, currentAccountUsername={currentAccountUsername}
handleOnReplyPress, isShowOwnerIndicator={mainAuthor === comment.author}
handleOnUserPress, isHideImage={isHideImage}
handleOnVotersPress, />
isLoggedIn, <View style={[{ marginLeft: marginLeft || 29 }, styles.bodyWrapper]}>
isShowComments, <PostBody
isShowMoreButton, isComment
marginLeft, commentDepth={comment.depth}
voteCount, handleOnUserPress={handleOnUserPress}
intl, body={comment.body}
mainAuthor = { mainAuthor }, textSelectable={false}
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}
/> />
<View style={[{ marginLeft: marginLeft || 29 }, styles.bodyWrapper]}> <View style={styles.footerWrapper}>
<PostBody {isLoggedIn && (
isComment <Fragment>
commentDepth={comment.depth} <Upvote isShowPayoutValue content={comment} />
handleOnUserPress={handleOnUserPress} <TextWithIcon
body={comment.body} iconName="people"
textSelectable={false} iconSize={20}
/> wrapperStyle={styles.leftButton}
<View style={styles.footerWrapper}> iconType="MaterialIcons"
{isLoggedIn && ( isClickable
<Fragment> onPress={() =>
<Upvote isShowPayoutValue content={comment} /> handleOnVotersPress &&
<TextWithIcon voteCount > 0 &&
iconName="heart-outline" handleOnVotersPress(get(comment, 'active_votes'))
iconSize={20} }
wrapperStyle={styles.leftButton} text={voteCount}
iconType="MaterialCommunityIcons" textMarginLeft={20}
isClickable textStyle={styles.voteCountText}
onPress={() => />
handleOnVotersPress && <IconButton
voteCount > 0 && size={20}
handleOnVotersPress(get(comment, 'active_votes')) iconStyle={styles.leftIcon}
} style={styles.leftButton}
text={voteCount} name="reply"
textMarginLeft={20} onPress={() => handleOnReplyPress && handleOnReplyPress(comment)}
textStyle={styles.voteCountText} iconType="MaterialIcons"
/> />
<IconButton {currentAccountUsername === comment.author && (
size={20} <Fragment>
iconStyle={styles.leftIcon} <IconButton
style={styles.leftButton} size={20}
name="comment-outline" iconStyle={styles.leftIcon}
onPress={() => handleOnReplyPress && handleOnReplyPress(comment)} style={styles.leftButton}
iconType="MaterialCommunityIcons" name="create"
/> onPress={() => handleOnEditPress && handleOnEditPress(comment)}
{currentAccountUsername === comment.author && ( iconType="MaterialIcons"
<Fragment> />
<IconButton {!comment.children && !voteCount && (
size={20} <Fragment>
iconStyle={styles.leftIcon} <IconButton
style={styles.leftButton} size={20}
name="create" iconStyle={styles.leftIcon}
onPress={() => handleOnEditPress && handleOnEditPress(comment)} style={styles.leftButton}
iconType="MaterialIcons" name="delete-forever"
/> onPress={() => actionSheet.current.show()}
{!comment.children && !voteCount && ( iconType="MaterialIcons"
<Fragment> />
<IconButton <ActionSheet
size={20} ref={actionSheet}
iconStyle={styles.leftIcon} options={[
style={styles.leftButton} intl.formatMessage({ id: 'alert.delete' }),
name="delete-forever" intl.formatMessage({ id: 'alert.cancel' }),
onPress={() => this.ActionSheet.show()} ]}
iconType="MaterialIcons" title={intl.formatMessage({ id: 'alert.delete' })}
/> destructiveButtonIndex={0}
<ActionSheet cancelButtonIndex={1}
// eslint-disable-next-line no-return-assign onPress={index => {
ref={o => (this.ActionSheet = o)} index === 0 ? handleDeleteComment(comment.permlink) : null;
options={[ }}
intl.formatMessage({ id: 'alert.delete' }), />
intl.formatMessage({ id: 'alert.cancel' }), </Fragment>
]} )}
title={intl.formatMessage({ id: 'alert.delete' })} </Fragment>
destructiveButtonIndex={0} )}
cancelButtonIndex={1} </Fragment>
onPress={index => { )}
index === 0 ? handleDeleteComment(comment.permlink) : null; {!showAllComments && isShowMoreButton && (
}} <View style={styles.rightButtonWrapper}>
/> <TextWithIcon
</Fragment> wrapperStyle={styles.rightButton}
)} iconName={_isShowSubComments ? 'keyboard-arrow-up' : 'keyboard-arrow-down'}
</Fragment> textStyle={!isPressedShowButton && styles.moreText}
)} iconType="MaterialIcons"
</Fragment> isClickable
)} iconStyle={styles.iconStyle}
{isShowMoreButton && ( iconSize={16}
<View style={styles.rightButtonWrapper}> onPress={() => _showSubCommentsToggle()}
<TextWithIcon text={!isPressedShowButton ? `${comment.children} more replies` : ''}
wrapperStyle={styles.rightButton} />
iconName={isShowSubComments ? 'keyboard-arrow-up' : 'keyboard-arrow-down'} </View>
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> </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> </View>
</TouchableWithoutFeedback> </View>
); </TouchableWithoutFeedback>
} );
} };
export default injectIntl(CommentView); export default CommentView;

View File

@ -261,11 +261,16 @@ class CommentsContainer extends Component {
isOwnProfile, isOwnProfile,
isHideImage, isHideImage,
isShowSubComments, isShowSubComments,
hasManyComments,
showAllComments,
hideManyCommentsButton,
} = this.props; } = this.props;
return ( return (
<CommentsView <CommentsView
key={selectedFilter} key={selectedFilter}
hasManyComments={hasManyComments}
hideManyCommentsButton={hideManyCommentsButton}
selectedFilter={selectedFilter} selectedFilter={selectedFilter}
selectedPermlink={_selectedPermlink || selectedPermlink} selectedPermlink={_selectedPermlink || selectedPermlink}
author={author} author={author}
@ -285,6 +290,7 @@ class CommentsContainer extends Component {
isHideImage={isHideImage} isHideImage={isHideImage}
handleOnVotersPress={this._handleOnVotersPress} handleOnVotersPress={this._handleOnVotersPress}
isShowSubComments={isShowSubComments} isShowSubComments={isShowSubComments}
showAllComments={showAllComments}
/> />
); );
} }

View File

@ -4,4 +4,18 @@ export default EStyleSheet.create({
list: { list: {
marginBottom: 20, marginBottom: 20,
}, },
moreRepliesButtonWrapper: {
backgroundColor: '$iconColor',
height: 18,
justifyContent: 'center',
alignItems: 'center',
borderRadius: 20,
marginTop: 15,
minWidth: 40,
maxWidth: 170,
},
moreRepliesText: {
color: '$white',
fontSize: 10,
},
}); });

View File

@ -1,114 +1,122 @@
import React, { Component, Fragment } from 'react'; import React, { useState, Fragment, useRef } from 'react';
import { FlatList } from 'react-native'; import { FlatList } from 'react-native';
import ActionSheet from 'react-native-actionsheet'; import ActionSheet from 'react-native-actionsheet';
import get from 'lodash/get'; import get from 'lodash/get';
import { injectIntl } from 'react-intl'; import { useIntl } from 'react-intl';
import { navigate } from '../../../navigation/service';
// Components // Components
// eslint-disable-next-line import/no-cycle import { Comment, TextButton } from '../..';
import { Comment } from '../../comment';
// Constants
import ROUTES from '../../../constants/routeNames';
// Styles // Styles
import styles from './commentStyles'; import styles from './commentStyles';
class CommentsView extends Component { const CommentsView = ({
/* Props avatarSize,
* ------------------------------------------------ commentCount,
* @prop { type } name - Description.... 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) { const _keyExtractor = item => get(item, 'permlink');
super(props);
this.state = {
selectedComment: null,
};
this.commentMenu = React.createRef();
}
// Component Life Cycles const _openCommentMenu = item => {
setSelectedComment(item);
// Component Functions commentMenu.current.show();
_keyExtractor = item => item.permlink;
_openCommentMenu = item => {
this.setState({ selectedComment: item });
this.commentMenu.current.show();
}; };
render() { const _readMoreComments = () => {
const { navigate({
mainAuthor, routeName: ROUTES.SCREENS.COMMENTS,
avatarSize, params: { comments, fetchPost, handleOnVotersPress },
commentCount, });
commentNumber, };
comments,
currentAccountUsername,
fetchPost,
handleOnEditPress,
handleOnReplyPress,
handleOnUserPress,
isLoggedIn,
isShowSubComments,
marginLeft,
handleDeleteComment,
handleOnPressCommentMenu,
handleOnVotersPress,
intl,
isOwnProfile,
isHideImage,
} = this.props;
const { selectedComment } = this.state;
const menuItems = isOwnProfile const menuItems = isOwnProfile
? [ ? [
intl.formatMessage({ id: 'post.copy_link' }), intl.formatMessage({ id: 'post.copy_link' }),
intl.formatMessage({ id: 'post.open_thread' }), intl.formatMessage({ id: 'post.open_thread' }),
intl.formatMessage({ id: 'alert.cancel' }), intl.formatMessage({ id: 'alert.cancel' }),
] ]
: [intl.formatMessage({ id: 'post.copy_link' }), intl.formatMessage({ id: 'alert.cancel' })]; : [intl.formatMessage({ id: 'post.copy_link' }), intl.formatMessage({ id: 'alert.cancel' })];
if (!hideManyCommentsButton && hasManyComments) {
return ( return (
<Fragment> <TextButton
<FlatList style={styles.moreRepliesButtonWrapper}
style={styles.list} textStyle={styles.moreRepliesText}
data={comments} onPress={() => _readMoreComments()}
keyExtractor={this._keyExtractor} text="Read more comments"
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>
); );
} }
}
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;

View File

@ -222,25 +222,29 @@ class ProfileView extends PureComponent {
/> />
)} )}
</View> </View>
<View {!isOwnProfile && (
tabLabel={ <View
estimatedWalletValue tabLabel={
? `${currencySymbol} ${(estimatedWalletValue * currencyRate).toFixed()}` estimatedWalletValue
: intl.formatMessage({ ? `${currencySymbol} ${(estimatedWalletValue * currencyRate).toFixed()}`
id: 'profile.wallet', : intl.formatMessage({
}) id: 'profile.wallet',
} })
> }
{selectedUser ? ( >
<Wallet {selectedUser ? (
setEstimatedWalletValue={value => this.setState({ estimatedWalletValue: value })} <Wallet
selectedUser={selectedUser} setEstimatedWalletValue={value =>
handleOnScroll={isSummaryOpen ? this._handleOnScroll : null} this.setState({ estimatedWalletValue: value })
/> }
) : ( selectedUser={selectedUser}
<WalletDetailsPlaceHolder /> handleOnScroll={isSummaryOpen ? this._handleOnScroll : null}
)} />
</View> ) : (
<WalletDetailsPlaceHolder />
)}
</View>
)}
</ScrollableTabView> </ScrollableTabView>
</SafeAreaView> </SafeAreaView>
</Fragment> </Fragment>

View File

@ -430,5 +430,8 @@
"current_time": "Current time;", "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." "information": "We noticed that your device has incorrect date or time. Please fix Date & Time or Set Automatically and try again."
} }
},
"comments": {
"title": "Comments"
} }
} }

View File

@ -1,13 +1,13 @@
{ {
"wallet": { "wallet": {
"curation_reward": "Curation Reward", "curation_reward": "Xelata Kuratorê",
"author_reward": "Xelata Nivîskarî", "author_reward": "Xelata Nivîskêr",
"comment_benefactor_reward": "Comment Benefactor Reward", "comment_benefactor_reward": "Comment Benefactor Reward",
"claim_reward_balance": "Claim Reward Balance", "claim_reward_balance": "Claim Reward Balance",
"transfer": "Transfer", "transfer": "Veguheztin",
"transfer_to_vesting": "Transfer To Vesting", "transfer_to_vesting": "Transfer To Vesting",
"transfer_from_savings": "Transfer From Savings", "transfer_from_savings": "Transfer From Savings",
"withdraw_vesting": "Power Down", "withdraw_vesting": "Kêmhêz Bike",
"fill_order": "Fill Order", "fill_order": "Fill Order",
"post": "Şandî", "post": "Şandî",
"comment": "Şîrove", "comment": "Şîrove",
@ -19,7 +19,7 @@
"outgoing_transfer_title": "Outgoing transfer", "outgoing_transfer_title": "Outgoing transfer",
"checkin_extra": "Bonus", "checkin_extra": "Bonus",
"delegation": "Şande", "delegation": "Şande",
"delegations": "Delegations", "delegations": "Şande",
"delegation_title": "Xelata şandeyê", "delegation_title": "Xelata şandeyê",
"delegation_desc": "Earn ESTM everyday for delegation", "delegation_desc": "Earn ESTM everyday for delegation",
"post_title": "Puanên ji bo şandiyê", "post_title": "Puanên ji bo şandiyê",
@ -39,30 +39,30 @@
"reblog_desc": "Share what post you like with your friends and earn points.", "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.", "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.", "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_promote": "Promote",
"dropdown_boost": "Boost", "dropdown_boost": "Zêde bike",
"from": "From", "from": "Ji",
"to": "To", "to": "Bo",
"estimated_value_desc": "Determined by purchase value", "estimated_value_desc": "Determined by purchase value",
"estimated_value": "Estimated value", "estimated_value": "Estimated value",
"estimated_amount": "Vote value", "estimated_amount": "Rêjeya dengan",
"amount_information": "Drag the slider to adjust the amount", "amount_information": "Drag the slider to adjust the amount",
"amount": "Amount", "amount": "Pîvan",
"memo": "Memo", "memo": "Bîrname",
"information": "Are you sure to transfer funds?", "information": "Are you sure to transfer funds?",
"amount_desc": "Balance", "amount_desc": "Balance",
"memo_desc": "This memo is public", "memo_desc": "This memo is public",
"to_placeholder": "Username", "to_placeholder": "Navê bikarhêner",
"memo_placeholder": "Enter your notes here", "memo_placeholder": "Notên xwe li vir binivîse",
"transfer_token": "Transfer", "transfer_token": "Transfer",
"points": "Gift ESTM to someone", "points": "Gift ESTM to someone",
"transfer_to_saving": "Transfer To Saving", "transfer_to_saving": "Transfer To Saving",
"powerUp": "Power Up", "powerUp": "Bihêz Bike",
"withdraw_to_saving": "Withdraw To Saving", "withdraw_to_saving": "Withdraw To Saving",
"steemconnect_title": "Steemconnect Transfer", "steemconnect_title": "Veguheztina Steemconnectê",
"next": "NEXT", "next": "PÊŞVE",
"delegate": "Delegate", "delegate": "Şande",
"power_down": "Power Down", "power_down": "Power Down",
"withdraw_steem": "Withdraw Steem", "withdraw_steem": "Withdraw Steem",
"withdraw_sbd": "Withdraw Steem Dollar", "withdraw_sbd": "Withdraw Steem Dollar",
@ -89,14 +89,14 @@
}, },
"steem": { "steem": {
"title": "STEEM", "title": "STEEM",
"buy": "GET STEEM" "buy": "STEEMê BISTÎNE"
}, },
"sbd": { "sbd": {
"title": "SBD", "title": "SBD",
"buy": "GET SBD" "buy": "SBDê BISTÎNE"
}, },
"steem_power": { "steem_power": {
"title": "STEEM POWER" "title": "HÊZA STEEMê"
} }
}, },
"notification": { "notification": {
@ -120,9 +120,9 @@
"older_then": "Older Than A Month" "older_then": "Older Than A Month"
}, },
"leaderboard": { "leaderboard": {
"daily": "DAILY", "daily": "ROJANE",
"weekly": "WEEKLY", "weekly": "HEFTANE",
"monthly": "MONTHLY" "monthly": "MEHANE"
}, },
"messages": { "messages": {
"comingsoon": "Di nêz de taybetiya peyaman li vir e!" "comingsoon": "Di nêz de taybetiya peyaman li vir e!"
@ -130,7 +130,7 @@
"profile": { "profile": {
"following": "Şopandin", "following": "Şopandin",
"follower": "Şopîner", "follower": "Şopîner",
"post": "Post", "post": "Şandî",
"details": "Hûrgiliyên Profîlê", "details": "Hûrgiliyên Profîlê",
"comments": "Şîrove", "comments": "Şîrove",
"replies": "Bersiv", "replies": "Bersiv",
@ -145,15 +145,15 @@
"havent_posted": "heta niha ti tişt parve nebûye", "havent_posted": "heta niha ti tişt parve nebûye",
"steem_power": "Hêza Steemê", "steem_power": "Hêza Steemê",
"next_power_text": "Next power down is in", "next_power_text": "Next power down is in",
"days": "days", "days": "roj",
"day": "day", "day": "roj",
"steem_dollars": "Dolarên Steemê", "steem_dollars": "Dolarên Steemê",
"savings": "Savings", "savings": "Berhev bike",
"edit": { "edit": {
"display_name": "Display Name", "display_name": "Display Name",
"about": "About", "about": "Derbar",
"location": "Location", "location": "Cîgeh",
"website": "Website" "website": "Malper"
} }
}, },
"settings": { "settings": {
@ -177,30 +177,30 @@
"reset": "Nûsaz bike", "reset": "Nûsaz bike",
"nsfw_content": "NSFW", "nsfw_content": "NSFW",
"send_feedback": "Paşragihandin Bişîne", "send_feedback": "Paşragihandin Bişîne",
"send": "Send", "send": "Bişîne",
"default_footer": "Default Footer", "default_footer": "Default Footer",
"nsfw": { "nsfw": {
"always_show": "Always show", "always_show": "Her tim nîşan bide",
"always_hide": "Always hide", "always_hide": "Her tim veşêre",
"always_warn": "Always warn" "always_warn": "Her tim hişyar bike"
}, },
"feedback_success": "Email successfully open", "feedback_success": "Epeyam bi serkeftî vebû",
"feedback_fail": "Email client could not open", "feedback_fail": "Stînera epeyamê venebû",
"server_fail": "Server not available" "server_fail": "Server not available"
}, },
"voters": { "voters": {
"voters_info": "Voters Info", "voters_info": "Agahiya Dengdêran",
"no_user": "User is not found." "no_user": "Bikarhêner nehate dîtin."
}, },
"login": { "login": {
"signin": "Sign in", "signin": "Têketin",
"signup": "Sign up", "signup": "Tomar bibe",
"signin_title": "To get all the benefits of using eSteem", "signin_title": "To get all the benefits of using eSteem",
"username": "Username", "username": "Navê bikarhêner",
"password": "Password or WIF", "password": "Pêborîn an WIF",
"description": "User credentials are kept locally on the device. Credentials are removed upon logout!", "description": "User credentials are kept locally on the device. Credentials are removed upon logout!",
"cancel": "cancel", "cancel": "betal",
"login": "LOGIN", "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_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" "steemconnect_fee_description": "Steemconnect may charge some fees from your reward transactions"
}, },
@ -242,8 +242,8 @@
"capture_photo": "Wêneyekî bigire" "capture_photo": "Wêneyekî bigire"
}, },
"pincode": { "pincode": {
"enter_text": "Enter pin to unlock", "enter_text": "Ji bo vekirinê PIN têxîne",
"set_new": "Set new pin", "set_new": "PINa nû saz bike",
"write_again": "Dîsa binivîsîne", "write_again": "Dîsa binivîsîne",
"forgot_text": "Wey, Min ji bîr kir..." "forgot_text": "Wey, Min ji bîr kir..."
}, },
@ -253,17 +253,17 @@
"allRead": "Hemû danezanan wekî xwendî nîşan bike", "allRead": "Hemû danezanan wekî xwendî nîşan bike",
"claim_reward_balance_ok": "Reward balance claimed", "claim_reward_balance_ok": "Reward balance claimed",
"fail": "Biserneket!", "fail": "Biserneket!",
"move": "Move", "move": "Veguhezîne",
"move_question": "Are you sure to move to drafts?", "move_question": "Bi rastî jî tu dixwazî reşnivîsan veguhezînî?",
"success_shared": "Your post successfully shared", "success_shared": "Şandiya te bi serkeftî hate parvekirin",
"success_moved": "Moved to draft", "success_moved": "Veguhezî reşnivîsê bû",
"permission_denied": "Permission denied", "permission_denied": "Destûr hate redkirin",
"permission_text": "Please, go to phone Settings and change eSteem app permissions.", "permission_text": "Ji kerema xwe, biçe Sazkariyên telefonê û destûrên eSteemê veke.",
"success_rebloged": "Rebloged!", "success_rebloged": "Reblog!",
"already_rebloged": "You have already reblogged!", "already_rebloged": "You have already reblogged!",
"warning": "Warning", "warning": "Hişyarî",
"invalid_pincode": "Invalid pin code, please check and try again.", "invalid_pincode": "Koda PINê nederbasdar e, kontrol bike û dîsa biceribîne.",
"remove_alert": "Are you sure want to remove?", "remove_alert": "Bi rastî jî tu dixwazî rake?",
"clear_alert": "Bi rastî jî tu dixwazî paqij bike?", "clear_alert": "Bi rastî jî tu dixwazî paqij bike?",
"clear_user_alert": "Tu dixwazî hemû daneyên bikarhêner paqij bike?", "clear_user_alert": "Tu dixwazî hemû daneyên bikarhêner paqij bike?",
"clear": "Paqij bike", "clear": "Paqij bike",
@ -274,11 +274,11 @@
"confirm": "Bipejirîne", "confirm": "Bipejirîne",
"removed": "Hate rakirin", "removed": "Hate rakirin",
"same_user": "This user already added to list", "same_user": "This user already added to list",
"unknow_error": "An error occurred", "unknow_error": "Çêwtiyek çêbû",
"error": "Error", "error": "Çewtî",
"fetch_error": "Fetching data failed, please try again or notify us at info@esteem.app", "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": "Connection Failed!", "connection_fail": "Girêdan Biserneket!",
"connection_success": "Successfully connected!", "connection_success": "Bi serkeftî hate girêdan!",
"checking": "Checking...", "checking": "Checking...",
"not_existing_post": "The post does not exist! Please check permlink and author.", "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!" "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": { "post": {
"reblog_alert": "Are you sure, you want to reblog?", "reblog_alert": "Are you sure, you want to reblog?",
"removed_hint": "The post was removed by", "removed_hint": "The post was removed by",
"copy_link": "Copy Link", "copy_link": "Girêdanê kopî bike",
"reblogged": "reblogged by", "reblogged": "reblogged by",
"sponsored": "SPONSORED", "sponsored": "SPONSORKIRÎ",
"open_thread": "Open Thread" "open_thread": "Mijara Vekirî"
}, },
"drafts": { "drafts": {
"title": "Drafts", "title": "Reşnivîs",
"load_error": "Could not load drafts", "load_error": "Reşnivîs bar nebûn",
"empty_list": "Nothing here", "empty_list": "Li vir ti tişt tine ye",
"deleted": "Draft deleted" "deleted": "Reşnivîs hate jêbirin"
}, },
"schedules": { "schedules": {
"title": "Schedules", "title": "Schedules",
"empty_list": "Nothing here", "empty_list": "Li vir ti tişt tine ye",
"deleted": "Scheduled post deleted", "deleted": "Şandiya demsazkirî hate jêbirin",
"move": "Move to drafts", "move": "Veguhezîne reşnivîsan",
"moved": "Moved to drafts" "moved": "Veguhezî reşnivîsan bû"
}, },
"bookmarks": { "bookmarks": {
"title": "Bookmarks", "title": "Bookmarks",
"load_error": "Could not load bookmarks", "load_error": "Could not load bookmarks",
"empty_list": "Nothing here", "empty_list": "Li vir ti tişt tine ye",
"deleted": "Bookmark removed", "deleted": "Bookmark removed",
"search": "Search in bookmarks", "search": "Search in bookmarks",
"added": "Added to bookmarks", "added": "Added to bookmarks",
"add": "Add to bookmarks" "add": "Add to bookmarks"
}, },
"favorites": { "favorites": {
"title": "Favorites", "title": "Bijardeyên min",
"load_error": "Could not load favorites", "load_error": "Bijarde bar nebûn",
"empty_list": "Nothing here", "empty_list": "Li vir ti tişt tine ye",
"search": "Search in favorites" "search": "Di bijardeyan de bigere"
}, },
"auth": { "auth": {
"invalid_pin": "Invalid pin code, please check and try again", "invalid_pin": "Invalid pin code, please check and try again",
"invalid_username": "Invalid username, please check and try again", "invalid_username": "Navê bikarhêner nederbasdar e, kontrol bike û dîsa biceribîne",
"already_logged": "You are already logged in, please try to add another account", "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", "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": { "payout": {
"potential_payout": "Potential Payout", "potential_payout": "Potential Payout",
@ -337,89 +337,89 @@
"breakdown": "Breakdown" "breakdown": "Breakdown"
}, },
"post_dropdown": { "post_dropdown": {
"copy": "copy link", "copy": "kopî bike",
"reblog": "reblog", "reblog": "reblog",
"reply": "reply", "reply": "bibersivîne",
"share": "share", "share": "parve bike",
"bookmarks": "add to bookmarks", "bookmarks": "add to bookmarks",
"promote": "promote", "promote": "promote",
"boost": "boost" "boost": "zêde bike"
}, },
"deep_link": { "deep_link": {
"no_existing_user": "No existing user", "no_existing_user": "Bikarhêner tine ye",
"no_existing_post": "No existing post" "no_existing_post": "Şandî tine ye"
}, },
"search": { "search": {
"posts": "Posts", "posts": "Şandî",
"comments": "Comments" "comments": "Şîrove"
}, },
"comment_filter": { "comment_filter": {
"trending": "TOP", "trending": "SEREKE",
"reputation": "REPUTATION", "reputation": "REPUTATION",
"votes": "VOTE", "votes": "DENG",
"age": "AGE", "age": "TEMEN",
"top": "TOP", "top": "SEREKE",
"time": "TIME" "time": "DEM"
}, },
"transfer": { "transfer": {
"from": "From", "from": "Ji",
"to": "To", "to": "Bo",
"amount_information": "Drag the slider to adjust the amount", "amount_information": "Drag the slider to adjust the amount",
"amount": "Amount", "amount": "Pîvan",
"memo": "Memo", "memo": "Bîrname",
"information": "Are you sure to transfer funds?", "information": "Are you sure to transfer funds?",
"amount_desc": "Balance", "amount_desc": "Balance",
"memo_desc": "This memo is public", "memo_desc": "This memo is public",
"to_placeholder": "Username", "to_placeholder": "Navê bikarhêner",
"memo_placeholder": "Enter your notes here", "memo_placeholder": "Notên xwe li vir binivîse",
"transfer_token": "Transfer", "transfer_token": "Veguheztin",
"points": "Gift ESTM to someone", "points": "Gift ESTM to someone",
"transfer_to_saving": "Transfer To Saving", "transfer_to_saving": "Transfer To Saving",
"powerUp": "Power Up", "powerUp": "Bihêz Bike",
"withdraw_to_saving": "Withdraw To Saving", "withdraw_to_saving": "Withdraw To Saving",
"steemconnect_title": "Steemconnect Transfer", "steemconnect_title": "Veguheztina Steemconnectê",
"estimated_weekly": "Estimated Weekly", "estimated_weekly": "Texmînkirina Heftane",
"destination_accounts": "Destination Accounts", "destination_accounts": "Hesabên Armanc",
"stop_information": "Are you sure want to stop?", "stop_information": "Are you sure want to stop?",
"percent": "Percent", "percent": "Percent",
"auto_vests": "Auto Vests", "auto_vests": "Auto Vests",
"save": "SAVE", "save": "TOMAR BIKE",
"percent_information": "Percent info", "percent_information": "Agahiya rêjeyê",
"next": "NEXT", "next": "PÊŞVE",
"delegate": "Delegate", "delegate": "Şande",
"power_down": "Power Down", "power_down": "Kêmhêz Bike",
"withdraw_steem": "Withdraw Steem", "withdraw_steem": "Withdraw Steem",
"withdraw_sbd": "Withdraw Steem Dollar", "withdraw_sbd": "Withdraw Steem Dollar",
"incoming_funds": "Incoming Funds", "incoming_funds": "Fonên Tên",
"stop": "Stop" "stop": "Rawestîne"
}, },
"boost": { "boost": {
"title": "Get eSteem Points", "title": "Get eSteem Points",
"buy": "GET ESTM", "buy": "GET ESTM",
"next": "NEXT" "next": "PÊŞVE"
}, },
"free_estm": { "free_estm": {
"title": "Free ESTM", "title": "ESTM ya Belaş",
"button": "SPIN & WIN", "button": "BIZÎVIRÎNE Û QEZENC BIKE",
"get_spin": "5 SPINS", "get_spin": "5 ZÎVIR",
"spin_right": "Spin Left", "spin_right": "Bizîvirîne Çepê",
"timer_text": "Next free spin in" "timer_text": "Next free spin in"
}, },
"promote": { "promote": {
"title": "Promote", "title": "Promote",
"days": "days", "days": "roj",
"user": "User", "user": "Bikarhêner",
"permlink": "Post", "permlink": "Şandî",
"permlinkPlaceholder": "author/permlink", "permlinkPlaceholder": "author/permlink",
"information": "Are you sure to promote?" "information": "Are you sure to promote?"
}, },
"boostPost": { "boostPost": {
"title": "Boost" "title": "Zêde bike"
}, },
"voters_dropdown": { "voters_dropdown": {
"rewards": "REWARDS", "rewards": "XELAT",
"percent": "PERCENT", "percent": "JI SEDÎ",
"time": "TIME" "time": "DEM"
}, },
"reblog": { "reblog": {
"title": "Reblog Info" "title": "Reblog Info"

View File

@ -24,6 +24,7 @@ export default {
STEEM_CONNECT: `SteemConnect${SCREEN_SUFFIX}`, STEEM_CONNECT: `SteemConnect${SCREEN_SUFFIX}`,
TRANSFER: `Transfer${SCREEN_SUFFIX}`, TRANSFER: `Transfer${SCREEN_SUFFIX}`,
VOTERS: `Voters${SCREEN_SUFFIX}`, VOTERS: `Voters${SCREEN_SUFFIX}`,
COMMENTS: `Comments${SCREEN_SUFFIX}`,
}, },
DRAWER: { DRAWER: {
MAIN: `Main${DRAWER_SUFFIX}`, MAIN: `Main${DRAWER_SUFFIX}`,

View File

@ -3,15 +3,12 @@ import 'react-native-gesture-handler';
import { Provider, connect } from 'react-redux'; import { Provider, connect } from 'react-redux';
import { PersistGate } from 'redux-persist/integration/react'; import { PersistGate } from 'redux-persist/integration/react';
import { IntlProvider } from 'react-intl'; import { IntlProvider } from 'react-intl';
import { enableScreens } from 'react-native-screens';
import { flattenMessages } from './utils/flattenMessages'; import { flattenMessages } from './utils/flattenMessages';
import messages from './config/locales'; import messages from './config/locales';
import Application from './screens/application'; import Application from './screens/application';
import { store, persistor } from './redux/store/store'; import { store, persistor } from './redux/store/store';
enableScreens();
const _renderApp = ({ locale }) => ( const _renderApp = ({ locale }) => (
<PersistGate loading={null} persistor={persistor}> <PersistGate loading={null} persistor={persistor}>
<IntlProvider locale={locale} messages={flattenMessages(messages[locale])}> <IntlProvider locale={locale} messages={flattenMessages(messages[locale])}>

View File

@ -58,7 +58,12 @@ const BaseNavigator = createBottomTabNavigator(
screen: Profile, screen: Profile,
navigationOptions: () => ({ navigationOptions: () => ({
tabBarIcon: ({ tintColor }) => ( tabBarIcon: ({ tintColor }) => (
<Icon iconType="MaterialIcons" name="person" color={tintColor} size={scalePx(26)} /> <Icon
iconType="MaterialIcons"
name="person-outline"
color={tintColor}
size={scalePx(26)}
/>
), ),
}), }),
}, },

View File

@ -1 +0,0 @@
export * from './baseNavigator';

View File

@ -1,19 +1,28 @@
import React from 'react';
import { createSwitchNavigator } from 'react-navigation'; import { createSwitchNavigator } from 'react-navigation';
import { createBottomTabNavigator } from 'react-navigation-tabs';
import { createDrawerNavigator } from 'react-navigation-drawer'; import { createDrawerNavigator } from 'react-navigation-drawer';
import { createStackNavigator } from 'react-navigation-stack'; import { createStackNavigator } from 'react-navigation-stack';
import { BaseNavigator } from './baseNavigator'; // Constants
import ROUTES from '../constants/routeNames'; import ROUTES from '../constants/routeNames';
import scalePx from '../utils/scalePx';
// Components
import { Icon, IconContainer } from '../components/icon';
import { PostButton, BottomTabBar, SideMenu } from '../components';
// Screens // Screens
import { import {
Bookmarks, Bookmarks,
Boost, Boost,
Comments,
Drafts, Drafts,
Editor, Editor,
Feed,
Follows, Follows,
SpinGame,
Login, Login,
PinCode, Notification,
Post, Post,
Profile, Profile,
ProfileEdit, ProfileEdit,
@ -21,132 +30,104 @@ import {
Redeem, Redeem,
SearchResult, SearchResult,
Settings, Settings,
SteemConnect, SpinGame,
Transfer, Transfer,
Voters, Voters,
Wallet,
} from '../screens'; } from '../screens';
// Components const bottomTabNavigator = createBottomTabNavigator(
import { SideMenu } from '../components';
const mainNavigation = createDrawerNavigator(
{ {
[ROUTES.SCREENS.FEED]: { [ROUTES.TABBAR.FEED]: {
screen: BaseNavigator, 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( const stackNavigator = createStackNavigator(
{ {
[ROUTES.DRAWER.MAIN]: { [ROUTES.DRAWER.MAIN]: { screen: mainNavigation },
screen: mainNavigation, [ROUTES.SCREENS.PROFILE]: { screen: Profile },
navigationOptions: { [ROUTES.SCREENS.PROFILE_EDIT]: { screen: ProfileEdit },
header: () => null, [ROUTES.SCREENS.POST]: { screen: Post },
}, [ROUTES.SCREENS.EDITOR]: { screen: Editor },
}, [ROUTES.SCREENS.VOTERS]: { screen: Voters },
[ROUTES.SCREENS.PROFILE]: { [ROUTES.SCREENS.FOLLOWS]: { screen: Follows },
screen: Profile, [ROUTES.SCREENS.SETTINGS]: { screen: Settings },
navigationOptions: { [ROUTES.SCREENS.DRAFTS]: { screen: Drafts },
header: () => null, [ROUTES.SCREENS.BOOKMARKS]: { screen: Bookmarks },
}, [ROUTES.SCREENS.SEARCH_RESULT]: { screen: SearchResult },
}, [ROUTES.SCREENS.TRANSFER]: { screen: Transfer },
[ROUTES.SCREENS.PROFILE_EDIT]: { [ROUTES.SCREENS.BOOST]: { screen: Boost },
screen: ProfileEdit, [ROUTES.SCREENS.REDEEM]: { screen: Redeem },
navigationOptions: { [ROUTES.SCREENS.REBLOGS]: { screen: Reblogs },
header: () => null, [ROUTES.SCREENS.SPIN_GAME]: { screen: SpinGame },
}, [ROUTES.SCREENS.COMMENTS]: { screen: Comments },
},
[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',
}, },
{ headerMode: 'none' },
); );
export default createSwitchNavigator({ export default createSwitchNavigator({
stackNavigator, stackNavigator,
[ROUTES.SCREENS.LOGIN]: { screen: Login }, [ROUTES.SCREENS.LOGIN]: { screen: Login },
[ROUTES.SCREENS.PINCODE]: { screen: PinCode },
[ROUTES.SCREENS.STEEM_CONNECT]: { screen: SteemConnect },
}); });

View 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 };

View File

@ -1,17 +1,18 @@
import { Bookmarks } from './bookmarks'; import { Bookmarks } from './bookmarks';
import { Comments } from './comments/screen/commentsScreen';
import { Drafts } from './drafts'; import { Drafts } from './drafts';
import { Editor } from './editor'; import { Editor } from './editor';
import { Follows } from './follows';
import { Feed } from './feed'; import { Feed } from './feed';
import { Follows } from './follows';
import { Launch } from './launch'; import { Launch } from './launch';
import { Login } from './login'; import { Login } from './login';
import { Notification } from './notification'; import { Notification } from './notification';
import { PinCode } from './pinCode'; import { PinCode } from './pinCode';
import { Wallet } from './wallet';
import { Post } from './post'; import { Post } from './post';
import { SearchResult } from './searchResult'; import { SearchResult } from './searchResult';
import { Settings } from './settings'; import { Settings } from './settings';
import { SpinGame } from './spinGame/screen/spinGameScreen'; import { SpinGame } from './spinGame/screen/spinGameScreen';
import { Wallet } from './wallet';
import Boost from './boost/screen/boostScreen'; import Boost from './boost/screen/boostScreen';
import Profile from './profile/screen/profileScreen'; import Profile from './profile/screen/profileScreen';
import ProfileEdit from './profileEdit/screen/profileEditScreen'; import ProfileEdit from './profileEdit/screen/profileEditScreen';
@ -24,15 +25,15 @@ import Voters from './voters';
export { export {
Bookmarks, Bookmarks,
Boost, Boost,
Comments,
Drafts, Drafts,
Editor, Editor,
Follows,
Feed, Feed,
Follows,
Launch, Launch,
Login, Login,
Notification, Notification,
PinCode, PinCode,
Wallet,
Post, Post,
Profile, Profile,
ProfileEdit, ProfileEdit,
@ -44,4 +45,5 @@ export {
SteemConnect, SteemConnect,
Transfer, Transfer,
Voters, Voters,
Wallet,
}; };

View File

@ -7705,13 +7705,6 @@ react-native-safe-modules@^1.0.0:
dependencies: dependencies:
debounce "^1.2.0" 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: react-native-scrollable-tab-view@esteemapp/react-native-scrollable-tab-view:
version "0.10.0" version "0.10.0"
resolved "https://codeload.github.com/esteemapp/react-native-scrollable-tab-view/tar.gz/a86ddabbda728b86eb16656b8e8e71655a38400e" resolved "https://codeload.github.com/esteemapp/react-native-scrollable-tab-view/tar.gz/a86ddabbda728b86eb16656b8e8e71655a38400e"