mirror of
https://gitlab.com/veilid/veilidchat.git
synced 2025-05-08 17:25:01 -04:00
debugging and cleanup
This commit is contained in:
parent
604ec9cfdd
commit
d460a0388c
69 changed files with 2306 additions and 790 deletions
|
@ -1,13 +1,11 @@
|
|||
import 'dart:async';
|
||||
|
||||
import 'package:animated_custom_dropdown/custom_dropdown.dart';
|
||||
import 'package:ansicolor/ansicolor.dart';
|
||||
import 'package:awesome_extensions/awesome_extensions.dart';
|
||||
import 'package:cool_dropdown/cool_dropdown.dart';
|
||||
import 'package:cool_dropdown/models/cool_dropdown_item.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_animate/flutter_animate.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:flutter_translate/flutter_translate.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
@ -17,6 +15,7 @@ import 'package:xterm/xterm.dart';
|
|||
|
||||
import '../../layout/layout.dart';
|
||||
import '../../notifications/notifications.dart';
|
||||
import '../../theme/models/scale_theme/scale_custom_dropdown_theme.dart';
|
||||
import '../../theme/theme.dart';
|
||||
import '../../tools/tools.dart';
|
||||
import 'history_text_editing_controller.dart';
|
||||
|
@ -30,6 +29,15 @@ const kDefaultTerminalStyle = TerminalStyle(
|
|||
// height: 1.2,
|
||||
fontFamily: 'Source Code Pro');
|
||||
|
||||
class LogLevelDropdownItem {
|
||||
const LogLevelDropdownItem(
|
||||
{required this.label, required this.icon, required this.value});
|
||||
|
||||
final String label;
|
||||
final Widget icon;
|
||||
final LogLevel value;
|
||||
}
|
||||
|
||||
class DeveloperPage extends StatefulWidget {
|
||||
const DeveloperPage({super.key});
|
||||
|
||||
|
@ -49,7 +57,7 @@ class _DeveloperPageState extends State<DeveloperPage> {
|
|||
});
|
||||
|
||||
for (var i = 0; i < logLevels.length; i++) {
|
||||
_logLevelDropdownItems.add(CoolDropdownItem<LogLevel>(
|
||||
_logLevelDropdownItems.add(LogLevelDropdownItem(
|
||||
label: logLevelName(logLevels[i]),
|
||||
icon: Text(logLevelEmoji(logLevels[i])),
|
||||
value: logLevels[i]));
|
||||
|
@ -167,29 +175,28 @@ class _DeveloperPageState extends State<DeveloperPage> {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final theme = Theme.of(context);
|
||||
final textTheme = theme.textTheme;
|
||||
final scale = theme.extension<ScaleScheme>()!;
|
||||
final scaleTheme = theme.extension<ScaleTheme>()!;
|
||||
final dropdownTheme = scaleTheme.customDropdownTheme();
|
||||
final scaleConfig = theme.extension<ScaleConfig>()!;
|
||||
|
||||
// WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
// if (!_isScrolling && _wantsBottom) {
|
||||
// _scrollToBottom();
|
||||
// }
|
||||
// });
|
||||
final hintColor = scaleConfig.useVisualIndicators
|
||||
? scale.primaryScale.primaryText
|
||||
: scale.primaryScale.primary;
|
||||
|
||||
return Scaffold(
|
||||
backgroundColor: scale.primaryScale.primary,
|
||||
backgroundColor: scale.primaryScale.border,
|
||||
appBar: DefaultAppBar(
|
||||
title: Text(translate('developer.title')),
|
||||
leading: IconButton(
|
||||
icon: Icon(Icons.arrow_back, color: scale.primaryScale.primaryText),
|
||||
icon: Icon(Icons.arrow_back, color: scale.primaryScale.borderText),
|
||||
onPressed: () => GoRouterHelper(context).pop(),
|
||||
),
|
||||
actions: [
|
||||
IconButton(
|
||||
icon: const Icon(Icons.copy),
|
||||
color: scale.primaryScale.primaryText,
|
||||
disabledColor: scale.primaryScale.primaryText.withAlpha(0x3F),
|
||||
color: scale.primaryScale.borderText,
|
||||
disabledColor: scale.primaryScale.borderText.withAlpha(0x3F),
|
||||
onPressed: _terminalController.selection == null
|
||||
? null
|
||||
: () async {
|
||||
|
@ -197,15 +204,15 @@ class _DeveloperPageState extends State<DeveloperPage> {
|
|||
}),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.copy_all),
|
||||
color: scale.primaryScale.primaryText,
|
||||
disabledColor: scale.primaryScale.primaryText.withAlpha(0x3F),
|
||||
color: scale.primaryScale.borderText,
|
||||
disabledColor: scale.primaryScale.borderText.withAlpha(0x3F),
|
||||
onPressed: () async {
|
||||
await copyAll(context);
|
||||
}),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.clear_all),
|
||||
color: scale.primaryScale.primaryText,
|
||||
disabledColor: scale.primaryScale.primaryText.withAlpha(0x3F),
|
||||
color: scale.primaryScale.borderText,
|
||||
disabledColor: scale.primaryScale.borderText.withAlpha(0x3F),
|
||||
onPressed: () async {
|
||||
final confirm = await showConfirmModal(
|
||||
context: context,
|
||||
|
@ -216,74 +223,39 @@ class _DeveloperPageState extends State<DeveloperPage> {
|
|||
await clear(context);
|
||||
}
|
||||
}),
|
||||
CoolDropdown<LogLevel>(
|
||||
controller: _logLevelController,
|
||||
defaultItem: _logLevelDropdownItems
|
||||
.singleWhere((x) => x.value == _logLevelDropDown),
|
||||
onChange: (value) {
|
||||
setState(() {
|
||||
_logLevelDropDown = value;
|
||||
Loggy('').level = getLogOptions(value);
|
||||
setVeilidLogLevel(value);
|
||||
_logLevelController.close();
|
||||
});
|
||||
},
|
||||
resultOptions: ResultOptions(
|
||||
width: 64,
|
||||
height: 40,
|
||||
render: ResultRender.icon,
|
||||
icon: SizedBox(
|
||||
width: 10,
|
||||
height: 10,
|
||||
child: CustomPaint(
|
||||
painter: DropdownArrowPainter(
|
||||
color: scale.primaryScale.primaryText))),
|
||||
textStyle: textTheme.labelMedium!
|
||||
.copyWith(color: scale.primaryScale.primaryText),
|
||||
padding: const EdgeInsets.fromLTRB(8, 4, 8, 4),
|
||||
openBoxDecoration: BoxDecoration(
|
||||
//color: scale.primaryScale.border,
|
||||
border: Border.all(
|
||||
color: scaleConfig.useVisualIndicators
|
||||
? scale.primaryScale.hoverBorder
|
||||
: scale.primaryScale.borderText),
|
||||
borderRadius:
|
||||
BorderRadius.circular(8 * scaleConfig.borderRadiusScale),
|
||||
),
|
||||
boxDecoration: BoxDecoration(
|
||||
//color: scale.primaryScale.hoverBorder,
|
||||
border: Border.all(
|
||||
color: scaleConfig.useVisualIndicators
|
||||
? scale.primaryScale.hoverBorder
|
||||
: scale.primaryScale.borderText),
|
||||
borderRadius:
|
||||
BorderRadius.circular(8 * scaleConfig.borderRadiusScale),
|
||||
),
|
||||
),
|
||||
dropdownOptions: DropdownOptions(
|
||||
width: 160,
|
||||
align: DropdownAlign.right,
|
||||
duration: 150.ms,
|
||||
color: scale.primaryScale.elementBackground,
|
||||
borderSide: BorderSide(color: scale.primaryScale.border),
|
||||
borderRadius:
|
||||
BorderRadius.circular(8 * scaleConfig.borderRadiusScale),
|
||||
padding: const EdgeInsets.fromLTRB(8, 4, 8, 4),
|
||||
),
|
||||
dropdownTriangleOptions: const DropdownTriangleOptions(
|
||||
align: DropdownTriangleAlign.right),
|
||||
dropdownItemOptions: DropdownItemOptions(
|
||||
selectedTextStyle: textTheme.labelMedium!
|
||||
.copyWith(color: scale.primaryScale.appText),
|
||||
textStyle: textTheme.labelMedium!
|
||||
.copyWith(color: scale.primaryScale.appText),
|
||||
selectedBoxDecoration: BoxDecoration(
|
||||
color: scale.primaryScale.activeElementBackground),
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
padding: const EdgeInsets.fromLTRB(8, 4, 8, 4),
|
||||
selectedPadding: const EdgeInsets.fromLTRB(8, 4, 8, 4)),
|
||||
dropdownList: _logLevelDropdownItems,
|
||||
).paddingLTRB(0, 0, 8, 0)
|
||||
SizedBox.fromSize(
|
||||
size: const Size(120, 48),
|
||||
child: CustomDropdown<LogLevelDropdownItem>(
|
||||
items: _logLevelDropdownItems,
|
||||
initialItem: _logLevelDropdownItems
|
||||
.singleWhere((x) => x.value == _logLevelDropDown),
|
||||
onChanged: (item) {
|
||||
if (item != null) {
|
||||
setState(() {
|
||||
_logLevelDropDown = item.value;
|
||||
Loggy('').level = getLogOptions(item.value);
|
||||
setVeilidLogLevel(item.value);
|
||||
});
|
||||
}
|
||||
},
|
||||
headerBuilder: (context, item, enabled) => Row(children: [
|
||||
item.icon,
|
||||
const Spacer(),
|
||||
Text(item.label).copyWith(style: dropdownTheme.textStyle)
|
||||
]),
|
||||
listItemBuilder: (context, item, enabled, onItemSelect) =>
|
||||
Row(children: [
|
||||
item.icon,
|
||||
const Spacer(),
|
||||
Text(item.label).copyWith(style: dropdownTheme.textStyle)
|
||||
]),
|
||||
decoration: dropdownTheme.decoration,
|
||||
disabledDecoration: dropdownTheme.disabledDecoration,
|
||||
listItemPadding: dropdownTheme.listItemPadding,
|
||||
itemsListPadding: dropdownTheme.itemsListPadding,
|
||||
expandedHeaderPadding: dropdownTheme.expandedHeaderPadding,
|
||||
closedHeaderPadding: dropdownTheme.closedHeaderPadding,
|
||||
)).paddingLTRB(0, 4, 8, 4),
|
||||
],
|
||||
),
|
||||
body: GestureDetector(
|
||||
|
@ -312,21 +284,24 @@ class _DeveloperPageState extends State<DeveloperPage> {
|
|||
decoration: InputDecoration(
|
||||
filled: true,
|
||||
contentPadding: const EdgeInsets.fromLTRB(8, 2, 8, 2),
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(
|
||||
8 * scaleConfig.borderRadiusScale),
|
||||
borderSide: BorderSide.none),
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(
|
||||
8 * scaleConfig.borderRadiusScale),
|
||||
),
|
||||
fillColor: scale.primaryScale.subtleBackground,
|
||||
enabledBorder:
|
||||
const OutlineInputBorder(borderSide: BorderSide.none),
|
||||
border:
|
||||
const OutlineInputBorder(borderSide: BorderSide.none),
|
||||
focusedBorder:
|
||||
const OutlineInputBorder(borderSide: BorderSide.none),
|
||||
fillColor: scale.primaryScale.elementBackground,
|
||||
hoverColor: scale.primaryScale.elementBackground,
|
||||
hintStyle: scaleTheme.textTheme.labelMedium!.copyWith(
|
||||
color: scaleConfig.useVisualIndicators
|
||||
? hintColor.withAlpha(0x7F)
|
||||
: hintColor),
|
||||
hintText: translate('developer.command'),
|
||||
suffixIcon: IconButton(
|
||||
icon: Icon(Icons.send,
|
||||
color: _historyController.controller.text.isEmpty
|
||||
? scale.primaryScale.primary.withAlpha(0x3F)
|
||||
: scale.primaryScale.primary),
|
||||
? hintColor.withAlpha(0x7F)
|
||||
: hintColor),
|
||||
onPressed:
|
||||
(_historyController.controller.text.isEmpty || _busy)
|
||||
? null
|
||||
|
@ -366,9 +341,9 @@ class _DeveloperPageState extends State<DeveloperPage> {
|
|||
final _terminalController = TerminalController();
|
||||
late final HistoryTextEditingController _historyController;
|
||||
|
||||
final _logLevelController = DropdownController<LogLevel>(duration: 250.ms);
|
||||
final List<CoolDropdownItem<LogLevel>> _logLevelDropdownItems = [];
|
||||
final List<LogLevelDropdownItem> _logLevelDropdownItems = [];
|
||||
var _logLevelDropDown = log.level.logLevel;
|
||||
|
||||
var _showEllet = false;
|
||||
var _busy = false;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue