mirror of
https://github.com/austinried/subtracks.git
synced 2025-12-28 01:19:27 +01:00
76 lines
2.1 KiB
TypeScript
76 lines
2.1 KiB
TypeScript
import GradientScrollView from '@app/components/GradientScrollView'
|
|
import Header from '@app/components/Header'
|
|
import ListItem from '@app/components/ListItem'
|
|
import { searchResultsAtom, useUpdateSearchResults } from '@app/state/music'
|
|
import colors from '@app/styles/colors'
|
|
import font from '@app/styles/font'
|
|
import { useAtomValue } from 'jotai/utils'
|
|
import React, { useState } from 'react'
|
|
import { StatusBar, StyleSheet, View, TextInput } from 'react-native'
|
|
|
|
const Search = () => {
|
|
const [text, setText] = useState('')
|
|
const updateSearch = useUpdateSearchResults()
|
|
const results = useAtomValue(searchResultsAtom)
|
|
|
|
const onSubmitEditing = () => {
|
|
console.log(text)
|
|
updateSearch(text)
|
|
}
|
|
|
|
return (
|
|
<GradientScrollView style={styles.scroll} contentContainerStyle={styles.scrollContentContainer}>
|
|
<View style={styles.content}>
|
|
<TextInput
|
|
style={styles.textInput}
|
|
placeholder="Search"
|
|
placeholderTextColor="grey"
|
|
selectionColor={colors.text.secondary}
|
|
value={text}
|
|
onChangeText={setText}
|
|
onSubmitEditing={onSubmitEditing}
|
|
/>
|
|
<Header>Artists</Header>
|
|
{results.artists.map(a => (
|
|
<ListItem key={a.id} item={a} showArt={true} showStar={false} />
|
|
))}
|
|
<Header>Albums</Header>
|
|
{results.albums.map(a => (
|
|
<ListItem key={a.id} item={a} showArt={true} showStar={false} subtitle={a.artist} />
|
|
))}
|
|
<Header>Songs</Header>
|
|
{results.songs.map(a => (
|
|
<ListItem key={a.id} item={a} showArt={true} showStar={false} subtitle={a.artist} />
|
|
))}
|
|
</View>
|
|
</GradientScrollView>
|
|
)
|
|
}
|
|
|
|
const styles = StyleSheet.create({
|
|
scroll: {
|
|
flex: 1,
|
|
},
|
|
scrollContentContainer: {
|
|
paddingTop: StatusBar.currentHeight,
|
|
},
|
|
content: {
|
|
paddingHorizontal: 20,
|
|
},
|
|
textInput: {
|
|
backgroundColor: '#515151',
|
|
fontFamily: font.regular,
|
|
fontSize: 18,
|
|
color: colors.text.primary,
|
|
marginTop: 20,
|
|
paddingHorizontal: 12,
|
|
},
|
|
itemText: {
|
|
color: colors.text.primary,
|
|
fontFamily: font.regular,
|
|
fontSize: 14,
|
|
},
|
|
})
|
|
|
|
export default Search
|