···2828</script>
29293030<DialogPanel onClose={() => onClose?.()}>
3131-<form method="get">
3232- <i class="close fa-circle-xmark fa-regular" onclick={onClose}></i>
3333- <h2>☣️ Infohazard Warning</h2>
3131+ <form method="get">
3232+ <i class="close fa-circle-xmark fa-regular" onclick={onClose}></i>
3333+ <h2>☣️ Infohazard Warning</h2>
34343535- <p>“<em>This thread is not a place of honor... no highly esteemed post is commemorated here... nothing valued is here.</em>”</p>
3636- <p>This feature allows access to comments in a thread which were hidden because one of the commenters has blocked another. Bluesky currently hides such comments to avoid escalating conflicts.</p>
3737- <p>Are you sure you want to enter?<br>(You can toggle this in the menu in top-left corner.)</p>
3535+ <p>“<em>This thread is not a place of honor... no highly esteemed post is commemorated here... nothing valued is here.</em>”</p>
3636+ <p>This feature allows access to comments in a thread which were hidden because one of the commenters has blocked another. Bluesky currently hides such comments to avoid escalating conflicts.</p>
3737+ <p>Are you sure you want to enter?<br>(You can toggle this in the menu in top-left corner.)</p>
38383939- <p class="submit">
4040- <input type="submit" value="Show me the drama 😈" onclick={showBiohazard}>
4141- <input type="submit" value="Nope, I'd rather not 🙈" onclick={hideBiohazard}>
4242- </p>
4343-</form>
3939+ <p class="submit">
4040+ <input type="submit" value="Show me the drama 😈" onclick={showBiohazard}>
4141+ <input type="submit" value="Nope, I'd rather not 🙈" onclick={hideBiohazard}>
4242+ </p>
4343+ </form>
4444</DialogPanel>
45454646<style>
+27-27
src/components/LoginDialog.svelte
···5858</script>
59596060<DialogPanel id="login" class={loginInfoVisible ? 'expanded' : ''} onClose={onOverlayClick}>
6161-<form method="get" {onsubmit}>
6262- {#if showClose}
6363- <i class="close fa-circle-xmark fa-regular" onclick={onClose}></i>
6464- {/if}
6161+ <form method="get" {onsubmit}>
6262+ {#if showClose}
6363+ <i class="close fa-circle-xmark fa-regular" onclick={onClose}></i>
6464+ {/if}
65656666- <h2>🌤 Skythread</h2>
6666+ <h2>🌤 Skythread</h2>
67676868- <p><input type="text" id="login_handle" required autofocus placeholder="name.bsky.social"
6969- bind:value={identifier} bind:this={loginField}></p>
6868+ <p><input type="text" id="login_handle" required autofocus placeholder="name.bsky.social"
6969+ bind:value={identifier} bind:this={loginField}></p>
70707171- <p><input type="password" id="login_password" required
7272- placeholder="✱✱✱✱✱✱✱✱"
7373- bind:value={password} bind:this={passwordField}></p>
7171+ <p><input type="password" id="login_password" required
7272+ placeholder="✱✱✱✱✱✱✱✱"
7373+ bind:value={password} bind:this={passwordField}></p>
74747575- <p class="info">
7676- <a href="#" onclick={toggleLoginInfo}><i class="fa-regular fa-circle-question"></i> Use an "app password" here</a>
7777- </p>
7878-7979- {#if loginInfoVisible}
8080- <div class="info-box">
8181- <p>Skythread doesn't support OAuth yet. For now, you need to use an "app password" here, which you can generate in the Bluesky app settings.</p>
8282- <p>The password you enter here is only passed to the Bluesky API (PDS) and isn't saved anywhere. The returned access token is only stored in your browser's local storage. You can see the complete source code of this app <a href="http://tangled.org/@mackuba.eu/skythread" target="_blank">on Tangled</a>.</p>
8383- </div>
8484- {/if}
7575+ <p class="info">
7676+ <a href="#" onclick={toggleLoginInfo}><i class="fa-regular fa-circle-question"></i> Use an "app password" here</a>
7777+ </p>
85788686- <p class="submit">
8787- {#if !submitting}
8888- <input type="submit" value="Log in">
8989- {:else}
9090- <i class="cloudy fa-solid fa-cloud fa-beat fa-xl"></i>
7979+ {#if loginInfoVisible}
8080+ <div class="info-box">
8181+ <p>Skythread doesn't support OAuth yet. For now, you need to use an "app password" here, which you can generate in the Bluesky app settings.</p>
8282+ <p>The password you enter here is only passed to the Bluesky API (PDS) and isn't saved anywhere. The returned access token is only stored in your browser's local storage. You can see the complete source code of this app <a href="http://tangled.org/@mackuba.eu/skythread" target="_blank">on Tangled</a>.</p>
8383+ </div>
9184 {/if}
9292- </p>
9393-</form>
8585+8686+ <p class="submit">
8787+ {#if !submitting}
8888+ <input type="submit" value="Log in">
8989+ {:else}
9090+ <i class="cloudy fa-solid fa-cloud fa-beat fa-xl"></i>
9191+ {/if}
9292+ </p>
9393+ </form>
9494</DialogPanel>
95959696<style>
···154154</script>
155155156156<SearchPage>
157157-<h2>Archive search</h2>
158158-159159-<form class="search-form">
160160- <p class="search">
161161- Search:
162162- <input type="text" class="search-query" autocomplete="off"
163163- disabled={importStatus != 'finished'} onkeydown={onKeyPress} bind:value={query}>
164164- </p>
165165-166166- <div class="search-collections">
167167- {#each collections as col}
168168- <input type="radio" name="collection" value={col.id} id="collection-{col.id}" bind:group={selectedCollection}>
169169- <label for="collection-{col.id}">{col.title}</label>
170170- {/each}
171171- </div>
172172-</form>
157157+ <h2>Archive search</h2>
173158174174-{#if wasImporting || importStatus == 'not_started'}
175175- <div class="lycan-import">
176176- {#if importStatus == 'not_started'}
177177- <form onsubmit={onFormSubmit}>
178178- <h4>Data not imported yet</h4>
159159+ <form class="search-form">
160160+ <p class="search">
161161+ Search:
162162+ <input type="text" class="search-query" autocomplete="off"
163163+ disabled={importStatus != 'finished'} onkeydown={onKeyPress} bind:value={query}>
164164+ </p>
179165180180- <p>
181181- In order to search within your likes and bookmarks, the posts you've liked or saved need to be imported into a database.
182182- This is a one-time process, but it can take several minutes or more, depending on the age of your account.
183183- </p>
184184- <p>
185185- To start the import, press the button below. You can then wait until it finishes, or close this tab and come back a bit later.
186186- After the import is complete, the database will be kept up to date automatically going forward.
187187- </p>
188188- <p>
189189- <input type="submit" value="Start import">
190190- </p>
191191- </form>
192192- {:else}
193193- <div class="import-progress">
194194- <h4>Import in progress</h4>
166166+ <div class="search-collections">
167167+ {#each collections as col}
168168+ <input type="radio" name="collection" value={col.id} id="collection-{col.id}" bind:group={selectedCollection}>
169169+ <label for="collection-{col.id}">{col.title}</label>
170170+ {/each}
171171+ </div>
172172+ </form>
195173196196- <p class="import-status">{importStatusLabel}</p>
174174+ {#if wasImporting || importStatus == 'not_started'}
175175+ <div class="lycan-import">
176176+ {#if importStatus == 'not_started'}
177177+ <form onsubmit={onFormSubmit}>
178178+ <h4>Data not imported yet</h4>
197179198198- {#if importStatus != 'error'}
199180 <p>
200200- <progress value={importProgress}></progress>
201201- <output>{Math.round(importProgress * 100)}%</output>
181181+ In order to search within your likes and bookmarks, the posts you've liked or saved need to be imported into a database.
182182+ This is a one-time process, but it can take several minutes or more, depending on the age of your account.
202183 </p>
203203- {/if}
204204- </div>
205205- {/if}
206206- </div>
207207-{/if}
184184+ <p>
185185+ To start the import, press the button below. You can then wait until it finishes, or close this tab and come back a bit later.
186186+ After the import is complete, the database will be kept up to date automatically going forward.
187187+ </p>
188188+ <p>
189189+ <input type="submit" value="Start import">
190190+ </p>
191191+ </form>
192192+ {:else}
193193+ <div class="import-progress">
194194+ <h4>Import in progress</h4>
208195209209-<div class="results">
210210- {#if loadingPosts}
211211- <p>...</p>
212212- {:else}
213213- {#each results as post (post.uri)}
214214- <PostComponent {post} placement="feed" {highlightedMatches} />
215215- {/each}
216216- {#if finishedPosts}
217217- <p class="results-end">{results.length > 0 ? "No more results." : "No results."}</p>
218218- {/if}
196196+ <p class="import-status">{importStatusLabel}</p>
197197+198198+ {#if importStatus != 'error'}
199199+ <p>
200200+ <progress value={importProgress}></progress>
201201+ <output>{Math.round(importProgress * 100)}%</output>
202202+ </p>
203203+ {/if}
204204+ </div>
205205+ {/if}
206206+ </div>
219207 {/if}
220220-</div>
208208+209209+ <div class="results">
210210+ {#if loadingPosts}
211211+ <p>...</p>
212212+ {:else}
213213+ {#each results as post (post.uri)}
214214+ <PostComponent {post} placement="feed" {highlightedMatches} />
215215+ {/each}
216216+ {#if finishedPosts}
217217+ <p class="results-end">{results.length > 0 ? "No more results." : "No results."}</p>
218218+ {/if}
219219+ {/if}
220220+ </div>
221221</SearchPage>
222222223223<style>