mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
fix(android): models stripping causing it to not work for release apks
This commit is contained in:
parent
fba1876535
commit
403c4d2c66
7
android/app/proguard-rules.pro
vendored
7
android/app/proguard-rules.pro
vendored
@ -1 +1,8 @@
|
||||
-keep class androidx.lifecycle.DefaultLifecycleObserver
|
||||
|
||||
-keepnames class kotlinx.serialization.** { *; }
|
||||
-keepnames class oss.krtirtho.spotube.glance.models.** { *; }
|
||||
-keep @kotlinx.serialization.Serializable class *
|
||||
-keepclassmembers class ** {
|
||||
@kotlinx.serialization.* <fields>;
|
||||
}
|
||||
|
@ -82,10 +82,13 @@ class HomePlayerWidget : GlanceAppWidget() {
|
||||
|
||||
val isPlaying = prefs.getBoolean("isPlaying", false)
|
||||
val playbackServerAddress = prefs.getString("playbackServerAddress", null) ?: ""
|
||||
|
||||
Log.e("HomePlayerWidget", "Active track String: $activeTrackStr")
|
||||
var activeTrack: Track? = null
|
||||
if (activeTrackStr != null) {
|
||||
activeTrack = gson.fromJson(activeTrackStr, Track::class.java)
|
||||
}
|
||||
Log.e("HomePlayerWidget", "Active track: $activeTrack")
|
||||
|
||||
|
||||
val playIcon = Icon.createWithResource(context, android.R.drawable.ic_media_play);
|
||||
|
@ -5,6 +5,7 @@ import 'package:home_widget/home_widget.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:http/http.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:spotify/spotify.dart';
|
||||
import 'package:spotube/provider/audio_player/audio_player.dart';
|
||||
import 'package:spotube/provider/server/server.dart';
|
||||
import 'package:spotube/services/audio_player/audio_player.dart';
|
||||
@ -70,8 +71,38 @@ Future<void> _updateWidget() async {
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _sendActiveTrack(Track? track) async {
|
||||
if (track == null) {
|
||||
await _saveWidgetData("activeTrack", null);
|
||||
await _updateWidget();
|
||||
return;
|
||||
}
|
||||
|
||||
final jsonTrack = track.toJson();
|
||||
|
||||
final image = track.album?.images?.first;
|
||||
final cachedImage = await DefaultCacheManager().getSingleFile(image!.url!);
|
||||
final data = {
|
||||
...jsonTrack,
|
||||
"album": {
|
||||
...jsonTrack["album"],
|
||||
"images": [
|
||||
{
|
||||
...image.toJson(),
|
||||
"path": cachedImage.path,
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
await _saveWidgetData("activeTrack", jsonEncode(data));
|
||||
|
||||
await _updateWidget();
|
||||
}
|
||||
|
||||
final glanceProvider = Provider((ref) {
|
||||
final server = ref.read(serverProvider);
|
||||
final activeTrack = ref.read(audioPlayerProvider).activeTrack;
|
||||
|
||||
server.whenData(
|
||||
(value) async {
|
||||
@ -85,6 +116,8 @@ final glanceProvider = Provider((ref) {
|
||||
},
|
||||
);
|
||||
|
||||
_sendActiveTrack(activeTrack);
|
||||
|
||||
ref.listen(serverProvider, (prev, next) async {
|
||||
next.whenData(
|
||||
(value) async {
|
||||
@ -105,27 +138,7 @@ final glanceProvider = Provider((ref) {
|
||||
try {
|
||||
if (previous?.activeTrack != next.activeTrack &&
|
||||
next.activeTrack != null) {
|
||||
final jsonTrack = next.activeTrack!.toJson();
|
||||
|
||||
final image = next.activeTrack!.album?.images?.first;
|
||||
final cachedImage =
|
||||
await DefaultCacheManager().getSingleFile(image!.url!);
|
||||
final data = {
|
||||
...jsonTrack,
|
||||
"album": {
|
||||
...jsonTrack["album"],
|
||||
"images": [
|
||||
{
|
||||
...image.toJson(),
|
||||
"path": cachedImage.path,
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
await _saveWidgetData("activeTrack", jsonEncode(data));
|
||||
|
||||
await _updateWidget();
|
||||
await _sendActiveTrack(next.activeTrack);
|
||||
}
|
||||
} catch (e, stack) {
|
||||
AppLogger.reportError(e, stack);
|
||||
|
Loading…
Reference in New Issue
Block a user