Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/release_on_tag.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ jobs:
cd "${{ runner.temp }}/plugin-extract"
zip -r -q "${{ runner.temp }}/godam.zip" .

# Move the new ZIP to a location where upload-artifact can find it
mv "${{ runner.temp }}/godam.zip" ./godam.zip
# Move the new ZIP to the workspace root for release upload
mv "${{ runner.temp }}/godam.zip" "${{ github.workspace }}/godam.zip"

- name: Upload Test Artifact
if: startsWith(github.ref, 'refs/tags/dry') || github.ref == 'refs/heads/develop'
Expand All @@ -63,7 +63,7 @@ jobs:
uses: softprops/action-gh-release@v2.2.1
with:
files: |
'./godam.zip'
'${{ github.workspace }}/godam.zip'
token: '${{ github.token }}'
tag_name: ${{ github.ref_name }}
draft: true
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog #

## v1.4.2 (September 25, 2025) ##

- Tweak: Allow replacing transcoded MP4 video with the original uploaded video
- Fix: Resolved LifterLMS warnings and applied necessary bug fixes
- Fix: Restored analytics tracking for GoDAM Gallery videos
- Fix: Fixed GoDAM Recorder playback issue when rtMedia plugin is active
- Fix: Addressed Safari browser issue where audio would not play or seek correctly

## v1.4.1 (September 17, 2025) ##

- Tweak: Enhanced Audio Recording support in GoDAM Recorder for Gravity Forms
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Tested up to: 6.8.1

Requires PHP: 7.4

Stable tag: 1.4.1
Stable tag: 1.4.2

License: [GPLv2 or later](http://www.gnu.org/licenses/gpl-2.0.html)

Expand Down
2 changes: 1 addition & 1 deletion admin/class-rtgodam-transcoder-handler.php
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ public function __construct( $no_init = false ) {
/**
* Send transcoding request for uploaded media in WordPress media library.
*
* @since n.e.x.t
* @since 1.4.2
*
* @param int $attachment_id ID of attachment.
*/
Expand Down
7 changes: 6 additions & 1 deletion assets/src/blocks/godam-player/VideoJS.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,12 @@
import React from 'react';
import videojs from 'video.js';
import 'video.js/dist/video-js.css';
import 'videojs-contrib-quality-menu';

// Only import qualityMenu if not already registered (this will also load qualityLevels as dependency)
if ( ! videojs.getPlugin( 'qualityMenu' ) ) {
import( 'videojs-contrib-quality-menu' );
}
Comment on lines +8 to +11
Copy link

Copilot AI Sep 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The dynamic import() is asynchronous but not awaited. This could cause race conditions where the plugin might not be loaded when needed. Consider using a static import at the top level or properly handle the Promise returned by import().

Suggested change
// Only import qualityMenu if not already registered (this will also load qualityLevels as dependency)
if ( ! videojs.getPlugin( 'qualityMenu' ) ) {
import( 'videojs-contrib-quality-menu' );
}
import 'videojs-contrib-quality-menu';

Copilot uses AI. Check for mistakes.

import 'videojs-flvjs-es6';

/**
Expand Down
2 changes: 1 addition & 1 deletion assets/src/js/godam-player/analytics.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ window.analytics = analytics;
* - Type 1: Video Loaded (automatically sent before type 2)
* - Type 2: Video Played (main functionality)
*
* @since n.e.x.t
* @since 1.4.2
*/
window.analytics.trackVideoEvent = ( { type, videoId, root, sendPageLoad = true } = {} ) => {
if ( ! type ) {
Expand Down
42 changes: 42 additions & 0 deletions assets/src/js/godam-player/managers/configurationManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,43 @@ export default class ConfigurationManager {
this.initialize();
}

rearrangeVideoSources( sources ) {
// Check if safari browser or iOS device
const isIOS = /iPad|iPhone|iPod/.test( navigator.userAgent ) && ! window.MSStream;
const isSafari = /^((?!chrome|android).)*safari/i.test( navigator.userAgent );

// Check if .mpd source exists
const mpdUrl = sources.find( ( source ) => source.type === 'application/dash+xml' );
const m3u8Url = sources.find( ( source ) => source.type === 'application/x-mpegURL' );
const normalUrl = sources.find( ( source ) => source.type !== 'application/x-mpegURL' && source.type !== 'application/dash+xml' );

const newSources = [];

if ( isIOS || isSafari ) {
if ( m3u8Url ) {
newSources.push( m3u8Url );
}
if ( mpdUrl ) {
newSources.push( mpdUrl );
}
if ( normalUrl ) {
newSources.push( normalUrl );
}
} else {
if ( mpdUrl ) {
newSources.push( mpdUrl );
}
if ( m3u8Url ) {
newSources.push( m3u8Url );
}
if ( normalUrl ) {
newSources.push( normalUrl );
}
}

return newSources;
}

/**
* Initialize configuration
*/
Expand All @@ -27,8 +64,13 @@ export default class ConfigurationManager {
this.adTagUrl = this.video.dataset.ad_tag_url;
this.videoSetupOptions = parseDataAttribute( this.video, 'options', {} );
const videoSetupControls = parseDataAttribute( this.video, 'controls', this.getDefaultControls() );

// Get mpd, m3
Comment thread
subodhr258 marked this conversation as resolved.
const sources = this.rearrangeVideoSources( videoSetupControls.sources || [] );

this.videoSetupControls = {
...videoSetupControls,
sources,
html5: {
vhs: {
bandwidth: 14_000_000, // Pretend network can do ~14 Mbps at startup
Expand Down
7 changes: 6 additions & 1 deletion assets/src/js/godam-player/masterSettings.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@
* External dependencies
*/
import videojs from 'video.js';
import 'videojs-contrib-quality-levels';

// Only import qualityLevels if not already registered
if ( ! videojs.getPlugin( 'qualityLevels' ) ) {
import( 'videojs-contrib-quality-levels' );
}
Comment thread
subodhr258 marked this conversation as resolved.

import DOMPurify from 'isomorphic-dompurify';

/**
Expand Down
4 changes: 2 additions & 2 deletions godam.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* Plugin Name: GoDAM
* Plugin URI: https://godam.io
* Description: Seamlessly manage and deliver your media assets directly from the cloud-based media management. Store assets efficiently, stream them via a CDN, and enhance your website's performance and user experience. Featuring adaptive bit rate streaming, adding interactive layers in videos, and taking full advantage of a digital asset management solution within WordPress.
* Version: 1.4.1
* Version: 1.4.2
* Requires at least: 6.5
* Requires PHP: 7.4
* Text Domain: godam
Expand Down Expand Up @@ -43,7 +43,7 @@
/**
* The version of the plugin
*/
define( 'RTGODAM_VERSION', '1.4.1' );
define( 'RTGODAM_VERSION', '1.4.2' );
}

if ( ! defined( 'RTGODAM_API_BASE' ) ) {
Expand Down
2 changes: 1 addition & 1 deletion inc/classes/class-media-library-ajax.php
Original file line number Diff line number Diff line change
Expand Up @@ -604,7 +604,7 @@ class="annual-plan-offer-banner__dismiss"
* Replace an existing WordPress media attachment with a file from an external URL,
* using the WordPress Filesystem API.
*
* @since n.e.x.t
* @since 1.4.2
*
* @param int $attachment_id The ID of the existing media attachment.
* @param string $file_url The external file URL.
Expand Down
10 changes: 0 additions & 10 deletions inc/templates/godam-player.php
Original file line number Diff line number Diff line change
Expand Up @@ -395,16 +395,6 @@ class="easydam-player video-js vjs-big-play-centered vjs-hidden"
data-hover-select="<?php echo esc_attr( $hover_select ); ?>"
>
<?php
foreach ( $sources as $source ) :
if ( ! empty( $source['src'] ) && ! empty( $source['type'] ) ) :
?>
<source
src="<?php echo esc_url( $source['src'] ); ?>"
type="<?php echo esc_attr( $source['type'] ); ?>"
/>
<?php
endif;
endforeach;

$display_caption = ( ! isset( $easydam_meta_data['videoConfig']['controlBar']['subsCapsButton'] ) ) ||
( isset( $easydam_meta_data['videoConfig']['controlBar']['subsCapsButton'] ) && $easydam_meta_data['videoConfig']['controlBar']['subsCapsButton'] );
Expand Down
Loading