mirror of
				https://gitlab.com/famedly/fluffychat.git
				synced 2025-11-04 06:17:26 +01:00 
			
		
		
		
	refactor: MVC settings ignore list
This commit is contained in:
		
							parent
							
								
									1f9f3f4210
								
							
						
					
					
						commit
						f23fdccada
					
				@ -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';
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										40
									
								
								lib/views/settings_ignore_list.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								lib/views/settings_ignore_list.dart
									
									
									
									
									
										Normal 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);
 | 
			
		||||
}
 | 
			
		||||
@ -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),
 | 
			
		||||
                      ),
 | 
			
		||||
                    ),
 | 
			
		||||
                  ),
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user