#import "RemoteTrackRegistry.h"

@interface RemoteTrackRegistry ()
@property(nonatomic, strong) NSMutableDictionary<NSString *, RTCVideoTrack *> *trackMap;
@end

@implementation RemoteTrackRegistry

+ (instancetype)shared {
    static RemoteTrackRegistry *sharedInstance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedInstance = [[RemoteTrackRegistry alloc] init];
        sharedInstance.trackMap = [NSMutableDictionary dictionary];
    });
    return sharedInstance;
}

- (void)addRemoteTrack:(RTCVideoTrack *)track {
    if (track && track.trackId) {
        self.trackMap[track.trackId] = track;
    }
}

- (RTCVideoTrack *)remoteTrackForId:(NSString *)trackId {
    RTCVideoTrack *track = self.trackMap[trackId];
    if (track) {
        NSLog(@"Found track with ID: %@", trackId);
    } else {
        NSLog(@"No track found for ID: %@", trackId);
    }
    return track;
}

- (void)removeRemoteTrackForId:(NSString *)trackId {
    if ([self.trackMap objectForKey:trackId]) {
        [self.trackMap removeObjectForKey:trackId];
    }
}

@end
