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
9
android/app/proguard-rules.pro
vendored
9
android/app/proguard-rules.pro
vendored
@ -1 +1,8 @@
|
|||||||
-keep class androidx.lifecycle.DefaultLifecycleObserver
|
-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 isPlaying = prefs.getBoolean("isPlaying", false)
|
||||||
val playbackServerAddress = prefs.getString("playbackServerAddress", null) ?: ""
|
val playbackServerAddress = prefs.getString("playbackServerAddress", null) ?: ""
|
||||||
|
|
||||||
|
Log.e("HomePlayerWidget", "Active track String: $activeTrackStr")
|
||||||
var activeTrack: Track? = null
|
var activeTrack: Track? = null
|
||||||
if (activeTrackStr != null) {
|
if (activeTrackStr != null) {
|
||||||
activeTrack = gson.fromJson(activeTrackStr, Track::class.java)
|
activeTrack = gson.fromJson(activeTrackStr, Track::class.java)
|
||||||
}
|
}
|
||||||
|
Log.e("HomePlayerWidget", "Active track: $activeTrack")
|
||||||
|
|
||||||
|
|
||||||
val playIcon = Icon.createWithResource(context, android.R.drawable.ic_media_play);
|
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:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:http/http.dart';
|
import 'package:http/http.dart';
|
||||||
import 'package:logger/logger.dart';
|
import 'package:logger/logger.dart';
|
||||||
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/provider/audio_player/audio_player.dart';
|
import 'package:spotube/provider/audio_player/audio_player.dart';
|
||||||
import 'package:spotube/provider/server/server.dart';
|
import 'package:spotube/provider/server/server.dart';
|
||||||
import 'package:spotube/services/audio_player/audio_player.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 glanceProvider = Provider((ref) {
|
||||||
final server = ref.read(serverProvider);
|
final server = ref.read(serverProvider);
|
||||||
|
final activeTrack = ref.read(audioPlayerProvider).activeTrack;
|
||||||
|
|
||||||
server.whenData(
|
server.whenData(
|
||||||
(value) async {
|
(value) async {
|
||||||
@ -85,6 +116,8 @@ final glanceProvider = Provider((ref) {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
_sendActiveTrack(activeTrack);
|
||||||
|
|
||||||
ref.listen(serverProvider, (prev, next) async {
|
ref.listen(serverProvider, (prev, next) async {
|
||||||
next.whenData(
|
next.whenData(
|
||||||
(value) async {
|
(value) async {
|
||||||
@ -105,27 +138,7 @@ final glanceProvider = Provider((ref) {
|
|||||||
try {
|
try {
|
||||||
if (previous?.activeTrack != next.activeTrack &&
|
if (previous?.activeTrack != next.activeTrack &&
|
||||||
next.activeTrack != null) {
|
next.activeTrack != null) {
|
||||||
final jsonTrack = next.activeTrack!.toJson();
|
await _sendActiveTrack(next.activeTrack);
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
} catch (e, stack) {
|
} catch (e, stack) {
|
||||||
AppLogger.reportError(e, stack);
|
AppLogger.reportError(e, stack);
|
||||||
|
Loading…
Reference in New Issue
Block a user