From 231a2e95b9734cf4704454e1945698753dbb378b Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Sat, 22 Jul 2023 16:09:10 +0200 Subject: [PATCH] feat: add share url alias `/s` --- backend/src/email/email.service.ts | 4 ++-- .../account/showShareInformationsModal.tsx | 2 +- .../components/account/showShareLinkModal.tsx | 2 +- .../upload/modals/showCompletedUploadModal.tsx | 2 +- .../upload/modals/showCreateUploadModal.tsx | 3 +-- frontend/src/middleware.ts | 2 +- frontend/src/pages/account/reverseShares.tsx | 2 +- frontend/src/pages/account/shares.tsx | 2 +- frontend/src/pages/s/[shareId].ts | 18 ++++++++++++++++++ 9 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 frontend/src/pages/s/[shareId].ts diff --git a/backend/src/email/email.service.ts b/backend/src/email/email.service.ts index 3c4be93..988dccb 100644 --- a/backend/src/email/email.service.ts +++ b/backend/src/email/email.service.ts @@ -54,7 +54,7 @@ export class EmailService { if (!this.config.get("email.enableShareEmailRecipients")) throw new InternalServerErrorException("Email service disabled"); - const shareUrl = `${this.config.get("general.appUrl")}/share/${shareId}`; + const shareUrl = `${this.config.get("general.appUrl")}/s/${shareId}`; await this.sendMail( recipientEmail, @@ -75,7 +75,7 @@ export class EmailService { } async sendMailToReverseShareCreator(recipientEmail: string, shareId: string) { - const shareUrl = `${this.config.get("general.appUrl")}/share/${shareId}`; + const shareUrl = `${this.config.get("general.appUrl")}/s/${shareId}`; await this.sendMail( recipientEmail, diff --git a/frontend/src/components/account/showShareInformationsModal.tsx b/frontend/src/components/account/showShareInformationsModal.tsx index ceda10d..4b1991d 100644 --- a/frontend/src/components/account/showShareInformationsModal.tsx +++ b/frontend/src/components/account/showShareInformationsModal.tsx @@ -15,7 +15,7 @@ const showShareInformationsModal = ( maxShareSize: number ) => { const t = translateOutsideContext(); - const link = `${appUrl}/share/${share.id}`; + const link = `${appUrl}/s/${share.id}`; let shareSize: number = 0; for (let file of share.files as FileMetaData[]) diff --git a/frontend/src/components/account/showShareLinkModal.tsx b/frontend/src/components/account/showShareLinkModal.tsx index ec95591..34d30b7 100644 --- a/frontend/src/components/account/showShareLinkModal.tsx +++ b/frontend/src/components/account/showShareLinkModal.tsx @@ -8,7 +8,7 @@ const showShareLinkModal = ( appUrl: string ) => { const t = translateOutsideContext(); - const link = `${appUrl}/share/${shareId}`; + const link = `${appUrl}/s/${shareId}`; return modals.openModal({ title: t("account.shares.modal.share-link"), children: ( diff --git a/frontend/src/components/upload/modals/showCompletedUploadModal.tsx b/frontend/src/components/upload/modals/showCompletedUploadModal.tsx index 75794f5..06718b0 100644 --- a/frontend/src/components/upload/modals/showCompletedUploadModal.tsx +++ b/frontend/src/components/upload/modals/showCompletedUploadModal.tsx @@ -30,7 +30,7 @@ const Body = ({ share, appUrl }: { share: Share; appUrl: string }) => { const router = useRouter(); const t = useTranslate(); - const link = `${appUrl}/share/${share.id}`; + const link = `${appUrl}/s/${share.id}`; return ( diff --git a/frontend/src/components/upload/modals/showCreateUploadModal.tsx b/frontend/src/components/upload/modals/showCreateUploadModal.tsx index 39900fe..7ecb3e2 100644 --- a/frontend/src/components/upload/modals/showCreateUploadModal.tsx +++ b/frontend/src/components/upload/modals/showCreateUploadModal.tsx @@ -168,8 +168,7 @@ const CreateUploadModalBody = ({ color: theme.colors.gray[6], })} > - {options.appUrl}/share/ - {form.values.link == "" ? "myAwesomeShare" : form.values.link} + {`${options.appUrl}/s/${form.values.link}`} {!options.isReverseShare && ( <> diff --git a/frontend/src/middleware.ts b/frontend/src/middleware.ts index a0da263..63dd1b7 100644 --- a/frontend/src/middleware.ts +++ b/frontend/src/middleware.ts @@ -14,7 +14,7 @@ export const config = { export async function middleware(request: NextRequest) { const routes = { unauthenticated: new Routes(["/auth/*", "/"]), - public: new Routes(["/share/*", "/upload/*"]), + public: new Routes(["/share/*", "/s/*", "/upload/*"]), admin: new Routes(["/admin/*"]), account: new Routes(["/account*"]), disabled: new Routes([]), diff --git a/frontend/src/pages/account/reverseShares.tsx b/frontend/src/pages/account/reverseShares.tsx index 31d9065..61b8bcb 100644 --- a/frontend/src/pages/account/reverseShares.tsx +++ b/frontend/src/pages/account/reverseShares.tsx @@ -159,7 +159,7 @@ const MyShares = () => { onClick={() => { if (window.isSecureContext) { clipboard.copy( - `${appUrl}/share/${share.id}` + `${appUrl}/s/${share.id}` ); toast.success(t("common.notify.copied")); } else { diff --git a/frontend/src/pages/account/shares.tsx b/frontend/src/pages/account/shares.tsx index 2f8882f..4290ecd 100644 --- a/frontend/src/pages/account/shares.tsx +++ b/frontend/src/pages/account/shares.tsx @@ -132,7 +132,7 @@ const MyShares = () => { onClick={() => { if (window.isSecureContext) { clipboard.copy( - `${config.get("general.appUrl")}/share/${ + `${config.get("general.appUrl")}/s/${ share.id }` ); diff --git a/frontend/src/pages/s/[shareId].ts b/frontend/src/pages/s/[shareId].ts new file mode 100644 index 0000000..1195987 --- /dev/null +++ b/frontend/src/pages/s/[shareId].ts @@ -0,0 +1,18 @@ +import { GetServerSidePropsContext } from "next"; + +// Redirect to the share page +export function getServerSideProps(context: GetServerSidePropsContext) { + const { shareId } = context.params!; + + return { + props: {}, + redirect: { + permanent: false, + destination: "/share/" + shareId, + }, + }; +} + +export default function ShareAlias() { + return null; +}