import 'package:bloc/bloc.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:moxplatform/moxplatform.dart'; import 'package:moxxyv2/shared/commands.dart'; part 'blocklist_bloc.freezed.dart'; part 'blocklist_event.dart'; part 'blocklist_state.dart'; class BlocklistBloc extends Bloc { BlocklistBloc() : super(BlocklistState()) { on(_onJidUnblocked); on(_onUnblockedAll); on(_onBlocklistPushed); } Future _onJidUnblocked(UnblockedJidEvent event, Emitter emit) async { await MoxplatformPlugin.handler.getDataSender().sendData( UnblockJidCommand( jid: event.jid, ), ); final blocklist = state.blocklist .where((String i) => i != event.jid) .toList(); emit(state.copyWith(blocklist: blocklist)); } Future _onUnblockedAll(UnblockedAllEvent event, Emitter emit) async { await MoxplatformPlugin.handler.getDataSender().sendData( UnblockAllCommand(), ); emit( state.copyWith(blocklist: []), ); } Future _onBlocklistPushed(BlocklistPushedEvent event, Emitter emit) async { final blocklist = state.blocklist..addAll(event.added); emit( state.copyWith( blocklist: blocklist.where((String i) => !event.removed.contains(i)).toList(), ), ); } }