diff --git a/app/constants/list.js b/app/constants/list.js index 8159991d7..3d6a494cb 100644 --- a/app/constants/list.js +++ b/app/constants/list.js @@ -8,4 +8,6 @@ const VISIBILITY_CONFIG_DEFAULTS = { export default { VISIBILITY_CONFIG_DEFAULTS, -}; \ No newline at end of file + VISIBILITY_SCROLL_DOWN: 'down', + VISIBILITY_SCROLL_UP: 'up', +}; diff --git a/app/screens/search/search.js b/app/screens/search/search.js index db85d67ad..9ae01e48c 100644 --- a/app/screens/search/search.js +++ b/app/screens/search/search.js @@ -32,6 +32,7 @@ import PostSeparator from 'app/components/post_separator'; import SafeAreaView from 'app/components/safe_area_view'; import SearchBar from 'app/components/search_bar'; import StatusBar from 'app/components/status_bar'; +import {ListTypes} from 'app/constants'; import mattermostManaged from 'app/mattermost_managed'; import {preventDoubleTap} from 'app/utils/tap'; import {changeOpacity, makeStyleSheetFromTheme} from 'app/utils/theme'; @@ -43,6 +44,7 @@ const SECTION_HEIGHT = 20; const RECENT_LABEL_HEIGHT = 42; const RECENT_SEPARATOR_HEIGHT = 3; const MODIFIER_LABEL_HEIGHT = 58; +const SCROLL_UP_MULTIPLIER = 6; const SEARCHING = 'searching'; const NO_RESULTS = 'no results'; @@ -89,6 +91,7 @@ export default class Search extends PureComponent { props.navigator.setOnNavigatorEvent(this.onNavigatorEvent); this.isX = DeviceInfo.getModel().includes('iPhone X'); + this.contentOffsetY = 0; this.state = { channelName: '', cursorPosition: 0, @@ -119,7 +122,9 @@ export default class Search extends PureComponent { const {searchingStatus: status, recent, enableDateSuggestion} = this.props; const {searchingStatus: prevStatus} = prevProps; const recentLength = recent.length; - const shouldScroll = prevStatus !== status && (status === RequestStatus.SUCCESS || status === RequestStatus.STARTED) && !this.props.isSearchGettingMore && !prevProps.isSearchGettingMore; + const shouldScroll = prevStatus !== status && + (status === RequestStatus.SUCCESS || status === RequestStatus.STARTED) && + !this.props.isSearchGettingMore && !prevProps.isSearchGettingMore; if (this.props.isLandscape !== prevProps.isLandscape) { this.refs.searchBar.blur(); @@ -142,6 +147,30 @@ export default class Search extends PureComponent { mattermostManaged.removeEventListener(this.listenerId); } + archivedIndicator = (postID, style) => { + const channelIsArchived = this.props.archivedPostIds.includes(postID); + let archivedIndicator = null; + if (channelIsArchived) { + archivedIndicator = ( + + + + {' '} + + + + ); + } + return archivedIndicator; + }; + cancelSearch = preventDoubleTap(() => { const {navigator} = this.props; this.handleTextChanged('', true); @@ -196,11 +225,34 @@ export default class Search extends PureComponent { this.showingPermalink = false; }; + handleLayout = (event) => { + const {height} = event.nativeEvent.layout; + this.setState({searchListHeight: height}); + }; + handlePermalinkPress = (postId, teamName) => { this.props.actions.loadChannelsByTeamName(teamName); this.showPermalinkView(postId, true); }; + handleScroll = (event) => { + const pageOffsetY = event.nativeEvent.contentOffset.y; + if (pageOffsetY > 0) { + const contentHeight = event.nativeEvent.contentSize.height; + const direction = (this.contentOffsetY < pageOffsetY) ? + ListTypes.VISIBILITY_SCROLL_UP : + ListTypes.VISIBILITY_SCROLL_DOWN; + + this.contentOffsetY = pageOffsetY; + if ( + direction === ListTypes.VISIBILITY_SCROLL_UP && + (contentHeight - pageOffsetY) < (this.state.searchListHeight * SCROLL_UP_MULTIPLIER) + ) { + this.getMoreSearchResults(); + } + } + }; + handleSelectionChange = (event) => { const cursorPosition = event.nativeEvent.selection.end; this.setState({ @@ -208,6 +260,10 @@ export default class Search extends PureComponent { }); }; + handleSearchButtonPress = preventDoubleTap((text) => { + this.search(text); + }); + handleTextChanged = (value, selectionChanged) => { const {actions, searchingStatus, isSearchGettingMore} = this.props; this.setState({value}); @@ -243,6 +299,12 @@ export default class Search extends PureComponent { return item.id || item; }; + getMoreSearchResults = debounce(() => { + if (this.state.value && this.props.postIds.length) { + this.props.actions.getMorePostsForSearch(); + } + }, 100); + onNavigatorEvent = (event) => { if (event.id === 'backPress') { if (this.state.preview) { @@ -259,40 +321,24 @@ export default class Search extends PureComponent { this.showPermalinkView(post.id, false); }; - showPermalinkView = (postId, isPermalink) => { - const {actions, navigator} = this.props; - - actions.selectFocusedPostId(postId); - - if (!this.showingPermalink) { - const options = { - screen: 'Permalink', - animationType: 'none', - backButtonTitle: '', - overrideBackPress: true, - navigatorStyle: { - navBarHidden: true, - screenBackgroundColor: changeOpacity('#000', 0.2), - modalPresentationStyle: 'overCurrentContext', - }, - passProps: { - isPermalink, - onClose: this.handleClosePermalink, - onHashtagPress: this.handleHashtagPress, - onPermalinkPress: this.handlePermalinkPress, - }, - }; - - this.showingPermalink = true; - navigator.showModal(options); - } - }; - removeSearchTerms = preventDoubleTap((item) => { const {actions, currentTeamId} = this.props; actions.removeSearchTerms(currentTeamId, item.terms); }); + renderFooter = () => { + if (this.props.isSearchGettingMore) { + const style = getStyleFromTheme(this.props.theme); + return ( + + + + ); + } + + return null; + }; + renderModifiers = ({item}) => { const {theme} = this.props; const style = getStyleFromTheme(theme); @@ -327,30 +373,6 @@ export default class Search extends PureComponent { ); }; - archivedIndicator = (postID, style) => { - const channelIsArchived = this.props.archivedPostIds.includes(postID); - let archivedIndicator = null; - if (channelIsArchived) { - archivedIndicator = ( - - - - {' '} - - - - ); - } - return archivedIndicator; - }; - renderPost = ({item, index}) => { const {postIds, theme} = this.props; const {managedConfig} = this.state; @@ -380,7 +402,7 @@ export default class Search extends PureComponent { } return ( - + {this.archivedIndicator(postIds[index], style)} { + const {actions, navigator} = this.props; + + actions.selectFocusedPostId(postId); + + if (!this.showingPermalink) { + const options = { + screen: 'Permalink', + animationType: 'none', + backButtonTitle: '', + overrideBackPress: true, + navigatorStyle: { + navBarHidden: true, + screenBackgroundColor: changeOpacity('#000', 0.2), + modalPresentationStyle: 'overCurrentContext', + }, + passProps: { + isPermalink, + onClose: this.handleClosePermalink, + onHashtagPress: this.handleHashtagPress, + onPermalinkPress: this.handlePermalinkPress, + }, + }; + + this.showingPermalink = true; + navigator.showModal(options); + } + }; + scrollToTop = () => { if (this.refs.list) { this.refs.list._wrapperListRef.getListRef().scrollToOffset({ //eslint-disable-line no-underscore-dangle @@ -503,10 +554,6 @@ export default class Search extends PureComponent { actions.searchPostsWithParams(currentTeamId, {terms: terms.trim(), is_or_search: isOrSearch, time_zone_offset: this.props.timezoneOffsetInSeconds, page: 0, per_page: 20}, true); }; - handleSearchButtonPress = preventDoubleTap((text) => { - this.search(text); - }); - setModifierValue = preventDoubleTap((modifier) => { const {value} = this.state; let newValue = ''; @@ -533,12 +580,6 @@ export default class Search extends PureComponent { Keyboard.dismiss(); }); - onEndReached = debounce(() => { - if (this.state.value) { - this.props.actions.getMorePostsForSearch(); - } - }, 100); - render() { const { isLandscape, @@ -721,8 +762,10 @@ export default class Search extends PureComponent { keyboardShouldPersistTaps='always' keyboardDismissMode='interactive' stickySectionHeadersEnabled={Platform.OS === 'ios'} - onEndReached={this.onEndReached} - onEndReachedThreshold={Platform.OS === 'ios' ? 0 : 1} + onLayout={this.handleLayout} + onScroll={this.handleScroll} + scrollEventThrottle={60} + ListFooterComponent={this.renderFooter} /> { archivedText: { color: changeOpacity(theme.centerChannelColor, 0.4), }, + postResult: { + overflow: 'hidden', + }, + loadingMore: { + height: 60, + }, }; }); diff --git a/package-lock.json b/package-lock.json index 8312ae490..e9f941cc1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2566,7 +2566,7 @@ }, "inquirer": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "resolved": "http://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "requires": { "ansi-escapes": "^3.0.0", @@ -2625,7 +2625,7 @@ }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "requires": { "cliui": "^4.0.0", @@ -2744,7 +2744,7 @@ }, "ansi-colors": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", "requires": { "ansi-wrap": "^0.1.0" @@ -3610,7 +3610,7 @@ }, "babel-plugin-istanbul": { "version": "4.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", "dev": true, "requires": { @@ -3641,22 +3641,22 @@ }, "babel-plugin-syntax-class-properties": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" }, "babel-plugin-syntax-flow": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" }, "babel-plugin-syntax-jsx": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" }, "babel-plugin-syntax-trailing-function-commas": { @@ -4312,7 +4312,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { "ansi-styles": "^2.2.1", @@ -4431,8 +4431,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -4453,14 +4452,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4475,20 +4472,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -4605,8 +4599,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -4618,7 +4611,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4633,7 +4625,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4641,14 +4632,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4667,7 +4656,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -4748,8 +4736,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -4761,7 +4748,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -4847,8 +4833,7 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -4884,7 +4869,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4904,7 +4888,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -4948,14 +4931,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, @@ -5178,7 +5159,7 @@ }, "combined-stream": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { "delayed-stream": "~1.0.0" @@ -6273,7 +6254,7 @@ }, "external-editor": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "requires": { "chardet": "^0.4.0", @@ -6624,13 +6605,11 @@ }, "balanced-match": { "version": "1.0.0", - "bundled": true, - "optional": true + "bundled": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6647,8 +6626,7 @@ }, "concat-map": { "version": "0.0.1", - "bundled": true, - "optional": true + "bundled": true }, "console-control-strings": { "version": "1.1.0", @@ -6777,7 +6755,6 @@ "minimatch": { "version": "3.0.4", "bundled": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -7422,7 +7399,7 @@ }, "http-errors": { "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { "depd": "~1.1.2", @@ -7663,7 +7640,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "requires": { "builtin-modules": "^1.0.0" @@ -9459,7 +9436,7 @@ }, "jsonfile": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { "graceful-fs": "^4.1.6" @@ -9602,7 +9579,7 @@ }, "load-json-file": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "requires": { "graceful-fs": "^4.1.2", @@ -9820,8 +9797,8 @@ "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" }, "mattermost-redux": { - "version": "github:mattermost/mattermost-redux#070adc899cd3321d9370a194000aa5a009606288", - "from": "github:mattermost/mattermost-redux#070adc899cd3321d9370a194000aa5a009606288", + "version": "github:mattermost/mattermost-redux#fe7340ccd0e1909ab2cc98ab44a679d90672bdb9", + "from": "github:mattermost/mattermost-redux#fe7340ccd0e1909ab2cc98ab44a679d90672bdb9", "requires": { "deep-equal": "1.0.1", "eslint-plugin-header": "1.2.0", @@ -10244,7 +10221,7 @@ }, "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mixin-deep": { @@ -10268,7 +10245,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -10276,7 +10253,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } @@ -11996,7 +11973,7 @@ }, "opn": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/opn/-/opn-3.0.3.tgz", + "resolved": "http://registry.npmjs.org/opn/-/opn-3.0.3.tgz", "integrity": "sha1-ttmec5n3jWXDuq/+8fsojpuFJDo=", "requires": { "object-assign": "^4.0.1" @@ -12013,7 +11990,7 @@ "dependencies": { "minimist": { "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" }, "wordwrap": { @@ -12211,7 +12188,7 @@ }, "pegjs": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", + "resolved": "http://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=" }, "performance-now": { @@ -12328,7 +12305,7 @@ }, "pretty-format": { "version": "4.3.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-4.3.1.tgz", + "resolved": "http://registry.npmjs.org/pretty-format/-/pretty-format-4.3.1.tgz", "integrity": "sha1-UwvlxCs8BbNkFKeipDN6qArNDo0=" }, "private": { @@ -13125,7 +13102,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -14278,7 +14255,7 @@ }, "sax": { "version": "1.1.6", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.6.tgz", + "resolved": "http://registry.npmjs.org/sax/-/sax-1.1.6.tgz", "integrity": "sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA=" }, "sc-auth": { @@ -15249,7 +15226,7 @@ "dependencies": { "rimraf": { "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "resolved": "http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=" } } @@ -15279,7 +15256,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -15355,7 +15332,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { @@ -15879,7 +15856,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { "string-width": "^1.0.1", diff --git a/package.json b/package.json index 4cdc6c764..88798e15a 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "intl": "1.2.5", "jail-monkey": "1.0.0", "jsc-android": "224109.1.0", - "mattermost-redux": "github:mattermost/mattermost-redux#070adc899cd3321d9370a194000aa5a009606288", + "mattermost-redux": "github:mattermost/mattermost-redux#fe7340ccd0e1909ab2cc98ab44a679d90672bdb9", "mime-db": "1.36.0", "moment-timezone": "0.5.21", "prop-types": "15.6.2",