From c5bfd168d9cb69bdaaf9b9149ed10bf4c333fe85 Mon Sep 17 00:00:00 2001 From: Ankit Mahato Date: Wed, 10 Apr 2024 10:17:12 +0530 Subject: [PATCH] Update previewer error messages --- lib/consts.dart | 25 +------------ lib/widgets/csv_previewer.dart | 11 +++--- lib/widgets/previewer.dart | 65 ++++++++++++++++++++++++++++------ 3 files changed, 63 insertions(+), 38 deletions(-) diff --git a/lib/consts.dart b/lib/consts.dart index 280ccf02..b1df78ab 100644 --- a/lib/consts.dart +++ b/lib/consts.dart @@ -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"; diff --git a/lib/widgets/csv_previewer.dart b/lib/widgets/csv_previewer.dart index 17e8dd48..c67b48b8 100644 --- a/lib/widgets/csv_previewer.dart +++ b/lib/widgets/csv_previewer.dart @@ -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; } } } diff --git a/lib/widgets/previewer.dart b/lib/widgets/previewer.dart index ac213b50..511d1e4b 100644 --- a/lib/widgets/previewer.dart +++ b/lib/widgets/previewer.dart @@ -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 { @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 { ); 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 { 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 { 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, + ); } }