import 'dart:async'; import 'dart:io'; import 'package:bloc/bloc.dart'; import 'package:meta/meta.dart'; import 'package:unitstocks/Utils/keys.dart'; import '../../main.dart'; import 'package:path_provider/path_provider.dart'; import 'package:path/path.dart'; part 'cabang_event.dart'; part 'cabang_state.dart'; class CabangBloc extends Bloc { CabangBloc() : super(CabangInitial()) { on((event, emit) async { if(event is CabangInit){ emit(CabangLoading()); List cabangs = event.cabangList??[]; if(cabangs.isEmpty){ var cabangList = await util.JsonDataPostRaw({"company":event.company,"User":event.userId}, '${prefs.getString(Keys.hostAddress)}/user/cabangs/',timeout: true); if(cabangList['STATUS']==1){ cabangs = cabangList['DATA']; emit(CabangDisplay(cabangList: cabangs)); } else { emit(CabangError(err: "Gagal mengambil akses cabang. Pastikan anda memiliki akses!!")); } } else emit(CabangDisplay(cabangList: cabangs)); } else if (event is CabangPicked){ String lastCabang = prefs.getString(Keys.cabangId)??''; if(lastCabang!=event.cabangId){ prefs.setString(Keys.cabangId, event.cabangId); await Future.sync(()async{ try{ Directory? documentsDirectory = await getApplicationDocumentsDirectory(); String path = join(documentsDirectory.path, "UnitStocking.db"); File db = File(path); if(db.existsSync()){ db.deleteSync(); } await prefs.remove(Keys.lastDownload); await prefs.remove(Keys.lastUpload); await prefs.remove(Keys.targetProccess); await prefs.remove(Keys.submitProccess); emit(CabangFinished(cabangChanged: lastCabang!=event.cabangId)); } catch(e){ // print(e); prefs.setString(Keys.cabangId, lastCabang); emit(const CabangFinished(cabangChanged: false)); } }); } else { emit(const CabangFinished(cabangChanged: false)); } } else if (event is CabangCanceled){ emit(CabangInitial()); } }); } }