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.
@@ -1,4 +1,4 @@
1
1
 
2
- > jazz-react-native@0.9.23 build /home/runner/work/jazz/jazz/packages/jazz-react-native
2
+ > jazz-react-native@0.10.0 build /home/runner/_work/jazz/jazz/packages/jazz-react-native
3
3
  > rm -rf ./dist && tsc --sourceMap --outDir dist
4
4
 
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"}
@@ -1,120 +1,64 @@
1
- import React, { useMemo, useState, useEffect } from "react";
1
+ import React, { useState } from "react";
2
2
  import { StyleSheet, Text, TextInput, TouchableOpacity, View, useColorScheme, } from "react-native";
3
- import { RNDemoAuth } from "./DemoAuthMethod.js";
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
- if (state.state !== "ready")
61
- return;
62
- if (username.trim() === "") {
63
- setErrorMessage("Display name is required");
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
- {state.state === "loading" ? (<>
75
- <Text style={styles.loadingText}>Loading...</Text>
76
- {state.errors.map((error, index) => (<Text key={index} style={styles.errorText}>
77
- {error}
78
- </Text>))}
79
- </>) : state.state === "ready" ? (<View style={styles.formContainer}>
80
- <Text style={[
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
- {state.errors.map((error) => (<Text key={error} style={styles.errorText}>
88
- {error}
89
- </Text>))}
35
+ {errorMessage && <Text style={styles.errorText}>{errorMessage}</Text>}
90
36
 
91
- {errorMessage && <Text style={styles.errorText}>{errorMessage}</Text>}
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
- <TextInput placeholder="Display name" value={username} onChangeText={setUsername} placeholderTextColor={darkMode ? "#fff" : "#000"} style={[
94
- styles.textInput,
95
- darkMode ? styles.darkInput : styles.lightInput,
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
- <TouchableOpacity onPress={handleSignUp} style={[
99
- styles.button,
100
- darkMode ? styles.darkButton : styles.lightButton,
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
- <Text style={darkMode ? styles.darkButtonText : styles.lightButtonText}>
103
- Sign Up as new account
104
- </Text>
105
- </TouchableOpacity>
106
-
107
- <View style={styles.existingUsersContainer}>
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":"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"}
1
+ {"version":3,"file":"DemoAuthUI.js","sourceRoot":"","sources":["../../src/auth/DemoAuthUI.tsx"],"names":[],"mappings":"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"}
package/dist/auth/auth.js CHANGED
@@ -6,6 +6,7 @@ export function clearUserCredentials() {
6
6
  return Promise.all([
7
7
  kvStore.delete("demo-auth-logged-in-secret"),
8
8
  kvStore.delete("jazz-clerk-auth"),
9
+ kvStore.delete("jazz-logged-in-secret"),
9
10
  ]);
10
11
  }
11
12
  //# sourceMappingURL=auth.js.map
@@ -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;KAClC,CAAC,CAAC;AACL,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,EAAE,UAAU,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAE1E,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"}
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
- export { RNDemoAuth } from "./auth/DemoAuthMethod.js";
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
- export async function createJazzRNContext(options) {
9
- const websocketPeer = createWebSocketPeerWithReconnection(options.peer, options.reconnectionTimeout, (peer) => {
10
- node.syncManager.addPeer(peer);
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 peersToLoadFrom = [websocketPeer.peer];
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
- const context = "auth" in options
22
- ? await createJazzContext({
23
- AccountSchema: options.AccountSchema,
24
- auth: options.auth,
25
- crypto: await CryptoProvider.create(),
25
+ if (options.sync.when === "never") {
26
+ return {
27
+ toggleNetwork: () => { },
26
28
  peersToLoadFrom,
27
- sessionProvider: provideLockSession,
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 = () => { };
@@ -1 +1 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
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 { Account } from "jazz-tools";
3
- import React, { useState } from "react";
4
- import { useEffect, useRef } from "react";
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, auth, peer, AccountSchema = Account, CryptoProvider, storage, }) {
8
- const [ctx, setCtx] = useState();
9
- const [sessionCount, setSessionCount] = useState(0);
10
- const effectExecuted = useRef(false);
11
- effectExecuted.current = false;
12
- useEffect(() => {
13
- // Avoid double execution of the effect in development mode for easier debugging.
14
- if (process.env.NODE_ENV === "development") {
15
- if (effectExecuted.current) {
16
- return;
17
- }
18
- effectExecuted.current = true;
19
- // In development mode we don't return a cleanup function because otherwise
20
- // the double effect execution would mark the context as done immediately.
21
- //
22
- // So we mark it as done in the subsequent execution.
23
- const previousContext = ctx;
24
- if (previousContext) {
25
- previousContext.done();
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
- const promise = createContext();
60
- promise.catch((e) => {
61
- console.error("Error creating Jazz context", e);
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
- void promise.then((context) => context.done());
35
+ contextManager.done();
70
36
  };
71
- }, [AccountSchema, auth, peer, sessionCount]);
72
- return (<JazzContext.Provider value={ctx}>{ctx && children}</JazzContext.Provider>);
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