forked from coracle/flotilla
9df8cee501
Adopts the rewritten welshman API: the removed @welshman/util helpers (Profile/List/Room/Handler/Encryptable) are now Reader/Builder classes in @welshman/domain, and @welshman/app dropped its global singletons for an App instance + app.use(Plugin) registry. - src/app/welshman.ts is now the app bootstrap + session-state module (one shared App instance, multi-account sessions/login, app-wide reactive views) rather than a compat shim re-exporting the old globals. - Rewrote ~100 callers to use app.use(Plugin) directly (thunks, profiles, relays, rooms, zaps, tags, wot, feeds, sync); thunk helpers are now thunk methods. - Added @welshman/domain dependency. - Resolved residual gaps (storage hydration via plugin.onItem/wrapManager/Plaintext, relay-list mutators, search-relay list, outbox #d filter). Best-effort: no toolchain/linking available, so this is not build- or type-checked. Remaining judgment calls are flagged with TODO(welshman-migration). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BsMjvv7krpZeHK1Njeneru
53 lines
1.3 KiB
Svelte
53 lines
1.3 KiB
Svelte
<style>
|
|
.wot-background {
|
|
fill: transparent;
|
|
stroke: var(--color-base-content);
|
|
opacity: 30%;
|
|
}
|
|
|
|
.wot-highlight {
|
|
fill: transparent;
|
|
stroke-width: 1.5;
|
|
stroke-dasharray: 100 100;
|
|
transform-origin: center;
|
|
}
|
|
</style>
|
|
|
|
<script lang="ts">
|
|
import {get} from "svelte/store"
|
|
import {clamp} from "@welshman/lib"
|
|
import {Wot} from "@welshman/app"
|
|
import {app, pubkey} from "@app/welshman"
|
|
|
|
interface Props {
|
|
pubkey: string
|
|
}
|
|
|
|
const {pubkey: target}: Props = $props()
|
|
|
|
const max = 100
|
|
const radius = 6
|
|
const center = radius + 1
|
|
|
|
const score = app.use(Wot).wotScore(get(pubkey)!, target).$
|
|
const active = $derived(app.use(Wot).follows($pubkey!).get().includes(target))
|
|
const normalizedScore = $derived(clamp([0, max], $score) / max)
|
|
const dashOffset = $derived(100 - 44 * normalizedScore)
|
|
const style = $derived(`transform: rotate(${135 - normalizedScore * 180}deg)`)
|
|
const stroke = $derived(active ? "var(--color-primary)" : "var(--color-base-content)")
|
|
</script>
|
|
|
|
<div class="relative h-[14px] w-[14px]">
|
|
<svg height="14" width="14" class="absolute">
|
|
<circle class="wot-background" cx={center} cy={center} r={radius} />
|
|
<circle
|
|
cx={center}
|
|
cy={center}
|
|
r={radius}
|
|
class="wot-highlight"
|
|
stroke-dashoffset={dashOffset}
|
|
{style}
|
|
{stroke} />
|
|
</svg>
|
|
</div>
|