Skip to content

Commit

Permalink
fix: redirect to login or pricing page (#1550)
Browse files Browse the repository at this point in the history
This should improve confusion experienced by new users.
  • Loading branch information
aalemayhu authored Jun 21, 2024
1 parent 788308b commit 85ba57c
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 16 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import express from 'express';

import { INotionRepository } from '../data_layer/NotionRespository';
import { IUploadRepository } from '../data_layer/UploadRespository';
import NotionTokens from '../data_layer/public/NotionTokens';
import Uploads from '../data_layer/public/Uploads';
import NotionService from '../services/NotionService';
import UploadService from '../services/UploadService';
import { INotionRepository } from '../../data_layer/NotionRespository';
import { IUploadRepository } from '../../data_layer/UploadRespository';
import NotionTokens from '../../data_layer/public/NotionTokens';
import Uploads from '../../data_layer/public/Uploads';
import NotionService from '../../services/NotionService';
import UploadService from '../../services/UploadService';
import UploadController from './UploadController';

describe('Upload file', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import express from 'express';

import { getOwner } from '../lib/User/getOwner';
import { sendError } from '../lib/error/sendError';
import { getLimitMessage } from '../lib/misc/getLimitMessage';
import NotionService from '../services/NotionService';
import UploadService from '../services/UploadService';
import { getUploadHandler } from '../lib/misc/GetUploadHandler';
import { isLimitError } from '../lib/misc/isLimitError';
import { getOwner } from '../../lib/User/getOwner';
import { sendError } from '../../lib/error/sendError';
import NotionService from '../../services/NotionService';
import UploadService from '../../services/UploadService';
import { getUploadHandler } from '../../lib/misc/GetUploadHandler';
import { isLimitError } from '../../lib/misc/isLimitError';
import { handleUploadLimitError } from './helpers/handleUploadLimitError';

class UploadController {
constructor(
Expand Down Expand Up @@ -51,7 +51,7 @@ class UploadController {

handleUploadEndpoint(req, res, async (error) => {
if (isLimitError(error)) {
return res.status(500).send(getLimitMessage());
return handleUploadLimitError(req, res);
}
await this.service.handleUpload(req, res);
});
Expand Down
29 changes: 29 additions & 0 deletions src/controllers/Upload/helpers/handleUploadLimitError.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import express from 'express';
import { useDefaultEmailService } from '../../../services/EmailService/EmailService';
import UsersService from '../../../services/UsersService';
import UsersRepository from '../../../data_layer/UsersRepository';
import { getDatabase } from '../../../data_layer';

export const handleUploadLimitError = async (
req: express.Request,
response: express.Response
) => {
const owner = response.locals.owner;

// If the user is already logged in, redirect to the pricing page
if (owner) {
const database = getDatabase();
const emailService = useDefaultEmailService();
const usersService = new UsersService(
new UsersRepository(database),
emailService
);

const user = await usersService.getUserById(response.locals.owner);
if (user) {
return response.redirect('/pricing?error=upload_limit_exceeded');
}
}

response.redirect('/login?error=upload_limit_exceeded');
};
2 changes: 1 addition & 1 deletion src/routes/UploadRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import express from 'express';

import RequireAllowedOrigin from './middleware/RequireAllowedOrigin';
import RequireAuthentication from './middleware/RequireAuthentication';
import UploadController from '../controllers/UploadController';
import UploadController from '../controllers/Upload/UploadController';
import JobController from '../controllers/JobController';
import JobService from '../services/JobService';
import JobRepository from '../data_layer/JobRepository';
Expand Down
8 changes: 7 additions & 1 deletion src/services/UploadService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import GeneratePackagesUseCase from '../usecases/uploads/GeneratePackagesUseCase
import { toText } from './NotionService/BlockHandler/helpers/deckNameToText';
import { getSafeFilename } from '../lib/getSafeFilename';
import { isPaying } from '../lib/isPaying';
import { isLimitError } from '../lib/misc/isLimitError';
import { handleUploadLimitError } from '../controllers/Upload/helpers/handleUploadLimitError';

class UploadService {
getUploadsByOwner(owner: number) {
Expand Down Expand Up @@ -76,7 +78,11 @@ class UploadService {
ErrorHandler(res, req, NO_PACKAGE_ERROR);
}
} catch (err) {
ErrorHandler(res, req, err as Error);
if (isLimitError(err as Error)) {
handleUploadLimitError(req, res);
} else {
return ErrorHandler(res, req, err as Error);
}
}
}
}
Expand Down

0 comments on commit 85ba57c

Please sign in to comment.