@streamscloud/embeddable 13.3.0 → 14.0.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.
- package/dist/external-api/data-providers/internal-media-center-data-provider.svelte.js +6 -6
- package/dist/external-api/data-providers/mocks/index.d.ts +5 -0
- package/dist/external-api/data-providers/mocks/index.js +5 -0
- package/dist/{media-center/categories-following → external-api/data-providers/mocks}/mock-categories-following-handler.svelte.d.ts +1 -1
- package/dist/external-api/data-providers/mocks/mock-content-management-handler.svelte.d.ts +29 -0
- package/dist/external-api/data-providers/mocks/mock-content-management-handler.svelte.js +61 -0
- package/dist/{media-center/membership → external-api/data-providers/mocks}/mock-membership-handler.svelte.d.ts +1 -1
- package/dist/{media-center/navigation → external-api/data-providers/mocks}/mock-navigation-handler.svelte.d.ts +1 -2
- package/dist/{posts/social-interactions → external-api/data-providers/mocks}/mock-post-social-interactions-handler.svelte.d.ts +1 -2
- package/dist/{posts/social-interactions → external-api/data-providers/mocks}/mock-post-social-interactions-handler.svelte.js +17 -6
- package/dist/external-api/data-providers/mocks/operations.generated.d.ts +115 -0
- package/dist/external-api/data-providers/mocks/operations.generated.js +377 -0
- package/dist/external-api/data-providers/mocks/operations.graphql +18 -0
- package/dist/media-center/config/types.d.ts +7 -1
- package/dist/media-center/content-management/index.d.ts +1 -0
- package/dist/media-center/content-management/index.js +1 -0
- package/dist/media-center/content-management/types.d.ts +24 -0
- package/dist/media-center/content-management/types.js +1 -0
- package/dist/media-center/index.d.ts +2 -1
- package/dist/media-center/media-center/cmp.media-center-proxy.svelte +2 -2
- package/dist/media-center/media-center/discover/data-loading.d.ts +3 -0
- package/dist/media-center/media-center/discover/data-loading.js +13 -2
- package/dist/media-center/media-center/discover/discover-view-handler.svelte.d.ts +23 -0
- package/dist/media-center/media-center/discover/discover-view-handler.svelte.js +88 -0
- package/dist/media-center/media-center/discover/discover-view.svelte +79 -14
- package/dist/media-center/media-center/discover/discover-view.svelte.d.ts +2 -2
- package/dist/media-center/media-center/footer/media-center-footer.svelte +1 -1
- package/dist/media-center/media-center/handlers/index.d.ts +1 -0
- package/dist/media-center/media-center/handlers/index.js +1 -0
- package/dist/media-center/media-center/handlers/media-center-content-handler.svelte.d.ts +62 -0
- package/dist/media-center/media-center/handlers/media-center-content-handler.svelte.js +144 -0
- package/dist/media-center/media-center/header/media-center-header-mobile.svelte +10 -7
- package/dist/media-center/media-center/header/media-center-header.svelte +1 -1
- package/dist/media-center/media-center/media-center-context.svelte.d.ts +3 -2
- package/dist/media-center/media-center/media-center-context.svelte.js +30 -11
- package/dist/media-center/media-center/media-center-view.svelte +31 -13
- package/dist/media-center/media-center/menu/menu.svelte +13 -2
- package/dist/media-center/media-center/menu/menu.svelte.d.ts +1 -0
- package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.d.ts +7 -0
- package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.js +23 -8
- package/dist/media-center/media-center/moments/moments-feed-handler.svelte.d.ts +19 -2
- package/dist/media-center/media-center/moments/moments-feed-handler.svelte.js +51 -6
- package/dist/media-center/media-center/moments/moments-state.svelte.d.ts +2 -0
- package/dist/media-center/media-center/moments/moments-state.svelte.js +16 -1
- package/dist/media-center/media-center/posts-feed/posts-feed-handler.svelte.d.ts +24 -4
- package/dist/media-center/media-center/posts-feed/posts-feed-handler.svelte.js +90 -9
- package/dist/media-center/media-center/streams-feed/streams-feed-handler.svelte.d.ts +18 -3
- package/dist/media-center/media-center/streams-feed/streams-feed-handler.svelte.js +64 -9
- package/dist/posts/controls/index.d.ts +2 -1
- package/dist/posts/controls/index.js +2 -1
- package/dist/posts/controls/post-actions-generator.svelte.d.ts +20 -0
- package/dist/posts/controls/post-actions-generator.svelte.js +27 -0
- package/dist/posts/controls/post-actions-handler.svelte.d.ts +26 -0
- package/dist/posts/controls/post-actions-handler.svelte.js +56 -0
- package/dist/posts/index.d.ts +1 -0
- package/dist/posts/model/types.d.ts +1 -0
- package/dist/posts/post-viewer/cmp.post-viewer.svelte +6 -7
- package/dist/posts/post-viewer/cmp.post-viewer.svelte.d.ts +2 -2
- package/dist/posts/post-viewer/mapper.js +1 -0
- package/dist/posts/posts-player/cmp.posts-player.svelte +2 -1
- package/dist/posts/posts-player/cmp.posts-player.svelte.d.ts +2 -0
- package/dist/posts/posts-player/index.d.ts +2 -0
- package/dist/posts/posts-player/index.js +2 -1
- package/dist/posts/posts-player/posts-player-proxy.svelte +2 -1
- package/dist/posts/posts-player/posts-player-proxy.svelte.d.ts +3 -1
- package/dist/posts/posts-player/posts-player-view.svelte +127 -32
- package/dist/posts/posts-player/types.d.ts +8 -0
- package/dist/posts/sharing/index.d.ts +1 -0
- package/dist/posts/sharing/index.js +1 -0
- package/dist/posts/sharing/types.d.ts +5 -0
- package/dist/posts/sharing/types.js +1 -0
- package/dist/posts/social-interactions/types.d.ts +0 -1
- package/dist/streams/controls/index.d.ts +1 -0
- package/dist/streams/controls/index.js +1 -0
- package/dist/streams/controls/stream-actions-generator.svelte.d.ts +31 -0
- package/dist/streams/controls/stream-actions-generator.svelte.js +42 -0
- package/dist/streams/index.d.ts +1 -0
- package/dist/streams/index.js +1 -0
- package/dist/streams/layout/cmp.layout.svelte +4 -1
- package/dist/streams/layout/cmp.layout.svelte.d.ts +1 -0
- package/dist/streams/layout/element-views/cmp.short-video-stream-element.svelte +1 -0
- package/dist/streams/layout/models/mapper.js +1 -0
- package/dist/streams/sharing/index.d.ts +1 -0
- package/dist/streams/sharing/index.js +1 -0
- package/dist/streams/sharing/types.d.ts +5 -0
- package/dist/streams/sharing/types.js +1 -0
- package/dist/streams/stream-page-viewer/cmp.stream-page-viewer.svelte +43 -1
- package/dist/streams/stream-page-viewer/cmp.stream-page-viewer.svelte.d.ts +9 -0
- package/dist/streams/streams-player/cmp.streams-player.svelte +2 -1
- package/dist/streams/streams-player/cmp.streams-player.svelte.d.ts +2 -0
- package/dist/streams/streams-player/index.d.ts +2 -0
- package/dist/streams/streams-player/index.js +2 -1
- package/dist/streams/streams-player/streams-player-proxy.svelte +2 -1
- package/dist/streams/streams-player/streams-player-proxy.svelte.d.ts +2 -0
- package/dist/streams/streams-player/streams-player-view.svelte +147 -34
- package/dist/streams/streams-player/types.d.ts +7 -0
- package/dist/ui/card-actions/card-action-container.d.ts +2 -0
- package/dist/ui/card-actions/card-action-container.js +17 -0
- package/dist/ui/card-actions/cmp.card-action.svelte +28 -0
- package/dist/ui/card-actions/cmp.card-action.svelte.d.ts +10 -0
- package/dist/ui/card-actions/cmp.card-actions.svelte +71 -0
- package/dist/ui/card-actions/cmp.card-actions.svelte.d.ts +9 -0
- package/dist/ui/card-actions/index.d.ts +4 -0
- package/dist/ui/card-actions/index.js +3 -0
- package/dist/ui/card-actions/types.d.ts +9 -0
- package/dist/ui/card-actions/types.js +1 -0
- package/dist/ui/player/button/cmp.responsive-player-buttons-group.svelte +53 -0
- package/dist/ui/player/button/cmp.responsive-player-buttons-group.svelte.d.ts +10 -0
- package/dist/ui/player/button/index.d.ts +1 -0
- package/dist/ui/player/button/index.js +1 -0
- package/dist/{content-player → ui/player/content-player}/cmp.content-player.svelte +7 -29
- package/dist/{content-player → ui/player/content-player}/cmp.content-player.svelte.d.ts +6 -1
- package/dist/ui/player/content-player/content-player-config.svelte.d.ts +29 -0
- package/dist/ui/player/content-player/content-player-config.svelte.js +27 -0
- package/dist/{content-player → ui/player/content-player}/content-player-settings.svelte.d.ts +3 -3
- package/dist/{content-player → ui/player/content-player}/content-player-settings.svelte.js +2 -2
- package/dist/{content-player → ui/player/content-player}/controls-and-attachments.svelte +18 -65
- package/dist/{content-player → ui/player/content-player}/controls-and-attachments.svelte.d.ts +6 -0
- package/dist/{content-player → ui/player/content-player}/overview-panel.svelte +1 -1
- package/dist/{content-player → ui/player/content-player}/ui-manager.svelte.d.ts +3 -2
- package/dist/{content-player → ui/player/content-player}/ui-manager.svelte.js +3 -2
- package/dist/ui/player/providers/chunks-player-buffer/player-chunk-item.svelte.d.ts +0 -2
- package/dist/ui/player/providers/chunks-player-buffer/player-chunk-item.svelte.js +1 -3
- package/dist/ui/player/providers/chunks-player-buffer/player-chunk.svelte.d.ts +3 -2
- package/dist/ui/player/providers/chunks-player-buffer/player-chunk.svelte.js +11 -5
- package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.d.ts +3 -0
- package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.js +74 -8
- package/dist/ui/player/providers/default-chunks-player-buffer.svelte.d.ts +2 -0
- package/dist/ui/player/providers/default-chunks-player-buffer.svelte.js +15 -4
- package/dist/ui/player/providers/default-feed-player-buffer.svelte.d.ts +1 -0
- package/dist/ui/player/providers/default-feed-player-buffer.svelte.js +27 -5
- package/dist/ui/player/providers/types.d.ts +1 -0
- package/dist/ui/shadow-dom/cmp.shadow-root.svelte +9 -4
- package/dist/ui/shadow-dom/colors.scss +2 -0
- package/package.json +6 -2
- package/dist/content-player/content-player-config.svelte.d.ts +0 -51
- package/dist/content-player/content-player-config.svelte.js +0 -48
- package/dist/posts/controls/cmp.controls.svelte +0 -120
- package/dist/posts/controls/cmp.controls.svelte.d.ts +0 -16
- /package/dist/{media-center/categories-following → external-api/data-providers/mocks}/mock-categories-following-handler.svelte.js +0 -0
- /package/dist/{media-center/membership → external-api/data-providers/mocks}/mock-membership-handler.svelte.js +0 -0
- /package/dist/{media-center/navigation → external-api/data-providers/mocks}/mock-navigation-handler.svelte.js +0 -0
- /package/dist/{content-player → ui/player/content-player}/index.d.ts +0 -0
- /package/dist/{content-player → ui/player/content-player}/index.js +0 -0
- /package/dist/{content-player → ui/player/content-player}/overview-panel.svelte.d.ts +0 -0
|
@@ -27,9 +27,6 @@ const selectCategory = (categoryId) => __awaiter(void 0, void 0, void 0, functio
|
|
|
27
27
|
}
|
|
28
28
|
switch (context.mediaCenterMode) {
|
|
29
29
|
case 'posts-feed':
|
|
30
|
-
if (!context.postsFeedHandler.feedPlayerProps) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
30
|
if (context.categoriesHandler.selectedCategoryId === categoryId) {
|
|
34
31
|
return;
|
|
35
32
|
}
|
|
@@ -48,11 +45,26 @@ const selectCategory = (categoryId) => __awaiter(void 0, void 0, void 0, functio
|
|
|
48
45
|
Utils.assertUnreachable(context.mediaCenterMode);
|
|
49
46
|
}
|
|
50
47
|
});
|
|
51
|
-
const
|
|
52
|
-
context.
|
|
48
|
+
const resetMediaCenterMode = () => {
|
|
49
|
+
if (!context.mediaCenterMode) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
switch (context.mediaCenterMode) {
|
|
53
|
+
case 'streams-feed':
|
|
54
|
+
context.playStreamsFeed({ filter: { categoryId: null } });
|
|
55
|
+
break;
|
|
56
|
+
case 'discover':
|
|
57
|
+
context.activateDiscover({ categoryId: null });
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
context.playPostsFeed({ filter: { categoryId: null } });
|
|
61
|
+
}
|
|
53
62
|
};
|
|
54
|
-
const
|
|
55
|
-
context.
|
|
63
|
+
const activateSelectedShortVideoPlayer = (shortVideo, categoryId) => {
|
|
64
|
+
context.playPostsFeed({ init: { prefetchedItems: [shortVideo] }, filter: { categoryId } });
|
|
65
|
+
};
|
|
66
|
+
const activateSelectedStreamPlayer = (stream, categoryId) => {
|
|
67
|
+
context.playStreamsFeed({ init: { prefetchedStreams: [stream] }, filter: { categoryId } });
|
|
56
68
|
};
|
|
57
69
|
const activateSelectedStreamOfCategoryPlayer = (id, prefetchedStreams, categoryId) => {
|
|
58
70
|
context.playStreamsFeed({ filter: { categoryId }, init: { prefetchedStreams, initialStreamId: id } });
|
|
@@ -138,24 +150,24 @@ const swipeToOpen = (node) => {
|
|
|
138
150
|
<div class="media-center__content-container" use:swipeToOpen>
|
|
139
151
|
{#if context.mediaCenterMode === 'posts-feed' && context.postsFeedHandler.feedPlayerProps}
|
|
140
152
|
<div class="media-center__content" class:media-center__content--faded={context.overlayIsActive} transition:fade={{ duration: 300 }}>
|
|
141
|
-
<PostsPlayerView {...context.postsFeedHandler.feedPlayerProps} />
|
|
153
|
+
<PostsPlayerView {...context.postsFeedHandler.feedPlayerProps} managementActions={context.postsFeedHandler.managementActions} />
|
|
142
154
|
</div>
|
|
143
155
|
{:else if context.mediaCenterMode === 'streams-feed' && context.streamsFeedHandler.feedPlayerProps}
|
|
144
156
|
<div class="media-center__content" class:media-center__content--faded={context.overlayIsActive} transition:fade={{ duration: 300 }}>
|
|
145
|
-
<StreamsPlayerView {...context.streamsFeedHandler.feedPlayerProps} />
|
|
157
|
+
<StreamsPlayerView {...context.streamsFeedHandler.feedPlayerProps} managementActions={context.streamsFeedHandler.managementActions} />
|
|
146
158
|
</div>
|
|
147
159
|
{:else if context.mediaCenterMode === 'discover'}
|
|
148
160
|
<div class="media-center__content" transition:fade={{ duration: 300 }}>
|
|
149
161
|
<DiscoverPanel
|
|
150
162
|
context={context}
|
|
151
163
|
on={{
|
|
152
|
-
shortVideoSelected:
|
|
153
|
-
streamSelected:
|
|
164
|
+
shortVideoSelected: activateSelectedShortVideoPlayer,
|
|
165
|
+
streamSelected: activateSelectedStreamPlayer
|
|
154
166
|
}} />
|
|
155
167
|
</div>
|
|
156
168
|
{:else if context.mediaCenterMode === 'moments' && context.momentsFeedHandler.momentsPlayerProps}
|
|
157
169
|
<div class="media-center__content" class:media-center__content--faded={context.overlayIsActive} transition:fade={{ duration: 300 }}>
|
|
158
|
-
<PostsPlayerView {...context.momentsFeedHandler.momentsPlayerProps} />
|
|
170
|
+
<PostsPlayerView {...context.momentsFeedHandler.momentsPlayerProps} managementActions={context.momentsFeedHandler.managementActions} />
|
|
159
171
|
</div>
|
|
160
172
|
{/if}
|
|
161
173
|
</div>
|
|
@@ -163,7 +175,13 @@ const swipeToOpen = (node) => {
|
|
|
163
175
|
{#if context.menuActive}
|
|
164
176
|
<div class="menu-overlay" class:menu-overlay--mobile={isMobileView} onclick={context.hideMenu} onkeydown={() => {}} role="none">
|
|
165
177
|
<div class="menu-overlay__panel">
|
|
166
|
-
<Menu
|
|
178
|
+
<Menu
|
|
179
|
+
context={context}
|
|
180
|
+
on={{
|
|
181
|
+
categorySelected: selectCategory,
|
|
182
|
+
streamSelected: (stream) => activateSelectedStreamPlayer(stream, null),
|
|
183
|
+
resetModeRequested: resetMediaCenterMode
|
|
184
|
+
}} />
|
|
167
185
|
</div>
|
|
168
186
|
</div>
|
|
169
187
|
{/if}
|
|
@@ -71,7 +71,7 @@ const styles = $derived.by(() => {
|
|
|
71
71
|
<div class="media-center-menu__tree">
|
|
72
72
|
<div class="media-center-menu__tree-item">
|
|
73
73
|
<div class="menu-item" class:menu-item--active={!context.categoriesHandler.selectedCategoryId}>
|
|
74
|
-
<div class="menu-item__content" onclick={() =>
|
|
74
|
+
<div class="menu-item__content" onclick={() => on.resetModeRequested()} onkeydown={() => {}} role="button" tabindex="0">
|
|
75
75
|
<div class="menu-item__text" class:menu-item__text--active={!context.categoriesHandler.selectedCategoryId}>
|
|
76
76
|
{context.mediaCenterMode === 'discover' ? localization.discoverLabel : localization.feedLabel}
|
|
77
77
|
</div>
|
|
@@ -94,7 +94,9 @@ const styles = $derived.by(() => {
|
|
|
94
94
|
</div>
|
|
95
95
|
{#if category.value.tag}
|
|
96
96
|
<div class="menu-item__tag" style="background-color: {category.value.tag.backgroundColor}; color: {category.value.tag.fontColor};">
|
|
97
|
-
|
|
97
|
+
<div class="menu-item__tag-text">
|
|
98
|
+
{category.value.tag.text}
|
|
99
|
+
</div>
|
|
98
100
|
</div>
|
|
99
101
|
{/if}
|
|
100
102
|
</div>
|
|
@@ -296,10 +298,19 @@ const styles = $derived.by(() => {
|
|
|
296
298
|
border-radius: 0.25rem;
|
|
297
299
|
padding: 0.3125rem 0.375rem;
|
|
298
300
|
font-size: 0.5rem;
|
|
301
|
+
line-height: 1.2;
|
|
299
302
|
font-weight: 600;
|
|
300
303
|
margin-top: -1rem;
|
|
301
304
|
margin-left: 0.25rem;
|
|
302
305
|
}
|
|
306
|
+
.menu-item__tag-text {
|
|
307
|
+
display: -webkit-box;
|
|
308
|
+
line-clamp: 2;
|
|
309
|
+
-webkit-line-clamp: 2;
|
|
310
|
+
-webkit-box-orient: vertical;
|
|
311
|
+
overflow: hidden;
|
|
312
|
+
text-overflow: ellipsis;
|
|
313
|
+
}
|
|
303
314
|
.menu-item__collapser {
|
|
304
315
|
--icon--color: var(--sc-mc-color--text-primary);
|
|
305
316
|
--icon--size: 1rem;
|
|
@@ -7,4 +7,11 @@ export declare class PopularStreamsPanelHandler {
|
|
|
7
7
|
constructor(dataProvider: IMediaCenterDataProvider);
|
|
8
8
|
get streamSectionItems(): StreamPlayerModel[];
|
|
9
9
|
init: () => Promise<void>;
|
|
10
|
+
onStreamModified: (data: {
|
|
11
|
+
stream: StreamPlayerModel;
|
|
12
|
+
}) => void;
|
|
13
|
+
onStreamDeleted: (data: {
|
|
14
|
+
id: string;
|
|
15
|
+
}) => void;
|
|
16
|
+
private loadStreams;
|
|
10
17
|
}
|
|
@@ -10,14 +10,29 @@ export class PopularStreamsPanelHandler {
|
|
|
10
10
|
}
|
|
11
11
|
init = async () => {
|
|
12
12
|
if (this._state === 'not-initialized') {
|
|
13
|
-
this.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
await this.loadStreams();
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
onStreamModified = (data) => {
|
|
17
|
+
const { stream } = data;
|
|
18
|
+
if (this._streams.some((s) => s.id === stream.id)) {
|
|
19
|
+
this.loadStreams();
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
onStreamDeleted = (data) => {
|
|
23
|
+
const { id } = data;
|
|
24
|
+
if (this._streams.some((s) => s.id === id)) {
|
|
25
|
+
this.loadStreams();
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
loadStreams = async () => {
|
|
29
|
+
this._state = 'loading';
|
|
30
|
+
try {
|
|
31
|
+
const streamsResponse = await this.dataProvider.streamPlayer.getStreamsCursor({ filter: {}, limit: 2 });
|
|
32
|
+
this._streams = streamsResponse.items;
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
this._state = 'ready';
|
|
21
36
|
}
|
|
22
37
|
};
|
|
23
38
|
}
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import type { IMediaCenterDataProvider } from '../../config/types';
|
|
2
2
|
import type { MediaCenterState } from '../../navigation';
|
|
3
|
-
import type { PostsPlayerProps } from '../../../posts/posts-player/types';
|
|
3
|
+
import type { PostPlayerModel, PostsPlayerProps, PostManagementActions } from '../../../posts/posts-player/types';
|
|
4
4
|
import type { ICloseOrchestrator } from '../../../ui/player/close-orchestrator';
|
|
5
|
+
import type { IPlayerBuffer } from '../../../ui/player/providers';
|
|
5
6
|
import { MomentsState } from './moments-state.svelte';
|
|
6
|
-
import { MediaCenterSettingsHandler } from '../handlers';
|
|
7
|
+
import { MediaCenterContentHandler, MediaCenterSettingsHandler } from '../handlers';
|
|
7
8
|
export declare class MomentsFeedHandler {
|
|
8
9
|
momentsState: MomentsState;
|
|
9
10
|
private _active;
|
|
10
11
|
private _momentsPlayerProps;
|
|
11
12
|
private _dataProvider;
|
|
12
13
|
private _mediaCenterSettingsHandler;
|
|
14
|
+
private _mediaCenterContentHandler;
|
|
13
15
|
private _closeOrchestrator;
|
|
14
16
|
private _callbacks;
|
|
15
17
|
constructor(data: {
|
|
16
18
|
dataProvider: IMediaCenterDataProvider;
|
|
17
19
|
mediaCenterSettingsHandler: MediaCenterSettingsHandler;
|
|
20
|
+
mediaCenterContentHandler: MediaCenterContentHandler;
|
|
18
21
|
closeOrchestrator: ICloseOrchestrator;
|
|
19
22
|
on: Callbacks;
|
|
20
23
|
});
|
|
@@ -22,10 +25,24 @@ export declare class MomentsFeedHandler {
|
|
|
22
25
|
get momentsPlayerProps(): PostsPlayerProps | null;
|
|
23
26
|
get hasUnwatchedMoments(): boolean;
|
|
24
27
|
get hasMoments(): boolean;
|
|
28
|
+
get feedBuffer(): IPlayerBuffer<PostPlayerModel> | null;
|
|
29
|
+
get managementActions(): PostManagementActions;
|
|
25
30
|
deactivate: () => void;
|
|
26
31
|
activate: (data?: {
|
|
27
32
|
initialMomentId?: string | null;
|
|
33
|
+
tryRestoreState?: boolean;
|
|
28
34
|
}) => Promise<void>;
|
|
35
|
+
onPostCreated: (data: {
|
|
36
|
+
post: PostPlayerModel;
|
|
37
|
+
isPublished: boolean;
|
|
38
|
+
}) => void;
|
|
39
|
+
onPostModified: (data: {
|
|
40
|
+
post: PostPlayerModel;
|
|
41
|
+
isPublished: boolean;
|
|
42
|
+
}) => false | undefined;
|
|
43
|
+
onPostDeleted: (data: {
|
|
44
|
+
id: string;
|
|
45
|
+
}) => void;
|
|
29
46
|
private tryRestoreState;
|
|
30
47
|
}
|
|
31
48
|
type Callbacks = {
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
+
import { PostType } from '../../../core/enums';
|
|
1
2
|
import { initBufferFromProvider } from '../../../ui/player/providers/service';
|
|
2
3
|
import { MomentsState } from './moments-state.svelte';
|
|
3
|
-
import { MediaCenterSettingsHandler } from '../handlers';
|
|
4
|
+
import { MediaCenterContentHandler, MediaCenterSettingsHandler } from '../handlers';
|
|
4
5
|
export class MomentsFeedHandler {
|
|
5
6
|
momentsState;
|
|
6
7
|
_active = $state(false);
|
|
7
8
|
_momentsPlayerProps = $state.raw(null);
|
|
8
9
|
_dataProvider;
|
|
9
10
|
_mediaCenterSettingsHandler;
|
|
11
|
+
_mediaCenterContentHandler;
|
|
10
12
|
_closeOrchestrator;
|
|
11
13
|
_callbacks;
|
|
12
14
|
constructor(data) {
|
|
13
15
|
const { dataProvider, mediaCenterSettingsHandler, closeOrchestrator, on } = data;
|
|
14
16
|
this.momentsState = new MomentsState(dataProvider);
|
|
15
17
|
this._mediaCenterSettingsHandler = mediaCenterSettingsHandler;
|
|
18
|
+
this._mediaCenterContentHandler = data.mediaCenterContentHandler;
|
|
16
19
|
this._dataProvider = dataProvider;
|
|
17
20
|
this._closeOrchestrator = closeOrchestrator;
|
|
18
21
|
this._callbacks = on;
|
|
@@ -29,12 +32,26 @@ export class MomentsFeedHandler {
|
|
|
29
32
|
get hasMoments() {
|
|
30
33
|
return this.momentsState.allMoments.length > 0;
|
|
31
34
|
}
|
|
35
|
+
get feedBuffer() {
|
|
36
|
+
if (!this._momentsPlayerProps) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
const buffer = this._momentsPlayerProps.dataProvider.type === 'buffer' ? this._momentsPlayerProps.dataProvider.buffer : null;
|
|
40
|
+
return buffer;
|
|
41
|
+
}
|
|
42
|
+
get managementActions() {
|
|
43
|
+
return {
|
|
44
|
+
editPost: this._mediaCenterContentHandler.editPost,
|
|
45
|
+
editArticle: null,
|
|
46
|
+
deletePost: this._mediaCenterContentHandler.deletePost
|
|
47
|
+
};
|
|
48
|
+
}
|
|
32
49
|
deactivate = () => {
|
|
33
50
|
this._active = false;
|
|
34
51
|
this._momentsPlayerProps = null;
|
|
35
52
|
};
|
|
36
53
|
activate = async (data) => {
|
|
37
|
-
if (data?.initialMomentId && this.tryRestoreState(data.initialMomentId)) {
|
|
54
|
+
if (data?.tryRestoreState && data?.initialMomentId && this.tryRestoreState(data.initialMomentId)) {
|
|
38
55
|
// Already active with the requested buffer
|
|
39
56
|
return;
|
|
40
57
|
}
|
|
@@ -46,7 +63,8 @@ export class MomentsFeedHandler {
|
|
|
46
63
|
onEndReached: this._callbacks.playerReachedEnd
|
|
47
64
|
}))
|
|
48
65
|
},
|
|
49
|
-
socialInteractionsHandler: this._dataProvider.handlers?.
|
|
66
|
+
socialInteractionsHandler: this._dataProvider.handlers?.postSocialInteractionsHandler,
|
|
67
|
+
sharingHandler: this._dataProvider.handlers?.postSharingHandler,
|
|
50
68
|
analyticsHandler: this._dataProvider.handlers?.analyticsHandler,
|
|
51
69
|
playerSettings: this._mediaCenterSettingsHandler.playerSettings,
|
|
52
70
|
closeOrchestrator: this._closeOrchestrator,
|
|
@@ -60,14 +78,41 @@ export class MomentsFeedHandler {
|
|
|
60
78
|
};
|
|
61
79
|
this._active = true;
|
|
62
80
|
};
|
|
81
|
+
onPostCreated = (data) => {
|
|
82
|
+
if (!this._active || !data.isPublished || data.post.postType !== PostType.Moment) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
// Reactivate to include the new moment
|
|
86
|
+
this.activate();
|
|
87
|
+
};
|
|
88
|
+
onPostModified = (data) => {
|
|
89
|
+
if (!this._active) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
const postStillInTheFeed = data.isPublished && data.post.postType === PostType.Moment;
|
|
93
|
+
if (postStillInTheFeed) {
|
|
94
|
+
this.activate({ initialMomentId: data.post.id });
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.onPostDeleted({ id: data.post.id });
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
onPostDeleted = (data) => {
|
|
101
|
+
const nextMomentId = this.momentsState.removeMomentById(data.id);
|
|
102
|
+
if (nextMomentId) {
|
|
103
|
+
this.activate({ initialMomentId: nextMomentId });
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
this._callbacks.playerReachedEnd();
|
|
107
|
+
}
|
|
108
|
+
};
|
|
63
109
|
tryRestoreState = (initialMomentId) => {
|
|
64
110
|
if (!this._active || !this._momentsPlayerProps) {
|
|
65
111
|
return false;
|
|
66
112
|
}
|
|
67
|
-
|
|
68
|
-
if (!buffer) {
|
|
113
|
+
if (!this.feedBuffer) {
|
|
69
114
|
return false;
|
|
70
115
|
}
|
|
71
|
-
return
|
|
116
|
+
return this.feedBuffer.tryActivateItemById(initialMomentId);
|
|
72
117
|
};
|
|
73
118
|
}
|
|
@@ -4,6 +4,7 @@ import type { IChunksPlayerDataProvider } from '../../../ui/player/providers';
|
|
|
4
4
|
export declare class MomentsState {
|
|
5
5
|
private readonly dataProvider;
|
|
6
6
|
private momentsSeenLocally;
|
|
7
|
+
private removedMomentsIds;
|
|
7
8
|
constructor(dataProvider: IMediaCenterDataProvider);
|
|
8
9
|
get allMoments(): {
|
|
9
10
|
id: string;
|
|
@@ -16,6 +17,7 @@ export declare class MomentsState {
|
|
|
16
17
|
isSeen: boolean;
|
|
17
18
|
}[];
|
|
18
19
|
markMomentAsSeen: (momentId: string) => void;
|
|
20
|
+
removeMomentById: (id: string) => string | null;
|
|
19
21
|
generatePlayerDataProvider: (data: {
|
|
20
22
|
initialId: string | null | undefined;
|
|
21
23
|
onEndReached: () => void;
|
|
@@ -3,11 +3,12 @@ import {} from '../../../posts/posts-player';
|
|
|
3
3
|
export class MomentsState {
|
|
4
4
|
dataProvider;
|
|
5
5
|
momentsSeenLocally = $state.raw([]);
|
|
6
|
+
removedMomentsIds = $state.raw([]);
|
|
6
7
|
constructor(dataProvider) {
|
|
7
8
|
this.dataProvider = dataProvider;
|
|
8
9
|
}
|
|
9
10
|
get allMoments() {
|
|
10
|
-
return this.dataProvider.model?.moments ?? [];
|
|
11
|
+
return (this.dataProvider.model?.moments ?? []).filter((m) => !this.removedMomentsIds.includes(m.id));
|
|
11
12
|
}
|
|
12
13
|
get unwatchedMoments() {
|
|
13
14
|
return this.allMoments.filter((s) => !s.isSeen && !this.momentsSeenLocally.includes(s.id));
|
|
@@ -17,6 +18,20 @@ export class MomentsState {
|
|
|
17
18
|
this.momentsSeenLocally = [...this.momentsSeenLocally, momentId];
|
|
18
19
|
}
|
|
19
20
|
};
|
|
21
|
+
removeMomentById = (id) => {
|
|
22
|
+
const currentIndex = this.allMoments.findIndex((m) => m.id === id);
|
|
23
|
+
let nextMomentId = null;
|
|
24
|
+
if (currentIndex !== -1) {
|
|
25
|
+
if (currentIndex < this.allMoments.length - 1) {
|
|
26
|
+
nextMomentId = this.allMoments[currentIndex + 1].id;
|
|
27
|
+
}
|
|
28
|
+
else if (currentIndex > 0) {
|
|
29
|
+
nextMomentId = this.allMoments[currentIndex - 1].id;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
this.removedMomentsIds = [...this.removedMomentsIds, id];
|
|
33
|
+
return nextMomentId;
|
|
34
|
+
};
|
|
20
35
|
generatePlayerDataProvider = (data) => {
|
|
21
36
|
const { initialId, onEndReached } = data;
|
|
22
37
|
const collectionCapacity = 5;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { IMediaCenterDataProvider } from '../../config/types';
|
|
2
2
|
import type { MediaCenterState } from '../../navigation';
|
|
3
|
-
import type { PostPlayerModel, PostsPlayerProps } from '../../../posts/posts-player/types';
|
|
3
|
+
import type { PostManagementActions, PostPlayerModel, PostsPlayerProps } from '../../../posts/posts-player/types';
|
|
4
4
|
import type { ICloseOrchestrator } from '../../../ui/player/close-orchestrator';
|
|
5
|
-
import type { IPlayerDataProvider } from '../../../ui/player/providers';
|
|
6
|
-
import { MediaCenterSettingsHandler } from '../handlers';
|
|
5
|
+
import type { IPlayerBuffer, IPlayerDataProvider } from '../../../ui/player/providers';
|
|
6
|
+
import { MediaCenterContentHandler, MediaCenterSettingsHandler } from '../handlers';
|
|
7
7
|
import type { PostsFeedFilter, PostsFeedProviderInit } from './types';
|
|
8
8
|
export declare class PostsFeedHandler {
|
|
9
9
|
private _state;
|
|
@@ -11,11 +11,13 @@ export declare class PostsFeedHandler {
|
|
|
11
11
|
private _feedPlayerData;
|
|
12
12
|
private _dataProvider;
|
|
13
13
|
private _mediaCenterSettingsHandler;
|
|
14
|
+
private _mediaCenterContentHandler;
|
|
14
15
|
private _closeOrchestrator;
|
|
15
16
|
private _callbacks;
|
|
16
17
|
constructor(data: {
|
|
17
18
|
dataProvider: IMediaCenterDataProvider;
|
|
18
19
|
mediaCenterSettingsHandler: MediaCenterSettingsHandler;
|
|
20
|
+
mediaCenterContentHandler: MediaCenterContentHandler;
|
|
19
21
|
closeOrchestrator: ICloseOrchestrator;
|
|
20
22
|
on: Callbacks;
|
|
21
23
|
});
|
|
@@ -23,15 +25,33 @@ export declare class PostsFeedHandler {
|
|
|
23
25
|
get active(): boolean;
|
|
24
26
|
get loading(): boolean;
|
|
25
27
|
get feedPlayerProps(): PostsPlayerProps | null;
|
|
28
|
+
get feedBuffer(): IPlayerBuffer<PostPlayerModel> | null;
|
|
29
|
+
get managementActions(): PostManagementActions;
|
|
30
|
+
get canReload(): boolean;
|
|
26
31
|
deactivate: () => void;
|
|
27
|
-
|
|
32
|
+
activateWithDataProvider: (data: {
|
|
28
33
|
dataProvider: IPlayerDataProvider<PostPlayerModel>;
|
|
29
34
|
onPostActivated?: (id: string) => void;
|
|
30
35
|
}) => Promise<void>;
|
|
31
36
|
activate: (options: Partial<{
|
|
32
37
|
filter: PostsFeedFilter;
|
|
33
38
|
init: PostsFeedProviderInit;
|
|
39
|
+
tryRestoreState?: boolean;
|
|
34
40
|
}>) => Promise<void>;
|
|
41
|
+
onPostCreated: (data: {
|
|
42
|
+
post: PostPlayerModel;
|
|
43
|
+
categories: string[];
|
|
44
|
+
isPublished: boolean;
|
|
45
|
+
}) => false | undefined;
|
|
46
|
+
onPostModified: (data: {
|
|
47
|
+
post: PostPlayerModel;
|
|
48
|
+
categories: string[];
|
|
49
|
+
isPublished: boolean;
|
|
50
|
+
}) => false | undefined;
|
|
51
|
+
onPostDeleted: (data: {
|
|
52
|
+
id: string;
|
|
53
|
+
}) => false | undefined;
|
|
54
|
+
private checkIfEditedPostAffectsFeed;
|
|
35
55
|
private tryRestoreState;
|
|
36
56
|
private makePostsPlayerProps;
|
|
37
57
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { PostType } from '../../..';
|
|
1
2
|
import { Utils } from '../../../core/utils';
|
|
2
3
|
import { initBufferFromProvider } from '../../../ui/player/providers/service';
|
|
3
|
-
import { MediaCenterSettingsHandler } from '../handlers';
|
|
4
|
+
import { MediaCenterContentHandler, MediaCenterSettingsHandler } from '../handlers';
|
|
4
5
|
import { FeedProvidersGenerator } from './feed-providers-generator';
|
|
5
6
|
export class PostsFeedHandler {
|
|
6
7
|
_state = $state('inactive');
|
|
@@ -8,12 +9,14 @@ export class PostsFeedHandler {
|
|
|
8
9
|
_feedPlayerData = $state.raw(null);
|
|
9
10
|
_dataProvider;
|
|
10
11
|
_mediaCenterSettingsHandler;
|
|
12
|
+
_mediaCenterContentHandler;
|
|
11
13
|
_closeOrchestrator;
|
|
12
14
|
_callbacks;
|
|
13
15
|
constructor(data) {
|
|
14
|
-
const { dataProvider, mediaCenterSettingsHandler, closeOrchestrator, on } = data;
|
|
16
|
+
const { dataProvider, mediaCenterSettingsHandler, mediaCenterContentHandler, closeOrchestrator, on } = data;
|
|
15
17
|
this._providersGenerator = new FeedProvidersGenerator(dataProvider);
|
|
16
18
|
this._mediaCenterSettingsHandler = mediaCenterSettingsHandler;
|
|
19
|
+
this._mediaCenterContentHandler = mediaCenterContentHandler;
|
|
17
20
|
this._dataProvider = dataProvider;
|
|
18
21
|
this._closeOrchestrator = closeOrchestrator;
|
|
19
22
|
this._callbacks = on;
|
|
@@ -30,11 +33,44 @@ export class PostsFeedHandler {
|
|
|
30
33
|
get feedPlayerProps() {
|
|
31
34
|
return this._feedPlayerData?.props || null;
|
|
32
35
|
}
|
|
36
|
+
get feedBuffer() {
|
|
37
|
+
if (!this._feedPlayerData) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const buffer = this._feedPlayerData.props.dataProvider.type === 'buffer' ? this._feedPlayerData.props.dataProvider.buffer : null;
|
|
41
|
+
return buffer;
|
|
42
|
+
}
|
|
43
|
+
get managementActions() {
|
|
44
|
+
return {
|
|
45
|
+
editPost: this._mediaCenterContentHandler.editPost,
|
|
46
|
+
editArticle: this._mediaCenterContentHandler.editArticle,
|
|
47
|
+
deletePost: this._mediaCenterContentHandler.deletePost
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
get canReload() {
|
|
51
|
+
switch (this._state) {
|
|
52
|
+
case 'ready': {
|
|
53
|
+
if (!this.feedBuffer) {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
return this.feedBuffer.currentIndex > 0;
|
|
57
|
+
}
|
|
58
|
+
case 'inactive': {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
case 'loading': {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
default: {
|
|
65
|
+
Utils.assertUnreachable(this._state);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
33
69
|
deactivate = () => {
|
|
34
70
|
this._state = 'inactive';
|
|
35
71
|
this._feedPlayerData = null;
|
|
36
72
|
};
|
|
37
|
-
|
|
73
|
+
activateWithDataProvider = async (data) => {
|
|
38
74
|
const { dataProvider, onPostActivated } = data;
|
|
39
75
|
const on = {
|
|
40
76
|
postActivated: (id) => {
|
|
@@ -57,8 +93,8 @@ export class PostsFeedHandler {
|
|
|
57
93
|
}
|
|
58
94
|
};
|
|
59
95
|
activate = async (options) => {
|
|
60
|
-
const { filter, init } = options;
|
|
61
|
-
if (init?.initialPostId && this.tryRestoreState(init.initialPostId, filter)) {
|
|
96
|
+
const { filter, init, tryRestoreState } = options;
|
|
97
|
+
if (tryRestoreState && init?.initialPostId && this.tryRestoreState(init.initialPostId, filter)) {
|
|
62
98
|
// Already active with the requested buffer
|
|
63
99
|
return;
|
|
64
100
|
}
|
|
@@ -79,21 +115,66 @@ export class PostsFeedHandler {
|
|
|
79
115
|
this._state = 'ready';
|
|
80
116
|
}
|
|
81
117
|
};
|
|
118
|
+
onPostCreated = (data) => {
|
|
119
|
+
if (this._state !== 'ready') {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
if (!this.checkIfEditedPostAffectsFeed(data)) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
this.activate({
|
|
126
|
+
filter: this._feedPlayerData?.filter,
|
|
127
|
+
init: { initialPostId: data.post.id, prefetchedItems: [data.post] }
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
onPostModified = (data) => {
|
|
131
|
+
if (this._state !== 'ready') {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
const postStillInTheFeed = this.checkIfEditedPostAffectsFeed(data);
|
|
135
|
+
if (postStillInTheFeed) {
|
|
136
|
+
this.activate({
|
|
137
|
+
filter: this._feedPlayerData?.filter,
|
|
138
|
+
init: { initialPostId: data.post.id, prefetchedItems: [data.post] }
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
this.onPostDeleted({ id: data.post.id });
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
onPostDeleted = (data) => {
|
|
146
|
+
if (this._state !== 'ready') {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
this.feedBuffer?.removeItemById(data.id);
|
|
150
|
+
};
|
|
151
|
+
checkIfEditedPostAffectsFeed = (data) => {
|
|
152
|
+
const { post, categories, isPublished } = data;
|
|
153
|
+
if (!isPublished) {
|
|
154
|
+
// Unpublished posts never affect the feed
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
if (post.postType === PostType.Moment) {
|
|
158
|
+
// Moments are processed separately
|
|
159
|
+
return false;
|
|
160
|
+
}
|
|
161
|
+
return !this._feedPlayerData?.filter.categoryId || categories.includes(this._feedPlayerData.filter.categoryId);
|
|
162
|
+
};
|
|
82
163
|
tryRestoreState = (initialPostId, filter) => {
|
|
83
164
|
if (this._state !== 'ready' || !this._feedPlayerData || !Utils.areEqual(this._feedPlayerData.filter, filter)) {
|
|
84
165
|
return false;
|
|
85
166
|
}
|
|
86
|
-
|
|
87
|
-
if (!buffer) {
|
|
167
|
+
if (!this.feedBuffer) {
|
|
88
168
|
return false;
|
|
89
169
|
}
|
|
90
|
-
return
|
|
170
|
+
return this.feedBuffer.tryActivateItemById(initialPostId);
|
|
91
171
|
};
|
|
92
172
|
makePostsPlayerProps = (data) => {
|
|
93
173
|
const { dataProvider, on } = data;
|
|
94
174
|
return {
|
|
95
175
|
dataProvider: { type: 'buffer', buffer: initBufferFromProvider(dataProvider) },
|
|
96
|
-
socialInteractionsHandler: this._dataProvider.handlers?.
|
|
176
|
+
socialInteractionsHandler: this._dataProvider.handlers?.postSocialInteractionsHandler,
|
|
177
|
+
sharingHandler: this._dataProvider.handlers?.postSharingHandler,
|
|
97
178
|
analyticsHandler: this._dataProvider.handlers?.analyticsHandler,
|
|
98
179
|
playerSettings: this._mediaCenterSettingsHandler.playerSettings,
|
|
99
180
|
closeOrchestrator: this._closeOrchestrator,
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { IMediaCenterDataProvider } from '../../config/types';
|
|
2
2
|
import type { MediaCenterState } from '../../navigation';
|
|
3
|
-
import
|
|
3
|
+
import { StreamsPlayerBuffer } from '../../../streams/streams-player/streams-player-buffer.svelte';
|
|
4
|
+
import type { StreamsPlayerProps, IStreamsPlayerDataProvider, StreamManagementActions, StreamPlayerModel } from '../../../streams/streams-player/types';
|
|
4
5
|
import type { ICloseOrchestrator } from '../../../ui/player/close-orchestrator';
|
|
5
|
-
import { MediaCenterSettingsHandler } from '../handlers';
|
|
6
|
+
import { MediaCenterContentHandler, MediaCenterSettingsHandler } from '../handlers';
|
|
6
7
|
import type { StreamsFeedFilter, StreamsFeedProviderInit } from './types';
|
|
7
8
|
export declare class StreamsFeedHandler {
|
|
8
9
|
private _state;
|
|
@@ -10,11 +11,13 @@ export declare class StreamsFeedHandler {
|
|
|
10
11
|
private _feedPlayerData;
|
|
11
12
|
private _dataProvider;
|
|
12
13
|
private _mediaCenterSettingsHandler;
|
|
14
|
+
private _mediaCenterContentHandler;
|
|
13
15
|
private _closeOrchestrator;
|
|
14
16
|
private _callbacks;
|
|
15
17
|
constructor(data: {
|
|
16
18
|
dataProvider: IMediaCenterDataProvider;
|
|
17
19
|
mediaCenterSettingsHandler: MediaCenterSettingsHandler;
|
|
20
|
+
mediaCenterContentHandler: MediaCenterContentHandler;
|
|
18
21
|
closeOrchestrator: ICloseOrchestrator;
|
|
19
22
|
on: Callbacks;
|
|
20
23
|
});
|
|
@@ -22,8 +25,11 @@ export declare class StreamsFeedHandler {
|
|
|
22
25
|
get active(): boolean;
|
|
23
26
|
get loading(): boolean;
|
|
24
27
|
get feedPlayerProps(): StreamsPlayerProps | null;
|
|
28
|
+
get feedBuffer(): StreamsPlayerBuffer | null;
|
|
29
|
+
get managementActions(): StreamManagementActions | undefined;
|
|
30
|
+
get canReload(): boolean;
|
|
25
31
|
deactivate: () => void;
|
|
26
|
-
|
|
32
|
+
activateWithDataProvider: (data: {
|
|
27
33
|
dataProvider: IStreamsPlayerDataProvider;
|
|
28
34
|
onStreamActivated?: (data: {
|
|
29
35
|
id: string;
|
|
@@ -34,7 +40,16 @@ export declare class StreamsFeedHandler {
|
|
|
34
40
|
activate: (options: Partial<{
|
|
35
41
|
filter: StreamsFeedFilter;
|
|
36
42
|
init: StreamsFeedProviderInit;
|
|
43
|
+
tryRestoreState?: boolean;
|
|
37
44
|
}>) => Promise<void>;
|
|
45
|
+
onStreamModified: (data: {
|
|
46
|
+
stream: StreamPlayerModel;
|
|
47
|
+
categories: string[];
|
|
48
|
+
isPublished: boolean;
|
|
49
|
+
}) => false | undefined;
|
|
50
|
+
onStreamPageDeleted: (data: {
|
|
51
|
+
id: string;
|
|
52
|
+
}) => false | undefined;
|
|
38
53
|
private tryRestoreState;
|
|
39
54
|
private makeStreamsPlayerProps;
|
|
40
55
|
}
|