mirror of
https://github.com/irislib/iris-messenger.git
synced 2024-09-19 17:46:33 +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);
|
console.log('what', event);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (UniqueIds.has(event.pubkey) && SocialNetwork.getFollowDistance(event.pubkey)) {
|
if (UniqueIds.has(event.pubkey) && SocialNetwork.getFollowDistance(event.pubkey) < 1000) {
|
||||||
const distance = SocialNetwork.followDistanceByUser.get(ID(event.pubkey));
|
const distance = SocialNetwork.getFollowDistance(event.pubkey);
|
||||||
if (distance && distance > globalFilter.maxFollowDistance) {
|
if (distance > globalFilter.maxFollowDistance) {
|
||||||
// follow distance too high, reject
|
// follow distance too high, reject
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -548,7 +548,6 @@ const Events = {
|
|||||||
// otherwise feed will be incomplete
|
// otherwise feed will be incomplete
|
||||||
if (saveToIdb && dev.indexedDbSave !== false) {
|
if (saveToIdb && dev.indexedDbSave !== false) {
|
||||||
const followDistance = SocialNetwork.getFollowDistance(event.pubkey);
|
const followDistance = SocialNetwork.getFollowDistance(event.pubkey);
|
||||||
|
|
||||||
if (followDistance <= 1) {
|
if (followDistance <= 1) {
|
||||||
IndexedDB.saveEvent(event as Event & { id: string });
|
IndexedDB.saveEvent(event as Event & { id: string });
|
||||||
} else if (
|
} else if (
|
||||||
|
@ -5,7 +5,6 @@ import { Event, Filter } from 'nostr-tools';
|
|||||||
import Events from './Events';
|
import Events from './Events';
|
||||||
import Key from './Key';
|
import Key from './Key';
|
||||||
|
|
||||||
// TODO: tags should be mapped to internal event ids in order to save space
|
|
||||||
type Tag = {
|
type Tag = {
|
||||||
id: string;
|
id: string;
|
||||||
eventId: string;
|
eventId: string;
|
||||||
@ -67,14 +66,14 @@ const IndexedDB = {
|
|||||||
await db.tags.bulkPut(tagsToSave);
|
await db.tags.bulkPut(tagsToSave);
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('bulkPut save error:', err);
|
console.error('idb bulkPut save error:', err);
|
||||||
}
|
}
|
||||||
}, 2000),
|
}, 2000),
|
||||||
|
|
||||||
saveEvent(event: Event & { id: string }) {
|
saveEvent(event: Event & { id: string }) {
|
||||||
const eventTags =
|
const eventTags =
|
||||||
event.tags
|
event.tags
|
||||||
?.filter((tag) => tag[0] === 'e') // only save replies & reactions for now
|
?.filter((tag) => ['e', 'p'].includes(tag[0]))
|
||||||
.map((tag) => ({
|
.map((tag) => ({
|
||||||
id: event.id.slice(0, 16) + '-' + tag[0].slice(0, 16) + '-' + tag[1].slice(0, 16),
|
id: event.id.slice(0, 16) + '-' + tag[0].slice(0, 16) + '-' + tag[1].slice(0, 16),
|
||||||
eventId: event.id,
|
eventId: event.id,
|
||||||
@ -128,12 +127,19 @@ const IndexedDB = {
|
|||||||
async find(filter: Filter) {
|
async find(filter: Filter) {
|
||||||
if (!filter) return;
|
if (!filter) return;
|
||||||
|
|
||||||
if (filter['#p']) return; // TODO save reactions & replies
|
|
||||||
|
|
||||||
const stringifiedFilter = JSON.stringify(filter);
|
const stringifiedFilter = JSON.stringify(filter);
|
||||||
if (this.seenFilters.has(stringifiedFilter)) return;
|
if (this.seenFilters.has(stringifiedFilter)) return;
|
||||||
this.seenFilters.add(stringifiedFilter);
|
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'])) {
|
if (filter['#e'] && Array.isArray(filter['#e'])) {
|
||||||
for (const eventId of filter['#e']) {
|
for (const eventId of filter['#e']) {
|
||||||
this.subscribedTags.add('e|' + eventId);
|
this.subscribedTags.add('e|' + eventId);
|
||||||
|
@ -28,6 +28,9 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
getFollowDistance: function (user: string): number {
|
getFollowDistance: function (user: string): number {
|
||||||
|
if (user === Key.getPubKey()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
const userId = ID(user);
|
const userId = ID(user);
|
||||||
const distance = this.followDistanceByUser.get(userId);
|
const distance = this.followDistanceByUser.get(userId);
|
||||||
return distance === undefined ? 1000 : distance;
|
return distance === undefined ? 1000 : distance;
|
||||||
|
@ -31,7 +31,6 @@ class Feed extends View {
|
|||||||
this.unsub = SocialNetwork.getFollowedByUser(
|
this.unsub = SocialNetwork.getFollowedByUser(
|
||||||
Key.getPubKey(),
|
Key.getPubKey(),
|
||||||
(followedUsers) => {
|
(followedUsers) => {
|
||||||
console.log('followedUsers', followedUsers);
|
|
||||||
this.setState({ followedUsers: Array.from(followedUsers) });
|
this.setState({ followedUsers: Array.from(followedUsers) });
|
||||||
},
|
},
|
||||||
true,
|
true,
|
||||||
|
Loading…
Reference in New Issue
Block a user