Skip to content

Commit 4fa242b

Browse files
committed
feat: updated replication config screen with result messages
1 parent b16a91d commit 4fa242b

File tree

18 files changed

+228
-96
lines changed

18 files changed

+228
-96
lines changed

expo-example/android/app/build.gradle

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,27 @@ apply plugin: "com.facebook.react"
44

55
def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath()
66

7+
static def versionToNumber(major, minor, patch) {
8+
return patch * 100 + minor * 10000 + major * 1000000
9+
}
10+
11+
def getRNVersion() {
12+
def version = providers.exec {
13+
workingDir(projectDir)
14+
commandLine("node", "-e", "console.log(require('react-native/package.json').version);")
15+
}.standardOutput.asText.get().trim()
16+
17+
def coreVersion = version.split("-")[0]
18+
def (major, minor, patch) = coreVersion.tokenize('.').collect { it.toInteger() }
19+
20+
return versionToNumber(
21+
major,
22+
minor,
23+
patch
24+
)
25+
}
26+
def rnVersion = getRNVersion()
27+
728
/**
829
* This is the configuration block to customize your React Native Android app.
930
* By default you don't need to apply any configuration, just uncomment the lines you need.
@@ -57,6 +78,11 @@ react {
5778
//
5879
// The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map"
5980
// hermesFlags = ["-O", "-output-source-map"]
81+
82+
if (rnVersion >= versionToNumber(0, 75, 0)) {
83+
/* Autolinking */
84+
autolinkLibrariesWithApp()
85+
}
6086
}
6187

6288
/**
@@ -169,5 +195,7 @@ dependencies {
169195
}
170196
}
171197

172-
apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), "../native_modules.gradle");
173-
applyNativeModulesAppBuildGradle(project)
198+
if (rnVersion < versionToNumber(0, 75, 0)) {
199+
apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), "../native_modules.gradle");
200+
applyNativeModulesAppBuildGradle(project)
201+
}

expo-example/android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@ allprojects {
3939
maven { url 'https://www.jitpack.io' }
4040
}
4141
}
42-
apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"apply from: "../../android/build.gradle"
42+
apply from: "../../android/build.gradle"
-9 Bytes
Binary file not shown.

expo-example/android/gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2+
3+
plugins {
4+
kotlin("jvm") version "1.9.24"
5+
id("java-gradle-plugin")
6+
}
7+
8+
repositories {
9+
mavenCentral()
10+
}
11+
12+
gradlePlugin {
13+
plugins {
14+
create("reactSettingsPlugin") {
15+
id = "com.facebook.react.settings"
16+
implementationClass = "expo.plugins.ReactSettingsPlugin"
17+
}
18+
}
19+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package expo.plugins
2+
3+
import org.gradle.api.Plugin
4+
import org.gradle.api.initialization.Settings
5+
6+
class ReactSettingsPlugin : Plugin<Settings> {
7+
override fun apply(settings: Settings) {
8+
// Do nothing, just register the plugin.
9+
}
10+
}

expo-example/android/settings.gradle

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,49 @@
1+
pluginManagement {
2+
def version = providers.exec {
3+
commandLine("node", "-e", "console.log(require('react-native/package.json').version);")
4+
}.standardOutput.asText.get().trim()
5+
def (_, reactNativeMinor, reactNativePatch) = version.split("-")[0].tokenize('.').collect { it.toInteger() }
6+
7+
includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json')"].execute(null, rootDir).text.trim()).getParentFile().toString())
8+
if(reactNativeMinor == 74 && reactNativePatch <= 3){
9+
includeBuild("react-settings-plugin")
10+
}
11+
}
12+
13+
plugins { id("com.facebook.react.settings") }
14+
15+
def getRNMinorVersion() {
16+
def version = providers.exec {
17+
commandLine("node", "-e", "console.log(require('react-native/package.json').version);")
18+
}.standardOutput.asText.get().trim()
19+
20+
def coreVersion = version.split("-")[0]
21+
def (major, minor, patch) = coreVersion.tokenize('.').collect { it.toInteger() }
22+
23+
return minor
24+
}
25+
26+
if (getRNMinorVersion() >= 75) {
27+
extensions.configure(com.facebook.react.ReactSettingsExtension) { ex ->
28+
if (System.getenv('EXPO_UNSTABLE_CORE_AUTOLINKING') == '1') {
29+
println('\u001B[32mUsing expo-modules-autolinking as core autolinking source\u001B[0m')
30+
def command = [
31+
'node',
32+
'--no-warnings',
33+
'--eval',
34+
'require(require.resolve(\'expo-modules-autolinking\', { paths: [require.resolve(\'expo/package.json\')] }))(process.argv.slice(1))',
35+
'react-native-config',
36+
'--json',
37+
'--platform',
38+
'android'
39+
].toList()
40+
ex.autolinkLibrariesFromCommand(command)
41+
} else {
42+
ex.autolinkLibrariesFromCommand()
43+
}
44+
}
45+
}
46+
147
rootProject.name = 'expo-example'
248

349
dependencyResolutionManagement {
@@ -11,8 +57,10 @@ dependencyResolutionManagement {
1157
apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle");
1258
useExpoModules()
1359

14-
apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), "../native_modules.gradle");
15-
applyNativeModulesSettingsGradle(settings)
60+
if (getRNMinorVersion() < 75) {
61+
apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim(), "../native_modules.gradle");
62+
applyNativeModulesSettingsGradle(settings)
63+
}
1664

1765
include ':app'
1866
includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json', { paths: [require.resolve('react-native/package.json')] })"].execute(null, rootDir).text.trim()).getParentFile())

expo-example/app/replication/config.tsx

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
import React, { useState } from 'react';
2-
import defaultCollection from '@/service/collection/default';
32
import { Database } from 'cbl-reactnative';
4-
import { SafeAreaView, ScrollView, Text } from 'react-native';
3+
import { SafeAreaView, ScrollView, StyleSheet, Text } from 'react-native';
54
import { useStyleScheme } from '@/components/Themed/Themed';
65
import ReplicatorConfigGeneralForm from '@/components/ReplicationConfigGeneralForm/ReplicatorConfigGeneralForm';
76
import ReplicatorAuthenticationForm from '@/components/ReplicatorAuthenticationForm/ReplicatorAuthenticationForm';
7+
import ReplicatorConfigCollectionForm from '@/components/ReplicationConfigCollectionForm/ReplicatorConfigCollectionForm';
8+
import ResultListView from '@/components/ResultsListView/ResultsListView';
9+
import { useNavigation } from '@react-navigation/native';
10+
import { useRouter } from 'expo-router';
11+
import useNavigationBarTitleOption from '@/hooks/useNativgationBarTitle';
812

913
export default function ReplicationConfigCreateScreen() {
14+
const navigation = useNavigation();
15+
useNavigationBarTitleOption('Add Replicator Config', navigation);
1016
//general form
1117
const [replicatorType, setReplicatorType] = useState<string>('');
1218
const [connectionString, setConnectionString] = useState<string>('');
@@ -26,6 +32,8 @@ export default function ReplicationConfigCreateScreen() {
2632
const [password, setPassword] = useState<string>('');
2733
const [sessionId, setSessionId] = useState<string>('');
2834
const [cookieName, setCookieName] = useState<string>('');
35+
//used for displaying result messages
36+
const [resultMessages, setResultMessages] = useState<string[]>([]);
2937

3038
function reset() {
3139
setConnectionString('');
@@ -45,13 +53,14 @@ export default function ReplicationConfigCreateScreen() {
4553
setPassword('');
4654
setSessionId('');
4755
setCookieName('');
56+
setResultMessages([]);
4857
}
4958

5059
async function update(
5160
database: Database,
5261
scopeName: string,
5362
collections: string[]
54-
) {
63+
): Promise<void> {
5564
try {
5665
//const collection = await defaultCollection(database);
5766
//return [
@@ -62,11 +71,18 @@ export default function ReplicationConfigCreateScreen() {
6271
return [error.message];
6372
}
6473
}
74+
75+
function updateResultMessage(messages: string[]) {}
6576
const styles = useStyleScheme();
6677

6778
return (
6879
<SafeAreaView style={styles.container}>
6980
<ScrollView>
81+
<ReplicatorConfigCollectionForm
82+
handleResetPressed={reset}
83+
handleUpdatePressed={update}
84+
updateResultMessage={updateResultMessage}
85+
/>
7086
<ReplicatorAuthenticationForm
7187
selectedAuthenticationType={selectedAuthenticationType}
7288
setSelectedAuthenticationType={setSelectedAuthenticationType}
@@ -98,7 +114,18 @@ export default function ReplicationConfigCreateScreen() {
98114
setAcceptOnlySelfSignedCerts={setAcceptOnlySelfSignedCerts}
99115
setReplicatorType={setReplicatorType}
100116
/>
117+
<ResultListView
118+
style={localStyles.resultMessages}
119+
useScrollView={false}
120+
messages={resultMessages}
121+
/>
101122
</ScrollView>
102123
</SafeAreaView>
103124
);
104125
}
126+
127+
const localStyles = StyleSheet.create({
128+
resultMessages: {
129+
paddingBottom: 40,
130+
},
131+
});

expo-example/app/replication/configListing.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import { AddIcon, Fab, Icon } from '@gluestack-ui/themed';
3-
import { Link, useRouter } from 'expo-router';
3+
import { useRouter } from 'expo-router';
44
import { SafeAreaView, StyleSheet, View } from 'react-native';
55
import { useNavigation } from '@react-navigation/native';
66
import { useStyleScheme } from '@/components/Themed/Themed';

expo-example/components/ReplicationConfigCollectionForm/ReplicatorConfigCollectionForm.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React, { useContext, useState } from 'react';
22
import { ReplicatorConfigCollectionFormProps } from '@/components/ReplicationConfigCollectionForm/ReplicatorConfigCollectionFormProps.type';
3-
import { Database } from '../../../lib/typescript/src';
3+
import { Database } from 'cbl-reactnative';
44
import DatabaseContext from '@/providers/DatabaseContext';
55
import DatabaseNameActionForm from '@/components/DatabaseNameActionForm/DatabaseNameActionForm';
66
import HeaderView from '@/components/HeaderView/HeaderView';

0 commit comments

Comments
 (0)