+; TODO Track timestamps of when a nick was seen.
+; TODO Track number of times a nick was seen.
+(: peers->nicks-by-url (-> (Listof Peer) (Immutable-HashTable Url (Setof String))))
+(define (peers->nicks-by-url peers)
+ (foldl
+ (match-lambda**
+ [((Peer #f _ _ _) tbl) tbl]
+ [((Peer n u _ _) tbl) (hash-update tbl u (λ (nicks) (set-add nicks n)) (set))])
+ (hash)
+ peers))
+
+(: update-nicks-history (-> (Listof Peer) Void))
+(define (update-nicks-history peers)
+ (hash-for-each
+ (peers->nicks-by-url peers)
+ (λ (url nicks-curr)
+ (define path (build-path tt-home-dir "nicks" "seen" (uri-encode (url->string url))))
+ (define nicks-prev
+ (if (file-exists? path)
+ (list->set (file->lines path))
+ (begin
+ (make-parent-directory* path)
+ (set))))
+ (display-lines-to-file
+ (set->list (set-union nicks-prev nicks-curr))
+ path
+ #:exists 'replace))))
+