mirror of
https://github.com/Xevion/paperless-mobile.git
synced 2025-12-08 12:07:54 -06:00
Decoupled saved views view from documents cubit
This commit is contained in:
@@ -34,6 +34,7 @@ class DocumentsPage extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _DocumentsPageState extends State<DocumentsPage> {
|
class _DocumentsPageState extends State<DocumentsPage> {
|
||||||
|
late final DocumentsCubit _documentsCubit;
|
||||||
final _pagingController = PagingController<int, DocumentModel>(
|
final _pagingController = PagingController<int, DocumentModel>(
|
||||||
firstPageKey: 1,
|
firstPageKey: 1,
|
||||||
);
|
);
|
||||||
@@ -43,8 +44,9 @@ class _DocumentsPageState extends State<DocumentsPage> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
_documentsCubit = BlocProvider.of<DocumentsCubit>(context);
|
||||||
try {
|
try {
|
||||||
BlocProvider.of<DocumentsCubit>(context).load();
|
_documentsCubit.load();
|
||||||
} on PaperlessServerException catch (error, stackTrace) {
|
} on PaperlessServerException catch (error, stackTrace) {
|
||||||
showErrorMessage(context, error, stackTrace);
|
showErrorMessage(context, error, stackTrace);
|
||||||
}
|
}
|
||||||
@@ -58,26 +60,25 @@ class _DocumentsPageState extends State<DocumentsPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _loadNewPage(int pageKey) async {
|
Future<void> _loadNewPage(int pageKey) async {
|
||||||
final documentsCubit = BlocProvider.of<DocumentsCubit>(context);
|
final pageCount = _documentsCubit.state
|
||||||
final pageCount = documentsCubit.state
|
.inferPageCount(pageSize: _documentsCubit.state.filter.pageSize);
|
||||||
.inferPageCount(pageSize: documentsCubit.state.filter.pageSize);
|
|
||||||
if (pageCount <= pageKey + 1) {
|
if (pageCount <= pageKey + 1) {
|
||||||
_pagingController.nextPageKey = null;
|
_pagingController.nextPageKey = null;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await documentsCubit.loadMore();
|
await _documentsCubit.loadMore();
|
||||||
} on PaperlessServerException catch (error, stackTrace) {
|
} on PaperlessServerException catch (error, stackTrace) {
|
||||||
showErrorMessage(context, error, stackTrace);
|
showErrorMessage(context, error, stackTrace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onSelected(DocumentModel model) {
|
void _onSelected(DocumentModel model) {
|
||||||
BlocProvider.of<DocumentsCubit>(context).toggleDocumentSelection(model);
|
_documentsCubit.toggleDocumentSelection(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _onRefresh() async {
|
Future<void> _onRefresh() async {
|
||||||
try {
|
try {
|
||||||
await BlocProvider.of<DocumentsCubit>(context).updateCurrentFilter(
|
await _documentsCubit.updateCurrentFilter(
|
||||||
(filter) => filter.copyWith(page: 1),
|
(filter) => filter.copyWith(page: 1),
|
||||||
);
|
);
|
||||||
} on PaperlessServerException catch (error, stackTrace) {
|
} on PaperlessServerException catch (error, stackTrace) {
|
||||||
@@ -94,9 +95,8 @@ class _DocumentsPageState extends State<DocumentsPage> {
|
|||||||
_filterPanelController.close();
|
_filterPanelController.close();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final documentsCubit = BlocProvider.of<DocumentsCubit>(context);
|
if (_documentsCubit.state.selection.isNotEmpty) {
|
||||||
if (documentsCubit.state.selection.isNotEmpty) {
|
_documentsCubit.resetSelection();
|
||||||
documentsCubit.resetSelection();
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -106,15 +106,14 @@ class _DocumentsPageState extends State<DocumentsPage> {
|
|||||||
previous != ConnectivityState.connected &&
|
previous != ConnectivityState.connected &&
|
||||||
current == ConnectivityState.connected,
|
current == ConnectivityState.connected,
|
||||||
listener: (context, state) {
|
listener: (context, state) {
|
||||||
BlocProvider.of<DocumentsCubit>(context).load();
|
_documentsCubit.load();
|
||||||
},
|
},
|
||||||
builder: (context, connectivityState) {
|
builder: (context, connectivityState) {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
drawer: BlocProvider.value(
|
drawer: BlocProvider.value(
|
||||||
value: BlocProvider.of<AuthenticationCubit>(context),
|
value: BlocProvider.of<AuthenticationCubit>(context),
|
||||||
child: InfoDrawer(
|
child: InfoDrawer(
|
||||||
afterInboxClosed: () =>
|
afterInboxClosed: () => _documentsCubit.reload(),
|
||||||
BlocProvider.of<DocumentsCubit>(context).reload(),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
resizeToAvoidBottomInset: true,
|
resizeToAvoidBottomInset: true,
|
||||||
@@ -141,8 +140,7 @@ class _DocumentsPageState extends State<DocumentsPage> {
|
|||||||
scrollController: scrollController,
|
scrollController: scrollController,
|
||||||
initialFilter: state.filter,
|
initialFilter: state.filter,
|
||||||
onFilterChanged: (filter) =>
|
onFilterChanged: (filter) =>
|
||||||
BlocProvider.of<DocumentsCubit>(context)
|
_documentsCubit.updateFilter(filter: filter),
|
||||||
.updateFilter(filter: filter),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@@ -208,17 +206,15 @@ class _DocumentsPageState extends State<DocumentsPage> {
|
|||||||
RepositoryProvider.of<SavedViewRepository>(context)),
|
RepositoryProvider.of<SavedViewRepository>(context)),
|
||||||
child: BlocListener<SavedViewCubit, SavedViewState>(
|
child: BlocListener<SavedViewCubit, SavedViewState>(
|
||||||
listener: (context, state) {
|
listener: (context, state) {
|
||||||
final documentsCubit =
|
|
||||||
BlocProvider.of<DocumentsCubit>(context);
|
|
||||||
try {
|
try {
|
||||||
if (state.selectedSavedViewId == null) {
|
if (state.selectedSavedViewId == null) {
|
||||||
documentsCubit.updateFilter();
|
_documentsCubit.updateFilter();
|
||||||
} else {
|
} else {
|
||||||
final newFilter = state
|
final newFilter = state
|
||||||
.value[state.selectedSavedViewId]
|
.value[state.selectedSavedViewId]
|
||||||
?.toDocumentFilter();
|
?.toDocumentFilter();
|
||||||
if (newFilter != null) {
|
if (newFilter != null) {
|
||||||
documentsCubit.updateFilter(filter: newFilter);
|
_documentsCubit.updateFilter(filter: newFilter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} on PaperlessServerException catch (error, stackTrace) {
|
} on PaperlessServerException catch (error, stackTrace) {
|
||||||
@@ -263,7 +259,7 @@ class _DocumentsPageState extends State<DocumentsPage> {
|
|||||||
await Navigator.of(context).push<DocumentModel?>(
|
await Navigator.of(context).push<DocumentModel?>(
|
||||||
_buildDetailsPageRoute(document),
|
_buildDetailsPageRoute(document),
|
||||||
);
|
);
|
||||||
BlocProvider.of<DocumentsCubit>(context).reload();
|
_documentsCubit.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialPageRoute<DocumentModel?> _buildDetailsPageRoute(
|
MaterialPageRoute<DocumentModel?> _buildDetailsPageRoute(
|
||||||
@@ -279,19 +275,18 @@ class _DocumentsPageState extends State<DocumentsPage> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _addTagToFilter(int tagId) {
|
void _addTagToFilter(int tagId) {
|
||||||
final cubit = BlocProvider.of<DocumentsCubit>(context);
|
|
||||||
try {
|
try {
|
||||||
final tagsQuery = cubit.state.filter.tags is IdsTagsQuery
|
final tagsQuery = _documentsCubit.state.filter.tags is IdsTagsQuery
|
||||||
? cubit.state.filter.tags as IdsTagsQuery
|
? _documentsCubit.state.filter.tags as IdsTagsQuery
|
||||||
: const IdsTagsQuery();
|
: const IdsTagsQuery();
|
||||||
if (tagsQuery.includedIds.contains(tagId)) {
|
if (tagsQuery.includedIds.contains(tagId)) {
|
||||||
cubit.updateCurrentFilter(
|
_documentsCubit.updateCurrentFilter(
|
||||||
(filter) => filter.copyWith(
|
(filter) => filter.copyWith(
|
||||||
tags: tagsQuery.withIdsRemoved([tagId]),
|
tags: tagsQuery.withIdsRemoved([tagId]),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
cubit.updateCurrentFilter(
|
_documentsCubit.updateCurrentFilter(
|
||||||
(filter) => filter.copyWith(
|
(filter) => filter.copyWith(
|
||||||
tags: tagsQuery.withIdQueriesAdded([IncludeTagIdQuery(tagId)]),
|
tags: tagsQuery.withIdQueriesAdded([IncludeTagIdQuery(tagId)]),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user