sdk: automatically store replaceable events since we already check the local store for them.
This commit is contained in:
@@ -73,6 +73,7 @@ func fetchGenericList[V comparable, I TagItemWithValue[V]](
|
|||||||
newV := tryFetchListFromNetwork(ctx, sys, pubkey, replaceableIndex, parseTag)
|
newV := tryFetchListFromNetwork(ctx, sys, pubkey, replaceableIndex, parseTag)
|
||||||
if newV != nil && newV.Event.CreatedAt > v.Event.CreatedAt {
|
if newV != nil && newV.Event.CreatedAt > v.Event.CreatedAt {
|
||||||
v = *newV
|
v = *newV
|
||||||
|
sys.Store.ReplaceEvent(*v.Event)
|
||||||
}
|
}
|
||||||
|
|
||||||
// register this even if we didn't find anything because we tried
|
// register this even if we didn't find anything because we tried
|
||||||
@@ -93,6 +94,7 @@ func fetchGenericList[V comparable, I TagItemWithValue[V]](
|
|||||||
// we'll only save this if we got something which means we found at least one event
|
// we'll only save this if we got something which means we found at least one event
|
||||||
lastFetchKey := makeLastFetchKey(actualKind, pubkey)
|
lastFetchKey := makeLastFetchKey(actualKind, pubkey)
|
||||||
sys.KVStore.Set(lastFetchKey, encodeTimestamp(nostr.Now()))
|
sys.KVStore.Set(lastFetchKey, encodeTimestamp(nostr.Now()))
|
||||||
|
sys.Store.SaveEvent(*v.Event)
|
||||||
}
|
}
|
||||||
|
|
||||||
// save cache even if we didn't get anything
|
// save cache even if we didn't get anything
|
||||||
|
|||||||
@@ -124,6 +124,8 @@ func (sys *System) FetchProfileMetadata(ctx context.Context, pubkey nostr.PubKey
|
|||||||
newM := sys.tryFetchMetadataFromNetwork(ctx, pubkey)
|
newM := sys.tryFetchMetadataFromNetwork(ctx, pubkey)
|
||||||
if newM != nil && newM.Event.CreatedAt > pm.Event.CreatedAt {
|
if newM != nil && newM.Event.CreatedAt > pm.Event.CreatedAt {
|
||||||
pm = *newM
|
pm = *newM
|
||||||
|
|
||||||
|
sys.Store.ReplaceEvent(*pm.Event)
|
||||||
}
|
}
|
||||||
|
|
||||||
// even if we didn't find anything register this because we tried
|
// even if we didn't find anything register this because we tried
|
||||||
@@ -140,6 +142,8 @@ func (sys *System) FetchProfileMetadata(ctx context.Context, pubkey nostr.PubKey
|
|||||||
if newM := sys.tryFetchMetadataFromNetwork(ctx, pubkey); newM != nil {
|
if newM := sys.tryFetchMetadataFromNetwork(ctx, pubkey); newM != nil {
|
||||||
pm = *newM
|
pm = *newM
|
||||||
|
|
||||||
|
sys.Store.SaveEvent(*pm.Event)
|
||||||
|
|
||||||
// we'll only save this if we got something which means we found at least one event
|
// we'll only save this if we got something which means we found at least one event
|
||||||
lastFetchKey := makeLastFetchKey(0, pubkey)
|
lastFetchKey := makeLastFetchKey(0, pubkey)
|
||||||
sys.KVStore.Set(lastFetchKey, encodeTimestamp(nostr.Now()))
|
sys.KVStore.Set(lastFetchKey, encodeTimestamp(nostr.Now()))
|
||||||
|
|||||||
@@ -63,6 +63,9 @@ func fetchGenericSets[V comparable, I TagItemWithValue[V]](
|
|||||||
|
|
||||||
// unlike for lists, when fetching sets we will blindly trust whatever we get from the network
|
// unlike for lists, when fetching sets we will blindly trust whatever we get from the network
|
||||||
v = *newV
|
v = *newV
|
||||||
|
for _, evt := range newV.Events {
|
||||||
|
sys.Store.ReplaceEvent(evt)
|
||||||
|
}
|
||||||
|
|
||||||
// even if we didn't find anything register this because we tried
|
// even if we didn't find anything register this because we tried
|
||||||
// (and we still have the previous event in our local store)
|
// (and we still have the previous event in our local store)
|
||||||
@@ -79,6 +82,10 @@ func fetchGenericSets[V comparable, I TagItemWithValue[V]](
|
|||||||
if newV := tryFetchSetsFromNetwork(ctx, sys, pubkey, addressableIndex, parseTag); newV != nil {
|
if newV := tryFetchSetsFromNetwork(ctx, sys, pubkey, addressableIndex, parseTag); newV != nil {
|
||||||
v = *newV
|
v = *newV
|
||||||
|
|
||||||
|
for _, evt := range newV.Events {
|
||||||
|
sys.Store.ReplaceEvent(evt)
|
||||||
|
}
|
||||||
|
|
||||||
// we'll only save this if we got something which means we found at least one event
|
// we'll only save this if we got something which means we found at least one event
|
||||||
lastFetchKey := makeLastFetchKey(actualKind, pubkey)
|
lastFetchKey := makeLastFetchKey(actualKind, pubkey)
|
||||||
sys.KVStore.Set(lastFetchKey, encodeTimestamp(nostr.Now()))
|
sys.KVStore.Set(lastFetchKey, encodeTimestamp(nostr.Now()))
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ func (rs *RelayStream) Next() string {
|
|||||||
func NewSystem() *System {
|
func NewSystem() *System {
|
||||||
sys := &System{
|
sys := &System{
|
||||||
KVStore: kvstore_memory.NewStore(),
|
KVStore: kvstore_memory.NewStore(),
|
||||||
RelayListRelays: NewRelayStream("wss://purplepag.es", "wss://user.kindpag.es", "wss://relay.nos.social"),
|
RelayListRelays: NewRelayStream("wss://indexer.coracle.social", "wss://purplepag.es", "wss://user.kindpag.es", "wss://relay.nos.social"),
|
||||||
FollowListRelays: NewRelayStream("wss://purplepag.es", "wss://user.kindpag.es", "wss://relay.nos.social"),
|
FollowListRelays: NewRelayStream("wss://purplepag.es", "wss://user.kindpag.es", "wss://relay.nos.social"),
|
||||||
MetadataRelays: NewRelayStream("wss://purplepag.es", "wss://user.kindpag.es", "wss://relay.nos.social"),
|
MetadataRelays: NewRelayStream("wss://purplepag.es", "wss://user.kindpag.es", "wss://relay.nos.social"),
|
||||||
FallbackRelays: NewRelayStream(
|
FallbackRelays: NewRelayStream(
|
||||||
|
|||||||
Reference in New Issue
Block a user