finished HeaderData

This commit is contained in:
Jake Potrebic 2020-09-06 15:28:13 -07:00
parent 41be95737e
commit 10929c97e6
No known key found for this signature in database
GPG Key ID: 7C58557EC9C421F8
2 changed files with 28 additions and 7 deletions

View File

@ -35,4 +35,17 @@ public interface NotificationsDao {
"WHERE n.user_id = :userId AND <ifread> " +
"ORDER BY n.created_at")
LinkedHashMap<NotificationsTable, UsersTable> getUserNotifications(long userId, @Define("ifread") String read);
// For HeaderData
@SqlQuery("SELECT exists(SELECT 1 FROM notifications n WHERE n.user_id = :userId AND n.read IS FALSE)")
boolean hasUnreadNotifications(long userId);
@SqlQuery("SELECT exists(SELECT 1 FROM project_flags WHERE is_resolved IS FALSE)")
boolean hasUnresolvedFlags();
@SqlQuery("SELECT exists(SELECT 1 FROM projects p WHERE p.owner_id = :userId AND p.visibility = 3)")
boolean hasProjectApprovals(long userId);
@SqlQuery("SELECT exists(SELECT 1 FROM project_versions pv WHERE pv.review_state = 0)")
boolean hasReviewQueue();
}

View File

@ -3,6 +3,7 @@ package io.papermc.hangar.service;
import io.papermc.hangar.config.CacheConfig;
import io.papermc.hangar.config.hangar.HangarConfig;
import io.papermc.hangar.db.dao.HangarDao;
import io.papermc.hangar.db.dao.NotificationsDao;
import io.papermc.hangar.db.dao.OrganizationDao;
import io.papermc.hangar.db.dao.ProjectDao;
import io.papermc.hangar.db.dao.UserDao;
@ -49,18 +50,20 @@ public class UserService extends HangarService {
private final HangarDao<OrganizationDao> orgDao;
private final HangarDao<ProjectDao> projectDao;
private final HangarDao<OrganizationDao> organizationDao;
private final HangarDao<NotificationsDao> notificationsDao;
private final RoleService roleService;
private final PermissionService permissionService;
private final OrgService orgService;
private final HangarConfig config;
@Autowired
public UserService(HangarDao<UserDao> userDao, HangarConfig config, HangarDao<OrganizationDao> orgDao, HangarDao<ProjectDao> projectDao, HangarDao<OrganizationDao> organizationDao, RoleService roleService, PermissionService permissionService, OrgService orgService) {
public UserService(HangarDao<UserDao> userDao, HangarConfig config, HangarDao<OrganizationDao> orgDao, HangarDao<ProjectDao> projectDao, HangarDao<OrganizationDao> organizationDao, HangarDao<NotificationsDao> notificationsDao, RoleService roleService, PermissionService permissionService, OrgService orgService) {
this.userDao = userDao;
this.config = config;
this.orgDao = orgDao;
this.projectDao = projectDao;
this.organizationDao = organizationDao;
this.notificationsDao = notificationsDao;
this.roleService = roleService;
this.permissionService = permissionService;
this.orgService = orgService;
@ -82,15 +85,20 @@ public class UserService extends HangarService {
return HeaderData.UNAUTHENTICATED;
}
UsersTable curUser = currentUser.get().get();
// TODO fill headerData
Permission perms = permissionService.getGlobalPermissions(curUser.getId());
boolean hasUnreadNotifs = notificationsDao.get().hasUnreadNotifications(curUser.getId());
boolean hasUnresolvedFlags = perms.has(Permission.ModNotesAndFlags) && notificationsDao.get().hasUnresolvedFlags();
boolean hasProjectApprovals = perms.has(Permission.ModNotesAndFlags.add(Permission.SeeHidden)) && notificationsDao.get().hasProjectApprovals(curUser.getId());
boolean hasReviewQueue = perms.has(Permission.Reviewer) && notificationsDao.get().hasReviewQueue();
return new HeaderData(
curUser,
permissionService.getGlobalPermissions(curUser.getId()),
false,
false,
false,
false,
false
hasUnreadNotifs || hasUnresolvedFlags || hasProjectApprovals || hasReviewQueue,
hasUnreadNotifs,
hasUnresolvedFlags,
hasProjectApprovals,
hasReviewQueue
);
}