// import 'dart:async'; import 'package:bytedesk_kefu/model/markThread.dart'; import 'package:bloc/bloc.dart'; import './bloc.dart'; import 'package:bytedesk_kefu/repositories/repositories.dart'; import 'package:bytedesk_kefu/model/model.dart'; class ThreadBloc extends Bloc<ThreadEvent, ThreadState> { // final ThreadRepository threadRepository = new ThreadRepository(); // ThreadBloc() : super(ThreadEmpty()); ThreadBloc() : super(ThreadEmpty()) { // on<InitThreadEvent>(InitialThreadState); on<RefreshThreadEvent>(_mapRefreshThreadToState); on<RefreshHistoryThreadEvent>(_mapRefreshHistoryThreadToState); on<RefreshVisitorThreadEvent>(_mapRefreshVisitorThreadToState); on<RefreshVisitorThreadAllEvent>(_mapRefreshVisitorThreadAllToState); on<RequestThreadEvent>(_mapRequestThreadToState); on<RequestAgentEvent>(_mapRequestAgentToState); on<RequestContactThreadEvent>(_mapRequestContactThreadToState); on<RequestGroupThreadEvent>(_mapRequestGroupThreadToState); on<MarkTopThreadEvent>(_mapMarkTopThreadEventToState); on<UnMarkTopThreadEvent>(_mapUnMarkTopThreadEventToState); on<MarkNodisturbThreadEvent>(_mapMarkNodisturbThreadEventToState); on<UnMarkNodisturbThreadEvent>(_mapUnMarkNodisturbThreadEventToState); on<MarkUnreadThreadEvent>(_mapMarkUnreadThreadEventToState); on<UnMarkUnreadThreadEvent>(_mapUnMarkUnreadThreadEventToState); on<DeleteThreadEvent>(_mapDeleteThreadEventToState); } void _mapRefreshThreadToState( RefreshThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final List<Thread> threadList = await threadRepository.getThreads(); emit(ThreadLoadSuccess(threadList)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapRefreshHistoryThreadToState( RefreshHistoryThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadHistoryLoading()); try { final List<Thread> threadList = await threadRepository.getHistoryThreads(event.page, event.size); emit(ThreadLoadSuccess(threadList)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapRefreshVisitorThreadToState( RefreshVisitorThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadVisitorLoading()); try { final List<Thread> threadList = await threadRepository.getVisitorThreads(event.page, event.size); emit(ThreadLoadSuccess(threadList)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapRefreshVisitorThreadAllToState( RefreshVisitorThreadAllEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final List<Thread> threadList = await threadRepository.getVisitorThreadsAll(); emit(ThreadLoadSuccess(threadList)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapRequestThreadToState( RequestThreadEvent event, Emitter<ThreadState> emit) async { print('RequestThreadEvent'); emit(RequestThreading()); try { final RequestThreadResult thread = await threadRepository.requestThread( event.wid, event.type, event.aid); emit(RequestThreadSuccess(thread)); } catch (error) { print(error); emit(RequestThreadError()); } } void _mapRequestAgentToState( RequestAgentEvent event, Emitter<ThreadState> emit) async { emit(RequestAgentThreading()); try { final RequestThreadResult thread = await threadRepository.requestAgent(event.wid, event.type, event.aid); emit(RequestAgentSuccess(thread)); } catch (error) { print(error); emit(RequestAgentThreadError()); } } void _mapRequestContactThreadToState( RequestContactThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final RequestThreadResult thread = await threadRepository.requestContactThread(event.cid); emit(RequestContactThreadSuccess(thread)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapRequestGroupThreadToState( RequestGroupThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final RequestThreadResult thread = await threadRepository.requestGroupThread(event.gid); emit(RequestGroupThreadSuccess(thread)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapMarkTopThreadEventToState( MarkTopThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final MarkThreadResult thread = await threadRepository.markTop(event.tid); emit(MarkTopThreadSuccess(thread)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapUnMarkTopThreadEventToState( UnMarkTopThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final MarkThreadResult thread = await threadRepository.unmarkTop(event.tid); emit(UnMarkTopThreadSuccess(thread)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapMarkNodisturbThreadEventToState( MarkNodisturbThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final MarkThreadResult thread = await threadRepository.markNodisturb(event.tid); emit(MarkNodisturbThreadSuccess(thread)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapUnMarkNodisturbThreadEventToState( UnMarkNodisturbThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final MarkThreadResult thread = await threadRepository.unmarkNodisturb(event.tid); emit(UnMarkNodisturbThreadSuccess(thread)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapMarkUnreadThreadEventToState( MarkUnreadThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final MarkThreadResult thread = await threadRepository.markUnread(event.tid); emit(MarkUnreadThreadSuccess(thread)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapUnMarkUnreadThreadEventToState( UnMarkUnreadThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final MarkThreadResult thread = await threadRepository.unmarkUnread(event.tid); emit(UnMarkUnreadThreadSuccess(thread)); } catch (error) { print(error); emit(ThreadLoadError()); } } void _mapDeleteThreadEventToState( DeleteThreadEvent event, Emitter<ThreadState> emit) async { emit(ThreadLoading()); try { final MarkThreadResult thread = await threadRepository.delete(event.tid); emit(DeleteThreadSuccess(thread)); } catch (error) { print(error); emit(ThreadLoadError()); } } }