//
//  RangersAppLogModule+AutoTrack.m
//  react-native-rangers-applog-reactnative-plugin
//
//  Created by bytedance on 2022/6/24.
//

#import <objc/runtime.h>

#if __has_include(<React/RCTLog.h>)
#import <React/RCTLog.h>
#else
#import "RCTLog.h"
#endif

#import "RangersAppLogEmitter.h"
#import "RangersAppLogNavStack.h"
#import "RangersAppLogPicker.h"
#import "RangersAppLogModule+AutoTrack.h"
#import <RangersAppLog/RangersAppLog.h>


@implementation RangersAppLogModule(AutoTrack)

#pragma overrides

- (id)init {
    self = [super init];
    if (self) {
    }    return self;
}

+ (BOOL)requiresMainQueueSetup {
    return YES;
}

#pragma export functions

RCT_EXPORT_METHOD(updatePageInfo:(nonnull NSNumber *)rootTag pageInfo:(NSDictionary *)pageInfo resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
{
    RCTLogInfo(@"%s", __func__);
    dispatch_async(dispatch_get_main_queue(), ^{
        [[RangersAppLogNavStack shared] updateRNParams:pageInfo withReactTag:rootTag byModule:self];
    });
}

RCT_EXPORT_METHOD(updatePickerInfo:(NSString *)eventID pageInfo:(NSDictionary *)info resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
{
    RCTLogInfo(@"%s", __func__);
    dispatch_async(dispatch_get_main_queue(), ^{
        [RangersAppLogPicker updatePickerInfo:eventID pageInfo:info];
    });
}

RCT_EXPORT_METHOD(onAutotrackEvent:(NSString *)event params:(NSDictionary *)params resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
{
    RCTLogInfo(@"%s", __func__);
    [params setValue:@(1) forKey:@"$is_rn"];
    [[BDAutoTrack sharedTrack] eventV3:event params:params];
}

@end
