diff options
| author | Adam Mathes <adam@adammathes.com> | 2026-02-13 13:50:25 -0800 |
|---|---|---|
| committer | Adam Mathes <adam@adammathes.com> | 2026-02-13 13:50:25 -0800 |
| commit | e014ded82a630bd91b15be4307125f5580119f4d (patch) | |
| tree | 416712eef67ba5cac1c3e55780b80ab04c9aec47 /frontend/coverage/src/components/FeedList.tsx.html | |
| parent | e7f0e40b3563a56a06f5bedd3efd40b750e74521 (diff) | |
| download | neko-e014ded82a630bd91b15be4307125f5580119f4d.tar.gz neko-e014ded82a630bd91b15be4307125f5580119f4d.tar.bz2 neko-e014ded82a630bd91b15be4307125f5580119f4d.zip | |
Analyze page size and fix frontend tests
Diffstat (limited to 'frontend/coverage/src/components/FeedList.tsx.html')
| -rw-r--r-- | frontend/coverage/src/components/FeedList.tsx.html | 175 |
1 files changed, 131 insertions, 44 deletions
diff --git a/frontend/coverage/src/components/FeedList.tsx.html b/frontend/coverage/src/components/FeedList.tsx.html index 75aeb6a..b1b0a27 100644 --- a/frontend/coverage/src/components/FeedList.tsx.html +++ b/frontend/coverage/src/components/FeedList.tsx.html @@ -23,30 +23,30 @@ <div class='clearfix'> <div class='fl pad1y space-right2'> - <span class="strong">94.44% </span> + <span class="strong">91.66% </span> <span class="quiet">Statements</span> - <span class='fraction'>17/18</span> + <span class='fraction'>22/24</span> </div> <div class='fl pad1y space-right2'> - <span class="strong">83.33% </span> + <span class="strong">82.35% </span> <span class="quiet">Branches</span> - <span class='fraction'>10/12</span> + <span class='fraction'>14/17</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Functions</span> - <span class='fraction'>6/6</span> + <span class='fraction'>8/8</span> </div> <div class='fl pad1y space-right2'> - <span class="strong">93.75% </span> + <span class="strong">100% </span> <span class="quiet">Lines</span> - <span class='fraction'>15/16</span> + <span class='fraction'>20/20</span> </div> @@ -114,36 +114,86 @@ <a name='L49'></a><a href='#L49'>49</a> <a name='L50'></a><a href='#L50'>50</a> <a name='L51'></a><a href='#L51'>51</a> -<a name='L52'></a><a href='#L52'>52</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> +<a name='L52'></a><a href='#L52'>52</a> +<a name='L53'></a><a href='#L53'>53</a> +<a name='L54'></a><a href='#L54'>54</a> +<a name='L55'></a><a href='#L55'>55</a> +<a name='L56'></a><a href='#L56'>56</a> +<a name='L57'></a><a href='#L57'>57</a> +<a name='L58'></a><a href='#L58'>58</a> +<a name='L59'></a><a href='#L59'>59</a> +<a name='L60'></a><a href='#L60'>60</a> +<a name='L61'></a><a href='#L61'>61</a> +<a name='L62'></a><a href='#L62'>62</a> +<a name='L63'></a><a href='#L63'>63</a> +<a name='L64'></a><a href='#L64'>64</a> +<a name='L65'></a><a href='#L65'>65</a> +<a name='L66'></a><a href='#L66'>66</a> +<a name='L67'></a><a href='#L67'>67</a> +<a name='L68'></a><a href='#L68'>68</a> +<a name='L69'></a><a href='#L69'>69</a> +<a name='L70'></a><a href='#L70'>70</a> +<a name='L71'></a><a href='#L71'>71</a> +<a name='L72'></a><a href='#L72'>72</a> +<a name='L73'></a><a href='#L73'>73</a> +<a name='L74'></a><a href='#L74'>74</a> +<a name='L75'></a><a href='#L75'>75</a> +<a name='L76'></a><a href='#L76'>76</a> +<a name='L77'></a><a href='#L77'>77</a> +<a name='L78'></a><a href='#L78'>78</a> +<a name='L79'></a><a href='#L79'>79</a> +<a name='L80'></a><a href='#L80'>80</a> +<a name='L81'></a><a href='#L81'>81</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-yes">11x</span> +<span class="cline-any cline-yes">11x</span> +<span class="cline-any cline-yes">11x</span> +<span class="cline-any cline-yes">11x</span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-yes">11x</span> +<span class="cline-any cline-yes">6x</span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-yes">4x</span> +<span class="cline-any cline-yes">4x</span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-yes">4x</span> +<span class="cline-any cline-yes">4x</span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-yes">4x</span> +<span class="cline-any cline-yes">4x</span> +<span class="cline-any cline-yes">4x</span> <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-yes">1x</span> +<span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> -<span class="cline-any cline-yes">9x</span> -<span class="cline-any cline-yes">9x</span> -<span class="cline-any cline-yes">9x</span> <span class="cline-any cline-neutral"> </span> -<span class="cline-any cline-yes">9x</span> +<span class="cline-any cline-yes">11x</span> <span class="cline-any cline-yes">5x</span> <span class="cline-any cline-neutral"> </span> -<span class="cline-any cline-yes">3x</span> -<span class="cline-any cline-no"> </span> +<span class="cline-any cline-yes">4x</span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> -<span class="cline-any cline-yes">3x</span> <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> -<span class="cline-any cline-yes">3x</span> -<span class="cline-any cline-yes">3x</span> <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> -<span class="cline-any cline-yes">1x</span> -<span class="cline-any cline-yes">1x</span> <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> -<span class="cline-any cline-yes">9x</span> -<span class="cline-any cline-yes">4x</span> <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-yes">3x</span> <span class="cline-any cline-neutral"> </span> @@ -153,7 +203,15 @@ <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> -<span class="cline-any cline-yes">2x</span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-neutral"> </span> +<span class="cline-any cline-yes">3x</span> <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span> @@ -167,24 +225,29 @@ <span class="cline-any cline-neutral"> </span> <span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; -import type { Feed } from '../types'; +import type { Feed, Category } from '../types'; import './FeedList.css'; export default function FeedList() { const [feeds, setFeeds] = useState<Feed[]>([]); + const [tags, setTags] = useState<Category[]>([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); useEffect(() => { - fetch('/api/feed/') - .then((res) => { - <span class="missing-if-branch" title="if path not taken" >I</span>if (!res.ok) { -<span class="cstat-no" title="statement not covered" > throw new Error('Failed to fetch feeds');</span> - } + Promise.all([ + fetch('/api/feed/').then(res => { + <span class="missing-if-branch" title="if path not taken" >I</span>if (!res.ok) <span class="cstat-no" title="statement not covered" >throw new Error('Failed to fetch feeds');</span> + return res.json(); + }), + fetch('/api/tag').then(res => { + <span class="missing-if-branch" title="if path not taken" >I</span>if (!res.ok) <span class="cstat-no" title="statement not covered" >throw new Error('Failed to fetch tags');</span> return res.json(); }) - .then((data) => { - setFeeds(data); + ]) + .then(([feedsData, tagsData]) => { + setFeeds(feedsData); + setTags(tagsData); setLoading(false); }) .catch((err) => { @@ -198,20 +261,44 @@ export default function FeedList() { return ( <div className="feed-list"> - <h2>Feeds</h2> - {feeds.length === 0 ? ( - <p>No feeds found.</p> - ) : ( - <ul className="feed-list-items"> - {feeds.map((feed) => ( - <li key={feed._id} className="feed-item"> - <Link to={`/feed/${feed._id}`} className="feed-title"> - {feed.title || <span class="branch-1 cbranch-no" title="branch not covered" >feed.url}</span> - </Link> - {feed.category && <span className="feed-category">{feed.category}</span>} - </li> - ))} + <div className="filter-section"> + <ul className="filter-list"> + <li><Link to="/?filter=unread">Unread</Link></li> + <li><Link to="/?filter=all">All</Link></li> + <li><Link to="/?filter=starred">Starred</Link></li> </ul> + </div> + <div className="feed-section"> + <h2>Feeds</h2> + {feeds.length === 0 ? ( + <p>No feeds found.</p> + ) : ( + <ul className="feed-list-items"> + {feeds.map((feed) => ( + <li key={feed._id} className="sidebar-feed-item"> + <Link to={`/feed/${feed._id}`} className="feed-title"> + {feed.title || <span class="branch-1 cbranch-no" title="branch not covered" >feed.url}</span> + </Link> + {feed.category && <span className="feed-category">{feed.category}</span>} + </li> + ))} + </ul> + )} + </div> + + {tags && tags.length > 0 && ( + <div className="tag-section"> + <h2>Tags</h2> + <ul className="tag-list-items"> + {tags.map((tag) => ( + <li key={tag.title} className="tag-item"> + <Link to={`/tag/${encodeURIComponent(tag.title)}`} className="tag-link"> + {tag.title} + </Link> + </li> + ))} + </ul> + </div> )} </div> ); @@ -223,7 +310,7 @@ export default function FeedList() { <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> - at 2026-02-13T15:03:42.999Z + at 2026-02-13T21:49:58.924Z </div> <script src="../../prettify.js"></script> <script> |
