Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 0 additions & 159 deletions lib/logic/bloc/sort_bloc/sort_bloc.dart

This file was deleted.

100 changes: 72 additions & 28 deletions lib/logic/bloc/sort_bloc/sort_event.dart
Original file line number Diff line number Diff line change
@@ -1,42 +1,86 @@
part of 'sort_bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:openreads/core/constants/enums/book_format.dart';
import 'package:openreads/core/constants/enums/sort_type.dart';

abstract class SortEvent extends Equatable {
const SortEvent();
}

class ChangeSortEvent extends SortEvent {
const ChangeSortEvent({
required this.sortType,
required this.isAsc,
required this.onlyFavourite,
required this.years,
required this.tags,
required this.displayTags,
required this.filterTagsAsAnd,
required this.bookType,
this.filterOutTags = false,
});

class ChangeSortTypeEvent extends SortEvent {
final SortType sortType;
final bool isAsc;

const ChangeSortTypeEvent(this.sortType);

@override
List<Object?> get props => [sortType];
}

class ToggleOrderEvent extends SortEvent {
const ToggleOrderEvent();

@override
List<Object?> get props => [];
}

class ChangeOnlyFavouriteEvent extends SortEvent {
final bool onlyFavourite;

const ChangeOnlyFavouriteEvent(this.onlyFavourite);

@override
List<Object?> get props => [];
}

class ChangeBookTypeEvent extends SortEvent {
final BookFormat? bookType;

const ChangeBookTypeEvent(this.bookType);

@override
List<Object?> get props => [bookType];
}

class ChangeYearsEvent extends SortEvent {
final String? years;

const ChangeYearsEvent(this.years);

@override
List<Object?> get props => [years];
}

class ChangeTagsEvent extends SortEvent {
final String? tags;
final bool displayTags;

const ChangeTagsEvent(this.tags);

@override
List<Object?> get props => [tags];
}

class ChangeFilterTagsAsAnd extends SortEvent {
final bool filterTagsAsAnd;
final BookFormat? bookType;

const ChangeFilterTagsAsAnd(this.filterTagsAsAnd);

@override
List<Object?> get props => [filterTagsAsAnd];
}

class ChangeFilterOutTags extends SortEvent {
final bool filterOutTags;

const ChangeFilterOutTags(this.filterOutTags);

@override
List<Object?> get props => [filterOutTags];
}

class ChangeDisplayTagsEvent extends SortEvent {
final bool displayTags;

const ChangeDisplayTagsEvent(this.displayTags);

@override
List<Object?> get props => [
sortType,
isAsc,
onlyFavourite,
years,
tags,
displayTags,
filterTagsAsAnd,
bookType,
filterOutTags,
];
List<Object?> get props => [displayTags];
}
81 changes: 81 additions & 0 deletions lib/logic/bloc/sort_bloc/sort_finished_books_bloc.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import 'package:hydrated_bloc/hydrated_bloc.dart';
import 'package:openreads/core/constants/enums/sort_type.dart';
import 'package:openreads/logic/bloc/sort_bloc/sort_event.dart';
import 'package:openreads/logic/bloc/sort_bloc/sort_state.dart';

class SortFinishedBooksBloc extends HydratedBloc<SortEvent, SortState> {
SortFinishedBooksBloc()
: super(
const SortState(
sortType: SortType.byFinishDate,
isAsc: false,
onlyFavourite: false,
years: null,
tags: null,
displayTags: false,
filterTagsAsAnd: false,
bookType: null,
),
) {
on<ChangeSortTypeEvent>(
(event, emit) => emit(state.copyWith(sortType: event.sortType)),
);

on<ToggleOrderEvent>(
(event, emit) => emit(state.copyWith(isAsc: !state.isAsc)),
);

on<ChangeOnlyFavouriteEvent>(
(event, emit) => emit(state.copyWith(onlyFavourite: event.onlyFavourite)),
);

on<ChangeBookTypeEvent>(
(event, emit) => emit(
state.copyWith(
bookType: event.bookType,
resetBookType: event.bookType == null,
),
),
);

on<ChangeYearsEvent>(
(event, emit) => emit(
state.copyWith(years: event.years, resetYears: event.years == null),
),
);

on<ChangeTagsEvent>(
(event, emit) => emit(
state.copyWith(tags: event.tags, resetTags: event.tags == null),
),
);

on<ChangeFilterTagsAsAnd>(
(event, emit) => emit(
state.copyWith(
filterTagsAsAnd: event.filterTagsAsAnd,
filterOutTags: false,
),
),
);

on<ChangeFilterOutTags>(
(event, emit) => emit(
state.copyWith(
filterOutTags: event.filterOutTags,
filterTagsAsAnd: false,
),
),
);

on<ChangeDisplayTagsEvent>(
(event, emit) => emit(state.copyWith(displayTags: event.displayTags)),
);
}

@override
SortState? fromJson(Map<String, dynamic> json) => SortState.fromJson(json);

@override
Map<String, dynamic>? toJson(SortState state) => state.toJson();
}
Loading