diff --git a/package-lock.json b/package-lock.json
index 925284e..3641599 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2074,9 +2074,9 @@
}
},
"@react-navigation/core": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-3.5.0.tgz",
- "integrity": "sha512-NLm24lA51R8o8c+iFnwtN9elqRzm4OJ8f1qPBCUNIYW1sb8M5yCD53vRP0fRcPFpr/6Xzs2TJMsWnnebwFp0Rw==",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-3.5.1.tgz",
+ "integrity": "sha512-q7NyhWVYOhVIWqL2GZKa6G78YarXaVTTtOlSDkvy4ZIggo40wZzamlnrJRvsaQX46gsgw45FAWb5SriHh8o7eA==",
"requires": {
"hoist-non-react-statics": "^3.3.0",
"path-to-regexp": "^1.7.0",
@@ -2085,9 +2085,9 @@
},
"dependencies": {
"hoist-non-react-statics": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
- "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==",
"requires": {
"react-is": "^16.7.0"
}
@@ -2095,9 +2095,9 @@
}
},
"@react-navigation/native": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-3.6.1.tgz",
- "integrity": "sha512-q12/sG4LinEokc7K0DRn0uxoBuLy42TedHNDXN3b9Fj9c2FamUqlLeTZQtjDQc8dLBEeN2Bpp5FSDN8MYxxjAA==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-3.6.2.tgz",
+ "integrity": "sha512-Cybeou6N82ZeRmgnGlu+wzlV3z5BZQR2dmYaNFV1TNLUGHqtvv8E7oNw9uYcz9Ox5LFbiX+FdNTn2d6ZPlK0kg==",
"requires": {
"hoist-non-react-statics": "^3.0.1",
"react-native-safe-area-view": "^0.14.1",
@@ -2105,27 +2105,12 @@
},
"dependencies": {
"hoist-non-react-statics": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
- "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz",
+ "integrity": "sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw==",
"requires": {
"react-is": "^16.7.0"
}
- },
- "react-native-safe-area-view": {
- "version": "0.14.7",
- "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-0.14.7.tgz",
- "integrity": "sha512-fmuBYpvKDJK33bimo4JXrK2BN2CGw7nof1y1LDRgzqv+FZ3eADSDGshprN8WeQqSZjQ20hJx1CiWk28Edg/v4Q==",
- "requires": {
- "hoist-non-react-statics": "^2.3.1"
- },
- "dependencies": {
- "hoist-non-react-statics": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
- "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
- }
- }
}
}
},
@@ -9155,9 +9140,9 @@
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
},
"path-to-regexp": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
- "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+ "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
"requires": {
"isarray": "0.0.1"
},
@@ -9526,9 +9511,9 @@
"dev": true
},
"query-string": {
- "version": "6.8.2",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.8.2.tgz",
- "integrity": "sha512-J3Qi8XZJXh93t2FiKyd/7Ec6GNifsjKXUsVFkSBj/kjLsDylWhnCz4NT1bkPcKotttPW+QbKGqqPH8OoI2pdqw==",
+ "version": "6.9.0",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.9.0.tgz",
+ "integrity": "sha512-KG4bhCFYapExLsUHrFt+kQVEegF2agm4cpF/VNc6pZVthIfCc/GK8t8VyNIE3nyXG9DK3Tf2EGkxjR6/uRdYsA==",
"requires": {
"decode-uri-component": "^0.2.0",
"split-on-first": "^1.0.0",
@@ -9899,6 +9884,14 @@
"resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-1.4.0.tgz",
"integrity": "sha512-tO7nSNNP+iRLVbkcSS5GXyDBb7tSI02+XuRL3/S39EAr35rnvUy2JfeLUQG+fWSObJjnMVhasUDEUwlENk8IXw=="
},
+ "react-native-safe-area-view": {
+ "version": "0.14.8",
+ "resolved": "https://registry.npmjs.org/react-native-safe-area-view/-/react-native-safe-area-view-0.14.8.tgz",
+ "integrity": "sha512-MtRSIcZNstxv87Jet+UsPhEd1tpGe8cVskDXlP657x6rHpSrbrc+y13ZNXrwAgGNNhqQNX7UJT68ZIq//ZRmvw==",
+ "requires": {
+ "hoist-non-react-statics": "^2.3.1"
+ }
+ },
"react-native-screens": {
"version": "1.0.0-alpha.23",
"resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-1.0.0-alpha.23.tgz",
@@ -10098,14 +10091,14 @@
}
},
"react-navigation": {
- "version": "3.12.1",
- "resolved": "https://registry.npmjs.org/react-navigation/-/react-navigation-3.12.1.tgz",
- "integrity": "sha512-WLjQis/A40cIMpFlw4o26nSLN+CvrZp8MGvJoL5K5H7DMZ/TdwgPa/Nm2sAQA27Hw7hOohQGj+diyxFRZi89Iw==",
+ "version": "3.13.0",
+ "resolved": "https://registry.npmjs.org/react-navigation/-/react-navigation-3.13.0.tgz",
+ "integrity": "sha512-r64bTImY2aNye8wtd39ubouVB6ZMJqjVQYKxH4LFmOav4FsI59fQTDN7sZzyJa29owowYw/wVkh+NWGT+tdD1A==",
"requires": {
- "@react-navigation/core": "~3.5.0",
- "@react-navigation/native": "~3.6.1",
+ "@react-navigation/core": "~3.5.1",
+ "@react-navigation/native": "~3.6.2",
"react-navigation-drawer": "~1.4.0",
- "react-navigation-stack": "~1.5.0",
+ "react-navigation-stack": "1.5.3",
"react-navigation-tabs": "~1.2.0"
},
"dependencies": {
@@ -10118,9 +10111,9 @@
}
},
"react-navigation-stack": {
- "version": "1.5.5",
- "resolved": "https://registry.npmjs.org/react-navigation-stack/-/react-navigation-stack-1.5.5.tgz",
- "integrity": "sha512-qMhOhmUmyPNfFGWMbwv5flrNVsFU4JZSBWnONSgVGK4KWGW8DbobXBi4i4sBAC9Kg8EqJK0qyWcxnkMJJtfMWA==",
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/react-navigation-stack/-/react-navigation-stack-1.5.3.tgz",
+ "integrity": "sha512-MQcwDVbZUYsTtDJb5cFOSm+K+e7KpUCoROaGoUOR+JHWE3uuaJ3pd/Nu+32a57J98TNBf4qq0+2TPJWl6z6IBg==",
"requires": {
"prop-types": "^15.7.2"
}
@@ -10261,16 +10254,16 @@
}
},
"redux-persist": {
- "version": "5.10.0",
- "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-5.10.0.tgz",
- "integrity": "sha512-sSJAzNq7zka3qVHKce1hbvqf0Vf5DuTVm7dr4GtsqQVOexnrvbV47RWFiPxQ8fscnyiuWyD2O92DOxPl0tGCRg=="
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz",
+ "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ=="
},
"redux-persist-filesystem-storage": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/redux-persist-filesystem-storage/-/redux-persist-filesystem-storage-1.4.1.tgz",
- "integrity": "sha512-QDBlRWdFpn4JMrdLZcimwT7d3yc0xkSnA5j9xKWAY2Qw9rd3Uzlt76qXwEuuQ4M3qgKu/nLE8Roazl5BUcxfcA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/redux-persist-filesystem-storage/-/redux-persist-filesystem-storage-2.1.0.tgz",
+ "integrity": "sha512-KFj4opJCu8WXUveNV8YKZ1OMGiQm0kiTjWHSSYJ2hmQNrhEa7MOMiIcTImfNDO3vfRl9U+bidKDhQebtCeWrCw==",
"requires": {
- "rn-fetch-blob": "0.10.15"
+ "rn-fetch-blob": "^0.10.16"
},
"dependencies": {
"glob": {
@@ -10287,9 +10280,9 @@
}
},
"rn-fetch-blob": {
- "version": "0.10.15",
- "resolved": "https://registry.npmjs.org/rn-fetch-blob/-/rn-fetch-blob-0.10.15.tgz",
- "integrity": "sha512-/m/gurTaPAvR3J843uehHhznj5k89x7XClyO5ejmbspNLNQ4ByF+kZs80wiiKGWntj+Wqo0jJu1goArXEfc0kA==",
+ "version": "0.10.16",
+ "resolved": "https://registry.npmjs.org/rn-fetch-blob/-/rn-fetch-blob-0.10.16.tgz",
+ "integrity": "sha512-hZV+nF0HK4CWmspXGMw7/G8Q8qugpS/wbKiNLsFpdBZR8XYzjFZNvBWgGyC0F5JWQn3sjmK2w/FJjBlwdQWNQg==",
"requires": {
"base-64": "0.1.0",
"glob": "7.0.6"
diff --git a/package.json b/package.json
index 553fc77..a4754ff 100644
--- a/package.json
+++ b/package.json
@@ -34,14 +34,14 @@
"react-native-super-grid": "^3.0.4",
"react-native-vector-icons": "^6.6.0",
"react-native-video": "lbryio/react-native-video#7992ff945872f9bd00a3736d9ff1318f343abf47",
- "react-navigation": "^3.11.0",
+ "react-navigation": "^3.13.0",
"react-navigation-drawer": "^2.3.3",
"react-navigation-redux-helpers": "^3.0.2",
"react-navigation-stack": "^1.8.1",
"react-redux": "^5.0.3",
"redux": "^4.0.4",
- "redux-persist": "^5.10.0",
- "redux-persist-filesystem-storage": "^1.3.2",
+ "redux-persist": "^6.0.0",
+ "redux-persist-filesystem-storage": "^2.1.0",
"redux-persist-transform-compress": "^4.2.0",
"redux-persist-transform-filter": "0.0.18",
"redux-thunk": "^2.3.0",
diff --git a/src/component/fileListItem/view.js b/src/component/fileListItem/view.js
index a5f9664..48d4aa0 100644
--- a/src/component/fileListItem/view.js
+++ b/src/component/fileListItem/view.js
@@ -178,7 +178,7 @@ class FileListItem extends React.PureComponent {
{!title && !name && {uri}}
{!title && !name && (
-
+
)}
@@ -209,7 +209,7 @@ class FileListItem extends React.PureComponent {
normalizeURI(shortChannelUri || fullChannelUri),
null,
false,
- fullChannelUri
+ fullChannelUri,
);
}}
/>
diff --git a/src/page/search/index.js b/src/page/search/index.js
index dc39f39..b065d64 100644
--- a/src/page/search/index.js
+++ b/src/page/search/index.js
@@ -1,14 +1,15 @@
import { connect } from 'react-redux';
import {
doClaimSearch,
+ doResolveUris,
doSearch,
doUpdateSearchQuery,
makeSelectSearchUris,
selectClaimSearchByQuery,
selectIsSearching,
+ selectResolvingUris,
selectSearchValue,
makeSelectQueryWithOptions,
- selectSearchUrisByQuery,
} from 'lbry-redux';
import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
import { selectCurrentRoute } from 'redux/selectors/drawer';
@@ -22,8 +23,8 @@ const select = state => ({
currentRoute: selectCurrentRoute(state),
isSearching: selectIsSearching(state),
query: selectSearchValue(state),
+ resolvingUris: selectResolvingUris(state),
uris: makeSelectSearchUris(makeSelectQueryWithOptions(null, numSearchResults)(state))(state),
- urisByQuery: selectSearchUrisByQuery(state),
});
const perform = dispatch => ({
@@ -31,10 +32,11 @@ const perform = dispatch => ({
claimSearch: options => dispatch(doClaimSearch(options)),
updateSearchQuery: query => dispatch(doUpdateSearchQuery(query)),
pushDrawerStack: () => dispatch(doPushDrawerStack(Constants.DRAWER_ROUTE_SEARCH)),
+ resolveUris: uris => dispatch(doResolveUris(uris)),
setPlayerVisible: () => dispatch(doSetPlayerVisible(false)),
});
export default connect(
select,
- perform
+ perform,
)(SearchPage);
diff --git a/src/page/search/view.js b/src/page/search/view.js
index 1be1ba7..890fd47 100644
--- a/src/page/search/view.js
+++ b/src/page/search/view.js
@@ -26,6 +26,7 @@ class SearchPage extends React.PureComponent {
showTagResult: false,
claimSearchRun: false,
claimSearchOptions: null,
+ resultsResolved: false,
};
static navigationOptions = {
@@ -80,11 +81,37 @@ class SearchPage extends React.PureComponent {
this.setState({
currentQuery: query,
currentUri: isURIValid(query) ? normalizeURI(query) : null,
+ resultsResolved: false,
});
search(query);
}
}
+ allContentResolved() {
+ const { uris, resolvingUris } = this.props;
+ if (!this.state.resultsResolved) {
+ return false;
+ }
+ if (uris) {
+ let allResolved = true;
+ uris.forEach(uri => {
+ allResolved = allResolved && !resolvingUris.includes(uri);
+ });
+ return allResolved;
+ }
+
+ return false;
+ }
+
+ shouldComponentUpdate() {
+ const { isSearching, uris } = this.props;
+ return (isSearching && (!uris || uris.length === 0)) || (!isSearching && this.allContentResolved());
+ }
+
+ componentDidUpdate() {
+ const { isSearching, resolveUris, uris } = this.props;
+ }
+
getSearchQuery() {
const { navigation } = this.props;
if (navigation && navigation.state && navigation.state.params) {
@@ -130,11 +157,11 @@ class SearchPage extends React.PureComponent {
this.setState({ claimSearchOptions: options, claimSearchRun: true }, () => claimSearch(options));
}
- if (this.state.claimSearchRun && this.state.claimSearchOptions) {
+ /* if (this.state.claimSearchRun && this.state.claimSearchOptions) {
const claimSearchKey = createNormalizedClaimSearchKey(this.state.claimSearchOptions);
const claimSearchUris = claimSearchByQuery[claimSearchKey];
this.setState({ showTagResult: claimSearchUris && claimSearchUris.length > 0 });
- }
+ } */
return (
@@ -155,7 +182,7 @@ class SearchPage extends React.PureComponent {
};
render() {
- const { isSearching, navigation, query, uris, urisByQuery } = this.props;
+ const { isSearching, navigation, query, uris } = this.props;
return (
@@ -167,22 +194,30 @@ class SearchPage extends React.PureComponent {
)}
- item}
- initialNumToRender={10}
- maxToRenderPerBatch={20}
- removeClippedSubviews
- ListEmptyComponent={!isSearching ? this.listEmptyComponent() : null}
- ListHeaderComponent={this.state.currentUri ? this.listHeaderComponent(this.state.showTagResult) : null}
- renderItem={({ item }) => (
-
- )}
- />
+ {!isSearching && (
+ item}
+ initialNumToRender={8}
+ maxToRenderPerBatch={20}
+ removeClippedSubviews
+ ListEmptyComponent={!isSearching ? this.listEmptyComponent() : null}
+ ListHeaderComponent={this.state.currentUri ? this.listHeaderComponent(this.state.showTagResult) : null}
+ renderItem={({ item }) => (
+
+ )}
+ />
+ )}
);