Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update dependency SvenTiigi/YouTubePlayerKit to v2 #412

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Feb 4, 2025

This PR contains the following updates:

Package Update Change
SvenTiigi/YouTubePlayerKit major from: "1.9.0" -> from: "2.0.0"

Release Notes

SvenTiigi/YouTubePlayerKit (SvenTiigi/YouTubePlayerKit)

v2.0.0: Version 2.0.0

Compare Source

What's Changed

[!IMPORTANT]
This release contains several breaking changes when coming from version 1.9.0 or earlier.
Please refer to the updated README and documentation for the latest APIs of the YouTubePlayerKit.
Full Changelog: SvenTiigi/YouTubePlayerKit@1.9.0...2.0.0

  • Support for Swift 6 strict concurrency checks and data race safety.
  • Improved code documentation and provided additional insights into the specific behaviors of several APIs and properties.
  • Improved performance and stability.
  • Bumped minimum deployment target for iOS from 13 to 15 and for macOS from 10.15 to 12
  • First class async/await function API (removal of completion closure based APIs).
  • Added several new APIs such as observing the fullscreen and volume state as well as changing the caption font size.
  • Improved URL parsing of the YouTubePlayer.Source for the most common and well known YouTube URL formats.
  • Added a new enumeration case .videos(ids:) to the YouTubePlayer.Source allowing to play individual video identifiers as a playlist.
  • Added advanced APIs to observe the incoming stream of YouTubePlayer.Event as well as to run custom JavaScript code and supply custom HTML code.
  • Added logging which can enabled when initializing an instance of YouTubePlayer to gain more insights of the underlying JavaScript communication and stream of events.
  • Improved example application.
  • Migrated tests from XCTest to Swift Testing.

Migration Guide

When coming from version 1.9.0 or earlier there are two main topics to consider.

YouTubePlayer Initialization

In Version 2.0.0 the designated initializer of a YouTubePlayer takes four parameters: a source, parameters, a configuration and a boolean whether logging should be enabled. Previously the player was initialized with just two arguments a source and a configuration.

let youTubePlayer = YouTubePlayer(
    // Possible values: .video, .videos, .playlist, .channel
    source: .video(id: "psL_5RIBqnY"),
    // The parameters of the player
    parameters: .init(
        autoPlay: true,
        showControls: true,
        loopEnabled: true,
        startTime: .init(value: 5, unit: .minutes),
        // ...
    ),
    // The configuration of the underlying web view
    configuration: .init(
        fullscreenMode: .system,
        allowsInlineMediaPlayback: true,
        customUserAgent: "MyCustomUserAgent",
        // ...
    ),
    isLoggingEnabled: true
)

To differentiate between parameters and configuration, understand that parameters control the behavior and style of the YouTube player, while the configuration is linked to the underlying web view.
You cannot modify the configuration after instantiation; however, it is possible to update the parameters, as shown below:

youTubePlayer.parameters.showControls = false

[!WARNING]
Updating the YouTubePlayer.Parameters during runtime will cause the player to reload.

Async/Await APIs

In version 1.9.0 and earlier, YouTubePlayerKit offered both a completion closure-based API and an async API. Starting with version 2.0.0, only the async variant will be supported as the primary API.

- youTubePlayer.isMuted { result in /* ... */ }
+ let isMuted = try await youTubePlayer.isMuted()

In case of an error, most of the functions are typed to throw a YouTubePlayer.APIError.
This allows you to easily examine the reason for the error, any underlying error, and the executed JavaScript along with its response.

do {
    try await youTubePlayer.setCaptions(fontSize: .small)
} catch {
    print(
        "Failed to set captions font size",
        error.reason,
        error.underlyingError,
        error.javaScript,
        error.javaScriptResponse
    )
}

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Contributor Author

renovate bot commented Feb 6, 2025

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@thomaskioko thomaskioko enabled auto-merge February 6, 2025 08:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant