Compare commits

..

3 Commits

Author SHA1 Message Date
Guanciottaman
cfcb729ff2
Merge ff252d6b14 into 4ed40d95b2 2025-09-10 13:14:10 +06:00
Kingkor Roy Tirtho
4ed40d95b2 chore: remove print 2025-09-09 21:18:54 +06:00
Kingkor Roy Tirtho
b24dcd2951 chore: show loading indicator for alternative sourced track 2025-09-09 21:18:10 +06:00
2 changed files with 35 additions and 11 deletions

View File

@ -70,6 +70,7 @@ class SiblingTracksSheet extends HookConsumerWidget {
final preferences = ref.watch(userPreferencesProvider);
final youtubeEngine = ref.watch(youtubeEngineProvider);
final isLoading = useState(false);
final isSearching = useState(false);
final searchMode = useState(preferences.searchMode);
final activeTrackSources = ref.watch(activeTrackSourcesProvider);
@ -195,27 +196,40 @@ class SiblingTracksSheet extends HookConsumerWidget {
),
],
),
enabled: !isFetchingActiveTrack,
enabled: !isFetchingActiveTrack && !isLoading.value,
selected: !isFetchingActiveTrack &&
sourceInfo.id == activeTrackSource?.info.id,
onPressed: () async {
if (!isFetchingActiveTrack &&
sourceInfo.id != activeTrackSource?.info.id) {
await activeTrackNotifier?.swapWithSibling(sourceInfo);
await ref.read(audioPlayerProvider.notifier).swapActiveSource();
try {
isLoading.value = true;
await activeTrackNotifier?.swapWithSibling(sourceInfo);
await ref.read(audioPlayerProvider.notifier).swapActiveSource();
if (context.mounted) {
if (MediaQuery.sizeOf(context).mdAndUp) {
closeOverlay(context);
} else {
closeDrawer(context);
if (context.mounted) {
if (MediaQuery.sizeOf(context).mdAndUp) {
closeOverlay(context);
} else {
closeDrawer(context);
}
}
} finally {
if (context.mounted) {
isLoading.value = false;
}
}
}
},
);
},
[activeTrackSource, activeTrackNotifier, siblings],
[
activeTrackSource,
activeTrackNotifier,
siblings,
isFetchingActiveTrack,
isLoading.value,
],
);
final scale = context.theme.scaling;
@ -293,6 +307,15 @@ class SiblingTracksSheet extends HookConsumerWidget {
],
),
),
AnimatedSwitcher(
duration: const Duration(milliseconds: 300),
child: isLoading.value
? const SizedBox(
width: double.infinity,
child: LinearProgressIndicator(),
)
: const SizedBox.shrink(),
),
Expanded(
child: AnimatedSwitcher(
duration: const Duration(milliseconds: 300),
@ -307,7 +330,9 @@ class SiblingTracksSheet extends HookConsumerWidget {
itemCount: siblings.length,
separatorBuilder: (context, index) => const Gap(8),
itemBuilder: (context, index) => itemBuilder(
siblings[index], activeTrackSource!.source),
siblings[index],
activeTrackSource!.source,
),
),
true => FutureBuilder(
future: searchRequest,

View File

@ -13,7 +13,6 @@ import 'package:spotube/l10n/l10n.dart';
import 'package:spotube/provider/user_preferences/user_preferences_provider.dart';
final localWithName = L10n.all.map((e) {
print(e);
final isoCodeName =
LanguageLocals.getDisplayLanguage(e.languageCode, e.countryCode);
return (