diff --git a/packages/react-native/android/src/main/kotlin/com/amazonaws/amplify/rtncore/AmplifyRTNCoreModule.kt b/packages/react-native/android/src/main/kotlin/com/amazonaws/amplify/rtncore/AmplifyRTNCoreModule.kt index 3e0f201e8b0..b28fd968048 100644 --- a/packages/react-native/android/src/main/kotlin/com/amazonaws/amplify/rtncore/AmplifyRTNCoreModule.kt +++ b/packages/react-native/android/src/main/kotlin/com/amazonaws/amplify/rtncore/AmplifyRTNCoreModule.kt @@ -1,29 +1,43 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + package com.amazonaws.amplify.rtncore +import android.os.Build +import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactMethod -import com.facebook.react.bridge.Promise import com.facebook.react.bridge.ReadableMap class AmplifyRTNCoreModule(reactContext: ReactApplicationContext) : - ReactContextBaseJavaModule(reactContext) { - - override fun getName(): String { - return NAME - } + ReactContextBaseJavaModule(reactContext) { + override fun getName(): String { + return NAME + } @ReactMethod - fun computeModPow(payload: ReadableMap, promise: Promise) { + fun computeModPow( + payload: ReadableMap, + promise: Promise, + ) { BigInteger.computeModPow(payload, promise) } @ReactMethod - fun computeS(payload: ReadableMap, promise: Promise) { + fun computeS( + payload: ReadableMap, + promise: Promise, + ) { BigInteger.computeS(payload, promise) } - companion object { - const val NAME = "AmplifyRTNCore" - } + @ReactMethod + fun getDeviceName(promise: Promise) { + promise.resolve(Build.MODEL) + } + + companion object { + const val NAME = "AmplifyRTNCore" + } } diff --git a/packages/react-native/ios/AmplifyRTNCore.mm b/packages/react-native/ios/AmplifyRTNCore.mm index 6c3237d74ed..b7318222196 100644 --- a/packages/react-native/ios/AmplifyRTNCore.mm +++ b/packages/react-native/ios/AmplifyRTNCore.mm @@ -13,6 +13,9 @@ @interface RCT_EXTERN_MODULE(AmplifyRTNCore, NSObject) withResolver:(RCTPromiseResolveBlock)resolve withRejecter:(RCTPromiseRejectBlock)reject) +RCT_EXTERN_METHOD(getDeviceName:(RCTPromiseResolveBlock)resolve + withResolver:(RCTPromiseRejectBlock)reject) + + (BOOL)requiresMainQueueSetup { return NO; diff --git a/packages/react-native/ios/AmplifyRTNCore.swift b/packages/react-native/ios/AmplifyRTNCore.swift index 7cc7843fafe..db1ae2bc716 100644 --- a/packages/react-native/ios/AmplifyRTNCore.swift +++ b/packages/react-native/ios/AmplifyRTNCore.swift @@ -1,29 +1,45 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 +#if canImport(UIKit) + import UIKit +#else + import Foundation +#endif + @objc(AmplifyRTNCore) class AmplifyRTNCore: NSObject { - - @objc(multiply:withB:withResolver:withRejecter:) - func multiply(a: Float, b: Float, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void { - resolve(a*b) - } - - @objc(computeModPow:withResolver:withRejecter:) - func computeModPow( - payload: [String: String], - resolve: RCTPromiseResolveBlock, - reject: RCTPromiseRejectBlock - ) -> Void { - BigInteger.computeModPow(payload, resolve: resolve, reject: reject) - } - - @objc(computeS:withResolver:withRejecter:) - func computeS( - _ payload: [String: String], - resolve: RCTPromiseResolveBlock, - reject: RCTPromiseRejectBlock - ) -> Void { - BigInteger.computeS(payload, resolve: resolve, reject: reject) - } + @objc(multiply:withB:withResolver:withRejecter:) + func multiply(a: Float, b: Float, resolve: RCTPromiseResolveBlock, reject _: RCTPromiseRejectBlock) { + resolve(a * b) + } + + @objc(computeModPow:withResolver:withRejecter:) + func computeModPow( + payload: [String: String], + resolve: RCTPromiseResolveBlock, + reject: RCTPromiseRejectBlock + ) { + BigInteger.computeModPow(payload, resolve: resolve, reject: reject) + } + + @objc(computeS:withResolver:withRejecter:) + func computeS( + _ payload: [String: String], + resolve: RCTPromiseResolveBlock, + reject: RCTPromiseRejectBlock + ) { + BigInteger.computeS(payload, resolve: resolve, reject: reject) + } + + @objc(getDeviceName:withResolver:) + func getDeviceName(resolve: @escaping RCTPromiseResolveBlock, reject _: @escaping RCTPromiseRejectBlock) { + var deviceName: String + #if canImport(UIKit) + deviceName = UIDevice.current.name + #else + deviceName = ProcessInfo.processInfo.hostName + #endif + resolve(deviceName) + } } diff --git a/packages/react-native/src/apis/getDeviceName.ts b/packages/react-native/src/apis/getDeviceName.ts new file mode 100644 index 00000000000..246d6a0bc62 --- /dev/null +++ b/packages/react-native/src/apis/getDeviceName.ts @@ -0,0 +1,8 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { nativeModule } from '../nativeModule'; +import { RTNCore } from '../types'; + +export const getDeviceName: RTNCore['getDeviceName'] = () => + nativeModule.getDeviceName(); diff --git a/packages/react-native/src/apis/index.ts b/packages/react-native/src/apis/index.ts index 63b1caa9bc7..ed2bc4f9678 100644 --- a/packages/react-native/src/apis/index.ts +++ b/packages/react-native/src/apis/index.ts @@ -4,3 +4,4 @@ export { computeModPow } from './computeModPow'; export { computeS } from './computeS'; export { getOperatingSystem } from './getOperatingSystem'; +export { getDeviceName } from './getDeviceName'; diff --git a/packages/react-native/src/index.ts b/packages/react-native/src/index.ts index 8141aa8855b..357e43e0f2b 100644 --- a/packages/react-native/src/index.ts +++ b/packages/react-native/src/index.ts @@ -1,7 +1,12 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -export { computeModPow, computeS, getOperatingSystem } from './apis'; +export { + computeModPow, + computeS, + getOperatingSystem, + getDeviceName, +} from './apis'; export { loadAmplifyPushNotification, loadAmplifyWebBrowser, diff --git a/packages/react-native/src/types.ts b/packages/react-native/src/types.ts index 2d61d088b32..07b868bc9c3 100644 --- a/packages/react-native/src/types.ts +++ b/packages/react-native/src/types.ts @@ -16,4 +16,6 @@ export interface RTNCore { b: string; u: string; }): Promise; + + getDeviceName(): Promise; }