@streamlayer/sdk-web-core 0.20.1 → 0.21.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/lib/auth/bypass/index.js +1 -2
- package/lib/deepLink/index.d.ts +4 -1
- package/lib/deepLink/index.js +23 -12
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/videoPlayer/index.d.ts +19 -0
- package/lib/videoPlayer/index.js +28 -0
- package/package.json +6 -6
package/lib/auth/bypass/index.js
CHANGED
|
@@ -37,7 +37,7 @@ export class BypassAuth extends AbstractAuthenticationProvider {
|
|
|
37
37
|
this.$coreStore.getValues().userKey.setValue(userKey);
|
|
38
38
|
const { used, data } = this.deepLink.getDeepLinkData();
|
|
39
39
|
const inviterKey = !used ? data?.[DEEP_LINK_USER_ID] : '';
|
|
40
|
-
logger.debug(
|
|
40
|
+
logger.debug({ inviterKey }, 'login with inviterKey');
|
|
41
41
|
const user = await this.bypassLogin({
|
|
42
42
|
schema,
|
|
43
43
|
userKey,
|
|
@@ -49,7 +49,6 @@ export class BypassAuth extends AbstractAuthenticationProvider {
|
|
|
49
49
|
if (!token || !userId) {
|
|
50
50
|
throw new Error('internal: token missing');
|
|
51
51
|
}
|
|
52
|
-
logger.debug('user', user);
|
|
53
52
|
if (user.meta?.inviterKey) {
|
|
54
53
|
this.deepLink.deepLinkUsed(user.meta.inviterKey);
|
|
55
54
|
}
|
package/lib/deepLink/index.d.ts
CHANGED
|
@@ -19,7 +19,10 @@ declare module '@streamlayer/sdk-web-interfaces' {
|
|
|
19
19
|
deepLink: DeepLinkContext;
|
|
20
20
|
}
|
|
21
21
|
interface StreamLayerSDK {
|
|
22
|
-
|
|
22
|
+
addDeepLinkHandler: (cb: DeepLinkCallback) => void;
|
|
23
|
+
removeDeepLinkHandler: (cb: DeepLinkCallback) => void;
|
|
24
|
+
getInviter: () => string | undefined;
|
|
25
|
+
inviteDisplayed: () => void;
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
export declare const DEEP_LINK_PREFIX = "sldl";
|
package/lib/deepLink/index.js
CHANGED
|
@@ -52,24 +52,20 @@ const pickDeepLinkData = ($deepLinkContext, deepLinkHandled) => {
|
|
|
52
52
|
$deepLinkContext.setValue('data', result);
|
|
53
53
|
const remainExist = Object.keys(remain).length !== 0;
|
|
54
54
|
if (hash) {
|
|
55
|
+
let updatedHash = '';
|
|
55
56
|
if (remainExist) {
|
|
56
|
-
|
|
57
|
+
updatedHash = `#${new URLSearchParams(remain).toString()}`;
|
|
57
58
|
logger.debug({ updatedHash }, 'update hash');
|
|
58
|
-
window.location.hash = updatedHash;
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
window.location.hash = '';
|
|
62
59
|
}
|
|
60
|
+
window.history.replaceState(null, '', window.location.pathname + window.location.search + updatedHash);
|
|
63
61
|
}
|
|
64
62
|
if (search) {
|
|
63
|
+
let updatedSearch = '';
|
|
65
64
|
if (remainExist) {
|
|
66
|
-
|
|
65
|
+
updatedSearch = `?${new URLSearchParams(remain).toString()}`;
|
|
67
66
|
logger.debug({ updatedSearch }, 'update search');
|
|
68
|
-
window.location.search = updatedSearch;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
window.location.search = '';
|
|
72
67
|
}
|
|
68
|
+
window.history.replaceState(null, '', window.location.pathname + updatedSearch + window.location.hash);
|
|
73
69
|
}
|
|
74
70
|
deepLinkHandled(result);
|
|
75
71
|
}
|
|
@@ -107,16 +103,31 @@ export const deepLink = (instance, opts, done) => {
|
|
|
107
103
|
},
|
|
108
104
|
onDeepLinkHandlers: new Set(),
|
|
109
105
|
};
|
|
106
|
+
instance.sdk.getInviter = () => {
|
|
107
|
+
const { data, used } = instance.deepLink.getDeepLinkData();
|
|
108
|
+
return used ? data?.[DEEP_LINK_USER_ID] : undefined;
|
|
109
|
+
};
|
|
110
|
+
instance.sdk.inviteDisplayed = () => {
|
|
111
|
+
instance.deepLink.$store.getStore().set({});
|
|
112
|
+
instance.deepLink.$store.getStore().off();
|
|
113
|
+
storage.del('sl-deep-link-store');
|
|
114
|
+
};
|
|
110
115
|
instance.deepLink.$store.subscribe((value) => storage.set('sl-deep-link-store', JSON.stringify(value)));
|
|
111
|
-
instance.sdk.
|
|
116
|
+
instance.sdk.addDeepLinkHandler = (cb) => {
|
|
117
|
+
logger.trace('add deep link handler');
|
|
112
118
|
instance.deepLink.onDeepLinkHandlers.add(cb);
|
|
113
119
|
};
|
|
120
|
+
instance.sdk.removeDeepLinkHandler = (cb) => {
|
|
121
|
+
logger.trace('remove deep link handler');
|
|
122
|
+
instance.deepLink.onDeepLinkHandlers.delete(cb);
|
|
123
|
+
};
|
|
114
124
|
// called after sdk parsed deep link data from location
|
|
115
125
|
const deepLinkHandled = (data) => {
|
|
116
126
|
instance.deepLink.$store.setValue('handled', true);
|
|
127
|
+
logger.trace({ size: instance.deepLink.onDeepLinkHandlers.size }, 'deep link handled, call callbacks');
|
|
117
128
|
for (const handler of instance.deepLink.onDeepLinkHandlers) {
|
|
118
129
|
try {
|
|
119
|
-
logger.
|
|
130
|
+
logger.trace('called handler');
|
|
120
131
|
handler(data);
|
|
121
132
|
}
|
|
122
133
|
catch (err) {
|
package/lib/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { StreamLayerContext } from '@streamlayer/sdk-web-interfaces';
|
|
|
2
2
|
export { bypass, storage } from './auth';
|
|
3
3
|
export { store } from './store';
|
|
4
4
|
export { deepLink, type DeepLinkUrlParams, type DeepLinkCallback, DEEP_LINK_PREFIX, DEEP_LINK_USER_ID, DEEP_LINK_EVENT_ID, DEEP_LINK_EXTERNAL_EVENT_ID, } from './deepLink';
|
|
5
|
+
export { videoPlayer, type VideoPlayerCallback } from './videoPlayer';
|
|
5
6
|
import './store';
|
|
6
7
|
import './auth';
|
|
7
8
|
declare module '@streamlayer/sdk-web-interfaces' {
|
package/lib/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { CoreStatus } from './store/store';
|
|
|
2
2
|
export { bypass, storage } from './auth';
|
|
3
3
|
export { store } from './store';
|
|
4
4
|
export { deepLink, DEEP_LINK_PREFIX, DEEP_LINK_USER_ID, DEEP_LINK_EVENT_ID, DEEP_LINK_EXTERNAL_EVENT_ID, } from './deepLink';
|
|
5
|
+
export { videoPlayer } from './videoPlayer';
|
|
5
6
|
import './store';
|
|
6
7
|
import './auth';
|
|
7
8
|
/**
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { StreamLayerContext } from '@streamlayer/sdk-web-interfaces';
|
|
2
|
+
export type VideoPlayerData = {
|
|
3
|
+
muted: boolean;
|
|
4
|
+
};
|
|
5
|
+
export type VideoPlayerCallback = (videoPlayerData: VideoPlayerData) => void;
|
|
6
|
+
export interface VideoPlayerContext {
|
|
7
|
+
controllers: Set<VideoPlayerCallback>;
|
|
8
|
+
}
|
|
9
|
+
declare module '@streamlayer/sdk-web-interfaces' {
|
|
10
|
+
interface StreamLayerContext {
|
|
11
|
+
videoPlayer: VideoPlayerContext;
|
|
12
|
+
}
|
|
13
|
+
interface StreamLayerSDK {
|
|
14
|
+
addVideoPlayerController: (cb: VideoPlayerCallback) => void;
|
|
15
|
+
removeVideoPlayerController: (cb: VideoPlayerCallback) => void;
|
|
16
|
+
controlVideoPlayer: VideoPlayerCallback;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export declare const videoPlayer: (instance: StreamLayerContext, opts: unknown, done: () => void) => void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createLogger } from '@streamlayer/sdk-web-logger';
|
|
2
|
+
const logger = createLogger('video_player');
|
|
3
|
+
export const videoPlayer = (instance, opts, done) => {
|
|
4
|
+
instance.videoPlayer = {
|
|
5
|
+
controllers: new Set(),
|
|
6
|
+
};
|
|
7
|
+
instance.sdk.addVideoPlayerController = (cb) => {
|
|
8
|
+
logger.trace('adding video player controller');
|
|
9
|
+
instance.videoPlayer.controllers.add(cb);
|
|
10
|
+
};
|
|
11
|
+
instance.sdk.removeVideoPlayerController = (cb) => {
|
|
12
|
+
logger.trace('removing video player controller');
|
|
13
|
+
instance.videoPlayer.controllers.delete(cb);
|
|
14
|
+
};
|
|
15
|
+
instance.sdk.controlVideoPlayer = (props) => {
|
|
16
|
+
logger.trace('controlling video player');
|
|
17
|
+
for (const controller of instance.videoPlayer.controllers) {
|
|
18
|
+
logger.trace('calling video player controller');
|
|
19
|
+
try {
|
|
20
|
+
controller(props);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
console.error(err);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
done();
|
|
28
|
+
};
|
package/package.json
CHANGED
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
"@nanostores/query": "^0.2.8",
|
|
8
8
|
"@streamlayer/sl-eslib": "^5.67.0",
|
|
9
9
|
"nanostores": "^0.9.5",
|
|
10
|
-
"@streamlayer/sdk-web-api": "^0.
|
|
11
|
-
"@streamlayer/sdk-web-interfaces": "^0.20.
|
|
12
|
-
"@streamlayer/sdk-web-storage": "^0.4.
|
|
13
|
-
"@streamlayer/sdk-web-types": "^0.22.
|
|
14
|
-
"@streamlayer/sdk-web-logger": "^0.5.
|
|
10
|
+
"@streamlayer/sdk-web-api": "^0.22.0",
|
|
11
|
+
"@streamlayer/sdk-web-interfaces": "^0.20.5",
|
|
12
|
+
"@streamlayer/sdk-web-storage": "^0.4.3",
|
|
13
|
+
"@streamlayer/sdk-web-types": "^0.22.3",
|
|
14
|
+
"@streamlayer/sdk-web-logger": "^0.5.16"
|
|
15
15
|
},
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"default": "./lib/auth/index.js"
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
|
-
"version": "0.
|
|
43
|
+
"version": "0.21.1",
|
|
44
44
|
"type": "module",
|
|
45
45
|
"main": "./lib/index.js",
|
|
46
46
|
"module": "./lib/index.js",
|