mirror of
https://github.com/coracle-social/coracle.git
synced 2024-09-18 19:23:40 +00:00
Split app.svelte into smaller pieces, nest components under ui
This commit is contained in:
parent
859fc921ac
commit
35f1431ae2
@ -1,5 +1,8 @@
|
||||
# Current
|
||||
|
||||
- [ ] Refactor
|
||||
- Move global modals to child components?
|
||||
|
||||
- [ ] Relays bounty
|
||||
- [ ] Ability to create custom feeds
|
||||
- [ ] Fix tag-style event mentions. Probably transform all mentions into entities in parse
|
||||
|
317
src/App.svelte
317
src/App.svelte
@ -1,317 +0,0 @@
|
||||
<script lang="ts">
|
||||
import "@fortawesome/fontawesome-free/css/fontawesome.css"
|
||||
import "@fortawesome/fontawesome-free/css/solid.css"
|
||||
|
||||
import {onMount} from "svelte"
|
||||
import {Router, Route, links, navigate} from "svelte-routing"
|
||||
import {globalHistory} from "svelte-routing/src/history"
|
||||
import {cubicInOut} from "svelte/easing"
|
||||
import {writable, get} from "svelte/store"
|
||||
import {fly, fade} from "svelte/transition"
|
||||
import {createMap, first} from "hurdak/lib/hurdak"
|
||||
import {find, is, identity, nthArg, pluck} from "ramda"
|
||||
import {log, warn} from "src/util/logger"
|
||||
import {timedelta, hexToBech32, bech32ToHex, shuffle, now, sleep} from "src/util/misc"
|
||||
import {displayPerson, Tags, isLike} from "src/util/nostr"
|
||||
import cmd from "src/agent/cmd"
|
||||
import {onReady, relays, people} from "src/agent/tables"
|
||||
import keys from "src/agent/keys"
|
||||
import network from "src/agent/network"
|
||||
import pool from "src/agent/pool"
|
||||
import {getUserRelays, initializeRelayList} from "src/agent/relays"
|
||||
import sync from "src/agent/sync"
|
||||
import * as tables from "src/agent/tables"
|
||||
import user from "src/agent/user"
|
||||
import {loadAppData} from "src/app"
|
||||
import {theme, getThemeVariables} from "src/app/ui"
|
||||
import {modal, openModals, routes, menuIsOpen, logUsage} from "src/app/ui"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Modal from "src/partials/Modal.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Notifications from "src/routes/Notifications.svelte"
|
||||
import Bech32Entity from "src/routes/Bech32Entity.svelte"
|
||||
import ChatDetail from "src/routes/ChatDetail.svelte"
|
||||
import ChatList from "src/routes/ChatList.svelte"
|
||||
import Debug from "src/routes/Debug.svelte"
|
||||
import Feeds from "src/routes/Feeds.svelte"
|
||||
import Keys from "src/routes/Keys.svelte"
|
||||
import Login from "src/routes/Login.svelte"
|
||||
import Logout from "src/routes/Logout.svelte"
|
||||
import MessagesDetail from "src/routes/MessagesDetail.svelte"
|
||||
import MessagesList from "src/routes/MessagesList.svelte"
|
||||
import NotFound from "src/routes/NotFound.svelte"
|
||||
import PersonDetail from "src/routes/PersonDetail.svelte"
|
||||
import Search from "src/routes/Search.svelte"
|
||||
import Scan from "src/routes/Scan.svelte"
|
||||
import RelayDetail from "src/routes/RelayDetail.svelte"
|
||||
import RelayList from "src/routes/RelayList.svelte"
|
||||
import EnsureData from "src/views/EnsureData.svelte"
|
||||
import Profile from "src/views/Profile.svelte"
|
||||
import Settings from "src/views/Settings.svelte"
|
||||
import SideNav from "src/views/SideNav.svelte"
|
||||
import Toast from "src/views/Toast.svelte"
|
||||
import TopNav from "src/views/TopNav.svelte"
|
||||
import ChatEdit from "src/views/chat/ChatEdit.svelte"
|
||||
import ConnectUser from "src/views/login/ConnectUser.svelte"
|
||||
import PrivKeyLogin from "src/views/login/PrivKeyLogin.svelte"
|
||||
import PubKeyLogin from "src/views/login/PubKeyLogin.svelte"
|
||||
import Onboarding from "src/views/onboarding/Onboarding.svelte"
|
||||
import ForegroundButtons from "src/views/notes/ForegroundButtons.svelte"
|
||||
import NoteCreate from "src/views/notes/NoteCreate.svelte"
|
||||
import NoteDetail from "src/views/notes/NoteDetail.svelte"
|
||||
import PersonList from "src/views/person/PersonList.svelte"
|
||||
import PersonProfileInfo from "src/views/person/PersonProfileInfo.svelte"
|
||||
import PersonShare from "src/views/person/PersonShare.svelte"
|
||||
import AddRelay from "src/views/relays/AddRelay.svelte"
|
||||
|
||||
Object.assign(window, {cmd, user, keys, network, pool, sync, tables, bech32ToHex, hexToBech32})
|
||||
|
||||
export let url = location.pathname
|
||||
|
||||
let ready = false
|
||||
let scrollY
|
||||
|
||||
const closeModal = async () => {
|
||||
modal.clear()
|
||||
menuIsOpen.set(false)
|
||||
}
|
||||
|
||||
const style = document.createElement("style")
|
||||
|
||||
document.head.append(style)
|
||||
|
||||
$: style.textContent = `:root { ${getThemeVariables($theme)}; background: var(--gray-8); }`
|
||||
|
||||
const seenChallenges = new Set()
|
||||
|
||||
// When we get an AUTH challenge from our pool, attempt to authenticate
|
||||
pool.Config.authHandler = async (url, challenge) => {
|
||||
if (keys.canSign() && !seenChallenges.has(challenge)) {
|
||||
seenChallenges.add(challenge)
|
||||
|
||||
const publishable = await cmd.authenticate(url, challenge)
|
||||
|
||||
return first(publishable.publish([{url}], null, "AUTH"))
|
||||
}
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
// Log modals
|
||||
const unsubModal = modal.subscribe($modal => {
|
||||
if ($modal) {
|
||||
logUsage(btoa(["modal", $modal.type].join(":")))
|
||||
}
|
||||
})
|
||||
|
||||
// Keep scroll position on body, but don't allow scrolling
|
||||
const unsubOpenModals = openModals.subscribe(n => {
|
||||
if (n > 0) {
|
||||
// This is not idempotent, so don't duplicate it
|
||||
if (document.body.style.position !== "fixed") {
|
||||
scrollY = window.scrollY
|
||||
|
||||
document.body.style.top = `-${scrollY}px`
|
||||
document.body.style.position = `fixed`
|
||||
}
|
||||
} else {
|
||||
document.body.setAttribute("style", "")
|
||||
window.scrollTo(0, scrollY)
|
||||
}
|
||||
})
|
||||
|
||||
// Remove identifying information, e.g. pubkeys, event ids, etc
|
||||
const getPageName = () =>
|
||||
location.pathname.slice(1).replace(/(npub|nprofile|note|nevent)[^\/]+/g, (_, m) => `<${m}>`)
|
||||
|
||||
// Log usage on navigate
|
||||
const unsubHistory = globalHistory.listen(({location}) => {
|
||||
url = location.pathname
|
||||
|
||||
if (!location.hash) {
|
||||
logUsage(btoa(["page", getPageName()].join(":")))
|
||||
}
|
||||
})
|
||||
|
||||
logUsage(btoa(["page", getPageName()].join(":")))
|
||||
|
||||
return () => {
|
||||
unsubHistory()
|
||||
unsubModal()
|
||||
unsubOpenModals()
|
||||
}
|
||||
})
|
||||
|
||||
onReady(() => {
|
||||
ready = true
|
||||
|
||||
initializeRelayList()
|
||||
|
||||
const pubkey = user.getPubkey()
|
||||
|
||||
if (pubkey) {
|
||||
loadAppData(pubkey)
|
||||
|
||||
const person = people.get(pubkey)
|
||||
|
||||
// Temporary migration for version 0.2.18. We changed where user profile
|
||||
// is stored, so if they appear to have an incomplete profile on page load,
|
||||
// go ahead and copy the person record over.
|
||||
if (person && user.getRelays().length === 0) {
|
||||
user.profile.update($p => ({...$p, ...person}))
|
||||
}
|
||||
}
|
||||
|
||||
const interval = setInterval(async () => {
|
||||
const {dufflepudUrl} = user.getSettings()
|
||||
|
||||
if (!dufflepudUrl) {
|
||||
return
|
||||
}
|
||||
|
||||
// Find relays with old/missing metadata and refresh them. Only pick a
|
||||
// few so we're not sending too many concurrent http requests
|
||||
const staleRelays = shuffle(
|
||||
await relays.all({
|
||||
"refreshed_at:lt": now() - timedelta(7, "days"),
|
||||
})
|
||||
).slice(0, 10)
|
||||
|
||||
const freshRelays = await Promise.all(
|
||||
staleRelays.map(async ({url}) => {
|
||||
try {
|
||||
const res = await fetch(dufflepudUrl + "/relay/info", {
|
||||
method: "POST",
|
||||
body: JSON.stringify({url}),
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
})
|
||||
|
||||
return {...(await res.json()), url, refreshed_at: now()}
|
||||
} catch (e) {
|
||||
if (!e.toString().includes("Failed to fetch")) {
|
||||
warn(e)
|
||||
}
|
||||
|
||||
return {url, refreshed_at: now()}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
relays.bulkPatch(freshRelays.filter(identity))
|
||||
}, 30_000)
|
||||
|
||||
return () => {
|
||||
clearInterval(interval)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<Router {url}>
|
||||
<div use:links>
|
||||
{#if ready}
|
||||
<div class="pt-16 text-gray-3 lg:ml-56">
|
||||
<Route path="/notifications" component={Notifications} />
|
||||
<Route path="/search">
|
||||
<EnsureData enforcePeople={false}>
|
||||
<Search />
|
||||
</EnsureData>
|
||||
</Route>
|
||||
<Route path="/scan">
|
||||
<EnsureData enforcePeople={false}>
|
||||
<Scan />
|
||||
</EnsureData>
|
||||
</Route>
|
||||
<Route path="/notes/:activeTab" let:params>
|
||||
<EnsureData>
|
||||
<Feeds activeTab={params.activeTab} />
|
||||
</EnsureData>
|
||||
</Route>
|
||||
<Route path="/people/:npub/:activeTab" let:params>
|
||||
{#key params.npub}
|
||||
<PersonDetail npub={params.npub} activeTab={params.activeTab} />
|
||||
{/key}
|
||||
</Route>
|
||||
<Route path="/chat" component={ChatList} />
|
||||
<Route path="/chat/:entity" let:params>
|
||||
{#key params.entity}
|
||||
<ChatDetail entity={params.entity} />
|
||||
{/key}
|
||||
</Route>
|
||||
<Route path="/messages" component={MessagesList} />
|
||||
<Route path="/messages/:entity" let:params>
|
||||
{#key params.entity}
|
||||
<MessagesDetail entity={params.entity} />
|
||||
{/key}
|
||||
</Route>
|
||||
<Route path="/keys" component={Keys} />
|
||||
<Route path="/relays" component={RelayList} />
|
||||
<Route path="/relays/:b64url" let:params>
|
||||
{#key params.b64url}
|
||||
<RelayDetail url={atob(params.b64url)} />
|
||||
{/key}
|
||||
</Route>
|
||||
<Route path="/profile" component={Profile} />
|
||||
<Route path="/settings" component={Settings} />
|
||||
<Route path="/login" component={Login} />
|
||||
<Route path="/logout" component={Logout} />
|
||||
<Route path="/debug" component={Debug} />
|
||||
<Route path="/:entity" let:params>
|
||||
{#key params.entity}
|
||||
<Bech32Entity entity={params.entity} />
|
||||
{/key}
|
||||
</Route>
|
||||
<Route path="*" component={NotFound} />
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{#if !url.match(/messages|chat|relays$|keys|settings|logout$/)}
|
||||
<ForegroundButtons />
|
||||
{/if}
|
||||
|
||||
<SideNav />
|
||||
<TopNav />
|
||||
|
||||
{#if $modal}
|
||||
<Modal onEscape={$modal.noEscape ? null : closeModal}>
|
||||
{#if $modal.type === "note/detail"}
|
||||
{#key $modal.note.id}
|
||||
<NoteDetail {...$modal} invertColors />
|
||||
{/key}
|
||||
{:else if $modal.type === "note/create"}
|
||||
<NoteCreate pubkey={$modal.pubkey} nevent={$modal.nevent} />
|
||||
{:else if $modal.type === "relay/add"}
|
||||
<AddRelay />
|
||||
{:else if $modal.type === "onboarding"}
|
||||
<Onboarding stage={$modal.stage} />
|
||||
{:else if $modal.type === "room/edit"}
|
||||
<ChatEdit {...$modal} />
|
||||
{:else if $modal.type === "login/privkey"}
|
||||
<PrivKeyLogin />
|
||||
{:else if $modal.type === "login/pubkey"}
|
||||
<PubKeyLogin />
|
||||
{:else if $modal.type === "login/connect"}
|
||||
<ConnectUser />
|
||||
{:else if $modal.type === "person/info"}
|
||||
<PersonProfileInfo person={$modal.person} />
|
||||
{:else if $modal.type === "person/share"}
|
||||
<PersonShare person={$modal.person} />
|
||||
{:else if $modal.type === "person/follows"}
|
||||
<PersonList type="follows" pubkey={$modal.pubkey} />
|
||||
{:else if $modal.type === "person/followers"}
|
||||
<PersonList type="followers" pubkey={$modal.pubkey} />
|
||||
{:else if $modal.type === "message"}
|
||||
<Content size="lg">
|
||||
<div class="text-center">{$modal.message}</div>
|
||||
{#if $modal.spinner}
|
||||
<Spinner delay={0} />
|
||||
{/if}
|
||||
</Content>
|
||||
{/if}
|
||||
</Modal>
|
||||
{/if}
|
||||
|
||||
<Toast />
|
||||
</div>
|
||||
</Router>
|
@ -16,6 +16,14 @@ export const routes = {
|
||||
person: (pubkey, tab = "notes") => `/people/${nip19.npubEncode(pubkey)}/${tab}`,
|
||||
}
|
||||
|
||||
export const location = (() => {
|
||||
const store = writable(window.location)
|
||||
|
||||
globalHistory.listen(({location}) => store.set(location))
|
||||
|
||||
return store
|
||||
})()
|
||||
|
||||
// Install prompt
|
||||
|
||||
export const installPrompt = writable(null)
|
||||
@ -55,10 +63,10 @@ export const modal = {
|
||||
set: data => {
|
||||
if (data) {
|
||||
modal.history.push(data)
|
||||
navigate(location.pathname + `#m=${modal.history.length - 1}`)
|
||||
navigate(window.location.pathname + `#m=${modal.history.length - 1}`)
|
||||
} else {
|
||||
modal.history = []
|
||||
navigate(location.pathname)
|
||||
navigate(window.location.pathname)
|
||||
}
|
||||
},
|
||||
close: () => modal.set(null),
|
||||
@ -72,8 +80,8 @@ export const modal = {
|
||||
subscribe: cb => {
|
||||
cb(last(modal.history))
|
||||
|
||||
return globalHistory.listen(({action}) => {
|
||||
const match = location.hash.match(/\bm=(\d+)/)
|
||||
return location.subscribe($location => {
|
||||
const match = $location.hash.match(/\bm=(\d+)/)
|
||||
const i = match ? parseInt(match[1]) : null
|
||||
|
||||
modal.history.splice(i === null ? -1 : i + 1)
|
||||
|
@ -1,7 +1,7 @@
|
||||
import "src/app.css"
|
||||
|
||||
import Bugsnag from "@bugsnag/js"
|
||||
import App from "src/App.svelte"
|
||||
import App from "src/ui/App.svelte"
|
||||
import {installPrompt} from "src/app/ui"
|
||||
|
||||
Bugsnag.start({
|
||||
|
175
src/ui/App.svelte
Normal file
175
src/ui/App.svelte
Normal file
@ -0,0 +1,175 @@
|
||||
<script lang="ts">
|
||||
import "@fortawesome/fontawesome-free/css/fontawesome.css"
|
||||
import "@fortawesome/fontawesome-free/css/solid.css"
|
||||
|
||||
import {onMount} from "svelte"
|
||||
import {Router, links} from "svelte-routing"
|
||||
import {globalHistory} from "svelte-routing/src/history"
|
||||
import {first} from "hurdak/lib/hurdak"
|
||||
import {identity} from "ramda"
|
||||
import {warn} from "src/util/logger"
|
||||
import {timedelta, hexToBech32, bech32ToHex, shuffle, now} from "src/util/misc"
|
||||
import cmd from "src/agent/cmd"
|
||||
import {onReady, relays, people} from "src/agent/tables"
|
||||
import keys from "src/agent/keys"
|
||||
import network from "src/agent/network"
|
||||
import pool from "src/agent/pool"
|
||||
import {initializeRelayList} from "src/agent/relays"
|
||||
import sync from "src/agent/sync"
|
||||
import * as tables from "src/agent/tables"
|
||||
import user from "src/agent/user"
|
||||
import {loadAppData} from "src/app"
|
||||
import {theme, getThemeVariables} from "src/app/ui"
|
||||
import {modal, openModals, logUsage} from "src/app/ui"
|
||||
import SideNav from "src/ui/SideNav.svelte"
|
||||
import Main from "src/ui/Main.svelte"
|
||||
import Toast from "src/ui/Toast.svelte"
|
||||
import TopNav from "src/ui/TopNav.svelte"
|
||||
import Modal from "src/ui/Modal.svelte"
|
||||
import ForegroundButtons from "src/ui/ForegroundButtons.svelte"
|
||||
|
||||
Object.assign(window, {cmd, user, keys, network, pool, sync, tables, bech32ToHex, hexToBech32})
|
||||
|
||||
export let url = location.pathname
|
||||
|
||||
let scrollY
|
||||
|
||||
const style = document.createElement("style")
|
||||
|
||||
document.head.append(style)
|
||||
|
||||
$: style.textContent = `:root { ${getThemeVariables($theme)}; background: var(--gray-8); }`
|
||||
|
||||
const seenChallenges = new Set()
|
||||
|
||||
// When we get an AUTH challenge from our pool, attempt to authenticate
|
||||
pool.Config.authHandler = async (url, challenge) => {
|
||||
if (keys.canSign() && !seenChallenges.has(challenge)) {
|
||||
seenChallenges.add(challenge)
|
||||
|
||||
const publishable = await cmd.authenticate(url, challenge)
|
||||
|
||||
return first(publishable.publish([{url}], null, "AUTH"))
|
||||
}
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
// Log modals
|
||||
const unsubModal = modal.subscribe($modal => {
|
||||
if ($modal) {
|
||||
logUsage(btoa(["modal", $modal.type].join(":")))
|
||||
}
|
||||
})
|
||||
|
||||
// Keep scroll position on body, but don't allow scrolling
|
||||
const unsubOpenModals = openModals.subscribe(n => {
|
||||
if (n > 0) {
|
||||
// This is not idempotent, so don't duplicate it
|
||||
if (document.body.style.position !== "fixed") {
|
||||
scrollY = window.scrollY
|
||||
|
||||
document.body.style.top = `-${scrollY}px`
|
||||
document.body.style.position = `fixed`
|
||||
}
|
||||
} else {
|
||||
document.body.setAttribute("style", "")
|
||||
window.scrollTo(0, scrollY)
|
||||
}
|
||||
})
|
||||
|
||||
// Remove identifying information, e.g. pubkeys, event ids, etc
|
||||
const getPageName = () =>
|
||||
location.pathname.slice(1).replace(/(npub|nprofile|note|nevent)[^\/]+/g, (_, m) => `<${m}>`)
|
||||
|
||||
// Log usage on navigate
|
||||
const unsubHistory = globalHistory.listen(({location}) => {
|
||||
url = location.pathname
|
||||
|
||||
if (!location.hash) {
|
||||
logUsage(btoa(["page", getPageName()].join(":")))
|
||||
}
|
||||
})
|
||||
|
||||
logUsage(btoa(["page", getPageName()].join(":")))
|
||||
|
||||
return () => {
|
||||
unsubHistory()
|
||||
unsubModal()
|
||||
unsubOpenModals()
|
||||
}
|
||||
})
|
||||
|
||||
onReady(() => {
|
||||
initializeRelayList()
|
||||
|
||||
const pubkey = user.getPubkey()
|
||||
|
||||
if (pubkey) {
|
||||
loadAppData(pubkey)
|
||||
|
||||
const person = people.get(pubkey)
|
||||
|
||||
// Temporary migration for version 0.2.18. We changed where user profile
|
||||
// is stored, so if they appear to have an incomplete profile on page load,
|
||||
// go ahead and copy the person record over.
|
||||
if (person && user.getRelays().length === 0) {
|
||||
user.profile.update($p => ({...$p, ...person}))
|
||||
}
|
||||
}
|
||||
|
||||
const interval = setInterval(async () => {
|
||||
const {dufflepudUrl} = user.getSettings()
|
||||
|
||||
if (!dufflepudUrl) {
|
||||
return
|
||||
}
|
||||
|
||||
// Find relays with old/missing metadata and refresh them. Only pick a
|
||||
// few so we're not sending too many concurrent http requests
|
||||
const staleRelays = shuffle(
|
||||
await relays.all({
|
||||
"refreshed_at:lt": now() - timedelta(7, "days"),
|
||||
})
|
||||
).slice(0, 10)
|
||||
|
||||
const freshRelays = await Promise.all(
|
||||
staleRelays.map(async ({url}) => {
|
||||
try {
|
||||
const res = await fetch(dufflepudUrl + "/relay/info", {
|
||||
method: "POST",
|
||||
body: JSON.stringify({url}),
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
})
|
||||
|
||||
return {...(await res.json()), url, refreshed_at: now()}
|
||||
} catch (e) {
|
||||
if (!e.toString().includes("Failed to fetch")) {
|
||||
warn(e)
|
||||
}
|
||||
|
||||
return {url, refreshed_at: now()}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
relays.bulkPatch(freshRelays.filter(identity))
|
||||
}, 30_000)
|
||||
|
||||
return () => {
|
||||
clearInterval(interval)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<Router {url}>
|
||||
<div use:links>
|
||||
<Main />
|
||||
<ForegroundButtons />
|
||||
<SideNav />
|
||||
<TopNav />
|
||||
<Modal />
|
||||
<Toast />
|
||||
</div>
|
||||
</Router>
|
@ -1,19 +1,25 @@
|
||||
<script lang="ts">
|
||||
import user from "src/agent/user"
|
||||
import {modal} from "src/app/ui"
|
||||
import {modal, location} from "src/app/ui"
|
||||
|
||||
export let pubkey = null
|
||||
$: showCreateNote = $location.pathname.match(/messages|chat|relays$|keys|settings|logout$/)
|
||||
|
||||
const {canPublish} = user
|
||||
|
||||
const createNote = () => {
|
||||
const pubkey = null // TODO use $location.pathname
|
||||
|
||||
modal.set({type: "note/create", pubkey})
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="fixed bottom-0 right-0 z-10 m-8 flex flex-col items-center gap-3">
|
||||
{#if $canPublish}
|
||||
{#if $canPublish && !showCreateNote}
|
||||
<button
|
||||
class="color-white flex h-16 w-16 items-center justify-center rounded-full
|
||||
border border-accent-light bg-accent text-white shadow-2xl
|
||||
transition-all hover:scale-105 hover:bg-accent-light"
|
||||
on:click={() => modal.set({type: "note/create", pubkey})}>
|
||||
on:click={createNote}>
|
||||
<span class="fa-sold fa-plus fa-2xl" />
|
||||
</button>
|
||||
{/if}
|
86
src/ui/Main.svelte
Normal file
86
src/ui/Main.svelte
Normal file
@ -0,0 +1,86 @@
|
||||
<script lang="ts">
|
||||
import {Route} from "svelte-routing"
|
||||
import {onReady} from "src/agent/tables"
|
||||
import Notifications from "src/ui/routes/Notifications.svelte"
|
||||
import Bech32Entity from "src/ui/routes/Bech32Entity.svelte"
|
||||
import ChatDetail from "src/ui/routes/ChatDetail.svelte"
|
||||
import ChatList from "src/ui/routes/ChatList.svelte"
|
||||
import Debug from "src/ui/routes/Debug.svelte"
|
||||
import Feeds from "src/ui/routes/Feeds.svelte"
|
||||
import Keys from "src/ui/routes/Keys.svelte"
|
||||
import Login from "src/ui/routes/Login.svelte"
|
||||
import Logout from "src/ui/routes/Logout.svelte"
|
||||
import MessagesDetail from "src/ui/routes/MessagesDetail.svelte"
|
||||
import MessagesList from "src/ui/routes/MessagesList.svelte"
|
||||
import NotFound from "src/ui/routes/NotFound.svelte"
|
||||
import PersonDetail from "src/ui/routes/PersonDetail.svelte"
|
||||
import Search from "src/ui/routes/Search.svelte"
|
||||
import Scan from "src/ui/routes/Scan.svelte"
|
||||
import RelayDetail from "src/ui/routes/RelayDetail.svelte"
|
||||
import RelayList from "src/ui/routes/RelayList.svelte"
|
||||
import EnsureData from "src/ui/views/EnsureData.svelte"
|
||||
import Profile from "src/ui/views/Profile.svelte"
|
||||
import Settings from "src/ui/views/Settings.svelte"
|
||||
|
||||
let ready = false
|
||||
|
||||
onReady(() => {
|
||||
ready = true
|
||||
})
|
||||
</script>
|
||||
|
||||
{#if ready}
|
||||
<div class="pt-16 text-gray-3 lg:ml-56">
|
||||
<Route path="/notifications" component={Notifications} />
|
||||
<Route path="/search">
|
||||
<EnsureData enforcePeople={false}>
|
||||
<Search />
|
||||
</EnsureData>
|
||||
</Route>
|
||||
<Route path="/scan">
|
||||
<EnsureData enforcePeople={false}>
|
||||
<Scan />
|
||||
</EnsureData>
|
||||
</Route>
|
||||
<Route path="/notes/:activeTab" let:params>
|
||||
<EnsureData>
|
||||
<Feeds activeTab={params.activeTab} />
|
||||
</EnsureData>
|
||||
</Route>
|
||||
<Route path="/people/:npub/:activeTab" let:params>
|
||||
{#key params.npub}
|
||||
<PersonDetail npub={params.npub} activeTab={params.activeTab} />
|
||||
{/key}
|
||||
</Route>
|
||||
<Route path="/chat" component={ChatList} />
|
||||
<Route path="/chat/:entity" let:params>
|
||||
{#key params.entity}
|
||||
<ChatDetail entity={params.entity} />
|
||||
{/key}
|
||||
</Route>
|
||||
<Route path="/messages" component={MessagesList} />
|
||||
<Route path="/messages/:entity" let:params>
|
||||
{#key params.entity}
|
||||
<MessagesDetail entity={params.entity} />
|
||||
{/key}
|
||||
</Route>
|
||||
<Route path="/keys" component={Keys} />
|
||||
<Route path="/relays" component={RelayList} />
|
||||
<Route path="/relays/:b64url" let:params>
|
||||
{#key params.b64url}
|
||||
<RelayDetail url={atob(params.b64url)} />
|
||||
{/key}
|
||||
</Route>
|
||||
<Route path="/profile" component={Profile} />
|
||||
<Route path="/settings" component={Settings} />
|
||||
<Route path="/login" component={Login} />
|
||||
<Route path="/logout" component={Logout} />
|
||||
<Route path="/debug" component={Debug} />
|
||||
<Route path="/:entity" let:params>
|
||||
{#key params.entity}
|
||||
<Bech32Entity entity={params.entity} />
|
||||
{/key}
|
||||
</Route>
|
||||
<Route path="*" component={NotFound} />
|
||||
</div>
|
||||
{/if}
|
61
src/ui/Modal.svelte
Normal file
61
src/ui/Modal.svelte
Normal file
@ -0,0 +1,61 @@
|
||||
<script lang="ts">
|
||||
import {modal, menuIsOpen} from "src/app/ui"
|
||||
import Modal from "src/ui/partials/Modal.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import ChatEdit from "src/ui/views/chat/ChatEdit.svelte"
|
||||
import ConnectUser from "src/ui/views/login/ConnectUser.svelte"
|
||||
import PrivKeyLogin from "src/ui/views/login/PrivKeyLogin.svelte"
|
||||
import PubKeyLogin from "src/ui/views/login/PubKeyLogin.svelte"
|
||||
import Onboarding from "src/ui/views/onboarding/Onboarding.svelte"
|
||||
import NoteCreate from "src/ui/views/notes/NoteCreate.svelte"
|
||||
import NoteDetail from "src/ui/views/notes/NoteDetail.svelte"
|
||||
import PersonList from "src/ui/views/person/PersonList.svelte"
|
||||
import PersonProfileInfo from "src/ui/views/person/PersonProfileInfo.svelte"
|
||||
import PersonShare from "src/ui/views/person/PersonShare.svelte"
|
||||
import AddRelay from "src/ui/views/relays/AddRelay.svelte"
|
||||
|
||||
const closeModal = async () => {
|
||||
modal.clear()
|
||||
menuIsOpen.set(false)
|
||||
}
|
||||
</script>
|
||||
|
||||
{#if $modal}
|
||||
<Modal onEscape={$modal.noEscape ? null : closeModal}>
|
||||
{#if $modal.type === "note/detail"}
|
||||
{#key $modal.note.id}
|
||||
<NoteDetail {...$modal} invertColors />
|
||||
{/key}
|
||||
{:else if $modal.type === "note/create"}
|
||||
<NoteCreate pubkey={$modal.pubkey} nevent={$modal.nevent} />
|
||||
{:else if $modal.type === "relay/add"}
|
||||
<AddRelay />
|
||||
{:else if $modal.type === "onboarding"}
|
||||
<Onboarding stage={$modal.stage} />
|
||||
{:else if $modal.type === "room/edit"}
|
||||
<ChatEdit {...$modal} />
|
||||
{:else if $modal.type === "login/privkey"}
|
||||
<PrivKeyLogin />
|
||||
{:else if $modal.type === "login/pubkey"}
|
||||
<PubKeyLogin />
|
||||
{:else if $modal.type === "login/connect"}
|
||||
<ConnectUser />
|
||||
{:else if $modal.type === "person/info"}
|
||||
<PersonProfileInfo person={$modal.person} />
|
||||
{:else if $modal.type === "person/share"}
|
||||
<PersonShare person={$modal.person} />
|
||||
{:else if $modal.type === "person/follows"}
|
||||
<PersonList type="follows" pubkey={$modal.pubkey} />
|
||||
{:else if $modal.type === "person/followers"}
|
||||
<PersonList type="followers" pubkey={$modal.pubkey} />
|
||||
{:else if $modal.type === "message"}
|
||||
<Content size="lg">
|
||||
<div class="text-center">{$modal.message}</div>
|
||||
{#if $modal.spinner}
|
||||
<Spinner delay={0} />
|
||||
{/if}
|
||||
</Content>
|
||||
{/if}
|
||||
</Modal>
|
||||
{/if}
|
@ -6,7 +6,7 @@
|
||||
import {menuIsOpen, installPrompt, routes} from "src/app/ui"
|
||||
import {newNotifications, newDirectMessages, newChatMessages} from "src/app/listener"
|
||||
import {slowConnections} from "src/app/connection"
|
||||
import PersonCircle from "src/partials/PersonCircle.svelte"
|
||||
import PersonCircle from "src/ui/partials/PersonCircle.svelte"
|
||||
|
||||
const {profile, canPublish} = user
|
||||
|
@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
import {onMount} from "svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import {menuIsOpen} from "src/app/ui"
|
||||
import {newNotifications} from "src/app/listener"
|
||||
import {theme} from "src/app/ui"
|
@ -3,7 +3,7 @@
|
||||
import {killEvent} from "src/util/html"
|
||||
import {displayPerson} from "src/util/nostr"
|
||||
import {routes} from "src/app/ui"
|
||||
import PersonCircle from "src/partials/PersonCircle.svelte"
|
||||
import PersonCircle from "src/ui/partials/PersonCircle.svelte"
|
||||
|
||||
export let person
|
||||
export let inert = false
|
@ -4,7 +4,7 @@
|
||||
import {navigate} from "svelte-routing"
|
||||
import {prop, path as getPath, reverse, pluck, uniqBy, sortBy, last} from "ramda"
|
||||
import {sleep, createScroller, Cursor} from "src/util/misc"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import user from "src/agent/user"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
import network from "src/agent/network"
|
@ -3,9 +3,9 @@
|
||||
import {last, pluck, propEq} from "ramda"
|
||||
import {fuzzy} from "src/util/misc"
|
||||
import {displayPerson} from "src/util/nostr"
|
||||
import Badge from "src/partials/Badge.svelte"
|
||||
import ContentEditable from "src/partials/ContentEditable.svelte"
|
||||
import Suggestions from "src/partials/Suggestions.svelte"
|
||||
import Badge from "src/ui/partials/Badge.svelte"
|
||||
import ContentEditable from "src/ui/partials/ContentEditable.svelte"
|
||||
import Suggestions from "src/ui/partials/Suggestions.svelte"
|
||||
import {watch} from "src/agent/storage"
|
||||
import {getPubkeyWriteRelays} from "src/agent/relays"
|
||||
|
@ -12,5 +12,5 @@
|
||||
border-white bg-cover bg-center`
|
||||
)}
|
||||
style="background-image: url({src}); {$$props.style || ''}">
|
||||
<slot></slot>
|
||||
<slot />
|
||||
</div>
|
@ -1,9 +1,9 @@
|
||||
<script lang="ts">
|
||||
import {filter, identity} from "ramda"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Modal from "src/partials/Modal.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Modal from "src/ui/partials/Modal.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import {listenForFile, stripExifData, blobToFile} from "src/util/html"
|
||||
import {uploadFile, postJson} from "src/util/misc"
|
||||
import user from "src/agent/user"
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@ -1,8 +1,8 @@
|
||||
<script>
|
||||
import cx from "classnames"
|
||||
import {ellipsize} from "hurdak/lib/hurdak"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import user from "src/agent/user"
|
||||
|
||||
export let link
|
@ -2,9 +2,9 @@
|
||||
import {sortBy} from "ramda"
|
||||
import {slide} from "svelte/transition"
|
||||
import {annotateMedia} from "src/util/misc"
|
||||
import Media from "src/partials/Media.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Modal from "src/partials/Modal.svelte"
|
||||
import Media from "src/ui/partials/Media.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Modal from "src/ui/partials/Modal.svelte"
|
||||
|
||||
export let links
|
||||
export let onClose = null
|
@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Popover from "src/partials/Popover.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Popover from "src/ui/partials/Popover.svelte"
|
||||
|
||||
export let actions
|
||||
export let size = ""
|
||||
@ -16,7 +16,7 @@
|
||||
class="relative flex flex-col gap-2"
|
||||
on:click={() => instance.hide()}>
|
||||
<div
|
||||
class="absolute top-0 right-0 bottom-0 rounded-full bg-gray-8 w-32"
|
||||
class="absolute top-0 right-0 bottom-0 w-32 rounded-full bg-gray-8"
|
||||
style="filter: blur(15px) opacity(0.75)" />
|
||||
|
||||
{#each actions as { label, icon, onClick }}
|
||||
@ -27,4 +27,3 @@
|
||||
{/each}
|
||||
</div>
|
||||
</Popover>
|
||||
|
@ -2,7 +2,7 @@
|
||||
import {ellipsize} from "hurdak/lib/hurdak"
|
||||
import {parseContent} from "src/util/html"
|
||||
import {displayPerson} from "src/util/nostr"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
|
||||
export let person
|
@ -1,7 +1,7 @@
|
||||
<script lang="ts">
|
||||
import {stringToHue, hsl} from "src/util/misc"
|
||||
import ImageCircle from "src/partials/ImageCircle.svelte"
|
||||
import LogoSvg from "src/partials/LogoSvg.svelte"
|
||||
import ImageCircle from "src/ui/partials/ImageCircle.svelte"
|
||||
import LogoSvg from "src/ui/partials/LogoSvg.svelte"
|
||||
import cx from "classnames"
|
||||
|
||||
export let person
|
@ -3,9 +3,9 @@
|
||||
import {fly} from "svelte/transition"
|
||||
import {noEvent} from "src/util/html"
|
||||
import {displayPerson} from "src/util/nostr"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import PersonCircle from "src/partials/PersonCircle.svelte"
|
||||
import PersonAbout from "src/partials/PersonAbout.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import PersonCircle from "src/ui/partials/PersonCircle.svelte"
|
||||
import PersonAbout from "src/ui/partials/PersonAbout.svelte"
|
||||
import {routes} from "src/app/ui"
|
||||
|
||||
export let person
|
@ -1,7 +1,7 @@
|
||||
<script lang="ts">
|
||||
import QRCode from "qrcode"
|
||||
import {onMount} from "svelte"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import {copyToClipboard} from "src/util/html"
|
||||
import {toast} from "src/app/ui"
|
||||
|
@ -5,7 +5,7 @@
|
||||
import {poll, stringToHue, hsl} from "src/util/misc"
|
||||
import {between} from "hurdak/lib/hurdak"
|
||||
import {fly} from "svelte/transition"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import pool from "src/agent/pool"
|
||||
|
||||
export let relay
|
@ -41,7 +41,7 @@
|
||||
class:bg-gray-7={index === i}
|
||||
class:border-accent={index === i}
|
||||
on:click={() => select(item)}>
|
||||
<slot name="item" item={item} />
|
||||
<slot name="item" {item} />
|
||||
</button>
|
||||
{/each}
|
||||
</div>
|
@ -3,9 +3,9 @@
|
||||
import {onMount} from "svelte"
|
||||
import {nip19} from "nostr-tools"
|
||||
import {warn} from "src/util/logger"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import NoteDetail from "src/views/notes/NoteDetail.svelte"
|
||||
import PersonDetail from "src/routes/PersonDetail.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import NoteDetail from "src/ui/views/notes/NoteDetail.svelte"
|
||||
import PersonDetail from "src/ui/routes/PersonDetail.svelte"
|
||||
import {sampleRelays} from "src/agent/relays"
|
||||
|
||||
export let entity
|
@ -3,10 +3,10 @@
|
||||
import {updateIn} from "hurdak/lib/hurdak"
|
||||
import {now, formatTimestamp} from "src/util/misc"
|
||||
import {toHex} from "src/util/nostr"
|
||||
import Channel from "src/partials/Channel.svelte"
|
||||
import Badge from "src/partials/Badge.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import NoteContent from "src/views/notes/NoteContent.svelte"
|
||||
import Channel from "src/ui/partials/Channel.svelte"
|
||||
import Badge from "src/ui/partials/Badge.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import NoteContent from "src/ui/views/notes/NoteContent.svelte"
|
||||
import user from "src/agent/user"
|
||||
import {getRelaysForEventChildren, sampleRelays} from "src/agent/relays"
|
||||
import network from "src/agent/network"
|
@ -1,10 +1,10 @@
|
||||
<script>
|
||||
import {onMount} from "svelte"
|
||||
import {fuzzy} from "src/util/misc"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import ChatListItem from "src/views/chat/ChatListItem.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import ChatListItem from "src/ui/views/chat/ChatListItem.svelte"
|
||||
import {watch} from "src/agent/storage"
|
||||
import network from "src/agent/network"
|
||||
import {getUserReadRelays} from "src/agent/relays"
|
@ -3,7 +3,7 @@
|
||||
import {fly} from "svelte/transition"
|
||||
import {logs} from "src/util/logger.js"
|
||||
import {formatTimestamp} from "src/util/misc"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
|
||||
document.title = "Debug"
|
||||
</script>
|
@ -1,11 +1,11 @@
|
||||
<script>
|
||||
import {navigate} from "svelte-routing"
|
||||
import {toTitle} from "hurdak/lib/hurdak"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Tabs from "src/partials/Tabs.svelte"
|
||||
import Follows from "src/views/feed/Follows.svelte"
|
||||
import Network from "src/views/feed/Network.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Tabs from "src/ui/partials/Tabs.svelte"
|
||||
import Follows from "src/ui/views/feed/Follows.svelte"
|
||||
import Network from "src/ui/views/feed/Network.svelte"
|
||||
import user from "src/agent/user"
|
||||
|
||||
export let activeTab
|
@ -4,11 +4,11 @@
|
||||
import {navigate} from "svelte-routing"
|
||||
import {nip19} from "nostr-tools"
|
||||
import {copyToClipboard} from "src/util/html"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Toggle from "src/partials/Toggle.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Toggle from "src/ui/partials/Toggle.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import keys from "src/agent/keys"
|
||||
import {toast} from "src/app/ui"
|
||||
|
@ -1,9 +1,9 @@
|
||||
<script lang="ts">
|
||||
import {fly} from "svelte/transition"
|
||||
import {navigate} from "svelte-routing"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import user from "src/agent/user"
|
||||
import {modal} from "src/app/ui"
|
||||
import {login} from "src/app"
|
@ -1,7 +1,7 @@
|
||||
<script>
|
||||
import {fly} from "svelte/transition"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import {dropAll} from "src/agent/storage"
|
||||
|
||||
let confirmed = false
|
@ -4,9 +4,9 @@
|
||||
import {toHex, displayPerson} from "src/util/nostr"
|
||||
import {now, formatTimestamp} from "src/util/misc"
|
||||
import {Tags} from "src/util/nostr"
|
||||
import Channel from "src/partials/Channel.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import NoteContent from "src/views/notes/NoteContent.svelte"
|
||||
import Channel from "src/ui/partials/Channel.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import NoteContent from "src/ui/views/notes/NoteContent.svelte"
|
||||
import {getAllPubkeyRelays, sampleRelays} from "src/agent/relays"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
import {watch} from "src/agent/storage"
|
||||
@ -16,8 +16,8 @@
|
||||
import cmd from "src/agent/cmd"
|
||||
import {routes} from "src/app/ui"
|
||||
import {lastChecked} from "src/app/listener"
|
||||
import PersonCircle from "src/partials/PersonCircle.svelte"
|
||||
import PersonAbout from "src/partials/PersonAbout.svelte"
|
||||
import PersonCircle from "src/ui/partials/PersonCircle.svelte"
|
||||
import PersonAbout from "src/ui/partials/PersonAbout.svelte"
|
||||
|
||||
export let entity
|
||||
|
@ -1,9 +1,9 @@
|
||||
<script>
|
||||
import {sortBy} from "ramda"
|
||||
import {toTitle} from "hurdak/lib/hurdak"
|
||||
import Tabs from "src/partials/Tabs.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import MessagesListItem from "src/views/messages/MessagesListItem.svelte"
|
||||
import Tabs from "src/ui/partials/Tabs.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import MessagesListItem from "src/ui/views/messages/MessagesListItem.svelte"
|
||||
import {watch} from "src/agent/storage"
|
||||
|
||||
let activeTab = "messages"
|
@ -4,9 +4,9 @@
|
||||
import {fly} from "svelte/transition"
|
||||
import {now, timedelta, createScroller} from "src/util/misc"
|
||||
import {findReplyId} from "src/util/nostr"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Notification from "src/views/notifications/Notification.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Notification from "src/ui/views/notifications/Notification.svelte"
|
||||
import {watch} from "src/agent/storage"
|
||||
import user from "src/agent/user"
|
||||
import {userEvents} from "src/agent/tables"
|
@ -8,21 +8,21 @@
|
||||
import {parseHex} from "src/util/html"
|
||||
import {numberFmt} from "src/util/misc"
|
||||
import {displayPerson, toHex} from "src/util/nostr"
|
||||
import Tabs from "src/partials/Tabs.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import OverflowMenu from "src/partials/OverflowMenu.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Notes from "src/views/person/Notes.svelte"
|
||||
import Likes from "src/views/person/Likes.svelte"
|
||||
import Relays from "src/views/person/Relays.svelte"
|
||||
import Tabs from "src/ui/partials/Tabs.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import OverflowMenu from "src/ui/partials/OverflowMenu.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import Notes from "src/ui/views/person/Notes.svelte"
|
||||
import Likes from "src/ui/views/person/Likes.svelte"
|
||||
import Relays from "src/ui/views/person/Relays.svelte"
|
||||
import user from "src/agent/user"
|
||||
import pool from "src/agent/pool"
|
||||
import {sampleRelays, getPubkeyWriteRelays} from "src/agent/relays"
|
||||
import network from "src/agent/network"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
import {routes, modal, theme, getThemeColor} from "src/app/ui"
|
||||
import PersonCircle from "src/partials/PersonCircle.svelte"
|
||||
import PersonAbout from "src/partials/PersonAbout.svelte"
|
||||
import PersonCircle from "src/ui/partials/PersonCircle.svelte"
|
||||
import PersonAbout from "src/ui/partials/PersonAbout.svelte"
|
||||
|
||||
export let npub
|
||||
export let activeTab
|
@ -1,9 +1,9 @@
|
||||
<script lang="ts">
|
||||
import {displayRelay} from "src/util/nostr"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Feed from "src/views/feed/Feed.svelte"
|
||||
import RelayTitle from "src/views/relays/RelayTitle.svelte"
|
||||
import RelayActions from "src/views/relays/RelayActions.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Feed from "src/ui/views/feed/Feed.svelte"
|
||||
import RelayTitle from "src/ui/views/relays/RelayTitle.svelte"
|
||||
import RelayActions from "src/ui/views/relays/RelayActions.svelte"
|
||||
import {relays} from "src/agent/tables"
|
||||
|
||||
export let url
|
@ -1,9 +1,9 @@
|
||||
<script>
|
||||
import {fly} from "svelte/transition"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import RelaySearch from "src/views/relays/RelaySearch.svelte"
|
||||
import RelayCard from "src/views/relays/RelayCard.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import RelaySearch from "src/ui/views/relays/RelaySearch.svelte"
|
||||
import RelayCard from "src/ui/views/relays/RelayCard.svelte"
|
||||
import user from "src/agent/user"
|
||||
import {modal} from "src/app/ui"
|
||||
|
@ -4,11 +4,11 @@
|
||||
import {navigate} from "svelte-routing"
|
||||
import {find} from "ramda"
|
||||
import {nip05, nip19} from "nostr-tools"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import {toast} from "src/app/ui"
|
||||
|
||||
let video,
|
@ -1,7 +1,7 @@
|
||||
<script>
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import PersonSearch from "src/views/person/PersonSearch.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import PersonSearch from "src/ui/views/person/PersonSearch.svelte"
|
||||
</script>
|
||||
|
||||
<Content>
|
@ -1,11 +1,11 @@
|
||||
<script>
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Modal from "src/partials/Modal.svelte"
|
||||
import PersonInfo from "src/views/person/PersonInfo.svelte"
|
||||
import RelaySearch from "src/views/relays/RelaySearch.svelte"
|
||||
import RelayCard from "src/views/relays/RelayCard.svelte"
|
||||
import PersonSearch from "src/views/person/PersonSearch.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Modal from "src/ui/partials/Modal.svelte"
|
||||
import PersonInfo from "src/ui/views/person/PersonInfo.svelte"
|
||||
import RelaySearch from "src/ui/views/relays/RelaySearch.svelte"
|
||||
import RelayCard from "src/ui/views/relays/RelayCard.svelte"
|
||||
import PersonSearch from "src/ui/views/person/PersonSearch.svelte"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
import user from "src/agent/user"
|
||||
|
@ -2,13 +2,13 @@
|
||||
import {onMount} from "svelte"
|
||||
import {fly} from "svelte/transition"
|
||||
import {navigate} from "svelte-routing"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import ImageInput from "src/partials/ImageInput.svelte"
|
||||
import Textarea from "src/partials/Textarea.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Button from "src/partials/Button.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import ImageInput from "src/ui/partials/ImageInput.svelte"
|
||||
import Textarea from "src/ui/partials/Textarea.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Button from "src/ui/partials/Button.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import user from "src/agent/user"
|
||||
import {getUserWriteRelays} from "src/agent/relays"
|
||||
import cmd from "src/agent/cmd"
|
@ -2,12 +2,12 @@
|
||||
import {onMount} from "svelte"
|
||||
import {fly} from "svelte/transition"
|
||||
import {navigate} from "svelte-routing"
|
||||
import Toggle from "src/partials/Toggle.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Button from "src/partials/Button.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Toggle from "src/ui/partials/Toggle.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Button from "src/ui/partials/Button.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import user from "src/agent/user"
|
||||
import pool from "src/agent/pool"
|
||||
import {toast} from "src/app/ui"
|
@ -3,10 +3,10 @@
|
||||
import {fly} from "svelte/transition"
|
||||
import {error} from "src/util/logger"
|
||||
import {stripExifData} from "src/util/html"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Textarea from "src/partials/Textarea.svelte"
|
||||
import Button from "src/partials/Button.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Textarea from "src/ui/partials/Textarea.svelte"
|
||||
import Button from "src/ui/partials/Button.svelte"
|
||||
import {getUserWriteRelays} from "src/agent/relays"
|
||||
import {rooms} from "src/agent/tables"
|
||||
import cmd from "src/agent/cmd"
|
@ -3,7 +3,7 @@
|
||||
import {navigate} from "svelte-routing"
|
||||
import {fly} from "svelte/transition"
|
||||
import {ellipsize} from "hurdak/lib/hurdak"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import {rooms} from "src/agent/tables"
|
||||
|
||||
export let room
|
@ -5,11 +5,11 @@
|
||||
import {quantify} from "hurdak/lib/hurdak"
|
||||
import {createScroller, now, timedelta, Cursor} from "src/util/misc"
|
||||
import {asDisplayEvent, mergeFilter} from "src/util/nostr"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Modal from "src/partials/Modal.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import RelayFeed from "src/views/feed/RelayFeed.svelte"
|
||||
import Note from "src/views/notes/Note.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import Modal from "src/ui/partials/Modal.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import RelayFeed from "src/ui/views/feed/RelayFeed.svelte"
|
||||
import Note from "src/ui/views/notes/Note.svelte"
|
||||
import user from "src/agent/user"
|
||||
import network from "src/agent/network"
|
||||
import {modal} from "src/app/ui"
|
@ -1,6 +1,6 @@
|
||||
<script>
|
||||
import {shuffle} from "src/util/misc"
|
||||
import Feed from "src/views/feed/Feed.svelte"
|
||||
import Feed from "src/ui/views/feed/Feed.svelte"
|
||||
import {getUserFollows} from "src/agent/social"
|
||||
import {sampleRelays, getAllPubkeyWriteRelays} from "src/agent/relays"
|
||||
|
@ -1,6 +1,6 @@
|
||||
<script>
|
||||
import {shuffle} from "src/util/misc"
|
||||
import Feed from "src/views/feed/Feed.svelte"
|
||||
import Feed from "src/ui/views/feed/Feed.svelte"
|
||||
import {getUserNetwork} from "src/agent/social"
|
||||
import {sampleRelays, getAllPubkeyWriteRelays} from "src/agent/relays"
|
||||
|
@ -1,10 +1,10 @@
|
||||
<script lang="ts">
|
||||
import {displayRelay} from "src/util/nostr"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import RelayTitle from "src/views/relays/RelayTitle.svelte"
|
||||
import RelayActions from "src/views/relays/RelayActions.svelte"
|
||||
import Note from "src/views/notes/Note.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import RelayTitle from "src/ui/views/relays/RelayTitle.svelte"
|
||||
import RelayActions from "src/ui/views/relays/RelayActions.svelte"
|
||||
import Note from "src/ui/views/notes/Note.svelte"
|
||||
|
||||
export let depth
|
||||
export let showContext = false
|
@ -5,13 +5,13 @@
|
||||
import {navigate} from "svelte-routing"
|
||||
import {sleep, shuffle} from "src/util/misc"
|
||||
import {isRelay, userKinds} from "src/util/nostr"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import RelayCardSimple from "src/partials/RelayCardSimple.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Modal from "src/partials/Modal.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import RelayCardSimple from "src/ui/partials/RelayCardSimple.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Modal from "src/ui/partials/Modal.svelte"
|
||||
import {watch} from "src/agent/storage"
|
||||
import network from "src/agent/network"
|
||||
import user from "src/agent/user"
|
@ -1,9 +1,9 @@
|
||||
<script lang="ts">
|
||||
import {toHex} from "src/util/nostr"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import keys from "src/agent/keys"
|
||||
import {toast} from "src/app/ui"
|
||||
import {login} from "src/app"
|
@ -1,9 +1,9 @@
|
||||
<script lang="ts">
|
||||
import {toHex} from "src/util/nostr"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import keys from "src/agent/keys"
|
||||
import {toast} from "src/app/ui"
|
||||
import {login} from "src/app"
|
@ -5,8 +5,8 @@
|
||||
import {displayPerson} from "src/util/nostr"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
import {lastChecked} from "src/app/listener"
|
||||
import PersonCircle from "src/partials/PersonCircle.svelte"
|
||||
import Card from "src/partials/Card.svelte"
|
||||
import PersonCircle from "src/ui/partials/PersonCircle.svelte"
|
||||
import Card from "src/ui/partials/Card.svelte"
|
||||
|
||||
export let contact
|
||||
|
@ -31,24 +31,24 @@
|
||||
} from "src/util/misc"
|
||||
import {isMobile, copyToClipboard} from "src/util/html"
|
||||
import {invoiceAmount} from "src/util/lightning"
|
||||
import QRCode from "src/partials/QRCode.svelte"
|
||||
import OverflowMenu from "src/partials/OverflowMenu.svelte"
|
||||
import ImageInput from "src/partials/ImageInput.svelte"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Textarea from "src/partials/Textarea.svelte"
|
||||
import CopyValue from "src/partials/CopyValue.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Badge from "src/partials/Badge.svelte"
|
||||
import Popover from "src/partials/Popover.svelte"
|
||||
import PersonCircle from "src/partials/PersonCircle.svelte"
|
||||
import PersonSummary from "src/views/person/PersonSummary.svelte"
|
||||
import RelayCard from "src/views/relays/RelayCard.svelte"
|
||||
import Modal from "src/partials/Modal.svelte"
|
||||
import Media from "src/partials/Media.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import QRCode from "src/ui/partials/QRCode.svelte"
|
||||
import OverflowMenu from "src/ui/partials/OverflowMenu.svelte"
|
||||
import ImageInput from "src/ui/partials/ImageInput.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Textarea from "src/ui/partials/Textarea.svelte"
|
||||
import CopyValue from "src/ui/partials/CopyValue.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Badge from "src/ui/partials/Badge.svelte"
|
||||
import Popover from "src/ui/partials/Popover.svelte"
|
||||
import PersonCircle from "src/ui/partials/PersonCircle.svelte"
|
||||
import PersonSummary from "src/ui/views/person/PersonSummary.svelte"
|
||||
import RelayCard from "src/ui/views/relays/RelayCard.svelte"
|
||||
import Modal from "src/ui/partials/Modal.svelte"
|
||||
import Media from "src/ui/partials/Media.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import {toast, modal} from "src/app/ui"
|
||||
import Compose from "src/partials/Compose.svelte"
|
||||
import Card from "src/partials/Card.svelte"
|
||||
import Compose from "src/ui/partials/Compose.svelte"
|
||||
import Card from "src/ui/partials/Card.svelte"
|
||||
import user from "src/agent/user"
|
||||
import pool from "src/agent/pool"
|
||||
import keys from "src/agent/keys"
|
||||
@ -59,7 +59,7 @@
|
||||
import cmd from "src/agent/cmd"
|
||||
import {routes} from "src/app/ui"
|
||||
import {publishWithToast} from "src/app"
|
||||
import NoteContent from "src/views/notes/NoteContent.svelte"
|
||||
import NoteContent from "src/ui/views/notes/NoteContent.svelte"
|
||||
|
||||
export let note
|
||||
export let feedRelay
|
@ -6,11 +6,11 @@
|
||||
import {warn} from "src/util/logger"
|
||||
import {parseContent} from "src/util/html"
|
||||
import {displayPerson, Tags} from "src/util/nostr"
|
||||
import MediaSet from "src/partials/MediaSet.svelte"
|
||||
import Card from "src/partials/Card.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import PersonCircle from "src/partials/PersonCircle.svelte"
|
||||
import MediaSet from "src/ui/partials/MediaSet.svelte"
|
||||
import Card from "src/ui/partials/Card.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import PersonCircle from "src/ui/partials/PersonCircle.svelte"
|
||||
import {sampleRelays} from "src/agent/relays"
|
||||
import user from "src/agent/user"
|
||||
import network from "src/agent/network"
|
@ -6,15 +6,15 @@
|
||||
import {fly} from "svelte/transition"
|
||||
import {fuzzy, annotateMedia} from "src/util/misc"
|
||||
import {displayPerson} from "src/util/nostr"
|
||||
import Button from "src/partials/Button.svelte"
|
||||
import Compose from "src/partials/Compose.svelte"
|
||||
import ImageInput from "src/partials/ImageInput.svelte"
|
||||
import Media from "src/partials/Media.svelte"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import RelayCardSimple from "src/partials/RelayCardSimple.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Modal from "src/partials/Modal.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Button from "src/ui/partials/Button.svelte"
|
||||
import Compose from "src/ui/partials/Compose.svelte"
|
||||
import ImageInput from "src/ui/partials/ImageInput.svelte"
|
||||
import Media from "src/ui/partials/Media.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import RelayCardSimple from "src/ui/partials/RelayCardSimple.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Modal from "src/ui/partials/Modal.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import {getUserWriteRelays} from "src/agent/relays"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
import {watch} from "src/agent/storage"
|
@ -5,11 +5,11 @@
|
||||
import {first} from "hurdak/lib/hurdak"
|
||||
import {log} from "src/util/logger"
|
||||
import {asDisplayEvent} from "src/util/nostr"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import RelayFeed from "src/views/feed/RelayFeed.svelte"
|
||||
import Modal from "src/partials/Modal.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Note from "src/views/notes/Note.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import RelayFeed from "src/ui/views/feed/RelayFeed.svelte"
|
||||
import Modal from "src/ui/partials/Modal.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import Note from "src/ui/views/notes/Note.svelte"
|
||||
import user from "src/agent/user"
|
||||
import network from "src/agent/network"
|
||||
import {sampleRelays} from "src/agent/relays"
|
@ -3,11 +3,11 @@
|
||||
import {closure, quantify} from "hurdak/lib/hurdak"
|
||||
import {formatTimestamp, tryJson} from "src/util/misc"
|
||||
import {Tags} from "src/util/nostr"
|
||||
import Badge from "src/partials/Badge.svelte"
|
||||
import Card from "src/partials/Card.svelte"
|
||||
import Popover from "src/partials/Popover.svelte"
|
||||
import NoteContent from "src/views/notes/NoteContent.svelte"
|
||||
import NotificationSection from "src/views/notifications/NotificationSection.svelte"
|
||||
import Badge from "src/ui/partials/Badge.svelte"
|
||||
import Card from "src/ui/partials/Card.svelte"
|
||||
import Popover from "src/ui/partials/Popover.svelte"
|
||||
import NoteContent from "src/ui/views/notes/NoteContent.svelte"
|
||||
import NotificationSection from "src/ui/views/notifications/NotificationSection.svelte"
|
||||
import {getPersonWithFallback, userEvents} from "src/agent/tables"
|
||||
import {modal} from "src/app/ui"
|
||||
|
@ -1,5 +1,5 @@
|
||||
<script lang="ts">
|
||||
import Badge from "src/partials/Badge.svelte"
|
||||
import Badge from "src/ui/partials/Badge.svelte"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
|
||||
export let pubkeys
|
@ -6,11 +6,11 @@
|
||||
import {navigate} from "svelte-routing"
|
||||
import {shuffle} from "src/util/misc"
|
||||
import {displayPerson} from "src/util/nostr"
|
||||
import OnboardingIntro from "src/views/onboarding/OnboardingIntro.svelte"
|
||||
import OnboardingKey from "src/views/onboarding/OnboardingKey.svelte"
|
||||
import OnboardingRelays from "src/views/onboarding/OnboardingRelays.svelte"
|
||||
import OnboardingFollows from "src/views/onboarding/OnboardingFollows.svelte"
|
||||
import OnboardingComplete from "src/views/onboarding/OnboardingComplete.svelte"
|
||||
import OnboardingIntro from "src/ui/views/onboarding/OnboardingIntro.svelte"
|
||||
import OnboardingKey from "src/ui/views/onboarding/OnboardingKey.svelte"
|
||||
import OnboardingRelays from "src/ui/views/onboarding/OnboardingRelays.svelte"
|
||||
import OnboardingFollows from "src/ui/views/onboarding/OnboardingFollows.svelte"
|
||||
import OnboardingComplete from "src/ui/views/onboarding/OnboardingComplete.svelte"
|
||||
import {getFollows} from "src/agent/social"
|
||||
import {getPubkeyWriteRelays, sampleRelays} from "src/agent/relays"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
@ -1,8 +1,8 @@
|
||||
<script lang="ts">
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
|
||||
export let signup
|
||||
|
@ -1,11 +1,11 @@
|
||||
<script lang="ts">
|
||||
import {without} from "ramda"
|
||||
import {fuzzy} from "src/util/misc"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import PersonInfo from "src/partials/PersonInfo.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import PersonInfo from "src/ui/partials/PersonInfo.svelte"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
import {watch} from "src/agent/storage"
|
||||
import {modal} from "src/app/ui"
|
@ -1,7 +1,7 @@
|
||||
<script lang="ts">
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import {modal} from "src/app/ui"
|
||||
|
||||
const tutorialUrl = "https://nostr.com/"
|
@ -1,10 +1,10 @@
|
||||
<script lang="ts">
|
||||
import {nip19} from "nostr-tools"
|
||||
import {copyToClipboard} from "src/util/html"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import pool from "src/agent/pool"
|
||||
import {modal, toast} from "src/app/ui"
|
||||
|
@ -1,11 +1,11 @@
|
||||
<script lang="ts">
|
||||
import {reject, pluck, whereEq} from "ramda"
|
||||
import {fuzzy} from "src/util/misc"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import RelayCard from "src/partials/RelayCard.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import RelayCard from "src/ui/partials/RelayCard.svelte"
|
||||
import {watch} from "src/agent/storage"
|
||||
import {modal} from "src/app/ui"
|
||||
|
@ -1,5 +1,5 @@
|
||||
<script lang="ts">
|
||||
import Feed from "src/views/feed/Feed.svelte"
|
||||
import Feed from "src/ui/views/feed/Feed.svelte"
|
||||
import {isLike} from "src/util/nostr"
|
||||
import {timedelta} from "src/util/misc"
|
||||
|
@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
import {timedelta} from "src/util/misc"
|
||||
import Feed from "src/views/feed/Feed.svelte"
|
||||
import Feed from "src/ui/views/feed/Feed.svelte"
|
||||
|
||||
export let pubkey
|
||||
export let relays
|
@ -1,6 +1,6 @@
|
||||
<script lang="ts">
|
||||
import {displayPerson} from "src/util/nostr"
|
||||
import PersonInfo from "src/partials/PersonInfo.svelte"
|
||||
import PersonInfo from "src/ui/partials/PersonInfo.svelte"
|
||||
import {getPubkeyWriteRelays, sampleRelays} from "src/agent/relays"
|
||||
import user from "src/agent/user"
|
||||
|
@ -2,9 +2,9 @@
|
||||
import {onMount} from "svelte"
|
||||
import {uniq, sortBy, pluck} from "ramda"
|
||||
import {Tags} from "src/util/nostr"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import PersonInfo from "src/views/person/PersonInfo.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import PersonInfo from "src/ui/views/person/PersonInfo.svelte"
|
||||
import {sampleRelays, getPubkeyWriteRelays} from "src/agent/relays"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
import {watch} from "src/agent/storage"
|
@ -1,8 +1,8 @@
|
||||
<script lang="ts">
|
||||
import {nip05, nip19} from "nostr-tools"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import RelayCard from "src/views/relays/RelayCard.svelte"
|
||||
import CopyValue from "src/partials/CopyValue.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import RelayCard from "src/ui/views/relays/RelayCard.svelte"
|
||||
import CopyValue from "src/ui/partials/CopyValue.svelte"
|
||||
import {onMount} from "svelte"
|
||||
import {fly} from "svelte/transition"
|
||||
|
@ -1,9 +1,9 @@
|
||||
<script>
|
||||
import {fuzzy} from "src/util/misc"
|
||||
import {personKinds} from "src/util/nostr"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Spinner from "src/partials/Spinner.svelte"
|
||||
import PersonInfo from "src/views/person/PersonInfo.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Spinner from "src/ui/partials/Spinner.svelte"
|
||||
import PersonInfo from "src/ui/views/person/PersonInfo.svelte"
|
||||
import {getUserReadRelays} from "src/agent/relays"
|
||||
import {watch} from "src/agent/storage"
|
||||
import network from "src/agent/network"
|
@ -1,8 +1,8 @@
|
||||
<script lang="ts">
|
||||
import {pluck} from "ramda"
|
||||
import {nip19} from "nostr-tools"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import QRCode from "src/partials/QRCode.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import QRCode from "src/ui/partials/QRCode.svelte"
|
||||
import {getPubkeyWriteRelays} from "src/agent/relays"
|
||||
|
||||
export let person
|
@ -2,14 +2,14 @@
|
||||
import {last} from "ramda"
|
||||
import {navigate} from "svelte-routing"
|
||||
import {displayPerson} from "src/util/nostr"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import user from "src/agent/user"
|
||||
import {sampleRelays, getPubkeyWriteRelays} from "src/agent/relays"
|
||||
import {getPersonWithFallback} from "src/agent/tables"
|
||||
import {watch} from "src/agent/storage"
|
||||
import {routes} from "src/app/ui"
|
||||
import PersonCircle from "src/partials/PersonCircle.svelte"
|
||||
import PersonAbout from "src/partials/PersonAbout.svelte"
|
||||
import PersonCircle from "src/ui/partials/PersonCircle.svelte"
|
||||
import PersonAbout from "src/ui/partials/PersonAbout.svelte"
|
||||
|
||||
export let pubkey
|
||||
|
@ -1,7 +1,7 @@
|
||||
<script>
|
||||
import {fly} from "svelte/transition"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import RelayCard from "src/views/relays/RelayCard.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import RelayCard from "src/ui/views/relays/RelayCard.svelte"
|
||||
|
||||
export let relays
|
||||
</script>
|
@ -1,9 +1,9 @@
|
||||
<script>
|
||||
import {fly} from "svelte/transition"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import Content from "src/partials/Content.svelte"
|
||||
import Heading from "src/partials/Heading.svelte"
|
||||
import Button from "src/partials/Button.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import Content from "src/ui/partials/Content.svelte"
|
||||
import Heading from "src/ui/partials/Heading.svelte"
|
||||
import Button from "src/ui/partials/Button.svelte"
|
||||
import user from "src/agent/user"
|
||||
import {toast, modal} from "src/app/ui"
|
||||
import {loadAppData} from "src/app"
|
@ -1,8 +1,8 @@
|
||||
<script lang="ts">
|
||||
import {find, last, propEq} from "ramda"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Popover from "src/partials/Popover.svelte"
|
||||
import OverflowMenu from "src/partials/OverflowMenu.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import Popover from "src/ui/partials/Popover.svelte"
|
||||
import OverflowMenu from "src/ui/partials/OverflowMenu.svelte"
|
||||
import user from "src/agent/user"
|
||||
import {getRelayWithFallback} from "src/agent/tables"
|
||||
|
@ -2,8 +2,8 @@
|
||||
import {find, propEq} from "ramda"
|
||||
import {onMount} from "svelte"
|
||||
import {poll} from "src/util/misc"
|
||||
import Toggle from "src/partials/Toggle.svelte"
|
||||
import RelayCard from "src/partials/RelayCard.svelte"
|
||||
import Toggle from "src/ui/partials/Toggle.svelte"
|
||||
import RelayCard from "src/ui/partials/RelayCard.svelte"
|
||||
import pool from "src/agent/pool"
|
||||
import user from "src/agent/user"
|
||||
import keys from "src/agent/keys"
|
@ -1,8 +1,8 @@
|
||||
<script>
|
||||
import {pluck} from "ramda"
|
||||
import {fuzzy} from "src/util/misc"
|
||||
import Input from "src/partials/Input.svelte"
|
||||
import RelayCard from "src/views/relays/RelayCard.svelte"
|
||||
import Input from "src/ui/partials/Input.svelte"
|
||||
import RelayCard from "src/ui/views/relays/RelayCard.svelte"
|
||||
import {watch} from "src/agent/storage"
|
||||
import user from "src/agent/user"
|
||||
|
@ -3,7 +3,7 @@
|
||||
import {between} from "hurdak/lib/hurdak"
|
||||
import {displayRelay} from "src/util/nostr"
|
||||
import {poll, stringToHue, hsl} from "src/util/misc"
|
||||
import Anchor from "src/partials/Anchor.svelte"
|
||||
import Anchor from "src/ui/partials/Anchor.svelte"
|
||||
import pool from "src/agent/pool"
|
||||
|
||||
export let relay
|
Loading…
Reference in New Issue
Block a user