@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.
@@ -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('inviterKey', inviterKey);
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
  }
@@ -19,7 +19,10 @@ declare module '@streamlayer/sdk-web-interfaces' {
19
19
  deepLink: DeepLinkContext;
20
20
  }
21
21
  interface StreamLayerSDK {
22
- onDeepLinkHandled: (cb: DeepLinkCallback) => void;
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";
@@ -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
- const updatedHash = `#${new URLSearchParams(remain).toString()}`;
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
- const updatedSearch = `?${new URLSearchParams(remain).toString()}`;
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.onDeepLinkHandled = (cb) => {
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.debug('called handler');
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.21.2",
11
- "@streamlayer/sdk-web-interfaces": "^0.20.4",
12
- "@streamlayer/sdk-web-storage": "^0.4.2",
13
- "@streamlayer/sdk-web-types": "^0.22.2",
14
- "@streamlayer/sdk-web-logger": "^0.5.15"
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.20.1",
43
+ "version": "0.21.1",
44
44
  "type": "module",
45
45
  "main": "./lib/index.js",
46
46
  "module": "./lib/index.js",