@streamlayer/react-ui 0.3.4 → 0.5.1
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/package.json +1 -1
- package/src/lib/demo/Login.js +1 -1
- package/src/lib/demo/Login.js.map +1 -1
- package/src/lib/demo/components/UserSummary.js +1 -1
- package/src/lib/demo/index.js +7 -0
- package/src/lib/demo/index.js.map +1 -1
- package/src/lib/gamification/login/index.d.ts +1 -0
- package/src/lib/gamification/login/index.js +5 -5
- package/src/lib/gamification/login/index.js.map +1 -1
- package/src/utils/login.d.ts +3 -3
- package/src/utils/login.js +6 -6
- package/src/utils/login.js.map +1 -1
package/package.json
CHANGED
package/src/lib/demo/Login.js
CHANGED
|
@@ -10,6 +10,6 @@ export const LoginComponent = ({ sdk }) => {
|
|
|
10
10
|
throw err;
|
|
11
11
|
}
|
|
12
12
|
};
|
|
13
|
-
return _jsx(Login, { login: login, anonymousLogin: sdk.anonymousAuthorization });
|
|
13
|
+
return _jsx(Login, { login: login, anonymousLogin: sdk.anonymousAuthorization, host: sdk.host });
|
|
14
14
|
};
|
|
15
15
|
//# sourceMappingURL=Login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Login.js","sourceRoot":"","sources":["../../../../../../packages/react-ui/src/lib/demo/Login.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAsC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IAC3E,MAAM,KAAK,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;QACpC,IAAI;YACF,MAAM,GAAG,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAA;SAChE;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;YAE7B,MAAM,GAAG,CAAA;SACV;IACH,CAAC,CAAA;IAED,OAAO,KAAC,KAAK,IAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,sBAAsB,GAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"Login.js","sourceRoot":"","sources":["../../../../../../packages/react-ui/src/lib/demo/Login.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAsC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IAC3E,MAAM,KAAK,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;QACpC,IAAI;YACF,MAAM,GAAG,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAA;SAChE;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;YAE7B,MAAM,GAAG,CAAA;SACV;IACH,CAAC,CAAA;IAED,OAAO,KAAC,KAAK,IAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,sBAAsB,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,GAAI,CAAA;AAC5F,CAAC,CAAA"}
|
|
@@ -6,6 +6,6 @@ export const UserSummary = ({ store }) => {
|
|
|
6
6
|
if (!user?.summary) {
|
|
7
7
|
return _jsx("div", { children: "wait user..." });
|
|
8
8
|
}
|
|
9
|
-
return (_jsx(UserStatistics, { avatar: user.summary.avatar, name: user.summary.name, points: user.summary.points, grade: '0', friendsRank: user.summary.friendsRank, globalRank: user.summary.rank, winStreak: user.summary.streak, correct: user.summary.correct, incorrect: user.summary.incorrect, successRate: user.percentage?.
|
|
9
|
+
return (_jsx(UserStatistics, { avatar: user.summary.avatar, name: user.summary.name, points: user.summary.points, grade: '0', friendsRank: user.summary.friendsRank, globalRank: user.summary.rank, winStreak: user.summary.streak, correct: user.summary.correct, incorrect: user.summary.incorrect, successRate: user.percentage?.correct }));
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=UserSummary.js.map
|
package/src/lib/demo/index.js
CHANGED
|
@@ -3,7 +3,14 @@ import { useStore } from '@nanostores/react';
|
|
|
3
3
|
import { GamificationComponent } from './Gamification';
|
|
4
4
|
import { LoginComponent } from './Login';
|
|
5
5
|
export const Demo = ({ sdk }) => {
|
|
6
|
+
const organization = useStore(sdk.organizationStore());
|
|
6
7
|
const user = useStore(sdk.getUserStore());
|
|
8
|
+
if (organization.loading) {
|
|
9
|
+
return _jsx("div", { children: "authentificating..." });
|
|
10
|
+
}
|
|
11
|
+
if (!organization.data) {
|
|
12
|
+
return _jsx("div", { children: "wrong sdk key..." });
|
|
13
|
+
}
|
|
7
14
|
if (user.loading) {
|
|
8
15
|
return _jsx("div", { children: "authentificating..." });
|
|
9
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/react-ui/src/lib/demo/index.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/react-ui/src/lib/demo/index.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,MAAM,CAAC,MAAM,IAAI,GAAsC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IACjE,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAA;IAEzC,IAAI,YAAY,CAAC,OAAO,EAAE;QACxB,OAAO,gDAA8B,CAAA;KACtC;IAED,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;QACtB,OAAO,6CAA2B,CAAA;KACnC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,OAAO,gDAA8B,CAAA;KACtC;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACd,OAAO,KAAC,cAAc,IAAC,GAAG,EAAE,GAAG,GAAI,CAAA;KACpC;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,OAAO,CAAiB,CAAA;IAEnE,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,iDAA+B,CAAA;KACvC;IAED,OAAO,KAAC,qBAAqB,IAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,GAAI,CAAA;AACxE,CAAC,CAAA"}
|
|
@@ -6,7 +6,7 @@ import useDigitInput from 'react-digit-input';
|
|
|
6
6
|
import * as loginApi from '../../../utils/login';
|
|
7
7
|
import { Timer } from '../vote/components/voting-header/components/timer';
|
|
8
8
|
import { Panel, Digits, Form, FormTitle, FormDescription, FormSubmit, FormInputContainer } from './styles';
|
|
9
|
-
export const Login = ({ login, anonymousLogin }) => {
|
|
9
|
+
export const Login = ({ login, anonymousLogin, host }) => {
|
|
10
10
|
const [phoneInput, setPhoneInput] = useState('');
|
|
11
11
|
const [phone, setPhone] = useState('');
|
|
12
12
|
const [code, setCode] = useState('');
|
|
@@ -21,10 +21,10 @@ export const Login = ({ login, anonymousLogin }) => {
|
|
|
21
21
|
try {
|
|
22
22
|
const parsed = phoneInput.replaceAll('+', '');
|
|
23
23
|
try {
|
|
24
|
-
await loginApi.requestLoginCode(parsed);
|
|
24
|
+
await loginApi.requestLoginCode(host, parsed);
|
|
25
25
|
}
|
|
26
26
|
catch (err) {
|
|
27
|
-
await loginApi.register(parsed);
|
|
27
|
+
await loginApi.register(host, parsed);
|
|
28
28
|
}
|
|
29
29
|
setPhone(parsed);
|
|
30
30
|
}
|
|
@@ -36,7 +36,7 @@ export const Login = ({ login, anonymousLogin }) => {
|
|
|
36
36
|
e.preventDefault();
|
|
37
37
|
if (phone && code) {
|
|
38
38
|
try {
|
|
39
|
-
const token = await loginApi.login(phone, code);
|
|
39
|
+
const token = await loginApi.login(host, phone, code);
|
|
40
40
|
if (token && login) {
|
|
41
41
|
await login(token);
|
|
42
42
|
}
|
|
@@ -49,6 +49,6 @@ export const Login = ({ login, anonymousLogin }) => {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
|
-
return (_jsxs(Panel, { children: [!phone && (_jsxs("div", { children: [_jsxs(Form, { onSubmit: requestCode, children: [_jsx(FormTitle, { children: "Enter your phone number" }), _jsx(FormDescription, { children: "Enter your phone up for number to log in or sign an account." }), _jsx(FormInputContainer, { children: _jsx(PhoneInput, { value: phoneInput, onChange: (val) => setPhoneInput(`${val}`) }) }), _jsx(FormSubmit, { disabled: !isValidPhoneNumber(phoneInput), type: "submit", children: "request code" })] }), anonymousLogin && (_jsx(FormSubmit, { style: { display: 'block', margin: 'auto' },
|
|
52
|
+
return (_jsxs(Panel, { children: [!phone && (_jsxs("div", { children: [_jsxs(Form, { onSubmit: requestCode, children: [_jsx(FormTitle, { children: "Enter your phone number" }), _jsx(FormDescription, { children: "Enter your phone up for number to log in or sign an account." }), _jsx(FormInputContainer, { children: _jsx(PhoneInput, { value: phoneInput, onChange: (val) => setPhoneInput(`${val}`) }) }), _jsx(FormSubmit, { disabled: !isValidPhoneNumber(phoneInput), type: "submit", children: "request code" })] }), anonymousLogin && (_jsx(FormSubmit, { style: { display: 'block', margin: 'auto' }, onClick: anonymousLogin, children: "anonymous login" }))] })), phone && (_jsxs(Form, { onSubmit: loginByCode, children: [_jsx(FormTitle, { children: "Enter Verification Code" }), _jsxs(FormDescription, { children: ["Please enter the verification code ", _jsx("br", {}), "sent to ", _jsx("b", { children: formatPhoneNumberIntl(phoneInput) })] }), _jsxs(Digits, { children: [_jsx("input", { autoFocus: true, inputMode: "decimal", ...digits[0] }), _jsx("input", { inputMode: "decimal", ...digits[1] }), _jsx("input", { inputMode: "decimal", ...digits[2] }), _jsx("input", { inputMode: "decimal", ...digits[3] })] }), _jsx(FormSubmit, { disabled: code.length !== 4, type: "submit", children: "login" }), _jsxs(FormDescription, { children: ["Didn't get 59 the code? ", _jsx("br", {}), "Resend Code in", _jsx(Timer, { duration: 30, setTimeToExpire: () => { }, isPlaying: true })] })] }))] }));
|
|
53
53
|
};
|
|
54
54
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/react-ui/src/lib/gamification/login/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChC,OAAO,UAAU,EAAE,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChG,OAAO,oCAAoC,CAAA;AAC3C,OAAO,aAAa,MAAM,mBAAmB,CAAA;AAE7C,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,mDAAmD,CAAA;AAEzE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAE1G,MAAM,CAAC,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/react-ui/src/lib/gamification/login/index.tsx"],"names":[],"mappings":"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"}
|
package/src/utils/login.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const requestLoginCode: (phone: string) => Promise<boolean>;
|
|
2
|
-
export declare const register: (phone: string) => Promise<boolean>;
|
|
3
|
-
export declare const login: (phone: string, code: string) => Promise<string | undefined>;
|
|
1
|
+
export declare const requestLoginCode: (host: string, phone: string) => Promise<boolean>;
|
|
2
|
+
export declare const register: (host: string, phone: string) => Promise<boolean>;
|
|
3
|
+
export declare const login: (host: string, phone: string, code: string) => Promise<string | undefined>;
|
package/src/utils/login.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { createGrpcWebTransport } from '@bufbuild/connect-web';
|
|
2
2
|
import { createPromiseClient } from '@connectrpc/connect';
|
|
3
3
|
import { Users } from '@streamlayer/sl-eslib/users/users_connect';
|
|
4
|
-
export const requestLoginCode = async (phone) => {
|
|
4
|
+
export const requestLoginCode = async (host, phone) => {
|
|
5
5
|
const transport = createGrpcWebTransport({
|
|
6
|
-
baseUrl:
|
|
6
|
+
baseUrl: host,
|
|
7
7
|
});
|
|
8
8
|
const userClient = createPromiseClient(Users, transport);
|
|
9
9
|
await userClient.requestPassword({ id: phone });
|
|
10
10
|
return true;
|
|
11
11
|
};
|
|
12
|
-
export const register = async (phone) => {
|
|
12
|
+
export const register = async (host, phone) => {
|
|
13
13
|
const transport = createGrpcWebTransport({
|
|
14
|
-
baseUrl:
|
|
14
|
+
baseUrl: host,
|
|
15
15
|
});
|
|
16
16
|
const userClient = createPromiseClient(Users, transport);
|
|
17
17
|
await userClient.register({ id: phone });
|
|
18
18
|
return true;
|
|
19
19
|
};
|
|
20
|
-
export const login = async (phone, code) => {
|
|
20
|
+
export const login = async (host, phone, code) => {
|
|
21
21
|
const transport = createGrpcWebTransport({
|
|
22
|
-
baseUrl:
|
|
22
|
+
baseUrl: host,
|
|
23
23
|
});
|
|
24
24
|
const userClient = createPromiseClient(Users, transport);
|
|
25
25
|
const res = await userClient.login({ id: phone, password: code });
|
package/src/utils/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../../packages/react-ui/src/utils/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAA;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../../packages/react-ui/src/utils/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,2CAA2C,CAAA;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,EAAE;IACpE,MAAM,SAAS,GAAG,sBAAsB,CAAC;QACvC,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAExD,MAAM,UAAU,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAE/C,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,EAAE;IAC5D,MAAM,SAAS,GAAG,sBAAsB,CAAC;QACvC,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAExD,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAExC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,IAAY,EAAE,EAAE;IACvE,MAAM,SAAS,GAAG,sBAAsB,CAAC;QACvC,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAExD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;IAEjE,OAAO,GAAG,EAAE,IAAI,EAAE,GAAG,CAAA;AACvB,CAAC,CAAA"}
|