Add pending chat requests CTA on mitra home screen

- Backend: new GET /api/mitra/chat-requests/pending endpoint
- Backend: getPendingRequestsForMitra() queries unresponded notifications
  for sessions still in pending_acceptance status
- Mitra app: loadPendingRequests() fetches on screen load + status toggle
- Mitra app: activeRequestCount getter exposes queue size
- Mitra app: _PendingRequestsBanner widget shows count with tap-to-view

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-10 21:21:00 +08:00
parent b043b92b57
commit 1920507ec5
4 changed files with 124 additions and 1 deletions

View File

@@ -1,6 +1,6 @@
import { authenticate } from '../../plugins/auth.js'
import { getMitraByFirebaseUid } from '../../services/mitra.service.js'
import { acceptPairingRequest, declinePairingRequest, getSessionStatus } from '../../services/pairing.service.js'
import { acceptPairingRequest, declinePairingRequest, getSessionStatus, getPendingRequestsForMitra } from '../../services/pairing.service.js'
import { getActiveSessionsByMitra, getActiveSessionsByMitraWithUnread, endSession, getMitraHistory } from '../../services/session.service.js'
import { respondToExtension } from '../../services/extension.service.js'
import { EndedBy } from '../../constants.js'
@@ -23,6 +23,12 @@ const resolveMitra = async (request, reply) => {
}
export const mitraChatRoutes = async (app) => {
// Get pending chat requests for this mitra
app.get('/pending', { preHandler: [authenticate, resolveMitra] }, async (request, reply) => {
const requests = await getPendingRequestsForMitra(request.mitra.id)
return reply.send({ success: true, data: requests })
})
// Check if a session is still pending acceptance (for notification validation)
app.get('/:sessionId/status', { preHandler: [authenticate, resolveMitra] }, async (request, reply) => {
const session = await getSessionStatus(request.params.sessionId)