follow distance & idb save fix

This commit is contained in:
Martti Malmi 2023-08-19 09:40:35 +03:00
parent bd0e998afb
commit bf651318eb
4 changed files with 17 additions and 10 deletions

View File

@ -400,9 +400,9 @@ const Events = {
console.log('what', event);
return false;
}
if (UniqueIds.has(event.pubkey) && SocialNetwork.getFollowDistance(event.pubkey)) {
const distance = SocialNetwork.followDistanceByUser.get(ID(event.pubkey));
if (distance && distance > globalFilter.maxFollowDistance) {
if (UniqueIds.has(event.pubkey) && SocialNetwork.getFollowDistance(event.pubkey) < 1000) {
const distance = SocialNetwork.getFollowDistance(event.pubkey);
if (distance > globalFilter.maxFollowDistance) {
// follow distance too high, reject
return false;
}
@ -548,7 +548,6 @@ const Events = {
// otherwise feed will be incomplete
if (saveToIdb && dev.indexedDbSave !== false) {
const followDistance = SocialNetwork.getFollowDistance(event.pubkey);
if (followDistance <= 1) {
IndexedDB.saveEvent(event as Event & { id: string });
} else if (

View File

@ -5,7 +5,6 @@ import { Event, Filter } from 'nostr-tools';
import Events from './Events';
import Key from './Key';
// TODO: tags should be mapped to internal event ids in order to save space
type Tag = {
id: string;
eventId: string;
@ -67,14 +66,14 @@ const IndexedDB = {
await db.tags.bulkPut(tagsToSave);
});
} catch (err) {
console.error('bulkPut save error:', err);
console.error('idb bulkPut save error:', err);
}
}, 2000),
saveEvent(event: Event & { id: string }) {
const eventTags =
event.tags
?.filter((tag) => tag[0] === 'e') // only save replies & reactions for now
?.filter((tag) => ['e', 'p'].includes(tag[0]))
.map((tag) => ({
id: event.id.slice(0, 16) + '-' + tag[0].slice(0, 16) + '-' + tag[1].slice(0, 16),
eventId: event.id,
@ -128,12 +127,19 @@ const IndexedDB = {
async find(filter: Filter) {
if (!filter) return;
if (filter['#p']) return; // TODO save reactions & replies
const stringifiedFilter = JSON.stringify(filter);
if (this.seenFilters.has(stringifiedFilter)) return;
this.seenFilters.add(stringifiedFilter);
if (filter['#p'] && Array.isArray(filter['#p'])) {
for (const eventId of filter['#p']) {
this.subscribedTags.add('p|' + eventId);
}
await this.subscribeToTags();
return;
}
if (filter['#e'] && Array.isArray(filter['#e'])) {
for (const eventId of filter['#e']) {
this.subscribedTags.add('e|' + eventId);

View File

@ -28,6 +28,9 @@ export default {
},
getFollowDistance: function (user: string): number {
if (user === Key.getPubKey()) {
return 0;
}
const userId = ID(user);
const distance = this.followDistanceByUser.get(userId);
return distance === undefined ? 1000 : distance;

View File

@ -31,7 +31,6 @@ class Feed extends View {
this.unsub = SocialNetwork.getFollowedByUser(
Key.getPubKey(),
(followedUsers) => {
console.log('followedUsers', followedUsers);
this.setState({ followedUsers: Array.from(followedUsers) });
},
true,