react-native-timezone 2.3.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +44 -25
  3. package/android/build.gradle +64 -80
  4. package/android/generated/java/com/samitha/timezone/NativeTimezoneSpec.java +50 -0
  5. package/android/generated/jni/CMakeLists.txt +36 -0
  6. package/android/generated/jni/RNTimezoneSpec-generated.cpp +50 -0
  7. package/android/generated/jni/RNTimezoneSpec.h +31 -0
  8. package/android/generated/jni/react/renderer/components/RNTimezoneSpec/RNTimezoneSpecJSI-generated.cpp +48 -0
  9. package/android/generated/jni/react/renderer/components/RNTimezoneSpec/RNTimezoneSpecJSI.h +94 -0
  10. package/android/src/main/AndroidManifest.xml +1 -2
  11. package/android/src/main/AndroidManifestNew.xml +2 -0
  12. package/android/src/main/java/com/samitha/timezone/TimezoneModule.kt +86 -0
  13. package/android/src/main/java/com/samitha/timezone/TimezonePackage.kt +34 -0
  14. package/ios/Timezone.h +1 -7
  15. package/ios/Timezone.mm +42 -18
  16. package/ios/generated/RNTimezoneSpec/RNTimezoneSpec-generated.mm +60 -0
  17. package/ios/generated/RNTimezoneSpec/RNTimezoneSpec.h +62 -0
  18. package/ios/generated/RNTimezoneSpecJSI-generated.cpp +48 -0
  19. package/ios/generated/RNTimezoneSpecJSI.h +94 -0
  20. package/lib/commonjs/NativeTimezone.js +9 -0
  21. package/lib/commonjs/NativeTimezone.js.map +1 -0
  22. package/lib/commonjs/index.js +12 -10
  23. package/lib/commonjs/index.js.map +1 -1
  24. package/lib/module/NativeTimezone.js +5 -0
  25. package/lib/module/NativeTimezone.js.map +1 -0
  26. package/lib/module/index.js +14 -10
  27. package/lib/module/index.js.map +1 -1
  28. package/lib/typescript/commonjs/package.json +1 -0
  29. package/lib/typescript/commonjs/src/NativeTimezone.d.ts +10 -0
  30. package/lib/typescript/commonjs/src/NativeTimezone.d.ts.map +1 -0
  31. package/lib/typescript/commonjs/src/index.d.ts +8 -0
  32. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  33. package/lib/typescript/module/package.json +1 -0
  34. package/lib/typescript/module/src/NativeTimezone.d.ts +10 -0
  35. package/lib/typescript/module/src/NativeTimezone.d.ts.map +1 -0
  36. package/lib/typescript/module/src/index.d.ts +8 -0
  37. package/lib/typescript/module/src/index.d.ts.map +1 -0
  38. package/package.json +87 -48
  39. package/react-native-timezone.podspec +23 -16
  40. package/react-native.config.js +12 -0
  41. package/src/NativeTimezone.ts +11 -0
  42. package/src/index.tsx +15 -0
  43. package/android/src/main/java/com/samitha/rn/timezone/TimezoneModule.java +0 -41
  44. package/android/src/main/java/com/samitha/rn/timezone/TimezonePackage.java +0 -28
  45. package/ios/Timezone.xcodeproj/project.pbxproj +0 -274
  46. package/ios/Timezone.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -4
  47. package/ios/Timezone.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  48. package/ios/Timezone.xcodeproj/project.xcworkspace/xcuserdata/samitha.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  49. package/ios/Timezone.xcodeproj/xcuserdata/samitha.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
  50. package/lib/commonjs/index.d.js +0 -6
  51. package/lib/commonjs/index.d.js.map +0 -1
  52. package/lib/module/index.d.js +0 -2
  53. package/lib/module/index.d.js.map +0 -1
  54. package/lib/typescript/index.test.d.ts +0 -1
  55. package/lib/typescript/index.test.d.ts.map +0 -1
  56. package/src/index.d.ts +0 -5
  57. package/src/index.js +0 -20
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2022 Samitha Nanayakkara
3
+ Copyright (c) 2024 Samitha Nanayakkara
4
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  of this software and associated documentation files (the "Software"), to deal
6
6
  in the Software without restriction, including without limitation the rights
package/README.md CHANGED
@@ -1,39 +1,58 @@
1
- # React Native Timezone
1
+ # React Native Timezone and Region
2
+
2
3
  [![Maintainability](https://api.codeclimate.com/v1/badges/3713253a365fe6a55615/maintainability)](https://codeclimate.com/github/samitha9125/react-native-timezone/maintainability)
3
4
 
4
- A Simple react native module to get Timezone of the Android/iOS device.
5
+ A Simple react native module to get the Timezone and the Region of the Android/iOS devices.
5
6
 
6
7
  # Motivation
7
- For a project of mine, I had to acquire the current selected timezone of the user. But unfortunately I could not find any react native package or react native in-build function which facilitates this. Thus I created a small library.
8
+
9
+ For a project of mine, I had to acquire the currently selected timezone of the user. Unfortunately, I could not find any react native package or react native in-build function that facilitates this. Thus I created a small library.
10
+
11
+ v3.0.0 and above, you can access the Region details. More details can be found below.
8
12
 
9
13
  # Compatibility
10
- Timezone version 2.0.0 only support React Native version 0.62.3 and above due to React Native Regular Expression Denial of Service (ReDoS) vulnerability.
14
+
15
+ Timezone version 3.0.0 only supports React Native version 0.62.3 and above due to the React Native Regular Expression Denial of Service (ReDoS) vulnerability.
11
16
 
12
17
  | React native version | Tested | Result |
13
- |----------------------|--------|--------|
14
- | 0.62.3 + | | |
15
- | 0.62.5 + | | |
16
- | 0.71.3 + | | |
18
+ | -------------------- | ------ | ------ |
19
+ | 0.70.0 + | | |
20
+ | 0.73.0 + | | |
21
+ | 0.76.5 + | | |
17
22
 
18
23
  # Installation
19
-
20
- `npm i react-native-timezone`
21
-
22
- ## iOS
23
-
24
- Do `cd ios/ && pod install`.
25
-
26
- # Usage
27
- ```javascript
24
+
25
+ `npm i react-native-timezone`
26
+
27
+ ## iOS
28
+
29
+ Do `cd ios/ && pod install` or `npx pod-install`.
30
+
31
+ # Usage
32
+
33
+ ```javascript
28
34
  import TimeZone from 'react-native-timezone';
29
35
 
30
- getTimeZone = async() => {
31
- const timeZone = await TimeZone.getTimeZone().then(zone => zone);
32
- console.log({ timeZone });
36
+ export default function App() {
37
+ React.useEffect(() => {
38
+ const timezone = Timezone.getTimeZone();
39
+ const isAutoTimeZoneEnabled = Timezone.isAutoTimeZoneEnabled();
40
+ const telephonyRegion = Timezone.getRegionByTelephony();
41
+ const localeRegion = Timezone.getRegionByLocale();
42
+ // Update state or use data as needed
43
+ }, []);
44
+
45
+ // Render your component
33
46
  }
34
47
  ```
35
- Check out the [example]("https://github.com/samitha9125/react-native-timezone/tree/master/example") folder.
36
- # API
37
- | API | Description |
38
- |-------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|
39
- | getTimeZone | Android : Returns timezone ID using java.util.TimeZone.getID()<br>iOS : This always reflects the current system time zone using localTimeZone of NSTimeZone |
48
+
49
+ Check out the [example](https://github.com/samitha9125/react-native-timezone/tree/master/example) folder.
50
+
51
+ # APIs
52
+
53
+ | API | Description |
54
+ | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
55
+ | getTimeZone | Android: Returns timezone ID using `java.util.TimeZone.getID()`<br>iOS: Reflects the current system time zone using `localTimeZone` of `NSTimeZone` |
56
+ | isAutoTimeZoneEnabled | Returns a boolean indicating if auto timezone is enabled on the device **(Android Only)** |
57
+ | getRegionByTelephony | Retrieves the region information based on the telephony (SIM card) of the device. Returns `undefined` if the device has no SIM card. |
58
+ | getRegionByLocale | Retrieves the region information based on the device's locale settings |
@@ -1,40 +1,76 @@
1
1
  buildscript {
2
+ // Buildscript is evaluated before everything else so we can't use getExtOrDefault
3
+ def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["Timezone_kotlinVersion"]
4
+
2
5
  repositories {
3
- google()
4
- mavenCentral()
6
+ google()
7
+ mavenCentral()
5
8
  }
6
9
 
7
10
  dependencies {
8
- classpath 'com.android.tools.build:gradle:3.5.3'
11
+ classpath "com.android.tools.build:gradle:7.2.1"
12
+ // noinspection DifferentKotlinGradleVersion
13
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
9
14
  }
10
15
  }
11
16
 
17
+ def reactNativeArchitectures() {
18
+ def value = rootProject.getProperties().get("reactNativeArchitectures")
19
+ return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
20
+ }
21
+
12
22
  def isNewArchitectureEnabled() {
13
- return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
23
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
14
24
  }
15
25
 
16
- apply plugin: 'com.android.library'
26
+ apply plugin: "com.android.library"
27
+ apply plugin: "kotlin-android"
17
28
 
18
29
  if (isNewArchitectureEnabled()) {
19
- apply plugin: 'com.facebook.react'
30
+ apply plugin: "com.facebook.react"
20
31
  }
21
32
 
22
33
  def getExtOrDefault(name) {
23
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['Timezone_' + name]
34
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["Timezone_" + name]
24
35
  }
25
36
 
26
37
  def getExtOrIntegerDefault(name) {
27
- return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties['Timezone_' + name]).toInteger()
38
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["Timezone_" + name]).toInteger()
39
+ }
40
+
41
+ def supportsNamespace() {
42
+ def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
43
+ def major = parsed[0].toInteger()
44
+ def minor = parsed[1].toInteger()
45
+
46
+ // Namespace support was added in 7.3.0
47
+ return (major == 7 && minor >= 3) || major >= 8
28
48
  }
29
49
 
30
50
  android {
31
- compileSdkVersion getExtOrIntegerDefault('compileSdkVersion')
51
+ if (supportsNamespace()) {
52
+ namespace "com.samitha.timezone"
53
+
54
+ sourceSets {
55
+ main {
56
+ manifest.srcFile "src/main/AndroidManifestNew.xml"
57
+ }
58
+ }
59
+ }
60
+
61
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
32
62
 
33
63
  defaultConfig {
34
- minSdkVersion getExtOrIntegerDefault('minSdkVersion')
35
- targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
64
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
65
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
36
66
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
67
+
68
+ }
69
+
70
+ buildFeatures {
71
+ buildConfig true
37
72
  }
73
+
38
74
  buildTypes {
39
75
  release {
40
76
  minifyEnabled false
@@ -42,7 +78,7 @@ android {
42
78
  }
43
79
 
44
80
  lintOptions {
45
- disable 'GradleCompatible'
81
+ disable "GradleCompatible"
46
82
  }
47
83
 
48
84
  compileOptions {
@@ -50,89 +86,37 @@ android {
50
86
  targetCompatibility JavaVersion.VERSION_1_8
51
87
  }
52
88
 
89
+ sourceSets {
90
+ main {
91
+ if (isNewArchitectureEnabled()) {
92
+ java.srcDirs += [
93
+ "generated/java",
94
+ "generated/jni"
95
+ ]
96
+ }
97
+ }
98
+ }
53
99
  }
54
100
 
55
101
  repositories {
56
102
  mavenCentral()
57
103
  google()
58
-
59
- def found = false
60
- def defaultDir = null
61
- def androidSourcesName = 'React Native sources'
62
-
63
- if (rootProject.ext.has('reactNativeAndroidRoot')) {
64
- defaultDir = rootProject.ext.get('reactNativeAndroidRoot')
65
- } else {
66
- defaultDir = new File(
67
- projectDir,
68
- '/../../../node_modules/react-native/android'
69
- )
70
- }
71
-
72
- if (defaultDir.exists()) {
73
- maven {
74
- url defaultDir.toString()
75
- name androidSourcesName
76
- }
77
-
78
- logger.info(":${project.name}:reactNativeAndroidRoot ${defaultDir.canonicalPath}")
79
- found = true
80
- } else {
81
- def parentDir = rootProject.projectDir
82
-
83
- 1.upto(5, {
84
- if (found) return true
85
- parentDir = parentDir.parentFile
86
-
87
- def androidSourcesDir = new File(
88
- parentDir,
89
- 'node_modules/react-native'
90
- )
91
-
92
- def androidPrebuiltBinaryDir = new File(
93
- parentDir,
94
- 'node_modules/react-native/android'
95
- )
96
-
97
- if (androidPrebuiltBinaryDir.exists()) {
98
- maven {
99
- url androidPrebuiltBinaryDir.toString()
100
- name androidSourcesName
101
- }
102
-
103
- logger.info(":${project.name}:reactNativeAndroidRoot ${androidPrebuiltBinaryDir.canonicalPath}")
104
- found = true
105
- } else if (androidSourcesDir.exists()) {
106
- maven {
107
- url androidSourcesDir.toString()
108
- name androidSourcesName
109
- }
110
-
111
- logger.info(":${project.name}:reactNativeAndroidRoot ${androidSourcesDir.canonicalPath}")
112
- found = true
113
- }
114
- })
115
- }
116
-
117
- if (!found) {
118
- throw new GradleException(
119
- "${project.name}: unable to locate React Native android sources. " +
120
- "Ensure you have you installed React Native as a dependency in your project and try again."
121
- )
122
- }
123
104
  }
124
105
 
106
+ def kotlin_version = getExtOrDefault("kotlinVersion")
125
107
 
126
108
  dependencies {
127
- //noinspection GradleDynamicVersion
109
+ // For < 0.71, this will be from the local maven repo
110
+ // For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
111
+ //noinspection GradleDynamicVersion
128
112
  implementation "com.facebook.react:react-native:+"
129
- // From node_modules
113
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
130
114
  }
131
115
 
132
116
  if (isNewArchitectureEnabled()) {
133
117
  react {
134
118
  jsRootDir = file("../src/")
135
119
  libraryName = "Timezone"
136
- codegenJavaPackageName = "com.samitha.rn.timezone"
120
+ codegenJavaPackageName = "com.samitha.timezone"
137
121
  }
138
122
  }
@@ -0,0 +1,50 @@
1
+
2
+ /**
3
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
+ *
5
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
6
+ * once the code is regenerated.
7
+ *
8
+ * @generated by codegen project: GenerateModuleJavaSpec.js
9
+ *
10
+ * @nolint
11
+ */
12
+
13
+ package com.samitha.timezone;
14
+
15
+ import com.facebook.proguard.annotations.DoNotStrip;
16
+ import com.facebook.react.bridge.ReactApplicationContext;
17
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
18
+ import com.facebook.react.bridge.ReactMethod;
19
+ import com.facebook.react.turbomodule.core.interfaces.TurboModule;
20
+ import javax.annotation.Nonnull;
21
+ import javax.annotation.Nullable;
22
+
23
+ public abstract class NativeTimezoneSpec extends ReactContextBaseJavaModule implements TurboModule {
24
+ public static final String NAME = "Timezone";
25
+
26
+ public NativeTimezoneSpec(ReactApplicationContext reactContext) {
27
+ super(reactContext);
28
+ }
29
+
30
+ @Override
31
+ public @Nonnull String getName() {
32
+ return NAME;
33
+ }
34
+
35
+ @ReactMethod(isBlockingSynchronousMethod = true)
36
+ @DoNotStrip
37
+ public abstract @Nullable String getTimeZone();
38
+
39
+ @ReactMethod(isBlockingSynchronousMethod = true)
40
+ @DoNotStrip
41
+ public abstract @Nullable String getRegionByLocale();
42
+
43
+ @ReactMethod(isBlockingSynchronousMethod = true)
44
+ @DoNotStrip
45
+ public abstract @Nullable String getRegionByTelephony();
46
+
47
+ @ReactMethod(isBlockingSynchronousMethod = true)
48
+ @DoNotStrip
49
+ public abstract @Nullable Boolean isAutoTimeZoneEnabled();
50
+ }
@@ -0,0 +1,36 @@
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ #
3
+ # This source code is licensed under the MIT license found in the
4
+ # LICENSE file in the root directory of this source tree.
5
+
6
+ cmake_minimum_required(VERSION 3.13)
7
+ set(CMAKE_VERBOSE_MAKEFILE on)
8
+
9
+ file(GLOB react_codegen_SRCS CONFIGURE_DEPENDS *.cpp react/renderer/components/RNTimezoneSpec/*.cpp)
10
+
11
+ add_library(
12
+ react_codegen_RNTimezoneSpec
13
+ OBJECT
14
+ ${react_codegen_SRCS}
15
+ )
16
+
17
+ target_include_directories(react_codegen_RNTimezoneSpec PUBLIC . react/renderer/components/RNTimezoneSpec)
18
+
19
+ target_link_libraries(
20
+ react_codegen_RNTimezoneSpec
21
+ fbjni
22
+ jsi
23
+ # We need to link different libraries based on whether we are building rncore or not, that's necessary
24
+ # because we want to break a circular dependency between react_codegen_rncore and reactnative
25
+ reactnative
26
+ )
27
+
28
+ target_compile_options(
29
+ react_codegen_RNTimezoneSpec
30
+ PRIVATE
31
+ -DLOG_TAG=\"ReactNative\"
32
+ -fexceptions
33
+ -frtti
34
+ -std=c++20
35
+ -Wall
36
+ )
@@ -0,0 +1,50 @@
1
+
2
+ /**
3
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
+ *
5
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
6
+ * once the code is regenerated.
7
+ *
8
+ * @generated by codegen project: GenerateModuleJniCpp.js
9
+ */
10
+
11
+ #include "RNTimezoneSpec.h"
12
+
13
+ namespace facebook::react {
14
+
15
+ static facebook::jsi::Value __hostFunction_NativeTimezoneSpecJSI_getTimeZone(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
16
+ static jmethodID cachedMethodId = nullptr;
17
+ return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, StringKind, "getTimeZone", "()Ljava/lang/String;", args, count, cachedMethodId);
18
+ }
19
+
20
+ static facebook::jsi::Value __hostFunction_NativeTimezoneSpecJSI_getRegionByLocale(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
21
+ static jmethodID cachedMethodId = nullptr;
22
+ return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, StringKind, "getRegionByLocale", "()Ljava/lang/String;", args, count, cachedMethodId);
23
+ }
24
+
25
+ static facebook::jsi::Value __hostFunction_NativeTimezoneSpecJSI_getRegionByTelephony(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
26
+ static jmethodID cachedMethodId = nullptr;
27
+ return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, StringKind, "getRegionByTelephony", "()Ljava/lang/String;", args, count, cachedMethodId);
28
+ }
29
+
30
+ static facebook::jsi::Value __hostFunction_NativeTimezoneSpecJSI_isAutoTimeZoneEnabled(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
31
+ static jmethodID cachedMethodId = nullptr;
32
+ return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, BooleanKind, "isAutoTimeZoneEnabled", "()Ljava/lang/Boolean;", args, count, cachedMethodId);
33
+ }
34
+
35
+ NativeTimezoneSpecJSI::NativeTimezoneSpecJSI(const JavaTurboModule::InitParams &params)
36
+ : JavaTurboModule(params) {
37
+ methodMap_["getTimeZone"] = MethodMetadata {0, __hostFunction_NativeTimezoneSpecJSI_getTimeZone};
38
+ methodMap_["getRegionByLocale"] = MethodMetadata {0, __hostFunction_NativeTimezoneSpecJSI_getRegionByLocale};
39
+ methodMap_["getRegionByTelephony"] = MethodMetadata {0, __hostFunction_NativeTimezoneSpecJSI_getRegionByTelephony};
40
+ methodMap_["isAutoTimeZoneEnabled"] = MethodMetadata {0, __hostFunction_NativeTimezoneSpecJSI_isAutoTimeZoneEnabled};
41
+ }
42
+
43
+ std::shared_ptr<TurboModule> RNTimezoneSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams &params) {
44
+ if (moduleName == "Timezone") {
45
+ return std::make_shared<NativeTimezoneSpecJSI>(params);
46
+ }
47
+ return nullptr;
48
+ }
49
+
50
+ } // namespace facebook::react
@@ -0,0 +1,31 @@
1
+
2
+ /**
3
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
4
+ *
5
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
6
+ * once the code is regenerated.
7
+ *
8
+ * @generated by codegen project: GenerateModuleJniH.js
9
+ */
10
+
11
+ #pragma once
12
+
13
+ #include <ReactCommon/JavaTurboModule.h>
14
+ #include <ReactCommon/TurboModule.h>
15
+ #include <jsi/jsi.h>
16
+
17
+ namespace facebook::react {
18
+
19
+ /**
20
+ * JNI C++ class for module 'NativeTimezone'
21
+ */
22
+ class JSI_EXPORT NativeTimezoneSpecJSI : public JavaTurboModule {
23
+ public:
24
+ NativeTimezoneSpecJSI(const JavaTurboModule::InitParams &params);
25
+ };
26
+
27
+
28
+ JSI_EXPORT
29
+ std::shared_ptr<TurboModule> RNTimezoneSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams &params);
30
+
31
+ } // namespace facebook::react
@@ -0,0 +1,48 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GenerateModuleCpp.js
8
+ */
9
+
10
+ #include "RNTimezoneSpecJSI.h"
11
+
12
+ namespace facebook::react {
13
+
14
+ static jsi::Value __hostFunction_NativeTimezoneCxxSpecJSI_getTimeZone(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
15
+ auto result = static_cast<NativeTimezoneCxxSpecJSI *>(&turboModule)->getTimeZone(
16
+ rt
17
+ );
18
+ return result ? jsi::Value(std::move(*result)) : jsi::Value::null();
19
+ }
20
+ static jsi::Value __hostFunction_NativeTimezoneCxxSpecJSI_getRegionByLocale(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
21
+ auto result = static_cast<NativeTimezoneCxxSpecJSI *>(&turboModule)->getRegionByLocale(
22
+ rt
23
+ );
24
+ return result ? jsi::Value(std::move(*result)) : jsi::Value::null();
25
+ }
26
+ static jsi::Value __hostFunction_NativeTimezoneCxxSpecJSI_getRegionByTelephony(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
27
+ auto result = static_cast<NativeTimezoneCxxSpecJSI *>(&turboModule)->getRegionByTelephony(
28
+ rt
29
+ );
30
+ return result ? jsi::Value(std::move(*result)) : jsi::Value::null();
31
+ }
32
+ static jsi::Value __hostFunction_NativeTimezoneCxxSpecJSI_isAutoTimeZoneEnabled(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
33
+ auto result = static_cast<NativeTimezoneCxxSpecJSI *>(&turboModule)->isAutoTimeZoneEnabled(
34
+ rt
35
+ );
36
+ return result ? jsi::Value(std::move(*result)) : jsi::Value::null();
37
+ }
38
+
39
+ NativeTimezoneCxxSpecJSI::NativeTimezoneCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
40
+ : TurboModule("Timezone", jsInvoker) {
41
+ methodMap_["getTimeZone"] = MethodMetadata {0, __hostFunction_NativeTimezoneCxxSpecJSI_getTimeZone};
42
+ methodMap_["getRegionByLocale"] = MethodMetadata {0, __hostFunction_NativeTimezoneCxxSpecJSI_getRegionByLocale};
43
+ methodMap_["getRegionByTelephony"] = MethodMetadata {0, __hostFunction_NativeTimezoneCxxSpecJSI_getRegionByTelephony};
44
+ methodMap_["isAutoTimeZoneEnabled"] = MethodMetadata {0, __hostFunction_NativeTimezoneCxxSpecJSI_isAutoTimeZoneEnabled};
45
+ }
46
+
47
+
48
+ } // namespace facebook::react
@@ -0,0 +1,94 @@
1
+ /**
2
+ * This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen).
3
+ *
4
+ * Do not edit this file as changes may cause incorrect behavior and will be lost
5
+ * once the code is regenerated.
6
+ *
7
+ * @generated by codegen project: GenerateModuleH.js
8
+ */
9
+
10
+ #pragma once
11
+
12
+ #include <ReactCommon/TurboModule.h>
13
+ #include <react/bridging/Bridging.h>
14
+
15
+ namespace facebook::react {
16
+
17
+
18
+ class JSI_EXPORT NativeTimezoneCxxSpecJSI : public TurboModule {
19
+ protected:
20
+ NativeTimezoneCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
21
+
22
+ public:
23
+ virtual std::optional<jsi::String> getTimeZone(jsi::Runtime &rt) = 0;
24
+ virtual std::optional<jsi::String> getRegionByLocale(jsi::Runtime &rt) = 0;
25
+ virtual std::optional<jsi::String> getRegionByTelephony(jsi::Runtime &rt) = 0;
26
+ virtual std::optional<bool> isAutoTimeZoneEnabled(jsi::Runtime &rt) = 0;
27
+
28
+ };
29
+
30
+ template <typename T>
31
+ class JSI_EXPORT NativeTimezoneCxxSpec : public TurboModule {
32
+ public:
33
+ jsi::Value get(jsi::Runtime &rt, const jsi::PropNameID &propName) override {
34
+ return delegate_.get(rt, propName);
35
+ }
36
+
37
+ static constexpr std::string_view kModuleName = "Timezone";
38
+
39
+ protected:
40
+ NativeTimezoneCxxSpec(std::shared_ptr<CallInvoker> jsInvoker)
41
+ : TurboModule(std::string{NativeTimezoneCxxSpec::kModuleName}, jsInvoker),
42
+ delegate_(reinterpret_cast<T*>(this), jsInvoker) {}
43
+
44
+
45
+ private:
46
+ class Delegate : public NativeTimezoneCxxSpecJSI {
47
+ public:
48
+ Delegate(T *instance, std::shared_ptr<CallInvoker> jsInvoker) :
49
+ NativeTimezoneCxxSpecJSI(std::move(jsInvoker)), instance_(instance) {
50
+
51
+ }
52
+
53
+ std::optional<jsi::String> getTimeZone(jsi::Runtime &rt) override {
54
+ static_assert(
55
+ bridging::getParameterCount(&T::getTimeZone) == 1,
56
+ "Expected getTimeZone(...) to have 1 parameters");
57
+
58
+ return bridging::callFromJs<std::optional<jsi::String>>(
59
+ rt, &T::getTimeZone, jsInvoker_, instance_);
60
+ }
61
+ std::optional<jsi::String> getRegionByLocale(jsi::Runtime &rt) override {
62
+ static_assert(
63
+ bridging::getParameterCount(&T::getRegionByLocale) == 1,
64
+ "Expected getRegionByLocale(...) to have 1 parameters");
65
+
66
+ return bridging::callFromJs<std::optional<jsi::String>>(
67
+ rt, &T::getRegionByLocale, jsInvoker_, instance_);
68
+ }
69
+ std::optional<jsi::String> getRegionByTelephony(jsi::Runtime &rt) override {
70
+ static_assert(
71
+ bridging::getParameterCount(&T::getRegionByTelephony) == 1,
72
+ "Expected getRegionByTelephony(...) to have 1 parameters");
73
+
74
+ return bridging::callFromJs<std::optional<jsi::String>>(
75
+ rt, &T::getRegionByTelephony, jsInvoker_, instance_);
76
+ }
77
+ std::optional<bool> isAutoTimeZoneEnabled(jsi::Runtime &rt) override {
78
+ static_assert(
79
+ bridging::getParameterCount(&T::isAutoTimeZoneEnabled) == 1,
80
+ "Expected isAutoTimeZoneEnabled(...) to have 1 parameters");
81
+
82
+ return bridging::callFromJs<std::optional<bool>>(
83
+ rt, &T::isAutoTimeZoneEnabled, jsInvoker_, instance_);
84
+ }
85
+
86
+ private:
87
+ friend class NativeTimezoneCxxSpec;
88
+ T *instance_;
89
+ };
90
+
91
+ Delegate delegate_;
92
+ };
93
+
94
+ } // namespace facebook::react
@@ -1,4 +1,3 @@
1
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
- package="com.samitha.rn.timezone">
3
-
2
+ package="com.samitha.timezone">
4
3
  </manifest>
@@ -0,0 +1,2 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ </manifest>