minor changes

This commit is contained in:
vishalxl
2022-07-31 02:41:31 +05:30
parent 2e18ca8632
commit f42c186363
3 changed files with 50 additions and 18 deletions

View File

@@ -37,7 +37,7 @@ Future<void> main() async {
Tree node = Tree.fromEvents(events); Tree node = Tree.fromEvents(events);
node.printEventNode(0); node.printEventNode(0);
print('number of all events: ${events.length}'); print('\nnumber of all events: ${events.length}');
exit(0); exit(0);

View File

@@ -28,27 +28,33 @@ class Contact {
} }
} }
class EventData { class EventData {
String id; String id;
String pubkey; String pubkey;
String content;
int createdAt; int createdAt;
int kind; int kind;
String content;
Map<String, String> tags;
List<Contact> contactList = []; List<Contact> contactList = [];
EventData(this.id, this.pubkey, this.content, this.createdAt, this.kind, this.contactList); EventData(this.id, this.pubkey, this.createdAt, this.kind, this.content, this.tags, this.contactList);
factory EventData.fromJson(dynamic json) { factory EventData.fromJson(dynamic json) {
List<Contact> contactList = []; List<Contact> contactList = [];
Map<String, String> t = {};
var jsonTags = json['tags'];
//print(jsonTags);
var numTags = jsonTags.length;
// NIP 02: if the event is a contact list type, then populate contactList // NIP 02: if the event is a contact list type, then populate contactList
if(json['kind'] == 3) { if(json['kind'] == 3) {
var tags = json['tags'];
//print(tags);
var numTags = tags.length;
for( int i = 0; i < numTags; i++) { for( int i = 0; i < numTags; i++) {
var tag = jsonTags[i];
var tag = tags[i];
var n = tag.length; var n = tag.length;
String server = defaultServerUrl; String server = defaultServerUrl;
if( n >=3 ) { if( n >=3 ) {
@@ -60,15 +66,29 @@ class EventData {
Contact c = Contact(tag[1] as String, server, 3.toString()); Contact c = Contact(tag[1] as String, server, 3.toString());
contactList.add(c); contactList.add(c);
} }
} else {
if ( json['kind'] == 1) {
for( int i = 0; i < numTags; i++) {
var tag = jsonTags[i];
var n = tag.length;
//print(tag);
//print(tag.runtimeType);
if( tag[0] == "e") {
t["e"] = tag[1];
break;
}
// TODO add other tags
}
}
} }
// return
return EventData(json['id'] as String, return EventData(json['id'] as String,
json['pubkey'] as String, json['pubkey'] as String,
json['content'] as String,
json['created_at'] as int, json['created_at'] as int,
json['kind'] as int, json['kind'] as int,
json['content'] as String,
t,
contactList); contactList);
} }
@@ -119,7 +139,7 @@ class Event {
if( json.length < 3) { if( json.length < 3) {
String e = ""; String e = "";
e = json.length > 1? json[0]: ""; 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] ); return Event(json[0] as String, json[1] as String, EventData.fromJson(json[2]), [relay] );
@@ -153,13 +173,25 @@ class Tree {
factory Tree.fromEvents(List<Event> events) { factory Tree.fromEvents(List<Event> events) {
Event e = events[0]; Event e = events[0];
List<Tree> childTrees = []; List<Tree> childTrees = [];
List<Event> nonTopEvents = [];
for( int i = 0; i < events.length; i++) { for( int i = 0; i < events.length; i++) {
Event e = events[i]; Event e = events[i];
Tree node = Tree(e, []); if( e.eventData.tags.isNotEmpty) {
stdout.write("${e.eventData.tags}\n");
nonTopEvents.add(e);
}
else {
stdout.write("Adding top child: $e\n");
Tree node;
node = Tree(e, []);
childTrees.add(node);
}
}
childTrees.add(node); for(int i = 0; i < nonTopEvents.length; i++) {
} }
return Tree( e, childTrees); return Tree( e, childTrees);

View File

@@ -2,8 +2,8 @@ import 'package:nostr_console/nostr_console.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';
EventData exampleEdata = EventData("id", "pubkey", "content", 1111111, 1, []); EventData exampleEdata = EventData("id", "pubkey", 1111111, 1, "content", {}, []);
EventData exampleEdataChild = EventData("id", "pubkey", "content child", 1111111, 1, []); EventData exampleEdataChild = EventData("id", "pubkey", 1111111, 1, "content child", {}, []);
Event exampleEvent = Event('event', 'id', exampleEdata, ['relay name']); Event exampleEvent = Event('event', 'id', exampleEdata, ['relay name']);
Event exampleEventChild = Event('event', 'id', exampleEdataChild, ['relay name']); Event exampleEventChild = Event('event', 'id', exampleEdataChild, ['relay name']);
@@ -15,7 +15,7 @@ Tree exampleNodeChild = Tree(exampleEventChild, []);
void main() { void main() {
test('PrintEmptyEvent', () { test('PrintEmptyEvent', () {
expect(EventData("non","","",1,1,[]).toString(), ""); expect(EventData("non","",1,1,"", {}, []).toString(), "");
}); });
test('printEventNode', () { test('printEventNode', () {