Skip to content

Commit

Permalink
Merge branch 'redesign' into server-discovery-emulation
Browse files Browse the repository at this point in the history
  • Loading branch information
Chaphasilor committed Oct 3, 2024
2 parents 5f9317e + 9257e9a commit 34b2acd
Show file tree
Hide file tree
Showing 59 changed files with 1,642 additions and 1,155 deletions.
14 changes: 7 additions & 7 deletions .github/workflows/upload-assets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,21 +59,21 @@ jobs:
&& cp assets/com.unicornsonlsd.finamp.metainfo.xml build/linux/x64/release/
# archive bundle and generate checksum
- run: |
tar -czf finamp-${{ github.ref }}-linux-release.tar.gz --directory build/linux/x64/release/ bundle icons finamp.desktop.m4 com.unicornsonlsd.finamp.metainfo.xml \
&& sha256sum finamp-${{ github.ref }}-linux-release.tar.gz > finamp-${{ github.ref }}-linux-release.tar.gz.sha256sum
tar -czf finamp-${{ github.ref_name }}-linux-release.tar.gz --directory build/linux/x64/release/ bundle icons finamp.desktop.m4 com.unicornsonlsd.finamp.metainfo.xml \
&& sha256sum finamp-${{ github.ref_name }}-linux-release.tar.gz > finamp-${{ github.ref_name }}-linux-release.tar.gz.sha256sum
- uses: actions/upload-artifact@v4
with:
name: finamp-${{ github.ref }}-linux-release.tar.gz
path: finamp-${{ github.ref }}-linux-release.tar.gz
name: finamp-${{ github.ref_name }}-linux-release.tar.gz
path: finamp-${{ github.ref_name }}-linux-release.tar.gz
compression-level: 0 # no compression
- uses: actions/upload-artifact@v4
with:
name: finamp-${{ github.ref }}-linux-release.tar.gz.sha256sum
path: finamp-${{ github.ref }}-linux-release.tar.gz.sha256sum
name: finamp-${{ github.ref_name }}-linux-release.tar.gz.sha256sum
path: finamp-${{ github.ref_name }}-linux-release.tar.gz.sha256sum
compression-level: 0 # no compression
- name: Upload release archive
uses: alexellis/[email protected]
env:
GITHUB_TOKEN: ${{ github.token }}
with:
asset_paths: '["./finamp-${{ github.ref }}-linux-release.tar.gz", "./finamp-${{ github.ref }}-linux-release.tar.gz.sha256sum"]'
asset_paths: '["./finamp-${{ github.ref_name }}-linux-release.tar.gz", "./finamp-${{ github.ref_name }}-linux-release.tar.gz.sha256sum"]'
11 changes: 11 additions & 0 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,17 @@ rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
afterEvaluate { project ->
if (project.plugins.hasPlugin("com.android.application") ||
project.plugins.hasPlugin("com.android.library")) {
project.android {
compileSdkVersion 34
buildToolsVersion "34.0.0"
}
}
}
}
subprojects {
project.evaluationDependsOn(':app')
}
Expand Down
16 changes: 16 additions & 0 deletions assets/com.unicornsonlsd.finamp.metainfo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,21 @@
</screenshots>
<launchable type="desktop-id">com.unicornsonlsd.finamp.desktop</launchable>
<releases>
<release version="0.9.11-beta" date="2024-09-17">
<url type="details">https://github.com/jmshrv/finamp/releases/tag/0.9.11-beta</url>
<description>
<p>This is a hotfix for a bug introduced with 0.9.10</p>
<p>
Bug Fixes
</p>
<ul>
<li>Fix white overlay preventing further interaction when using the fast scroller / alphabet list</li>
</ul>
<p>
<em>Thank you for using Finamp!</em>
</p>
</description>
</release>
<release version="0.9.10-beta" date="2024-09-15">
<url type="details">https://github.com/jmshrv/finamp/releases/tag/0.9.10-beta</url>
<description>
Expand All @@ -49,6 +64,7 @@
<li>Added setting to keep the screen on</li>
<li>Accessibility improvements</li>
<li>More lyrics screen customizations</li>
</ul>
<p>
Bug Fixes
</p>
Expand Down
Binary file modified images/finamp_cropped.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions images/finamp_cropped.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 19 additions & 1 deletion ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
PODS:
- app_set_id (1.2.0):
- Flutter
- audio_service (0.0.1):
- Flutter
- audio_session (0.0.1):
- Flutter
- background_downloader (0.0.1):
- Flutter
- battery_plus (1.0.0):
- Flutter
- CropViewController (2.6.1)
- device_info_plus (0.0.1):
- Flutter
Expand Down Expand Up @@ -91,11 +95,15 @@ PODS:
- SwiftyGif (5.4.4)
- url_launcher_ios (0.0.1):
- Flutter
- wakelock_plus (0.0.1):
- Flutter

DEPENDENCIES:
- app_set_id (from `.symlinks/plugins/app_set_id/ios`)
- audio_service (from `.symlinks/plugins/audio_service/ios`)
- audio_session (from `.symlinks/plugins/audio_session/ios`)
- background_downloader (from `.symlinks/plugins/background_downloader/ios`)
- battery_plus (from `.symlinks/plugins/battery_plus/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- DKImagePickerController (= 4.3.4)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
Expand All @@ -110,6 +118,7 @@ DEPENDENCIES:
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)

SPEC REPOS:
trunk:
Expand All @@ -123,12 +132,16 @@ SPEC REPOS:
- SwiftyGif

EXTERNAL SOURCES:
app_set_id:
:path: ".symlinks/plugins/app_set_id/ios"
audio_service:
:path: ".symlinks/plugins/audio_service/ios"
audio_session:
:path: ".symlinks/plugins/audio_session/ios"
background_downloader:
:path: ".symlinks/plugins/background_downloader/ios"
battery_plus:
:path: ".symlinks/plugins/battery_plus/ios"
device_info_plus:
:path: ".symlinks/plugins/device_info_plus/ios"
file_picker:
Expand All @@ -155,11 +168,15 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/sqflite/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
wakelock_plus:
:path: ".symlinks/plugins/wakelock_plus/ios"

SPEC CHECKSUMS:
app_set_id: a4d12ebbc7915f987b4a04983b4c0104c64d5e02
audio_service: f509d65da41b9521a61f1c404dd58651f265a567
audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207
background_downloader: 9f788ffc5de45acf87d6380e91ca0841066c18cf
battery_plus: 1ff2e16ba75af2a78387f65476057a390b47885e
CropViewController: 58fb440f30dac788b129d2a1f24cffdcb102669c
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
DKCamera: a902b66921fca14b7a75266feb8c7568aa7caa71
Expand All @@ -181,7 +198,8 @@ SPEC CHECKSUMS:
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1

PODFILE CHECKSUM: 047c0919aa274fcdf0ce568f883473a4587eda02

COCOAPODS: 1.13.0
COCOAPODS: 1.15.2
2 changes: 1 addition & 1 deletion ios/Runner/AppDelegate.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import UIKit
import Flutter

@UIApplicationMain
@main
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class _AddToPlaylistButtonState extends ConsumerState<AddToPlaylistButton> {
return Semantics.fromProperties(
properties: SemanticsProperties(
label: AppLocalizations.of(context)!.addToPlaylistTooltip,
hint: "Tap to add to playlist. Long press to toggle favorite.",
hint: AppLocalizations.of(context)!.playlistActionsMenuButtonTooltip,
button: true,
),
excludeSemantics: true,
Expand All @@ -72,12 +72,13 @@ class _AddToPlaylistButtonState extends ConsumerState<AddToPlaylistButton> {
return GlobalSnackbar.message((context) =>
AppLocalizations.of(context)!.notAvailableInOfflineMode);
}

bool inPlaylist = queueItemInPlaylist(widget.queueItem);
await showPlaylistActionsMenu(
context: context,
item: widget.item!,
parentPlaylist: inPlaylist ? widget.queueItem!.source.item : null,
parentPlaylist:
inPlaylist ? widget.queueItem!.source.item : null,
usePlayerTheme: true,
);
}),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -437,4 +437,4 @@ class AlbumScreenContentFlexibleSpaceBar extends StatelessWidget {
),
);
}
}
}
143 changes: 62 additions & 81 deletions lib/components/AlbumScreen/download_button.dart
Original file line number Diff line number Diff line change
Expand Up @@ -53,89 +53,70 @@ class DownloadButton extends ConsumerWidget {
viewId = finampUserHelper.currentUser!.currentViewId!;
}

var downloadButton = Semantics.fromProperties(
properties: SemanticsProperties(
label: AppLocalizations.of(context)!.downloadItem,
button: true,
),
container: true,
child: IconButton(
icon: status == DownloadItemStatus.notNeeded
? const Icon(Icons.file_download)
: const Icon(Icons.lock), //TODO get better icon
onPressed: () async {
if (isLibrary) {
await showDialog(
context: context,
builder: (context) => ConfirmationPromptDialog(
promptText: AppLocalizations.of(context)!
.downloadLibraryPrompt(item.name),
confirmButtonText:
AppLocalizations.of(context)!.addButtonLabel,
abortButtonText:
MaterialLocalizations.of(context).cancelButtonLabel,
onConfirmed: () =>
DownloadDialog.show(context, item, viewId),
onAborted: () {},
));
} else {
await DownloadDialog.show(context, item, viewId);
}
},
tooltip: parentTooltip,
),
var downloadButton = IconButton(
icon: status == DownloadItemStatus.notNeeded
? const Icon(Icons.file_download)
: const Icon(Icons.lock), //TODO get better icon
onPressed: () async {
if (isLibrary) {
await showDialog(
context: context,
builder: (context) => ConfirmationPromptDialog(
promptText: AppLocalizations.of(context)!
.downloadLibraryPrompt(item.name),
confirmButtonText:
AppLocalizations.of(context)!.addButtonLabel,
abortButtonText:
MaterialLocalizations.of(context).cancelButtonLabel,
onConfirmed: () =>
DownloadDialog.show(context, item, viewId),
onAborted: () {},
));
} else {
await DownloadDialog.show(context, item, viewId);
}
},
tooltip: parentTooltip,
);
var deleteButton = Semantics.fromProperties(
properties: SemanticsProperties(
label: AppLocalizations.of(context)!.deleteItem,
button: true,
),
container: true,
child: IconButton(
icon: const Icon(Icons.delete),
// If offline, we don't allow the user to delete items.
// If we did, we'd have to implement listeners for MusicScreenTabView so that the user can't delete a parent, go back, and select the same parent.
// If they did, AlbumScreen would show an error since the item no longer exists.
// Also, the user could delete the parent and immediately redownload it, which will either cause unwanted network usage or cause more errors because the user is offline.
onPressed: () {
showDialog(
context: context,
builder: (context) => ConfirmationPromptDialog(
promptText: AppLocalizations.of(context)!.deleteDownloadsPrompt(
item.baseItem?.name ?? "", item.baseItemType.name),
confirmButtonText:
AppLocalizations.of(context)!.deleteDownloadsConfirmButtonText,
abortButtonText:
AppLocalizations.of(context)!.deleteDownloadsAbortButtonText,
onConfirmed: () async {
try {
await downloadsService.deleteDownload(stub: item);
GlobalSnackbar.message((scaffold) =>
AppLocalizations.of(scaffold)!.downloadsDeleted);
} catch (error) {
GlobalSnackbar.error(error);
}
},
onAborted: () {},
),
);
// .whenComplete(() => checkIfDownloaded());
},
)
var deleteButton = IconButton(
icon: const Icon(Icons.delete),
tooltip: AppLocalizations.of(context)!.deleteItem,
// If offline, we don't allow the user to delete items.
// If we did, we'd have to implement listeners for MusicScreenTabView so that the user can't delete a parent, go back, and select the same parent.
// If they did, AlbumScreen would show an error since the item no longer exists.
// Also, the user could delete the parent and immediately redownload it, which will either cause unwanted network usage or cause more errors because the user is offline.
onPressed: () {
showDialog(
context: context,
builder: (context) => ConfirmationPromptDialog(
promptText: AppLocalizations.of(context)!.deleteDownloadsPrompt(
item.baseItem?.name ?? "", item.baseItemType.name),
confirmButtonText:
AppLocalizations.of(context)!.deleteDownloadsConfirmButtonText,
abortButtonText:
AppLocalizations.of(context)!.deleteDownloadsAbortButtonText,
onConfirmed: () async {
try {
await downloadsService.deleteDownload(stub: item);
GlobalSnackbar.message((scaffold) =>
AppLocalizations.of(scaffold)!.downloadsDeleted);
} catch (error) {
GlobalSnackbar.error(error);
}
},
onAborted: () {},
),
);
// .whenComplete(() => checkIfDownloaded());
},
);
var syncButton = Semantics.fromProperties(
properties: SemanticsProperties(
label: AppLocalizations.of(context)!.syncDownloads,
button: true,
),
container: true,
child: IconButton(
icon: const Icon(Icons.sync),
onPressed: () {
downloadsService.resync(item, viewId);
},
color: status.outdated ? Colors.orange : null,
)
var syncButton = IconButton(
icon: const Icon(Icons.sync),
tooltip: AppLocalizations.of(context)!.syncDownloads,
onPressed: () {
downloadsService.resync(item, viewId);
},
color: status.outdated ? Colors.orange : null,
);
if (isOffline) {
if (status.isRequired) {
Expand Down
2 changes: 1 addition & 1 deletion lib/components/AlbumScreen/download_dialog.dart
Original file line number Diff line number Diff line change
Expand Up @@ -236,4 +236,4 @@ class _DownloadDialogState extends State<DownloadDialog> {
],
);
}
}
}
Loading

0 comments on commit 34b2acd

Please sign in to comment.