Skip to content

Commit 8aa41b9

Browse files
authored
Merge pull request #149 from kalzEOS/fix/release-safety-and-parent-resolution
[codex] Fix playback identity and release safety
2 parents 412c1be + cbb453d commit 8aa41b9

3 files changed

Lines changed: 40 additions & 17 deletions

File tree

.github/workflows/release-safety.yml

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,59 @@ on:
77
jobs:
88
validate-release:
99
runs-on: ubuntu-latest
10+
permissions:
11+
contents: read
1012
steps:
1113
- name: Checkout
1214
uses: actions/checkout@v4
1315

16+
- name: Fetch Release Data
17+
id: release
18+
env:
19+
GITHUB_TOKEN: ${{ github.token }}
20+
TAG_NAME: ${{ github.event.release.tag_name }}
21+
run: |
22+
set -euo pipefail
23+
release_json="$(mktemp)"
24+
curl -fsSL \
25+
-H "Authorization: Bearer ${GITHUB_TOKEN}" \
26+
-H "Accept: application/vnd.github+json" \
27+
"https://api.github.com/repos/${GITHUB_REPOSITORY}/releases/tags/${TAG_NAME}" \
28+
-o "${release_json}"
29+
echo "release_json=${release_json}" >> "${GITHUB_OUTPUT}"
30+
1431
- name: Validate Metadata
1532
env:
1633
TAG_NAME: ${{ github.event.release.tag_name }}
17-
RELEASE_TITLE: ${{ github.event.release.name }}
18-
RELEASE_NOTES: ${{ github.event.release.body }}
19-
IS_PRERELEASE: ${{ github.event.release.prerelease }}
20-
TARGET_BRANCH: ${{ github.event.release.target_commitish }}
34+
RELEASE_JSON: ${{ steps.release.outputs.release_json }}
2135
run: |
2236
set -euo pipefail
23-
title="${RELEASE_TITLE:-${TAG_NAME}}"
2437
notes_file="$(mktemp)"
25-
printf '%s\n' "${RELEASE_NOTES}" > "${notes_file}"
38+
title="$(jq -r '.name // empty' "${RELEASE_JSON}")"
39+
jq -r '.body // empty' "${RELEASE_JSON}" > "${notes_file}"
40+
prerelease="$(jq -r '.prerelease' "${RELEASE_JSON}")"
41+
target_branch="$(jq -r '.target_commitish // empty' "${RELEASE_JSON}")"
42+
title="${title:-${TAG_NAME}}"
2643
./scripts/validate_release_metadata.sh \
2744
"${TAG_NAME}" \
2845
"${title}" \
2946
"${notes_file}" \
30-
"${IS_PRERELEASE}" \
31-
"${TARGET_BRANCH}"
47+
"${prerelease}" \
48+
"${target_branch}"
3249
3350
- name: Validate Release Assets
3451
env:
3552
TAG_NAME: ${{ github.event.release.tag_name }}
36-
IS_PRERELEASE: ${{ github.event.release.prerelease }}
53+
RELEASE_JSON: ${{ steps.release.outputs.release_json }}
3754
run: |
3855
set -euo pipefail
3956
version="${TAG_NAME#XtreamPlayerv}"
40-
apk_count="$(jq '[.release.assets[] | select(.name | endswith(".apk"))] | length' "${GITHUB_EVENT_PATH}")"
57+
apk_count="$(jq '[.assets[] | select(.name | endswith(".apk"))] | length' "${RELEASE_JSON}")"
4158
if [[ "${apk_count}" -lt 1 ]]; then
4259
echo "Release must include at least one APK asset."
4360
exit 1
4461
fi
45-
bad_assets="$(jq -r '.release.assets[] | .name' "${GITHUB_EVENT_PATH}" | awk -v v="${version}" 'index($0, v)==0')"
62+
bad_assets="$(jq -r '.assets[] | .name' "${RELEASE_JSON}" | awk -v v="${version}" 'index($0, v)==0')"
4663
if [[ -n "${bad_assets}" ]]; then
4764
echo "Every release asset name must include version ${version}."
4865
echo "${bad_assets}"

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import java.util.Properties
33
import org.gradle.api.provider.Property
44
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
55

6-
val appVersionCode = 142
7-
val appVersionName = "3.4.6"
6+
val appVersionCode = 143
7+
val appVersionName = "3.4.7"
88

99
plugins {
1010
alias(libs.plugins.android.application)

app/src/main/java/com/example/xtreamplayer/MainActivityUi.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8844,19 +8844,25 @@ fun ContinueWatchingScreen(
88448844
val stableParentId = resumeItem.parentSeriesId?.takeUnless { it.isBlank() }
88458845
if (!stableParentId.isNullOrBlank()) {
88468846
contentRepository.findSeriesItemById(stableParentId, authConfig)
8847+
?: resolveSeriesParentByTitle(contentRepository, authConfig, resumeItem)
88478848
} else {
88488849
resolveSeriesParentByTitle(contentRepository, authConfig, resumeItem)
88498850
}
88508851
}
88518852

8852-
LaunchedEffect(displayEntries, authConfig) {
8853-
displayEntries
8853+
LaunchedEffect(continueWatchingItems, authConfig) {
8854+
val currentKeys = continueWatchingItems.asSequence().map { it.key }.toSet()
8855+
resolvedParents.keys
8856+
.filterNot { it in currentKeys }
8857+
.toList()
8858+
.forEach { resolvedParents.remove(it) }
8859+
continueWatchingItems
88548860
.filter { entry ->
8855-
entry.resumeItem.contentType == ContentType.SERIES && entry.parentItem == null &&
8861+
entry.item.contentType == ContentType.SERIES && entry.parentItem == null &&
88568862
!resolvedParents.containsKey(entry.key)
88578863
}
88588864
.forEach { entry ->
8859-
val resolved = resolveSeriesParent(entry.resumeItem)
8865+
val resolved = resolveSeriesParent(entry.item)
88608866
if (resolved != null) {
88618867
resolvedParents[entry.key] = resolved
88628868
}

0 commit comments

Comments
 (0)