diff --git a/frontend/package.json b/frontend/package.json index 270f3f9c4..dc02f3f53 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -51,6 +51,7 @@ "react-toastify": "^10.0.4", "react-tooltip": "^5.26.3", "react-vis": "^1.12.1", + "ruff": "^1.5.4", "showdown": "^2.1.0", "styled-components": "^6.1.8", "use-places-autocomplete": "^4.0.1", diff --git a/frontend/pages/settings.tsx b/frontend/pages/settings.tsx index febd4ecc8..5043f695a 100644 --- a/frontend/pages/settings.tsx +++ b/frontend/pages/settings.tsx @@ -5,15 +5,18 @@ import FavoritesTab from 'components/Settings/FavoritesTab' import MembershipRequestsTab from 'components/Settings/MembershipRequestsTab' import ProfileTab from 'components/Settings/ProfileTab' import HashTabView from 'components/TabView' +import { NextPageContext } from 'next' import React, { ReactNode } from 'react' import { toast, TypeOptions } from 'react-toastify' import renderPage from 'renderPage' import styled from 'styled-components' -import { UserInfo } from 'types' +import { ApplicationSubmission, UserInfo } from 'types' import { OBJECT_NAME_TITLE, SHOW_MEMBERSHIP_REQUEST } from 'utils/branding' +import SubmissionsPage from '~/components/Submissions' import { BG_GRADIENT, CLUBS_BLUE, WHITE } from '~/constants/colors' import { BORDER_RADIUS } from '~/constants/measurements' +import { doBulkLookup } from '~/utils' const Notification = styled.span` border-radius: ${BORDER_RADIUS}; @@ -30,11 +33,12 @@ const Notification = styled.span` ` type SettingsProps = { - userInfo: UserInfo + userInfo?: UserInfo authenticated: boolean | null + submissions: ApplicationSubmission[] } -const Settings = ({ userInfo, authenticated }: SettingsProps) => { +const Settings = ({ userInfo, authenticated, submissions }: SettingsProps) => { /** * Display the message to the user in the form of a toast. * @param The message to show to the user. @@ -67,6 +71,11 @@ const Settings = ({ userInfo, authenticated }: SettingsProps) => { icon: 'bookmark', content: , }, + { + name: 'submissions', + label: 'Submissions', + content: () => , + }, { name: 'Requests', icon: 'user-check', @@ -97,4 +106,19 @@ const Settings = ({ userInfo, authenticated }: SettingsProps) => { ) } +type BulkResp = { + submissions: Array +} + +Settings.getInitialProps = async (ctx: NextPageContext) => { + const data: BulkResp = (await doBulkLookup( + ['submissions', '/submissions/?format=json'], + ctx, + )) as BulkResp + return { + ...data, + fair: ctx.query.fair != null ? parseInt(ctx.query.fair as string) : null, + } +} + export default renderPage(Settings) diff --git a/frontend/yarn.lock b/frontend/yarn.lock index ad2d5ec1a..cd618d15f 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -5547,6 +5547,11 @@ electron-to-chromium@^1.4.668: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.676.tgz#95179dd62f43926c636ca06c555a1da8754073ff" integrity sha512-uHt4FB8SeYdhcOsj2ix/C39S7sPSNFJpzShjxGOm1KdF4MHyGqGi389+T5cErsodsijojXilYaHIKKqJfqh7uQ== +emitify@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/emitify/-/emitify-3.1.0.tgz#fa5a08011b0f1f64e440aa2e7c2713c55f8a5568" + integrity sha512-pucUCyaeC8TJoRXniRiNb81Odoqlf2lMaFARA8tci2PaORFIeXBoIQHEzuA3dxPsU1l7AVb7xmFra4iJwVU8wg== + "emoji-regex@>=6.0.0 <=6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" @@ -9376,6 +9381,13 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +ruff@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/ruff/-/ruff-1.5.4.tgz#c19346bffbd263f67a301b51ba92601254091797" + integrity sha512-42kBjp78DFDAgZw8ywPpB3bo0oZrSifukCRMB49dnFeGPbg1s4jdtXZug06mkxue1JrD3dP/ng2mxPYg7gx3Jw== + dependencies: + emitify "^3.0.1" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"