jazz-react-native 0.9.23 → 0.10.0
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +22 -0
- package/dist/ReactNativeContextManager.js +38 -0
- package/dist/ReactNativeContextManager.js.map +1 -0
- package/dist/auth/DemoAuthUI.js +45 -101
- package/dist/auth/DemoAuthUI.js.map +1 -1
- package/dist/auth/auth.js +1 -0
- package/dist/auth/auth.js.map +1 -1
- package/dist/hooks.js +1 -1
- package/dist/hooks.js.map +1 -1
- package/dist/platform.js +120 -40
- package/dist/platform.js.map +1 -1
- package/dist/provider.js +39 -64
- package/dist/provider.js.map +1 -1
- package/package.json +6 -6
- package/src/ReactNativeContextManager.ts +70 -0
- package/src/auth/DemoAuthUI.tsx +71 -165
- package/src/auth/auth.ts +1 -0
- package/src/hooks.tsx +9 -1
- package/src/platform.ts +161 -86
- package/src/provider.tsx +66 -89
- package/dist/auth/DemoAuthMethod.js +0 -182
- package/dist/auth/DemoAuthMethod.js.map +0 -1
- package/dist/createWebSocketPeerWithReconnection.js +0 -58
- package/dist/createWebSocketPeerWithReconnection.js.map +0 -1
- package/dist/tests/DemoAuthMethod.test.js +0 -207
- package/dist/tests/DemoAuthMethod.test.js.map +0 -1
- package/dist/tests/createWebSocketPeerWithReconnection.test.js +0 -106
- package/dist/tests/createWebSocketPeerWithReconnection.test.js.map +0 -1
- package/src/auth/DemoAuthMethod.ts +0 -259
- package/src/createWebSocketPeerWithReconnection.ts +0 -79
- package/src/tests/DemoAuthMethod.test.ts +0 -309
- package/src/tests/createWebSocketPeerWithReconnection.test.ts +0 -163
package/.turbo/turbo-build.log
CHANGED
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,27 @@
|
|
1
1
|
# jazz-browser
|
2
2
|
|
3
|
+
## 0.10.0
|
4
|
+
|
5
|
+
### Minor Changes
|
6
|
+
|
7
|
+
- 498954f: Introducing the new auth system!
|
8
|
+
|
9
|
+
### Patch Changes
|
10
|
+
|
11
|
+
- Updated dependencies [b426342]
|
12
|
+
- Updated dependencies [498954f]
|
13
|
+
- Updated dependencies [8217981]
|
14
|
+
- Updated dependencies [d42c2aa]
|
15
|
+
- Updated dependencies [dd03464]
|
16
|
+
- Updated dependencies [b426342]
|
17
|
+
- Updated dependencies [ac3d9fa]
|
18
|
+
- Updated dependencies [610543c]
|
19
|
+
- cojson@0.10.0
|
20
|
+
- cojson-transport-ws@0.10.0
|
21
|
+
- jazz-react-core@0.10.0
|
22
|
+
- jazz-tools@0.10.0
|
23
|
+
- cojson-storage-rn-sqlite@0.8.60
|
24
|
+
|
3
25
|
## 0.9.23
|
4
26
|
|
5
27
|
### Patch Changes
|
@@ -0,0 +1,38 @@
|
|
1
|
+
import { JazzContextManager, } from "jazz-tools";
|
2
|
+
import { createJazzReactNativeContext, createJazzReactNativeGuestContext, } from "./platform.js";
|
3
|
+
export class ReactNativeContextManager extends JazzContextManager {
|
4
|
+
async createContext(props, authProps) {
|
5
|
+
let currentContext;
|
6
|
+
// We need to store the props here to block the double effect execution
|
7
|
+
// on React. Otherwise when calling propsChanged this.props is undefined.
|
8
|
+
this.props = props;
|
9
|
+
if (props.guestMode) {
|
10
|
+
currentContext = await createJazzReactNativeGuestContext({
|
11
|
+
sync: props.sync,
|
12
|
+
storage: props.storage,
|
13
|
+
authSecretStorage: this.authSecretStorage,
|
14
|
+
});
|
15
|
+
}
|
16
|
+
else {
|
17
|
+
currentContext = await createJazzReactNativeContext({
|
18
|
+
sync: props.sync,
|
19
|
+
storage: props.storage,
|
20
|
+
AccountSchema: props.AccountSchema,
|
21
|
+
credentials: authProps?.credentials,
|
22
|
+
newAccountProps: authProps?.newAccountProps,
|
23
|
+
defaultProfileName: props.defaultProfileName,
|
24
|
+
authSecretStorage: this.authSecretStorage,
|
25
|
+
});
|
26
|
+
}
|
27
|
+
this.updateContext(props, currentContext);
|
28
|
+
}
|
29
|
+
propsChanged(props) {
|
30
|
+
if (!this.props) {
|
31
|
+
return true;
|
32
|
+
}
|
33
|
+
return (this.props.sync.when !== props.sync.when ||
|
34
|
+
this.props.sync.peer !== props.sync.peer ||
|
35
|
+
this.props.guestMode !== props.guestMode);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
//# sourceMappingURL=ReactNativeContextManager.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"ReactNativeContextManager.js","sourceRoot":"","sources":["../src/ReactNativeContextManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,GAGnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAEL,4BAA4B,EAC5B,iCAAiC,GAClC,MAAM,eAAe,CAAC;AAYvB,MAAM,OAAO,yBAEX,SAAQ,kBAAqD;IAC7D,KAAK,CAAC,aAAa,CACjB,KAAmC,EACnC,SAAuC;QAEvC,IAAI,cAAc,CAAC;QAEnB,uEAAuE;QACvE,yEAAyE;QACzE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,cAAc,GAAG,MAAM,iCAAiC,CAAC;gBACvD,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;aAC1C,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,MAAM,4BAA4B,CAAM;gBACvD,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,WAAW,EAAE,SAAS,EAAE,WAAW;gBACnC,eAAe,EAAE,SAAS,EAAE,eAAe;gBAC3C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;gBAC5C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC5C,CAAC;IAED,YAAY,CAAC,KAAmC;QAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI;YACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI;YACxC,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CACzC,CAAC;IACJ,CAAC;CACF"}
|
package/dist/auth/DemoAuthUI.js
CHANGED
@@ -1,120 +1,64 @@
|
|
1
|
-
import React, {
|
1
|
+
import React, { useState } from "react";
|
2
2
|
import { StyleSheet, Text, TextInput, TouchableOpacity, View, useColorScheme, } from "react-native";
|
3
|
-
|
4
|
-
/** @category Auth Providers */
|
5
|
-
export function useDemoAuth({ seedAccounts, store, } = {}) {
|
6
|
-
const [state, setState] = useState({
|
7
|
-
state: "loading",
|
8
|
-
errors: [],
|
9
|
-
});
|
10
|
-
const [authMethod, setAuthMethod] = useState(null);
|
11
|
-
const authMethodPromise = useMemo(() => {
|
12
|
-
return RNDemoAuth.init({
|
13
|
-
onReady: async ({ signUp, getExistingUsers, logInAs }) => {
|
14
|
-
const existingUsers = await getExistingUsers();
|
15
|
-
setState((current) => ({
|
16
|
-
state: "ready",
|
17
|
-
signUp,
|
18
|
-
existingUsers,
|
19
|
-
logInAs,
|
20
|
-
errors: current.errors,
|
21
|
-
}));
|
22
|
-
},
|
23
|
-
onSignedIn: ({ logOut }) => {
|
24
|
-
setState({ state: "signedIn", logOut, errors: [] });
|
25
|
-
},
|
26
|
-
onError: (error) => {
|
27
|
-
setState((current) => ({
|
28
|
-
...current,
|
29
|
-
errors: [error.toString()],
|
30
|
-
}));
|
31
|
-
},
|
32
|
-
}, seedAccounts, store);
|
33
|
-
}, [seedAccounts, state.errors]); // We reset the auth method when getting an error
|
34
|
-
useEffect(() => {
|
35
|
-
async function init() {
|
36
|
-
try {
|
37
|
-
const auth = await authMethodPromise;
|
38
|
-
setAuthMethod(auth);
|
39
|
-
}
|
40
|
-
catch (e) {
|
41
|
-
const err = e;
|
42
|
-
setState((current) => ({
|
43
|
-
...current,
|
44
|
-
errors: [...current.errors, err.toString()],
|
45
|
-
}));
|
46
|
-
}
|
47
|
-
}
|
48
|
-
if (authMethod)
|
49
|
-
return;
|
50
|
-
void init();
|
51
|
-
}, [seedAccounts]);
|
52
|
-
return [authMethod, state];
|
53
|
-
}
|
54
|
-
export const DemoAuthBasicUI = ({ appName, state, }) => {
|
3
|
+
export const DemoAuthBasicUI = ({ appName, auth, children, }) => {
|
55
4
|
const colorScheme = useColorScheme();
|
56
5
|
const darkMode = colorScheme === "dark";
|
57
6
|
const [username, setUsername] = useState("");
|
58
7
|
const [errorMessage, setErrorMessage] = useState(null);
|
59
8
|
const handleSignUp = () => {
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
}
|
65
|
-
else {
|
66
|
-
setErrorMessage(null);
|
67
|
-
state.signUp(username);
|
68
|
-
}
|
9
|
+
setErrorMessage(null);
|
10
|
+
auth.signUp(username).catch((error) => {
|
11
|
+
setErrorMessage(error.message);
|
12
|
+
});
|
69
13
|
};
|
14
|
+
const handleLogIn = (username) => {
|
15
|
+
setErrorMessage(null);
|
16
|
+
auth.logIn(username).catch((error) => {
|
17
|
+
setErrorMessage(error.message);
|
18
|
+
});
|
19
|
+
};
|
20
|
+
if (auth.state === "signedIn") {
|
21
|
+
return children;
|
22
|
+
}
|
70
23
|
return (<View style={[
|
71
24
|
styles.container,
|
72
25
|
darkMode ? styles.darkBackground : styles.lightBackground,
|
73
26
|
]}>
|
74
|
-
{
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
styles.headerText,
|
82
|
-
darkMode ? styles.darkText : styles.lightText,
|
83
|
-
]}>
|
84
|
-
{appName}
|
85
|
-
</Text>
|
27
|
+
<View style={styles.formContainer}>
|
28
|
+
<Text style={[
|
29
|
+
styles.headerText,
|
30
|
+
darkMode ? styles.darkText : styles.lightText,
|
31
|
+
]}>
|
32
|
+
{appName}
|
33
|
+
</Text>
|
86
34
|
|
87
|
-
|
88
|
-
{error}
|
89
|
-
</Text>))}
|
35
|
+
{errorMessage && <Text style={styles.errorText}>{errorMessage}</Text>}
|
90
36
|
|
91
|
-
|
37
|
+
<TextInput placeholder="Display name" value={username} onChangeText={setUsername} placeholderTextColor={darkMode ? "#fff" : "#000"} style={[
|
38
|
+
styles.textInput,
|
39
|
+
darkMode ? styles.darkInput : styles.lightInput,
|
40
|
+
]}/>
|
92
41
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
42
|
+
<TouchableOpacity onPress={handleSignUp} style={[
|
43
|
+
styles.button,
|
44
|
+
darkMode ? styles.darkButton : styles.lightButton,
|
45
|
+
]}>
|
46
|
+
<Text style={darkMode ? styles.darkButtonText : styles.lightButtonText}>
|
47
|
+
Sign Up as new account
|
48
|
+
</Text>
|
49
|
+
</TouchableOpacity>
|
97
50
|
|
98
|
-
|
99
|
-
|
100
|
-
|
51
|
+
<View style={styles.existingUsersContainer}>
|
52
|
+
{auth.existingUsers.map((user) => (<TouchableOpacity key={user} onPress={() => handleLogIn(user)} style={[
|
53
|
+
styles.existingUserButton,
|
54
|
+
darkMode ? styles.darkUserButton : styles.lightUserButton,
|
101
55
|
]}>
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
{state.existingUsers.map((user) => (<TouchableOpacity key={user} onPress={() => state.logInAs(user)} style={[
|
109
|
-
styles.existingUserButton,
|
110
|
-
darkMode ? styles.darkUserButton : styles.lightUserButton,
|
111
|
-
]}>
|
112
|
-
<Text style={darkMode ? styles.darkText : styles.lightText}>
|
113
|
-
Log In as "{user}"
|
114
|
-
</Text>
|
115
|
-
</TouchableOpacity>))}
|
116
|
-
</View>
|
117
|
-
</View>) : null}
|
56
|
+
<Text style={darkMode ? styles.darkText : styles.lightText}>
|
57
|
+
Log In as "{user}"
|
58
|
+
</Text>
|
59
|
+
</TouchableOpacity>))}
|
60
|
+
</View>
|
61
|
+
</View>
|
118
62
|
</View>);
|
119
63
|
};
|
120
64
|
const styles = StyleSheet.create({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DemoAuthUI.js","sourceRoot":"","sources":["../../src/auth/DemoAuthUI.tsx"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"DemoAuthUI.js","sourceRoot":"","sources":["../../src/auth/DemoAuthUI.tsx"],"names":[],"mappings":"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"}
|
package/dist/auth/auth.js
CHANGED
package/dist/auth/auth.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth/auth.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAE5D,cAAc,iBAAiB,CAAC;AAEhC,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC;IAE1D,uEAAuE;IACvE,OAAO,OAAO,CAAC,GAAG,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth/auth.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAE5D,cAAc,iBAAiB,CAAC;AAEhC,MAAM,UAAU,oBAAoB;IAClC,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC;IAE1D,uEAAuE;IACvE,OAAO,OAAO,CAAC,GAAG,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,4BAA4B,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC;KACxC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/hooks.js
CHANGED
@@ -2,7 +2,7 @@ import { useEffect } from "react";
|
|
2
2
|
import { createUseAccountHooks, useJazzContext } from "jazz-react-core";
|
3
3
|
import { parseInviteLink } from "jazz-tools";
|
4
4
|
import { Linking } from "react-native";
|
5
|
-
export { useCoState, experimental_useInboxSender } from "jazz-react-core";
|
5
|
+
export { useCoState, experimental_useInboxSender, useDemoAuth, usePassphraseAuth, useJazzContext, useAuthSecretStorage, useIsAuthenticated, } from "jazz-react-core";
|
6
6
|
export const { useAccount, useAccountOrGuest } = createUseAccountHooks();
|
7
7
|
export function useAcceptInvite({ invitedObjectSchema, onAccept, forValueHint, }) {
|
8
8
|
const context = useJazzContext();
|
package/dist/hooks.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAA6B,eAAe,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAA6B,eAAe,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EACL,UAAU,EACV,2BAA2B,EAC3B,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAC5C,qBAAqB,EAAqB,CAAC;AAE7C,MAAM,UAAU,eAAe,CAAoB,EACjD,mBAAmB,EACnB,QAAQ,EACR,YAAY,GAKb;IACC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,cAAc,GAAG,CAAC,EAAE,GAAG,EAAmB,EAAE,EAAE;YAClD,MAAM,MAAM,GAAG,eAAe,CAAI,GAAG,CAAC,CAAC;YACvC,IAAI,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,YAAY,EAAE,CAAC;gBAChD,OAAO,CAAC,EAAE;qBACP,YAAY,CACX,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,YAAY,EACnB,mBAAmB,CACpB;qBACA,IAAI,CAAC,GAAG,EAAE;oBACT,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAExE,KAAK,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,IAAI,GAAG;gBAAE,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,eAAe,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
package/dist/platform.js
CHANGED
@@ -1,16 +1,20 @@
|
|
1
1
|
import { SQLiteStorage } from "cojson-storage-rn-sqlite";
|
2
|
-
import { createInviteLink as baseCreateInviteLink, createJazzContext, } from "jazz-tools";
|
3
|
-
|
2
|
+
import { createInviteLink as baseCreateInviteLink, createAnonymousJazzContext, createJazzContext, } from "jazz-tools";
|
3
|
+
import NetInfo from "@react-native-community/netinfo";
|
4
|
+
import { WebSocketPeerWithReconnection } from "cojson-transport-ws";
|
4
5
|
import { PureJSCrypto } from "cojson/native";
|
5
|
-
import { createWebSocketPeerWithReconnection } from "./createWebSocketPeerWithReconnection.js";
|
6
6
|
import { ExpoSecureStoreAdapter } from "./storage/expo-secure-store-adapter.js";
|
7
7
|
import { KvStoreContext } from "./storage/kv-store-context.js";
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
}
|
8
|
+
class ReactNativeWebSocketPeerWithReconnection extends WebSocketPeerWithReconnection {
|
9
|
+
onNetworkChange(callback) {
|
10
|
+
return NetInfo.addEventListener((state) => callback(state.isConnected ?? false));
|
11
|
+
}
|
12
|
+
}
|
13
|
+
async function setupPeers(options) {
|
12
14
|
const CryptoProvider = options.CryptoProvider || PureJSCrypto;
|
13
|
-
const
|
15
|
+
const crypto = await CryptoProvider.create();
|
16
|
+
let node = undefined;
|
17
|
+
const peersToLoadFrom = [];
|
14
18
|
if (options.storage === "sqlite") {
|
15
19
|
const storage = await SQLiteStorage.asPeer({
|
16
20
|
filename: "jazz-storage",
|
@@ -18,40 +22,116 @@ export async function createJazzRNContext(options) {
|
|
18
22
|
});
|
19
23
|
peersToLoadFrom.push(storage);
|
20
24
|
}
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
auth: options.auth,
|
25
|
-
crypto: await CryptoProvider.create(),
|
25
|
+
if (options.sync.when === "never") {
|
26
|
+
return {
|
27
|
+
toggleNetwork: () => { },
|
26
28
|
peersToLoadFrom,
|
27
|
-
|
28
|
-
|
29
|
-
: await createJazzContext({
|
30
|
-
crypto: await CryptoProvider.create(),
|
31
|
-
peersToLoadFrom,
|
32
|
-
});
|
33
|
-
const node = "account" in context ? context.account._raw.core.node : context.agent.node;
|
34
|
-
return "account" in context
|
35
|
-
? {
|
36
|
-
me: context.account,
|
37
|
-
done: () => {
|
38
|
-
websocketPeer.done();
|
39
|
-
context.done();
|
40
|
-
},
|
41
|
-
logOut: () => {
|
42
|
-
context.logOut();
|
43
|
-
},
|
44
|
-
}
|
45
|
-
: {
|
46
|
-
guest: context.agent,
|
47
|
-
done: () => {
|
48
|
-
websocketPeer.done();
|
49
|
-
context.done();
|
50
|
-
},
|
51
|
-
logOut: () => {
|
52
|
-
context.logOut();
|
53
|
-
},
|
29
|
+
setNode: () => { },
|
30
|
+
crypto,
|
54
31
|
};
|
32
|
+
}
|
33
|
+
const wsPeer = new ReactNativeWebSocketPeerWithReconnection({
|
34
|
+
peer: options.sync.peer,
|
35
|
+
reconnectionTimeout: options.reconnectionTimeout,
|
36
|
+
addPeer: (peer) => {
|
37
|
+
if (node) {
|
38
|
+
node.syncManager.addPeer(peer);
|
39
|
+
}
|
40
|
+
else {
|
41
|
+
peersToLoadFrom.push(peer);
|
42
|
+
}
|
43
|
+
},
|
44
|
+
removePeer: (peer) => {
|
45
|
+
peersToLoadFrom.splice(peersToLoadFrom.indexOf(peer), 1);
|
46
|
+
},
|
47
|
+
});
|
48
|
+
function toggleNetwork(enabled) {
|
49
|
+
if (enabled) {
|
50
|
+
wsPeer.enable();
|
51
|
+
}
|
52
|
+
else {
|
53
|
+
wsPeer.disable();
|
54
|
+
}
|
55
|
+
}
|
56
|
+
function setNode(value) {
|
57
|
+
node = value;
|
58
|
+
}
|
59
|
+
if (options.sync.when === "always" || !options.sync.when) {
|
60
|
+
toggleNetwork(true);
|
61
|
+
}
|
62
|
+
return {
|
63
|
+
toggleNetwork,
|
64
|
+
peersToLoadFrom,
|
65
|
+
setNode,
|
66
|
+
crypto,
|
67
|
+
};
|
68
|
+
}
|
69
|
+
export async function createJazzReactNativeGuestContext(options) {
|
70
|
+
const { toggleNetwork, peersToLoadFrom, setNode, crypto } = await setupPeers(options);
|
71
|
+
const context = await createAnonymousJazzContext({
|
72
|
+
crypto,
|
73
|
+
peersToLoadFrom,
|
74
|
+
});
|
75
|
+
setNode(context.agent.node);
|
76
|
+
options.authSecretStorage.emitUpdate(null);
|
77
|
+
return {
|
78
|
+
guest: context.agent,
|
79
|
+
node: context.agent.node,
|
80
|
+
done: () => {
|
81
|
+
// TODO: Sync all the covalues before closing the connection & context
|
82
|
+
toggleNetwork(false);
|
83
|
+
context.done();
|
84
|
+
},
|
85
|
+
logOut: () => {
|
86
|
+
return context.logOut();
|
87
|
+
},
|
88
|
+
};
|
89
|
+
}
|
90
|
+
export async function createJazzReactNativeContext(options) {
|
91
|
+
const { toggleNetwork, peersToLoadFrom, setNode, crypto } = await setupPeers(options);
|
92
|
+
let unsubscribeAuthUpdate = () => { };
|
93
|
+
if (options.sync.when === "signedUp") {
|
94
|
+
const authSecretStorage = options.authSecretStorage;
|
95
|
+
const credentials = options.credentials ?? (await authSecretStorage.get());
|
96
|
+
// To update the internal state with the current credentials
|
97
|
+
authSecretStorage.emitUpdate(credentials);
|
98
|
+
function handleAuthUpdate(isAuthenticated) {
|
99
|
+
if (isAuthenticated) {
|
100
|
+
toggleNetwork(true);
|
101
|
+
}
|
102
|
+
else {
|
103
|
+
toggleNetwork(false);
|
104
|
+
}
|
105
|
+
}
|
106
|
+
unsubscribeAuthUpdate = authSecretStorage.onUpdate(handleAuthUpdate);
|
107
|
+
handleAuthUpdate(authSecretStorage.isAuthenticated);
|
108
|
+
}
|
109
|
+
const context = await createJazzContext({
|
110
|
+
credentials: options.credentials,
|
111
|
+
newAccountProps: options.newAccountProps,
|
112
|
+
peersToLoadFrom,
|
113
|
+
crypto,
|
114
|
+
defaultProfileName: options.defaultProfileName,
|
115
|
+
AccountSchema: options.AccountSchema,
|
116
|
+
sessionProvider: provideLockSession,
|
117
|
+
authSecretStorage: options.authSecretStorage,
|
118
|
+
});
|
119
|
+
setNode(context.node);
|
120
|
+
return {
|
121
|
+
me: context.account,
|
122
|
+
node: context.node,
|
123
|
+
authSecretStorage: context.authSecretStorage,
|
124
|
+
done: () => {
|
125
|
+
// TODO: Sync all the covalues before closing the connection & context
|
126
|
+
toggleNetwork(false);
|
127
|
+
unsubscribeAuthUpdate();
|
128
|
+
context.done();
|
129
|
+
},
|
130
|
+
logOut: () => {
|
131
|
+
unsubscribeAuthUpdate();
|
132
|
+
return context.logOut();
|
133
|
+
},
|
134
|
+
};
|
55
135
|
}
|
56
136
|
export async function provideLockSession(accountID, crypto) {
|
57
137
|
const sessionDone = () => { };
|
package/dist/platform.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
package/dist/provider.js
CHANGED
@@ -1,74 +1,49 @@
|
|
1
|
-
import { JazzContext } from "jazz-react-core";
|
2
|
-
import {
|
3
|
-
import
|
4
|
-
import {
|
5
|
-
import { createJazzRNContext, } from "./platform.js";
|
1
|
+
import { JazzAuthContext, JazzContext } from "jazz-react-core";
|
2
|
+
import React, { useEffect, useRef } from "react";
|
3
|
+
import { ReactNativeContextManager } from "./ReactNativeContextManager.js";
|
4
|
+
import { setupKvStore } from "./platform.js";
|
6
5
|
/** @category Context & Hooks */
|
7
|
-
export function JazzProvider({ children,
|
8
|
-
|
9
|
-
const [
|
10
|
-
const
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
}
|
27
|
-
}
|
28
|
-
async function createContext() {
|
29
|
-
const currentContext = await createJazzRNContext(auth === "guest"
|
30
|
-
? {
|
31
|
-
peer,
|
32
|
-
CryptoProvider,
|
33
|
-
storage,
|
34
|
-
}
|
35
|
-
: {
|
36
|
-
AccountSchema,
|
37
|
-
auth: auth,
|
38
|
-
peer,
|
39
|
-
CryptoProvider,
|
40
|
-
storage,
|
41
|
-
});
|
42
|
-
const logOut = () => {
|
43
|
-
currentContext.logOut();
|
44
|
-
setCtx(undefined);
|
45
|
-
setSessionCount(sessionCount + 1);
|
46
|
-
if (process.env.NODE_ENV === "development") {
|
47
|
-
// In development mode we don't return a cleanup function
|
48
|
-
// so we mark the context as done here.
|
49
|
-
currentContext.done();
|
50
|
-
}
|
51
|
-
};
|
52
|
-
setCtx({
|
53
|
-
...currentContext,
|
54
|
-
AccountSchema,
|
55
|
-
logOut,
|
6
|
+
export function JazzProvider({ children, guestMode, sync, storage, AccountSchema, defaultProfileName, onLogOut, kvStore, onAnonymousAccountDiscarded, }) {
|
7
|
+
setupKvStore(kvStore);
|
8
|
+
const [contextManager] = React.useState(() => new ReactNativeContextManager());
|
9
|
+
const onAnonymousAccountDiscardedRefCallback = useRefCallback(onAnonymousAccountDiscarded);
|
10
|
+
const onLogOutRefCallback = useRefCallback(onLogOut);
|
11
|
+
const value = React.useSyncExternalStore(React.useCallback((callback) => {
|
12
|
+
const props = {
|
13
|
+
AccountSchema,
|
14
|
+
guestMode,
|
15
|
+
sync,
|
16
|
+
storage,
|
17
|
+
defaultProfileName,
|
18
|
+
onLogOut: onLogOutRefCallback,
|
19
|
+
onAnonymousAccountDiscarded: onAnonymousAccountDiscardedRefCallback,
|
20
|
+
};
|
21
|
+
if (contextManager.propsChanged(props)) {
|
22
|
+
contextManager.createContext(props).catch((error) => {
|
23
|
+
console.log(error.stack);
|
24
|
+
console.error("Error creating Jazz context:", error);
|
56
25
|
});
|
57
|
-
return currentContext;
|
58
26
|
}
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
});
|
27
|
+
return contextManager.subscribe(callback);
|
28
|
+
}, [sync, guestMode].concat(storage)), () => contextManager.getCurrentValue(), () => contextManager.getCurrentValue());
|
29
|
+
useEffect(() => {
|
63
30
|
// In development mode we don't return a cleanup function because otherwise
|
64
31
|
// the double effect execution would mark the context as done immediately.
|
65
|
-
if (process.env.NODE_ENV === "development")
|
32
|
+
if (process.env.NODE_ENV === "development")
|
66
33
|
return;
|
67
|
-
}
|
68
34
|
return () => {
|
69
|
-
|
35
|
+
contextManager.done();
|
70
36
|
};
|
71
|
-
}, [
|
72
|
-
return (<JazzContext.Provider value={
|
37
|
+
}, []);
|
38
|
+
return (<JazzContext.Provider value={value}>
|
39
|
+
<JazzAuthContext.Provider value={contextManager.getAuthSecretStorage()}>
|
40
|
+
{value && children}
|
41
|
+
</JazzAuthContext.Provider>
|
42
|
+
</JazzContext.Provider>);
|
43
|
+
}
|
44
|
+
function useRefCallback(callback) {
|
45
|
+
const callbackRef = React.useRef(callback);
|
46
|
+
callbackRef.current = callback;
|
47
|
+
return useRef((...args) => callbackRef.current?.(...args)).current;
|
73
48
|
}
|
74
49
|
//# sourceMappingURL=provider.js.map
|