chore: check for custom path in setting engine select dropdown

This commit is contained in:
Kingkor Roy Tirtho 2025-02-08 21:44:43 +06:00
parent fc9121b488
commit b58dec7d1f

View File

@ -1,3 +1,5 @@
import 'dart:io';
import 'package:auto_route/auto_route.dart'; import 'package:auto_route/auto_route.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
@ -17,6 +19,7 @@ import 'package:spotube/modules/settings/youtube_engine_not_installed_dialog.dar
import 'package:spotube/provider/audio_player/sources/invidious_instances_provider.dart'; import 'package:spotube/provider/audio_player/sources/invidious_instances_provider.dart';
import 'package:spotube/provider/audio_player/sources/piped_instances_provider.dart'; import 'package:spotube/provider/audio_player/sources/piped_instances_provider.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart'; import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
import 'package:spotube/services/kv_store/kv_store.dart';
import 'package:spotube/services/sourced_track/enums.dart'; import 'package:spotube/services/sourced_track/enums.dart';
import 'package:spotube/services/youtube_engine/yt_dlp_engine.dart'; import 'package:spotube/services/youtube_engine/yt_dlp_engine.dart';
@ -211,15 +214,19 @@ class SettingsPlaybackSection extends HookConsumerWidget {
.toList(), .toList(),
onChanged: (value) async { onChanged: (value) async {
if (value == null) return; if (value == null) return;
if (value == YoutubeClientEngine.ytDlp && if (value == YoutubeClientEngine.ytDlp) {
!await YtDlpEngine.isInstalled() && final customPath = KVStoreService.getYoutubeEnginePath(value);
context.mounted) { if (!await YtDlpEngine.isInstalled() &&
final hasInstalled = await showDialog<bool>( (customPath == null ||
context: context, !await File(customPath).exists()) &&
builder: (context) => context.mounted) {
YouTubeEngineNotInstalledDialog(engine: value), final hasInstalled = await showDialog<bool>(
); context: context,
if (hasInstalled != true) return; builder: (context) =>
YouTubeEngineNotInstalledDialog(engine: value),
);
if (hasInstalled != true) return;
}
} }
preferencesNotifier.setYoutubeClientEngine(value); preferencesNotifier.setYoutubeClientEngine(value);
}, },