summaryrefslogtreecommitdiffstats
path: root/front_end/src/author_page.rs
diff options
context:
space:
mode:
authorKornel <kornel@geekhood.net>2020-03-03 12:37:27 +0000
committerKornel <kornel@geekhood.net>2020-03-10 00:43:41 +0000
commitc516d4775a9d1db845db69e3917c371f894c1e50 (patch)
tree475d31da6fda0ce059b9e9e0b0372ead285735c9 /front_end/src/author_page.rs
parent68044807289ac950b94fa0d02c58d7531b127863 (diff)
author
Diffstat (limited to 'front_end/src/author_page.rs')
-rw-r--r--front_end/src/author_page.rs24
1 files changed, 22 insertions, 2 deletions
diff --git a/front_end/src/author_page.rs b/front_end/src/author_page.rs
index bf3a548..5bb2ae2 100644
--- a/front_end/src/author_page.rs
+++ b/front_end/src/author_page.rs
@@ -1,10 +1,15 @@
-use crate::templates;
use crate::Page;
+use crate::templates;
+use futures::stream::StreamExt;
+use kitchen_sink::CrateOwnerRow;
use kitchen_sink::CResult;
use kitchen_sink::KitchenSink;
use kitchen_sink::RichAuthor;
+use kitchen_sink::RichCrateVersion;
+use kitchen_sink::UserOrg;
use kitchen_sink::UserType;
use render_readme::Renderer;
+use std::sync::Arc;
// pub struct User {
// pub id: u32,
@@ -23,17 +28,32 @@ pub struct AuthorPage<'a> {
pub aut: &'a RichAuthor,
pub kitchen_sink: &'a KitchenSink,
pub markup: &'a Renderer,
+ pub crates: Vec<(Arc<RichCrateVersion>, CrateOwnerRow)>,
+ pub orgs: Vec<UserOrg>,
}
impl<'a> AuthorPage<'a> {
pub async fn new(aut: &'a RichAuthor, kitchen_sink: &'a KitchenSink, markup: &'a Renderer) -> CResult<AuthorPage<'a>> {
dbg!(&aut);
- let crates = kitchen_sink.crates_of_author(aut).await?;
+ let orgs = kitchen_sink.user_github_orgs(&aut.github.login).await?.unwrap_or_default();
+ let mut rows = kitchen_sink.crates_of_author(aut).await?;
+ rows.sort_by(|a,b| b.latest_release.cmp(&a.latest_release));
+ rows.truncate(200);
+ dbg!(&rows);
+
+ let crates = futures::stream::iter(rows.into_iter())
+ .filter_map(|row| async move {
+ let c = kitchen_sink.rich_crate_version_async(&row.origin).await.map_err(|e| eprintln!("{}", e)).ok()?;
+ Some((c, row))
+ })
+ .collect().await;
Ok(Self {
+ crates,
aut,
kitchen_sink,
markup,
+ orgs,
})
}