mirror of
				https://github.com/karl0ss/homepage.git
				synced 2025-10-31 14:34:00 +00:00 
			
		
		
		
	improve weather widget error state
This commit is contained in:
		
							parent
							
								
									89d0478443
								
							
						
					
					
						commit
						5711b22b4e
					
				| @ -3,7 +3,5 @@ import mapIcon from "utils/condition-map"; | ||||
| export default function Icon({ condition, timeOfDay }) { | ||||
|   const Icon = mapIcon(condition, timeOfDay); | ||||
| 
 | ||||
|   return ( | ||||
|     <Icon className="mt-2 w-10 h-10 text-theme-800 dark:text-theme-200"></Icon> | ||||
|   ); | ||||
|   return <Icon className="w-10 h-10 text-theme-800 dark:text-theme-200"></Icon>; | ||||
| } | ||||
|  | ||||
| @ -1,40 +1,41 @@ | ||||
| import useSWR from "swr"; | ||||
| import { BiError } from "react-icons/bi"; | ||||
| 
 | ||||
| import Icon from "./icon"; | ||||
| 
 | ||||
| export default function Weather({ options }) { | ||||
|   const { data, error } = useSWR( | ||||
|     `/api/widgets/weather?lat=${options.latitude}&lon=${options.longitude}&apiKey=${options.apiKey}&duration=${options.cache}`, | ||||
|     { | ||||
|       revalidateOnFocus: false, | ||||
|       revalidateOnReconnect: false, | ||||
|     } | ||||
|     `/api/widgets/weather?lat=${options.latitude}&lon=${options.longitude}&apiKey=${options.apiKey}&duration=${options.cache}` | ||||
|   ); | ||||
| 
 | ||||
|   if (error) { | ||||
|     return <div>failed to load</div>; | ||||
|     return ( | ||||
|       <div className="order-last grow flex-none flex flex-row items-center justify-end"> | ||||
|         <BiError className="w-8 h-8 text-theme-800 dark:text-theme-200" /> | ||||
|         <div className="flex flex-col ml-3 text-left"> | ||||
|           <span className="text-theme-800 dark:text-theme-200 text-sm">API</span> | ||||
|           <span className="text-theme-800 dark:text-theme-200 text-xs">Error</span> | ||||
|         </div> | ||||
|       </div> | ||||
|     ); | ||||
|   } | ||||
| 
 | ||||
|   if (!data) { | ||||
|     return <div className="flex flex-col items-center justify-center"></div>; | ||||
|     return <div className="order-last grow flex-none flex flex-row items-center justify-end"></div>; | ||||
|   } | ||||
| 
 | ||||
|   if (data.error) { | ||||
|     return <div className="flex flex-col items-center justify-center"></div>; | ||||
|     return <div className="order-last grow flex-none flex flex-row items-center justify-end"></div>; | ||||
|   } | ||||
| 
 | ||||
|   return ( | ||||
|     <div className="order-last grow flex-none flex flex-row items-center justify-end"> | ||||
|       <Icon | ||||
|         condition={data.current.condition.code} | ||||
|         timeOfDay={data.current.is_day ? "day" : "night"} | ||||
|       /> | ||||
|       <Icon condition={data.current.condition.code} timeOfDay={data.current.is_day ? "day" : "night"} /> | ||||
|       <div className="flex flex-col ml-3 text-left"> | ||||
|         <span className="text-theme-800 dark:text-theme-200 text-sm"> | ||||
|           {Math.round(data.current.temp_f)}° | ||||
|         </span> | ||||
|         <span className="text-theme-800 dark:text-theme-200 text-xs"> | ||||
|           {data.current.condition.text} | ||||
|           {options.units === "metric" ? data.current.temp_c : data.current.temp_f}° | ||||
|         </span> | ||||
|         <span className="text-theme-800 dark:text-theme-200 text-xs">{data.current.condition.text}</span> | ||||
|       </div> | ||||
|     </div> | ||||
|   ); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Ben Phelps
						Ben Phelps