Skip to content

Commit 9f72349

Browse files
committed
refactor: merge logic into single file
1 parent d7669c6 commit 9f72349

File tree

7 files changed

+278
-281
lines changed

7 files changed

+278
-281
lines changed

example/ios/MusicLibraryExample.xcodeproj/project.pbxproj

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,10 @@
384384
"-DFOLLY_CFG_NO_COROUTINES=1",
385385
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
386386
);
387-
OTHER_LDFLAGS = "$(inherited) ";
387+
OTHER_LDFLAGS = (
388+
"$(inherited)",
389+
" ",
390+
);
388391
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
389392
SDKROOT = iphoneos;
390393
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
@@ -454,7 +457,10 @@
454457
"-DFOLLY_CFG_NO_COROUTINES=1",
455458
"-DFOLLY_HAVE_CLOCK_GETTIME=1",
456459
);
457-
OTHER_LDFLAGS = "$(inherited) ";
460+
OTHER_LDFLAGS = (
461+
"$(inherited)",
462+
" ",
463+
);
458464
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
459465
SDKROOT = iphoneos;
460466
SWIFT_COMPILATION_MODE = wholemodule;

example/src/pages/TrackListScreen.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ export default function TrackListScreen({ navigation }: Props) {
117117
/>
118118

119119
<Button
120-
title={`${loading ? 'loading...' : ''} get tracks from directory`}
120+
title={`${loading ? 'loading...' : ''} get tracks from directory (Android only)`}
121121
onPress={getTracksFromPickedDirectory}
122122
disabled={loading}
123123
/>

ios/MusicLibrary.mm

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,99 +15,96 @@ - (instancetype) init {
1515
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
1616
(const facebook::react::ObjCTurboModule::InitParams &)params
1717
{
18-
return std::make_shared<facebook::react::NativeMusicLibrarySpecJSI>(params);
18+
return std::make_shared<facebook::react::NativeMusicLibrarySpecJSI>(params);
1919
}
2020

2121
- (void)getTracksAsync:(JS::NativeMusicLibrary::InternalTrackOptions &)options resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
22-
NSLog(@"🎵 [MusicLibrary.mm] getTracksAsync called from Objective-C");
23-
24-
// Extract values from Objective-C types with proper casting
22+
// Extract values and create TrackOptions object
2523
int first = (int)options.first();
2624
NSString *after = options.after();
2725
NSString *directory = options.directory();
2826
NSArray *sortBy = (NSArray *)options.sortBy();
29-
30-
// Call Swift function directly
31-
NSDictionary *result = [musicLibrary getTracksAsyncWithFirst:first after:after sortBy:sortBy directory:directory];
32-
33-
NSLog(@"🎵 [MusicLibrary.mm] getTracksAsync resolved with result: %@", result);
34-
resolve(result);
27+
28+
TrackOptions *trackOptions = [[TrackOptions alloc] initAfter:after first:first sortBy:sortBy directory:directory];
29+
30+
// Call Swift function with options object
31+
[musicLibrary getTracksAsyncWithOptions:trackOptions resolve:resolve reject:reject];
3532
}
3633

37-
- (void)getTrackMetadataAsync:(nonnull NSString *)trackId resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
34+
- (void)getTrackMetadataAsync:(nonnull NSString *)trackId resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
3835
NSLog(@"🎵 [MusicLibrary.mm] getTrackMetadataAsync called with trackId: %@", trackId);
39-
36+
4037
NSDictionary *result = [musicLibrary getTrackMetadataAsync:trackId];
41-
38+
4239
NSLog(@"🎵 [MusicLibrary.mm] getTrackMetadataAsync resolved with result: %@", result);
4340
resolve(result);
4441
}
4542

46-
- (void)getTracksByAlbumAsync:(nonnull NSString *)albumId resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
43+
- (void)getTracksByAlbumAsync:(nonnull NSString *)albumId resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
4744
NSLog(@"🎵 [MusicLibrary.mm] getTracksByAlbumAsync called with albumId: %@", albumId);
48-
45+
4946
NSArray *result = [musicLibrary getTracksByAlbumAsync:albumId];
50-
47+
5148
NSLog(@"🎵 [MusicLibrary.mm] getTracksByAlbumAsync resolved with result: %@", result);
5249
resolve(result);
5350
}
5451

55-
- (void)getTracksByArtistAsync:(nonnull NSString *)artistId options:(JS::NativeMusicLibrary::InternalTrackOptions &)options resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
52+
- (void)getTracksByArtistAsync:(nonnull NSString *)artistId options:(JS::NativeMusicLibrary::InternalTrackOptions &)options resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
5653
NSLog(@"🎵 [MusicLibrary.mm] getTracksByArtistAsync called with artistId: %@", artistId);
57-
54+
5855
// Extract values from Objective-C types with proper casting
5956
int first = (int)options.first();
6057
NSString *after = options.after();
6158
NSString *directory = options.directory();
6259
NSArray *sortBy = (NSArray *)options.sortBy();
63-
60+
6461
// Call Swift function directly
6562
NSDictionary *result = [musicLibrary getTracksByArtistAsync:artistId first:first after:after sortBy:sortBy directory:directory];
66-
63+
6764
NSLog(@"🎵 [MusicLibrary.mm] getTracksByArtistAsync resolved with result: %@", result);
6865
resolve(result);
6966
}
7067

71-
- (void)getAlbumsAsync:(JS::NativeMusicLibrary::InternalAlbumOptions &)options resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
68+
- (void)getAlbumsAsync:(JS::NativeMusicLibrary::InternalAlbumOptions &)options resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
7269
NSLog(@"🎵 [MusicLibrary.mm] getAlbumsAsync called from Objective-C");
73-
70+
7471
// Extract values from Objective-C types with proper casting
7572
int first = (int)options.first();
7673
NSString *after = options.after();
7774
NSArray *sortBy = (NSArray *)options.sortBy();
78-
75+
7976
// Call Swift function directly
8077
NSDictionary *result = [musicLibrary getAlbumsAsyncWithFirst:first after:after sortBy:sortBy];
81-
78+
8279
NSLog(@"🎵 [MusicLibrary.mm] getAlbumsAsync resolved with result: %@", result);
8380
resolve(result);
8481
}
8582

86-
- (void)getAlbumsByArtistAsync:(nonnull NSString *)artistId resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
83+
- (void)getAlbumsByArtistAsync:(nonnull NSString *)artistId resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
8784
NSLog(@"🎵 [MusicLibrary.mm] getAlbumsByArtistAsync called with artistId: %@", artistId);
88-
85+
8986
NSArray *result = [musicLibrary getAlbumsByArtistAsync:artistId];
90-
87+
9188
NSLog(@"🎵 [MusicLibrary.mm] getAlbumsByArtistAsync resolved with result: %@", result);
9289
resolve(result);
9390
}
9491

95-
- (void)getArtistsAsync:(JS::NativeMusicLibrary::InternalArtistOptions &)options resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
92+
- (void)getArtistsAsync:(JS::NativeMusicLibrary::InternalArtistOptions &)options resolve:(nonnull RCTPromiseResolveBlock)resolve reject:(nonnull RCTPromiseRejectBlock)reject {
9693
NSLog(@"🎵 [MusicLibrary.mm] getArtistsAsync called from Objective-C");
97-
94+
9895
// Extract values from Objective-C types with proper casting
9996
int first = (int)options.first();
10097
NSString *after = options.after();
10198
NSArray *sortBy = (NSArray *)options.sortBy();
102-
99+
103100
// Call Swift function directly
104101
NSDictionary *result = [musicLibrary getArtistsAsyncWithFirst:first after:after sortBy:sortBy];
105-
102+
106103
NSLog(@"🎵 [MusicLibrary.mm] getArtistsAsync resolved with result: %@", result);
107104
resolve(result);
108105
}
109106

110-
+ (NSString *)moduleName {
107+
+ (NSString *)moduleName {
111108
return @"MusicLibraryImpl";
112109
}
113110

ios/MusicLibraryImpl.swift

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -5,90 +5,89 @@
55
//
66

77
import Foundation
8+
import React
9+
10+
@objc(MusicLibraryImpl)
11+
public class MusicLibraryImpl: NSObject {
12+
13+
@objc
14+
public func getTracksAsync(options: TrackOptions, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
15+
NSLog("🎵 [MusicLibrary] getTracksAsync called with options: %@", options)
816

9-
@objc public class MusicLibraryImpl: NSObject {
10-
11-
@objc public func getTracksAsync(first: Int, after: String?, sortBy: [String], directory: String?) -> [String: Any] {
12-
NSLog("🎵 [MusicLibrary] getTracksAsync called with first: %d, after: %@, sortBy: %@, directory: %@", first, after ?? "nil", sortBy, directory ?? "nil")
13-
1417
do {
15-
let trackOptions = TrackOptions(after: after, first: first, sortBy: sortBy, directory: directory)
16-
NSLog("🎵 [MusicLibrary] getTracksAsync trackOptions: %@", trackOptions)
17-
let result = GetTracksQuery.getTracks(options: trackOptions)
18+
let getTracks = GetTracks(options: options)
19+
let result = getTracks.execute()
1820
let resultDict = result.toDictionary()
19-
21+
2022
NSLog("🎵 [MusicLibrary] getTracksAsync returning: %@", resultDict)
21-
return resultDict
23+
resolve(resultDict)
2224
} catch {
2325
NSLog("🎵 [MusicLibrary] getTracksAsync error: %@", error.localizedDescription)
24-
return DataConverter.createErrorDictionary(
25-
code: "QUERY_ERROR",
26-
message: "Failed to query tracks: \(error.localizedDescription)"
27-
)
26+
reject("QUERY_ERROR", "Failed to query tracks: \(error.localizedDescription)", error)
2827
}
2928
}
30-
29+
3130
@objc public func getTrackMetadataAsync(_ trackId: String) -> [String: Any] {
3231
NSLog("🎵 [MusicLibrary] getTrackMetadataAsync called with trackId: %@", trackId)
33-
32+
3433
if let metadata = GetTrackMetadataQuery.getTrackMetadata(trackId: trackId) {
3534
let resultDict = metadata.toDictionary()
3635
NSLog("🎵 [MusicLibrary] getTrackMetadataAsync returning: %@", resultDict)
3736
return resultDict
3837
} else {
3938
NSLog("🎵 [MusicLibrary] getTrackMetadataAsync: track not found")
4039
return DataConverter.createErrorDictionary(
41-
code: "TRACK_NOT_FOUND",
40+
code: "TRACK_NOT_FOUND",
4241
message: "Track with id \(trackId) not found"
4342
)
4443
}
4544
}
4645

4746
@objc public func getTracksByAlbumAsync(_ albumId: String) -> [[String: Any]] {
4847
NSLog("🎵 [MusicLibrary] getTracksByAlbumAsync called with albumId: %@", albumId)
49-
48+
5049
let tracks = GetTracksByAlbumQuery.getTracksByAlbum(albumId: albumId)
5150
let result = tracks.map { $0.toDictionary() }
52-
51+
5352
NSLog("🎵 [MusicLibrary] getTracksByAlbumAsync returning: %@", result)
5453
return result
5554
}
56-
55+
5756
@objc public func getTracksByArtistAsync(_ artistId: String, first: Int, after: String?, sortBy: [String], directory: String?) -> [String: Any] {
5857
NSLog("🎵 [MusicLibrary] getTracksByArtistAsync called with artistId: %@, first: %d, after: %@, sortBy: %@, directory: %@", artistId, first, after ?? "nil", sortBy, directory ?? "nil")
59-
58+
6059
let result = PaginatedResult<Track>(items: [], hasNextPage: false)
6160
let resultDict = result.toDictionary()
62-
61+
6362
NSLog("🎵 [MusicLibrary] getTracksByArtistAsync returning: %@", resultDict)
6463
return resultDict
6564
}
66-
65+
6766
@objc public func getAlbumsAsync(first: Int, after: String?, sortBy: [String]) -> [String: Any] {
6867
NSLog("🎵 [MusicLibrary] getAlbumsAsync called with first: %d, after: %@, sortBy: %@", first, after ?? "nil", sortBy)
69-
68+
7069
let result = PaginatedResult<Album>(items: [], hasNextPage: false)
7170
let resultDict = result.toDictionary()
72-
71+
7372
NSLog("🎵 [MusicLibrary] getAlbumsAsync returning: %@", resultDict)
7473
return resultDict
7574
}
76-
75+
7776
@objc public func getAlbumsByArtistAsync(_ artistId: String) -> [[String: Any]] {
7877
NSLog("🎵 [MusicLibrary] getAlbumsByArtistAsync called with artistId: %@", artistId)
79-
78+
8079
let result: [[String: Any]] = []
81-
80+
8281
NSLog("🎵 [MusicLibrary] getAlbumsByArtistAsync returning: %@", result)
8382
return result
8483
}
85-
84+
8685
@objc public func getArtistsAsync(first: Int, after: String?, sortBy: [String]) -> [String: Any] {
8786
NSLog("🎵 [MusicLibrary] getArtistsAsync called with first: %d, after: %@, sortBy: %@", first, after ?? "nil", sortBy)
88-
87+
8988
let result = PaginatedResult<Artist>(items: [], hasNextPage: false)
9089
let resultDict = result.toDictionary()
91-
90+
9291
NSLog("🎵 [MusicLibrary] getArtistsAsync returning: %@", resultDict)
9392
return resultDict
9493
}

ios/models/AssetsOptions.swift

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,26 @@ import Foundation
88

99
// MARK: - Options Models
1010

11+
@objc(TrackOptions)
1112
public class TrackOptions: NSObject {
1213
public let after: String?
1314
public let first: Int
1415
public let sortBy: [String]
1516
public let directory: String?
16-
17+
18+
@objc
1719
public init(after: String? = nil, first: Int = 20, sortBy: [String] = [], directory: String? = nil) {
1820
self.after = after
1921
self.first = first
2022
self.sortBy = sortBy
2123
self.directory = directory
2224
super.init()
2325
}
24-
26+
2527
public override var description: String {
2628
return "TrackOptions(after: \(after ?? "nil"), first: \(first), sortBy: \(sortBy), directory: \(directory ?? "nil"))"
2729
}
28-
30+
2931
public func toDictionary() -> [String: Any] {
3032
return [
3133
"after": after ?? NSNull(),
@@ -40,18 +42,18 @@ public class AlbumOptions: NSObject {
4042
public let after: String?
4143
public let first: Int
4244
public let sortBy: [String]
43-
45+
4446
public init(after: String? = nil, first: Int = 20, sortBy: [String] = []) {
4547
self.after = after
4648
self.first = first
4749
self.sortBy = sortBy
4850
super.init()
4951
}
50-
52+
5153
public override var description: String {
5254
return "AlbumOptions(after: \(after ?? "nil"), first: \(first), sortBy: \(sortBy))"
5355
}
54-
56+
5557
public func toDictionary() -> [String: Any] {
5658
return [
5759
"after": after ?? NSNull(),
@@ -65,18 +67,18 @@ public class ArtistOptions: NSObject {
6567
public let after: String?
6668
public let first: Int
6769
public let sortBy: [String]
68-
70+
6971
public init(after: String? = nil, first: Int = 20, sortBy: [String] = []) {
7072
self.after = after
7173
self.first = first
7274
self.sortBy = sortBy
7375
super.init()
7476
}
75-
77+
7678
public override var description: String {
7779
return "ArtistOptions(after: \(after ?? "nil"), first: \(first), sortBy: \(sortBy))"
7880
}
79-
81+
8082
public func toDictionary() -> [String: Any] {
8183
return [
8284
"after": after ?? NSNull(),

0 commit comments

Comments
 (0)