findScenes method
- int? page,
- int? perPage,
- String? filter,
- String? sort,
- bool descending = true,
- bool? organized,
- bool? performerFavorite,
- String? performerId,
- String? studioId,
- String? tagId,
- SceneFilter? sceneFilter,
override
Implementation
@override
Future<List<Scene>> findScenes({
int? page,
int? perPage,
String? filter,
String? sort,
bool descending = true,
bool? organized,
bool? performerFavorite,
String? performerId,
String? studioId,
String? tagId,
SceneFilter? sceneFilter,
}) async {
String? effectiveSort = sort == 'rating100' ? 'rating' : sort;
var result = await _runFindScenes(
page: page,
perPage: perPage,
filter: filter,
sort: effectiveSort,
descending: descending,
organized: organized,
performerFavorite: performerFavorite,
performerId: performerId,
studioId: studioId,
tagId: tagId,
sceneFilter: sceneFilter,
);
if (result.hasException &&
effectiveSort == 'rating' &&
_isInvalidSort(result.exception!, 'rating')) {
effectiveSort = 'rating100';
result = await _runFindScenes(
page: page,
perPage: perPage,
filter: filter,
sort: effectiveSort,
descending: descending,
organized: organized,
performerFavorite: performerFavorite,
performerId: performerId,
studioId: studioId,
tagId: tagId,
sceneFilter: sceneFilter,
);
}
if (result.hasException) throw result.exception!;
return result.parsedData!.findScenes.scenes
.map(
(s) => Scene(
id: s.id,
title: s.title ?? '',
details: null,
path: s.files.isNotEmpty ? s.files.first.path : null,
date: DateTime.tryParse(s.date ?? '') ?? DateTime.now(),
rating100: s.rating100,
oCounter: s.o_counter ?? 0,
organized: s.organized,
interactive: s.interactive,
resumeTime: s.resume_time,
playCount: s.play_count ?? 0,
files: s.files
.map(
(f) => SceneFile(
format: null,
width: null,
height: null,
videoCodec: null,
audioCodec: null,
bitRate: null,
duration: f.duration,
frameRate: null,
),
)
.toList(),
paths: ScenePaths(
screenshot: resolveGraphqlMediaUrl(
rawUrl: s.paths.screenshot,
graphqlEndpoint: _graphqlEndpoint,
),
preview: resolveGraphqlMediaUrl(
rawUrl: s.paths.preview,
graphqlEndpoint: _graphqlEndpoint,
),
stream: resolveGraphqlMediaUrl(
rawUrl: s.paths.stream,
graphqlEndpoint: _graphqlEndpoint,
),
),
studioId: s.studio?.id,
studioName: s.studio?.name,
studioImagePath: resolveGraphqlMediaUrl(
rawUrl: s.studio?.image_path,
graphqlEndpoint: _graphqlEndpoint,
),
performerIds: s.performers.map((p) => p.id).toList(),
performerNames: s.performers.map((p) => p.name).toList(),
performerImagePaths: s.performers
.map(
(p) => resolveGraphqlMediaUrl(
rawUrl: p.image_path,
graphqlEndpoint: _graphqlEndpoint,
),
)
.toList(),
tagIds: [],
tagNames: [],
),
)
.toList();
}