@streamscloud/embeddable 14.0.0-rc.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/core/analytics.profile-id.d.ts +5 -0
- package/dist/core/{analytics.installation-id.js → analytics.profile-id.js} +10 -20
- package/dist/external-api/data-providers/internal-media-center-analytics-handler.d.ts +14 -14
- package/dist/external-api/data-providers/internal-media-center-analytics-handler.js +19 -170
- package/dist/external-api/data-providers/internal-media-center-data-provider.svelte.js +6 -6
- package/dist/external-api/data-providers/internal-post-analytics-handler.d.ts +7 -7
- package/dist/external-api/data-providers/internal-post-analytics-handler.js +11 -72
- package/dist/external-api/data-providers/internal-stream-analytics-handler.d.ts +13 -12
- package/dist/external-api/data-providers/internal-stream-analytics-handler.js +18 -162
- 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/external-api/data-providers/post-data-loaders/mapper.js +3 -1
- 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 +90 -47
- 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 +16 -7
- 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/media-center/media-center/streams-in-category/streams-in-category-panel.svelte +2 -6
- 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 +132 -34
- package/dist/posts/posts-player/types.d.ts +13 -3
- 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 +150 -34
- package/dist/streams/streams-player/types.d.ts +8 -0
- package/dist/ui/button/resources/button-theme.svelte +2 -4
- 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/icon/cmp.icon.svelte +1 -1
- package/dist/ui/player/button/cmp.player-button.svelte +1 -3
- package/dist/ui/player/button/cmp.player-buttons-group.svelte +1 -3
- 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 +11 -15
- 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 +11 -14
- package/dist/{content-player → ui/player/content-player}/overview-panel.svelte +2 -4
- package/dist/{content-player → ui/player/content-player}/overview-panel.svelte.d.ts +5 -14
- 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/player/slider/cmp.player-slider.svelte.d.ts +5 -14
- package/dist/ui/player/slider-horizontal/cmp.slider.svelte +2 -6
- package/dist/ui/player/slider-horizontal/cmp.slider.svelte.d.ts +5 -12
- package/dist/ui/shadow-dom/cmp.shadow-root.svelte +11 -6
- package/dist/ui/shadow-dom/colors.scss +2 -0
- package/package.json +7 -3
- 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/core/analytics.installation-id.d.ts +0 -5
- package/dist/external-api/data-providers/mapper.d.ts +0 -3
- package/dist/external-api/data-providers/mapper.js +0 -18
- 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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# noinspection GraphQLSchemaValidation
|
|
2
|
+
query GetPost($id: String!, $image_scale: ImageScale = ORIGINAL_ENCODED) {
|
|
3
|
+
posts: embedPosts(input: { filter: { ids: [$id] } }) {
|
|
4
|
+
items {
|
|
5
|
+
...PostsPlayerPayloadFragment
|
|
6
|
+
categoryIds
|
|
7
|
+
status
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
query GetStream($id: String!) {
|
|
13
|
+
embedStream(input: { id: $id }) {
|
|
14
|
+
...StreamPlayerPayloadFragment
|
|
15
|
+
categoryIds
|
|
16
|
+
status
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { ProfileType } from '../../../core/enums';
|
|
1
2
|
import { mapToPostModel } from '../../../posts/post-viewer';
|
|
2
3
|
export const mapToPostPlayerModel = (payload) => {
|
|
3
4
|
const viewerModel = mapToPostModel(payload);
|
|
4
5
|
return {
|
|
5
|
-
...viewerModel
|
|
6
|
+
...viewerModel,
|
|
7
|
+
analyticsOrganizationId: payload.ownerProfile.type === ProfileType.Organization ? payload.ownerProfile.id : null
|
|
6
8
|
};
|
|
7
9
|
};
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { PostType } from '../../core/enums';
|
|
2
2
|
import type { ThemeValue } from '../../core/theme';
|
|
3
3
|
import type { IContentCategoryFollowingHandler } from '../categories-following';
|
|
4
|
+
import type { IMediaCenterContentManagementHandler } from '../content-management';
|
|
4
5
|
import type { IMediaCenterMembershipHandler } from '../membership';
|
|
5
6
|
import type { IMediaCenterNavigationHandler } from '../navigation';
|
|
6
7
|
import type { IPostAnalyticsHandler, PostPlayerModel } from '../../posts/posts-player/types';
|
|
8
|
+
import type { IPostSharingHandler } from '../../posts/sharing';
|
|
7
9
|
import type { IPostSocialInteractionsHandler } from '../../posts/social-interactions';
|
|
10
|
+
import type { IStreamSharingHandler } from '../../streams/sharing';
|
|
8
11
|
import type { StreamPageViewerModel } from '../../streams/stream-page-viewer/types';
|
|
9
12
|
import type { IStreamAnalyticsHandler, StreamPlayerModel } from '../../streams/streams-player/types';
|
|
10
13
|
import type { PlayerColors } from '../../ui/player/colors';
|
|
@@ -16,7 +19,10 @@ export interface IMediaCenterDataProvider {
|
|
|
16
19
|
categoriesFollowingHandler?: IContentCategoryFollowingHandler;
|
|
17
20
|
membershipHandler?: IMediaCenterMembershipHandler;
|
|
18
21
|
navigationHandler?: IMediaCenterNavigationHandler;
|
|
19
|
-
|
|
22
|
+
postSocialInteractionsHandler?: IPostSocialInteractionsHandler;
|
|
23
|
+
postSharingHandler?: IPostSharingHandler;
|
|
24
|
+
streamSharingHandler?: IStreamSharingHandler;
|
|
25
|
+
contentManagementHandler?: IMediaCenterContentManagementHandler;
|
|
20
26
|
};
|
|
21
27
|
postsPlayer: {
|
|
22
28
|
getPostsCursor: (input: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { IMediaCenterContentManagementHandler } from './types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { PostPlayerModel } from '../../posts/posts-player/types';
|
|
2
|
+
import type { StreamPlayerModel } from '../../streams/streams-player/types';
|
|
3
|
+
export interface IMediaCenterContentManagementHandler {
|
|
4
|
+
onHandlerMounted: (api: {
|
|
5
|
+
postCreated: (result: PostEditResult) => void;
|
|
6
|
+
}) => void;
|
|
7
|
+
editPost: ((postId: string) => Promise<PostEditResult | null>) | null;
|
|
8
|
+
editArticle: ((postId: string) => Promise<PostEditResult | null>) | null;
|
|
9
|
+
deletePost: ((postId: string) => Promise<boolean>) | null;
|
|
10
|
+
editStream: ((streamId: string) => Promise<StreamEditResult | null>) | null;
|
|
11
|
+
deleteStream: ((streamId: string) => Promise<boolean>) | null;
|
|
12
|
+
deleteStreamPage: ((streamPageId: string) => Promise<boolean>) | null;
|
|
13
|
+
}
|
|
14
|
+
type PostEditResult = {
|
|
15
|
+
post: PostPlayerModel;
|
|
16
|
+
categories: string[];
|
|
17
|
+
isPublished: boolean;
|
|
18
|
+
};
|
|
19
|
+
type StreamEditResult = {
|
|
20
|
+
stream: StreamPlayerModel;
|
|
21
|
+
categories: string[];
|
|
22
|
+
isPublished: boolean;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type { IMediaCenterDataProvider } from './config/types';
|
|
2
|
-
export type { IContentCategoryFollowingHandler } from './categories-following
|
|
2
|
+
export type { IContentCategoryFollowingHandler } from './categories-following';
|
|
3
3
|
export type { IMediaCenterMembershipHandler } from './membership';
|
|
4
4
|
export type { IMediaCenterNavigationHandler, MediaCenterState } from './navigation';
|
|
5
|
+
export type { IMediaCenterContentManagementHandler } from './content-management';
|
|
@@ -15,13 +15,13 @@ const context = new MediaCenterContext({
|
|
|
15
15
|
initialized: (instance) => {
|
|
16
16
|
switch (modeProps.mode) {
|
|
17
17
|
case 'posts':
|
|
18
|
-
instance.postsFeedHandler.
|
|
18
|
+
instance.postsFeedHandler.activateWithDataProvider({
|
|
19
19
|
dataProvider: modeProps.props.dataProvider,
|
|
20
20
|
onPostActivated: modeProps.props.onPostActivated
|
|
21
21
|
});
|
|
22
22
|
break;
|
|
23
23
|
case 'streams':
|
|
24
|
-
instance.streamsFeedHandler.
|
|
24
|
+
instance.streamsFeedHandler.activateWithDataProvider({
|
|
25
25
|
dataProvider: modeProps.props.dataProvider,
|
|
26
26
|
onStreamActivated: modeProps.props.onStreamActivated
|
|
27
27
|
});
|
|
@@ -2,7 +2,10 @@ import type { IMediaCenterDataProvider } from '../../config/types';
|
|
|
2
2
|
import { StreamsInCategory, ShortVideosInCategory } from './types.svelte';
|
|
3
3
|
export declare class DiscoverDataLoader {
|
|
4
4
|
private readonly dataProvider;
|
|
5
|
+
readonly minItemsPerLoad = 5;
|
|
5
6
|
constructor(dataProvider: IMediaCenterDataProvider);
|
|
6
7
|
loadStreams: (holder: StreamsInCategory) => Promise<void>;
|
|
8
|
+
reloadStreams: (holder: StreamsInCategory) => Promise<void>;
|
|
7
9
|
loadShortVideos: (holder: ShortVideosInCategory) => Promise<void>;
|
|
10
|
+
reloadShortVideos: (holder: ShortVideosInCategory) => Promise<void>;
|
|
8
11
|
}
|
|
@@ -2,6 +2,7 @@ import { PostType } from '../../..';
|
|
|
2
2
|
import { StreamsInCategory, ShortVideosInCategory } from './types.svelte';
|
|
3
3
|
export class DiscoverDataLoader {
|
|
4
4
|
dataProvider;
|
|
5
|
+
minItemsPerLoad = 5;
|
|
5
6
|
constructor(dataProvider) {
|
|
6
7
|
this.dataProvider = dataProvider;
|
|
7
8
|
}
|
|
@@ -11,12 +12,17 @@ export class DiscoverDataLoader {
|
|
|
11
12
|
}
|
|
12
13
|
const streamsResponse = await this.dataProvider.streamPlayer.getStreamsCursor({
|
|
13
14
|
filter: { categoryId: holder.categoryId ?? undefined },
|
|
14
|
-
limit:
|
|
15
|
+
limit: this.minItemsPerLoad,
|
|
15
16
|
continuationToken: holder.continuationToken
|
|
16
17
|
});
|
|
17
18
|
holder.streams = [...holder.streams, ...streamsResponse.items];
|
|
18
19
|
holder.continuationToken = streamsResponse.continuationToken;
|
|
19
20
|
};
|
|
21
|
+
reloadStreams = async (holder) => {
|
|
22
|
+
holder.continuationToken = undefined;
|
|
23
|
+
holder.streams = [];
|
|
24
|
+
await this.loadStreams(holder);
|
|
25
|
+
};
|
|
20
26
|
loadShortVideos = async (holder) => {
|
|
21
27
|
if (holder.continuationToken === null) {
|
|
22
28
|
return;
|
|
@@ -26,10 +32,15 @@ export class DiscoverDataLoader {
|
|
|
26
32
|
categoryId: holder.categoryId,
|
|
27
33
|
types: [PostType.ShortVideo]
|
|
28
34
|
},
|
|
29
|
-
limit:
|
|
35
|
+
limit: this.minItemsPerLoad,
|
|
30
36
|
continuationToken: holder.continuationToken
|
|
31
37
|
});
|
|
32
38
|
holder.shortVideos = [...holder.shortVideos, ...shortVideosResponse.items];
|
|
33
39
|
holder.continuationToken = shortVideosResponse.continuationToken;
|
|
34
40
|
};
|
|
41
|
+
reloadShortVideos = async (holder) => {
|
|
42
|
+
holder.continuationToken = undefined;
|
|
43
|
+
holder.shortVideos = [];
|
|
44
|
+
await this.loadShortVideos(holder);
|
|
45
|
+
};
|
|
35
46
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { IMediaCenterDataProvider } from '../../config/types';
|
|
2
2
|
import type { MediaCenterState } from '../../navigation';
|
|
3
|
+
import type { PostPlayerModel } from '../../../posts/posts-player/types';
|
|
4
|
+
import type { StreamPlayerModel } from '../../../streams/streams-player/types';
|
|
3
5
|
import { ShortVideosInCategory, StreamsInCategory } from './types.svelte';
|
|
4
6
|
export declare class DiscoverViewHandler {
|
|
5
7
|
private _state;
|
|
@@ -29,6 +31,27 @@ export declare class DiscoverViewHandler {
|
|
|
29
31
|
}[];
|
|
30
32
|
}) => Promise<void>;
|
|
31
33
|
deactivate: () => void;
|
|
34
|
+
onPostCreated: (data: {
|
|
35
|
+
post: PostPlayerModel;
|
|
36
|
+
categories: string[];
|
|
37
|
+
isPublished: boolean;
|
|
38
|
+
}) => void;
|
|
39
|
+
onPostModified: (data: {
|
|
40
|
+
post: PostPlayerModel;
|
|
41
|
+
categories: string[];
|
|
42
|
+
isPublished: boolean;
|
|
43
|
+
}) => void;
|
|
44
|
+
onPostDeleted: (data: {
|
|
45
|
+
id: string;
|
|
46
|
+
}) => void;
|
|
47
|
+
onStreamModified: (data: {
|
|
48
|
+
stream: StreamPlayerModel;
|
|
49
|
+
categories: string[];
|
|
50
|
+
isPublished: boolean;
|
|
51
|
+
}) => void;
|
|
52
|
+
onStreamDeleted: (data: {
|
|
53
|
+
id: string;
|
|
54
|
+
}) => void;
|
|
32
55
|
}
|
|
33
56
|
type Callbacks = {
|
|
34
57
|
navigationStateChanged: (state: MediaCenterState) => void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Deferred } from '../../../core/deferred';
|
|
2
|
+
import { PostType } from '../../../core/enums';
|
|
2
3
|
import { DiscoverDataLoader } from './data-loading';
|
|
3
4
|
import { ShortVideosInCategory, StreamsInCategory } from './types.svelte';
|
|
4
5
|
export class DiscoverViewHandler {
|
|
@@ -111,4 +112,91 @@ export class DiscoverViewHandler {
|
|
|
111
112
|
this._state = 'inactive';
|
|
112
113
|
this._shortVideosLoadingDeferred = null;
|
|
113
114
|
};
|
|
115
|
+
onPostCreated = (data) => {
|
|
116
|
+
if (!data.isPublished || data.post.postType !== PostType.ShortVideo) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const affectedHolders = this._shortVideosInCategoryCache.filter((x) => data.categories.includes(x.categoryId) && x.continuationToken !== undefined);
|
|
120
|
+
for (const holder of affectedHolders) {
|
|
121
|
+
holder.shortVideos = [data.post, ...holder.shortVideos];
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
onPostModified = (data) => {
|
|
125
|
+
const { post, categories, isPublished } = data;
|
|
126
|
+
for (const holder of this._shortVideosInCategory.filter((h) => h.continuationToken !== undefined)) {
|
|
127
|
+
const index = holder.shortVideos.findIndex((x) => x.id === post.id);
|
|
128
|
+
const isInCategory = categories.includes(holder.categoryId);
|
|
129
|
+
if (index !== -1) {
|
|
130
|
+
// Post exists in holder
|
|
131
|
+
if (isInCategory && isPublished) {
|
|
132
|
+
// Post remains in category and is published - update it
|
|
133
|
+
const clone = [...holder.shortVideos];
|
|
134
|
+
clone[index] = post;
|
|
135
|
+
holder.shortVideos = clone;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
// Post no longer in category or unpublished - remove it
|
|
139
|
+
holder.shortVideos = holder.shortVideos.filter((x) => x.id !== post.id);
|
|
140
|
+
if (holder.shortVideos.length < this._dataLoader.minItemsPerLoad) {
|
|
141
|
+
this._dataLoader.loadShortVideos(holder);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// Post doesn't exist in holder
|
|
147
|
+
if (isInCategory && isPublished) {
|
|
148
|
+
// Post should be in this category - reset and reload
|
|
149
|
+
holder.continuationToken = undefined;
|
|
150
|
+
this._dataLoader.reloadShortVideos(holder);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
onPostDeleted = (data) => {
|
|
156
|
+
for (const holder of this._shortVideosInCategoryCache) {
|
|
157
|
+
holder.shortVideos = holder.shortVideos.filter((x) => x.id !== data.id);
|
|
158
|
+
if (holder.shortVideos.length < this._dataLoader.minItemsPerLoad) {
|
|
159
|
+
this._dataLoader.loadShortVideos(holder);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
onStreamModified = (data) => {
|
|
164
|
+
const { stream, categories, isPublished } = data;
|
|
165
|
+
for (const holder of this._streamsInCategoryCache.filter((h) => h.continuationToken !== undefined)) {
|
|
166
|
+
const index = holder.streams.findIndex((x) => x.id === stream.id);
|
|
167
|
+
const isInCategory = holder.categoryId === null || categories.includes(holder.categoryId);
|
|
168
|
+
if (index !== -1) {
|
|
169
|
+
// Stream exists in holder
|
|
170
|
+
if (isInCategory && isPublished) {
|
|
171
|
+
// Stream remains in category and is published - update it
|
|
172
|
+
const clone = [...holder.streams];
|
|
173
|
+
clone[index] = stream;
|
|
174
|
+
holder.streams = clone;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// Stream no longer in category or unpublished - remove it
|
|
178
|
+
holder.streams = holder.streams.filter((x) => x.id !== stream.id);
|
|
179
|
+
if (holder.streams.length < this._dataLoader.minItemsPerLoad) {
|
|
180
|
+
this._dataLoader.loadStreams(holder);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// Stream doesn't exist in holder
|
|
186
|
+
if (isInCategory && isPublished) {
|
|
187
|
+
// Stream should be in this category - reset and reload
|
|
188
|
+
holder.continuationToken = undefined;
|
|
189
|
+
this._dataLoader.loadStreams(holder);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
onStreamDeleted = (data) => {
|
|
195
|
+
for (const holder of this._streamsInCategoryCache) {
|
|
196
|
+
holder.streams = holder.streams.filter((x) => x.id !== data.id);
|
|
197
|
+
if (holder.streams.length < this._dataLoader.minItemsPerLoad) {
|
|
198
|
+
this._dataLoader.loadStreams(holder);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
};
|
|
114
202
|
}
|
|
@@ -1,12 +1,71 @@
|
|
|
1
|
-
<script lang="ts">
|
|
1
|
+
<script lang="ts">var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { getPostCoverImage } from '../../../posts/model';
|
|
2
11
|
import { ShortVideoCard } from '../../../short-videos/short-video-card';
|
|
3
12
|
import { StreamCard } from '../../../streams/stream-card';
|
|
13
|
+
import { cardActionContainer, CardActions } from '../../../ui/card-actions';
|
|
14
|
+
import { IconColor } from '../../../ui/icon';
|
|
4
15
|
import { InfiniteScrolling } from '../../../ui/infinite-scrolling';
|
|
5
16
|
import { default as Header } from './discover-header.svelte';
|
|
6
17
|
import { DiscoverViewLocalization } from './discover-view-localization';
|
|
18
|
+
import IconDelete from '@fluentui/svg-icons/icons/delete_20_regular.svg?raw';
|
|
19
|
+
import IconEdit from '@fluentui/svg-icons/icons/edit_20_regular.svg?raw';
|
|
7
20
|
let { context, on } = $props();
|
|
8
21
|
const handler = $derived(context.discoverHandler);
|
|
9
22
|
const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
23
|
+
const generateShortVideoActions = (id) => {
|
|
24
|
+
const actions = [];
|
|
25
|
+
if (context.contentManagementHandler.editPost) {
|
|
26
|
+
actions.push({
|
|
27
|
+
icon: IconEdit,
|
|
28
|
+
callback: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
var _a, _b;
|
|
30
|
+
(_b = (_a = context.contentManagementHandler).editPost) === null || _b === void 0 ? void 0 : _b.call(_a, id);
|
|
31
|
+
})
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (context.contentManagementHandler.deletePost) {
|
|
35
|
+
actions.push({
|
|
36
|
+
icon: IconDelete,
|
|
37
|
+
iconColor: IconColor.Red,
|
|
38
|
+
callback: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
39
|
+
var _a, _b;
|
|
40
|
+
(_b = (_a = context.contentManagementHandler).deletePost) === null || _b === void 0 ? void 0 : _b.call(_a, id);
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return actions;
|
|
45
|
+
};
|
|
46
|
+
const genereateStreamActions = (id) => {
|
|
47
|
+
const actions = [];
|
|
48
|
+
if (context.contentManagementHandler.editStream) {
|
|
49
|
+
actions.push({
|
|
50
|
+
icon: IconEdit,
|
|
51
|
+
callback: () => {
|
|
52
|
+
var _a, _b;
|
|
53
|
+
(_b = (_a = context.contentManagementHandler).editStream) === null || _b === void 0 ? void 0 : _b.call(_a, id);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
if (context.contentManagementHandler.deleteStream) {
|
|
58
|
+
actions.push({
|
|
59
|
+
icon: IconDelete,
|
|
60
|
+
iconColor: IconColor.Red,
|
|
61
|
+
callback: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
62
|
+
var _a, _b;
|
|
63
|
+
(_b = (_a = context.contentManagementHandler).deleteStream) === null || _b === void 0 ? void 0 : _b.call(_a, id);
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return actions;
|
|
68
|
+
};
|
|
10
69
|
</script>
|
|
11
70
|
|
|
12
71
|
<div class="media-center-discover">
|
|
@@ -17,9 +76,12 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
17
76
|
<div class="media-center-discover__section-header">
|
|
18
77
|
{localization.latestStreamsSectionTitle}
|
|
19
78
|
</div>
|
|
20
|
-
<div class="media-center-discover__section-content media-center-discover__section-content--5">
|
|
79
|
+
<div class="media-center-discover__section-content media-center-discover__section-content--5 media-center-discover__section-content--not-alone">
|
|
21
80
|
{#each handler.streamsHolder.streams as item (item.id)}
|
|
22
|
-
<
|
|
81
|
+
<div use:cardActionContainer>
|
|
82
|
+
<StreamCard stream={item} on={{ click: () => on.streamSelected(item, handler.streamsHolder?.categoryId ?? null) }}></StreamCard>
|
|
83
|
+
<CardActions actions={genereateStreamActions(item.id)} />
|
|
84
|
+
</div>
|
|
23
85
|
{/each}
|
|
24
86
|
</div>
|
|
25
87
|
</div>
|
|
@@ -39,17 +101,20 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
39
101
|
class:media-center-discover__section-content--4={index % 2 === 0}
|
|
40
102
|
class:media-center-discover__section-content--not-alone={handler.shortVideosHolders.length > 1}>
|
|
41
103
|
{#each holder.shortVideos as item (item.id)}
|
|
42
|
-
<
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
104
|
+
<div use:cardActionContainer>
|
|
105
|
+
<ShortVideoCard
|
|
106
|
+
shortVideo={{
|
|
107
|
+
id: item.id,
|
|
108
|
+
text: item.text,
|
|
109
|
+
cover: getPostCoverImage(item),
|
|
110
|
+
displayDate: item.displayDate,
|
|
111
|
+
viewsCount: item.viewsCount,
|
|
112
|
+
products: item.products
|
|
113
|
+
}}
|
|
114
|
+
locale={context.locale}
|
|
115
|
+
on={{ click: () => on.shortVideoSelected(item, holder.categoryId) }} />
|
|
116
|
+
<CardActions actions={generateShortVideoActions(item.id)} />
|
|
117
|
+
</div>
|
|
53
118
|
{/each}
|
|
54
119
|
</div>
|
|
55
120
|
</div>
|
|
@@ -81,6 +146,7 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
81
146
|
overflow-y: auto;
|
|
82
147
|
--_cross-browser-scrollbar--thumb-color: transparent;
|
|
83
148
|
--_cross-browser-scrollbar--track-color: transparent;
|
|
149
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
84
150
|
}
|
|
85
151
|
.media-center-discover:hover {
|
|
86
152
|
--_cross-browser-scrollbar--thumb-color: var(--scrollbar--thumb-color, #7d7d7d);
|
|
@@ -104,9 +170,6 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
104
170
|
scrollbar-width: thin;
|
|
105
171
|
}
|
|
106
172
|
}
|
|
107
|
-
.media-center-discover {
|
|
108
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
109
|
-
}
|
|
110
173
|
@container (width < 576px) {
|
|
111
174
|
.media-center-discover {
|
|
112
175
|
padding-inline: 0.9375rem;
|
|
@@ -118,23 +181,19 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
118
181
|
margin: 0 auto;
|
|
119
182
|
padding-bottom: 1.25rem;
|
|
120
183
|
/* Set 'container-type: inline-size;' to reference container*/
|
|
184
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
185
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
121
186
|
}
|
|
122
187
|
@container (width < 992px) {
|
|
123
188
|
.media-center-discover__content {
|
|
124
189
|
padding-bottom: 1rem;
|
|
125
190
|
}
|
|
126
191
|
}
|
|
127
|
-
.media-center-discover__content {
|
|
128
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
129
|
-
}
|
|
130
192
|
@container (width < 768px) {
|
|
131
193
|
.media-center-discover__content {
|
|
132
194
|
padding-bottom: 0.8125rem;
|
|
133
195
|
}
|
|
134
196
|
}
|
|
135
|
-
.media-center-discover__content {
|
|
136
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
137
|
-
}
|
|
138
197
|
@container (width < 576px) {
|
|
139
198
|
.media-center-discover__content {
|
|
140
199
|
padding-bottom: 0.625rem;
|
|
@@ -145,23 +204,19 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
145
204
|
flex-direction: column;
|
|
146
205
|
gap: 3rem;
|
|
147
206
|
/* Set 'container-type: inline-size;' to reference container*/
|
|
207
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
208
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
148
209
|
}
|
|
149
210
|
@container (width < 992px) {
|
|
150
211
|
.media-center-discover__feed {
|
|
151
212
|
gap: 2.5rem;
|
|
152
213
|
}
|
|
153
214
|
}
|
|
154
|
-
.media-center-discover__feed {
|
|
155
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
156
|
-
}
|
|
157
215
|
@container (width < 768px) {
|
|
158
216
|
.media-center-discover__feed {
|
|
159
217
|
gap: 2rem;
|
|
160
218
|
}
|
|
161
219
|
}
|
|
162
|
-
.media-center-discover__feed {
|
|
163
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
164
|
-
}
|
|
165
220
|
@container (width < 576px) {
|
|
166
221
|
.media-center-discover__feed {
|
|
167
222
|
gap: 1.5rem;
|
|
@@ -198,13 +253,13 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
198
253
|
.media-center-discover__section-content--4 {
|
|
199
254
|
gap: 1.25rem;
|
|
200
255
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
256
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
257
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
258
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
201
259
|
}
|
|
202
260
|
.media-center-discover__section-content--4 :global(> :nth-child(n + 5)) {
|
|
203
261
|
display: var(--_section-content--more-items--display);
|
|
204
262
|
}
|
|
205
|
-
.media-center-discover__section-content--4 {
|
|
206
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
207
|
-
}
|
|
208
263
|
@container (width < 992px) {
|
|
209
264
|
.media-center-discover__section-content--4 {
|
|
210
265
|
gap: 1rem;
|
|
@@ -214,9 +269,6 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
214
269
|
display: var(--_section-content--more-items--display);
|
|
215
270
|
}
|
|
216
271
|
}
|
|
217
|
-
.media-center-discover__section-content--4 {
|
|
218
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
219
|
-
}
|
|
220
272
|
@container (width < 768px) {
|
|
221
273
|
.media-center-discover__section-content--4 {
|
|
222
274
|
gap: 0.75rem;
|
|
@@ -229,9 +281,6 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
229
281
|
display: var(--_section-content--more-items--display);
|
|
230
282
|
}
|
|
231
283
|
}
|
|
232
|
-
.media-center-discover__section-content--4 {
|
|
233
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
234
|
-
}
|
|
235
284
|
@container (width < 576px) {
|
|
236
285
|
.media-center-discover__section-content--4 {
|
|
237
286
|
gap: 0.625rem;
|
|
@@ -240,13 +289,13 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
240
289
|
.media-center-discover__section-content--5 {
|
|
241
290
|
gap: 1.875rem;
|
|
242
291
|
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
292
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
293
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
294
|
+
/* Set 'container-type: inline-size;' to reference container*/
|
|
243
295
|
}
|
|
244
296
|
.media-center-discover__section-content--5 :global(> :nth-child(n + 6)) {
|
|
245
297
|
display: var(--_section-content--more-items--display);
|
|
246
298
|
}
|
|
247
|
-
.media-center-discover__section-content--5 {
|
|
248
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
249
|
-
}
|
|
250
299
|
@container (width < 992px) {
|
|
251
300
|
.media-center-discover__section-content--5 {
|
|
252
301
|
gap: 1.5rem;
|
|
@@ -256,9 +305,6 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
256
305
|
display: var(--_section-content--more-items--display);
|
|
257
306
|
}
|
|
258
307
|
}
|
|
259
|
-
.media-center-discover__section-content--5 {
|
|
260
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
261
|
-
}
|
|
262
308
|
@container (width < 768px) {
|
|
263
309
|
.media-center-discover__section-content--5 {
|
|
264
310
|
gap: 1.125rem;
|
|
@@ -268,9 +314,6 @@ const localization = $derived(new DiscoverViewLocalization(context.locale));
|
|
|
268
314
|
display: var(--_section-content--more-items--display);
|
|
269
315
|
}
|
|
270
316
|
}
|
|
271
|
-
.media-center-discover__section-content--5 {
|
|
272
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
273
|
-
}
|
|
274
317
|
@container (width < 576px) {
|
|
275
318
|
.media-center-discover__section-content--5 {
|
|
276
319
|
gap: 0.9375rem;
|
|
@@ -4,8 +4,8 @@ import type { MediaCenterContext } from '../media-center-context.svelte';
|
|
|
4
4
|
type Props = {
|
|
5
5
|
context: MediaCenterContext;
|
|
6
6
|
on: {
|
|
7
|
-
shortVideoSelected: (shortVideo: PostPlayerModel) => void;
|
|
8
|
-
streamSelected: (stream: StreamPlayerModel) => void;
|
|
7
|
+
shortVideoSelected: (shortVideo: PostPlayerModel, categoryId: string | null) => void;
|
|
8
|
+
streamSelected: (stream: StreamPlayerModel, categoryId: string | null) => void;
|
|
9
9
|
};
|
|
10
10
|
};
|
|
11
11
|
declare const DiscoverView: import("svelte").Component<Props, {}, "">;
|
|
@@ -12,7 +12,7 @@ let { context } = $props();
|
|
|
12
12
|
type="button"
|
|
13
13
|
class="media-center-footer__button"
|
|
14
14
|
class:media-center-footer__button--active={context.postsFeedHandler.activated || context.streamsFeedHandler.activated}
|
|
15
|
-
onclick={() => context.
|
|
15
|
+
onclick={() => context.activateDefaultFeed()}>
|
|
16
16
|
<Icon src={IconPhone} />
|
|
17
17
|
</button>
|
|
18
18
|
<div class="media-center-footer__spacer"></div>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { CategoriesHandler } from './categories-handler.svelte';
|
|
2
2
|
export type { MediaCenterCategoryModel, MediaCenterSubCategoryModel, MediaCenterCategoryTagModel } from './categories-handler.svelte';
|
|
3
3
|
export { MediaCenterSettingsHandler } from './media-center-settings-handler.svelte';
|
|
4
|
+
export { MediaCenterContentHandler } from './media-center-content-handler.svelte';
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { IMediaCenterDataProvider } from '../../config/types';
|
|
2
|
+
import type { PostPlayerModel } from '../../../posts/posts-player/types';
|
|
3
|
+
import type { StreamPlayerModel } from '../../../streams/streams-player/types';
|
|
4
|
+
export declare class MediaCenterContentHandler {
|
|
5
|
+
private readonly dataProvider;
|
|
6
|
+
private postCreatedListeners;
|
|
7
|
+
private postDeletedListeners;
|
|
8
|
+
private postModifiedListeners;
|
|
9
|
+
private streamModifiedListeners;
|
|
10
|
+
private streamDeletedListeners;
|
|
11
|
+
private streamPageDeletedListeners;
|
|
12
|
+
constructor(dataProvider: IMediaCenterDataProvider);
|
|
13
|
+
get editPost(): ((postId: string) => Promise<{
|
|
14
|
+
post: PostPlayerModel;
|
|
15
|
+
categories: string[];
|
|
16
|
+
isPublished: boolean;
|
|
17
|
+
} | null>) | null;
|
|
18
|
+
get deletePost(): ((postId: string) => Promise<boolean>) | null;
|
|
19
|
+
get editArticle(): ((postId: string) => Promise<{
|
|
20
|
+
post: PostPlayerModel;
|
|
21
|
+
categories: string[];
|
|
22
|
+
isPublished: boolean;
|
|
23
|
+
} | null>) | null;
|
|
24
|
+
get editStream(): ((streamId: string) => Promise<{
|
|
25
|
+
stream: StreamPlayerModel;
|
|
26
|
+
categories: string[];
|
|
27
|
+
isPublished: boolean;
|
|
28
|
+
} | null>) | null;
|
|
29
|
+
get deleteStream(): ((streamId: string) => Promise<boolean>) | null;
|
|
30
|
+
get deleteStreamPage(): ((streamPageId: string) => Promise<boolean>) | null;
|
|
31
|
+
addPostCreatedListener: (...callbacks: PostCreatedCallback[]) => void;
|
|
32
|
+
addPostModifiedListener: (...callbacks: PostModifiedCallback[]) => void;
|
|
33
|
+
addPostDeletedListener: (...callbacks: PostDeletedCallback[]) => void;
|
|
34
|
+
addStreamModifiedListener: (...callbacks: StreamModifiedCallback[]) => void;
|
|
35
|
+
addStreamDeletedListener: (...callbacks: StreamDeletedCallback[]) => void;
|
|
36
|
+
addStreamPageDeletedListener: (...callbacks: StreamPageDeletedCallback[]) => void;
|
|
37
|
+
}
|
|
38
|
+
type PostCreatedCallback = (data: {
|
|
39
|
+
post: PostPlayerModel;
|
|
40
|
+
categories: string[];
|
|
41
|
+
isPublished: boolean;
|
|
42
|
+
}) => void;
|
|
43
|
+
type PostModifiedCallback = (data: {
|
|
44
|
+
post: PostPlayerModel;
|
|
45
|
+
categories: string[];
|
|
46
|
+
isPublished: boolean;
|
|
47
|
+
}) => void;
|
|
48
|
+
type PostDeletedCallback = (data: {
|
|
49
|
+
id: string;
|
|
50
|
+
}) => void;
|
|
51
|
+
type StreamModifiedCallback = (data: {
|
|
52
|
+
stream: StreamPlayerModel;
|
|
53
|
+
categories: string[];
|
|
54
|
+
isPublished: boolean;
|
|
55
|
+
}) => void;
|
|
56
|
+
type StreamDeletedCallback = (data: {
|
|
57
|
+
id: string;
|
|
58
|
+
}) => void;
|
|
59
|
+
type StreamPageDeletedCallback = (data: {
|
|
60
|
+
id: string;
|
|
61
|
+
}) => void;
|
|
62
|
+
export {};
|