Skip to content

feat(example): secret-free release builds, auto-play toggle, and upload lifecycle fixes - #51

Open
TenGosc007 wants to merge 8 commits into
mainfrom
fix/ios-video-upload
Open

TenGosc007 wants to merge 8 commits into
mainfrom
fix/ios-video-upload

Conversation

@TenGosc007

@TenGosc007 TenGosc007 commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator

Bundles the iOS upload fixes and example-app work:

Playback

  • Persisted "Auto-play videos" toggle in Settings. VOD player defers mount
    until the setting loads (fixes the AsyncStorage race where autoPlay=false
    arrived after playback already started). Live player gets a Play overlay —
    the native live host exposes no pause command.

Upload — iOS bridge

  • Upload events now emit through RCTEventEmitter/RCTCallableJSModules;
    they were silently dropped in bridgeless mode (RCTBridge.current() is
    nil), which caused stuck 0% progress and Unknown uploadId on re-cancel.
  • TUS init and restoreUploads moved off the JS thread (froze the app);
    requiresMainQueueSetup = NO.
  • Control calls on unknown uploadIds are safe no-ops (Android parity).
  • cancelUpload deletes the server-side video entry the upload created —
    startUpload pre-provisions a videoId, so cancelled uploads left
    "processing" orphans. continueUpload videos belong to the caller and
    are never deleted.
  • UUID.uuidString uppercases GUIDs; Bunny's management API is
    case-sensitive and returned 404 on delete — normalized to lowercase.

Upload — example app

  • Pause/Resume shown immediately based on mode/platform, terminal rows get
    a confirmed Delete, and upload rows/state now persist across screen
    unmounts (module-level stores + richer paused event payload).

Verified: iOS xcodebuild, Android compileDebugKotlin, yarn typecheck,
yarn lint, upload jest suite.

@TenGosc007 TenGosc007 self-assigned this Oct 8, 2026
@TenGosc007
TenGosc007 added this pull request to stack #44 October 8, 2026 06:27
@TenGosc007
TenGosc007 force-pushed the fix/ios-video-upload branch from edc8d93 to aa4bca4 Compare October 9, 2026 10:06
Base automatically changed from chore/agent-files to main October 10, 2026 18:53
TenGosc007 and others added 6 commits October 10, 2026 20:53
startUpload creates the video entry before the transfer begins, so
cancelling only aborted the transfer and left a "processing" orphan in
the library. Both bridges now track videos they created themselves and
delete them on cancel; continueUpload videos belong to the caller and
are never touched.

iOS also normalizes tracker-derived videoIds to lowercase —
UUID.uuidString uppercases the GUID, which made the case-sensitive
management API return 404 on delete.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…stener

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@TenGosc007
TenGosc007 force-pushed the fix/ios-video-upload branch from aa4bca4 to 5c36ef3 Compare October 10, 2026 18:53
TenGosc007 and others added 2 commits October 10, 2026 20:55
On Android the ownership marker outlived a completed upload, so a later
cancelUpload deleted the fully uploaded video — iOS already drops the
marker on .uploaded/.removed.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>

This branch has not been deployed

No deployments
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.

2 participants