55import 'dart:async' ;
66
77import 'package:_pub_shared/data/account_api.dart' ;
8+ import 'package:_pub_shared/data/package_api.dart' ;
89import 'package:clock/clock.dart' ;
910import 'package:pub_dev/admin/backend.dart' ;
1011import 'package:pub_dev/shared/configuration.dart' ;
@@ -35,6 +36,23 @@ Future<shelf.Response> reportPageHandler(shelf.Request request) async {
3536 return notFoundHandler (request);
3637 }
3738
39+ final feedback = request.requestedUri.queryParameters['feedback' ];
40+ if (feedback != null ) {
41+ switch (feedback) {
42+ case 'report-submitted' :
43+ return htmlResponse (renderReportFeedback (
44+ title: 'Report submitted' ,
45+ message: 'The report has been submitted successfully.' ,
46+ ));
47+ case 'appeal-submitted' :
48+ return htmlResponse (renderReportFeedback (
49+ title: 'Appeal submitted' ,
50+ message: 'The appeal has been submitted successfully.' ,
51+ ));
52+ }
53+ return notFoundHandler (request);
54+ }
55+
3856 final caseId = request.requestedUri.queryParameters['appeal' ];
3957 final mc = await _loadAndVerifyCase (caseId);
4058
@@ -51,12 +69,21 @@ Future<shelf.Response> reportPageHandler(shelf.Request request) async {
5169 final url = request.requestedUri.queryParameters['url' ];
5270 _verifyUrl (url);
5371
72+ final kind = caseId == null ? 'report' : 'appeal' ;
73+ final onSuccessGotoUrl = request.requestedUri.replace (
74+ path: '/report' ,
75+ queryParameters: {
76+ 'feedback' : '$kind -submitted' ,
77+ },
78+ ).toString ();
79+
5480 return htmlResponse (
5581 renderReportPage (
5682 sessionData: requestContext.sessionData,
5783 subject: subject,
5884 url: url,
5985 caseId: caseId,
86+ onSuccessGotoUrl: onSuccessGotoUrl,
6087 ),
6188 headers: CacheControl .explicitlyPrivate.headers,
6289 );
@@ -134,7 +161,7 @@ Future<void> _verifyCaseSubject(
134161}
135162
136163/// Handles POST /api/report
137- Future <String > processReportPageHandler (
164+ Future <Message > processReportPageHandler (
138165 shelf.Request request, ReportForm form) async {
139166 if (! requestContext.experimentalFlags.isReportPageEnabled) {
140167 throw NotFoundException ('Experimental flag is not enabled.' );
@@ -234,5 +261,5 @@ Future<String> processReportPageHandler(
234261 bodyText: bodyText,
235262 ));
236263
237- return 'The $kind was submitted successfully.' ;
264+ return Message (message : 'The $kind was submitted successfully.' ) ;
238265}
0 commit comments