@streamlayer/sdk-web-core 0.20.1 → 0.21.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.
@@ -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,10 +103,22 @@ 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) => {
112
117
  instance.deepLink.onDeepLinkHandlers.add(cb);
113
118
  };
119
+ instance.sdk.removeDeepLinkHandler = (cb) => {
120
+ instance.deepLink.onDeepLinkHandlers.delete(cb);
121
+ };
114
122
  // called after sdk parsed deep link data from location
115
123
  const deepLinkHandled = (data) => {
116
124
  instance.deepLink.$store.setValue('handled', true);
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,22 @@
1
+ export const videoPlayer = (instance, opts, done) => {
2
+ instance.videoPlayer = {
3
+ controllers: new Set(),
4
+ };
5
+ instance.sdk.addVideoPlayerController = (cb) => {
6
+ instance.videoPlayer.controllers.add(cb);
7
+ };
8
+ instance.sdk.removeVideoPlayerController = (cb) => {
9
+ instance.videoPlayer.controllers.delete(cb);
10
+ };
11
+ instance.sdk.controlVideoPlayer = (props) => {
12
+ for (const controller of instance.videoPlayer.controllers) {
13
+ try {
14
+ controller(props);
15
+ }
16
+ catch (err) {
17
+ console.error(err);
18
+ }
19
+ }
20
+ };
21
+ done();
22
+ };
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-logger": "^0.5.16",
14
+ "@streamlayer/sdk-web-types": "^0.22.3"
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.0",
44
44
  "type": "module",
45
45
  "main": "./lib/index.js",
46
46
  "module": "./lib/index.js",