Skip to content

Commit

Permalink
Merge pull request #43 from THEOplayer/release/1.9.0
Browse files Browse the repository at this point in the history
Release 1.9.0
  • Loading branch information
MattiasBuelens authored Sep 10, 2024
2 parents 9c0d7cf + 205ab81 commit f8a0439
Show file tree
Hide file tree
Showing 20 changed files with 422 additions and 115 deletions.
52 changes: 52 additions & 0 deletions .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Create release PR
on:
workflow_dispatch:
inputs:
version:
description: 'New version'
required: true
type: string
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
strategy:
matrix:
node-version: [20]
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
steps:
- name: Create app token
uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.THEOPLAYER_BOT_APP_ID }}
private-key: ${{ secrets.THEOPLAYER_BOT_PRIVATE_KEY }}
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ steps.app-token.outputs.token }}
- name: Configure Git user
run: |
git config user.name 'theoplayer-bot[bot]'
git config user.email '873105+theoplayer-bot[bot]@users.noreply.github.com'
- name: Bump version
shell: bash
run: |
node ./scripts/set_version.js ${{ inputs.version }}
- name: Push to release branch
shell: bash
run: |
git commit -a -m ${{ inputs.version }}
git push origin "HEAD:release/${{ inputs.version }}"
- name: Create pull request
shell: bash
run: |
gh pr create \
--base main \
--head "release/${{ inputs.version }}" \
--title "Release ${{ inputs.version }}" \
--body "$(node ./scripts/github_changelog.js ${{ inputs.version }})"
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
40 changes: 36 additions & 4 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,39 @@
name: Publish release
on:
# Runs whenever a new release is created in GitHub
release:
types: [ created ]
# Runs whenever a release PR is merged
pull_request:
branches:
- main
types: [ closed ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
# Publish job
publish:
# Run only for "release/x.y.z" PRs, and only when the PR is merged (not abandoned)
if: ${{ !github.event.pull_request || (startsWith(github.head_ref, 'release/') && github.event.pull_request.merged) }}
runs-on: ubuntu-latest
# Sets permissions of the GITHUB_TOKEN to allow publishing to GitHub Packages
permissions:
contents: read
contents: write
packages: write
id-token: write
steps:
- name: Create app token
uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.THEOPLAYER_BOT_APP_ID }}
private-key: ${{ secrets.THEOPLAYER_BOT_PRIVATE_KEY }}
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ steps.app-token.outputs.token }}
- name: Configure Git user
run: |
git config user.name 'theoplayer-bot[bot]'
git config user.email '873105+theoplayer-bot[bot]@users.noreply.github.com'
- name: Setup Java
uses: actions/setup-java@v4
with:
Expand All @@ -32,3 +49,18 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPOSILITE_USERNAME: ${{ secrets.REPOSILITE_USERNAME }}
REPOSILITE_PASSWORD: ${{ secrets.REPOSILITE_PASSWORD }}
- name: Get version
shell: bash
run: |
echo "version=$(./gradlew :ui:properties --no-daemon --console=plain --quiet | awk '/^version:/ {print $2}')" >> "$GITHUB_ENV"
- name: Push tag
run: |
git tag "v$version" -m "$version"
git push origin "v$version"
- name: Create GitHub release
run: |
gh release create "v$version" --verify-tag --latest \
--title "$version" \
--notes "$(node ./scripts/github_changelog.js $version)"
env:
GH_TOKEN: ${{ steps.app-token.outputs.token }}
31 changes: 31 additions & 0 deletions .github/workflows/sync-develop.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Sync develop with main
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Create app token
uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.THEOPLAYER_BOT_APP_ID }}
private-key: ${{ secrets.THEOPLAYER_BOT_PRIVATE_KEY }}
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ steps.app-token.outputs.token }}
ref: develop
fetch-depth: 50
- name: Configure Git user
run: |
git config user.name 'theoplayer-bot[bot]'
git config user.email '873105+theoplayer-bot[bot]@users.noreply.github.com'
- name: Sync develop with main
run: |
git fetch --no-tags --prune --no-recurse-submodules --depth=50 origin +refs/heads/main:refs/remotes/origin/main
git merge --ff origin/main
git push origin HEAD:develop
2 changes: 1 addition & 1 deletion .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@
> - 🏠 Internal
> - 💅 Polish
## v1.9.0 (2024-09-10)

* 💥 Updated to Jetpack Compose version 1.7.0 ([BOM](https://developer.android.com/jetpack/compose/bom) 2024.09.00).
* 💥 Changed `colors` parameter in `IconButton` and `LiveButton` to be an `IconButtonColors`.
* 🚀 Added support for Android Lollipop (API 21), to align with the THEOplayer Android SDK.
* 🚀 Added `rememberPlayer(THEOplayerView)` to create a `Player` wrapping an existing `THEOplayerView`.

## v1.8.0 (2024-09-06)

* 🚀 Added support for THEOplayer 8.0.
Expand Down
6 changes: 3 additions & 3 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ android {

defaultConfig {
applicationId = "com.theoplayer.android.ui.demo"
minSdk = 24
minSdk = 21
targetSdk = 33
versionCode = 1
versionName = "1.0"
Expand Down Expand Up @@ -45,7 +45,7 @@ android {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.4.3"
kotlinCompilerExtensionVersion = "1.5.15"
}
packaging {
resources {
Expand All @@ -58,7 +58,7 @@ dependencies {
implementation(platform(libs.androidx.compose.bom))

implementation(libs.androidx.ktx)
implementation(libs.androidx.lifecycle.runtime)
implementation(libs.androidx.lifecycle.compose)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.compose.ui.ui)
Expand Down
17 changes: 10 additions & 7 deletions app/src/main/java/com/theoplayer/android/ui/demo/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,13 @@ import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import com.google.android.gms.cast.framework.CastContext
import com.theoplayer.android.api.THEOplayerConfig
import com.theoplayer.android.api.THEOplayerView
import com.theoplayer.android.api.ads.ima.GoogleImaIntegrationFactory
import com.theoplayer.android.api.cast.CastConfiguration
import com.theoplayer.android.api.cast.CastIntegrationFactory
Expand Down Expand Up @@ -55,22 +57,23 @@ fun MainContent() {
var stream by rememberSaveable(stateSaver = StreamSaver) { mutableStateOf(streams.first()) }
var streamMenuOpen by remember { mutableStateOf(false) }

val player = rememberPlayer()
LaunchedEffect(player) {
player.theoplayerView?.let { theoplayerView ->
val context = LocalContext.current
val theoplayerView = remember(context) {
THEOplayerView(context).apply {
// Add ads integration through Google IMA
theoplayerView.player.addIntegration(
GoogleImaIntegrationFactory.createGoogleImaIntegration(theoplayerView)
player.addIntegration(
GoogleImaIntegrationFactory.createGoogleImaIntegration(this)
)
// Add Chromecast integration
val castConfiguration = CastConfiguration.Builder().apply {
castStrategy(CastStrategy.AUTO)
}.build()
theoplayerView.player.addIntegration(
CastIntegrationFactory.createCastIntegration(theoplayerView, castConfiguration)
player.addIntegration(
CastIntegrationFactory.createCastIntegration(this, castConfiguration)
)
}
}
val player = rememberPlayer(theoplayerView)
LaunchedEffect(player, stream) {
player.source = stream.source
}
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ android.nonTransitiveRClass=true
android.nonFinalResIds=true
org.gradle.configuration-cache=true
# The version of the THEOplayer Open Video UI for Android.
libraryVersion=1.8.0
version=1.9.0
14 changes: 7 additions & 7 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
[versions]
gradle = "8.3.2"
kotlin-gradle-plugin = "1.8.10"
gradle = "8.5.2"
kotlin-gradle-plugin = "1.9.25"
ktx = "1.13.1"
lifecycle-runtime = "2.8.4"
activity-compose = "1.9.1"
lifecycle-compose = "2.8.5"
activity-compose = "1.9.2"
appcompat = "1.7.0"
compose-bom = "2024.06.00"
compose-bom = "2024.09.00"
junit4 = "4.13.2"
playServices-castFramework = "21.5.0"
ui-test-junit4 = "1.6.8" # ...not in BOM for some reason?
ui-test-junit4 = "1.7.0" # ...not in BOM for some reason?
androidx-junit = "1.2.1"
androidx-espresso = "3.6.1"
androidx-mediarouter = "1.7.0"
Expand All @@ -17,7 +17,7 @@ theoplayer = "7.11.0"

[libraries]
androidx-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "ktx" }
androidx-lifecycle-runtime = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycle-runtime" }
androidx-lifecycle-compose = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose", version.ref = "lifecycle-compose" }
androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activity-compose" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" }
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Mon Nov 20 16:01:06 CET 2023
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
23 changes: 23 additions & 0 deletions scripts/github_changelog.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/usr/bin/env node
const fs = require("node:fs");
const path = require("node:path");
const version = process.argv[2];
if (!version) {
console.error("Missing required argument: version");
process.exit(1);
}

// Find block with current version
const changelogPath = path.resolve(__dirname, "../CHANGELOG.md");
const changelog = fs.readFileSync(changelogPath, "utf-8");
const headingStart = "## ";
// Find block with current version
const block = changelog
.split(headingStart)
.find((block) => block.startsWith(`v${version}`))
.trim();
let lines = block.split("\n");
// Remove version
lines.splice(0, 1);

console.log(lines.join("\n").trim());
30 changes: 30 additions & 0 deletions scripts/set_version.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/usr/bin/env node
const fs = require("node:fs");
const path = require("node:path");
const version = process.argv[2];
if (!version) {
console.error("Missing required argument: version");
process.exit(1);
}

// Update "version=1.2.3" in gradle.properties
const gradlePropertiesPath = path.resolve(__dirname, "../gradle.properties");
let gradleProperties = fs.readFileSync(gradlePropertiesPath, "utf8");
gradleProperties = gradleProperties.replace(
/^version=.+$/m,
`version=${version}`
);
fs.writeFileSync(gradlePropertiesPath, gradleProperties);

// Update heading in CHANGELOG.md
const changelogPath = path.resolve(__dirname, "../CHANGELOG.md");
let changelog = fs.readFileSync(changelogPath, "utf8");
const now = new Date();
const today = `${now.getFullYear()}-${(now.getMonth() + 1)
.toString()
.padStart(2, "0")}-${now.getDate().toString().padStart(2, "0")}`;
changelog = changelog.replace(
/^## Unreleased$/m,
`## v${version} (${today})`
);
fs.writeFileSync(changelogPath, changelog);
9 changes: 4 additions & 5 deletions ui/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ android {
compileSdk = 34

defaultConfig {
minSdk = 24
minSdk = 21

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
Expand Down Expand Up @@ -51,7 +51,7 @@ android {
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.4.3"
kotlinCompilerExtensionVersion = "1.5.15"
}
packaging {
resources {
Expand All @@ -71,7 +71,7 @@ dependencies {
implementation(platform(libs.androidx.compose.bom))

implementation(libs.androidx.ktx)
implementation(libs.androidx.lifecycle.runtime)
implementation(libs.androidx.lifecycle.compose)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.compose.ui.ui)
Expand Down Expand Up @@ -123,10 +123,9 @@ publishing {

publications {
register<MavenPublication>("release") {
val libraryVersion: String by rootProject.extra
groupId = "com.theoplayer.android-ui"
artifactId = "android-ui"
version = libraryVersion
version = project.version as String
artifact(dokkaJavadocJar)
afterEvaluate {
from(components["release"])
Expand Down
Loading

0 comments on commit f8a0439

Please sign in to comment.