Skip to content

Commit 5da2a53

Browse files
authored
Merge pull request #250 from amitamrutiya2210/sort-by-features
Sort by features
2 parents e2d9845 + a33a427 commit 5da2a53

34 files changed

+1745
-170
lines changed

lib/Blocs/bloc_provider_list.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:flutter_bloc/flutter_bloc.dart';
12
import 'package:flood_mobile/Blocs/api_bloc/api_bloc.dart';
23
import 'package:flood_mobile/Blocs/client_settings_bloc/client_settings_bloc.dart';
34
import 'package:flood_mobile/Blocs/filter_torrent_bloc/filter_torrent_bloc.dart';
@@ -8,12 +9,12 @@ import 'package:flood_mobile/Blocs/login_screen_bloc/login_screen_bloc.dart';
89
import 'package:flood_mobile/Blocs/multiple_select_torrent_bloc/multiple_select_torrent_bloc.dart';
910
import 'package:flood_mobile/Blocs/onboarding_main_page_bloc/on_boarding_page_color_bloc.dart';
1011
import 'package:flood_mobile/Blocs/power_management_bloc/power_management_bloc.dart';
12+
import 'package:flood_mobile/Blocs/sort_by_torrent_bloc/sort_by_torrent_bloc.dart';
1113
import 'package:flood_mobile/Blocs/sse_bloc/sse_bloc.dart';
1214
import 'package:flood_mobile/Blocs/theme_bloc/theme_bloc.dart';
1315
import 'package:flood_mobile/Blocs/torrent_content_screen_bloc/torrent_content_screen_bloc.dart';
1416
import 'package:flood_mobile/Blocs/user_detail_bloc/user_detail_bloc.dart';
1517
import 'package:flood_mobile/Blocs/user_interface_bloc/user_interface_bloc.dart';
16-
import 'package:flutter_bloc/flutter_bloc.dart';
1718

1819
class BlocProviders {
1920
static List<BlocProvider> multiBlocProviders = [
@@ -61,6 +62,9 @@ class BlocProviders {
6162
BlocProvider<UserInterfaceBloc>(
6263
create: (context) => UserInterfaceBloc(),
6364
),
65+
BlocProvider<SortByTorrentBloc>(
66+
create: (context) => SortByTorrentBloc(),
67+
),
6468
BlocProvider<PowerManagementBloc>(
6569
create: (context) => PowerManagementBloc(),
6670
),
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
import 'package:bloc/bloc.dart';
2+
import 'package:equatable/equatable.dart';
3+
4+
part 'sort_by_torrent_event.dart';
5+
part 'sort_by_torrent_state.dart';
6+
7+
class SortByTorrentBloc extends Bloc<SortByTorrentEvent, SortByTorrentState> {
8+
SortByTorrentBloc() : super(SortByTorrentState()) {
9+
on<SetNameDirectionEvent>((event, emit) {
10+
_setNameDirectionEvent(event, emit);
11+
});
12+
13+
on<SetPercentageDirectionEvent>((event, emit) {
14+
_setPercentageDirectionEvent(event, emit);
15+
});
16+
17+
on<SetDownloadedDirectionEvent>((event, emit) {
18+
_setDownloadedDirectionEvent(event, emit);
19+
});
20+
21+
on<SetDownSpeedDirectionEvent>((event, emit) {
22+
_setDownSpeedDirectionEvent(event, emit);
23+
});
24+
25+
on<SetUploadedDirectionEvent>((event, emit) {
26+
_setUploadedDirectionEvent(event, emit);
27+
});
28+
29+
on<SetUpSpeedDirectionEvent>((event, emit) {
30+
_setUpSpeedDirectionEvent(event, emit);
31+
});
32+
33+
on<SetRatioDirectionEvent>((event, emit) {
34+
_setRatioDirectionEvent(event, emit);
35+
});
36+
37+
on<SetFileSizeDirectionEvent>((event, emit) {
38+
_setFileSizeDirectionEvent(event, emit);
39+
});
40+
41+
on<SetPeersDirectionEvent>((event, emit) {
42+
_setPeersDirectionEvent(event, emit);
43+
});
44+
45+
on<SetSeedsDirectionEvent>((event, emit) {
46+
_setSeedsDirectionEvent(event, emit);
47+
});
48+
49+
on<SetDateAddedDirectionEvent>((event, emit) {
50+
_setDateAddedDirectionEvent(event, emit);
51+
});
52+
53+
on<SetDateCreatedDirectionEvent>((event, emit) {
54+
_setDateCreatedDirectionEvent(event, emit);
55+
});
56+
}
57+
58+
void _setNameDirectionEvent(
59+
SetNameDirectionEvent event, Emitter<SortByTorrentState> emit) {
60+
emit(state.copyWith(
61+
nameDirection: event.nameDirection,
62+
sortByStatus: SortByValue.name,
63+
));
64+
}
65+
66+
void _setPercentageDirectionEvent(
67+
SetPercentageDirectionEvent event, Emitter<SortByTorrentState> emit) {
68+
emit(state.copyWith(
69+
percentageDirection: event.percentageDirection,
70+
sortByStatus: SortByValue.percentage,
71+
));
72+
}
73+
74+
void _setDownloadedDirectionEvent(
75+
SetDownloadedDirectionEvent event, Emitter<SortByTorrentState> emit) {
76+
emit(state.copyWith(
77+
downloadedDirection: event.downloadedDirection,
78+
sortByStatus: SortByValue.downloaded,
79+
));
80+
}
81+
82+
void _setDownSpeedDirectionEvent(
83+
SetDownSpeedDirectionEvent event, Emitter<SortByTorrentState> emit) {
84+
emit(state.copyWith(
85+
downSpeedDirection: event.downSpeedDirection,
86+
sortByStatus: SortByValue.downSpeed,
87+
));
88+
}
89+
90+
void _setUploadedDirectionEvent(
91+
SetUploadedDirectionEvent event, Emitter<SortByTorrentState> emit) {
92+
emit(state.copyWith(
93+
uploadedDirection: event.uploadedDirection,
94+
sortByStatus: SortByValue.uploaded,
95+
));
96+
}
97+
98+
void _setUpSpeedDirectionEvent(
99+
SetUpSpeedDirectionEvent event, Emitter<SortByTorrentState> emit) {
100+
emit(state.copyWith(
101+
upSpeedDirection: event.upSpeedDirection,
102+
sortByStatus: SortByValue.upSpeed,
103+
));
104+
}
105+
106+
void _setRatioDirectionEvent(
107+
SetRatioDirectionEvent event, Emitter<SortByTorrentState> emit) {
108+
emit(state.copyWith(
109+
ratioDirection: event.ratioDirection,
110+
sortByStatus: SortByValue.ratio,
111+
));
112+
}
113+
114+
void _setFileSizeDirectionEvent(
115+
SetFileSizeDirectionEvent event, Emitter<SortByTorrentState> emit) {
116+
emit(state.copyWith(
117+
fileSizeDirection: event.fileSizeDirection,
118+
sortByStatus: SortByValue.fileSize,
119+
));
120+
}
121+
122+
void _setPeersDirectionEvent(
123+
SetPeersDirectionEvent event, Emitter<SortByTorrentState> emit) {
124+
emit(state.copyWith(
125+
peersDirection: event.peersDirection, sortByStatus: SortByValue.peers));
126+
}
127+
128+
void _setSeedsDirectionEvent(
129+
SetSeedsDirectionEvent event, Emitter<SortByTorrentState> emit) {
130+
emit(state.copyWith(
131+
seedsDirection: event.seedsDirection,
132+
sortByStatus: SortByValue.seeds,
133+
));
134+
}
135+
136+
void _setDateAddedDirectionEvent(
137+
SetDateAddedDirectionEvent event, Emitter<SortByTorrentState> emit) {
138+
emit(state.copyWith(
139+
dateAddedDirection: event.dateAddedDirection,
140+
sortByStatus: SortByValue.dateAdded,
141+
));
142+
}
143+
144+
void _setDateCreatedDirectionEvent(
145+
SetDateCreatedDirectionEvent event, Emitter<SortByTorrentState> emit) {
146+
emit(state.copyWith(
147+
dateCreatedDirection: event.dateCreatedDirection,
148+
sortByStatus: SortByValue.dateCreated,
149+
));
150+
}
151+
}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
part of 'sort_by_torrent_bloc.dart';
2+
3+
abstract class SortByTorrentEvent extends Equatable {
4+
const SortByTorrentEvent();
5+
6+
@override
7+
List<Object?> get props => [];
8+
}
9+
10+
class SetNameDirectionEvent extends SortByTorrentEvent {
11+
final SortByDirection nameDirection;
12+
13+
SetNameDirectionEvent({required this.nameDirection});
14+
15+
@override
16+
List<Object?> get props => [nameDirection];
17+
}
18+
19+
class SetPercentageDirectionEvent extends SortByTorrentEvent {
20+
final SortByDirection percentageDirection;
21+
22+
SetPercentageDirectionEvent({required this.percentageDirection});
23+
24+
@override
25+
List<Object?> get props => [percentageDirection];
26+
}
27+
28+
class SetDownloadedDirectionEvent extends SortByTorrentEvent {
29+
final SortByDirection downloadedDirection;
30+
31+
SetDownloadedDirectionEvent({required this.downloadedDirection});
32+
33+
@override
34+
List<Object?> get props => [downloadedDirection];
35+
}
36+
37+
class SetDownSpeedDirectionEvent extends SortByTorrentEvent {
38+
final SortByDirection downSpeedDirection;
39+
40+
SetDownSpeedDirectionEvent({required this.downSpeedDirection});
41+
42+
@override
43+
List<Object?> get props => [downSpeedDirection];
44+
}
45+
46+
class SetUploadedDirectionEvent extends SortByTorrentEvent {
47+
final SortByDirection uploadedDirection;
48+
49+
SetUploadedDirectionEvent({required this.uploadedDirection});
50+
51+
@override
52+
List<Object?> get props => [uploadedDirection];
53+
}
54+
55+
class SetUpSpeedDirectionEvent extends SortByTorrentEvent {
56+
final SortByDirection upSpeedDirection;
57+
58+
SetUpSpeedDirectionEvent({required this.upSpeedDirection});
59+
60+
@override
61+
List<Object?> get props => [upSpeedDirection];
62+
}
63+
64+
class SetRatioDirectionEvent extends SortByTorrentEvent {
65+
final SortByDirection ratioDirection;
66+
67+
SetRatioDirectionEvent({required this.ratioDirection});
68+
69+
@override
70+
List<Object?> get props => [ratioDirection];
71+
}
72+
73+
class SetFileSizeDirectionEvent extends SortByTorrentEvent {
74+
final SortByDirection fileSizeDirection;
75+
76+
SetFileSizeDirectionEvent({required this.fileSizeDirection});
77+
78+
@override
79+
List<Object?> get props => [fileSizeDirection];
80+
}
81+
82+
class SetPeersDirectionEvent extends SortByTorrentEvent {
83+
final SortByDirection peersDirection;
84+
85+
SetPeersDirectionEvent({required this.peersDirection});
86+
87+
@override
88+
List<Object?> get props => [peersDirection];
89+
}
90+
91+
class SetSeedsDirectionEvent extends SortByTorrentEvent {
92+
final SortByDirection seedsDirection;
93+
94+
SetSeedsDirectionEvent({required this.seedsDirection});
95+
96+
@override
97+
List<Object?> get props => [seedsDirection];
98+
}
99+
100+
class SetDateAddedDirectionEvent extends SortByTorrentEvent {
101+
final SortByDirection dateAddedDirection;
102+
103+
SetDateAddedDirectionEvent({required this.dateAddedDirection});
104+
105+
@override
106+
List<Object?> get props => [dateAddedDirection];
107+
}
108+
109+
class SetDateCreatedDirectionEvent extends SortByTorrentEvent {
110+
final SortByDirection dateCreatedDirection;
111+
112+
SetDateCreatedDirectionEvent({required this.dateCreatedDirection});
113+
114+
@override
115+
List<Object?> get props => [dateCreatedDirection];
116+
}

0 commit comments

Comments
 (0)