refactor: MVC settings ignore list

This commit is contained in:
Christian Pauly 2021-04-24 07:43:47 +02:00
parent 1f9f3f4210
commit f23fdccada
3 changed files with 48 additions and 33 deletions

View File

@ -22,7 +22,7 @@ import 'package:fluffychat/views/search.dart';
import 'package:fluffychat/views/ui/settings_ui.dart';
import 'package:fluffychat/views/settings_3pid.dart';
import 'package:fluffychat/views/device_settings.dart';
import 'package:fluffychat/views/ui/settings_ignore_list_ui.dart';
import 'package:fluffychat/views/settings_ignore_list.dart';
import 'package:fluffychat/views/ui/settings_multiple_emotes_ui.dart';
import 'package:fluffychat/views/ui/settings_notifications_ui.dart';
import 'package:fluffychat/views/settings_style.dart';

View File

@ -0,0 +1,40 @@
import 'package:future_loading_dialog/future_loading_dialog.dart';
import 'package:flutter/material.dart';
import 'ui/settings_ignore_list_ui.dart';
import 'widgets/matrix.dart';
class SettingsIgnoreList extends StatefulWidget {
final String initialUserId;
SettingsIgnoreList({Key key, this.initialUserId}) : super(key: key);
@override
SettingsIgnoreListController createState() => SettingsIgnoreListController();
}
class SettingsIgnoreListController extends State<SettingsIgnoreList> {
final TextEditingController controller = TextEditingController();
@override
void initState() {
super.initState();
if (widget.initialUserId != null) {
controller.text = widget.initialUserId.replaceAll('@', '');
}
}
void ignoreUser(BuildContext context) {
if (controller.text.isEmpty) return;
final userId = '@${controller.text}';
showFutureLoadingDialog(
context: context,
future: () => Matrix.of(context).client.ignoreUser(userId),
);
controller.clear();
}
@override
Widget build(BuildContext context) => SettingsIgnoreListUI(this);
}

View File

@ -5,38 +5,13 @@ import 'package:future_loading_dialog/future_loading_dialog.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/l10n.dart';
import '../settings_ignore_list.dart';
import '../widgets/matrix.dart';
class SettingsIgnoreList extends StatefulWidget {
final String initialUserId;
class SettingsIgnoreListUI extends StatelessWidget {
final SettingsIgnoreListController controller;
SettingsIgnoreList({Key key, this.initialUserId}) : super(key: key);
@override
_SettingsIgnoreListState createState() => _SettingsIgnoreListState();
}
class _SettingsIgnoreListState extends State<SettingsIgnoreList> {
final TextEditingController _controller = TextEditingController();
@override
void initState() {
super.initState();
if (widget.initialUserId != null) {
_controller.text = widget.initialUserId.replaceAll('@', '');
}
}
void _ignoreUser(BuildContext context) {
if (_controller.text.isEmpty) return;
final userId = '@${_controller.text}';
showFutureLoadingDialog(
context: context,
future: () => Matrix.of(context).client.ignoreUser(userId),
);
_controller.clear();
}
const SettingsIgnoreListUI(this.controller, {Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
@ -55,10 +30,10 @@ class _SettingsIgnoreListState extends State<SettingsIgnoreList> {
mainAxisSize: MainAxisSize.min,
children: [
TextField(
controller: _controller,
controller: controller.controller,
autocorrect: false,
textInputAction: TextInputAction.done,
onSubmitted: (_) => _ignoreUser(context),
onSubmitted: (_) => controller.ignoreUser(context),
decoration: InputDecoration(
border: OutlineInputBorder(),
hintText: 'bad_guy:domain.abc',
@ -67,7 +42,7 @@ class _SettingsIgnoreListState extends State<SettingsIgnoreList> {
suffixIcon: IconButton(
tooltip: L10n.of(context).ignore,
icon: Icon(Icons.done_outlined),
onPressed: () => _ignoreUser(context),
onPressed: () => controller.ignoreUser(context),
),
),
),