// AsleepManager.swift // // Test.swift // AsleepTest // // Created by han eojin on 2023/12/20. // import UIKit import AsleepSDK import React @objc(Hello) class Hello: NSObject { var promise: (resolve: RCTPromiseResolveBlock?, reject: RCTPromiseRejectBlock?) = (resolve: nil, reject: nil); var config: Asleep.Config? = nil; // var count = 100; @objc func decrement( _ count:Int, resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock ) -> Void { RCTLog.logBox("count : \(count)") if (count == 0) { let error = NSError(domain: "", code: 200, userInfo: nil) reject("E_COUNT", "count cannot be negative", error) } else { resolve("count was decremented") } } @objc func decrement2( _ count:Int, userId: String, resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock ) -> Void { RCTLog.logBox("count : \(count)") RCTLog.logBox("userId : \(userId)") if (count == 0) { let error = NSError(domain: "", code: 200, userInfo: nil) reject("E_COUNT", "count cannot be negative", error) } else { resolve("count was decremented") } } @objc func decrement3( _ count:Int, userId: String?, resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock ) -> Void { RCTLog.logBox("count : \(count)") RCTLog.logBox("userId : \(userId ?? "nil")") if (count == 0) { let error = NSError(domain: "", code: 200, userInfo: nil) reject("E_COUNT", "count cannot be negative", error) } else { resolve("count was decremented") } } @objc func initAsleepConfig2(_ apiKey:String, userId: String, resolve: RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock)->Void { // self.promise.resolve = resolver; // self.promise.reject = rejector; // // Asleep.initAsleepConfig(apiKey: apiKey, userId: userId, delegate: self) } } extension Hello: AsleepConfigDelegate { func userDidJoin(userId: String, config: Asleep.Config) { self.promise.resolve?(userId); self.config = config; } func didFailUserJoin(error: Asleep.AsleepError) { print(error) } func userDidDelete(userId: String) { print("\(userId) is deleted") } }
// AsleepManager.m #import "React/RCTBridgeModule.h" @interface RCT_EXTERN_MODULE(Hello, NSObject) RCT_EXTERN_METHOD( initAsleepConfig2: (NSString *)apiKey userId: (NSString * _Nullable)userId resolve: (RCTPromiseResolveBlock)resolve rejector: (RCTPromiseRejectBlock)reject ) RCT_EXTERN_METHOD( decrement: (NSInteger)count resolve: (RCTPromiseResolveBlock)resolve rejecter: (RCTPromiseRejectBlock)reject ) RCT_EXTERN_METHOD( decrement2: (NSInteger)count userId: (NSString *)userId resolve: (RCTPromiseResolveBlock)resolve rejecter: (RCTPromiseRejectBlock)reject ) RCT_EXTERN_METHOD( decrement3: (NSInteger)count userId: (NSString * _Nullable)userId resolve: (RCTPromiseResolveBlock)resolve rejecter: (RCTPromiseRejectBlock)reject ) + (BOOL) requiresMainQueueSetup { return YES; } @end
// AsleepTest-Bridging-Header.h #import "React/RCTBridgeModule.h" #import "RCTLog.h"
// // RCTLog.h // AsleepTest // // Created by han eojin on 2023/12/21. // #import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface RCTLog : NSObject + (void)error:(NSString * _Nonnull)message file:(NSString * _Nonnull)file line:(NSUInteger)line; + (void)warn:(NSString * _Nonnull)message file:(NSString * _Nonnull)file line:(NSUInteger)line; + (void)info:(NSString * _Nonnull)message file:(NSString * _Nonnull)file line:(NSUInteger)line; + (void)log:(NSString * _Nonnull)message file:(NSString * _Nonnull)file line:(NSUInteger)line; + (void)trace:(NSString * _Nonnull)message file:(NSString * _Nonnull)file line:(NSUInteger)line; + (void)logBox:(NSString *)message; @end NS_ASSUME_NONNULL_END
// // RCTLog.m // AsleepTest // // Created by han eojin on 2023/12/21. // #import "RCTLog.h" #import <React/RCTLog.h> @implementation RCTLog + (void)info:(NSString *)message file:(NSString *)file line:(NSUInteger)line { _RCTLogNativeInternal(RCTLogLevelInfo, file.UTF8String, (int)line, @"%@", message); } + (void)warn:(NSString *)message file:(NSString *)file line:(NSUInteger)line { _RCTLogNativeInternal(RCTLogLevelWarning, file.UTF8String, (int)line, @"%@", message); } + (void)error:(NSString *)message file:(NSString *)file line:(NSUInteger)line { _RCTLogNativeInternal(RCTLogLevelError, file.UTF8String, (int)line, @"%@", message); } + (void)log:(NSString *)message file:(NSString *)file line:(NSUInteger)line { _RCTLogNativeInternal(RCTLogLevelInfo, file.UTF8String, (int)line, @"%@", message); } + (void)trace:(NSString *)message file:(NSString *)file line:(NSUInteger)line { _RCTLogNativeInternal(RCTLogLevelTrace, file.UTF8String, (int)line, @"%@", message); } + (void)logBox:(NSString *)message { RCTLogWarn(@"%@", message); } @end
