mirror of
https://github.com/foss42/apidash.git
synced 2025-12-01 10:17:47 +08:00
Refactor SSE response handling and display
Updated response body widgets to handle SSE output as a list of strings instead of a single string. Adjusted view options for SSE-related media types and refactored SSEDisplay to be a stateless widget that accepts a list of SSE events. This improves clarity and consistency in handling and displaying SSE responses.
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:apidash_core/apidash_core.dart';
|
||||
import 'package:apidash/models/models.dart';
|
||||
@@ -24,6 +22,7 @@ class ResponseBody extends StatelessWidget {
|
||||
message: '$kNullResponseModelError $kUnexpectedRaiseIssue');
|
||||
}
|
||||
|
||||
final isSSE = responseModel.sseOutput?.isNotEmpty ?? false;
|
||||
var body = responseModel.body;
|
||||
var formattedBody = responseModel.formattedBody;
|
||||
if (body == null) {
|
||||
@@ -37,6 +36,9 @@ class ResponseBody extends StatelessWidget {
|
||||
showIssueButton: false,
|
||||
);
|
||||
}
|
||||
if (isSSE) {
|
||||
body = responseModel.sseOutput!.join();
|
||||
}
|
||||
|
||||
final mediaType =
|
||||
responseModel.mediaType ?? MediaType(kTypeText, kSubTypePlain);
|
||||
@@ -56,20 +58,6 @@ class ResponseBody extends StatelessWidget {
|
||||
options.remove(ResponseBodyView.code);
|
||||
}
|
||||
|
||||
// print('reM -> ${responseModel.sseOutput}');
|
||||
|
||||
if (responseModel.sseOutput?.isNotEmpty ?? false) {
|
||||
// final modifiedBody = responseModel.sseOutput!.join('\n\n');
|
||||
return ResponseBodySuccess(
|
||||
key: Key("${selectedRequestModel!.id}-response"),
|
||||
mediaType: MediaType('text', 'event-stream'),
|
||||
options: [ResponseBodyView.sse, ResponseBodyView.raw],
|
||||
bytes: utf8.encode((responseModel.sseOutput!).toString()),
|
||||
body: jsonEncode(responseModel.sseOutput!),
|
||||
formattedBody: responseModel.sseOutput!.join('\n'),
|
||||
);
|
||||
}
|
||||
|
||||
return ResponseBodySuccess(
|
||||
key: Key("${selectedRequestModel!.id}-response"),
|
||||
mediaType: mediaType,
|
||||
@@ -77,6 +65,7 @@ class ResponseBody extends StatelessWidget {
|
||||
bytes: responseModel.bodyBytes!,
|
||||
body: body,
|
||||
formattedBody: formattedBody,
|
||||
sseOutput: responseModel.sseOutput,
|
||||
highlightLanguage: highlightLanguage,
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user