diff --git a/lib/nostr_console.dart b/lib/nostr_console.dart index 999de55..ba5dc7e 100644 --- a/lib/nostr_console.dart +++ b/lib/nostr_console.dart @@ -1,4 +1,8 @@ +import 'dart:io'; + + +const int spacesPerDepth = 4; int keyLenPrinted = 6; String defaultServerUrl = 'wss://nostr.onsats.org'; @@ -56,6 +60,37 @@ class EventData { json['kind'] as int, contactList); } + + void printDepth(int d) { + int numSpaces = d * spacesPerDepth; + do { + stdout.write(" "); + numSpaces = numSpaces - 1; + } + + while(numSpaces > 0); + } + + void printEventData(int depth) { + String max3(String v) => v.length > 3? v.substring(0,3) : v.substring(0, v.length); + DateTime dTime = DateTime.fromMillisecondsSinceEpoch(createdAt *1000); + if( createdAt == 0) { + print("debug: createdAt == 0 for event $content"); + } + + + print(""); + printDepth(depth); + stdout.write("-------+\n"); + printDepth(depth); + stdout.write("Author : ${max3(pubkey)}\n"); + printDepth(depth); + stdout.write("Message: $content\n\n"); + printDepth(depth); + stdout.write("id : ${max3(id)} Time: $dTime Kind: $kind"); + + } + @override String toString() { if( id == "non") { @@ -90,6 +125,10 @@ class Event { return Event(json[0] as String, json[1] as String, EventData.fromJson(json[2]), [relay] ); } + void printEvent(int depth) { + eventData.printEventData(depth); + } + @override String toString() { return '$eventData Seen on: ${seenOnRelays[0]}\n'; @@ -105,6 +144,31 @@ int ascendingTime(Event a, Event b) { return 1; } +class EventNode { + Event e; + List children; + + EventNode(this.e, this.children); + + addChild(Event child) { + EventNode node; + node = EventNode(child, []); + children.add(node); + } + + void printEventNode(int depth) { + e.printEvent(depth); + + for( int i = 0; i < children.length; i++) { + + } + + } + + +} + + void printEvents(List events) { events.sort(ascendingTime); for( int i = 0; i < events.length; i++) { diff --git a/test/nostr_console_test.dart b/test/nostr_console_test.dart index fc04471..561781d 100644 --- a/test/nostr_console_test.dart +++ b/test/nostr_console_test.dart @@ -1,8 +1,33 @@ import 'package:nostr_console/nostr_console.dart'; import 'package:test/test.dart'; + +EventData exampleEdata = EventData("id", "pubkey", "content", 1111111, 1, []); +EventData exampleEdataChild = EventData("id", "pubkey", "content child", 1111111, 1, []); + +Event exampleEvent = Event('event', 'id', exampleEdata, ['relay name']); +Event exampleEventChild = Event('event', 'id', exampleEdataChild, ['relay name']); + +EventNode exampleNode = EventNode(exampleEvent, []); +EventNode exampleNodeChild = EventNode(exampleEventChild, []); + + + void main() { test('PrintEmptyEvent', () { expect(EventData("non","","",1,1,[]).toString(), ""); }); + + test('printEventNode', () { + + + EventNode node = exampleNode; + Event child = exampleEventChild; + + node.addChild(child); + + print("node"); + node.printEventNode(4); + + }); }