mirror of
https://github.com/vishalxl/nostr_console.git
synced 2025-06-04 20:19:16 +02:00
received events for ptags/mentions. Then removed duplicate events received.
This commit is contained in:
parent
f19135bfa2
commit
f0156c3bae
@ -22,16 +22,31 @@ Future<void> main() async {
|
||||
|
||||
print('waiting for feed to come in');
|
||||
Future.delayed(const Duration(milliseconds: 4000), () {
|
||||
events.sort(ascendingTime);
|
||||
events.removeWhere( (item) => item.eventData.kind != 1 );
|
||||
print('====================all events =================');
|
||||
|
||||
//printEvents(events);
|
||||
List<String> pTags = getpTags(events);
|
||||
stdout.write("Total number of pTags = ${pTags.length}\n");
|
||||
|
||||
Tree node = Tree.fromEvents(events);
|
||||
node.printTree(0, true);
|
||||
print('\nnumber of all events: ${events.length}');
|
||||
exit(0);
|
||||
for(int i = 0; i < pTags.length; i++) {
|
||||
getUserEvents( defaultServerUrl, pTags[i], events, 10);
|
||||
}
|
||||
|
||||
Future.delayed(const Duration(milliseconds: 4000), () {
|
||||
|
||||
// remove duplicate events
|
||||
final ids = Set();
|
||||
events.retainWhere((x) => ids.add(x.eventData.id));
|
||||
|
||||
// create tree from events
|
||||
Tree node = Tree.fromEvents(events);
|
||||
|
||||
// print all the events in tree form
|
||||
node.printTree(0, true);
|
||||
|
||||
print('\nnumber of all events: ${events.length}');
|
||||
exit(0);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
@ -34,20 +34,21 @@ class EventData {
|
||||
String content;
|
||||
String eTagParent; // direct parent tag
|
||||
List<String> eTagsRest;// rest of e tags
|
||||
|
||||
List<String> pTags;// list of p tags for kind:1
|
||||
|
||||
List<Contact> contactList = [];
|
||||
List<Contact> contactList = []; // used for kind:3 events, which is contact list event
|
||||
|
||||
EventData(this.id, this.pubkey, this.createdAt, this.kind, this.content, this.eTagParent, this.eTagsRest, this.contactList);
|
||||
EventData(this.id, this.pubkey, this.createdAt, this.kind, this.content, this.eTagParent, this.eTagsRest, this.pTags, this.contactList);
|
||||
|
||||
factory EventData.fromJson(dynamic json) {
|
||||
List<Contact> contactList = [];
|
||||
|
||||
List<String> eTagsRead = [];
|
||||
List<String> pTagsRead = [];
|
||||
String eTagParentRead = "";
|
||||
|
||||
var jsonTags = json['tags'];
|
||||
stdout.write("In fromJson: jsonTags = $jsonTags");
|
||||
//stdout.write("In fromJson: jsonTags = $jsonTags");
|
||||
|
||||
var numTags = jsonTags.length;
|
||||
|
||||
@ -70,10 +71,14 @@ class EventData {
|
||||
if ( json['kind'] == 1) {
|
||||
for( int i = 0; i < numTags; i++) {
|
||||
var tag = jsonTags[i];
|
||||
stdout.write(tag);
|
||||
//stdout.write(tag);
|
||||
//print(tag.runtimeType);
|
||||
if( tag[0] == "e") {
|
||||
eTagsRead.add(tag[1]);
|
||||
} else {
|
||||
if( tag[0] == "p") {
|
||||
pTagsRead.add(tag[1]);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO add other tags
|
||||
@ -88,6 +93,7 @@ class EventData {
|
||||
json['content'] as String,
|
||||
eTagParentRead,
|
||||
eTagsRead,
|
||||
pTagsRead,
|
||||
contactList);
|
||||
}
|
||||
|
||||
@ -139,7 +145,7 @@ class Event {
|
||||
if( json.length < 3) {
|
||||
String e = "";
|
||||
e = json.length > 1? json[0]: "";
|
||||
return Event(e,"",EventData("non","", 0, 0, "", "", [], []), [relay]);
|
||||
return Event(e,"",EventData("non","", 0, 0, "", "", [], [], []), [relay]);
|
||||
}
|
||||
return Event(json[0] as String, json[1] as String, EventData.fromJson(json[2]), [relay] );
|
||||
}
|
||||
@ -168,14 +174,14 @@ class Tree {
|
||||
for( int i = 0; i < events.length; i++) {
|
||||
|
||||
Event e = events[i];
|
||||
stdout.write("processing event number $i : $e \n");
|
||||
//stdout.write("processing event number $i : $e \n");
|
||||
if( e.eventData.eTagsRest.isNotEmpty) {
|
||||
// in case the event has a parent, add it to the list of non Top Events
|
||||
stdout.write("Event has e tags: ${e.eventData.eTagsRest}\n");
|
||||
//stdout.write("Event has e tags: ${e.eventData.eTagsRest}\n");
|
||||
nonTopEvents.add(e);
|
||||
}
|
||||
else {
|
||||
stdout.write("Adding top child: $e\n");
|
||||
//stdout.write("Adding top child: $e\n");
|
||||
Tree node;
|
||||
node = Tree(e, []);
|
||||
childTrees.add(node);
|
||||
@ -260,10 +266,17 @@ class Tree {
|
||||
}
|
||||
}
|
||||
|
||||
List<String> getpTags(List<Event> events) {
|
||||
List<String> pTags = [];
|
||||
for(int i = 0; i < events.length; i++) {
|
||||
pTags.addAll(events[i].eventData.pTags);
|
||||
}
|
||||
return pTags;
|
||||
}
|
||||
|
||||
int ascendingTime(Event a, Event b) {
|
||||
if(a.eventData.createdAt < b.eventData.createdAt) {
|
||||
print( 'ascendingTime : comparing two ${a.eventData.createdAt} and ${b.eventData.createdAt}');
|
||||
//print( 'ascendingTime : comparing two ${a.eventData.createdAt} and ${b.eventData.createdAt}');
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
@ -271,7 +284,7 @@ int ascendingTime(Event a, Event b) {
|
||||
|
||||
int ascendingTimeTree(Tree a, Tree b) {
|
||||
if(a.e.eventData.createdAt < b.e.eventData.createdAt) {
|
||||
print( 'ascendingTimeTree : comparing two ${a.e.eventData.createdAt} and ${b.e.eventData.createdAt}');
|
||||
//print( 'ascendingTimeTree : comparing two ${a.e.eventData.createdAt} and ${b.e.eventData.createdAt}');
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
|
@ -49,7 +49,7 @@ class Relays {
|
||||
fws.then((WebSocket ws) {
|
||||
ws.listen(
|
||||
(d) {
|
||||
print(d);
|
||||
//print(d);
|
||||
Event e;
|
||||
try {
|
||||
e = Event.fromJson(jsonDecode(d), relay);
|
||||
|
@ -2,8 +2,8 @@ import 'package:nostr_console/nostr_console.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
|
||||
EventData exampleEdata = EventData("id", "pubkey", 1111111, 1, "content", "", [], []);
|
||||
EventData exampleEdataChild = EventData("id", "pubkey", 1111111, 1, "content child", "", [], []);
|
||||
EventData exampleEdata = EventData("id", "pubkey", 1111111, 1, "content", "", [], [], []);
|
||||
EventData exampleEdataChild = EventData("id", "pubkey", 1111111, 1, "content child", "", [], [], []);
|
||||
|
||||
Event exampleEvent = Event('event', 'id', exampleEdata, ['relay name']);
|
||||
Event exampleEventChild = Event('event', 'id', exampleEdataChild, ['relay name']);
|
||||
@ -15,7 +15,7 @@ Tree exampleNodeChild = Tree(exampleEventChild, []);
|
||||
|
||||
void main() {
|
||||
test('PrintEmptyEvent', () {
|
||||
expect(EventData("non","",1,1,"", "", [], []).toString(), "");
|
||||
expect(EventData("non","",1,1,"", "", [], [], []).toString(), "");
|
||||
});
|
||||
|
||||
test('printEventNode', () {
|
||||
|
Loading…
x
Reference in New Issue
Block a user