Changed resuce to status to allow cancellation, enabled email notifications
This commit is contained in:
+37
-2
@@ -41,6 +41,7 @@ import {
|
||||
} from './repositories/birdRepository.js';
|
||||
import { createIntegrationTokenRecord, listIntegrationTokens, revokeIntegrationToken } from './repositories/integrationTokenRepository.js';
|
||||
import {
|
||||
cancelRescueVerificationRequest,
|
||||
claimWorkspaceInvites,
|
||||
createWorkspace,
|
||||
deleteWorkspaceMember,
|
||||
@@ -503,10 +504,17 @@ const sendRescueStatusNotification = async ({
|
||||
}: {
|
||||
workspace: WorkspaceRow;
|
||||
ownerEmail: string | null;
|
||||
event: 'created' | 'converted' | 'status_changed';
|
||||
event: 'created' | 'converted' | 'status_changed' | 'canceled';
|
||||
}) => {
|
||||
const statusLabel = workspace.rescue_verification_status.replace(/_/g, ' ');
|
||||
const eventLabel = event === 'created' ? 'created' : event === 'converted' ? 'converted to rescue' : 'status updated';
|
||||
const eventLabel =
|
||||
event === 'created'
|
||||
? 'created'
|
||||
: event === 'converted'
|
||||
? 'converted to rescue'
|
||||
: event === 'canceled'
|
||||
? 'canceled rescue request'
|
||||
: 'status updated';
|
||||
const subject = `FlockPal rescue status: ${workspace.name} ${eventLabel}`;
|
||||
const escapedWorkspaceName = escapeHtml(workspace.name);
|
||||
const escapedStatusLabel = escapeHtml(statusLabel);
|
||||
@@ -1213,6 +1221,33 @@ app.put('/api/workspace', requireAuth, requireWriteAccess, requireWorkspaceRole(
|
||||
}
|
||||
});
|
||||
|
||||
app.post(
|
||||
'/api/workspace/rescue-status/cancel',
|
||||
requireAuth,
|
||||
requireSessionAuth,
|
||||
requireWorkspaceRole(['owner', 'assistant']),
|
||||
async (req: Request, res: Response, next: NextFunction) => {
|
||||
try {
|
||||
const workspace = await cancelRescueVerificationRequest(req.auth!.workspace.id);
|
||||
|
||||
if (!workspace) {
|
||||
res.status(409).json({ error: 'Only pending rescue status requests can be canceled.' });
|
||||
return;
|
||||
}
|
||||
|
||||
await sendRescueStatusNotification({
|
||||
workspace,
|
||||
ownerEmail: req.auth!.user.email,
|
||||
event: 'canceled',
|
||||
});
|
||||
|
||||
res.json({ workspace: normalizeWorkspace(workspace) });
|
||||
} catch (error) {
|
||||
next(error);
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
app.get('/api/workspace/members', requireAuth, async (req: Request, res: Response, next: NextFunction) => {
|
||||
try {
|
||||
const members = await listWorkspaceMembers(req.auth!.workspace.id);
|
||||
|
||||
Reference in New Issue
Block a user