diff --git a/src/main/scala/app/IndexController.scala b/src/main/scala/app/IndexController.scala index 591270d..0443729 100644 --- a/src/main/scala/app/IndexController.scala +++ b/src/main/scala/app/IndexController.scala @@ -20,11 +20,23 @@ get("/"){ val loginAccount = context.loginAccount + if(loginAccount.isEmpty) { + html.index(getRecentActivities(), + getVisibleRepositories(loginAccount, context.baseUrl, withoutPhysicalInfo = true), + loginAccount.map{ account => getUserRepositories(account.userName, context.baseUrl, withoutPhysicalInfo = true) }.getOrElse(Nil) + ) + } else { + val loginUserName = loginAccount.get.userName + val loginUserGroups = getGroupsByUserName(loginUserName) + var visibleOwnerSet : Set[String] = Set(loginUserName) + + visibleOwnerSet ++= loginUserGroups - html.index(getRecentActivities(), - getVisibleRepositories(loginAccount, context.baseUrl, withoutPhysicalInfo = true), - loginAccount.map{ account => getUserRepositories(account.userName, context.baseUrl, withoutPhysicalInfo = true) }.getOrElse(Nil) - ) + html.index(getRecentActivitiesByOwners(visibleOwnerSet), + getVisibleRepositories(loginAccount, context.baseUrl, withoutPhysicalInfo = true), + loginAccount.map{ account => getUserRepositories(account.userName, context.baseUrl, withoutPhysicalInfo = true) }.getOrElse(Nil) + ) + } } get("/signin"){ diff --git a/src/main/scala/service/ActivityService.scala b/src/main/scala/service/ActivityService.scala index 0be6242..702462a 100644 --- a/src/main/scala/service/ActivityService.scala +++ b/src/main/scala/service/ActivityService.scala @@ -23,7 +23,16 @@ def getRecentActivities()(implicit s: Session): List[Activity] = Activities .innerJoin(Repositories).on((t1, t2) => t1.byRepository(t2.userName, t2.repositoryName)) - .filter { case (t1, t2) => t2.isPrivate is false.bind } + .filter { case (t1, t2) => t2.isPrivate is false.bind } + .sortBy { case (t1, t2) => t1.activityId desc } + .map { case (t1, t2) => t1 } + .take(30) + .list + + def getRecentActivitiesByOwners(owners : Set[String])(implicit s: Session): List[Activity] = + Activities + .innerJoin(Repositories).on((t1, t2) => t1.byRepository(t2.userName, t2.repositoryName)) + .filter { case (t1, t2) => (t2.isPrivate is false.bind) || (t2.userName inSetBind owners) } .sortBy { case (t1, t2) => t1.activityId desc } .map { case (t1, t2) => t1 } .take(30)