Update previewer error messages

This commit is contained in:
Ankit Mahato
2024-04-10 10:17:12 +05:30
parent 56f440a4f8
commit c5bfd168d9
3 changed files with 63 additions and 38 deletions

View File

@ -502,38 +502,15 @@ const kResponseCodeReasons = {
511: 'Network Authentication Required',
};
const kMimeTypeRawRaiseIssueStart =
"Please click on 'Raw' to view the unformatted raw results as the response preview for Content-Type ";
const kMimeTypeRaiseIssueStart = "Response preview for Content-Type ";
const kMimeTypeRaiseIssue =
" is currently not supported.\nPlease raise an issue in API Dash GitHub repo so that we can add a Previewer for this content-type.";
"{% if showRaw %}Please click on 'Raw' to view the unformatted raw results as we{% else %}We{% endif %} encountered an error rendering this {% if showContentType %}Content-Type {% endif %}{{type}}.\nPlease raise an issue in API Dash GitHub repo so that we can look into this issue.";
const kUnexpectedRaiseIssue =
"\nIf the behaviour is unexpected, please raise an issue in API Dash GitHub repo so that we can resolve it.";
const kVideoError =
"There seems to be an issue playing this video. Please raise an issue in API Dash GitHub repo so that we can resolve it.";
const kImageError =
"There seems to be an issue rendering this image. Please raise an issue in API Dash GitHub repo so that we can resolve it.";
const kSvgError =
"There seems to be an issue rendering this SVG image. Please raise an issue in API Dash GitHub repo so that we can resolve it.";
const kPdfError =
"There seems to be an issue rendering this pdf. Please raise an issue in API Dash GitHub repo so that we can resolve it.";
const kAudioError =
"There seems to be an issue playing this audio. Please raise an issue in API Dash GitHub repo so that we can resolve it.";
const kRaiseIssue =
"\nPlease raise an issue in API Dash GitHub repo so that we can resolve it.";
const kCsvError =
"There seems to be an issue rendering this CSV. Please raise an issue in API Dash GitHub repo so that we can resolve it.";
const kHintTextUrlCard = "Enter API endpoint like https://$kDefaultUri/";
const kLabelPlusNew = "+ New";
const kLabelSend = "Send";

View File

@ -1,12 +1,15 @@
import 'package:flutter/material.dart';
import 'package:csv/csv.dart';
import 'error_message.dart';
import '../consts.dart';
class CsvPreviewer extends StatelessWidget {
const CsvPreviewer({super.key, required this.body});
const CsvPreviewer({
super.key,
required this.body,
required this.errorWidget,
});
final String body;
final Widget errorWidget;
@override
Widget build(BuildContext context) {
@ -47,7 +50,7 @@ class CsvPreviewer extends StatelessWidget {
),
);
} catch (e) {
return const ErrorMessage(message: kCsvError);
return errorWidget;
}
}
}

View File

@ -1,6 +1,7 @@
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:jinja/jinja.dart' as jj;
import 'package:printing/printing.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:vector_graphics_compiler/vector_graphics_compiler.dart';
@ -34,6 +35,7 @@ class Previewer extends StatefulWidget {
class _PreviewerState extends State<Previewer> {
@override
Widget build(BuildContext context) {
var errorTemplate = jj.Template(kMimeTypeRaiseIssue);
if (widget.type == kTypeApplication && widget.subtype == kSubTypeJson) {
try {
var preview = JsonPreviewer(
@ -53,14 +55,26 @@ class _PreviewerState extends State<Previewer> {
);
return svgImg;
} catch (e) {
return const ErrorMessage(message: kSvgError);
return ErrorMessage(
message: errorTemplate.render({
"showRaw": true,
"showContentType": false,
"type": "svg",
}),
);
}
}
if (widget.type == kTypeImage) {
return Image.memory(
widget.bytes,
errorBuilder: (context, _, stackTrace) {
return const ErrorMessage(message: kImageError);
return ErrorMessage(
message: errorTemplate.render({
"showRaw": false,
"showContentType": false,
"type": kTypeImage,
}),
);
},
);
}
@ -69,7 +83,13 @@ class _PreviewerState extends State<Previewer> {
build: (_) => widget.bytes,
useActions: false,
onError: (context, error) {
return const ErrorMessage(message: kPdfError);
return ErrorMessage(
message: errorTemplate.render({
"showRaw": false,
"showContentType": false,
"type": kSubTypePdf,
}),
);
},
);
}
@ -79,24 +99,49 @@ class _PreviewerState extends State<Previewer> {
type: widget.type!,
subtype: widget.subtype!,
errorBuilder: (context, error, stacktrace) {
return const ErrorMessage(message: kAudioError);
return ErrorMessage(
message: errorTemplate.render({
"showRaw": false,
"showContentType": false,
"type": kTypeAudio,
}),
);
},
);
}
if (widget.type == kTypeText && widget.subtype == kSubTypeCsv) {
return CsvPreviewer(body: widget.body);
return CsvPreviewer(
body: widget.body,
errorWidget: ErrorMessage(
message: errorTemplate.render({
"showRaw": false,
"showContentType": false,
"type": kSubTypeCsv,
}),
),
);
}
if (widget.type == kTypeVideo) {
try {
var preview = VideoPreviewer(videoBytes: widget.bytes);
return preview;
} catch (e) {
return const ErrorMessage(message: kVideoError);
return ErrorMessage(
message: errorTemplate.render({
"showRaw": false,
"showContentType": false,
"type": kTypeVideo,
}),
);
}
}
String message = widget.hasRaw
? "$kMimeTypeRawRaiseIssueStart${widget.type}/${widget.subtype}$kMimeTypeRaiseIssue"
: "$kMimeTypeRaiseIssueStart${widget.type}/${widget.subtype}$kMimeTypeRaiseIssue";
return ErrorMessage(message: message);
var errorText = errorTemplate.render({
"showRaw": widget.hasRaw,
"showContentType": true,
"type": "${widget.type}/${widget.subtype}",
});
return ErrorMessage(
message: errorText,
);
}
}