Skip to content

Commit af765fa

Browse files
authored
chore: better constant refactoring (#1131)
1 parent 6469fc8 commit af765fa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+505
-414
lines changed

lib/app/view/master_detail_page.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:watch_it/watch_it.dart';
66
import 'package:yaru/yaru.dart';
77

88
import '../../app_config.dart';
9+
import '../../common/page_ids.dart';
910
import '../../common/view/back_gesture.dart';
1011
import '../../common/view/global_keys.dart';
1112
import '../../common/view/header_bar.dart';
@@ -64,7 +65,7 @@ class MasterDetailPage extends StatelessWidget with WatchItMixin {
6465
if (context.showMasterPanel) const VerticalDivider(),
6566
Expanded(
6667
child: Navigator(
67-
initialRoute: libraryModel.selectedPageId ?? kSearchPageId,
68+
initialRoute: libraryModel.selectedPageId ?? PageIDs.searchPage,
6869
onDidRemovePage: (page) {},
6970
key: libraryModel.masterNavigatorKey,
7071
observers: [libraryModel],
@@ -122,7 +123,7 @@ class MasterPanel extends StatelessWidget {
122123
return MasterTile(
123124
key: ValueKey(item.pageId),
124125
onTap: () {
125-
if (item.pageId == kNewPlaylistPageId) {
126+
if (item.pageId == PageIDs.newPlaylist) {
126127
showDialog(
127128
context: context,
128129
builder: (context) {

lib/app/view/master_items.dart

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import 'package:flutter/material.dart';
33

44
import '../../app_config.dart';
55
import '../../common/data/audio_type.dart';
6+
import '../../common/page_ids.dart';
67
import '../../common/view/icons.dart';
78
import '../../common/view/side_bar_fall_back_image.dart';
89
import '../../common/view/theme.dart';
9-
import '../../constants.dart';
1010
import '../../home/home_page.dart';
1111
import '../../l10n/l10n.dart';
1212
import '../../library/library_model.dart';
@@ -47,7 +47,7 @@ List<MasterItem> createMasterItems({required LibraryModel libraryModel}) {
4747
titleBuilder: (context) => Text(context.l10n.search),
4848
pageBuilder: (_) => const SearchPage(),
4949
iconBuilder: (_) => Icon(Iconz.search),
50-
pageId: kSearchPageId,
50+
pageId: PageIDs.searchPage,
5151
),
5252
MasterItem(
5353
titleBuilder: (context) => Text(context.l10n.local),
@@ -56,7 +56,7 @@ List<MasterItem> createMasterItems({required LibraryModel libraryModel}) {
5656
audioType: AudioType.local,
5757
selected: selected,
5858
),
59-
pageId: kLocalAudioPageId,
59+
pageId: PageIDs.localAudio,
6060
),
6161
MasterItem(
6262
titleBuilder: (context) => Text(context.l10n.radio),
@@ -65,7 +65,7 @@ List<MasterItem> createMasterItems({required LibraryModel libraryModel}) {
6565
audioType: AudioType.radio,
6666
selected: selected,
6767
),
68-
pageId: kRadioPageId,
68+
pageId: PageIDs.radio,
6969
),
7070
MasterItem(
7171
titleBuilder: (context) => Text(context.l10n.podcasts),
@@ -74,33 +74,33 @@ List<MasterItem> createMasterItems({required LibraryModel libraryModel}) {
7474
audioType: AudioType.podcast,
7575
selected: selected,
7676
),
77-
pageId: kPodcastsPageId,
77+
pageId: PageIDs.podcasts,
7878
),
7979
if (isMobilePlatform)
8080
MasterItem(
8181
titleBuilder: (context) => Text(context.l10n.settings),
8282
iconBuilder: (selected) =>
8383
Icon(selected ? Iconz.settingsFilled : Iconz.settings),
8484
pageBuilder: (context) => const SettingsPage(),
85-
pageId: kSettingsPageId,
85+
pageId: PageIDs.settings,
8686
),
8787
if (isMobilePlatform)
8888
MasterItem(
8989
titleBuilder: (context) => Text(context.l10n.home),
9090
iconBuilder: (selected) =>
9191
Icon(selected ? Iconz.homeFilled : Iconz.home),
9292
pageBuilder: (context) => const HomePage(),
93-
pageId: kHomePageId,
93+
pageId: PageIDs.homePage,
9494
),
9595
MasterItem(
9696
iconBuilder: (selected) => Icon(Iconz.plus),
9797
titleBuilder: (context) => Text(context.l10n.add),
9898
pageBuilder: (_) => const SizedBox.shrink(),
99-
pageId: kNewPlaylistPageId,
99+
pageId: PageIDs.newPlaylist,
100100
),
101101
MasterItem(
102102
titleBuilder: (context) => Text(context.l10n.likedSongs),
103-
pageId: kLikedAudiosPageId,
103+
pageId: PageIDs.likedAudios,
104104
pageBuilder: (_) => const LikedAudioPage(),
105105
subtitleBuilder: (context) => Text(context.l10n.playlist),
106106
iconBuilder: (selected) => LikedAudioPageIcon(selected: selected),

lib/app/view/master_tile.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import 'package:watch_it/watch_it.dart';
33
import 'package:yaru/yaru.dart';
44

55
import '../../common/data/audio_type.dart';
6+
import '../../common/page_ids.dart';
7+
import '../../common/view/icons.dart';
8+
import '../../common/view/spaced_divider.dart';
69
import '../../common/view/ui_constants.dart';
7-
import '../../constants.dart';
810
import '../../extensions/build_context_x.dart';
911
import '../../library/library_model.dart';
1012
import '../../player/player_model.dart';
11-
import '../../common/view/icons.dart';
12-
import '../../common/view/spaced_divider.dart';
1313
import '../../radio/radio_model.dart';
1414

1515
class MasterTile extends StatelessWidget {
@@ -46,7 +46,7 @@ class MasterTile extends StatelessWidget {
4646
);
4747

4848
final Widget tile;
49-
if (pageId == kNewPlaylistPageId) {
49+
if (pageId == PageIDs.newPlaylist) {
5050
tile = _FramedMasterTile(tile: yaruMasterTile);
5151
} else {
5252
tile = yaruMasterTile;

lib/app/view/mobile_musicpod_app.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:phoenix_theme/phoenix_theme.dart';
66
import 'package:watch_it/watch_it.dart';
77

88
import '../../app_config.dart';
9+
import '../../common/page_ids.dart';
910
import '../../common/view/theme.dart';
1011
import '../../constants.dart';
1112
import '../../external_path/external_path_service.dart';
@@ -57,7 +58,7 @@ class _MobileMusicPodAppState extends State<MobileMusicPodApp> {
5758
navigatorKey: libraryModel.masterNavigatorKey,
5859
navigatorObservers: [libraryModel],
5960
initialRoute: isMobilePlatform
60-
? (libraryModel.selectedPageId ?? kHomePageId)
61+
? (libraryModel.selectedPageId ?? PageIDs.homePage)
6162
: null,
6263
onGenerateRoute: (settings) {
6364
final page = (masterItems.firstWhereOrNull(

lib/app/view/mobile_navigation_bar.dart

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:watch_it/watch_it.dart';
3+
4+
import '../../common/page_ids.dart';
15
import '../../common/view/icons.dart';
26
import '../../common/view/theme.dart';
37
import '../../common/view/ui_constants.dart';
4-
import '../../constants.dart';
58
import '../../extensions/build_context_x.dart';
69
import '../../l10n/l10n.dart';
710
import '../../library/library_model.dart';
8-
import 'package:flutter/material.dart';
9-
import 'package:watch_it/watch_it.dart';
1011

1112
class MobileNavigationBar extends StatelessWidget with WatchItMixin {
1213
const MobileNavigationBar({super.key});
@@ -31,34 +32,35 @@ class MobileNavigationBar extends StatelessWidget with WatchItMixin {
3132
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
3233
children: [
3334
IconButton(
34-
isSelected: selectedPageId == kHomePageId,
35+
isSelected: selectedPageId == PageIDs.homePage,
3536
selectedIcon: Icon(Iconz.homeFilled),
3637
icon: Icon(Iconz.home),
3738
tooltip: l10n.home,
38-
onPressed: () => di<LibraryModel>().push(pageId: kHomePageId),
39+
onPressed: () =>
40+
di<LibraryModel>().push(pageId: PageIDs.homePage),
3941
),
4042
IconButton(
41-
isSelected: selectedPageId == kLocalAudioPageId,
43+
isSelected: selectedPageId == PageIDs.localAudio,
4244
selectedIcon: Icon(Iconz.localAudioFilled),
4345
icon: Icon(Iconz.localAudio),
4446
tooltip: l10n.local,
4547
onPressed: () =>
46-
di<LibraryModel>().push(pageId: kLocalAudioPageId),
48+
di<LibraryModel>().push(pageId: PageIDs.localAudio),
4749
),
4850
IconButton(
49-
isSelected: selectedPageId == kRadioPageId,
51+
isSelected: selectedPageId == PageIDs.radio,
5052
selectedIcon: Icon(Iconz.radioFilled),
5153
icon: Icon(Iconz.radio),
5254
tooltip: l10n.radio,
53-
onPressed: () => di<LibraryModel>().push(pageId: kRadioPageId),
55+
onPressed: () => di<LibraryModel>().push(pageId: PageIDs.radio),
5456
),
5557
IconButton(
56-
isSelected: selectedPageId == kPodcastsPageId,
58+
isSelected: selectedPageId == PageIDs.podcasts,
5759
selectedIcon: Icon(Iconz.podcastFilled),
5860
icon: Icon(Iconz.podcast),
5961
tooltip: l10n.podcasts,
6062
onPressed: () =>
61-
di<LibraryModel>().push(pageId: kPodcastsPageId),
63+
di<LibraryModel>().push(pageId: PageIDs.podcasts),
6264
),
6365
],
6466
),

lib/common/file_names.dart

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class FileNames {
2+
static const likedAudios = 'likedAudios.json';
3+
static const playlists = 'playlists.json';
4+
static const pinnedAlbums = 'finallyFixedPinnedAlbums.json';
5+
static const podcasts = 'podcasts.json';
6+
static const podcastUpdates = 'podcastsupdates.json';
7+
static const starredStations = 'uuidStarredStations.json';
8+
static const lastPositions = 'lastPositions.json';
9+
static const playerState = 'playerstate.json';
10+
static const appState = 'appstate.json';
11+
static const downloads = 'downloads.json';
12+
static const feedsWithDownloads = 'feedswithdownloads.json';
13+
static const coverStore = 'coverStore.json';
14+
15+
static const all = {
16+
likedAudios,
17+
playlists,
18+
pinnedAlbums,
19+
podcasts,
20+
podcastUpdates,
21+
starredStations,
22+
lastPositions,
23+
playerState,
24+
appState,
25+
downloads,
26+
feedsWithDownloads,
27+
coverStore,
28+
};
29+
}

lib/common/page_ids.dart

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class PageIDs {
2+
static const settings = 'settings';
3+
static const homePage = 'homePage';
4+
static const selectedPage = 'selectedPageId';
5+
static const localAudio = 'localAudio';
6+
static const podcasts = 'podcasts';
7+
static const radio = 'radio';
8+
static const newPlaylist = 'newPlaylist';
9+
static const likedAudios = 'likedAudios';
10+
static const searchPage = 'searchPageId';
11+
12+
static const permanent = {
13+
homePage,
14+
searchPage,
15+
likedAudios,
16+
localAudio,
17+
podcasts,
18+
radio,
19+
settings,
20+
};
21+
}

lib/common/view/audio_tile_bottom_sheet.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import 'package:collection/collection.dart';
22
import 'package:flutter/material.dart';
33
import 'package:watch_it/watch_it.dart';
44

5-
import '../../constants.dart';
65
import '../../extensions/build_context_x.dart';
76
import '../../l10n/l10n.dart';
87
import '../../library/library_model.dart';
@@ -13,6 +12,7 @@ import '../../player/player_model.dart';
1312
import '../../playlists/view/add_to_playlist_dialog.dart';
1413
import '../data/audio.dart';
1514
import '../data/audio_type.dart';
15+
import '../page_ids.dart';
1616
import 'audio_tile_image.dart';
1717
import 'icons.dart';
1818
import 'like_all_icon.dart';
@@ -135,7 +135,7 @@ class AudioTileBottomSheet extends StatelessWidget {
135135
children: [
136136
_Button(
137137
onPressed: () {
138-
playlistId == kLikedAudiosPageId
138+
playlistId == PageIDs.likedAudios
139139
? libraryModel.removeLikedAudios(audios)
140140
: libraryModel.removeAudiosFromPlaylist(
141141
id: playlistId,
@@ -147,7 +147,7 @@ class AudioTileBottomSheet extends StatelessWidget {
147147
),
148148
_ButtonLabel(
149149
label:
150-
'${l10n.removeFrom} ${playlistId == kLikedAudiosPageId ? l10n.likedSongs : playlistId}',
150+
'${l10n.removeFrom} ${playlistId == PageIDs.likedAudios ? l10n.likedSongs : playlistId}',
151151
),
152152
],
153153
),

lib/common/view/audio_tile_option_button.dart

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ import 'package:watch_it/watch_it.dart';
44
import 'package:yaru/yaru.dart';
55

66
import '../../app_config.dart';
7-
import '../../constants.dart';
87
import '../../extensions/build_context_x.dart';
98
import '../../l10n/l10n.dart';
109
import '../../library/library_model.dart';
1110
import '../../player/player_model.dart';
1211
import '../../playlists/view/add_to_playlist_dialog.dart';
1312
import '../data/audio.dart';
1413
import '../data/audio_type.dart';
14+
import '../page_ids.dart';
1515
import 'audio_tile_bottom_sheet.dart';
1616
import 'icons.dart';
1717
import 'meta_data_dialog.dart';
@@ -63,26 +63,36 @@ class AudioTileOptionButton extends StatelessWidget {
6363
tooltip: l10n.moreOptions,
6464
padding: EdgeInsets.zero,
6565
itemBuilder: (context) {
66+
final currentAudioType = di<PlayerModel>().audio?.audioType;
6667
return [
6768
if (audios.none((e) => e.audioType == AudioType.radio))
6869
PopupMenuItem(
6970
onTap: () {
70-
di<PlayerModel>().insertIntoQueue(audios);
71-
showSnackBar(
72-
context: context,
73-
content: Text(
74-
'${l10n.addedTo} ${l10n.queue}: $searchTerm',
75-
),
76-
);
71+
if (di<PlayerModel>().audio?.audioType == AudioType.radio) {
72+
di<PlayerModel>()
73+
.startPlaylist(audios: audios, listName: playlistId);
74+
} else {
75+
di<PlayerModel>().insertIntoQueue(audios);
76+
showSnackBar(
77+
context: context,
78+
content: Text(
79+
'${l10n.addedTo} ${l10n.queue}: $searchTerm',
80+
),
81+
);
82+
}
7783
},
7884
child: YaruTile(
7985
leading: Icon(Iconz.insertIntoQueue),
80-
title: Text(l10n.playNext),
86+
title: Text(
87+
currentAudioType == AudioType.radio
88+
? l10n.playAll
89+
: l10n.playNext,
90+
),
8191
),
8292
),
8393
if (allowRemove)
8494
PopupMenuItem(
85-
onTap: () => playlistId == kLikedAudiosPageId
95+
onTap: () => playlistId == PageIDs.likedAudios
8696
? libraryModel.removeLikedAudios(audios)
8797
: libraryModel.removeAudiosFromPlaylist(
8898
id: playlistId,
@@ -91,7 +101,7 @@ class AudioTileOptionButton extends StatelessWidget {
91101
child: YaruTile(
92102
leading: Icon(Iconz.remove),
93103
title: Text(
94-
'${l10n.removeFrom} ${playlistId == kLikedAudiosPageId ? l10n.likedSongs : playlistId}',
104+
'${l10n.removeFrom} ${playlistId == PageIDs.likedAudios ? l10n.likedSongs : playlistId}',
95105
),
96106
),
97107
),
@@ -109,18 +119,23 @@ class AudioTileOptionButton extends StatelessWidget {
109119
),
110120
),
111121
),
112-
PopupMenuItem(
113-
onTap: () => showDialog(
114-
context: context,
115-
builder: (context) => MetaDataContent.dialog(audio: audios.first),
116-
),
117-
child: YaruTile(
118-
leading: Icon(Iconz.info),
119-
title: Text(
120-
'${l10n.showMetaData} ...',
122+
if (audios.none(
123+
(e) => e.audioType == AudioType.podcast,
124+
) &&
125+
audios.length == 1)
126+
PopupMenuItem(
127+
onTap: () => showDialog(
128+
context: context,
129+
builder: (context) =>
130+
MetaDataContent.dialog(audio: audios.first),
131+
),
132+
child: YaruTile(
133+
leading: Icon(Iconz.info),
134+
title: Text(
135+
'${l10n.showMetaData} ...',
136+
),
121137
),
122138
),
123-
),
124139
if (audios.none((e) => e.audioType == AudioType.radio))
125140
PopupMenuItem(
126141
enabled: false,

0 commit comments

Comments
 (0)