Skip to content

Commit 6c1f74e

Browse files
authored
chore: update example to React Native 0.63 (#53)
1 parent e7d4344 commit 6c1f74e

File tree

12 files changed

+725
-822
lines changed

12 files changed

+725
-822
lines changed

.flowconfig

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@ suppress_type=$FlowFixMeProps
5454
suppress_type=$FlowFixMeState
5555
suppress_type=$FlowFixMeEmpty
5656

57-
experimental.well_formed_exports=true
58-
experimental.types_first=true
5957
experimental.abstract_locations=true
6058

6159
[lints]
@@ -81,4 +79,4 @@ untyped-import
8179
untyped-type-import
8280

8381
[version]
84-
^0.127.0
82+
^0.129.0

example/App.js

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,19 @@
1111

1212
import * as React from 'react';
1313
import {ProgressBar} from '../js';
14-
import createReactClass from 'create-react-class';
14+
1515
import RNTesterBlock from './RNTesterBlock';
1616
import RNTesterPage from './RNTesterPage';
17-
import TimerMixin from 'react-timer-mixin';
18-
19-
const MovingBar = createReactClass({
20-
displayName: 'MovingBar',
21-
mixins: [TimerMixin],
22-
23-
getInitialState: function () {
24-
return {
25-
progress: 0,
26-
};
27-
},
28-
29-
componentDidMount: function () {
30-
this.setInterval(() => {
31-
var progress = (this.state.progress + 0.02) % 1;
32-
this.setState({progress: progress});
33-
}, 50);
34-
},
3517

36-
render: function () {
37-
return <ProgressBar progress={this.state.progress} {...this.props} />;
38-
},
39-
});
18+
const MovingBar = (props) => {
19+
const [progress, setProgress] = React.useState(0);
20+
React.useEffect(() => {
21+
setInterval(() => {
22+
setProgress((p) => (p + 0.02) % 1);
23+
}, 50);
24+
}, []);
25+
return <ProgressBar progress={progress} {...props} />;
26+
};
4027

4128
const App: React.ComponentType<{}> = () => {
4229
return (

example/android/app/build.gradle

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,21 @@ android {
172172

173173
dependencies {
174174
implementation fileTree(dir: "libs", include: ["*.jar"])
175+
//noinspection GradleDynamicVersion
175176
implementation "com.facebook.react:react-native:+" // From node_modules
177+
// required for example
176178
implementation project(":@react-native-community_progress-bar-android")
179+
180+
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
181+
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
182+
exclude group:'com.facebook.fbjni'
183+
}
184+
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
185+
exclude group:'com.facebook.flipper'
186+
}
187+
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
188+
exclude group:'com.facebook.flipper'
189+
}
177190
if (enableHermes) {
178191
def hermesPath = "../../../node_modules/hermes-engine/android/";
179192
debugImplementation files(hermesPath + "hermes-debug.aar")

example/android/app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
<activity
1414
android:name=".MainActivity"
1515
android:label="@string/app_name"
16-
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
16+
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
17+
android:launchMode="singleTask"
1718
android:windowSoftInputMode="adjustResize">
1819
<intent-filter>
1920
<action android:name="android.intent.action.MAIN" />

example/android/app/src/main/java/com/androidprogressbar/MainApplication.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.facebook.react.PackageList;
66
import com.facebook.react.ReactApplication;
77
import com.facebook.react.ReactNativeHost;
8+
import com.facebook.react.ReactInstanceManager;
89
import com.facebook.react.ReactPackage;
910
import com.facebook.soloader.SoLoader;
1011
import com.reactnativecommunity.androidprogressbar.RNCProgressBarPackage;
@@ -45,23 +46,23 @@ public ReactNativeHost getReactNativeHost() {
4546
public void onCreate() {
4647
super.onCreate();
4748
SoLoader.init(this, /* native exopackage */ false);
48-
initializeFlipper(this); // Remove this line if you don't want Flipper enabled
49+
initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
4950
}
5051

5152
/**
5253
* Loads Flipper in React Native templates.
5354
*
5455
* @param context
5556
*/
56-
private static void initializeFlipper(Context context) {
57+
private static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
5758
if (BuildConfig.DEBUG) {
5859
try {
5960
/*
6061
* We use reflection here to pick up the class that initializes Flipper, since
6162
* Flipper library is not available in release mode
6263
*/
63-
Class<?> aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper");
64-
aClass.getMethod("initializeFlipper", Context.class).invoke(null, context);
64+
Class<?> aClass = Class.forName("com.androidprogressbar.ReactNativeFlipper");
65+
aClass.getMethod("initializeFlipper", Context.class).invoke(null, context, reactInstanceManager);
6566
} catch (ClassNotFoundException e) {
6667
e.printStackTrace();
6768
} catch (NoSuchMethodException e) {
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
/**
2+
* Copyright (c) Facebook, Inc. and its affiliates.
3+
*
4+
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
5+
* directory of this source tree.
6+
*/
7+
package com.androidprogressbar;
8+
9+
import android.content.Context;
10+
import com.facebook.flipper.android.AndroidFlipperClient;
11+
import com.facebook.flipper.android.utils.FlipperUtils;
12+
import com.facebook.flipper.core.FlipperClient;
13+
import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
14+
import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
15+
import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
16+
import com.facebook.flipper.plugins.inspector.DescriptorMapping;
17+
import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
18+
import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
19+
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
20+
import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
21+
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
22+
import com.facebook.react.ReactInstanceManager;
23+
import com.facebook.react.bridge.ReactContext;
24+
import com.facebook.react.modules.network.NetworkingModule;
25+
import okhttp3.OkHttpClient;
26+
27+
public class ReactNativeFlipper {
28+
public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
29+
if (FlipperUtils.shouldEnableFlipper(context)) {
30+
final FlipperClient client = AndroidFlipperClient.getInstance(context);
31+
32+
client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
33+
client.addPlugin(new ReactFlipperPlugin());
34+
client.addPlugin(new DatabasesFlipperPlugin(context));
35+
client.addPlugin(new SharedPreferencesFlipperPlugin(context));
36+
client.addPlugin(CrashReporterPlugin.getInstance());
37+
38+
NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39+
NetworkingModule.setCustomClientBuilder(new NetworkingModule.CustomClientBuilder() {
40+
@Override
41+
public void apply(OkHttpClient.Builder builder) {
42+
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
43+
}
44+
});
45+
client.addPlugin(networkFlipperPlugin);
46+
client.start();
47+
48+
// Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
49+
// Hence we run if after all native modules have been initialized
50+
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
51+
if (reactContext == null) {
52+
reactInstanceManager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
53+
@Override
54+
public void onReactContextInitialized(ReactContext reactContext) {
55+
reactInstanceManager.removeReactInstanceEventListener(this);
56+
reactContext.runOnNativeModulesQueueThread(new Runnable() {
57+
@Override
58+
public void run() {
59+
client.addPlugin(new FrescoFlipperPlugin());
60+
}
61+
});
62+
}
63+
});
64+
} else {
65+
client.addPlugin(new FrescoFlipperPlugin());
66+
}
67+
}
68+
}
69+
}

example/android/build.gradle

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22

33
buildscript {
44
ext {
5-
buildToolsVersion = "28.0.3"
5+
buildToolsVersion = "29.0.2"
66
minSdkVersion = 16
7-
compileSdkVersion = 28
8-
targetSdkVersion = 28
7+
compileSdkVersion = 29
8+
targetSdkVersion = 29
99
}
1010
repositories {
1111
google()
1212
jcenter()
1313
}
1414
dependencies {
15-
classpath("com.android.tools.build:gradle:3.4.2")
15+
classpath("com.android.tools.build:gradle:3.5.3")
1616

1717
// NOTE: Do not place your application dependencies here; they belong
1818
// in the individual module build.gradle files
@@ -33,6 +33,6 @@ allprojects {
3333

3434
google()
3535
jcenter()
36-
maven { url 'https://jitpack.io' }
36+
maven { url 'https://www.jitpack.io' }
3737
}
3838
}

example/android/gradle.properties

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,6 @@
1919

2020
android.useAndroidX=true
2121
android.enableJetifier=true
22+
23+
# Version of flipper SDK to use with React Native
24+
FLIPPER_VERSION=0.37.0
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

example/android/gradlew

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
# you may not use this file except in compliance with the License.
88
# You may obtain a copy of the License at
99
#
10-
# http://www.apache.org/licenses/LICENSE-2.0
10+
# https://www.apache.org/licenses/LICENSE-2.0
1111
#
1212
# Unless required by applicable law or agreed to in writing, software
1313
# distributed under the License is distributed on an "AS IS" BASIS,
@@ -125,8 +125,8 @@ if $darwin; then
125125
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
126126
fi
127127

128-
# For Cygwin, switch paths to Windows format before running java
129-
if $cygwin ; then
128+
# For Cygwin or MSYS, switch paths to Windows format before running java
129+
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
130130
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
131131
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
132132
JAVACMD=`cygpath --unix "$JAVACMD"`
@@ -154,19 +154,19 @@ if $cygwin ; then
154154
else
155155
eval `echo args$i`="\"$arg\""
156156
fi
157-
i=$((i+1))
157+
i=`expr $i + 1`
158158
done
159159
case $i in
160-
(0) set -- ;;
161-
(1) set -- "$args0" ;;
162-
(2) set -- "$args0" "$args1" ;;
163-
(3) set -- "$args0" "$args1" "$args2" ;;
164-
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
165-
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
166-
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
167-
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
168-
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
169-
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
160+
0) set -- ;;
161+
1) set -- "$args0" ;;
162+
2) set -- "$args0" "$args1" ;;
163+
3) set -- "$args0" "$args1" "$args2" ;;
164+
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
165+
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
166+
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
167+
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
168+
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
169+
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
170170
esac
171171
fi
172172

@@ -175,14 +175,9 @@ save () {
175175
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
176176
echo " "
177177
}
178-
APP_ARGS=$(save "$@")
178+
APP_ARGS=`save "$@"`
179179

180180
# Collect all arguments for the java command, following the shell quoting and substitution rules
181181
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
182182

183-
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
184-
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
185-
cd "$(dirname "$0")"
186-
fi
187-
188183
exec "$JAVACMD" "$@"

0 commit comments

Comments
 (0)