From dfdc6c949713597f2de8005b0430719d6c012621 Mon Sep 17 00:00:00 2001
From: RaptaG <77157639+RaptaG@users.noreply.github.com>
Date: Fri, 24 Mar 2023 15:56:42 +0200
Subject: [PATCH 1/4] Remove Play Store disclaimer
The copycat's removed
---
README.md | 7 -------
1 file changed, 7 deletions(-)
diff --git a/README.md b/README.md
index 5b51d785..14ac5697 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,3 @@
-
-# 🚨 DO NOT INSTALL Spotube FROM `PLAY STORE`
-## There's an unofficial + `illegal` clone/copycat of Spotube available on `Play Store` that is full of malware, ads and trackers. To help take down this illegal copycat/clone, please FOLLOW THIS GUIDE : [wiki/Report-Spotube-Copycat-on-PlayStore](https://github.com/KRTirtho/spotube/wiki/Report-Spotube-Copycat-on-Playstore)
-
-Follow this issue thread to get updates on the progress of the legal action against the illegal copycat/clone: https://github.com/KRTirtho/spotube/issues/448
-
-

From 6c2e39b2d34115e5e80f91ee7f8ae19db737e710 Mon Sep 17 00:00:00 2001
From: Kingkor Roy Tirtho
Date: Fri, 24 Mar 2023 20:05:29 +0600
Subject: [PATCH 2/4] chore: fix root paths for navigation
---
lib/pages/root/root_app.dart | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/lib/pages/root/root_app.dart b/lib/pages/root/root_app.dart
index f5b06672..b2705b94 100644
--- a/lib/pages/root/root_app.dart
+++ b/lib/pages/root/root_app.dart
@@ -13,6 +13,13 @@ import 'package:spotube/hooks/use_update_checker.dart';
import 'package:spotube/provider/authentication_provider.dart';
import 'package:spotube/provider/downloader_provider.dart';
+const rootPaths = {
+ 0: "/",
+ 1: "/search",
+ 2: "/library",
+ 3: "/lyrics",
+};
+
class RootApp extends HookConsumerWidget {
final Widget child;
const RootApp({
@@ -26,13 +33,6 @@ class RootApp extends HookConsumerWidget {
final isMounted = useIsMounted();
final auth = ref.watch(AuthenticationNotifier.provider);
- final rootPaths = [
- "/",
- if (auth != null) "/search",
- "/library",
- if (auth != null) "/lyrics",
- ].asMap();
-
final downloader = ref.watch(downloaderProvider);
useEffect(() {
downloader.onFileExists = (track) async {
From c46b4284b1d46a614cbcebc8c2f2e52714921b9b Mon Sep 17 00:00:00 2001
From: Kingkor Roy Tirtho
Date: Sat, 1 Apr 2023 13:00:18 +0600
Subject: [PATCH 3/4] fix(macos): crashing on startup
This issue was caused metadata_god which was incorrectly loading dynamic library
---
.env.example | 3 +++
lib/components/library/user_local_tracks.dart | 8 ++++----
lib/main.dart | 2 ++
lib/provider/downloader_provider.dart | 6 +++---
linux/flutter/generated_plugin_registrant.cc | 4 ----
linux/flutter/generated_plugins.cmake | 2 +-
macos/Flutter/GeneratedPluginRegistrant.swift | 2 --
pubspec.lock | 10 +++++-----
pubspec.yaml | 2 +-
windows/flutter/generated_plugin_registrant.cc | 3 ---
windows/flutter/generated_plugins.cmake | 2 +-
11 files changed, 20 insertions(+), 24 deletions(-)
create mode 100644 .env.example
diff --git a/.env.example b/.env.example
new file mode 100644
index 00000000..ad8dfa87
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,3 @@
+POCKETBASE_URL=
+USERNAME=
+PASSWORD=
\ No newline at end of file
diff --git a/lib/components/library/user_local_tracks.dart b/lib/components/library/user_local_tracks.dart
index 9db22b92..76cb1d82 100644
--- a/lib/components/library/user_local_tracks.dart
+++ b/lib/components/library/user_local_tracks.dart
@@ -77,18 +77,18 @@ final localTracksProvider = FutureProvider>((ref) async {
}).map(
(f) async {
try {
- final metadata = await MetadataGod.getMetadata(f.path);
+ final metadata = await MetadataGod.readMetadata(file: f.path);
final imageFile = File(join(
(await getTemporaryDirectory()).path,
"spotube",
basenameWithoutExtension(f.path) +
- imgMimeToExt[metadata?.picture?.mimeType ?? "image/jpeg"]!,
+ imgMimeToExt[metadata.picture?.mimeType ?? "image/jpeg"]!,
));
- if (!await imageFile.exists() && metadata?.picture != null) {
+ if (!await imageFile.exists() && metadata.picture != null) {
await imageFile.create(recursive: true);
await imageFile.writeAsBytes(
- metadata?.picture?.data ?? [],
+ metadata.picture?.data ?? [],
mode: FileMode.writeOnly,
);
}
diff --git a/lib/main.dart b/lib/main.dart
index 95761e33..81c0ec94 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -10,6 +10,7 @@ import 'package:flutter/services.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:metadata_god/metadata_god.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:platform_ui/platform_ui.dart';
import 'package:shared_preferences/shared_preferences.dart';
@@ -68,6 +69,7 @@ void main(List rawArgs) async {
}
WidgetsFlutterBinding.ensureInitialized();
+ MetadataGod.initialize();
await QueryClient.initialize(cachePrefix: "oss.krtirtho.spotube");
Hive.registerAdapter(CacheTrackAdapter());
Hive.registerAdapter(CacheTrackEngagementAdapter());
diff --git a/lib/provider/downloader_provider.dart b/lib/provider/downloader_provider.dart
index eeceacb9..c12ec644 100644
--- a/lib/provider/downloader_provider.dart
+++ b/lib/provider/downloader_provider.dart
@@ -108,8 +108,8 @@ class Downloader with ChangeNotifier {
final response = await get(Uri.parse(imageUri));
await MetadataGod.writeMetadata(
- file.path,
- Metadata(
+ file: file.path,
+ metadata: Metadata(
title: track.name,
artist: track.artists?.map((a) => a.name).join(", "),
album: track.album?.name,
@@ -123,7 +123,7 @@ class Downloader with ChangeNotifier {
fileSize: file.lengthSync(),
trackTotal: track.album?.tracks?.length,
picture: response.headers['content-type'] != null
- ? Image(
+ ? Picture(
data: response.bodyBytes,
mimeType: response.headers['content-type']!,
)
diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc
index 49caffbf..9b97ba1c 100644
--- a/linux/flutter/generated_plugin_registrant.cc
+++ b/linux/flutter/generated_plugin_registrant.cc
@@ -8,7 +8,6 @@
#include
#include
-#include
#include
#include
#include
@@ -21,9 +20,6 @@ void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) catcher_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "CatcherPlugin");
catcher_plugin_register_with_registrar(catcher_registrar);
- g_autoptr(FlPluginRegistrar) metadata_god_registrar =
- fl_plugin_registry_get_registrar_for_plugin(registry, "MetadataGodPlugin");
- metadata_god_plugin_register_with_registrar(metadata_god_registrar);
g_autoptr(FlPluginRegistrar) screen_retriever_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverPlugin");
screen_retriever_plugin_register_with_registrar(screen_retriever_registrar);
diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake
index 81a1f2e1..bb62b362 100644
--- a/linux/flutter/generated_plugins.cmake
+++ b/linux/flutter/generated_plugins.cmake
@@ -5,7 +5,6 @@
list(APPEND FLUTTER_PLUGIN_LIST
audioplayers_linux
catcher
- metadata_god
screen_retriever
url_launcher_linux
window_manager
@@ -13,6 +12,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
+ metadata_god
)
set(PLUGIN_BUNDLED_LIBRARIES)
diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift
index cb3b7f70..5b79119c 100644
--- a/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -11,7 +11,6 @@ import audioplayers_darwin
import catcher
import device_info_plus
import macos_ui
-import metadata_god
import package_info_plus
import path_provider_foundation
import screen_retriever
@@ -28,7 +27,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
CatcherPlugin.register(with: registry.registrar(forPlugin: "CatcherPlugin"))
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
MacOSUiPlugin.register(with: registry.registrar(forPlugin: "MacOSUiPlugin"))
- MetadataGodPlugin.register(with: registry.registrar(forPlugin: "MetadataGodPlugin"))
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin"))
diff --git a/pubspec.lock b/pubspec.lock
index 360e3d36..f1e24c15 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -704,10 +704,10 @@ packages:
dependency: transitive
description:
name: flutter_rust_bridge
- sha256: aedbf045f72c7ed778d1cfc8bff0ceae28519d258e3f477abd70ce375ae8cdda
+ sha256: "34f5becca2df35955b2ec5e875349028ea609a826de7aade4de80534cf876b27"
url: "https://pub.dev"
source: hosted
- version: "1.62.1"
+ version: "1.72.1"
flutter_svg:
dependency: "direct main"
description:
@@ -1002,10 +1002,10 @@ packages:
dependency: "direct main"
description:
name: metadata_god
- sha256: a2a54285d363f15baa261abc16eb5f1b95397c7838a29c9c98d2a684e6fe052c
+ sha256: "02de939fc2dcfdc959ed34768eecc97038b6e95ebaa3415f9f7582d71a2ad047"
url: "https://pub.dev"
source: hosted
- version: "0.3.2"
+ version: "0.4.1"
mime:
dependency: "direct main"
description:
@@ -1807,5 +1807,5 @@ packages:
source: hosted
version: "1.12.3"
sdks:
- dart: ">=2.19.0 <3.0.0"
+ dart: ">=2.19.2 <3.0.0"
flutter: ">=3.7.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 2751e347..d8548b2f 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -52,7 +52,7 @@ dependencies:
logger: ^1.1.0
macos_ui: ^1.9.0
marquee: ^2.2.3
- metadata_god: ^0.3.2
+ metadata_god: ^0.4.1
mime: ^1.0.2
package_info_plus: ^3.0.2
palette_generator: ^0.3.3
diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc
index 24522238..4215e258 100644
--- a/windows/flutter/generated_plugin_registrant.cc
+++ b/windows/flutter/generated_plugin_registrant.cc
@@ -8,7 +8,6 @@
#include
#include
-#include
#include
#include
#include
@@ -20,8 +19,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin"));
CatcherPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("CatcherPlugin"));
- MetadataGodPluginCApiRegisterWithRegistrar(
- registry->GetRegistrarForPlugin("MetadataGodPluginCApi"));
PermissionHandlerWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin"));
ScreenRetrieverPluginRegisterWithRegistrar(
diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake
index b8a3a01b..8633ddfa 100644
--- a/windows/flutter/generated_plugins.cmake
+++ b/windows/flutter/generated_plugins.cmake
@@ -5,7 +5,6 @@
list(APPEND FLUTTER_PLUGIN_LIST
audioplayers_windows
catcher
- metadata_god
permission_handler_windows
screen_retriever
url_launcher_windows
@@ -14,6 +13,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
+ metadata_god
)
set(PLUGIN_BUNDLED_LIBRARIES)
From f4b2255bc399738ce3000299b408970cf9faff42 Mon Sep 17 00:00:00 2001
From: Kingkor Roy Tirtho
Date: Sat, 1 Apr 2023 13:01:33 +0600
Subject: [PATCH 4/4] chore: remove unnecessary comment
---
lib/collections/routes.dart | 1 -
1 file changed, 1 deletion(-)
diff --git a/lib/collections/routes.dart b/lib/collections/routes.dart
index 353d4e5c..3b0dfccf 100644
--- a/lib/collections/routes.dart
+++ b/lib/collections/routes.dart
@@ -17,7 +17,6 @@ import 'package:spotube/pages/lyrics/lyrics.dart';
import 'package:spotube/pages/player/player.dart';
import 'package:spotube/pages/playlist/playlist.dart';
import 'package:spotube/pages/root/root_app.dart';
-// import 'package:spotube/pages/search/search.dart';
import 'package:spotube/pages/settings/settings.dart';
import 'package:spotube/pages/mobile_login/mobile_login.dart';