diff --git a/cypress/e2e/login.cy.ts b/cypress/e2e/login.cy.ts index 7aba583b..cc3c0e05 100644 --- a/cypress/e2e/login.cy.ts +++ b/cypress/e2e/login.cy.ts @@ -2,12 +2,12 @@ describe('Login Page', () => { it('succesfully logs in as an admin', () => { cy.login(Cypress.env('ADMIN_EMAIL'), Cypress.env('ADMIN_PASSWORD')); cy.visit('/'); - cy.contains('Recently Added'); + cy.contains('Trending'); }); it('succesfully logs in as a local user', () => { cy.login(Cypress.env('USER_EMAIL'), Cypress.env('USER_PASSWORD')); cy.visit('/'); - cy.contains('Recently Added'); + cy.contains('Trending'); }); }); diff --git a/server/lib/permissions.ts b/server/lib/permissions.ts index 3ccc8738..ce14f7a1 100644 --- a/server/lib/permissions.ts +++ b/server/lib/permissions.ts @@ -21,6 +21,7 @@ export enum Permission { MANAGE_ISSUES = 1048576, VIEW_ISSUES = 2097152, CREATE_ISSUES = 4194304, + RECENT_VIEW = 67108864, } export interface PermissionCheckOptions { diff --git a/src/components/Discover/index.tsx b/src/components/Discover/index.tsx index d732871b..7773b75e 100644 --- a/src/components/Discover/index.tsx +++ b/src/components/Discover/index.tsx @@ -4,6 +4,7 @@ import { defineMessages, useIntl } from 'react-intl'; import useSWR from 'swr'; import type { MediaResultsResponse } from '../../../server/interfaces/api/mediaInterfaces'; import type { RequestResultsResponse } from '../../../server/interfaces/api/requestInterfaces'; +import { Permission, useUser } from '../../hooks/useUser'; import PageTitle from '../Common/PageTitle'; import MediaSlider from '../MediaSlider'; import RequestCard from '../RequestCard'; @@ -28,6 +29,7 @@ const messages = defineMessages({ const Discover = () => { const intl = useIntl(); + const { hasPermission } = useUser(); const { data: media, error: mediaError } = useSWR( '/api/v1/media?filter=allavailable&take=20&sort=mediaAdded', @@ -43,23 +45,29 @@ const Discover = () => { return ( <> -
-
- {intl.formatMessage(messages.recentlyAdded)} -
-
- ( - +
+
+ {intl.formatMessage(messages.recentlyAdded)} +
+
+ ( + + ))} /> - ))} - /> + + )}
diff --git a/src/components/PermissionEdit/index.tsx b/src/components/PermissionEdit/index.tsx index b9e8515b..1a4eacd8 100644 --- a/src/components/PermissionEdit/index.tsx +++ b/src/components/PermissionEdit/index.tsx @@ -60,6 +60,9 @@ export const messages = defineMessages({ viewissues: 'View Issues', viewissuesDescription: 'Grant permission to view media issues reported by other users.', + viewrecent: 'View Recently Added', + viewrecentDescription: + 'Grant permission to view the list of recently added media.', }); interface PermissionEditProps { @@ -108,6 +111,12 @@ export const PermissionEdit = ({ description: intl.formatMessage(messages.viewrequestsDescription), permission: Permission.REQUEST_VIEW, }, + { + id: 'viewrecent', + name: intl.formatMessage(messages.viewrecent), + description: intl.formatMessage(messages.viewrecentDescription), + permission: Permission.RECENT_VIEW, + }, ], }, { diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json index b0629d3d..54043de4 100644 --- a/src/i18n/locale/en.json +++ b/src/i18n/locale/en.json @@ -252,6 +252,8 @@ "components.PermissionEdit.usersDescription": "Grant permission to manage users. Users with this permission cannot modify users with or grant the Admin privilege.", "components.PermissionEdit.viewissues": "View Issues", "components.PermissionEdit.viewissuesDescription": "Grant permission to view media issues reported by other users.", + "components.PermissionEdit.viewrecent": "View Recently Added", + "components.PermissionEdit.viewrecentDescription": "Grant permission to view the list of recently added media.", "components.PermissionEdit.viewrequests": "View Requests", "components.PermissionEdit.viewrequestsDescription": "Grant permission to view media requests submitted by other users.", "components.PersonDetails.alsoknownas": "Also Known As: {names}",