Skip to content

Commit 7ed6583

Browse files
authored
Merge pull request #4286 from dpalou/MOBILE-4705
MOBILE-4705 mod_resource: Use VideoJS if needed in embedded media
2 parents 917e6fc + a95e65e commit 7ed6583

File tree

3 files changed

+17
-14
lines changed

3 files changed

+17
-14
lines changed

src/addons/mod/resource/components/index/addon-mod-resource-index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
</ng-container>
3636

3737
<div *ngIf="mode === 'embedded'" class="ion-padding">
38-
<core-format-text [text]="contentText" [filter]="false" />
38+
<core-format-text [text]="contentText" contextLevel="module" [contextInstanceId]="module.id" [courseId]="courseId" />
3939
</div>
4040

4141
<ng-container *ngIf="mode === 'external'">

src/core/classes/element-controllers/MediaElementController.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -114,22 +114,22 @@ export class MediaElementController extends ElementController {
114114
return;
115115
}
116116

117-
const player = await this.searchJSPlayer();
117+
// Start listening to events because the player could be created while we're searching for it, causing a race condition.
118+
this.jsPlayerListener = CoreEvents.on(VIDEO_JS_PLAYER_CREATED, ({ element, player }) => {
119+
if (element !== media) {
120+
return;
121+
}
118122

119-
if (!player) {
120-
this.jsPlayerListener = CoreEvents.on(VIDEO_JS_PLAYER_CREATED, ({ element, player }) => {
121-
if (element !== media) {
122-
return;
123-
}
123+
this.jsPlayerListener?.off();
124+
this.jsPlayer.resolve(player);
125+
});
124126

125-
this.jsPlayerListener?.off();
126-
this.jsPlayer.resolve(player);
127-
});
127+
const player = await this.searchJSPlayer();
128128

129-
return;
129+
if (player && !this.jsPlayer.isSettled()) {
130+
this.jsPlayerListener?.off();
131+
this.jsPlayer.resolve(player);
130132
}
131-
132-
this.jsPlayer.resolve(player);
133133
}
134134

135135
/**

src/core/services/utils/mimetype.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import mimeToExt from '@/assets/mimetoext.json';
2727
import { CoreFileEntry, CoreFileHelper } from '@services/file-helper';
2828
import { CoreUrl } from '@singletons/url';
2929
import { CoreSites } from '@services/sites';
30+
import { CoreUtils } from '@singletons/utils';
3031

3132
interface MimeTypeInfo {
3233
type: string;
@@ -193,8 +194,10 @@ export class CoreMimetypeUtilsProvider {
193194
return `<img src="${path}">`;
194195
case 'audio':
195196
case 'video':
197+
// Add videoJS class and ID because the media could use the VideoJS player.
196198
return [
197-
`<${embedType} controls title="${filename}" src="${path}" controlsList="nodownload">`,
199+
`<${embedType} controls title="${filename}" src="${path}" controlsList="nodownload" class="video-js" ` +
200+
`id="id_videojs_moodleapp_${CoreUtils.getUniqueId('CoreMimetypeUtils-embedded-media')}">`,
198201
`<source src="${path}" type="${mimeType}">`,
199202
`</${embedType}>`,
200203
].join('');

0 commit comments

Comments
 (0)