diff --git a/src/components/markdownEditor/view/markdownEditorView.js b/src/components/markdownEditor/view/markdownEditorView.js index 068051686..38e57a5d1 100644 --- a/src/components/markdownEditor/view/markdownEditorView.js +++ b/src/components/markdownEditor/view/markdownEditorView.js @@ -58,6 +58,23 @@ export default class MarkdownEditorView extends Component { } } + componentDidUpdate(prevProps, prevState) { + const { text } = this.state; + const { isFormValid, handleIsFormValid } = this.props; + + if (prevState.text !== text && !isFormValid) { + const nextText = text.replace(prevState.text, ''); + + if (nextText && nextText.length > 0) { + this._changeText(text); + + if (handleIsFormValid) { + handleIsFormValid(text); + } + } + } + } + // Component functions _changeText = (input) => { const { @@ -147,7 +164,7 @@ export default class MarkdownEditorView extends Component { iconType="FontAwesome" name="image" /> - {/* + this.ClearActionSheet.show()} size={20} @@ -155,7 +172,7 @@ export default class MarkdownEditorView extends Component { iconType="FontAwesome" name="trash" /> - */} + {/* TODO: After alpha */} {/* ( - - - - onChangeText(text)} - placeholder={placeholder} - placeholderTextColor="#c1c5c7" - autoCapitalize="none" - autoFocus={autoFocus} - editable={editable} - /> - handleOnModalClose()} - /> - + + + onChangeText(text)} + placeholder={placeholder} + placeholderTextColor="#c1c5c7" + autoCapitalize="none" + autoFocus={autoFocus} + editable={editable} + /> + handleOnModalClose()} + /> ); diff --git a/src/components/searchModal/view/searchModalStyles.js b/src/components/searchModal/view/searchModalStyles.js index 21fd03675..94485094d 100644 --- a/src/components/searchModal/view/searchModalStyles.js +++ b/src/components/searchModal/view/searchModalStyles.js @@ -53,6 +53,12 @@ export default EStyleSheet.create({ flexDirection: 'row', alignItems: 'center', }, + searchItemImageWrapper: { + flex: 1, + }, + searchItemTextWrapper: { + flex: 7, + }, searchItemImage: { width: 40, height: 40, diff --git a/src/components/searchModal/view/searchModalView.js b/src/components/searchModal/view/searchModalView.js index e819a86b4..1a4772a5d 100644 --- a/src/components/searchModal/view/searchModalView.js +++ b/src/components/searchModal/view/searchModalView.js @@ -59,7 +59,7 @@ class SearchModalView extends PureComponent { renderItem={({ item }) => ( handleOnPressListItem(searchResults.type, item)}> - + {item.image && ( )} - + {item.text && {item.text}} diff --git a/src/config/locales/fa-IR.json b/src/config/locales/fa-IR.json index 0a92d775d..7f6e37c6b 100644 --- a/src/config/locales/fa-IR.json +++ b/src/config/locales/fa-IR.json @@ -201,9 +201,9 @@ "no_existing_post": "پستی موجود نیست" }, "comment_filter": { - "trending": "trending", - "reputation": "reputation", - "votes": "votes", - "age": "age" + "trending": "پرطرفدار", + "reputation": "شهرت", + "votes": "رأی‌ ها", + "age": "سن" } } diff --git a/src/config/locales/id-ID.json b/src/config/locales/id-ID.json index 9c4474872..53e9a1267 100644 --- a/src/config/locales/id-ID.json +++ b/src/config/locales/id-ID.json @@ -79,7 +79,7 @@ "cancel": "batal", "login": "MASUK", "steemconnect_description": "Jika Anda tidak ingin menyimpan sandi Anda dienkripsi dan disimpan pada perangkat Anda, Anda dapat menggunakan Steemconnect.", - "steemconnect_fee_description": "Steemconnect may charge some fees from your reward transactions" + "steemconnect_fee_description": "Steemconnect dapat membebankan beberapa biaya dari transaksi hadiah Anda" }, "home": { "feed": "Umpan", @@ -201,9 +201,9 @@ "no_existing_post": "Tidak ada post yang ada" }, "comment_filter": { - "trending": "trending", - "reputation": "reputation", - "votes": "votes", - "age": "age" + "trending": "Trending", + "reputation": "reputasi", + "votes": "berikan suara", + "age": "usia" } } diff --git a/src/config/locales/index.js b/src/config/locales/index.js index 62ec76350..ba1dadee1 100644 --- a/src/config/locales/index.js +++ b/src/config/locales/index.js @@ -6,6 +6,9 @@ export default { 'it-IT': require('./it-IT.json'), 'ru-RU': require('./ru-RU.json'), 'tr-TR': require('./tr-TR.json'), + 'ko-KR': require('./ko-KR.json'), + 'lt-LT': require('./lt-LT.json'), + 'pt-PT': require('./pt-PT.json'), }; export const locales = [ @@ -16,4 +19,7 @@ export const locales = [ { id: 'iT-IT', name: 'Italian' }, { id: 'ru-RU', name: 'Русский' }, { id: 'tr-TR', name: 'Türkçe' }, + { id: 'ko-KR', name: 'Korean' }, + { id: 'lt-LT', name: 'Lithuanian' }, + { id: 'pt-PT', name: 'Porteguese' }, ]; diff --git a/src/config/locales/tr-TR.json b/src/config/locales/tr-TR.json index ad931b02c..51f5f21f9 100644 --- a/src/config/locales/tr-TR.json +++ b/src/config/locales/tr-TR.json @@ -79,7 +79,7 @@ "cancel": "geç", "login": "GİRİŞ", "steemconnect_description": "Eğer kullanıçı bilgilerini şifreli olarak tutulmasını istemiyorsanız Steemconnect ilede giriş yapabilirsiniz.", - "steemconnect_fee_description": "Steemconnect may charge some fees from your reward transactions" + "steemconnect_fee_description": "Not: Steemconnect ödül işlemlerinde bazı ücretler alabilir" }, "home": { "feed": "Akış", @@ -115,8 +115,8 @@ "reply_placeholder": "Yukarıdaki yazi hakkinda nasil bir cevap yazmak istersin?", "publish": "Yayınla", "reply": "Cevapla", - "open_galery": "Open Galery", - "capture_photo": "Capture a photo" + "open_galery": "Gariyi Aç", + "capture_photo": "Bir fotoğraf yakala" }, "pincode": { "enter_text": "Açmak için pin kodunu giriniz", @@ -137,8 +137,8 @@ "warning": "Uyarı", "invalid_pincode": "Geçersiz pin gözden geçirip yeniden deneyin.", "remove_alert": "Kaldırmak istediğine emin misin ?", - "clear_alert": "Are you sure you want to clear?", - "clear": "Clear", + "clear_alert": "Silmek istediğinizden emin misiniz?", + "clear": "Temizle", "cancel": "Vazgeç", "delete": "Temizle", "copied": "Kopyalandı", @@ -166,7 +166,7 @@ "empty_list": "Burada hiçbir şey yok", "deleted": "Yer işareti kaldırıldı", "search": "Yer imlerinde ara", - "added": "Added to bookmarks", + "added": "Yer imlerine eklendi", "add": "Yerimlerine ekle" }, "favorites": { @@ -198,12 +198,12 @@ }, "deep_link": { "no_existing_user": "Kullanici Bulunamadi", - "no_existing_post": "Boyle bir icerik yok" + "no_existing_post": "Kullanici Bulunamadi" }, "comment_filter": { - "trending": "trending", - "reputation": "reputation", - "votes": "votes", - "age": "age" + "trending": "öne çıkanlar", + "reputation": "itibar", + "votes": "oylar", + "age": "yaş" } } diff --git a/src/constants/options/language.js b/src/constants/options/language.js index c0327a432..1fe1d87c3 100644 --- a/src/constants/options/language.js +++ b/src/constants/options/language.js @@ -1,3 +1,23 @@ -export default ['Deutsche', 'English', 'Hungarian', 'Indonesian', 'Russian', 'Turkish']; +export default [ + 'Deutsche', + 'English', + 'Hungarian', + 'Indonesian', + 'Korean', + 'Lithuanian', + 'Porteguese', + 'Russian', + 'Turkish', +]; -export const VALUE = ['de-DE', 'en-US', 'hu-HU', 'id-ID', 'ru-RU', 'tr-TR']; +export const VALUE = [ + 'de-DE', + 'en-US', + 'hu-HU', + 'id-ID', + 'ko-KR', + 'lt-LT', + 'pt-PT', + 'ru-RU', + 'tr-TR', +]; diff --git a/src/screens/application/container/applicationContainer.js b/src/screens/application/container/applicationContainer.js index 5c7706fe2..71f9242a5 100644 --- a/src/screens/application/container/applicationContainer.js +++ b/src/screens/application/container/applicationContainer.js @@ -10,7 +10,7 @@ import { NavigationActions } from 'react-navigation'; import { bindActionCreators } from 'redux'; import Push from 'appcenter-push'; -// Constants +// Languages import en from 'react-intl/locale-data/en'; import id from 'react-intl/locale-data/id'; import ru from 'react-intl/locale-data/ru'; @@ -18,7 +18,11 @@ import de from 'react-intl/locale-data/de'; import it from 'react-intl/locale-data/it'; import hu from 'react-intl/locale-data/hu'; import tr from 'react-intl/locale-data/tr'; +import ko from 'react-intl/locale-data/ko'; +import lt from 'react-intl/locale-data/lt'; +import pt from 'react-intl/locale-data/pt'; +// Constants import AUTH_TYPE from '../../../constants/authType'; // Services @@ -67,7 +71,7 @@ import { import ApplicationScreen from '../screen/applicationScreen'; import { Launch } from '../..'; -addLocaleData([...en, ...ru, ...de, ...id, ...it, ...hu, ...tr]); +addLocaleData([...en, ...ru, ...de, ...id, ...it, ...hu, ...tr, ...ko, ...pt, ...lt]); class ApplicationContainer extends Component { constructor() { diff --git a/src/screens/bookmarks/screen/bookmarksScreen.js b/src/screens/bookmarks/screen/bookmarksScreen.js index a087d5809..e73fc77c5 100644 --- a/src/screens/bookmarks/screen/bookmarksScreen.js +++ b/src/screens/bookmarks/screen/bookmarksScreen.js @@ -50,7 +50,7 @@ class BookmarksScreen extends Component { index={index} isClickable text={text} - username={item.author} + username={isFavorites ? item.account : item.author} /> ); } diff --git a/src/screens/editor/screen/editorScreen.js b/src/screens/editor/screen/editorScreen.js index fdffb7f40..e29d39404 100644 --- a/src/screens/editor/screen/editorScreen.js +++ b/src/screens/editor/screen/editorScreen.js @@ -39,7 +39,7 @@ class EditorScreen extends Component { // Component Life Cycles componentWillReceiveProps = (nextProps) => { - const { draftPost } = this.props; + const { draftPost, isUploading } = this.props; if (nextProps.draftPost && draftPost !== nextProps.draftPost) { this.setState({ @@ -48,6 +48,10 @@ class EditorScreen extends Component { }, }); } + + if (isUploading !== nextProps) { + this._handleFormUpdate(); + } }; // Component Functions @@ -107,7 +111,7 @@ class EditorScreen extends Component { } }; - _handleIsFormValid = () => { + _handleIsFormValid = (bodyText) => { const { fields } = this.state; const { isReply } = this.props; let _isFormValid; @@ -118,9 +122,8 @@ class EditorScreen extends Component { _isFormValid = fields && fields.title && fields.title.length > 0 - && fields.body - && fields.body.length > 0 - && fields.tags.length > 0; + && ((fields.body && fields.body.length > 0 && fields.tags.length > 0) + || (bodyText && bodyText.length > 0)); } this.setState({ isFormValid: _isFormValid }); @@ -215,6 +218,9 @@ class EditorScreen extends Component { componentID="body" draftBody={fields && fields.body} handleOnTextChange={this._setWordsCount} + handleFormUpdate={this._handleFormUpdate} + handleIsFormValid={this._handleIsFormValid} + isFormValid={isFormValid} handleOpenImagePicker={handleOnImagePicker} intl={intl} uploadedImage={uploadedImage} diff --git a/src/screens/profile/container/profileContainer.js b/src/screens/profile/container/profileContainer.js index 7fe4ee9ec..8df955291 100644 --- a/src/screens/profile/container/profileContainer.js +++ b/src/screens/profile/container/profileContainer.js @@ -56,7 +56,7 @@ class ProfileContainer extends Component { return; } - if (selectedUser && selectedUser.username) { + if (selectedUser && selectedUser.username && selectedUser.username !== currentAccount.name) { this._loadProfile(selectedUser.username); if (selectedUser.username) { diff --git a/src/screens/searchResult/screen/searchResultScreen.js b/src/screens/searchResult/screen/searchResultScreen.js index 999008fe4..53a23abfe 100644 --- a/src/screens/searchResult/screen/searchResultScreen.js +++ b/src/screens/searchResult/screen/searchResultScreen.js @@ -1,4 +1,4 @@ -import React, { PureComponent, Fragment } from 'react'; +import React, { PureComponent } from 'react'; import { View } from 'react-native'; import ScrollableTabView from '@esteemapp/react-native-scrollable-tab-view'; import { injectIntl } from 'react-intl'; @@ -22,35 +22,33 @@ class SearchResultScreen extends PureComponent { const { intl, tag, navigationGoBack } = this.props; return ( - - - console.log('text :', text)} - handleOnModalClose={navigationGoBack} - placeholder={`#${tag}`} - editable={false} - autoFocus={false} - /> - ( - - )} + + {}} + handleOnModalClose={navigationGoBack} + placeholder={`#${tag}`} + editable={false} + /> + ( + + )} + > + - - - - {/* + + {/* */} - - - + + ); } }