move uri omnibar to top (#444)
This commit is contained in:
parent
b5af71d798
commit
c37a6f5c27
22 changed files with 209 additions and 172 deletions
|
@ -68,9 +68,8 @@ const discoverStack = createStackNavigator({
|
||||||
screen: DiscoverPage,
|
screen: DiscoverPage,
|
||||||
navigationOptions: ({ navigation }) => ({
|
navigationOptions: ({ navigation }) => ({
|
||||||
title: 'Explore',
|
title: 'Explore',
|
||||||
headerLeft: menuNavigationButton(navigation),
|
header: null
|
||||||
headerTitleStyle: discoverStyle.titleText
|
}),
|
||||||
})
|
|
||||||
},
|
},
|
||||||
File: {
|
File: {
|
||||||
screen: FilePage,
|
screen: FilePage,
|
||||||
|
@ -81,18 +80,19 @@ const discoverStack = createStackNavigator({
|
||||||
Search: {
|
Search: {
|
||||||
screen: SearchPage,
|
screen: SearchPage,
|
||||||
navigationOptions: ({ navigation }) => ({
|
navigationOptions: ({ navigation }) => ({
|
||||||
headerTitleStyle: discoverStyle.titleText
|
header: null
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
headerMode: 'screen'
|
headerMode: 'screen',
|
||||||
|
transitionConfig: () => ({ screenInterpolator: () => null }),
|
||||||
});
|
});
|
||||||
|
|
||||||
discoverStack.navigationOptions = ({ navigation }) => {
|
discoverStack.navigationOptions = ({ navigation }) => {
|
||||||
let drawerLockMode = 'unlocked';
|
let drawerLockMode = 'unlocked';
|
||||||
if (navigation.state.index > 0) {
|
/*if (navigation.state.index > 0) {
|
||||||
drawerLockMode = 'locked-closed';
|
drawerLockMode = 'locked-closed';
|
||||||
}
|
}*/
|
||||||
|
|
||||||
return {
|
return {
|
||||||
drawerLockMode
|
drawerLockMode
|
||||||
|
@ -104,8 +104,7 @@ const trendingStack = createStackNavigator({
|
||||||
screen: TrendingPage,
|
screen: TrendingPage,
|
||||||
navigationOptions: ({ navigation }) => ({
|
navigationOptions: ({ navigation }) => ({
|
||||||
title: 'Trending',
|
title: 'Trending',
|
||||||
headerLeft: menuNavigationButton(navigation),
|
header: null
|
||||||
headerTitleStyle: discoverStyle.titleText
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -115,8 +114,7 @@ const myLbryStack = createStackNavigator({
|
||||||
screen: DownloadsPage,
|
screen: DownloadsPage,
|
||||||
navigationOptions: ({ navigation }) => ({
|
navigationOptions: ({ navigation }) => ({
|
||||||
title: 'Downloads',
|
title: 'Downloads',
|
||||||
headerLeft: menuNavigationButton(navigation),
|
header: null
|
||||||
headerTitleStyle: discoverStyle.titleText
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -126,8 +124,7 @@ const mySubscriptionsStack = createStackNavigator({
|
||||||
screen: SubscriptionsPage,
|
screen: SubscriptionsPage,
|
||||||
navigationOptions: ({ navigation }) => ({
|
navigationOptions: ({ navigation }) => ({
|
||||||
title: 'Subscriptions',
|
title: 'Subscriptions',
|
||||||
headerLeft: menuNavigationButton(navigation),
|
header: null
|
||||||
headerTitleStyle: discoverStyle.titleText
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -137,8 +134,7 @@ const rewardsStack = createStackNavigator({
|
||||||
screen: RewardsPage,
|
screen: RewardsPage,
|
||||||
navigationOptions: ({ navigation }) => ({
|
navigationOptions: ({ navigation }) => ({
|
||||||
title: 'Rewards',
|
title: 'Rewards',
|
||||||
headerLeft: menuNavigationButton(navigation),
|
header: null
|
||||||
headerTitleStyle: discoverStyle.titleText
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -148,20 +144,19 @@ const walletStack = createStackNavigator({
|
||||||
screen: WalletPage,
|
screen: WalletPage,
|
||||||
navigationOptions: ({ navigation }) => ({
|
navigationOptions: ({ navigation }) => ({
|
||||||
title: 'Wallet',
|
title: 'Wallet',
|
||||||
headerLeft: menuNavigationButton(navigation),
|
header: null
|
||||||
headerTitleStyle: discoverStyle.titleText
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
TransactionHistory: {
|
TransactionHistory: {
|
||||||
screen: TransactionHistoryPage,
|
screen: TransactionHistoryPage,
|
||||||
navigationOptions: {
|
navigationOptions: {
|
||||||
title: 'Transaction History',
|
title: 'Transaction History',
|
||||||
drawerLockMode: 'locked-closed',
|
header: null
|
||||||
headerTitleStyle: discoverStyle.titleText
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
headerMode: 'screen'
|
headerMode: 'screen',
|
||||||
|
transitionConfig: () => ({ screenInterpolator: () => null }),
|
||||||
});
|
});
|
||||||
|
|
||||||
const drawer = createDrawerNavigator({
|
const drawer = createDrawerNavigator({
|
||||||
|
|
|
@ -2,9 +2,11 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { SEARCH_TYPES, isNameValid, isURIValid, normalizeURI } from 'lbry-redux';
|
import { SEARCH_TYPES, isNameValid, isURIValid, normalizeURI } from 'lbry-redux';
|
||||||
import { FlatList, Keyboard, TextInput, View } from 'react-native';
|
import { FlatList, Keyboard, TextInput, View } from 'react-native';
|
||||||
import { navigateToUri } from '../../utils/helper';
|
import { navigateToUri } from 'utils/helper';
|
||||||
import UriBarItem from './internal/uri-bar-item';
|
import UriBarItem from './internal/uri-bar-item';
|
||||||
import uriBarStyle from '../../styles/uriBar';
|
import NavigationButton from 'component/navigationButton';
|
||||||
|
import discoverStyle from 'styles/discover';
|
||||||
|
import uriBarStyle from 'styles/uriBar';
|
||||||
|
|
||||||
class UriBar extends React.PureComponent {
|
class UriBar extends React.PureComponent {
|
||||||
static INPUT_TIMEOUT = 500;
|
static INPUT_TIMEOUT = 500;
|
||||||
|
@ -93,17 +95,13 @@ class UriBar extends React.PureComponent {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={style}>
|
<View style={style}>
|
||||||
{this.state.focused && (
|
|
||||||
<View style={uriBarStyle.suggestions}>
|
|
||||||
<FlatList style={uriBarStyle.suggestionList}
|
|
||||||
data={suggestions}
|
|
||||||
keyboardShouldPersistTaps={'handled'}
|
|
||||||
keyExtractor={(item, value) => item.value}
|
|
||||||
renderItem={({item}) => <UriBarItem item={item}
|
|
||||||
navigation={navigation}
|
|
||||||
onPress={() => this.handleItemPress(item)} />} />
|
|
||||||
</View>)}
|
|
||||||
<View style={uriBarStyle.uriContainer}>
|
<View style={uriBarStyle.uriContainer}>
|
||||||
|
<NavigationButton
|
||||||
|
name="bars"
|
||||||
|
size={24}
|
||||||
|
style={uriBarStyle.drawerMenuButton}
|
||||||
|
iconStyle={discoverStyle.drawerHamburger}
|
||||||
|
onPress={() => navigation.openDrawer() } />
|
||||||
<TextInput ref={(ref) => { this.textInput = ref }}
|
<TextInput ref={(ref) => { this.textInput = ref }}
|
||||||
style={uriBarStyle.uriText}
|
style={uriBarStyle.uriText}
|
||||||
onLayout={() => { this.setSelection(); }}
|
onLayout={() => { this.setSelection(); }}
|
||||||
|
@ -143,6 +141,19 @@ class UriBar extends React.PureComponent {
|
||||||
}
|
}
|
||||||
}}/>
|
}}/>
|
||||||
</View>
|
</View>
|
||||||
|
{this.state.focused && (
|
||||||
|
<View style={uriBarStyle.suggestions}>
|
||||||
|
<FlatList style={uriBarStyle.suggestionList}
|
||||||
|
data={suggestions}
|
||||||
|
keyboardShouldPersistTaps={'handled'}
|
||||||
|
keyExtractor={(item, value) => item.value}
|
||||||
|
renderItem={({item}) => (
|
||||||
|
<UriBarItem
|
||||||
|
item={item}
|
||||||
|
navigation={navigation}
|
||||||
|
onPress={() => this.handleItemPress(item)}
|
||||||
|
/>)} />
|
||||||
|
</View>)}
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,6 +158,7 @@ class DiscoverPage extends React.PureComponent {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={discoverStyle.container}>
|
<View style={discoverStyle.container}>
|
||||||
|
<UriBar navigation={navigation} />
|
||||||
<RewardSummary navigation={navigation} />
|
<RewardSummary navigation={navigation} />
|
||||||
{!hasContent && fetchingFeaturedUris && (
|
{!hasContent && fetchingFeaturedUris && (
|
||||||
<View style={discoverStyle.busyContainer}>
|
<View style={discoverStyle.busyContainer}>
|
||||||
|
@ -186,7 +187,6 @@ class DiscoverPage extends React.PureComponent {
|
||||||
/>)
|
/>)
|
||||||
}
|
}
|
||||||
<FloatingWalletBalance navigation={navigation} />
|
<FloatingWalletBalance navigation={navigation} />
|
||||||
<UriBar navigation={navigation} />
|
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ class DownloadsPage extends React.PureComponent {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={downloadsStyle.container}>
|
<View style={downloadsStyle.container}>
|
||||||
|
<UriBar navigation={navigation} />
|
||||||
{!fetching && !hasDownloads &&
|
{!fetching && !hasDownloads &&
|
||||||
<View style={downloadsStyle.busyContainer}>
|
<View style={downloadsStyle.busyContainer}>
|
||||||
<Text style={downloadsStyle.noDownloadsText}>You have not downloaded anything from LBRY yet.</Text>
|
<Text style={downloadsStyle.noDownloadsText}>You have not downloaded anything from LBRY yet.</Text>
|
||||||
|
@ -69,7 +70,6 @@ class DownloadsPage extends React.PureComponent {
|
||||||
/>
|
/>
|
||||||
</View>}
|
</View>}
|
||||||
<FloatingWalletBalance navigation={navigation} />
|
<FloatingWalletBalance navigation={navigation} />
|
||||||
<UriBar navigation={navigation} />
|
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -480,6 +480,7 @@ class FilePage extends React.PureComponent {
|
||||||
|
|
||||||
innerContent = (
|
innerContent = (
|
||||||
<View style={filePageStyle.pageContainer}>
|
<View style={filePageStyle.pageContainer}>
|
||||||
|
{!this.state.fullscreenMode && <UriBar value={uri} navigation={navigation} />}
|
||||||
{this.state.showWebView && isWebViewable && <WebView source={{ uri: localFileUri }}
|
{this.state.showWebView && isWebViewable && <WebView source={{ uri: localFileUri }}
|
||||||
style={filePageStyle.viewer} />}
|
style={filePageStyle.viewer} />}
|
||||||
|
|
||||||
|
@ -624,7 +625,6 @@ class FilePage extends React.PureComponent {
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
{!this.state.fullscreenMode && <FloatingWalletBalance navigation={navigation} />}
|
{!this.state.fullscreenMode && <FloatingWalletBalance navigation={navigation} />}
|
||||||
{!this.state.fullscreenMode && <UriBar value={uri} navigation={navigation} />}
|
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,14 +7,15 @@ import {
|
||||||
Text,
|
Text,
|
||||||
View
|
View
|
||||||
} from 'react-native';
|
} from 'react-native';
|
||||||
import Colors from '../../styles/colors';
|
import Colors from 'styles/colors';
|
||||||
import Link from '../../component/link';
|
import Link from 'component/link';
|
||||||
import CustomRewardCard from '../../component/customRewardCard';
|
import CustomRewardCard from 'component/customRewardCard';
|
||||||
import PhoneNumberRewardSubcard from '../../component/phoneNumberRewardSubcard';
|
import PhoneNumberRewardSubcard from 'component/phoneNumberRewardSubcard';
|
||||||
import EmailRewardSubcard from '../../component/emailRewardSubcard';
|
import EmailRewardSubcard from 'component/emailRewardSubcard';
|
||||||
import PageHeader from '../../component/pageHeader';
|
import PageHeader from 'component/pageHeader';
|
||||||
import RewardCard from '../../component/rewardCard';
|
import RewardCard from 'component/rewardCard';
|
||||||
import rewardStyle from '../../styles/reward';
|
import UriBar from 'component/uriBar';
|
||||||
|
import rewardStyle from 'styles/reward';
|
||||||
|
|
||||||
class RewardsPage extends React.PureComponent {
|
class RewardsPage extends React.PureComponent {
|
||||||
state = {
|
state = {
|
||||||
|
@ -134,10 +135,11 @@ class RewardsPage extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { user } = this.props;
|
const { user, navigation } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={rewardStyle.container}>
|
<View style={rewardStyle.container}>
|
||||||
|
<UriBar navigation={navigation} />
|
||||||
<ScrollView
|
<ScrollView
|
||||||
keyboardShouldPersistTaps={'handled'}
|
keyboardShouldPersistTaps={'handled'}
|
||||||
style={rewardStyle.scrollContainer}
|
style={rewardStyle.scrollContainer}
|
||||||
|
|
|
@ -39,6 +39,9 @@ class SearchPage extends React.PureComponent {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={searchStyle.container}>
|
<View style={searchStyle.container}>
|
||||||
|
<UriBar value={searchQuery}
|
||||||
|
navigation={navigation}
|
||||||
|
onSearchSubmitted={(keywords) => search(keywords)} />
|
||||||
{!isSearching && (!uris || uris.length === 0) &&
|
{!isSearching && (!uris || uris.length === 0) &&
|
||||||
<Text style={searchStyle.noResultsText}>No results to display.</Text>}
|
<Text style={searchStyle.noResultsText}>No results to display.</Text>}
|
||||||
<ScrollView style={searchStyle.scrollContainer} contentContainerStyle={searchStyle.scrollPadding}>
|
<ScrollView style={searchStyle.scrollContainer} contentContainerStyle={searchStyle.scrollPadding}>
|
||||||
|
@ -52,9 +55,6 @@ class SearchPage extends React.PureComponent {
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
{isSearching && <ActivityIndicator size="large" color={Colors.LbryGreen} style={searchStyle.loading} /> }
|
{isSearching && <ActivityIndicator size="large" color={Colors.LbryGreen} style={searchStyle.loading} /> }
|
||||||
<FloatingWalletBalance navigation={navigation} />
|
<FloatingWalletBalance navigation={navigation} />
|
||||||
<UriBar value={searchQuery}
|
|
||||||
navigation={navigation}
|
|
||||||
onSearchSubmitted={(keywords) => search(keywords)} />
|
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,90 +67,91 @@ class SubscriptionsPage extends React.PureComponent {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={subscriptionsStyle.container}>
|
<View style={subscriptionsStyle.container}>
|
||||||
|
<UriBar navigation={navigation} />
|
||||||
|
|
||||||
{hasSubscriptions && !loading &&
|
{hasSubscriptions && !loading &&
|
||||||
<View style={subscriptionsStyle.viewModeRow}>
|
<View style={subscriptionsStyle.viewModeRow}>
|
||||||
<Link
|
<Link
|
||||||
text={'All Subscriptions'}
|
text={'All Subscriptions'}
|
||||||
style={[subscriptionsStyle.viewModeLink,
|
style={[subscriptionsStyle.viewModeLink,
|
||||||
((viewMode === Constants.SUBSCRIPTIONS_VIEW_ALL) ? subscriptionsStyle.activeMode : subscriptionsStyle.inactiveMode)]}
|
((viewMode === Constants.SUBSCRIPTIONS_VIEW_ALL) ? subscriptionsStyle.activeMode : subscriptionsStyle.inactiveMode)]}
|
||||||
onPress={() => this.changeViewMode(Constants.SUBSCRIPTIONS_VIEW_ALL)}
|
onPress={() => this.changeViewMode(Constants.SUBSCRIPTIONS_VIEW_ALL)}
|
||||||
/>
|
/>
|
||||||
<Link
|
<Link
|
||||||
text={'Latest Only'}
|
text={'Latest Only'}
|
||||||
style={[subscriptionsStyle.viewModeLink,
|
style={[subscriptionsStyle.viewModeLink,
|
||||||
((viewMode === Constants.SUBSCRIPTIONS_VIEW_LATEST_FIRST) ? subscriptionsStyle.activeMode : subscriptionsStyle.inactiveMode)]}
|
((viewMode === Constants.SUBSCRIPTIONS_VIEW_LATEST_FIRST) ? subscriptionsStyle.activeMode : subscriptionsStyle.inactiveMode)]}
|
||||||
onPress={() => this.changeViewMode(Constants.SUBSCRIPTIONS_VIEW_LATEST_FIRST)}
|
onPress={() => this.changeViewMode(Constants.SUBSCRIPTIONS_VIEW_LATEST_FIRST)}
|
||||||
/>
|
/>
|
||||||
</View>}
|
|
||||||
|
|
||||||
{(hasSubscriptions && !loading) &&
|
|
||||||
<View style={subscriptionsStyle.container}>
|
|
||||||
{(viewMode === Constants.SUBSCRIPTIONS_VIEW_ALL) &&
|
|
||||||
<FlatList
|
|
||||||
style={subscriptionsStyle.scrollContainer}
|
|
||||||
contentContainerStyle={subscriptionsStyle.scrollPadding}
|
|
||||||
renderItem={ ({item}) => (
|
|
||||||
<FileItem
|
|
||||||
style={subscriptionsStyle.fileItem}
|
|
||||||
mediaStyle={discoverStyle.fileItemMedia}
|
|
||||||
key={item}
|
|
||||||
uri={uriFromFileInfo(item)}
|
|
||||||
navigation={navigation}
|
|
||||||
compactView={false}
|
|
||||||
showDetails={true} />
|
|
||||||
)
|
|
||||||
}
|
|
||||||
data={allSubscriptions.sort((a, b) => {
|
|
||||||
return b.height - a.height;
|
|
||||||
})}
|
|
||||||
keyExtractor={(item, index) => uriFromFileInfo(item)} />}
|
|
||||||
|
|
||||||
{(viewMode === Constants.SUBSCRIPTIONS_VIEW_LATEST_FIRST) &&
|
|
||||||
<View style={subscriptionsStyle.container}>
|
|
||||||
{unreadSubscriptions.length ?
|
|
||||||
(<ScrollView
|
|
||||||
style={subscriptionsStyle.scrollContainer}
|
|
||||||
contentContainerStyle={subscriptionsStyle.scrollPadding}>
|
|
||||||
{unreadSubscriptions.map(({ channel, uris }) => {
|
|
||||||
const { claimName } = parseURI(channel);
|
|
||||||
return uris.map(uri => (
|
|
||||||
<FileItem
|
|
||||||
style={subscriptionsStyle.fileItem}
|
|
||||||
mediaStyle={discoverStyle.fileItemMedia}
|
|
||||||
key={uri}
|
|
||||||
uri={uri}
|
|
||||||
navigation={navigation}
|
|
||||||
compactView={false}
|
|
||||||
showDetails={true} />));
|
|
||||||
})}
|
|
||||||
</ScrollView>) :
|
|
||||||
(<View style={subscriptionsStyle.contentContainer}>
|
|
||||||
<Text style={subscriptionsStyle.contentText}>All caught up! You might like the channels below.</Text>
|
|
||||||
<SuggestedSubscriptions navigation={navigation} />
|
|
||||||
</View>)
|
|
||||||
}
|
|
||||||
</View>}
|
</View>}
|
||||||
|
|
||||||
</View>}
|
{(hasSubscriptions && !loading) &&
|
||||||
|
<View style={subscriptionsStyle.subContainer}>
|
||||||
|
<UriBar navigation={navigation} />
|
||||||
|
{(viewMode === Constants.SUBSCRIPTIONS_VIEW_ALL) &&
|
||||||
|
<FlatList
|
||||||
|
style={subscriptionsStyle.scrollContainer}
|
||||||
|
contentContainerStyle={subscriptionsStyle.scrollPadding}
|
||||||
|
renderItem={ ({item}) => (
|
||||||
|
<FileItem
|
||||||
|
style={subscriptionsStyle.fileItem}
|
||||||
|
mediaStyle={discoverStyle.fileItemMedia}
|
||||||
|
key={item}
|
||||||
|
uri={uriFromFileInfo(item)}
|
||||||
|
navigation={navigation}
|
||||||
|
compactView={false}
|
||||||
|
showDetails={true} />
|
||||||
|
)
|
||||||
|
}
|
||||||
|
data={allSubscriptions.sort((a, b) => {
|
||||||
|
return b.height - a.height;
|
||||||
|
})}
|
||||||
|
keyExtractor={(item, index) => uriFromFileInfo(item)} />}
|
||||||
|
|
||||||
{(hasSubscriptions && loading) &&
|
{(viewMode === Constants.SUBSCRIPTIONS_VIEW_LATEST_FIRST) &&
|
||||||
<View style={subscriptionsStyle.busyContainer}>
|
<View style={subscriptionsStyle.subContainer}>
|
||||||
<ActivityIndicator size="large" color={Colors.LbryGreen} style={subscriptionsStyle.loading} />
|
{unreadSubscriptions.length ?
|
||||||
</View>
|
(<ScrollView
|
||||||
}
|
style={subscriptionsStyle.scrollContainer}
|
||||||
|
contentContainerStyle={subscriptionsStyle.scrollPadding}>
|
||||||
|
{unreadSubscriptions.map(({ channel, uris }) => {
|
||||||
|
const { claimName } = parseURI(channel);
|
||||||
|
return uris.map(uri => (
|
||||||
|
<FileItem
|
||||||
|
style={subscriptionsStyle.fileItem}
|
||||||
|
mediaStyle={discoverStyle.fileItemMedia}
|
||||||
|
key={uri}
|
||||||
|
uri={uri}
|
||||||
|
navigation={navigation}
|
||||||
|
compactView={false}
|
||||||
|
showDetails={true} />));
|
||||||
|
})}
|
||||||
|
</ScrollView>) :
|
||||||
|
(<View style={subscriptionsStyle.contentContainer}>
|
||||||
|
<Text style={subscriptionsStyle.contentText}>All caught up! You might like the channels below.</Text>
|
||||||
|
<SuggestedSubscriptions navigation={navigation} />
|
||||||
|
</View>)
|
||||||
|
}
|
||||||
|
</View>}
|
||||||
|
|
||||||
{(!hasSubscriptions && !loading) &&
|
|
||||||
<View style={subscriptionsStyle.container}>
|
|
||||||
<Text style={subscriptionsStyle.infoText}>
|
|
||||||
You are not subscribed to any channels at the moment. Here are some channels that we think you might enjoy.
|
|
||||||
</Text>
|
|
||||||
{loadingSuggested && <ActivityIndicator size="large" colors={Colors.LbryGreen} style={subscriptionsStyle.loading} />}
|
|
||||||
{!loadingSuggested && <SuggestedSubscriptions navigation={navigation} />}
|
|
||||||
</View>}
|
</View>}
|
||||||
|
|
||||||
|
{(hasSubscriptions && loading) &&
|
||||||
|
<View style={subscriptionsStyle.busyContainer}>
|
||||||
|
<ActivityIndicator size="large" color={Colors.LbryGreen} style={subscriptionsStyle.loading} />
|
||||||
|
</View>
|
||||||
|
}
|
||||||
|
|
||||||
|
{(!hasSubscriptions && !loading) &&
|
||||||
|
<View style={subscriptionsStyle.subContainer}>
|
||||||
|
<Text style={subscriptionsStyle.infoText}>
|
||||||
|
You are not subscribed to any channels at the moment. Here are some channels that we think you might enjoy.
|
||||||
|
</Text>
|
||||||
|
{loadingSuggested && <ActivityIndicator size="large" colors={Colors.LbryGreen} style={subscriptionsStyle.loading} />}
|
||||||
|
{!loadingSuggested && <SuggestedSubscriptions navigation={navigation} />}
|
||||||
|
</View>}
|
||||||
|
|
||||||
<FloatingWalletBalance navigation={navigation} />
|
<FloatingWalletBalance navigation={navigation} />
|
||||||
<UriBar navigation={navigation} />
|
|
||||||
</View>
|
</View>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { View, ScrollView, Text } from 'react-native';
|
import { View, ScrollView, Text } from 'react-native';
|
||||||
import TransactionList from '../../component/transactionList';
|
import TransactionList from 'component/transactionList';
|
||||||
import walletStyle from '../../styles/wallet';
|
import UriBar from 'component/uriBar';
|
||||||
|
import walletStyle from 'styles/wallet';
|
||||||
|
|
||||||
class TransactionHistoryPage extends React.PureComponent {
|
class TransactionHistoryPage extends React.PureComponent {
|
||||||
componentWillMount() {
|
componentWillMount() {
|
||||||
|
@ -16,19 +17,22 @@ class TransactionHistoryPage extends React.PureComponent {
|
||||||
const { fetchingTransactions, transactions, navigation } = this.props;
|
const { fetchingTransactions, transactions, navigation } = this.props;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ScrollView>
|
<View>
|
||||||
<View style={walletStyle.historyList}>
|
<UriBar navigation={navigation} />
|
||||||
{fetchingTransactions && !transactions.length && (
|
<ScrollView style={walletStyle.transactionHistoryScroll}>
|
||||||
<Text style={walletStyle.infoText}>Loading transactions...</Text>
|
<View style={walletStyle.historyList}>
|
||||||
)}
|
{fetchingTransactions && !transactions.length && (
|
||||||
{!fetchingTransactions && transactions.length === 0 && (
|
<Text style={walletStyle.infoText}>Loading transactions...</Text>
|
||||||
<Text style={walletStyle.infoText}>No transactions to list.</Text>
|
)}
|
||||||
)}
|
{!fetchingTransactions && transactions.length === 0 && (
|
||||||
{!fetchingTransactions && transactions && (transactions.length > 0) && (
|
<Text style={walletStyle.infoText}>No transactions to list.</Text>
|
||||||
<TransactionList navigation={navigation} transactions={transactions} />
|
)}
|
||||||
)}
|
{!fetchingTransactions && transactions && (transactions.length > 0) && (
|
||||||
</View>
|
<TransactionList navigation={navigation} transactions={transactions} />
|
||||||
</ScrollView>
|
)}
|
||||||
|
</View>
|
||||||
|
</ScrollView>
|
||||||
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ class TrendingPage extends React.PureComponent {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={discoverStyle.container}>
|
<View style={discoverStyle.container}>
|
||||||
|
<UriBar navigation={navigation} />
|
||||||
{!hasContent && fetchingTrendingUris && (
|
{!hasContent && fetchingTrendingUris && (
|
||||||
<View style={discoverStyle.busyContainer}>
|
<View style={discoverStyle.busyContainer}>
|
||||||
<ActivityIndicator size="large" color={Colors.LbryGreen} />
|
<ActivityIndicator size="large" color={Colors.LbryGreen} />
|
||||||
|
@ -54,7 +55,6 @@ class TrendingPage extends React.PureComponent {
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
<FloatingWalletBalance navigation={navigation} />
|
<FloatingWalletBalance navigation={navigation} />
|
||||||
<UriBar navigation={navigation} />
|
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,8 @@ import WalletAddress from 'component/walletAddress';
|
||||||
import WalletBalance from 'component/walletBalance';
|
import WalletBalance from 'component/walletBalance';
|
||||||
import WalletSend from 'component/walletSend';
|
import WalletSend from 'component/walletSend';
|
||||||
import Button from 'component/button';
|
import Button from 'component/button';
|
||||||
import Link from 'component/link'
|
import Link from 'component/link';
|
||||||
|
import UriBar from 'component/uriBar';
|
||||||
import Constants from 'constants';
|
import Constants from 'constants';
|
||||||
import walletStyle from 'styles/wallet';
|
import walletStyle from 'styles/wallet';
|
||||||
|
|
||||||
|
@ -15,11 +16,12 @@ class WalletPage extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { understandsRisks, setClientSetting } = this.props;
|
const { understandsRisks, setClientSetting, navigation } = this.props;
|
||||||
|
|
||||||
if (!understandsRisks) {
|
if (!understandsRisks) {
|
||||||
return (
|
return (
|
||||||
<View>
|
<View>
|
||||||
|
<UriBar navigation={navigation} />
|
||||||
<View style={walletStyle.warning}>
|
<View style={walletStyle.warning}>
|
||||||
<Text style={walletStyle.warningText}>
|
<Text style={walletStyle.warningText}>
|
||||||
This is beta software. You may lose any LBC that you send to your wallet due to uninstallation, software bugs, deleted files, or malicious third-party software. You should not use this wallet as your primary wallet. If you understand the risks and you wish to continue, please tap the button below.
|
This is beta software. You may lose any LBC that you send to your wallet due to uninstallation, software bugs, deleted files, or malicious third-party software. You should not use this wallet as your primary wallet. If you understand the risks and you wish to continue, please tap the button below.
|
||||||
|
@ -32,18 +34,21 @@ class WalletPage extends React.PureComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ScrollView keyboardShouldPersistTaps={'handled'}>
|
<View>
|
||||||
<View style={walletStyle.warningCard}>
|
<UriBar navigation={navigation} />
|
||||||
<Text style={walletStyle.warningText}>
|
<ScrollView keyboardShouldPersistTaps={'handled'}>
|
||||||
Please backup your wallet file using the instructions at <Link style={walletStyle.warningText} text="https://lbry.io/faq/how-to-backup-wallet#android" href="https://lbry.io/faq/how-to-backup-wallet#android" />.
|
<View style={walletStyle.warningCard}>
|
||||||
</Text>
|
<Text style={walletStyle.warningText}>
|
||||||
</View>
|
Please backup your wallet file using the instructions at <Link style={walletStyle.warningText} text="https://lbry.io/faq/how-to-backup-wallet#android" href="https://lbry.io/faq/how-to-backup-wallet#android" />.
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
|
||||||
<WalletBalance />
|
<WalletBalance />
|
||||||
<WalletAddress />
|
<WalletAddress />
|
||||||
<WalletSend />
|
<WalletSend />
|
||||||
<TransactionListRecent navigation={this.props.navigation} />
|
<TransactionListRecent navigation={this.props.navigation} />
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,8 +11,7 @@ const channelPageStyle = StyleSheet.create({
|
||||||
},
|
},
|
||||||
fileList: {
|
fileList: {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
paddingTop: 30,
|
paddingTop: 30
|
||||||
marginBottom: 60,
|
|
||||||
},
|
},
|
||||||
fileListContent: {
|
fileListContent: {
|
||||||
paddingBottom: 16
|
paddingBottom: 16
|
||||||
|
|
|
@ -18,12 +18,12 @@ const discoverStyle = StyleSheet.create({
|
||||||
},
|
},
|
||||||
scrollContainer: {
|
scrollContainer: {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
marginBottom: 60,
|
marginTop: 60,
|
||||||
paddingTop: 12
|
paddingTop: 12
|
||||||
},
|
},
|
||||||
trendingContainer: {
|
trendingContainer: {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
marginBottom: 60,
|
marginTop: 60,
|
||||||
paddingTop: 30
|
paddingTop: 30
|
||||||
},
|
},
|
||||||
busyContainer: {
|
busyContainer: {
|
||||||
|
|
|
@ -11,7 +11,8 @@ const downloadsStyle = StyleSheet.create({
|
||||||
flexDirection: 'row'
|
flexDirection: 'row'
|
||||||
},
|
},
|
||||||
subContainer: {
|
subContainer: {
|
||||||
flex: 1
|
flex: 1,
|
||||||
|
marginTop: 60
|
||||||
},
|
},
|
||||||
itemList: {
|
itemList: {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
|
|
|
@ -22,8 +22,7 @@ const filePageStyle = StyleSheet.create({
|
||||||
marginBottom: 20
|
marginBottom: 20
|
||||||
},
|
},
|
||||||
innerPageContainer: {
|
innerPageContainer: {
|
||||||
flex: 1,
|
flex: 1
|
||||||
marginBottom: 60
|
|
||||||
},
|
},
|
||||||
innerPageContainerFsMode: {
|
innerPageContainerFsMode: {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
|
@ -32,7 +31,8 @@ const filePageStyle = StyleSheet.create({
|
||||||
mediaContainer: {
|
mediaContainer: {
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
width: screenWidth,
|
width: screenWidth,
|
||||||
height: containedMediaHeightWithControls
|
height: containedMediaHeightWithControls,
|
||||||
|
marginTop: 60
|
||||||
},
|
},
|
||||||
emptyClaimText: {
|
emptyClaimText: {
|
||||||
fontFamily: 'Inter-UI-Regular',
|
fontFamily: 'Inter-UI-Regular',
|
||||||
|
@ -116,10 +116,12 @@ const filePageStyle = StyleSheet.create({
|
||||||
containedPlayer: {
|
containedPlayer: {
|
||||||
width: '100%',
|
width: '100%',
|
||||||
height: containedMediaHeightWithControls,
|
height: containedMediaHeightWithControls,
|
||||||
|
top: 60
|
||||||
},
|
},
|
||||||
containedPlayerLandscape: {
|
containedPlayerLandscape: {
|
||||||
width: '100%',
|
width: '100%',
|
||||||
height: '100%'
|
height: '100%',
|
||||||
|
top: 60
|
||||||
},
|
},
|
||||||
fullscreenPlayer: {
|
fullscreenPlayer: {
|
||||||
width: '100%',
|
width: '100%',
|
||||||
|
|
|
@ -27,7 +27,7 @@ const floatingButtonStyle = StyleSheet.create({
|
||||||
},
|
},
|
||||||
bottomRight: {
|
bottomRight: {
|
||||||
right: 10,
|
right: 10,
|
||||||
bottom: 70
|
bottom: 10
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Platform, StyleSheet } from 'react-native';
|
import { Platform, StyleSheet } from 'react-native';
|
||||||
|
|
||||||
const STATUSBAR_HEIGHT = Platform.OS === 'ios' ? 20 : 0;
|
const STATUSBAR_HEIGHT = Platform.OS === 'ios' ? 20 : 0;
|
||||||
const TITLE_OFFSET = Platform.OS === 'ios' ? 70 : 56;
|
export const TITLE_OFFSET = Platform.OS === 'ios' ? 70 : 56;
|
||||||
|
|
||||||
let platformContainerStyles;
|
let platformContainerStyles;
|
||||||
if (Platform.OS === 'ios') {
|
if (Platform.OS === 'ios') {
|
||||||
|
|
|
@ -29,6 +29,9 @@ const rewardStyle = StyleSheet.create({
|
||||||
rewardsContainer: {
|
rewardsContainer: {
|
||||||
flex: 1
|
flex: 1
|
||||||
},
|
},
|
||||||
|
scrollContainer: {
|
||||||
|
marginTop: 60
|
||||||
|
},
|
||||||
scrollContentContainer: {
|
scrollContentContainer: {
|
||||||
paddingBottom: 16
|
paddingBottom: 16
|
||||||
},
|
},
|
||||||
|
|
|
@ -12,7 +12,7 @@ const searchStyle = StyleSheet.create({
|
||||||
height: '100%',
|
height: '100%',
|
||||||
paddingLeft: 16,
|
paddingLeft: 16,
|
||||||
paddingRight: 16,
|
paddingRight: 16,
|
||||||
marginBottom: 60
|
marginTop: 60
|
||||||
},
|
},
|
||||||
scrollPadding: {
|
scrollPadding: {
|
||||||
paddingBottom: 16
|
paddingBottom: 16
|
||||||
|
|
|
@ -11,6 +11,10 @@ const subscriptionsStyle = StyleSheet.create({
|
||||||
container: {
|
container: {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
},
|
},
|
||||||
|
subContainer: {
|
||||||
|
flex: 1,
|
||||||
|
marginTop: 60
|
||||||
|
},
|
||||||
busyContainer: {
|
busyContainer: {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
|
@ -19,8 +23,7 @@ const subscriptionsStyle = StyleSheet.create({
|
||||||
padding: 16
|
padding: 16
|
||||||
},
|
},
|
||||||
scrollContainer: {
|
scrollContainer: {
|
||||||
flex: 1,
|
flex: 1
|
||||||
marginBottom: 60
|
|
||||||
},
|
},
|
||||||
scrollPadding: {
|
scrollPadding: {
|
||||||
paddingTop: 24
|
paddingTop: 24
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
import { StyleSheet } from 'react-native';
|
import { StyleSheet } from 'react-native';
|
||||||
|
import { TITLE_OFFSET } from 'styles/pageHeader';
|
||||||
import Colors from './colors';
|
import Colors from './colors';
|
||||||
|
|
||||||
const uriBarStyle = StyleSheet.create({
|
const uriBarStyle = StyleSheet.create({
|
||||||
uriContainer: {
|
uriContainer: {
|
||||||
|
flexDirection: 'row',
|
||||||
backgroundColor: Colors.White,
|
backgroundColor: Colors.White,
|
||||||
padding: 8,
|
padding: 8,
|
||||||
alignSelf: 'flex-end',
|
alignSelf: 'flex-start',
|
||||||
height: 60,
|
height: 60,
|
||||||
width: '100%',
|
width: '100%',
|
||||||
shadowColor: Colors.Black,
|
shadowColor: Colors.Black,
|
||||||
|
@ -24,12 +26,12 @@ const uriBarStyle = StyleSheet.create({
|
||||||
borderRadius: 4,
|
borderRadius: 4,
|
||||||
fontFamily: 'Inter-UI-Regular',
|
fontFamily: 'Inter-UI-Regular',
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
width: '100%'
|
flex: 17
|
||||||
},
|
},
|
||||||
overlay: {
|
overlay: {
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
backgroundColor: 'transparent',
|
backgroundColor: 'transparent',
|
||||||
bottom: 0,
|
top: 0,
|
||||||
width: '100%',
|
width: '100%',
|
||||||
zIndex: 200,
|
zIndex: 200,
|
||||||
elevation: 16
|
elevation: 16
|
||||||
|
@ -51,7 +53,12 @@ const uriBarStyle = StyleSheet.create({
|
||||||
fontSize: 16,
|
fontSize: 16,
|
||||||
marginLeft: 12,
|
marginLeft: 12,
|
||||||
marginRight: 12
|
marginRight: 12
|
||||||
}
|
},
|
||||||
|
drawerMenuButton: {
|
||||||
|
height: '100%',
|
||||||
|
justifyContent: 'center',
|
||||||
|
flex: 3
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default uriBarStyle;
|
export default uriBarStyle;
|
||||||
|
|
|
@ -37,7 +37,7 @@ const walletStyle = StyleSheet.create({
|
||||||
backgroundColor: Colors.Orange,
|
backgroundColor: Colors.Orange,
|
||||||
padding: 16,
|
padding: 16,
|
||||||
marginLeft: 16,
|
marginLeft: 16,
|
||||||
marginTop: 16,
|
marginTop: 76,
|
||||||
marginRight: 16
|
marginRight: 16
|
||||||
},
|
},
|
||||||
transactionsCard: {
|
transactionsCard: {
|
||||||
|
@ -132,7 +132,8 @@ const walletStyle = StyleSheet.create({
|
||||||
warning: {
|
warning: {
|
||||||
backgroundColor: Colors.Orange,
|
backgroundColor: Colors.Orange,
|
||||||
padding: 16,
|
padding: 16,
|
||||||
margin: 16
|
margin: 16,
|
||||||
|
marginTop: 76
|
||||||
},
|
},
|
||||||
warningText: {
|
warningText: {
|
||||||
color: Colors.White,
|
color: Colors.White,
|
||||||
|
@ -161,6 +162,9 @@ const walletStyle = StyleSheet.create({
|
||||||
},
|
},
|
||||||
bottomMarginLarge: {
|
bottomMarginLarge: {
|
||||||
marginBottom: 24
|
marginBottom: 24
|
||||||
|
},
|
||||||
|
transactionHistoryScroll: {
|
||||||
|
marginTop: 60
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue