Skip to content

Commit

Permalink
refactor: packages/alice
Browse files Browse the repository at this point in the history
  • Loading branch information
techouse committed Jun 16, 2024
1 parent b119ac5 commit 6827a6a
Show file tree
Hide file tree
Showing 15 changed files with 103 additions and 82 deletions.
22 changes: 9 additions & 13 deletions packages/alice/lib/core/alice_core.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:alice/model/alice_http_error.dart';
import 'package:alice/model/alice_http_response.dart';
import 'package:alice/model/alice_log.dart';
import 'package:alice/ui/page/alice_calls_list_screen.dart';
import 'package:alice/utils/num_comparison.dart';
import 'package:alice/utils/shake_detector.dart';
import 'package:collection/collection.dart' show IterableExtension;
import 'package:flutter/material.dart';
Expand Down Expand Up @@ -155,29 +156,24 @@ class AliceCore {
final int successCalls = calls
.where(
(AliceHttpCall call) =>
call.response != null &&
call.response!.status! >= 200 &&
call.response!.status! < 300,
(call.response?.status.gte(200) ?? false) &&
(call.response?.status.lt(300) ?? false),
)
.toList()
.length;

final int redirectCalls = calls
.where(
(AliceHttpCall call) =>
call.response != null &&
call.response!.status! >= 300 &&
call.response!.status! < 400,
)
.where((AliceHttpCall call) =>
(call.response?.status.gte(300) ?? false) &&
(call.response?.status.lt(400) ?? false))
.toList()
.length;

final int errorCalls = calls
.where(
(AliceHttpCall call) =>
call.response != null &&
call.response!.status! >= 400 &&
call.response!.status! < 600,
(call.response?.status.gte(400) ?? false) &&
(call.response?.status.lt(600) ?? false),
)
.toList()
.length;
Expand Down Expand Up @@ -323,7 +319,7 @@ class AliceCore {
..loading = false
..response = response
..duration = response.time.millisecondsSinceEpoch -
selectedCall.request!.time.millisecondsSinceEpoch;
(selectedCall.request?.time.millisecondsSinceEpoch ?? 0);

callsSubject.add([...callsSubject.value]);
}
Expand Down
3 changes: 2 additions & 1 deletion packages/alice/lib/core/alice_logger.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:io' show Platform, Process, ProcessResult;

import 'package:alice/model/alice_log.dart';
import 'package:alice/utils/num_comparison.dart';
import 'package:flutter/foundation.dart';

class AliceLogger {
Expand Down Expand Up @@ -51,7 +52,7 @@ class AliceLogger {
}

int startIndex = 0;
if (maximumSize != null && logs.length >= maximumSize!) {
if (maximumSize != null && logs.length.gte(maximumSize)) {
if (index == 0) return;
startIndex = logs.length - maximumSize! + 1;
}
Expand Down
6 changes: 3 additions & 3 deletions packages/alice/lib/helper/alice_save_helper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -194,11 +194,11 @@ class AliceSaveHelper {
'--------------------------------------------\n',
'Error\n',
'--------------------------------------------\n',
'Error: ${call.error!.error}\n',
'Error: ${call.error?.error}\n',
]);

if (call.error!.stackTrace != null) {
stringBuffer.write('Error stacktrace: ${call.error!.stackTrace}\n');
if (call.error?.stackTrace != null) {
stringBuffer.write('Error stacktrace: ${call.error?.stackTrace}\n');
}
}

Expand Down
16 changes: 7 additions & 9 deletions packages/alice/lib/ui/page/alice_stats_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:alice/helper/alice_conversion_helper.dart';
import 'package:alice/model/alice_http_call.dart';
import 'package:alice/ui/widget/alice_stats_row.dart';
import 'package:alice/utils/alice_theme.dart';
import 'package:alice/utils/num_comparison.dart';
import 'package:flutter/material.dart';

class AliceStatsScreen extends StatelessWidget {
Expand All @@ -18,29 +19,26 @@ class AliceStatsScreen extends StatelessWidget {
int _getSuccessRequests() => calls
.where(
(AliceHttpCall call) =>
call.response != null &&
call.response!.status! >= 200 &&
call.response!.status! < 300,
(call.response?.status.gte(200) ?? false) &&
(call.response?.status.lt(300) ?? false),
)
.toList()
.length;

int _getRedirectionRequests() => calls
.where(
(AliceHttpCall call) =>
call.response != null &&
call.response!.status! >= 300 &&
call.response!.status! < 400,
(call.response?.status.gte(300) ?? false) &&
(call.response?.status.lt(400) ?? false),
)
.toList()
.length;

int _getErrorRequests() => calls
.where(
(AliceHttpCall call) =>
call.response != null &&
call.response!.status! >= 400 &&
call.response!.status! < 600,
(call.response?.status.gte(400) ?? false) &&
(call.response?.status.lt(600) ?? false),
)
.toList()
.length;
Expand Down
10 changes: 6 additions & 4 deletions packages/alice/lib/ui/widget/alice_base_call_details_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ abstract class AliceBaseCallDetailsWidgetState<T extends StatefulWidget>
extends State<T> {
final JsonEncoder encoder = const JsonEncoder.withIndent(' ');

Widget getListRow(String name, String value) => Row(
Widget getListRow(String name, String? value) => Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SelectableText(
Expand All @@ -19,9 +19,11 @@ abstract class AliceBaseCallDetailsWidgetState<T extends StatefulWidget>
padding: EdgeInsets.only(left: 5),
),
Flexible(
child: SelectableText(
value,
),
child: value != null
? SelectableText(
value,
)
: const SizedBox(),
),
const Padding(
padding: EdgeInsets.only(bottom: 18),
Expand Down
4 changes: 2 additions & 2 deletions packages/alice/lib/ui/widget/alice_call_error_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ class _AliceCallErrorWidgetState
@override
Widget build(BuildContext context) {
if (widget.call.error != null) {
final dynamic error = widget.call.error!.error;
final StackTrace? stackTrace = widget.call.error!.stackTrace;
final dynamic error = widget.call.error?.error;
final StackTrace? stackTrace = widget.call.error?.stackTrace;
final String errorText =
error != null ? error.toString() : 'Error is empty';

Expand Down
28 changes: 16 additions & 12 deletions packages/alice/lib/ui/widget/alice_call_list_item_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,9 @@ class AliceCallListItemWidget extends StatelessWidget {
children: [
Flexible(
child: Text(
_formatTime(call.request!.time),
call.request?.time != null
? _formatTime(call.request!.time)
: 'n/a',
style: const TextStyle(fontSize: 12),
),
),
Expand All @@ -110,8 +112,8 @@ class AliceCallListItemWidget extends StatelessWidget {
),
Flexible(
child: Text(
'${AliceConversionHelper.formatBytes(call.request!.size)} / '
'${AliceConversionHelper.formatBytes(call.response!.size)}',
'${AliceConversionHelper.formatBytes(call.request?.size ?? 0)} / '
'${AliceConversionHelper.formatBytes(call.response?.size ?? 0)}',
style: const TextStyle(fontSize: 12),
),
),
Expand Down Expand Up @@ -144,15 +146,17 @@ class AliceCallListItemWidget extends StatelessWidget {
]);
}

widgets.add(
Text(
_getStatus(call.response!),
style: TextStyle(
fontSize: 16,
color: _getStatusTextColor(context),
if (call.response != null) {
widgets.add(
Text(
_getStatus(call.response!),
style: TextStyle(
fontSize: 16,
color: _getStatusTextColor(context),
),
),
),
);
);
}

return SizedBox(
width: 50,
Expand All @@ -163,7 +167,7 @@ class AliceCallListItemWidget extends StatelessWidget {
}

Color? _getStatusTextColor(BuildContext context) =>
switch (call.response!.status) {
switch (call.response?.status) {
-1 => AliceConstants.red,
int status when status < 200 =>
Theme.of(context).textTheme.bodyLarge?.color,
Expand Down
11 changes: 7 additions & 4 deletions packages/alice/lib/ui/widget/alice_call_overview_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,14 @@ class _AliceCallOverviewWidget
getListRow('Method: ', _call.method),
getListRow('Server: ', _call.server),
getListRow('Endpoint: ', _call.endpoint),
getListRow('Started:', _call.request!.time.toString()),
getListRow('Finished:', _call.response!.time.toString()),
getListRow('Started:', _call.request?.time.toString()),
getListRow('Finished:', _call.response?.time.toString()),
getListRow('Duration:', formatDuration(_call.duration)),
getListRow('Bytes sent:', formatBytes(_call.request!.size)),
getListRow('Bytes received:', formatBytes(_call.response!.size)),
getListRow('Bytes sent:', formatBytes(_call.request?.size ?? 0)),
getListRow(
'Bytes received:',
formatBytes(_call.response?.size ?? 0),
),
getListRow('Client:', _call.client),
getListRow('Secure:', _call.secure.toString()),
],
Expand Down
22 changes: 12 additions & 10 deletions packages/alice/lib/ui/widget/alice_call_request_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,19 +23,19 @@ class _AliceCallRequestWidget
@override
Widget build(BuildContext context) {
final List<Widget> rows = [
getListRow('Started:', _call.request!.time.toString()),
getListRow('Bytes sent:', formatBytes(_call.request!.size)),
getListRow('Content type:', getContentType(_call.request!.headers)!),
getListRow('Started:', _call.request?.time.toString()),
getListRow('Bytes sent:', formatBytes(_call.request?.size ?? 0)),
getListRow('Content type:', getContentType(_call.request?.headers)),
];

final dynamic body = _call.request!.body;
final dynamic body = _call.request?.body;
final String bodyContent = body != null
? formatBody(body, getContentType(_call.request!.headers))
? formatBody(body, getContentType(_call.request?.headers))
: 'Body is empty';
rows.add(getListRow('Body:', bodyContent));

final List<AliceFormDataField>? formDataFields =
_call.request!.formDataFields;
_call.request?.formDataFields;
if (formDataFields?.isNotEmpty ?? false) {
rows.add(getListRow('Form data fields: ', ''));
rows.addAll([
Expand All @@ -56,18 +56,20 @@ class _AliceCallRequestWidget
]);
}

final Map<String, dynamic> headers = _call.request!.headers;
final String headersContent = headers.isEmpty ? 'Headers are empty' : '';
final Map<String, dynamic>? headers = _call.request?.headers;
final String headersContent =
headers?.isEmpty ?? true ? 'Headers are empty' : '';
rows.add(getListRow('Headers: ', headersContent));
rows.addAll([
for (final MapEntry<String, dynamic> header
in _call.request?.headers.entries ?? [])
getListRow(' • ${header.key}:', header.value.toString())
]);

final Map<String, dynamic> queryParameters = _call.request!.queryParameters;
final Map<String, dynamic>? queryParameters =
_call.request?.queryParameters;
final String queryParametersContent =
queryParameters.isEmpty ? 'Query parameters are empty' : '';
queryParameters?.isEmpty ?? true ? 'Query parameters are empty' : '';
rows.add(getListRow('Query Parameters: ', queryParametersContent));
rows.addAll([
for (final MapEntry<String, dynamic> qParam
Expand Down
40 changes: 20 additions & 20 deletions packages/alice/lib/ui/widget/alice_call_response_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:alice/model/alice_http_call.dart';
import 'package:alice/ui/widget/alice_base_call_details_widget.dart';
import 'package:alice/utils/alice_constants.dart';
import 'package:alice/utils/alice_scroll_behavior.dart';
import 'package:alice/utils/num_comparison.dart';
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

Expand Down Expand Up @@ -56,11 +57,11 @@ class _AliceCallResponseWidgetState

List<Widget> _buildGeneralDataRows() {
final rows = <Widget>[
getListRow('Received:', _call.response!.time.toString()),
getListRow('Bytes received:', formatBytes(_call.response!.size)),
getListRow('Received:', _call.response?.time.toString()),
getListRow('Bytes received:', formatBytes(_call.response?.size ?? 0)),
];

final int? status = _call.response!.status;
final int? status = _call.response?.status;
final String statusText = status == -1 ? 'Error' : '$status';

rows.add(getListRow('Status:', statusText));
Expand Down Expand Up @@ -145,7 +146,7 @@ class _AliceCallResponseWidgetState
getListRow(
'Body:',
'Too large to show '
'(${_call.response!.body.toString().length} Bytes)',
'(${_call.response?.body.toString().length ?? 0} Bytes)',
),
)
..add(const SizedBox(height: 8))
Expand All @@ -170,10 +171,10 @@ class _AliceCallResponseWidgetState
}

List<Widget> _buildTextBodyRows() {
final rows = <Widget>[];
final headers = _call.response!.headers;
final bodyContent =
formatBody(_call.response!.body, getContentType(headers));
final List<Widget> rows = [];
final Map<String, String>? headers = _call.response?.headers;
final String bodyContent =
formatBody(_call.response?.body, getContentType(headers));
rows.add(getListRow('Body:', bodyContent));
return rows;
}
Expand Down Expand Up @@ -202,13 +203,13 @@ class _AliceCallResponseWidgetState
}

List<Widget> _buildUnknownBodyRows() {
final rows = <Widget>[];
final headers = _call.response!.headers;
final contentType = getContentType(headers) ?? '<unknown>';
final List<Widget> rows = [];
final Map<String, String>? headers = _call.response?.headers;
final String contentType = getContentType(headers) ?? '<unknown>';

if (_showUnsupportedBody) {
final bodyContent =
formatBody(_call.response!.body, getContentType(headers));
formatBody(_call.response?.body, getContentType(headers));
rows.add(getListRow('Body:', bodyContent));
} else {
rows
Expand Down Expand Up @@ -243,9 +244,10 @@ class _AliceCallResponseWidgetState
if (_call.request?.headers != null) {
requestHeaders.addAll(
_call.request!.headers.map(
(String key, dynamic value) {
return MapEntry(key, value.toString());
},
(String key, dynamic value) => MapEntry(
key,
value.toString(),
),
),
);
}
Expand Down Expand Up @@ -274,11 +276,9 @@ class _AliceCallResponseWidgetState
}

String? _getContentTypeOfResponse() {
return getContentType(_call.response!.headers);
return getContentType(_call.response?.headers);
}

bool _isLargeResponseBody() {
return _call.response!.body != null &&
_call.response!.body.toString().length > _kLargeOutputSize;
}
bool _isLargeResponseBody() =>
_call.response?.body.toString().length.gt(_kLargeOutputSize) ?? false;
}
2 changes: 1 addition & 1 deletion packages/alice/lib/ui/widget/alice_log_list_widget.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import 'package:flutter/services.dart';

class AliceLogListWidget extends StatefulWidget {
const AliceLogListWidget({
required this.logsListenable,
required this. logsListenable,
required this.scrollController,
required this.emptyWidget,
super.key,
Expand Down
Loading

0 comments on commit 6827a6a

Please sign in to comment.