import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:paperless_api/paperless_api.dart'; import 'package:paperless_mobile/core/repository/label_repository.dart'; /// /// Mixin which adds functionality to manage labels to [Bloc]s. /// mixin LabelCubitMixin on BlocBase { LabelRepository get labelRepository; Future addCorrespondent(Correspondent item) async { assert(item.id == null); final addedItem = await labelRepository.createCorrespondent(item); return addedItem; } Future reloadCorrespondents() { return labelRepository.findAllCorrespondents(); } Future replaceCorrespondent(Correspondent item) async { assert(item.id != null); final updatedItem = await labelRepository.updateCorrespondent(item); return updatedItem; } Future removeCorrespondent(Correspondent item) async { assert(item.id != null); if (labelRepository.state.correspondents.containsKey(item.id)) { await labelRepository.deleteCorrespondent(item); } } Future addDocumentType(DocumentType item) async { assert(item.id == null); final addedItem = await labelRepository.createDocumentType(item); return addedItem; } Future reloadDocumentTypes() { return labelRepository.findAllDocumentTypes(); } Future replaceDocumentType(DocumentType item) async { assert(item.id != null); final updatedItem = await labelRepository.updateDocumentType(item); return updatedItem; } Future removeDocumentType(DocumentType item) async { assert(item.id != null); if (labelRepository.state.documentTypes.containsKey(item.id)) { await labelRepository.deleteDocumentType(item); } } Future addStoragePath(StoragePath item) async { assert(item.id == null); final addedItem = await labelRepository.createStoragePath(item); return addedItem; } Future reloadStoragePaths() { return labelRepository.findAllStoragePaths(); } Future replaceStoragePath(StoragePath item) async { assert(item.id != null); final updatedItem = await labelRepository.updateStoragePath(item); return updatedItem; } Future removeStoragePath(StoragePath item) async { assert(item.id != null); if (labelRepository.state.storagePaths.containsKey(item.id)) { await labelRepository.deleteStoragePath(item); } } Future addTag(Tag item) async { assert(item.id == null); final addedItem = await labelRepository.createTag(item); return addedItem; } Future reloadTags() { return labelRepository.findAllTags(); } Future replaceTag(Tag item) async { assert(item.id != null); final updatedItem = await labelRepository.updateTag(item); return updatedItem; } Future removeTag(Tag item) async { assert(item.id != null); if (labelRepository.state.tags.containsKey(item.id)) { await labelRepository.deleteTag(item); } } }