Implement iPhone now playing experience

This commit is contained in:
diyaa
2026-06-01 00:24:16 +02:00
parent 3d7252ce6d
commit a147e98b21
7 changed files with 1524 additions and 549 deletions
+34 -12
View File
@@ -9,26 +9,30 @@
/* Begin PBXBuildFile section */
0AF7078E8BD078ECE18B6C0A /* VelodyiPhoneApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2AEECC422FC77F78C45B17D /* VelodyiPhoneApp.swift */; };
151772779307EFC3B3A17477 /* MacLibraryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD72F644E3F2E28758E68D63 /* MacLibraryViewModel.swift */; };
2180184D8B90349397750F62 /* VelodyUtilities in Frameworks */ = {isa = PBXBuildFile; productRef = C199F1B9F55E51FD373EA729 /* VelodyUtilities */; };
2E9DD262BF65832378F37DD4 /* VelodyPlayback in Frameworks */ = {isa = PBXBuildFile; productRef = EA45DE5B08D71D666009BB5E /* VelodyPlayback */; };
2F9E426A66F4887C301AB13C /* FolderAccessService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EC9AED651FE0AB193AAFE94 /* FolderAccessService.swift */; };
3B9765B34963F430467B7527 /* LocalMusicScanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CAD2FE907C9C90FBE01E7D4 /* LocalMusicScanner.swift */; };
3D22DE55C4A27A4DE68E6359 /* VelodySync in Frameworks */ = {isa = PBXBuildFile; productRef = DA5EBADF45BC0977F73F241C /* VelodySync */; };
3D2A2E7D9371C62F8F86DD84 /* VelodyDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 3C910108376E6ECEF152DCE1 /* VelodyDomain */; };
4F8B36EB80C008CDD9B2F6A6 /* VelodyUtilities in Frameworks */ = {isa = PBXBuildFile; productRef = C199F1B9F55E51FD373EA729 /* VelodyUtilities */; };
4F8B36EB80C008CDD9B2F6A6 /* VelodySync in Frameworks */ = {isa = PBXBuildFile; productRef = A571882D6B46CA9F729D13CB /* VelodySync */; };
58E2E18AAC9318AB98F81004 /* VelodyDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 14CD56063C10911F40C9CBA3 /* VelodyDomain */; };
5D2616BFA3DD5E131EC928F2 /* iPhoneLibraryViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE56EE8AD38DC563003A7979 /* iPhoneLibraryViewModel.swift */; };
7174D80FB45839E82F150613 /* VelodyMacApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96A45EA6FB9536D0CD91874C /* VelodyMacApp.swift */; };
783EBF82108F7A04B6DD33B4 /* VelodyPersistence in Frameworks */ = {isa = PBXBuildFile; productRef = 4DD09D7C123E184CEC0A2F4D /* VelodyPersistence */; };
8A3C2C7EB14F364D682A92B7 /* VelodyNetworking in Frameworks */ = {isa = PBXBuildFile; productRef = 713279722B202FB1CF4A869E /* VelodyNetworking */; };
93F386D6A8B0131EAB50E2B9 /* VelodyDomain in Frameworks */ = {isa = PBXBuildFile; productRef = 48BF8F8596E7A86383A9CCD1 /* VelodyDomain */; };
A1FB43063B59B52B1C90A7A7 /* iPhoneLibraryViewModelTestSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2446CD01A27662F88EA0F43 /* iPhoneLibraryViewModelTestSupport.swift */; };
A2DDB28F9916D0DFB1ADD4FF /* VelodyNetworking in Frameworks */ = {isa = PBXBuildFile; productRef = A5B134A54FAD5F2EB5ECBE57 /* VelodyNetworking */; };
A54D8AD8A59D8B77FCA0794F /* MacLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB28FE17346E100F697C1BF4 /* MacLibraryView.swift */; };
AB6C7E42A3A850D395E4F5E7 /* VelodySync in Frameworks */ = {isa = PBXBuildFile; productRef = 2449C403E81DD84D7A8DD7E1 /* VelodySync */; };
AC8B414ECE5493BD52DEC44A /* VelodyPersistence in Frameworks */ = {isa = PBXBuildFile; productRef = B99672FF5519DDF310A5EBD1 /* VelodyPersistence */; };
D0D65CE73B9DFF3C73F432DB /* VelodyUtilities in Frameworks */ = {isa = PBXBuildFile; productRef = B15F842ACBB110CC8A766669 /* VelodyUtilities */; };
D4B554447B262C7B946ED21F /* VelodyPersistence in Frameworks */ = {isa = PBXBuildFile; productRef = C8F5FF593C4DB829D1CDD497 /* VelodyPersistence */; };
A62771F49BF9AA1ABCF7961E /* VelodyUtilities in Frameworks */ = {isa = PBXBuildFile; productRef = B15F842ACBB110CC8A766669 /* VelodyUtilities */; };
AB6C7E42A3A850D395E4F5E7 /* VelodyPersistence in Frameworks */ = {isa = PBXBuildFile; productRef = C8F5FF593C4DB829D1CDD497 /* VelodyPersistence */; };
AC8B414ECE5493BD52DEC44A /* VelodyPlayback in Frameworks */ = {isa = PBXBuildFile; productRef = A9678775BC86EBB3155ECBDE /* VelodyPlayback */; };
CDF41A3983C5430598E4E84D /* iPhoneLibraryViewModelPlaybackTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DD22E56A863E58C2652306B /* iPhoneLibraryViewModelPlaybackTests.swift */; };
D0D65CE73B9DFF3C73F432DB /* VelodySync in Frameworks */ = {isa = PBXBuildFile; productRef = 2449C403E81DD84D7A8DD7E1 /* VelodySync */; };
D4B554447B262C7B946ED21F /* VelodyPlayback in Frameworks */ = {isa = PBXBuildFile; productRef = BE8A38167B5A10BAECF48787 /* VelodyPlayback */; };
DCB814642BA3F081D4B5A3BE /* iPhoneLibraryViewModelFavoritesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DE70FE94372F028D76DC335 /* iPhoneLibraryViewModelFavoritesTests.swift */; };
E4627FCDF7EB169D83EA50DB /* VelodySync in Frameworks */ = {isa = PBXBuildFile; productRef = A571882D6B46CA9F729D13CB /* VelodySync */; };
E4627FCDF7EB169D83EA50DB /* VelodyPersistence in Frameworks */ = {isa = PBXBuildFile; productRef = B99672FF5519DDF310A5EBD1 /* VelodyPersistence */; };
EE48EF0688C7E33CDA783234 /* VelodyNetworking in Frameworks */ = {isa = PBXBuildFile; productRef = 0682A261A6F2F050F4B83AF6 /* VelodyNetworking */; };
FB68EF710F2B6FBAF80F63F0 /* VelodyUtilities in Frameworks */ = {isa = PBXBuildFile; productRef = AAD3F903A475AA0B0159C79E /* VelodyUtilities */; };
FB76843BB27CCCD2B0CFF11D /* iPhoneLibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD8848AEA828FE5B2607EB46 /* iPhoneLibraryView.swift */; };
@@ -54,11 +58,13 @@
6DE70FE94372F028D76DC335 /* iPhoneLibraryViewModelFavoritesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iPhoneLibraryViewModelFavoritesTests.swift; sourceTree = "<group>"; };
6E7BCB85A35B8286E4472822 /* VelodyPersistence */ = {isa = PBXFileReference; lastKnownFileType = folder; name = VelodyPersistence; path = ../../packages/apple/VelodyPersistence; sourceTree = SOURCE_ROOT; };
7A1BDB40E1A38A685237BCF3 /* VelodyMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VelodyMac.app; sourceTree = BUILT_PRODUCTS_DIR; };
7DD22E56A863E58C2652306B /* iPhoneLibraryViewModelPlaybackTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iPhoneLibraryViewModelPlaybackTests.swift; sourceTree = "<group>"; };
89FE56E825FC42D026EAC784 /* VelodyUtilities */ = {isa = PBXFileReference; lastKnownFileType = folder; name = VelodyUtilities; path = ../../packages/apple/VelodyUtilities; sourceTree = SOURCE_ROOT; };
96A45EA6FB9536D0CD91874C /* VelodyMacApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VelodyMacApp.swift; sourceTree = "<group>"; };
AD72F644E3F2E28758E68D63 /* MacLibraryViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MacLibraryViewModel.swift; sourceTree = "<group>"; };
AE56EE8AD38DC563003A7979 /* iPhoneLibraryViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iPhoneLibraryViewModel.swift; sourceTree = "<group>"; };
BF223F7E40D4B594935F5BC2 /* VelodyiPhone.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = VelodyiPhone.app; sourceTree = BUILT_PRODUCTS_DIR; };
D2446CD01A27662F88EA0F43 /* iPhoneLibraryViewModelTestSupport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iPhoneLibraryViewModelTestSupport.swift; sourceTree = "<group>"; };
DB28FE17346E100F697C1BF4 /* MacLibraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MacLibraryView.swift; sourceTree = "<group>"; };
DD8848AEA828FE5B2607EB46 /* iPhoneLibraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iPhoneLibraryView.swift; sourceTree = "<group>"; };
F2AEECC422FC77F78C45B17D /* VelodyiPhoneApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VelodyiPhoneApp.swift; sourceTree = "<group>"; };
@@ -85,9 +91,10 @@
files = (
93F386D6A8B0131EAB50E2B9 /* VelodyDomain in Frameworks */,
8A3C2C7EB14F364D682A92B7 /* VelodyNetworking in Frameworks */,
D4B554447B262C7B946ED21F /* VelodyPersistence in Frameworks */,
AB6C7E42A3A850D395E4F5E7 /* VelodySync in Frameworks */,
D0D65CE73B9DFF3C73F432DB /* VelodyUtilities in Frameworks */,
D4B554447B262C7B946ED21F /* VelodyPlayback in Frameworks */,
AB6C7E42A3A850D395E4F5E7 /* VelodyPersistence in Frameworks */,
D0D65CE73B9DFF3C73F432DB /* VelodySync in Frameworks */,
A62771F49BF9AA1ABCF7961E /* VelodyUtilities in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -97,9 +104,10 @@
files = (
58E2E18AAC9318AB98F81004 /* VelodyDomain in Frameworks */,
A2DDB28F9916D0DFB1ADD4FF /* VelodyNetworking in Frameworks */,
AC8B414ECE5493BD52DEC44A /* VelodyPersistence in Frameworks */,
E4627FCDF7EB169D83EA50DB /* VelodySync in Frameworks */,
4F8B36EB80C008CDD9B2F6A6 /* VelodyUtilities in Frameworks */,
AC8B414ECE5493BD52DEC44A /* VelodyPlayback in Frameworks */,
E4627FCDF7EB169D83EA50DB /* VelodyPersistence in Frameworks */,
4F8B36EB80C008CDD9B2F6A6 /* VelodySync in Frameworks */,
2180184D8B90349397750F62 /* VelodyUtilities in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -110,6 +118,8 @@
isa = PBXGroup;
children = (
6DE70FE94372F028D76DC335 /* iPhoneLibraryViewModelFavoritesTests.swift */,
7DD22E56A863E58C2652306B /* iPhoneLibraryViewModelPlaybackTests.swift */,
D2446CD01A27662F88EA0F43 /* iPhoneLibraryViewModelTestSupport.swift */,
);
name = Tests;
path = VelodyiPhone/Tests;
@@ -216,6 +226,7 @@
packageProductDependencies = (
14CD56063C10911F40C9CBA3 /* VelodyDomain */,
A5B134A54FAD5F2EB5ECBE57 /* VelodyNetworking */,
A9678775BC86EBB3155ECBDE /* VelodyPlayback */,
B99672FF5519DDF310A5EBD1 /* VelodyPersistence */,
A571882D6B46CA9F729D13CB /* VelodySync */,
C199F1B9F55E51FD373EA729 /* VelodyUtilities */,
@@ -239,6 +250,7 @@
packageProductDependencies = (
48BF8F8596E7A86383A9CCD1 /* VelodyDomain */,
713279722B202FB1CF4A869E /* VelodyNetworking */,
BE8A38167B5A10BAECF48787 /* VelodyPlayback */,
C8F5FF593C4DB829D1CDD497 /* VelodyPersistence */,
2449C403E81DD84D7A8DD7E1 /* VelodySync */,
B15F842ACBB110CC8A766669 /* VelodyUtilities */,
@@ -301,6 +313,8 @@
buildActionMask = 2147483647;
files = (
DCB814642BA3F081D4B5A3BE /* iPhoneLibraryViewModelFavoritesTests.swift in Sources */,
CDF41A3983C5430598E4E84D /* iPhoneLibraryViewModelPlaybackTests.swift in Sources */,
A1FB43063B59B52B1C90A7A7 /* iPhoneLibraryViewModelTestSupport.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -651,6 +665,10 @@
isa = XCSwiftPackageProductDependency;
productName = VelodyNetworking;
};
A9678775BC86EBB3155ECBDE /* VelodyPlayback */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodyPlayback;
};
AAD3F903A475AA0B0159C79E /* VelodyUtilities */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodyUtilities;
@@ -663,6 +681,10 @@
isa = XCSwiftPackageProductDependency;
productName = VelodyPersistence;
};
BE8A38167B5A10BAECF48787 /* VelodyPlayback */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodyPlayback;
};
C199F1B9F55E51FD373EA729 /* VelodyUtilities */ = {
isa = XCSwiftPackageProductDependency;
productName = VelodyUtilities;