mirror of
https://github.com/irislib/iris-messenger.git
synced 2024-09-19 09:43:29 +00:00
follow distance & idb save fix
This commit is contained in:
parent
bd0e998afb
commit
bf651318eb
@ -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 (
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user