gt-react-native 0.0.1-alpha.1 → 0.0.1-alpha.11
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/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeGtReactNativeSpec.java +2 -2
- package/android/app/build/generated/source/codegen/jni/GtReactNativeSpec-generated.cpp +6 -6
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/GtReactNativeSpec/GtReactNativeSpecJSI-generated.cpp +6 -6
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/GtReactNativeSpec/GtReactNativeSpecJSI.h +10 -10
- package/android/build.gradle +12 -1
- package/android/src/main/java/com/gtreactnative/{GtReactNativeModule.kt → GtReactNativeModuleImpl.kt} +11 -23
- package/android/src/main/java/com/gtreactnative/GtReactNativePackage.kt +9 -7
- package/android/src/newarch/com/gtreactnative/GtReactNativeModule.kt +30 -0
- package/android/src/oldarch/com/gtreactnative/GtReactNativeModule.kt +36 -0
- package/ios/GtReactNative.h +9 -1
- package/ios/GtReactNative.mm +47 -12
- package/lib/module/NativeGtReactNative.js.map +1 -1
- package/lib/module/index.js +0 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/plugin.js +39 -0
- package/lib/module/plugin.js.map +1 -0
- package/lib/module/provider/hooks/locale/useDetermineLocale.js +16 -14
- package/lib/module/provider/hooks/locale/useDetermineLocale.js.map +1 -1
- package/lib/module/provider/hooks/useRegionState.js +10 -22
- package/lib/module/provider/hooks/useRegionState.js.map +1 -1
- package/lib/module/testLocalePolyfill.js +64 -0
- package/lib/module/testLocalePolyfill.js.map +1 -0
- package/lib/module/utils/utils.js +1 -4
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/typescript/src/NativeGtReactNative.d.ts +1 -1
- package/lib/typescript/src/NativeGtReactNative.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +0 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/plugin.d.ts +10 -0
- package/lib/typescript/src/plugin.d.ts.map +1 -0
- package/lib/typescript/src/provider/hooks/locale/useDetermineLocale.d.ts +1 -1
- package/lib/typescript/src/provider/hooks/locale/useDetermineLocale.d.ts.map +1 -1
- package/lib/typescript/src/provider/hooks/useRegionState.d.ts.map +1 -1
- package/lib/typescript/src/testLocalePolyfill.d.ts +12 -0
- package/lib/typescript/src/testLocalePolyfill.d.ts.map +1 -0
- package/lib/typescript/src/utils/utils.d.ts.map +1 -1
- package/package.json +16 -5
- package/src/NativeGtReactNative.ts +2 -2
- package/src/index.tsx +0 -1
- package/src/plugin.ts +76 -0
- package/src/provider/hooks/locale/useDetermineLocale.ts +15 -13
- package/src/provider/hooks/useRegionState.ts +9 -21
- package/src/testLocalePolyfill.ts +82 -0
- package/src/utils/utils.ts +2 -3
- package/lib/module/utils/constants.js +0 -8
- package/lib/module/utils/constants.js.map +0 -1
- package/lib/module/utils/polyfill.js +0 -32
- package/lib/module/utils/polyfill.js.map +0 -1
- package/lib/typescript/src/utils/constants.d.ts +0 -3
- package/lib/typescript/src/utils/constants.d.ts.map +0 -1
- package/lib/typescript/src/utils/polyfill.d.ts +0 -28
- package/lib/typescript/src/utils/polyfill.d.ts.map +0 -1
- package/src/utils/constants.ts +0 -5
- package/src/utils/polyfill.ts +0 -36
|
@@ -43,9 +43,9 @@ public abstract class NativeGtReactNativeSpec extends ReactContextBaseJavaModule
|
|
|
43
43
|
|
|
44
44
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
45
45
|
@DoNotStrip
|
|
46
|
-
public abstract @Nullable String
|
|
46
|
+
public abstract @Nullable String nativeStoreGet(String key);
|
|
47
47
|
|
|
48
48
|
@ReactMethod
|
|
49
49
|
@DoNotStrip
|
|
50
|
-
public abstract void
|
|
50
|
+
public abstract void nativeStoreSet(String key, String value);
|
|
51
51
|
}
|
|
@@ -22,22 +22,22 @@ static facebook::jsi::Value __hostFunction_NativeGtReactNativeSpecJSI_getNativeL
|
|
|
22
22
|
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, ArrayKind, "getNativeLocales", "()Lcom/facebook/react/bridge/WritableArray;", args, count, cachedMethodId);
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
static facebook::jsi::Value
|
|
25
|
+
static facebook::jsi::Value __hostFunction_NativeGtReactNativeSpecJSI_nativeStoreGet(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
26
26
|
static jmethodID cachedMethodId = nullptr;
|
|
27
|
-
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, StringKind, "
|
|
27
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, StringKind, "nativeStoreGet", "(Ljava/lang/String;)Ljava/lang/String;", args, count, cachedMethodId);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
static facebook::jsi::Value
|
|
30
|
+
static facebook::jsi::Value __hostFunction_NativeGtReactNativeSpecJSI_nativeStoreSet(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
31
31
|
static jmethodID cachedMethodId = nullptr;
|
|
32
|
-
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "
|
|
32
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, VoidKind, "nativeStoreSet", "(Ljava/lang/String;Ljava/lang/String;)V", args, count, cachedMethodId);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
NativeGtReactNativeSpecJSI::NativeGtReactNativeSpecJSI(const JavaTurboModule::InitParams ¶ms)
|
|
36
36
|
: JavaTurboModule(params) {
|
|
37
37
|
methodMap_["multiply"] = MethodMetadata {2, __hostFunction_NativeGtReactNativeSpecJSI_multiply};
|
|
38
38
|
methodMap_["getNativeLocales"] = MethodMetadata {0, __hostFunction_NativeGtReactNativeSpecJSI_getNativeLocales};
|
|
39
|
-
methodMap_["
|
|
40
|
-
methodMap_["
|
|
39
|
+
methodMap_["nativeStoreGet"] = MethodMetadata {1, __hostFunction_NativeGtReactNativeSpecJSI_nativeStoreGet};
|
|
40
|
+
methodMap_["nativeStoreSet"] = MethodMetadata {2, __hostFunction_NativeGtReactNativeSpecJSI_nativeStoreSet};
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
std::shared_ptr<TurboModule> GtReactNativeSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms) {
|
|
@@ -23,15 +23,15 @@ static jsi::Value __hostFunction_NativeGtReactNativeCxxSpecJSI_getNativeLocales(
|
|
|
23
23
|
rt
|
|
24
24
|
);
|
|
25
25
|
}
|
|
26
|
-
static jsi::Value
|
|
27
|
-
auto result = static_cast<NativeGtReactNativeCxxSpecJSI *>(&turboModule)->
|
|
26
|
+
static jsi::Value __hostFunction_NativeGtReactNativeCxxSpecJSI_nativeStoreGet(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
27
|
+
auto result = static_cast<NativeGtReactNativeCxxSpecJSI *>(&turboModule)->nativeStoreGet(
|
|
28
28
|
rt,
|
|
29
29
|
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
|
|
30
30
|
);
|
|
31
31
|
return result ? jsi::Value(std::move(*result)) : jsi::Value::null();
|
|
32
32
|
}
|
|
33
|
-
static jsi::Value
|
|
34
|
-
static_cast<NativeGtReactNativeCxxSpecJSI *>(&turboModule)->
|
|
33
|
+
static jsi::Value __hostFunction_NativeGtReactNativeCxxSpecJSI_nativeStoreSet(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
|
|
34
|
+
static_cast<NativeGtReactNativeCxxSpecJSI *>(&turboModule)->nativeStoreSet(
|
|
35
35
|
rt,
|
|
36
36
|
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
37
37
|
count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt)
|
|
@@ -43,8 +43,8 @@ NativeGtReactNativeCxxSpecJSI::NativeGtReactNativeCxxSpecJSI(std::shared_ptr<Cal
|
|
|
43
43
|
: TurboModule("GtReactNative", jsInvoker) {
|
|
44
44
|
methodMap_["multiply"] = MethodMetadata {2, __hostFunction_NativeGtReactNativeCxxSpecJSI_multiply};
|
|
45
45
|
methodMap_["getNativeLocales"] = MethodMetadata {0, __hostFunction_NativeGtReactNativeCxxSpecJSI_getNativeLocales};
|
|
46
|
-
methodMap_["
|
|
47
|
-
methodMap_["
|
|
46
|
+
methodMap_["nativeStoreGet"] = MethodMetadata {1, __hostFunction_NativeGtReactNativeCxxSpecJSI_nativeStoreGet};
|
|
47
|
+
methodMap_["nativeStoreSet"] = MethodMetadata {2, __hostFunction_NativeGtReactNativeCxxSpecJSI_nativeStoreSet};
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
|
|
@@ -22,8 +22,8 @@ protected:
|
|
|
22
22
|
public:
|
|
23
23
|
virtual double multiply(jsi::Runtime &rt, double a, double b) = 0;
|
|
24
24
|
virtual jsi::Array getNativeLocales(jsi::Runtime &rt) = 0;
|
|
25
|
-
virtual std::optional<jsi::String>
|
|
26
|
-
virtual void
|
|
25
|
+
virtual std::optional<jsi::String> nativeStoreGet(jsi::Runtime &rt, jsi::String key) = 0;
|
|
26
|
+
virtual void nativeStoreSet(jsi::Runtime &rt, jsi::String key, jsi::String value) = 0;
|
|
27
27
|
|
|
28
28
|
};
|
|
29
29
|
|
|
@@ -70,21 +70,21 @@ private:
|
|
|
70
70
|
return bridging::callFromJs<jsi::Array>(
|
|
71
71
|
rt, &T::getNativeLocales, jsInvoker_, instance_);
|
|
72
72
|
}
|
|
73
|
-
std::optional<jsi::String>
|
|
73
|
+
std::optional<jsi::String> nativeStoreGet(jsi::Runtime &rt, jsi::String key) override {
|
|
74
74
|
static_assert(
|
|
75
|
-
bridging::getParameterCount(&T::
|
|
76
|
-
"Expected
|
|
75
|
+
bridging::getParameterCount(&T::nativeStoreGet) == 2,
|
|
76
|
+
"Expected nativeStoreGet(...) to have 2 parameters");
|
|
77
77
|
|
|
78
78
|
return bridging::callFromJs<std::optional<jsi::String>>(
|
|
79
|
-
rt, &T::
|
|
79
|
+
rt, &T::nativeStoreGet, jsInvoker_, instance_, std::move(key));
|
|
80
80
|
}
|
|
81
|
-
void
|
|
81
|
+
void nativeStoreSet(jsi::Runtime &rt, jsi::String key, jsi::String value) override {
|
|
82
82
|
static_assert(
|
|
83
|
-
bridging::getParameterCount(&T::
|
|
84
|
-
"Expected
|
|
83
|
+
bridging::getParameterCount(&T::nativeStoreSet) == 3,
|
|
84
|
+
"Expected nativeStoreSet(...) to have 3 parameters");
|
|
85
85
|
|
|
86
86
|
return bridging::callFromJs<void>(
|
|
87
|
-
rt, &T::
|
|
87
|
+
rt, &T::nativeStoreSet, jsInvoker_, instance_, std::move(key), std::move(value));
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
private:
|
package/android/build.gradle
CHANGED
|
@@ -15,11 +15,16 @@ buildscript {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
def isNewArchitectureEnabled() {
|
|
19
|
+
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
|
|
20
|
+
}
|
|
18
21
|
|
|
19
22
|
apply plugin: "com.android.library"
|
|
20
23
|
apply plugin: "kotlin-android"
|
|
21
24
|
|
|
22
|
-
|
|
25
|
+
if (isNewArchitectureEnabled()) {
|
|
26
|
+
apply plugin: "com.facebook.react"
|
|
27
|
+
}
|
|
23
28
|
|
|
24
29
|
def getExtOrIntegerDefault(name) {
|
|
25
30
|
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["GtReactNative_" + name]).toInteger()
|
|
@@ -31,6 +36,7 @@ android {
|
|
|
31
36
|
compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
|
|
32
37
|
|
|
33
38
|
defaultConfig {
|
|
39
|
+
buildConfigField("boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString())
|
|
34
40
|
minSdkVersion getExtOrIntegerDefault("minSdkVersion")
|
|
35
41
|
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
|
|
36
42
|
}
|
|
@@ -60,6 +66,11 @@ android {
|
|
|
60
66
|
"generated/java",
|
|
61
67
|
"generated/jni"
|
|
62
68
|
]
|
|
69
|
+
if (isNewArchitectureEnabled()) {
|
|
70
|
+
java.srcDirs += ["src/newarch"]
|
|
71
|
+
} else {
|
|
72
|
+
java.srcDirs += ["src/oldarch"]
|
|
73
|
+
}
|
|
63
74
|
}
|
|
64
75
|
}
|
|
65
76
|
}
|
|
@@ -6,28 +6,16 @@ import android.os.LocaleList
|
|
|
6
6
|
import com.facebook.react.bridge.Arguments
|
|
7
7
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
8
8
|
import com.facebook.react.bridge.WritableArray
|
|
9
|
-
import com.facebook.react.module.annotations.ReactModule
|
|
10
9
|
import java.util.Locale
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
NativeGtReactNativeSpec(reactContext) {
|
|
11
|
+
object GtReactNativeModuleImpl {
|
|
12
|
+
const val NAME = "GtReactNative"
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
reactApplicationContext.getSharedPreferences("gt_store", Context.MODE_PRIVATE)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
override fun getName(): String {
|
|
21
|
-
return NAME
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// Example method
|
|
25
|
-
// See https://reactnative.dev/docs/native-modules-android
|
|
26
|
-
override fun multiply(a: Double, b: Double): Double {
|
|
14
|
+
fun multiply(a: Double, b: Double): Double {
|
|
27
15
|
return a * b
|
|
28
16
|
}
|
|
29
17
|
|
|
30
|
-
|
|
18
|
+
fun getNativeLocales(reactContext: ReactApplicationContext): WritableArray {
|
|
31
19
|
val locales = Arguments.createArray()
|
|
32
20
|
val seenLocales = mutableSetOf<String>()
|
|
33
21
|
|
|
@@ -56,13 +44,13 @@ class GtReactNativeModule(reactContext: ReactApplicationContext) :
|
|
|
56
44
|
return locales
|
|
57
45
|
}
|
|
58
46
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
prefs.edit().putString(key, value).apply()
|
|
47
|
+
fun nativeStoreGet(reactContext: ReactApplicationContext, key: String): String? {
|
|
48
|
+
val prefs = reactContext.getSharedPreferences("gt_store", Context.MODE_PRIVATE)
|
|
49
|
+
return prefs.getString(key, null)
|
|
63
50
|
}
|
|
64
51
|
|
|
65
|
-
|
|
66
|
-
|
|
52
|
+
fun nativeStoreSet(reactContext: ReactApplicationContext, key: String, value: String) {
|
|
53
|
+
val prefs = reactContext.getSharedPreferences("gt_store", Context.MODE_PRIVATE)
|
|
54
|
+
prefs.edit().putString(key, value).apply()
|
|
67
55
|
}
|
|
68
|
-
}
|
|
56
|
+
}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
package com.gtreactnative
|
|
2
2
|
|
|
3
|
-
import com.
|
|
3
|
+
import com.gtreactnative.GtReactNativeModuleImpl
|
|
4
|
+
import com.facebook.react.TurboReactPackage
|
|
4
5
|
import com.facebook.react.bridge.NativeModule
|
|
5
6
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
7
|
import com.facebook.react.module.model.ReactModuleInfo
|
|
7
8
|
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
8
9
|
import java.util.HashMap
|
|
9
10
|
|
|
10
|
-
class GtReactNativePackage :
|
|
11
|
+
class GtReactNativePackage : TurboReactPackage() {
|
|
11
12
|
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
|
12
|
-
return if (name ==
|
|
13
|
+
return if (name == GtReactNativeModuleImpl.NAME) {
|
|
13
14
|
GtReactNativeModule(reactContext)
|
|
14
15
|
} else {
|
|
15
16
|
null
|
|
@@ -19,13 +20,14 @@ class GtReactNativePackage : BaseReactPackage() {
|
|
|
19
20
|
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
|
|
20
21
|
return ReactModuleInfoProvider {
|
|
21
22
|
val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
val isTurboModule = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
|
|
24
|
+
moduleInfos[GtReactNativeModuleImpl.NAME] = ReactModuleInfo(
|
|
25
|
+
GtReactNativeModuleImpl.NAME,
|
|
26
|
+
GtReactNativeModuleImpl.NAME,
|
|
25
27
|
false, // canOverrideExistingModule
|
|
26
28
|
false, // needsEagerInit
|
|
27
29
|
false, // isCxxModule
|
|
28
|
-
|
|
30
|
+
isTurboModule // isTurboModule
|
|
29
31
|
)
|
|
30
32
|
moduleInfos
|
|
31
33
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
package com.gtreactnative
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
|
+
import com.facebook.react.bridge.WritableArray
|
|
5
|
+
import com.facebook.react.module.annotations.ReactModule
|
|
6
|
+
|
|
7
|
+
@ReactModule(name = GtReactNativeModuleImpl.NAME)
|
|
8
|
+
class GtReactNativeModule(reactContext: ReactApplicationContext) :
|
|
9
|
+
NativeGtReactNativeSpec(reactContext) {
|
|
10
|
+
|
|
11
|
+
override fun getName(): String {
|
|
12
|
+
return GtReactNativeModuleImpl.NAME
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
override fun multiply(a: Double, b: Double): Double {
|
|
16
|
+
return GtReactNativeModuleImpl.multiply(a, b)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
override fun getNativeLocales(): WritableArray {
|
|
20
|
+
return GtReactNativeModuleImpl.getNativeLocales(reactApplicationContext)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
override fun nativeStoreGet(key: String): String? {
|
|
24
|
+
return GtReactNativeModuleImpl.nativeStoreGet(reactApplicationContext, key)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
override fun nativeStoreSet(key: String, value: String) {
|
|
28
|
+
GtReactNativeModuleImpl.nativeStoreSet(reactApplicationContext, key, value)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
package com.gtreactnative
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
5
|
+
import com.facebook.react.bridge.ReactMethod
|
|
6
|
+
import com.facebook.react.bridge.WritableArray
|
|
7
|
+
import com.facebook.react.module.annotations.ReactModule
|
|
8
|
+
|
|
9
|
+
@ReactModule(name = GtReactNativeModuleImpl.NAME)
|
|
10
|
+
class GtReactNativeModule(reactContext: ReactApplicationContext) :
|
|
11
|
+
ReactContextBaseJavaModule(reactContext) {
|
|
12
|
+
|
|
13
|
+
override fun getName(): String {
|
|
14
|
+
return GtReactNativeModuleImpl.NAME
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
18
|
+
fun multiply(a: Double, b: Double): Double {
|
|
19
|
+
return GtReactNativeModuleImpl.multiply(a, b)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
23
|
+
fun getNativeLocales(): WritableArray {
|
|
24
|
+
return GtReactNativeModuleImpl.getNativeLocales(reactApplicationContext)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
28
|
+
fun nativeStoreGet(key: String): String? {
|
|
29
|
+
return GtReactNativeModuleImpl.nativeStoreGet(reactApplicationContext, key)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@ReactMethod
|
|
33
|
+
fun nativeStoreSet(key: String, value: String) {
|
|
34
|
+
GtReactNativeModuleImpl.nativeStoreSet(reactApplicationContext, key, value)
|
|
35
|
+
}
|
|
36
|
+
}
|
package/ios/GtReactNative.h
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
2
2
|
|
|
3
|
+
#import <GtReactNativeSpec/GtReactNativeSpec.h>
|
|
3
4
|
@interface GtReactNative : NSObject <NativeGtReactNativeSpec>
|
|
4
5
|
|
|
6
|
+
#else
|
|
7
|
+
|
|
8
|
+
#import <React/RCTBridgeModule.h>
|
|
9
|
+
@interface GtReactNative : NSObject <RCTBridgeModule>
|
|
10
|
+
|
|
11
|
+
#endif
|
|
12
|
+
|
|
5
13
|
@end
|
package/ios/GtReactNative.mm
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
NSUserDefaults *_defaults;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
RCT_EXPORT_MODULE();
|
|
8
|
+
|
|
7
9
|
- (instancetype)init
|
|
8
10
|
{
|
|
9
11
|
if ((self = [super init])) {
|
|
@@ -11,13 +13,13 @@
|
|
|
11
13
|
}
|
|
12
14
|
return self;
|
|
13
15
|
}
|
|
14
|
-
- (NSNumber *)multiply:(double)a b:(double)b {
|
|
15
|
-
NSNumber *result = @(a * b);
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
// Internal implementation methods
|
|
18
|
+
- (NSNumber *)multiplyImpl:(double)a b:(double)b {
|
|
19
|
+
return @(a * b);
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
- (NSArray<NSString *> *)
|
|
22
|
+
- (NSArray<NSString *> *)getNativeLocalesImpl {
|
|
21
23
|
NSMutableArray<NSString *> *locales = [[NSMutableArray alloc] init];
|
|
22
24
|
|
|
23
25
|
// Add current locale first
|
|
@@ -38,27 +40,60 @@
|
|
|
38
40
|
return [locales copy];
|
|
39
41
|
}
|
|
40
42
|
|
|
41
|
-
- (nullable NSString *)
|
|
43
|
+
- (nullable NSString *)nativeStoreGetImpl:(NSString *)key
|
|
42
44
|
{
|
|
43
45
|
if (key == nil) { return nil; }
|
|
44
46
|
return [_defaults stringForKey:key];
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
- (void)
|
|
49
|
+
- (void)nativeStoreSetImpl:(NSString *)key value:(NSString *)value
|
|
48
50
|
{
|
|
49
51
|
if (key == nil || value == nil) { return; }
|
|
50
52
|
[_defaults setObject:value forKey:key];
|
|
51
53
|
}
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
56
|
+
|
|
57
|
+
// New architecture
|
|
58
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
|
|
56
59
|
return std::make_shared<facebook::react::NativeGtReactNativeSpecJSI>(params);
|
|
57
60
|
}
|
|
58
61
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
- (NSNumber *)multiply:(double)a b:(double)b {
|
|
63
|
+
return [self multiplyImpl:a b:b];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
- (NSArray<NSString *> *)getNativeLocales {
|
|
67
|
+
return [self getNativeLocalesImpl];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
- (NSString *)nativeStoreGet:(NSString *)key {
|
|
71
|
+
return [self nativeStoreGetImpl:key];
|
|
62
72
|
}
|
|
63
73
|
|
|
74
|
+
- (void)nativeStoreSet:(NSString *)key value:(NSString *)value {
|
|
75
|
+
[self nativeStoreSetImpl:key value:value];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#else
|
|
79
|
+
|
|
80
|
+
// Old architecture
|
|
81
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(multiply:(double)a b:(double)b) {
|
|
82
|
+
return [self multiplyImpl:a b:b];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getNativeLocales) {
|
|
86
|
+
return [self getNativeLocalesImpl];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(nativeStoreGet:(NSString *)key) {
|
|
90
|
+
return [self nativeStoreGetImpl:key];
|
|
91
|
+
}
|
|
92
|
+
t
|
|
93
|
+
RCT_EXPORT_METHOD(nativeStoreSet:(NSString *)key value:(NSString *)value) {
|
|
94
|
+
[self nativeStoreSetImpl:key value:value];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
#endif
|
|
98
|
+
|
|
64
99
|
@end
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeGtReactNative.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeGtReactNative.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAQlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,eAAe,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["GtReactNative","GTProvider","multiply","a","b","T","useGT","useTranslations","useDefaultLocale","useLocale","useRegion","Var","Num","Currency","DateTime","Plural","Branch","useLocales","useLocaleSelector","useSetLocale","useGTClass","useLocaleProperties","useRegionSelector","useLocaleDirection","useMessages","msg","decodeMsg","decodeOptions"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"names":["GtReactNative","GTProvider","multiply","a","b","T","useGT","useTranslations","useDefaultLocale","useLocale","useRegion","Var","Num","Currency","DateTime","Plural","Branch","useLocales","useLocaleSelector","useSetLocale","useGTClass","useLocaleProperties","useRegionSelector","useLocaleDirection","useMessages","msg","decodeMsg","decodeOptions"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,aAAa,MAAM,0BAAuB;AAEjD,SAASC,UAAU,QAAQ,0BAAuB;AAClD,OAAO,SAASC,QAAQA,CAACC,CAAS,EAAEC,CAAS,EAAU;EACrD,OAAOJ,aAAa,CAACE,QAAQ,CAACC,CAAC,EAAEC,CAAC,CAAC;AACrC;AAEA,SACEC,CAAC,EACDC,KAAK,EACLC,eAAe,EACfC,gBAAgB,EAChBC,SAAS,EACTC,SAAS,EACTC,GAAG,EACHC,GAAG,EACHC,QAAQ,EACRC,QAAQ,EACRC,MAAM,EACNC,MAAM,EACNC,UAAU,EACVC,iBAAiB,EACjBC,YAAY,EACZC,UAAU,EACVC,mBAAmB,EACnBC,iBAAiB,EACjBC,kBAAkB,EAClBC,WAAW,EACXC,GAAG,EACHC,SAAS,EACTC,aAAa,QACR,gCAAgC;AAOvC,SACEhB,GAAG,EACHC,GAAG,EACHC,QAAQ,EACRC,QAAQ,EACRT,CAAC,EACDJ,UAAU,EACVc,MAAM,EACNC,MAAM,EACNV,KAAK,EACLC,eAAe,EACfC,gBAAgB,EAChBC,SAAS,EACTQ,UAAU,EACVE,YAAY,EACZD,iBAAiB,EACjBR,SAAS,EACTY,iBAAiB,EACjBF,UAAU,EACVC,mBAAmB,EACnBE,kBAAkB,EAIlBE,GAAG,EACHC,SAAS,EACTC,aAAa,EACbH,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
export default function (babel, {
|
|
5
|
+
targetFile,
|
|
6
|
+
locales
|
|
7
|
+
}) {
|
|
8
|
+
const {
|
|
9
|
+
types: t
|
|
10
|
+
} = babel;
|
|
11
|
+
const targetFilePath = targetFile;
|
|
12
|
+
console.log('plugin', targetFilePath);
|
|
13
|
+
return {
|
|
14
|
+
name: 'gt-react-native/plugin',
|
|
15
|
+
visitor: {
|
|
16
|
+
Program(programPath, state) {
|
|
17
|
+
const currentFilePath = path.resolve(state.filename || state.file.opts.filename || '');
|
|
18
|
+
if (!targetFilePath || currentFilePath !== path.resolve(targetFilePath)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const imports = ['@formatjs/intl-getcanonicallocales/polyfill', '@formatjs/intl-locale/polyfill', '@formatjs/intl-displaynames/polyfill', '@formatjs/intl-listformat/polyfill', '@formatjs/intl-pluralrules/polyfill-force',
|
|
22
|
+
// https://github.com/formatjs/formatjs/issues/4463
|
|
23
|
+
'@formatjs/intl-numberformat/polyfill', '@formatjs/intl-relativetimeformat/polyfill', '@formatjs/intl-datetimeformat/polyfill', '@formatjs/intl-datetimeformat/add-all-tz', ...locales.flatMap(locale => [`@formatjs/intl-displaynames/locale-data/${locale}`, `@formatjs/intl-listformat/locale-data/${locale}`, `@formatjs/intl-pluralrules/locale-data/${locale}`, `@formatjs/intl-numberformat/locale-data/${locale}`, `@formatjs/intl-relativetimeformat/locale-data/${locale}`, `@formatjs/intl-datetimeformat/locale-data/${locale}`])];
|
|
24
|
+
const existingImports = new Set();
|
|
25
|
+
programPath.node.body.forEach(node => {
|
|
26
|
+
if (t.isImportDeclaration(node) && typeof node.source.value === 'string' && imports.includes(node.source.value)) {
|
|
27
|
+
existingImports.add(node.source.value);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const importsToAdd = imports.filter(imp => !existingImports.has(imp));
|
|
31
|
+
if (importsToAdd.length > 0) {
|
|
32
|
+
const newImports = importsToAdd.map(importPath => t.importDeclaration([], t.stringLiteral(importPath)));
|
|
33
|
+
programPath.node.body.unshift(...newImports);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["path","babel","targetFile","locales","types","t","targetFilePath","console","log","name","visitor","Program","programPath","state","currentFilePath","resolve","filename","file","opts","imports","flatMap","locale","existingImports","Set","node","body","forEach","isImportDeclaration","source","value","includes","add","importsToAdd","filter","imp","has","length","newImports","map","importPath","importDeclaration","stringLiteral","unshift"],"sourceRoot":"../../src","sources":["plugin.ts"],"mappings":";;AAAA,OAAO,KAAKA,IAAI,MAAM,MAAM;AAQ5B,eAAe,UACbC,KAA8B,EAC9B;EAAEC,UAAU;EAAEC;AAAuB,CAAC,EAC3B;EACX,MAAM;IAAEC,KAAK,EAAEC;EAAE,CAAC,GAAGJ,KAAK;EAC1B,MAAMK,cAAc,GAAGJ,UAAU;EAEjCK,OAAO,CAACC,GAAG,CAAC,QAAQ,EAAEF,cAAc,CAAC;EAErC,OAAO;IACLG,IAAI,EAAE,wBAAwB;IAC9BC,OAAO,EAAE;MACPC,OAAOA,CAACC,WAAW,EAAEC,KAAK,EAAE;QAC1B,MAAMC,eAAe,GAAGd,IAAI,CAACe,OAAO,CAClCF,KAAK,CAACG,QAAQ,IAAIH,KAAK,CAACI,IAAI,CAACC,IAAI,CAACF,QAAQ,IAAI,EAChD,CAAC;QAED,IACE,CAACV,cAAc,IACfQ,eAAe,KAAKd,IAAI,CAACe,OAAO,CAACT,cAAc,CAAC,EAChD;UACA;QACF;QAEA,MAAMa,OAAO,GAAG,CACd,6CAA6C,EAC7C,gCAAgC,EAChC,sCAAsC,EACtC,oCAAoC,EACpC,2CAA2C;QAAE;QAC7C,sCAAsC,EACtC,4CAA4C,EAC5C,wCAAwC,EACxC,0CAA0C,EAC1C,GAAGhB,OAAO,CAACiB,OAAO,CAAEC,MAAM,IAAK,CAC7B,2CAA2CA,MAAM,EAAE,EACnD,yCAAyCA,MAAM,EAAE,EACjD,0CAA0CA,MAAM,EAAE,EAClD,2CAA2CA,MAAM,EAAE,EACnD,iDAAiDA,MAAM,EAAE,EACzD,6CAA6CA,MAAM,EAAE,CACtD,CAAC,CACH;QAED,MAAMC,eAAe,GAAG,IAAIC,GAAG,CAAS,CAAC;QACzCX,WAAW,CAACY,IAAI,CAACC,IAAI,CAACC,OAAO,CAAEF,IAAI,IAAK;UACtC,IACEnB,CAAC,CAACsB,mBAAmB,CAACH,IAAI,CAAC,IAC3B,OAAOA,IAAI,CAACI,MAAM,CAACC,KAAK,KAAK,QAAQ,IACrCV,OAAO,CAACW,QAAQ,CAACN,IAAI,CAACI,MAAM,CAACC,KAAK,CAAC,EACnC;YACAP,eAAe,CAACS,GAAG,CAACP,IAAI,CAACI,MAAM,CAACC,KAAK,CAAC;UACxC;QACF,CAAC,CAAC;QAEF,MAAMG,YAAY,GAAGb,OAAO,CAACc,MAAM,CAAEC,GAAG,IAAK,CAACZ,eAAe,CAACa,GAAG,CAACD,GAAG,CAAC,CAAC;QAEvE,IAAIF,YAAY,CAACI,MAAM,GAAG,CAAC,EAAE;UAC3B,MAAMC,UAAU,GAAGL,YAAY,CAACM,GAAG,CAAEC,UAAU,IAC7ClC,CAAC,CAACmC,iBAAiB,CAAC,EAAE,EAAEnC,CAAC,CAACoC,aAAa,CAACF,UAAU,CAAC,CACrD,CAAC;UAED3B,WAAW,CAACY,IAAI,CAACC,IAAI,CAACiB,OAAO,CAAC,GAAGL,UAAU,CAAC;QAC9C;MACF;IACF;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -5,14 +5,13 @@ import { determineLocale, resolveAliasLocale } from 'generaltranslation';
|
|
|
5
5
|
import { libraryDefaultLocale } from 'generaltranslation/internal';
|
|
6
6
|
import { getNativeLocales } from "../../../utils/getNativeLocales.js";
|
|
7
7
|
import { nativeStoreGet, nativeStoreSet } from "../../../utils/nativeStore.js";
|
|
8
|
-
import { LOCALE_KEY } from "../../../utils/constants.js";
|
|
9
8
|
export function useDetermineLocale({
|
|
10
9
|
locale: _locale = '',
|
|
11
10
|
defaultLocale = libraryDefaultLocale,
|
|
12
11
|
locales = [],
|
|
13
12
|
localeCookieName = 'generaltranslation.locale',
|
|
14
|
-
ssr =
|
|
15
|
-
//
|
|
13
|
+
ssr = false,
|
|
14
|
+
// not relevant
|
|
16
15
|
customMapping
|
|
17
16
|
}) {
|
|
18
17
|
// resolve alias locale
|
|
@@ -34,7 +33,7 @@ export function useDetermineLocale({
|
|
|
34
33
|
const [locale, _setLocale] = useState(initializeLocale());
|
|
35
34
|
|
|
36
35
|
// Functions for setting internal locale state
|
|
37
|
-
const [setLocale,
|
|
36
|
+
const [setLocale, setLocaleWithoutPersist] = createSetLocale({
|
|
38
37
|
locale,
|
|
39
38
|
locales,
|
|
40
39
|
defaultLocale,
|
|
@@ -53,8 +52,8 @@ export function useDetermineLocale({
|
|
|
53
52
|
localeCookieName,
|
|
54
53
|
customMapping
|
|
55
54
|
});
|
|
56
|
-
|
|
57
|
-
}, [_locale, locale, locales, defaultLocale, localeCookieName, customMapping,
|
|
55
|
+
setLocaleWithoutPersist(newLocale);
|
|
56
|
+
}, [_locale, locale, locales, defaultLocale, localeCookieName, customMapping, setLocaleWithoutPersist]);
|
|
58
57
|
return [locale, setLocale];
|
|
59
58
|
}
|
|
60
59
|
|
|
@@ -73,6 +72,7 @@ function getNewLocale({
|
|
|
73
72
|
locale,
|
|
74
73
|
locales,
|
|
75
74
|
defaultLocale,
|
|
75
|
+
localeCookieName,
|
|
76
76
|
customMapping
|
|
77
77
|
}) {
|
|
78
78
|
// No change, return
|
|
@@ -81,7 +81,7 @@ function getNewLocale({
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
// Check for locale in native store
|
|
84
|
-
let storedLocale = nativeStoreGet(
|
|
84
|
+
let storedLocale = nativeStoreGet(localeCookieName);
|
|
85
85
|
if (storedLocale) {
|
|
86
86
|
storedLocale = resolveAliasLocale(storedLocale, customMapping);
|
|
87
87
|
}
|
|
@@ -104,7 +104,7 @@ function getNewLocale({
|
|
|
104
104
|
|
|
105
105
|
// if stored locale not valid, change it back to whatever we use for fallback
|
|
106
106
|
if (storedLocale && storedLocale !== newLocale) {
|
|
107
|
-
nativeStoreSet(
|
|
107
|
+
nativeStoreSet(localeCookieName, newLocale);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
// return new locale
|
|
@@ -115,10 +115,12 @@ function createSetLocale({
|
|
|
115
115
|
locales,
|
|
116
116
|
defaultLocale,
|
|
117
117
|
_setLocale,
|
|
118
|
+
localeCookieName,
|
|
118
119
|
customMapping
|
|
119
120
|
}) {
|
|
120
121
|
locale = resolveAliasLocale(locale, customMapping);
|
|
121
|
-
|
|
122
|
+
// Just update the internal state, don't persist it
|
|
123
|
+
const setLocaleWithoutPersist = newLocale => {
|
|
122
124
|
// validate locale
|
|
123
125
|
const validatedLocale = resolveAliasLocale(determineLocale(newLocale, locales, customMapping) || locale || defaultLocale, customMapping);
|
|
124
126
|
if (validatedLocale !== newLocale) {
|
|
@@ -128,13 +130,13 @@ function createSetLocale({
|
|
|
128
130
|
_setLocale(validatedLocale);
|
|
129
131
|
return validatedLocale;
|
|
130
132
|
};
|
|
131
|
-
// update locale and
|
|
133
|
+
// update locale and persist it in native store
|
|
132
134
|
const setLocale = newLocale => {
|
|
133
135
|
newLocale = resolveAliasLocale(newLocale, customMapping);
|
|
134
|
-
|
|
135
|
-
const validatedLocale =
|
|
136
|
-
nativeStoreSet(
|
|
136
|
+
setLocaleWithoutPersist(newLocale);
|
|
137
|
+
const validatedLocale = setLocaleWithoutPersist(newLocale);
|
|
138
|
+
nativeStoreSet(localeCookieName, validatedLocale);
|
|
137
139
|
};
|
|
138
|
-
return [setLocale,
|
|
140
|
+
return [setLocale, setLocaleWithoutPersist];
|
|
139
141
|
}
|
|
140
142
|
//# sourceMappingURL=useDetermineLocale.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useState","determineLocale","resolveAliasLocale","libraryDefaultLocale","getNativeLocales","nativeStoreGet","nativeStoreSet","
|
|
1
|
+
{"version":3,"names":["useEffect","useState","determineLocale","resolveAliasLocale","libraryDefaultLocale","getNativeLocales","nativeStoreGet","nativeStoreSet","useDetermineLocale","locale","_locale","defaultLocale","locales","localeCookieName","ssr","customMapping","map","initializeLocale","result","getNewLocale","_setLocale","setLocale","setLocaleWithoutPersist","createSetLocale","newLocale","storedLocale","preferredLocales","length","l","validatedLocale","console","warn"],"sourceRoot":"../../../../../src","sources":["provider/hooks/locale/useDetermineLocale.ts"],"mappings":"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","ignoreList":[]}
|