Skip to content

Commit 489a576

Browse files
committed
Merge branch 'release/v0.2.0'
2 parents bb630c0 + 4f7a001 commit 489a576

File tree

16 files changed

+657
-259
lines changed

16 files changed

+657
-259
lines changed

android/build.gradle

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apply plugin: 'com.android.library'
2+
3+
android {
4+
compileSdkVersion 23
5+
buildToolsVersion "23.0.1"
6+
7+
defaultConfig {
8+
minSdkVersion 16
9+
targetSdkVersion 22
10+
versionCode 1
11+
versionName "1.0"
12+
ndk {
13+
abiFilters "armeabi-v7a", "x86"
14+
}
15+
}
16+
}
17+
18+
dependencies {
19+
compile 'com.facebook.react:react-native:0.22.+'
20+
compile files('libs/twilioclient-android.jar')
21+
}

android/libs/twilioclient-android.jar

16.5 MB
Binary file not shown.

android/src/main/AndroidManifest.xml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2+
package="com.rogchap.react.modules.twilio">
3+
4+
<uses-permission android:name="android.permission.BLUETOOTH"/>
5+
<uses-permission android:name="android.permission.INTERNET"/>
6+
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
7+
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
8+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
9+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
10+
11+
</manifest>
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
package com.rogchap.react.modules.twilio;
2+
3+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
4+
import com.facebook.react.bridge.ReactApplicationContext;
5+
import com.facebook.react.bridge.ReactContext;
6+
import com.facebook.react.bridge.ReadableMap;
7+
import com.facebook.react.bridge.ReactMethod;
8+
9+
import com.twilio.client.Device;
10+
import com.twilio.client.Connection;
11+
import com.twilio.client.ConnectionListener;
12+
import com.twilio.client.Twilio;
13+
14+
import java.net.URL;
15+
import java.net.URLConnection;
16+
import java.io.InputStream;
17+
import java.io.InputStreamReader;
18+
import java.io.BufferedReader;
19+
import java.util.HashMap;
20+
import java.util.Map;
21+
22+
23+
public class TwilioModule extends ReactContextBaseJavaModule implements ConnectionListener {
24+
25+
private ReactContext _reactContext;
26+
private Device _phone;
27+
private Connection _connection;
28+
private Connection _pendingConnection;
29+
30+
public TwilioModule(ReactApplicationContext reactContext) {
31+
super(reactContext);
32+
_reactContext = reactContext;
33+
}
34+
35+
private void sendEvent(String eventName, @Nullable WritableMap params) {
36+
_reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
37+
.emit(eventName, params);
38+
}
39+
40+
@Override
41+
public String getName() {
42+
return "Twilio";
43+
}
44+
45+
@ReactMethod
46+
public void initWithTokenUrl(String tokenUrl) {
47+
StringBuilder sb = new StringBuilder();
48+
try {
49+
URLConnection conn = new URL(tokenUrl).openConnection();
50+
InputStream in = conn.getInputStream();
51+
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
52+
while ((line = reader.readLine()) != null) {
53+
sb.append(line);
54+
}
55+
} catch (Exception e) {
56+
Log.e(e.getMessage(), e);
57+
}
58+
initWithToken(sb.toString());
59+
}
60+
61+
@ReactMethod
62+
public void initWithToken(String token) {
63+
if (!Twilio.isInitialized()) {
64+
Twilio.initialize(getApplicationContext(), new Twilio.InitListener() {
65+
@Override
66+
public void onInitialized() {
67+
try {
68+
if (_phone == null) {
69+
_phone = Twilio.createDevice(capabilityToken, this);
70+
}
71+
} catch (Exception e) {
72+
Log.e(e.getMessage(), e);
73+
}
74+
}
75+
76+
@Override
77+
public void onError(Exception e) {
78+
Log.e(e.getMessage(), e);
79+
}
80+
});
81+
}
82+
}
83+
84+
@ReactMethod
85+
public void connect(ReadableMap params) {
86+
if (_phone != null) {
87+
_connection = _phone.connect(params, this);
88+
}
89+
}
90+
91+
@ReactMethod
92+
public void disconnect() {
93+
if (_connection != null) {
94+
_connection.disconnect();
95+
_connection = null;
96+
}
97+
}
98+
99+
@ReactMethod
100+
public void accept() {
101+
_pendingConnection.accept();
102+
_pendingConnection.setConnectionListener(this);
103+
_connection = _pendingConnection;
104+
_pendingConnection = null;
105+
}
106+
107+
@ReactMethod
108+
public void reject() {
109+
_pendingConnection.reject();
110+
}
111+
112+
@ReactMethod
113+
public void ignore() {
114+
_pendingConnection.ignore();
115+
}
116+
117+
@ReactMethod
118+
public void setMuted(Boolean isMuted) {
119+
if (_connection && _connection.getState() == Connection.State.CONNECTED) {
120+
_connection.setMuted(isMuted);
121+
}
122+
}
123+
124+
/* ConnectionListener */
125+
126+
@Override
127+
public void onConnecting(Connection connection) {
128+
sendEvent("connectionDidStartConnecting", connection.getParameters());
129+
}
130+
131+
@Override
132+
public void onConnected(Connection connection) {
133+
sendEvent("connectionDidConnect", connection.getParameters());
134+
}
135+
136+
@Override
137+
public void onDisconnected(Connection connection) {
138+
if (connection == _connection) {
139+
_connection = null;
140+
}
141+
if (connection == _pendingConnection) {
142+
_pendingConnection = null;
143+
}
144+
sendEvent("connectionDidDisconnect", connection.getParameters());
145+
}
146+
147+
@Override
148+
public void onDisconnected(Connection connection, int errorCode, String errorMessage) {
149+
Map errors = new HashMap();
150+
errors.put("err", errorMessage);
151+
sendEvent("connectionDidFail", errors);
152+
}
153+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.rogchap.react.modules.twilio;
2+
3+
import com.facebook.react.ReactPackage;
4+
import com.facebook.react.bridge.ReactApplicationContext;
5+
import com.facebook.react.bridge.NativeModule;
6+
import com.facebook.react.bridge.JavaScriptModule;
7+
import com.facebook.react.uimanager.ViewManager;
8+
9+
import java.util.Arrays;
10+
import java.util.List;
11+
import java.util.Collections;
12+
13+
public class TwilioPackage implements ReactPackage {
14+
15+
@Override
16+
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
17+
return Arrays.<NativeModule>asList(
18+
new TwilioModule(reactContext)
19+
);
20+
}
21+
22+
@Override
23+
public List<Class<? extends JavaScriptModule>> createJSModules() {
24+
return Collections.emptyList();
25+
}
26+
27+
@Override
28+
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
29+
return Arrays.asList();
30+
}
31+
}

ios/RCTTwilio.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,7 @@
298298
ONLY_ACTIVE_ARCH = YES;
299299
OTHER_CFLAGS = "-fembed-bitcode";
300300
SDKROOT = iphoneos;
301+
SKIP_INSTALL = YES;
301302
};
302303
name = Debug;
303304
};
@@ -334,6 +335,7 @@
334335
MTL_ENABLE_DEBUG_INFO = NO;
335336
OTHER_CFLAGS = "-fembed-bitcode";
336337
SDKROOT = iphoneos;
338+
SKIP_INSTALL = YES;
337339
VALIDATE_PRODUCT = YES;
338340
};
339341
name = Release;

0 commit comments

Comments
 (0)