Show global feed on platform instances

This commit is contained in:
Jon Staab 2024-06-07 13:58:09 -07:00
parent fc17b69425
commit 0ce1cd4c71
6 changed files with 28 additions and 24 deletions

View File

@ -277,7 +277,7 @@
<span class="hidden sm:inline">Encrypted</span>
</div>
{/if}
{#if $seenOn?.length > 0}
{#if $seenOn?.length > 0 && ($env.PLATFORM_RELAYS.length === 0 || $env.PLATFORM_RELAYS.length > 1)}
<div
class="staatliches hidden cursor-pointer rounded bg-neutral-800 px-2 text-neutral-100 transition-colors hover:bg-neutral-700 dark:bg-neutral-600 dark:hover:bg-neutral-500 sm:block"
on:click={() => setView("info")}>

View File

@ -1,6 +1,6 @@
import {partition, prop, uniqBy} from "ramda"
import {batch, seconds} from "hurdak"
import {writable, inc, sortBy, avg, now} from "@welshman/lib"
import {writable, inc, sortBy, now} from "@welshman/lib"
import type {TrustedEvent} from "@welshman/util"
import {
Tags,
@ -108,7 +108,7 @@ export class FeedLoader {
if (this.feedLoader.compiler.canCompile(opts.feed)) {
this.compiled = this.feedLoader.compiler.compile(opts.feed)
this.compiled.then(requests => {
this.delta = avg(requests.map(r => guessFilterDelta(r.filters)))
this.delta = guessFilterDelta(requests.flatMap(r => r.filters || []))
if (opts.shouldListen) {
const tracker = new Tracker()
@ -116,7 +116,7 @@ export class FeedLoader {
const onEvent = this.onEvent(this.prependToFeed)
for (const {relays, filters} of requests) {
const forcePlatform = opts.forcePlatform && relays.length === 0
const forcePlatform = opts.forcePlatform && (relays?.length || 0) === 0
for (const request of Array.from(getRequestItems({relays, filters}))) {
subscribe({

View File

@ -1,12 +1,20 @@
<script lang="ts">
import {makeRelayFeed} from "@welshman/feeds"
import Anchor from "src/partials/Anchor.svelte"
import Feed from "src/app/shared/Feed.svelte"
import {router} from "src/app/util/router"
import {globalFeed} from "src/app/state"
import {session} from "src/engine"
import {makeFeed} from "src/domain"
import {session, env} from "src/engine"
const isPlatformFeed = $env.PLATFORM_RELAYS.length > 0
const showLogin = () => router.at("login").open()
if (isPlatformFeed) {
globalFeed.set(makeFeed({definition: makeRelayFeed(...$env.PLATFORM_RELAYS)}))
}
document.title = "Feeds"
</script>
@ -19,4 +27,4 @@
</div>
{/if}
<Feed skipCache showControls showGroup bind:feed={$globalFeed} />
<Feed skipCache showGroup showControls={!isPlatformFeed} bind:feed={$globalFeed} />

View File

@ -46,15 +46,20 @@
const loader = loadGiftWraps()
updateCurrentSession(assoc("groups_last_synced", now()))
loadGroupMessages()
load({
skipCache: true,
forcePlatform: false,
relays: hints.User().getUrls(),
filters: [
{kinds: [35834, 34550], authors: admins},
{kinds: [35834, 34550], limit: 500},
],
filters: [{kinds: [35834, 34550], authors: admins}],
})
load({
skipCache: true,
relays: hints.User().getUrls(),
filters: [{kinds: [35834, 34550], limit: 500}],
})
return () => {

View File

@ -9,17 +9,7 @@ import {
makeRelayFeed,
makeUnionFeed,
} from "@welshman/feeds"
import {
Worker,
bech32ToHex,
pick,
cached,
nthEq,
nth,
now,
writable,
max,
} from "@welshman/lib"
import {Worker, bech32ToHex, pick, cached, nthEq, nth, now, writable, max} from "@welshman/lib"
import type {Filter, TrustedEvent, SignedEvent} from "@welshman/util"
import {
Tags,
@ -179,7 +169,7 @@ export const loadGroups = async (rawAddrs: string[], explicitRelays: string[] =
.merge([hints.product(addrs, explicitRelays), hints.WithinMultipleContexts(addrs)])
.getUrls()
return load({relays, filters, skipCache: true})
return load({relays, filters, skipCache: true, forcePlatform: false})
}
}
@ -194,7 +184,7 @@ export const loadGroupMessages = (addresses?: string[]) => {
const filters = [{kinds: giftWrapKinds, "#p": pubkeys, since}]
if (pubkeys.length > 0) {
promises.push(load({relays, filters, skipCache: true}))
promises.push(load({relays, filters, skipCache: true, forcePlatform: false}))
}
}
@ -204,7 +194,7 @@ export const loadGroupMessages = (addresses?: string[]) => {
const since = Math.max(now() - seconds(7, "day"), info.since)
const filters = [{kinds, "#a": [address], since}]
promises.push(load({relays, filters, skipCache: true}))
promises.push(load({relays, filters, skipCache: true, forcePlatform: false}))
}
updateCurrentSession($session => {

View File

@ -1427,6 +1427,7 @@ export const onAuth = async (url, challenge) => {
seenChallenges.add(challenge)
console.log(url, challenge)
const event = await signer.get().signAsUser(
createEvent(22242, {
tags: [