Split app/core up into domain-oriented files
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import {get} from "svelte/store"
|
||||
import {
|
||||
FOLLOWS,
|
||||
MESSAGING_RELAYS,
|
||||
PROFILE,
|
||||
RELAYS,
|
||||
createProfile,
|
||||
editProfile,
|
||||
isPublishedProfile,
|
||||
isSignedEvent,
|
||||
makeEvent,
|
||||
} from "@welshman/util"
|
||||
import type {Profile} from "@welshman/util"
|
||||
import {nthNe} from "@welshman/lib"
|
||||
import {publishThunk, pubkey, repository} from "@welshman/app"
|
||||
import {Router} from "@welshman/router"
|
||||
import {DEFAULT_RELAYS} from "@app/env"
|
||||
import {userSpaceUrls} from "@app/groups"
|
||||
|
||||
export const broadcastUserData = async (relays: string[]) => {
|
||||
const authors = [pubkey.get()!]
|
||||
const kinds = [RELAYS, MESSAGING_RELAYS, FOLLOWS, PROFILE]
|
||||
const events = repository.query([{kinds, authors}])
|
||||
|
||||
for (const event of events) {
|
||||
if (isSignedEvent(event)) {
|
||||
await publishThunk({event, relays}).complete
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const initProfile = (profile: Profile) => {
|
||||
const event = makeEvent(PROFILE, createProfile(profile))
|
||||
|
||||
return publishThunk({event, relays: DEFAULT_RELAYS})
|
||||
}
|
||||
|
||||
export const updateProfile = ({profile}: {profile: Profile}) => {
|
||||
const router = Router.get()
|
||||
const template = isPublishedProfile(profile) ? editProfile(profile) : createProfile(profile)
|
||||
const scenarios = [router.FromRelays(get(userSpaceUrls)), router.FromUser(), router.Index()]
|
||||
|
||||
// Remove protected tag, we used to add it
|
||||
template.tags = template.tags.filter(nthNe(0, "-"))
|
||||
|
||||
const event = makeEvent(template.kind, template)
|
||||
const relays = router.merge(scenarios).getUrls()
|
||||
|
||||
return publishThunk({event, relays})
|
||||
}
|
||||
Reference in New Issue
Block a user