feat(api): servir la destination et le compteur de non-lues
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018BAUeCFpDkRD6tU5wGsc1C
This commit is contained in:
parent
33d70a16dd
commit
f67de177e8
@ -22,6 +22,7 @@ import { NotificationService } from '../services/notification.service';
|
|||||||
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
import { JwtAuthGuard } from '../guards/jwt-auth.guard';
|
||||||
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
import { CurrentUser, UserPayload } from '../decorators/current-user.decorator';
|
||||||
import { Notification } from '@domain/entities/notification.entity';
|
import { Notification } from '@domain/entities/notification.entity';
|
||||||
|
import { notificationTarget } from '@domain/services/notification-target';
|
||||||
|
|
||||||
class NotificationResponseDto {
|
class NotificationResponseDto {
|
||||||
id: string;
|
id: string;
|
||||||
@ -200,7 +201,12 @@ export class NotificationsController {
|
|||||||
metadata: notification.metadata,
|
metadata: notification.metadata,
|
||||||
read: notification.read,
|
read: notification.read,
|
||||||
readAt: notification.readAt?.toISOString(),
|
readAt: notification.readAt?.toISOString(),
|
||||||
actionUrl: notification.actionUrl,
|
// La destination est derivee du type et des metadonnees : les liens
|
||||||
|
// ecrits a la main visaient des routes inexistantes.
|
||||||
|
actionUrl:
|
||||||
|
notification.actionUrl ??
|
||||||
|
notificationTarget(notification.type, notification.metadata) ??
|
||||||
|
undefined,
|
||||||
createdAt: notification.createdAt.toISOString(),
|
createdAt: notification.createdAt.toISOString(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -356,7 +356,6 @@ export class OrganizationsController {
|
|||||||
siren: organization.siren,
|
siren: organization.siren,
|
||||||
requestedBy: user.email,
|
requestedBy: user.email,
|
||||||
},
|
},
|
||||||
actionUrl: `/dashboard/admin/organizations`,
|
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|||||||
@ -18,6 +18,7 @@ import { Logger, UseGuards } from '@nestjs/common';
|
|||||||
import { JwtService } from '@nestjs/jwt';
|
import { JwtService } from '@nestjs/jwt';
|
||||||
import { NotificationService } from '../services/notification.service';
|
import { NotificationService } from '../services/notification.service';
|
||||||
import { Notification } from '@domain/entities/notification.entity';
|
import { Notification } from '@domain/entities/notification.entity';
|
||||||
|
import { notificationTarget } from '@domain/services/notification-target';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WebSocket authentication guard
|
* WebSocket authentication guard
|
||||||
@ -236,7 +237,10 @@ export class NotificationsGateway implements OnGatewayConnection, OnGatewayDisco
|
|||||||
metadata: notification.metadata,
|
metadata: notification.metadata,
|
||||||
read: notification.read,
|
read: notification.read,
|
||||||
readAt: notification.readAt?.toISOString(),
|
readAt: notification.readAt?.toISOString(),
|
||||||
actionUrl: notification.actionUrl,
|
actionUrl:
|
||||||
|
notification.actionUrl ??
|
||||||
|
notificationTarget(notification.type, notification.metadata) ??
|
||||||
|
undefined,
|
||||||
createdAt: notification.createdAt.toISOString(),
|
createdAt: notification.createdAt.toISOString(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -157,7 +157,6 @@ export class NotificationService {
|
|||||||
title: 'Booking Created',
|
title: 'Booking Created',
|
||||||
message: `Your booking ${bookingNumber} has been created successfully.`,
|
message: `Your booking ${bookingNumber} has been created successfully.`,
|
||||||
metadata: { bookingId, bookingNumber },
|
metadata: { bookingId, bookingNumber },
|
||||||
actionUrl: `/bookings/${bookingId}`,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,7 +175,6 @@ export class NotificationService {
|
|||||||
title: 'Booking Updated',
|
title: 'Booking Updated',
|
||||||
message: `Booking ${bookingNumber} status changed to ${status}.`,
|
message: `Booking ${bookingNumber} status changed to ${status}.`,
|
||||||
metadata: { bookingId, bookingNumber, status },
|
metadata: { bookingId, bookingNumber, status },
|
||||||
actionUrl: `/bookings/${bookingId}`,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,7 +192,6 @@ export class NotificationService {
|
|||||||
title: 'Booking Confirmed',
|
title: 'Booking Confirmed',
|
||||||
message: `Your booking ${bookingNumber} has been confirmed by the carrier.`,
|
message: `Your booking ${bookingNumber} has been confirmed by the carrier.`,
|
||||||
metadata: { bookingId, bookingNumber },
|
metadata: { bookingId, bookingNumber },
|
||||||
actionUrl: `/bookings/${bookingId}`,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -212,7 +209,6 @@ export class NotificationService {
|
|||||||
title: 'Document Uploaded',
|
title: 'Document Uploaded',
|
||||||
message: `Document "${documentName}" has been uploaded for your booking.`,
|
message: `Document "${documentName}" has been uploaded for your booking.`,
|
||||||
metadata: { documentName, bookingId },
|
metadata: { documentName, bookingId },
|
||||||
actionUrl: `/bookings/${bookingId}`,
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user