aboutsummaryrefslogtreecommitdiffstats
path: root/frontend/coverage/src/components/Login.tsx.html
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/coverage/src/components/Login.tsx.html')
-rw-r--r--frontend/coverage/src/components/Login.tsx.html225
1 files changed, 117 insertions, 108 deletions
diff --git a/frontend/coverage/src/components/Login.tsx.html b/frontend/coverage/src/components/Login.tsx.html
index f29e3cb..43fb613 100644
--- a/frontend/coverage/src/components/Login.tsx.html
+++ b/frontend/coverage/src/components/Login.tsx.html
@@ -1,64 +1,68 @@
+
<!doctype html>
<html lang="en">
- <head>
+
+<head>
<title>Code coverage report for src/components/Login.tsx</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="../../prettify.css" />
<link rel="stylesheet" href="../../base.css" />
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
- <style type="text/css">
- .coverage-summary .sorter {
- background-image: url(../../sort-arrow-sprite.png);
- }
+ <style type='text/css'>
+ .coverage-summary .sorter {
+ background-image: url(../../sort-arrow-sprite.png);
+ }
</style>
- </head>
-
- <body>
- <div class="wrapper">
- <div class="pad1">
- <h1>
- <a href="../../index.html">All files</a> /
- <a href="index.html">src/components</a> Login.tsx
- </h1>
- <div class="clearfix">
- <div class="fl pad1y space-right2">
- <span class="strong">100% </span>
- <span class="quiet">Statements</span>
- <span class="fraction">17/17</span>
- </div>
-
- <div class="fl pad1y space-right2">
- <span class="strong">83.33% </span>
- <span class="quiet">Branches</span>
- <span class="fraction">5/6</span>
- </div>
-
- <div class="fl pad1y space-right2">
- <span class="strong">100% </span>
- <span class="quiet">Functions</span>
- <span class="fraction">3/3</span>
- </div>
-
- <div class="fl pad1y space-right2">
- <span class="strong">100% </span>
- <span class="quiet">Lines</span>
- <span class="fraction">17/17</span>
- </div>
+</head>
+
+<body>
+<div class='wrapper'>
+ <div class='pad1'>
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/components</a> Login.tsx</h1>
+ <div class='clearfix'>
+
+ <div class='fl pad1y space-right2'>
+ <span class="strong">100% </span>
+ <span class="quiet">Statements</span>
+ <span class='fraction'>17/17</span>
+ </div>
+
+
+ <div class='fl pad1y space-right2'>
+ <span class="strong">83.33% </span>
+ <span class="quiet">Branches</span>
+ <span class='fraction'>5/6</span>
+ </div>
+
+
+ <div class='fl pad1y space-right2'>
+ <span class="strong">100% </span>
+ <span class="quiet">Functions</span>
+ <span class='fraction'>3/3</span>
+ </div>
+
+
+ <div class='fl pad1y space-right2'>
+ <span class="strong">100% </span>
+ <span class="quiet">Lines</span>
+ <span class='fraction'>17/17</span>
+ </div>
+
+
</div>
<p class="quiet">
- Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>,
- <em>p</em> or <em>k</em> for the previous block.
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
- <div class="quiet">
- Filter:
- <input type="search" id="fileSearch" />
- </div>
+ <div class="quiet">
+ Filter:
+ <input type="search" id="fileSearch">
+ </div>
</template>
- </div>
- <div class="status-line high"></div>
- <pre><table class="coverage">
+ </div>
+ <div class='status-line high'></div>
+ <pre><table class="coverage">
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
<a name='L2'></a><a href='#L2'>2</a>
<a name='L3'></a><a href='#L3'>3</a>
@@ -113,7 +117,11 @@
<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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
+<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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -171,74 +179,75 @@
import { useNavigate } from 'react-router-dom';
import './Login.css';
&nbsp;
+import { apiFetch } from '../utils';
+&nbsp;
export default function Login() {
- const [password, setPassword] = useState('');
- const [error, setError] = useState('');
- const navigate = useNavigate();
+ const [password, setPassword] = useState('');
+ const [error, setError] = useState('');
+ const navigate = useNavigate();
&nbsp;
- const handleSubmit = async (e: FormEvent) =&gt; {
- e.preventDefault();
- setError('');
+ const handleSubmit = async (e: FormEvent) =&gt; {
+ e.preventDefault();
+ setError('');
&nbsp;
- try {
- // Use URLSearchParams to send as form-urlencoded, matching backend expectation
- const params = new URLSearchParams();
- params.append('password', password);
+ try {
+ // Use URLSearchParams to send as form-urlencoded, matching backend expectation
+ const params = new URLSearchParams();
+ params.append('password', password);
&nbsp;
- const res = await fetch('/api/login', {
- method: 'POST',
- body: params,
- });
+ const res = await apiFetch('/api/login', {
+ method: 'POST',
+ body: params,
+ });
&nbsp;
- if (res.ok) {
- navigate('/');
- } else {
- const data = await res.json();
- setError(data.message || <span class="branch-1 cbranch-no" title="branch not covered" >'Login failed')</span>;
- }
- } catch (err) {
- setError('Network error');
- }
- };
+ if (res.ok) {
+ navigate('/');
+ } else {
+ const data = await res.json();
+ setError(data.message || <span class="branch-1 cbranch-no" title="branch not covered" >'Login failed')</span>;
+ }
+ } catch (err) {
+ setError('Network error');
+ }
+ };
&nbsp;
- return (
- &lt;div className="login-container"&gt;
- &lt;form onSubmit={handleSubmit} className="login-form"&gt;
- &lt;h1&gt;neko rss mode&lt;/h1&gt;
- &lt;div className="form-group"&gt;
- &lt;label htmlFor="password"&gt;password&lt;/label&gt;
- &lt;input
- id="password"
- type="password"
- value={password}
- onChange={(e) =&gt; setPassword(e.target.value)}
- autoFocus
- /&gt;
- &lt;/div&gt;
- {error &amp;&amp; &lt;div className="error-message"&gt;{error}&lt;/div&gt;}
- &lt;button type="submit"&gt;login&lt;/button&gt;
- &lt;/form&gt;
+ return (
+ &lt;div className="login-container"&gt;
+ &lt;form onSubmit={handleSubmit} className="login-form"&gt;
+ &lt;h1&gt;neko rss mode&lt;/h1&gt;
+ &lt;div className="form-group"&gt;
+ &lt;label htmlFor="password"&gt;password&lt;/label&gt;
+ &lt;input
+ id="password"
+ type="password"
+ value={password}
+ onChange={(e) =&gt; setPassword(e.target.value)}
+ autoFocus
+ /&gt;
&lt;/div&gt;
- );
+ {error &amp;&amp; &lt;div className="error-message"&gt;{error}&lt;/div&gt;}
+ &lt;button type="submit"&gt;login&lt;/button&gt;
+ &lt;/form&gt;
+ &lt;/div&gt;
+ );
}
&nbsp;</pre></td></tr></table></pre>
- <div class="push"></div>
- <!-- for sticky footer -->
- </div>
- <!-- /wrapper -->
- <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-13T21:49:58.924Z
- </div>
- <script src="../../prettify.js"></script>
- <script>
- window.onload = function () {
- prettyPrint();
- };
- </script>
- <script src="../../sorter.js"></script>
- <script src="../../block-navigation.js"></script>
- </body>
+ <div class='push'></div><!-- for sticky footer -->
+ </div><!-- /wrapper -->
+ <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-14T18:02:09.004Z
+ </div>
+ <script src="../../prettify.js"></script>
+ <script>
+ window.onload = function () {
+ prettyPrint();
+ };
+ </script>
+ <script src="../../sorter.js"></script>
+ <script src="../../block-navigation.js"></script>
+ </body>
</html>
+ \ No newline at end of file