Skip to content

Commit

Permalink
fix: dcm issues
Browse files Browse the repository at this point in the history
  • Loading branch information
Ziedelth committed Sep 9, 2024
1 parent f638038 commit 3f96ed4
Show file tree
Hide file tree
Showing 24 changed files with 160 additions and 161 deletions.
5 changes: 5 additions & 0 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,8 @@ linter:

# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
dart_code_metrics:
extends:
- package:dart_code_metrics_presets/flutter_all.yaml
- package:dart_code_metrics_presets/firebase_analytics.yaml
- package:dart_code_metrics_presets/intl.yaml
3 changes: 2 additions & 1 deletion lib/components/account_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ class AccountCard extends StatelessWidget {
return DecoratedBox(
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.secondary.withOpacity(0.125),
borderRadius: BorderRadius.circular(Constant.borderRadius),
borderRadius:
const BorderRadius.all(Radius.circular(Constant.borderRadius)),
),
child: Padding(
padding: const EdgeInsets.all(16),
Expand Down
3 changes: 2 additions & 1 deletion lib/components/animes/followed_anime_component.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@ class FollowedAnimeComponent extends StatelessWidget {
height: 640 / _ratio,
child: ImageComponent(
uuid: anime.uuid,
borderRadius: BorderRadius.circular(Constant.borderRadius),
borderRadius: const BorderRadius.all(
Radius.circular(Constant.borderRadius)),
),
),
const SizedBox(height: 4),
Expand Down
2 changes: 1 addition & 1 deletion lib/components/animes/missed_anime_component.dart
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class MissedAnimeComponent extends StatelessWidget {
ImageComponent(
uuid: missedAnime.anime.uuid,
fit: BoxFit.cover,
borderRadius: BorderRadius.circular(360),
borderRadius: const BorderRadius.all(Radius.circular(360)),
),
Positioned(
top: 0,
Expand Down
9 changes: 6 additions & 3 deletions lib/components/card_component.dart
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,8 @@ class _CustomCardState extends State<CustomCard> {
height: 100,
child: DecoratedBox(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(Constant.borderRadius),
borderRadius: const BorderRadius.all(
Radius.circular(Constant.borderRadius)),
color: widget.layerColor!.withOpacity(0.5),
),
),
Expand All @@ -65,15 +66,17 @@ class _CustomCardState extends State<CustomCard> {
height: 100,
child: DecoratedBox(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(Constant.borderRadius),
borderRadius: const BorderRadius.all(
Radius.circular(Constant.borderRadius)),
color: widget.layerColor!,
),
),
),
],
DecoratedBox(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(Constant.borderRadius),
borderRadius: const BorderRadius.all(
Radius.circular(Constant.borderRadius)),
color: widget.backgroundColor ?? withOpacity,
),
child: GestureDetector(
Expand Down
3 changes: 2 additions & 1 deletion lib/components/episodes/episode_image.dart
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ class EpisodeImage extends StatelessWidget {
bottom: 5,
right: 5,
child: ClipRRect(
borderRadius: BorderRadius.circular(Constant.borderRadius),
borderRadius: const BorderRadius.all(
Radius.circular(Constant.borderRadius)),
child: ColoredBox(
color: Colors.black.withOpacity(0.5),
child: Padding(
Expand Down
3 changes: 2 additions & 1 deletion lib/components/episodes/followed_episode_component.dart
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ class FollowedEpisodeComponent extends StatelessWidget {
child: EpisodeImage(
episode: episode,
fit: BoxFit.fill,
borderRadius: BorderRadius.circular(Constant.borderRadius),
borderRadius: const BorderRadius.all(
Radius.circular(Constant.borderRadius)),
showDuration: false,
),
),
Expand Down
11 changes: 8 additions & 3 deletions lib/components/member_image.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,19 @@ class MemberImage extends StatelessWidget {

return Container(
decoration: hasBorder
? BoxDecoration(
? const BoxDecoration(
shape: BoxShape.circle,
border: Border.all(color: Colors.white, width: 2),
border: Border.fromBorderSide(
BorderSide(
color: Colors.white,
width: 2,
),
),
)
: null,
padding: const EdgeInsets.all(1),
child: ClipRRect(
borderRadius: BorderRadius.circular(360),
borderRadius: const BorderRadius.all(Radius.circular(360)),
child: showDefaultImage
? defaultImage
: CachedNetworkImage(
Expand Down
2 changes: 1 addition & 1 deletion lib/components/platforms/platform_component.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class PlatformComponent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ClipRRect(
borderRadius: BorderRadius.circular(360),
borderRadius: const BorderRadius.all(Radius.circular(360)),
child: CachedNetworkImage(
imageUrl: '${Constant.baseUrl}/assets/img/platforms/${platform.image}',
filterQuality: FilterQuality.high,
Expand Down
48 changes: 14 additions & 34 deletions lib/controllers/anime_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'dart:async';

import 'package:application/controllers/member_controller.dart';
import 'package:application/controllers/missed_anime_controller.dart';
import 'package:application/controllers/streamable_scroll.dart';
import 'package:application/controllers/simulcast_controller.dart';
import 'package:application/dtos/anime_dto.dart';
import 'package:application/utils/analytics.dart';
Expand All @@ -12,35 +13,8 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:share_plus/share_plus.dart';
import 'package:vibration/vibration.dart';

class AnimeController {
class AnimeController extends StreamableScroll<AnimeDto> {
static AnimeController instance = AnimeController();
final animes = <AnimeDto>[];
final scrollController = ScrollController();
final streamController = StreamController<List<AnimeDto>>.broadcast();
int page = 1;
bool isLoading = false;
bool canLoadMore = true;

Future<void> init() async {
animes.clear();
streamController.add(animes);

page = 1;
isLoading = false;
canLoadMore = true;
await nextPage();

scrollController.addListener(() {
// If the user is going to the end of the list
final position = scrollController.position;

if (position.pixels >= position.maxScrollExtent - 300 &&
!isLoading &&
canLoadMore) {
nextPage();
}
});
}

Future<void> goToTop() async {
await scrollController.animateTo(
Expand All @@ -52,25 +26,31 @@ class AnimeController {
await init();
}

Future<void> nextPage() async {
@override
Future<void> loadItems() async {
if (isLoading) {
return;
}

isLoading = true;

try {
final pageableDto = await HttpRequest.instance.getPage(
'/v1/animes?simulcast=${SimulcastController.instance.current?.uuid}&sort=name&page=$page&limit=6',
final pageableDto = await HttpRequest.instance.getPageWithParams(
'/v1/animes',
queryParameters: {
'simulcast': SimulcastController.instance.current?.uuid,
'sort': 'name',
'page': page,
'limit': 6,
},
);

animes.addAll(
addAll(
pageableDto.data
.map((e) => AnimeDto.fromJson(e as Map<String, dynamic>)),
);

streamController.add(animes);
canLoadMore = animes.length < pageableDto.total;
canLoadMore = items.length < pageableDto.total;
} catch (e) {
debugPrint(e.toString());
} finally {
Expand Down
72 changes: 22 additions & 50 deletions lib/controllers/anime_details_controller.dart
Original file line number Diff line number Diff line change
@@ -1,85 +1,57 @@
import 'dart:async';

import 'package:application/controllers/sort_controller.dart';
import 'package:application/controllers/streamable_scroll.dart';
import 'package:application/dtos/anime_dto.dart';
import 'package:application/dtos/episode_mapping_dto.dart';
import 'package:application/dtos/season_dto.dart';
import 'package:application/utils/http_request.dart';
import 'package:flutter/material.dart';

class AnimeDetailsController {
class AnimeDetailsController extends StreamableScroll<EpisodeMappingDto> {
static AnimeDetailsController instance = AnimeDetailsController();
final episodes = <EpisodeMappingDto>[];
final scrollController = ScrollController();
final streamController =
StreamController<List<EpisodeMappingDto>>.broadcast();
int page = 1;
bool isLoading = false;
bool canLoadMore = true;

AnimeDto? anime;
SeasonDto? season;

Future<void> init() async {
episodes.clear();
streamController.add(episodes);

page = 1;
isLoading = false;
canLoadMore = true;
await nextPage();

scrollController.addListener(() {
// If the user is going to the end of the list
final position = scrollController.position;

if (position.pixels >= position.maxScrollExtent - 300 &&
!isLoading &&
canLoadMore) {
nextPage();
}
});
}

void dispose() {
anime = null;
season = null;
episodes.clear();
streamController.add(episodes);
}

Future<void> refresh() async {
episodes.clear();
page = 1;
isLoading = false;
canLoadMore = true;
await nextPage();
}

Future<void> nextPage() async {
@override
Future<void> loadItems() async {
if (isLoading) {
return;
}

isLoading = true;

try {
final pageableDto = await HttpRequest.instance.getPage(
'/v1/episode-mappings?anime=${anime?.uuid}${season != null ? '&season=${season!.number}' : ''}&${SortController.instance.sortType.value}&page=$page&limit=4',
final pageableDto = await HttpRequest.instance.getPageWithParams(
'/v1/episode-mappings',
queryParameters: {
'anime': anime?.uuid,
'season': season?.number,
'sort': SortController.instance.sortType.value,
'page': page,
'limit': 4,
},
);

episodes.addAll(
addAll(
pageableDto.data
.map((e) => EpisodeMappingDto.fromJson(e as Map<String, dynamic>)),
);

streamController.add(episodes);
canLoadMore = episodes.length < pageableDto.total;
canLoadMore = items.length < pageableDto.total;
} catch (e) {
debugPrint(e.toString());
} finally {
isLoading = false;
page++;
}
}

@override
void dispose() {
anime = null;
season = null;
super.dispose();
}
}
Loading

0 comments on commit 3f96ed4

Please sign in to comment.