|
1 | 1 | import React from 'react';
|
2 | 2 | import { Image, StyleSheet, Text, View } from 'react-native';
|
3 |
| -import { GroupedWeather } from '../api/group'; |
4 | 3 | import { formatTemperature } from '../utils';
|
5 | 4 | import { iconUrl } from '../api/api';
|
| 5 | +import { useCityWeather } from '../data/queries'; |
| 6 | +import { RouteProp, useRoute } from '@react-navigation/native'; |
| 7 | +import { RootStackParamList } from '../../App'; |
6 | 8 |
|
7 |
| -type Props = { |
8 |
| - city: GroupedWeather; |
9 |
| -}; |
10 |
| - |
11 |
| -export default function CityWeather({ city }: Props) { |
| 9 | +export default function CityWeather() { |
| 10 | + const route = useRoute<RouteProp<RootStackParamList, 'Details'>>(); |
| 11 | + const { data, isPending, isError, error } = useCityWeather(route.params?.id); |
| 12 | + if (isPending) { |
| 13 | + return <Text>loading...</Text>; |
| 14 | + } |
| 15 | + if (isError) { |
| 16 | + return <Text>{error.message}</Text>; |
| 17 | + } |
| 18 | + if (!data) { |
| 19 | + return <Text>No data</Text>; |
| 20 | + } |
12 | 21 | return (
|
13 | 22 | <View style={styles.wrapper}>
|
14 | 23 | <View>
|
15 | 24 | <View style={styles.tempWrapper}>
|
16 |
| - <Text style={styles.temp}>{formatTemperature(city.main.temp)}</Text> |
| 25 | + <Text style={styles.temp}>{formatTemperature(data.main.temp)}</Text> |
17 | 26 | <Image
|
18 |
| - source={{ uri: iconUrl(city.weather[0].icon) }} |
| 27 | + source={{ uri: iconUrl(data.weather[0].icon) }} |
19 | 28 | style={styles.icon}
|
20 | 29 | />
|
21 | 30 | </View>
|
22 | 31 | </View>
|
23 | 32 | <View style={styles.details}>
|
24 |
| - <Text>Feels like {Math.round(city.main.feels_like - 273.15)}°</Text> |
25 |
| - <Text>Humidity: {city.main.humidity}%</Text> |
26 |
| - <Text>Wind: {city.wind.speed} km/h</Text> |
| 33 | + <Text>Feels like {Math.round(data.main.feels_like - 273.15)}°</Text> |
| 34 | + <Text>Humidity: {data.main.humidity}%</Text> |
| 35 | + <Text>Wind: {data.wind.speed} km/h</Text> |
27 | 36 | </View>
|
28 | 37 | </View>
|
29 | 38 | );
|
|
0 commit comments