Skip to content

Commit 639d559

Browse files
authored
feat: Add trickplay option to refresh metadata (#648)
1 parent b98d505 commit 639d559

File tree

9 files changed

+43
-16
lines changed

9 files changed

+43
-16
lines changed

lib/jellyfin/enum_models.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import 'package:flutter/material.dart';
2+
23
import 'package:collection/collection.dart';
4+
35
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
46
import 'package:fladder/util/localization_helper.dart';
57

lib/l10n/app_en.arb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1382,5 +1382,6 @@
13821382
"playerSettingsScreensaverDesc": "Select screen saver that will be shown after no player activity",
13831383
"settingsLocalUrlTitle": "Local Server URL",
13841384
"settingsLocalUrlSetTitle": "Configure Local URL",
1385-
"settingsLocalUrlSetDesc": "Specify the local server address. Fladder will automatically use this URL when your device is on the same network."
1385+
"settingsLocalUrlSetDesc": "Specify the local server address. Fladder will automatically use this URL when your device is on the same network.",
1386+
"regenerateTrickplayImages": "Regenerate trickplay images"
13861387
}

lib/providers/service_provider.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -990,13 +990,15 @@ class JellyService {
990990
MetadataRefresh? imageRefreshMode,
991991
bool? replaceAllMetadata,
992992
bool? replaceAllImages,
993+
bool? replaceTrickplayImages,
993994
}) =>
994995
api.itemsItemIdRefreshPost(
995996
itemId: itemId,
996997
metadataRefreshMode: metadataRefreshMode?.metadataRefreshMode,
997998
imageRefreshMode: imageRefreshMode?.imageRefreshMode,
998999
replaceAllMetadata: replaceAllMetadata,
9991000
replaceAllImages: replaceAllImages,
1001+
regenerateTrickplay: replaceTrickplayImages,
10001002
);
10011003

10021004
Future<Response<UserItemDataDto>> usersUserIdFavoriteItemsItemIdPost({

lib/providers/user_provider.dart

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,19 +96,30 @@ class User extends _$User {
9696
String itemId, {
9797
MetadataRefresh? metadataRefreshMode,
9898
bool? replaceAllMetadata,
99+
bool? replaceTrickplayImages,
99100
}) async {
100101
return api.itemsItemIdRefreshPost(
101102
itemId: itemId,
102-
metadataRefreshMode: metadataRefreshMode,
103-
imageRefreshMode: metadataRefreshMode,
103+
metadataRefreshMode: switch (metadataRefreshMode) {
104+
MetadataRefresh.defaultRefresh => MetadataRefresh.defaultRefresh,
105+
_ => MetadataRefresh.fullRefresh,
106+
},
107+
imageRefreshMode: switch (metadataRefreshMode) {
108+
MetadataRefresh.defaultRefresh => MetadataRefresh.defaultRefresh,
109+
_ => MetadataRefresh.fullRefresh,
110+
},
104111
replaceAllMetadata: switch (metadataRefreshMode) {
105-
MetadataRefresh.fullRefresh => false,
106-
MetadataRefresh.validation => true,
112+
MetadataRefresh.fullRefresh => true,
107113
_ => false,
108114
},
109115
replaceAllImages: switch (metadataRefreshMode) {
110-
MetadataRefresh.fullRefresh => true,
111-
MetadataRefresh.validation => true,
116+
MetadataRefresh.fullRefresh => replaceAllMetadata,
117+
MetadataRefresh.validation => replaceAllMetadata,
118+
_ => false,
119+
},
120+
replaceTrickplayImages: switch (metadataRefreshMode) {
121+
MetadataRefresh.fullRefresh => replaceTrickplayImages,
122+
MetadataRefresh.validation => replaceTrickplayImages,
112123
_ => false,
113124
},
114125
);

lib/screens/book_viewer/book_viewer_settings.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ class BookViewerSettingsScreen extends ConsumerWidget {
128128
child: Text("Disable slide page gestures when zoomed"),
129129
),
130130
const Spacer(),
131-
Switch.adaptive(
131+
Switch(
132132
value: settings.disableScrollOnZoom,
133133
onChanged: (value) => ref
134134
.read(bookViewerSettingsProvider.notifier)
@@ -149,7 +149,7 @@ class BookViewerSettingsScreen extends ConsumerWidget {
149149
child: Text("Cache page zoom state"),
150150
),
151151
const Spacer(),
152-
Switch.adaptive(
152+
Switch(
153153
value: settings.cachePageZoom,
154154
onChanged: (value) => ref
155155
.read(bookViewerSettingsProvider.notifier)
@@ -170,7 +170,7 @@ class BookViewerSettingsScreen extends ConsumerWidget {
170170
child: Text("Keep page zoom"),
171171
),
172172
const Spacer(),
173-
Switch.adaptive(
173+
Switch(
174174
value: settings.keepPageZoom,
175175
onChanged: (value) => ref
176176
.read(bookViewerSettingsProvider.notifier)

lib/screens/metadata/edit_screens/edit_fields.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,7 @@ class _EditGeneralState extends ConsumerState<EditFields> {
610610
}),
611611
bool _ => SettingsListTile(
612612
label: Text(keyLabel),
613-
trailing: Switch.adaptive(
613+
trailing: Switch(
614614
value: e.value as bool,
615615
onChanged: (value) =>
616616
ref.read(editItemProvider.notifier).updateField(MapEntry(e.key, value)),
@@ -669,7 +669,7 @@ class _EditGeneralState extends ConsumerState<EditFields> {
669669
children: [
670670
Text(values.key.value),
671671
const Spacer(),
672-
Switch.adaptive(
672+
Switch(
673673
value: !values.value,
674674
onChanged: (value) {
675675
final newEntries = map;

lib/screens/metadata/edit_screens/edit_image_content.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ class _EditImageContentState extends ConsumerState<EditImageContent> {
213213
),
214214
SettingsListTile(
215215
label: const Text("Include all languages"),
216-
trailing: Switch.adaptive(
216+
trailing: Switch(
217217
value: includeAllImages,
218218
onChanged: (value) {
219219
ref.read(editItemProvider.notifier).setIncludeImages(value);

lib/screens/metadata/identifty_screen.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ class _IdentifyScreenState extends ConsumerState<IdentifyScreen> with TickerProv
161161
children: [
162162
Text(context.localized.replaceAllImages),
163163
const SizedBox(width: 16),
164-
Switch.adaptive(
164+
Switch(
165165
value: state.replaceAllImages,
166166
onChanged: (value) {
167167
ref.read(provider.notifier).update((state) => state.copyWith(replaceAllImages: value));

lib/screens/metadata/refresh_metadata.dart

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class RefreshPopupDialog extends ConsumerStatefulWidget {
3434
class _RefreshPopupDialogState extends ConsumerState<RefreshPopupDialog> {
3535
MetadataRefresh refreshMode = MetadataRefresh.defaultRefresh;
3636
bool replaceAllMetadata = false;
37+
bool replaceTrickplayImages = false;
3738

3839
@override
3940
Widget build(BuildContext context) {
@@ -79,14 +80,24 @@ class _RefreshPopupDialogState extends ConsumerState<RefreshPopupDialog> {
7980
.toList(),
8081
),
8182
),
82-
if (refreshMode != MetadataRefresh.defaultRefresh)
83+
if (refreshMode != MetadataRefresh.defaultRefresh) ...[
8384
SettingsListTile(
8485
label: Text(context.localized.replaceExistingImages),
85-
trailing: Switch.adaptive(
86+
onTap: () => setState(() => replaceAllMetadata = !replaceAllMetadata),
87+
trailing: Switch(
8688
value: replaceAllMetadata,
8789
onChanged: (value) => setState(() => replaceAllMetadata = value),
8890
),
8991
),
92+
SettingsListTile(
93+
label: Text(context.localized.regenerateTrickplayImages),
94+
onTap: () => setState(() => replaceTrickplayImages = !replaceTrickplayImages),
95+
trailing: Switch(
96+
value: replaceTrickplayImages,
97+
onChanged: (value) => setState(() => replaceTrickplayImages = value),
98+
),
99+
),
100+
],
90101
SettingsListTile(
91102
label: Text(
92103
context.localized.refreshPopupContentMetadata,

0 commit comments

Comments
 (0)