You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Dart
		
	
import 'package:adaptive_dialog/adaptive_dialog.dart';
 | 
						|
import 'package:matrix/matrix.dart';
 | 
						|
import 'package:fluffychat/pages/views/archive_view.dart';
 | 
						|
import 'package:fluffychat/widgets/matrix.dart';
 | 
						|
import 'package:flutter/material.dart';
 | 
						|
import 'package:future_loading_dialog/future_loading_dialog.dart';
 | 
						|
import 'package:flutter_gen/gen_l10n/l10n.dart';
 | 
						|
 | 
						|
class Archive extends StatefulWidget {
 | 
						|
  @override
 | 
						|
  ArchiveController createState() => ArchiveController();
 | 
						|
}
 | 
						|
 | 
						|
class ArchiveController extends State<Archive> {
 | 
						|
  List<Room> archive;
 | 
						|
 | 
						|
  Future<List<Room>> getArchive(BuildContext context) async {
 | 
						|
    if (archive != null) return archive;
 | 
						|
    return await Matrix.of(context).client.archive;
 | 
						|
  }
 | 
						|
 | 
						|
  void forgetAction(int i) => setState(() => archive.removeAt(i));
 | 
						|
 | 
						|
  void forgetAllAction() async {
 | 
						|
    if (await showOkCancelAlertDialog(
 | 
						|
          useRootNavigator: false,
 | 
						|
          context: context,
 | 
						|
          title: L10n.of(context).areYouSure,
 | 
						|
          okLabel: L10n.of(context).yes,
 | 
						|
          cancelLabel: L10n.of(context).cancel,
 | 
						|
          message: L10n.of(context).clearArchive,
 | 
						|
        ) !=
 | 
						|
        OkCancelResult.ok) {
 | 
						|
      return;
 | 
						|
    }
 | 
						|
    await showFutureLoadingDialog(
 | 
						|
      context: context,
 | 
						|
      future: () async {
 | 
						|
        while (archive.isNotEmpty) {
 | 
						|
          Logs().v('Forget room ${archive.last.displayname}');
 | 
						|
          await archive.last.forget();
 | 
						|
          archive.removeLast();
 | 
						|
        }
 | 
						|
      },
 | 
						|
    );
 | 
						|
    setState(() => null);
 | 
						|
  }
 | 
						|
 | 
						|
  @override
 | 
						|
  Widget build(BuildContext context) => ArchiveView(this);
 | 
						|
}
 |