jazz-react-native 0.9.22 → 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.22 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,38 @@
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
+
25
+ ## 0.9.23
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies [70c9a5d]
30
+ - cojson@0.9.23
31
+ - cojson-storage-rn-sqlite@0.8.59
32
+ - cojson-transport-ws@0.9.23
33
+ - jazz-react-core@0.9.22
34
+ - jazz-tools@0.9.23
35
+
3
36
  ## 0.9.22
4
37
 
5
38
  ### 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":"AACA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EACL,UAAU,EACV,IAAI,EACJ,SAAS,EACT,gBAAgB,EAChB,IAAI,EACJ,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,OAAO,EACP,IAAI,EACJ,QAAQ,GAKT,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,WAAW,KAAK,MAAM,CAAC;IACxC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEtE,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,eAAe,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACpC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAE,EAAE;QACvC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACnC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,CACL,CAAC,IAAI,CACH,KAAK,CAAC,CAAC;YACL,MAAM,CAAC,SAAS;YAChB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;SAC1D,CAAC,CAEF;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAChC;QAAA,CAAC,IAAI,CACH,KAAK,CAAC,CAAC;YACL,MAAM,CAAC,UAAU;YACjB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;SAC9C,CAAC,CAEF;UAAA,CAAC,OAAO,CACV;QAAA,EAAE,IAAI,CAEN;;QAAA,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,CAErE;;QAAA,CAAC,SAAS,CACR,WAAW,CAAC,cAAc,CAC1B,KAAK,CAAC,CAAC,QAAQ,CAAC,CAChB,YAAY,CAAC,CAAC,WAAW,CAAC,CAC1B,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CACjD,KAAK,CAAC,CAAC;YACL,MAAM,CAAC,SAAS;YAChB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU;SAChD,CAAC,EAGJ;;QAAA,CAAC,gBAAgB,CACf,OAAO,CAAC,CAAC,YAAY,CAAC,CACtB,KAAK,CAAC,CAAC;YACL,MAAM,CAAC,MAAM;YACb,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;SAClD,CAAC,CAEF;UAAA,CAAC,IAAI,CACH,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAEjE;;UACF,EAAE,IAAI,CACR;QAAA,EAAE,gBAAgB,CAElB;;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CACzC;UAAA,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAChC,CAAC,gBAAgB,CACf,GAAG,CAAC,CAAC,IAAI,CAAC,CACV,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CACjC,KAAK,CAAC,CAAC;gBACL,MAAM,CAAC,kBAAkB;gBACzB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe;aAC1D,CAAC,CAEF;cAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CACzD;2BAAW,CAAC,IAAI,CAAC;cACnB,EAAE,IAAI,CACR;YAAA,EAAE,gBAAgB,CAAC,CACpB,CAAC,CACJ;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,IAAI,EAAE,CAAC;QACP,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,EAAE;KACZ;IACD,aAAa,EAAE;QACb,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;KACzB;IACD,UAAU,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;KACjB;IACD,SAAS,EAAE;QACT,KAAK,EAAE,KAAK;QACZ,cAAc,EAAE,CAAC;QACjB,SAAS,EAAE,QAAQ;KACpB;IACD,SAAS,EAAE;QACT,WAAW,EAAE,CAAC;QACd,OAAO,EAAE,EAAE;QACX,cAAc,EAAE,EAAE;QAClB,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,CAAC;KAChB;IACD,SAAS,EAAE;QACT,WAAW,EAAE,MAAM;QACnB,eAAe,EAAE,MAAM;QACvB,KAAK,EAAE,MAAM;KACd;IACD,UAAU,EAAE;QACV,WAAW,EAAE,MAAM;QACnB,eAAe,EAAE,MAAM;QACvB,KAAK,EAAE,MAAM;KACd;IACD,MAAM,EAAE;QACN,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,CAAC;QACf,KAAK,EAAE,MAAM;QACb,cAAc,EAAE,EAAE;KACnB;IACD,UAAU,EAAE;QACV,eAAe,EAAE,MAAM;KACxB;IACD,WAAW,EAAE;QACX,eAAe,EAAE,MAAM;KACxB;IACD,cAAc,EAAE;QACd,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,QAAQ;KACpB;IACD,eAAe,EAAE;QACf,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,QAAQ;KACpB;IACD,sBAAsB,EAAE;QACtB,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,EAAE;KACd;IACD,kBAAkB,EAAE;QAClB,eAAe,EAAE,EAAE;QACnB,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,CAAC;QACf,cAAc,EAAE,CAAC;KAClB;IACD,cAAc,EAAE;QACd,eAAe,EAAE,MAAM;KACxB;IACD,eAAe,EAAE;QACf,eAAe,EAAE,MAAM;KACxB;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,MAAM;KACd;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM;KACd;IACD,SAAS,EAAE;QACT,KAAK,EAAE,MAAM;KACd;IACD,cAAc,EAAE;QACd,eAAe,EAAE,MAAM;KACxB;IACD,eAAe,EAAE;QACf,eAAe,EAAE,MAAM;KACxB;CACF,CAAC,CAAC"}
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