diff --git a/android/app/build.gradle b/android/app/build.gradle index 22cb0ac0c31ddd15cdd0669f2001ddbc9b28dd61..c0cbdd07f03267538ad2d369d4dd75a778564c38 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -102,7 +102,7 @@ android { minSdkVersion 19 targetSdkVersion 27 versionCode VERSIONCODE as Integer - versionName "1.1" + versionName "1.1.1" ndk { abiFilters "armeabi-v7a", "x86" } diff --git a/app/lib/realm.js b/app/lib/realm.js index e4f68f40e34506e309ee87f16d5149890b31dac9..c97e58a99fb3009961c6e294f05824afde778ff0 100644 --- a/app/lib/realm.js +++ b/app/lib/realm.js @@ -10,8 +10,7 @@ const serversSchema = { properties: { id: 'string', name: { type: 'string', optional: true }, - iconURL: { type: 'string', optional: true }, - current: 'bool' + iconURL: { type: 'string', optional: true } } }; diff --git a/app/sagas/selectServer.js b/app/sagas/selectServer.js index be132c445d16259bd194216a18439fa4d2b06dd5..9101d1b62d356f969da8c8e842b41471ed768488 100644 --- a/app/sagas/selectServer.js +++ b/app/sagas/selectServer.js @@ -46,7 +46,7 @@ const handleServerRequest = function* handleServerRequest({ server }) { yield call(validate, server); yield call(NavigationActions.push, { screen: 'LoginSignupView', title: server, backButtonTitle: '' }); database.databases.serversDB.write(() => { - database.databases.serversDB.create('servers', { id: server, current: false }, true); + database.databases.serversDB.create('servers', { id: server }, true); }); yield put(selectServerRequest(server)); } catch (e) { diff --git a/app/views/RoomsListView/Header/Header.ios.js b/app/views/RoomsListView/Header/Header.ios.js index c9594f0f97f57c08562f41996ab90cfbd1db617f..4ae44bc118b26ed4330ed8303d681fe85f615663 100644 --- a/app/views/RoomsListView/Header/Header.ios.js +++ b/app/views/RoomsListView/Header/Header.ios.js @@ -33,8 +33,12 @@ const styles = StyleSheet.create({ const Header = ({ onPress, serverName, showServerDropdown }) => ( <View style={styles.container}> - <Text style={styles.title}>{I18n.t('Messages')}</Text> - <TouchableOpacity onPress={onPress} testID='rooms-list-header-server-dropdown-button'> + <TouchableOpacity + onPress={onPress} + testID='rooms-list-header-server-dropdown-button' + style={styles.container} + > + <Text style={styles.title}>{I18n.t('Messages')}</Text> <View style={styles.button}> <Text style={styles.server}>{serverName}</Text> <Image style={[styles.disclosure, showServerDropdown && styles.upsideDown]} source={{ uri: 'disclosure_indicator_server' }} /> diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index 92508ceb2f26b12c6ce62a544ea47940eee731d0..21fcb154539f366a30f6e0db79b1c632c6a0d835 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -126,7 +126,17 @@ export default class ServerDropdown extends Component { renderServer = ({ item }) => ( <Touch onPress={() => this.select(item.id)} style={styles.serverItem} testID={`rooms-list-header-server-${ item.id }`}> <View style={styles.serverItemContainer}> - <Image source={{ uri: item.iconURL }} defaultSource={{ uri: 'logo' }} style={styles.serverIcon} /> + {item.iconURL ? + <Image + source={{ uri: item.iconURL }} + defaultSource={{ uri: 'logo' }} + style={styles.serverIcon} + /> : + <Image + source={{ uri: 'logo' }} + style={styles.serverIcon} + /> + } <View style={styles.serverTextContainer}> <Text style={styles.serverName}>{item.name || item.id}</Text> <Text style={styles.serverUrl}>{item.id}</Text> diff --git a/app/views/RoomsListView/index.js b/app/views/RoomsListView/index.js index 608e7d1ed277f03866bad5822b0c0d2ffc7a058d..1df2dc90d40c39fbdbb1bd9540968f62487c78c6 100644 --- a/app/views/RoomsListView/index.js +++ b/app/views/RoomsListView/index.js @@ -18,6 +18,7 @@ import Touch from '../../utils/touch'; import { toggleSortDropdown } from '../../actions/rooms'; const ROW_HEIGHT = 70; +const SCROLL_OFFSET = 56; const isAndroid = () => Platform.OS === 'android'; const getItemLayout = (data, index) => ({ length: ROW_HEIGHT, offset: ROW_HEIGHT * index, index }); @@ -62,6 +63,7 @@ export default class RoomsListView extends LoggedView { static navigatorStyle = { navBarCustomView: 'RoomsListHeaderView', + navBarComponentAlignment: 'fill', navBarBackgroundColor: isAndroid() ? '#2F343D' : undefined, navBarTextColor: isAndroid() ? '#FFF' : undefined, navBarButtonColor: isAndroid() ? '#FFF' : undefined @@ -272,6 +274,7 @@ export default class RoomsListView extends LoggedView { navigator.setButtons({ leftButtons, rightButtons }); navigator.setStyle({ navBarCustomView: 'RoomsListHeaderView', + navBarComponentAlignment: 'fill', navBarBackgroundColor: isAndroid() ? '#2F343D' : undefined, navBarTextColor: isAndroid() ? '#FFF' : undefined, navBarButtonColor: isAndroid() ? '#FFF' : undefined @@ -355,7 +358,16 @@ export default class RoomsListView extends LoggedView { } } - toggleSort = () => this.props.toggleSortDropdown(); + toggleSort = () => { + if (Platform.OS === 'ios') { + this.scroll.scrollTo({ x: 0, y: SCROLL_OFFSET, animated: true }); + } else { + this.scroll.scrollTo({ x: 0, y: 0, animated: true }); + } + setTimeout(() => { + this.props.toggleSortDropdown(); + }, 100); + } renderHeader = () => { if (this.state.search.length > 0) { @@ -471,7 +483,8 @@ export default class RoomsListView extends LoggedView { return ( <ScrollView - contentOffset={Platform.OS === 'ios' ? { x: 0, y: 56 } : {}} + ref={ref => this.scroll = ref} + contentOffset={Platform.OS === 'ios' ? { x: 0, y: SCROLL_OFFSET } : {}} keyboardShouldPersistTaps='always' testID='rooms-list-view-list' > diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index 910891acd6f9ab3773cea1332e94a15398d008e8..0fe91a1d268ad10fe16a8c4533ade00381ee8f93 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -17,7 +17,7 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key> - <string>1.1</string> + <string>1.1.1</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleURLTypes</key>