Skip to content

Commit

Permalink
feat: show loading circle while searching local tracks
Browse files Browse the repository at this point in the history
  • Loading branch information
MSOB7YY committed May 13, 2024
1 parent bf11761 commit a58231b
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 6 deletions.
12 changes: 11 additions & 1 deletion lib/controller/search_sort_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ class SearchSortController {

RxMap<String, Playlist> get playlistsMap => PlaylistController.inst.playlistsMap;

bool get hasRunningSearch => _runningSearches.values.any((running) => running);

final _runningSearches = <MediaType, bool>{}.obs;

void searchAll(String text) {
lastSearchText = text;
final enabledSearches = settings.activeSearchMediaTypes;
Expand Down Expand Up @@ -176,6 +180,7 @@ class SearchSortController {
return await SearchPortsProvider.inst.preparePorts(
type: MediaType.track,
onResult: (result) {
_runningSearches[MediaType.track] = false;
final r = result as (List<Track>, bool, String);
final isTemp = r.$2;
final fetchedQuery = r.$3;
Expand Down Expand Up @@ -219,6 +224,8 @@ class SearchSortController {
return await SearchPortsProvider.inst.preparePorts(
type: MediaType.playlist,
onResult: (result) {
_runningSearches[MediaType.playlist] = false;

final r = result as (List<String>, bool, String);
final isTemp = r.$2;
final fetchedQuery = r.$3;
Expand Down Expand Up @@ -251,6 +258,7 @@ class SearchSortController {
return await SearchPortsProvider.inst.preparePorts(
type: type,
onResult: (result) {
_runningSearches[type] = false;
final r = result as (List<String>, bool, String);
final isTemp = r.$2;
final fetchedQuery = r.$3;
Expand Down Expand Up @@ -286,7 +294,7 @@ class SearchSortController {
}
return;
}

_runningSearches[MediaType.track] = true;
final sp = await _prepareTracksPorts();
sp.send({
'text': text,
Expand Down Expand Up @@ -435,6 +443,7 @@ class SearchSortController {
return;
}

_runningSearches[type] = true;
final sp = await _prepareMediaPorts(keys, type);
sp.send({
'text': text,
Expand All @@ -452,6 +461,7 @@ class SearchSortController {
}
return;
}
_runningSearches[MediaType.playlist] = true;
final sp = await _preparePlaylistPorts();
sp.send({
'text': text,
Expand Down
19 changes: 15 additions & 4 deletions lib/ui/pages/main_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -242,10 +242,21 @@ class MainPage extends StatelessWidget {
Player.inst.playOrPause(0, SelectedTracksController.inst.currentAllTracks, QueueSource.allTracks, shuffle: fab == FABType.shuffle);
}
},
child: Icon(
ScrollSearchController.inst.isGlobalSearchMenuShown.value ? Broken.search_status_1 : settings.floatingActionButton.value.toIcon(),
color: const Color.fromRGBO(255, 255, 255, 0.8),
),
child: ScrollSearchController.inst.isGlobalSearchMenuShown.value
? Stack(
alignment: Alignment.center,
children: [
const Icon(
Broken.search_status_1,
color: Color.fromRGBO(255, 255, 255, 0.8),
),
if (SearchSortController.inst.hasRunningSearch) searchProgressWidget,
],
)
: Icon(
settings.floatingActionButton.value.toIcon(),
color: const Color.fromRGBO(255, 255, 255, 0.8),
),
),
),
);
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: namida
description: A Beautiful and Feature-rich Music Player, With YouTube & Video Support Built in Flutter
publish_to: "none"
version: 2.2.8-beta+240513131
version: 2.2.9-beta+240513132

environment:
sdk: ">=3.1.4 <4.0.0"
Expand Down

0 comments on commit a58231b

Please sign in to comment.