Skip to content

Commit 408069b

Browse files
Merge pull request #16 from gitamego/feat/update-expofp
update expofp ios
2 parents 5e51f8d + fbe152c commit 408069b

File tree

10 files changed

+95
-25
lines changed

10 files changed

+95
-25
lines changed

android/build.gradle

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,12 @@ dependencies {
9191
implementation "com.facebook.react:react-native:+"
9292
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
9393

94-
implementation 'com.expofp:common:4.6.2'
95-
implementation 'com.expofp:fplan:4.6.2'
94+
implementation 'com.expofp:common:4.9.6'
95+
implementation 'com.expofp:fplan:4.9.6'
9696

97-
implementation 'com.expofp:crowdconnected:4.6.2'
98-
implementation 'net.crowdconnected.android.core:android-core:1.5.1'
99-
implementation 'net.crowdconnected.android.ips:android-ips:1.5.1'
100-
implementation 'net.crowdconnected.android.geo:android-geo:1.5.1'
97+
implementation 'com.expofp:crowdconnected:4.9.6'
98+
implementation 'net.crowdconnected.android.core:android-core:2.0.0'
99+
implementation 'net.crowdconnected.android.ips:android-ips:2.0.0'
100+
implementation 'net.crowdconnected.android.geo:android-geo:2.0.0'
101101
}
102102

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.expofp
2+
3+
import com.facebook.react.bridge.NativeModule
4+
import com.facebook.react.bridge.ReactApplicationContext
5+
import com.facebook.react.bridge.ReactContext
6+
import com.facebook.react.bridge.ReactContextBaseJavaModule
7+
import com.facebook.react.bridge.ReactMethod
8+
import com.facebook.react.bridge.Promise
9+
import com.expofp.fplan.SharedFplanView
10+
import com.expofp.fplan.models.Settings
11+
import com.facebook.react.bridge.UiThreadUtil
12+
13+
class ExpofpModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
14+
override fun getName() = "ExpofpModule"
15+
16+
@ReactMethod
17+
fun preload(url: String, promise: Promise) {
18+
try {
19+
val context = this.reactApplicationContext.applicationContext
20+
UiThreadUtil.runOnUiThread {
21+
SharedFplanView.preload(url, Settings(), context)
22+
}
23+
promise.resolve(null)
24+
} catch (e: Exception) {
25+
promise.reject("PRELOAD_ERROR", e.message)
26+
}
27+
}
28+
}

android/src/main/java/com/expofp/ExpofpPackage.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.facebook.react.uimanager.ViewManager
77

88
class ExpofpPackage : ReactPackage {
99
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
10-
return emptyList()
10+
return listOf(ExpofpModule(reactContext)).toMutableList()
1111
}
1212

1313
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {

android/src/main/java/com/expofp/ExpofpViewManager.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,27 +14,26 @@ import com.expofp.common.GlobalLocationProvider
1414
import com.expofp.crowdconnected.CrowdConnectedProvider
1515
import com.expofp.crowdconnected.Mode
1616
import com.expofp.crowdconnected.Settings
17-
import com.expofp.fplan.FplanView
17+
import com.expofp.fplan.SharedFplanView
1818
import com.facebook.react.bridge.ReadableMap
1919
import com.facebook.react.uimanager.SimpleViewManager
2020
import com.facebook.react.uimanager.ThemedReactContext
2121
import com.facebook.react.uimanager.annotations.ReactProp
2222

23-
2423
class ExpofpViewManager : SimpleViewManager<View>() {
2524
private var reactContext: ThemedReactContext? = null
2625

2726
override fun getName() = "ExpofpView"
2827

2928
override fun createViewInstance(reactContext: ThemedReactContext): View {
3029
this.reactContext = reactContext
31-
var view = FplanView(reactContext)
30+
var view = SharedFplanView(reactContext)
3231

3332
return view;
3433
}
3534

3635
@ReactProp(name = "settings")
37-
fun setSettings(view: FplanView, settingsMap: ReadableMap?) {
36+
fun setSettings(view: SharedFplanView, settingsMap: ReadableMap?) {
3837
settingsMap?.let {
3938
var appKey = settingsMap.getString("appKey")
4039
val token = settingsMap.getString("token")
@@ -64,7 +63,7 @@ class ExpofpViewManager : SimpleViewManager<View>() {
6463
GlobalLocationProvider.init(locationProvider)
6564
GlobalLocationProvider.start()
6665
}
67-
view.init(it.getString("url") ?: "", com.expofp.fplan.models.Settings().withGlobalLocationProvider());
66+
view.load(it.getString("url") ?: "", com.expofp.fplan.models.Settings().withGlobalLocationProvider());
6867
}
6968
}
7069
}

ios/ExpofpModule-Bridging-Header.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#import <React/RCTBridgeModule.h>

ios/ExpofpModule.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
#import "React/RCTBridgeModule.h"
3+
4+
@interface RCT_EXTERN_MODULE(ExpofpModule, NSObject)
5+
RCT_EXTERN_METHOD(preload:(NSString *)url resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
6+
@end

ios/ExpofpModule.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import ExpoFpFplan
2+
import ExpoFpCommon
3+
import Foundation
4+
5+
@objc(ExpofpModule)
6+
class ExpofpModule: NSObject {
7+
8+
@objc static func requiresMainQueueSetup() -> Bool {
9+
return false
10+
}
11+
12+
@objc func preload(_ url: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
13+
SharedFplanView.preload(url, settings: Settings())
14+
resolve(nil)
15+
}
16+
}

ios/ExpofpViewManager.swift

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,7 @@ class ExpoFPViewProxy: UIView {
4343
if let appKey = settings["appKey"] as? String,
4444
let token = settings["token"] as? String,
4545
let secret = settings["secret"] as? String {
46-
let ccSettings = Settings(
47-
appKey,
48-
token,
49-
secret,
50-
Mode.IPS_AND_GPS
51-
);
46+
let ccSettings = Settings(appKey: appKey, token: token, secret: secret, mode: Mode.IPS_AND_GPS)
5247
if let onesignalUserId = settings["oneSignalUserId"] as? String {
5348
ccSettings.addAlias("onesignal_user_id", onesignalUserId)
5449
}
@@ -76,7 +71,7 @@ class ExpoFPDataStore: ObservableObject {
7671
struct ExpoFP: View {
7772
@EnvironmentObject var dataStore: ExpoFPDataStore
7873

79-
var fplanView = FplanView()
74+
var fplanView = SharedFplanView()
8075

8176
@State private var loadedUrl: NSString? = nil
8277

react-native-expofp.podspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ Pod::Spec.new do |s|
1212
s.authors = package["author"]
1313

1414
s.platforms = { :ios => "15.0" }
15-
s.source = { :git => "https://github.com/artieeg/react-native-expofp.git", :tag => "#{s.version}" }
15+
s.source = { :git => "https://github.com/gitamego/react-native-expofp.git", :tag => "#{s.version}" }
1616

1717
s.source_files = "ios/**/*.{h,m,mm,swift}"
1818

19-
s.dependency "ExpoFpFplan", "4.7.1"
20-
s.dependency "ExpoFpCrowdConnected", "4.7.1"
19+
s.dependency "ExpoFpFplan", "4.8.15"
20+
s.dependency "ExpoFpCrowdConnected", "4.8.15"
2121

2222
# Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
2323
# See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.

src/index.tsx

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ import {
33
UIManager,
44
Platform,
55
type ViewStyle,
6+
NativeModules,
7+
TurboModuleRegistry,
8+
TurboModule,
69
} from 'react-native';
710

811
const LINKING_ERROR =
@@ -15,11 +18,11 @@ type ExpofpProps = {
1518
style: ViewStyle;
1619
settings: {
1720
url: string;
18-
oneSignalUserId?: string,
19-
appKey?: string
21+
oneSignalUserId?: string;
22+
appKey?: string;
2023
token?: string;
2124
secret?: string;
22-
}
25+
};
2326
};
2427

2528
const ComponentName = 'ExpofpView';
@@ -30,3 +33,25 @@ export const ExpofpView =
3033
: () => {
3134
throw new Error(LINKING_ERROR);
3235
};
36+
37+
interface ExpofpModule extends TurboModule {
38+
preload(url: string): Promise<void>;
39+
}
40+
41+
export const preload = async (url: string): Promise<void> => {
42+
if (Platform.OS === 'ios') {
43+
const Module = TurboModuleRegistry.get<ExpofpModule>('ExpofpModule');
44+
if (!Module) {
45+
throw new Error(LINKING_ERROR);
46+
}
47+
return Module.preload(url);
48+
}
49+
if (Platform.OS === 'android') {
50+
const Module = NativeModules.ExpofpModule;
51+
if (!Module) {
52+
throw new Error(LINKING_ERROR);
53+
}
54+
return Module.preload(url);
55+
}
56+
throw new Error('Unsupported platform');
57+
};

0 commit comments

Comments
 (0)