mirror of
https://github.com/vishalxl/nostr_console.git
synced 2025-06-28 09:41:05 +02:00
showed mutual follows in profile for self
This commit is contained in:
parent
cb8c74bef3
commit
438838af33
@ -193,6 +193,60 @@ void readjustAlignment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void printProfile(Store node, String profilePubkey) {
|
||||||
|
bool onlyUserPostAndLike (Tree t) => t.hasUserPostAndLike(profilePubkey);
|
||||||
|
node.printTree(0, DateTime.now().subtract(Duration(days:gNumLastDays)), onlyUserPostAndLike);
|
||||||
|
|
||||||
|
// get the latest kind 3 event for the user, which lists his 'follows' list
|
||||||
|
Event? contactEvent = getContactEvent(profilePubkey);
|
||||||
|
|
||||||
|
// if contact list was found, get user's feed, and keep the contact list for later use
|
||||||
|
String authorName = gKindONames[profilePubkey]?.name??"";
|
||||||
|
String pronoun = "";
|
||||||
|
if( profilePubkey == userPublicKey) {
|
||||||
|
printUnderlined("\nYour profile ($authorName):");
|
||||||
|
pronoun = "You";
|
||||||
|
} else {
|
||||||
|
printUnderlined("\nProfile for $authorName");
|
||||||
|
pronoun = "They";
|
||||||
|
}
|
||||||
|
|
||||||
|
print("\nName : $authorName ( ${profilePubkey} ).");
|
||||||
|
|
||||||
|
if (contactEvent != null ) {
|
||||||
|
String about = gKindONames[profilePubkey]?.about??"";
|
||||||
|
String picture = gKindONames[profilePubkey]?.picture??"";
|
||||||
|
int dateLastUpdated = gKindONames[profilePubkey]?.createdAt??0;
|
||||||
|
|
||||||
|
print("About : $about");
|
||||||
|
print("Picture : $picture");
|
||||||
|
print("Last Updated: ${getPrintableDate(dateLastUpdated)}\n");
|
||||||
|
|
||||||
|
if( profilePubkey != userPublicKey) {
|
||||||
|
if( contactEvent.eventData.contactList.any((x) => (x.id == userPublicKey))) {
|
||||||
|
print("* They follow you");
|
||||||
|
} else {
|
||||||
|
print("* They don't follow you");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// print social distance info.
|
||||||
|
node.printSocialDistance(profilePubkey, authorName);
|
||||||
|
print("");
|
||||||
|
|
||||||
|
stdout.write("$pronoun follow ${contactEvent.eventData.contactList.length} accounts: ");
|
||||||
|
contactEvent.eventData.contactList.forEach((x) => stdout.write("${getAuthorName(x.id)}, "));
|
||||||
|
print("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> followers = node.getFollowers(profilePubkey);
|
||||||
|
|
||||||
|
stdout.write("$pronoun have ${followers.length} followers: ");
|
||||||
|
followers.forEach((x) => stdout.write("${getAuthorName(x)}, "));
|
||||||
|
print("");
|
||||||
|
print("");
|
||||||
|
}
|
||||||
|
|
||||||
int showMenu(List<String> menuOptions, String menuName) {
|
int showMenu(List<String> menuOptions, String menuName) {
|
||||||
print("\n$menuName\n${getNumDashes(menuName.length)}");
|
print("\n$menuName\n${getNumDashes(menuName.length)}");
|
||||||
print('Pick an option:');
|
print('Pick an option:');
|
||||||
@ -259,47 +313,7 @@ Future<void> otherMenuUi(Store node) async {
|
|||||||
print("Could not find the user with that id or username.");
|
print("Could not find the user with that id or username.");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
String pk = pubkey.first;
|
printProfile(node, pubkey.first);
|
||||||
bool onlyUserPostAndLike (Tree t) => t.hasUserPostAndLike(pk);
|
|
||||||
node.printTree(0, DateTime.now().subtract(Duration(days:gNumLastDays)), onlyUserPostAndLike);
|
|
||||||
|
|
||||||
// get the latest kind 3 event for the user, which lists his 'follows' list
|
|
||||||
Event? contactEvent = getContactEvent(pubkey.first);
|
|
||||||
|
|
||||||
// if contact list was found, get user's feed, and keep the contact list for later use
|
|
||||||
String authorName = gKindONames[pubkey.first]?.name??"";
|
|
||||||
printUnderlined("\nProfile for User");
|
|
||||||
print("\nName : $authorName ( ${pubkey.first} ).");
|
|
||||||
|
|
||||||
if (contactEvent != null ) {
|
|
||||||
String about = gKindONames[pubkey.first]?.about??"";
|
|
||||||
String picture = gKindONames[pubkey.first]?.picture??"";
|
|
||||||
int dateLastUpdated = gKindONames[pubkey.first]?.createdAt??0;
|
|
||||||
|
|
||||||
print("About : $about");
|
|
||||||
print("Picture : $picture");
|
|
||||||
print("Last Updated: ${getPrintableDate(dateLastUpdated)}");
|
|
||||||
|
|
||||||
if( contactEvent.eventData.contactList.any((x) => (x.id == userPublicKey))) {
|
|
||||||
print("\n* They follow you");
|
|
||||||
} else {
|
|
||||||
print("\n* They don't follow you");
|
|
||||||
}
|
|
||||||
|
|
||||||
// print social distance info.
|
|
||||||
node.printSocialDistance(pubkey.first, authorName);
|
|
||||||
print("");
|
|
||||||
|
|
||||||
stdout.write("They follow ${contactEvent.eventData.contactList.length} accounts: ");
|
|
||||||
contactEvent.eventData.contactList.forEach((x) => stdout.write("${getAuthorName(x.id)}, "));
|
|
||||||
print("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> followers = node.getFollowers(pubkey.first);
|
|
||||||
stdout.write("They have ${followers.length} followers: ");
|
|
||||||
followers.forEach((x) => stdout.write("${getAuthorName(x)}, "));
|
|
||||||
print("");
|
|
||||||
print("");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -721,3 +735,5 @@ Future<void> mainMenuUi(Store node) async {
|
|||||||
} // end menu switch
|
} // end menu switch
|
||||||
} // end while
|
} // end while
|
||||||
} // end mainMenuUi()
|
} // end mainMenuUi()
|
||||||
|
|
||||||
|
|
||||||
|
@ -1300,12 +1300,15 @@ class Store {
|
|||||||
|
|
||||||
// finds all your followers, and then finds which of them follow the otherPubkey
|
// finds all your followers, and then finds which of them follow the otherPubkey
|
||||||
void printSocialDistance(String otherPubkey, String otherName) {
|
void printSocialDistance(String otherPubkey, String otherName) {
|
||||||
|
|
||||||
String otherName = getAuthorName(otherPubkey);
|
String otherName = getAuthorName(otherPubkey);
|
||||||
|
|
||||||
Event? contactEvent = getContactEvent(userPublicKey);
|
Event? contactEvent = getContactEvent(userPublicKey);
|
||||||
bool isFollow = false;
|
bool isFollow = false;
|
||||||
int numSecond = 0; // number of your follows who follow the other
|
int numSecond = 0; // number of your follows who follow the other
|
||||||
|
|
||||||
|
List<String> mutualFollows = [];
|
||||||
|
|
||||||
int numContacts = 0;
|
int numContacts = 0;
|
||||||
if( contactEvent != null) {
|
if( contactEvent != null) {
|
||||||
List<Contact> contacts = contactEvent.eventData.contactList;
|
List<Contact> contacts = contactEvent.eventData.contactList;
|
||||||
@ -1322,19 +1325,29 @@ class Store {
|
|||||||
followContactList = followContactEvent.eventData.contactList;
|
followContactList = followContactEvent.eventData.contactList;
|
||||||
for(int j = 0; j < followContactList.length; j++) {
|
for(int j = 0; j < followContactList.length; j++) {
|
||||||
if( followContactList[j].id == otherPubkey) {
|
if( followContactList[j].id == otherPubkey) {
|
||||||
|
mutualFollows.add(getAuthorName(contacts[i].id));
|
||||||
numSecond++;
|
numSecond++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}// end for loop through users contacts
|
}// end for loop through users contacts
|
||||||
|
|
||||||
|
//print("");
|
||||||
|
if( otherPubkey != userPublicKey) {
|
||||||
|
|
||||||
if( isFollow) {
|
if( isFollow) {
|
||||||
print("* You follow $otherName ");
|
print("* You follow $otherName ");
|
||||||
} else {
|
} else {
|
||||||
print("* You don't follow $otherName");
|
print("* You don't follow $otherName");
|
||||||
}
|
}
|
||||||
print("* Of the $numContacts people you follow, $numSecond follow $otherName");
|
|
||||||
|
|
||||||
|
stdout.write("* Of the $numContacts people you follow, $numSecond follow $otherName.");
|
||||||
|
} else {
|
||||||
|
stdout.write("* Of the $numContacts people you follow, $numSecond follow you back. Their names are: ");
|
||||||
|
mutualFollows.forEach((name) { stdout.write("$name, ");});
|
||||||
|
}
|
||||||
|
print("");
|
||||||
} // end if contact event was found
|
} // end if contact event was found
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ version: 0.0.7-beta
|
|||||||
homepage: https://github.com/vishalxl/nostr_console
|
homepage: https://github.com/vishalxl/nostr_console
|
||||||
|
|
||||||
|
|
||||||
# got all 40 and 42 events too
|
# mutual follows
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=2.17.3 <3.0.0'
|
sdk: '>=2.17.3 <3.0.0'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user