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.
- package/LICENSE +1 -1
- package/README.md +44 -25
- package/android/build.gradle +64 -80
- package/android/generated/java/com/samitha/timezone/NativeTimezoneSpec.java +50 -0
- package/android/generated/jni/CMakeLists.txt +36 -0
- package/android/generated/jni/RNTimezoneSpec-generated.cpp +50 -0
- package/android/generated/jni/RNTimezoneSpec.h +31 -0
- package/android/generated/jni/react/renderer/components/RNTimezoneSpec/RNTimezoneSpecJSI-generated.cpp +48 -0
- package/android/generated/jni/react/renderer/components/RNTimezoneSpec/RNTimezoneSpecJSI.h +94 -0
- package/android/src/main/AndroidManifest.xml +1 -2
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/com/samitha/timezone/TimezoneModule.kt +86 -0
- package/android/src/main/java/com/samitha/timezone/TimezonePackage.kt +34 -0
- package/ios/Timezone.h +1 -7
- package/ios/Timezone.mm +42 -18
- package/ios/generated/RNTimezoneSpec/RNTimezoneSpec-generated.mm +60 -0
- package/ios/generated/RNTimezoneSpec/RNTimezoneSpec.h +62 -0
- package/ios/generated/RNTimezoneSpecJSI-generated.cpp +48 -0
- package/ios/generated/RNTimezoneSpecJSI.h +94 -0
- package/lib/commonjs/NativeTimezone.js +9 -0
- package/lib/commonjs/NativeTimezone.js.map +1 -0
- package/lib/commonjs/index.js +12 -10
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeTimezone.js +5 -0
- package/lib/module/NativeTimezone.js.map +1 -0
- package/lib/module/index.js +14 -10
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/NativeTimezone.d.ts +10 -0
- package/lib/typescript/commonjs/src/NativeTimezone.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +8 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/NativeTimezone.d.ts +10 -0
- package/lib/typescript/module/src/NativeTimezone.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +8 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/package.json +87 -48
- package/react-native-timezone.podspec +23 -16
- package/react-native.config.js +12 -0
- package/src/NativeTimezone.ts +11 -0
- package/src/index.tsx +15 -0
- package/android/src/main/java/com/samitha/rn/timezone/TimezoneModule.java +0 -41
- package/android/src/main/java/com/samitha/rn/timezone/TimezonePackage.java +0 -28
- package/ios/Timezone.xcodeproj/project.pbxproj +0 -274
- package/ios/Timezone.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -4
- package/ios/Timezone.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- package/ios/Timezone.xcodeproj/project.xcworkspace/xcuserdata/samitha.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Timezone.xcodeproj/xcuserdata/samitha.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
- package/lib/commonjs/index.d.js +0 -6
- package/lib/commonjs/index.d.js.map +0 -1
- package/lib/module/index.d.js +0 -2
- package/lib/module/index.d.js.map +0 -1
- package/lib/typescript/index.test.d.ts +0 -1
- package/lib/typescript/index.test.d.ts.map +0 -1
- package/src/index.d.ts +0 -5
- package/src/index.js +0 -20
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
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
|
[](https://codeclimate.com/github/samitha9125/react-native-timezone/maintainability)
|
|
3
4
|
|
|
4
|
-
A Simple react native module to get Timezone of the Android/iOS
|
|
5
|
+
A Simple react native module to get the Timezone and the Region of the Android/iOS devices.
|
|
5
6
|
|
|
6
7
|
# Motivation
|
|
7
|
-
|
|
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
|
-
|
|
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.
|
|
15
|
-
| 0.
|
|
16
|
-
| 0.
|
|
18
|
+
| -------------------- | ------ | ------ |
|
|
19
|
+
| 0.70.0 + | ✅ | ✅ |
|
|
20
|
+
| 0.73.0 + | ✅ | ✅ |
|
|
21
|
+
| 0.76.5 + | ✅ | ✅ |
|
|
17
22
|
|
|
18
23
|
# Installation
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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 |
|
package/android/build.gradle
CHANGED
|
@@ -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
|
-
|
|
4
|
-
|
|
6
|
+
google()
|
|
7
|
+
mavenCentral()
|
|
5
8
|
}
|
|
6
9
|
|
|
7
10
|
dependencies {
|
|
8
|
-
classpath
|
|
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") &&
|
|
23
|
+
return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
|
|
14
24
|
}
|
|
15
25
|
|
|
16
|
-
apply plugin:
|
|
26
|
+
apply plugin: "com.android.library"
|
|
27
|
+
apply plugin: "kotlin-android"
|
|
17
28
|
|
|
18
29
|
if (isNewArchitectureEnabled()) {
|
|
19
|
-
apply plugin:
|
|
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[
|
|
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[
|
|
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
|
-
|
|
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(
|
|
35
|
-
targetSdkVersion getExtOrIntegerDefault(
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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 ¶ms)
|
|
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 ¶ms) {
|
|
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 ¶ms);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
JSI_EXPORT
|
|
29
|
+
std::shared_ptr<TurboModule> RNTimezoneSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms);
|
|
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
|